diff options
Diffstat (limited to 'src')
628 files changed, 50976 insertions, 41080 deletions
diff --git a/src/SConscript b/src/SConscript index c3e34be6f7..c42d9bff2d 100644 --- a/src/SConscript +++ b/src/SConscript @@ -1,19 +1,17 @@ Import('*') -if 'egl' in env['statetrackers']: - SConscript('mapi/vgapi/SConscript') - SConscript('egl/main/SConscript') +SConscript('mapi/vgapi/SConscript') -if 'mesa' in env['statetrackers']: - if platform == 'windows': - SConscript('talloc/SConscript') +if env['platform'] == 'windows': + SConscript('egl/main/SConscript') + SConscript('talloc/SConscript') - SConscript('glsl/SConscript') - SConscript('mapi/glapi/SConscript') - SConscript('mesa/SConscript') +SConscript('glsl/SConscript') +SConscript('mapi/glapi/SConscript') +SConscript('mesa/SConscript') - if platform != 'embedded': - SConscript('glut/glx/SConscript') +if env['platform'] != 'embedded': + SConscript('glut/glx/SConscript') SConscript('gallium/SConscript') diff --git a/src/egl/drivers/Makefile.template b/src/egl/drivers/Makefile.template index 08e82c65e9..47709e3c59 100644 --- a/src/egl/drivers/Makefile.template +++ b/src/egl/drivers/Makefile.template @@ -24,8 +24,8 @@ $(EGL_DRIVER_PATH): $(EGL_DRIVER) $(EGL_DRIVER): $(EGL_OBJECTS) Makefile $(TOP)/src/egl/drivers/Makefile.template @$(MKLIB) -o $(EGL_DRIVER) -noprefix \ - -linker '$(CC)' -ldflags '$(LDFLAGS)' \ - -L$(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) \ + -linker '$(CC)' -ldflags '-L$(TOP)/$(LIB_DIR) $(LDFLAGS)' \ + $(MKLIB_OPTIONS) \ $(EGL_OBJECTS) $(EGL_LIBS) -l$(EGL_LIB) .c.o: diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index eb8996f7a7..a83f32b0d1 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -272,7 +272,7 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id, if (conf != NULL) { memcpy(&conf->base, &base, sizeof base); conf->dri_config = dri_config; - _eglAddConfig(disp, &conf->base); + _eglLinkConfig(&conf->base); } return conf; @@ -750,7 +750,7 @@ dri2_create_screen(_EGLDisplay *disp) if (dri2_dpy->dri2->base.version >= 2) api_mask = dri2_dpy->dri2->getAPIMask(dri2_dpy->dri_screen); else - api_mask = __DRI_API_OPENGL; + api_mask = 1 << __DRI_API_OPENGL; disp->ClientAPIsMask = 0; if (api_mask & (1 <<__DRI_API_OPENGL)) @@ -899,10 +899,20 @@ const int i915_chip_ids[] = { 0x29b2, /* PCI_CHIP_Q35_G */ 0x29c2, /* PCI_CHIP_G33_G */ 0x29d2, /* PCI_CHIP_Q33_G */ + 0xa001, /* PCI_CHIP_IGD_G */ 0xa011, /* Pineview */ }; const int i965_chip_ids[] = { + 0x0042, /* PCI_CHIP_ILD_G */ + 0x0046, /* PCI_CHIP_ILM_G */ + 0x0102, /* PCI_CHIP_SANDYBRIDGE_GT1 */ + 0x0106, /* PCI_CHIP_SANDYBRIDGE_M_GT1 */ + 0x010a, /* PCI_CHIP_SANDYBRIDGE_S */ + 0x0112, /* PCI_CHIP_SANDYBRIDGE_GT2 */ + 0x0116, /* PCI_CHIP_SANDYBRIDGE_M_GT2 */ + 0x0122, /* PCI_CHIP_SANDYBRIDGE_GT2_PLUS */ + 0x0126, /* PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS */ 0x29a2, /* PCI_CHIP_I965_G */ 0x2992, /* PCI_CHIP_I965_Q */ 0x2982, /* PCI_CHIP_I965_G_1 */ @@ -914,11 +924,440 @@ const int i965_chip_ids[] = { 0x2e12, /* PCI_CHIP_Q45_G */ 0x2e22, /* PCI_CHIP_G45_G */ 0x2e32, /* PCI_CHIP_G41_G */ + 0x2e42, /* PCI_CHIP_B43_G */ + 0x2e92, /* PCI_CHIP_B43_G1 */ +}; + +const int r100_chip_ids[] = { + 0x4C57, /* PCI_CHIP_RADEON_LW */ + 0x4C58, /* PCI_CHIP_RADEON_LX */ + 0x4C59, /* PCI_CHIP_RADEON_LY */ + 0x4C5A, /* PCI_CHIP_RADEON_LZ */ + 0x5144, /* PCI_CHIP_RADEON_QD */ + 0x5145, /* PCI_CHIP_RADEON_QE */ + 0x5146, /* PCI_CHIP_RADEON_QF */ + 0x5147, /* PCI_CHIP_RADEON_QG */ + 0x5159, /* PCI_CHIP_RADEON_QY */ + 0x515A, /* PCI_CHIP_RADEON_QZ */ + 0x5157, /* PCI_CHIP_RV200_QW */ + 0x5158, /* PCI_CHIP_RV200_QX */ + 0x515E, /* PCI_CHIP_RN50_515E */ + 0x5969, /* PCI_CHIP_RN50_5969 */ + 0x4136, /* PCI_CHIP_RS100_4136 */ + 0x4336, /* PCI_CHIP_RS100_4336 */ + 0x4137, /* PCI_CHIP_RS200_4137 */ + 0x4337, /* PCI_CHIP_RS200_4337 */ + 0x4237, /* PCI_CHIP_RS250_4237 */ + 0x4437, /* PCI_CHIP_RS250_4437 */ +}; + +const int r200_chip_ids[] = { + 0x5148, /* PCI_CHIP_R200_QH */ + 0x514C, /* PCI_CHIP_R200_QL */ + 0x514D, /* PCI_CHIP_R200_QM */ + 0x4242, /* PCI_CHIP_R200_BB */ + 0x4243, /* PCI_CHIP_R200_BC */ + 0x4966, /* PCI_CHIP_RV250_If */ + 0x4967, /* PCI_CHIP_RV250_Ig */ + 0x4C64, /* PCI_CHIP_RV250_Ld */ + 0x4C66, /* PCI_CHIP_RV250_Lf */ + 0x4C67, /* PCI_CHIP_RV250_Lg */ + 0x5960, /* PCI_CHIP_RV280_5960 */ + 0x5961, /* PCI_CHIP_RV280_5961 */ + 0x5962, /* PCI_CHIP_RV280_5962 */ + 0x5964, /* PCI_CHIP_RV280_5964 */ + 0x5965, /* PCI_CHIP_RV280_5965 */ + 0x5C61, /* PCI_CHIP_RV280_5C61 */ + 0x5C63, /* PCI_CHIP_RV280_5C63 */ + 0x5834, /* PCI_CHIP_RS300_5834 */ + 0x5835, /* PCI_CHIP_RS300_5835 */ + 0x7834, /* PCI_CHIP_RS350_7834 */ + 0x7835, /* PCI_CHIP_RS350_7835 */ +}; + +const int r300_chip_ids[] = { + 0x4144, /* PCI_CHIP_R300_AD */ + 0x4145, /* PCI_CHIP_R300_AE */ + 0x4146, /* PCI_CHIP_R300_AF */ + 0x4147, /* PCI_CHIP_R300_AG */ + 0x4E44, /* PCI_CHIP_R300_ND */ + 0x4E45, /* PCI_CHIP_R300_NE */ + 0x4E46, /* PCI_CHIP_R300_NF */ + 0x4E47, /* PCI_CHIP_R300_NG */ + 0x4E48, /* PCI_CHIP_R350_NH */ + 0x4E49, /* PCI_CHIP_R350_NI */ + 0x4E4B, /* PCI_CHIP_R350_NK */ + 0x4148, /* PCI_CHIP_R350_AH */ + 0x4149, /* PCI_CHIP_R350_AI */ + 0x414A, /* PCI_CHIP_R350_AJ */ + 0x414B, /* PCI_CHIP_R350_AK */ + 0x4E4A, /* PCI_CHIP_R360_NJ */ + 0x4150, /* PCI_CHIP_RV350_AP */ + 0x4151, /* PCI_CHIP_RV350_AQ */ + 0x4152, /* PCI_CHIP_RV350_AR */ + 0x4153, /* PCI_CHIP_RV350_AS */ + 0x4154, /* PCI_CHIP_RV350_AT */ + 0x4155, /* PCI_CHIP_RV350_AU */ + 0x4156, /* PCI_CHIP_RV350_AV */ + 0x4E50, /* PCI_CHIP_RV350_NP */ + 0x4E51, /* PCI_CHIP_RV350_NQ */ + 0x4E52, /* PCI_CHIP_RV350_NR */ + 0x4E53, /* PCI_CHIP_RV350_NS */ + 0x4E54, /* PCI_CHIP_RV350_NT */ + 0x4E56, /* PCI_CHIP_RV350_NV */ + 0x5460, /* PCI_CHIP_RV370_5460 */ + 0x5462, /* PCI_CHIP_RV370_5462 */ + 0x5464, /* PCI_CHIP_RV370_5464 */ + 0x5B60, /* PCI_CHIP_RV370_5B60 */ + 0x5B62, /* PCI_CHIP_RV370_5B62 */ + 0x5B63, /* PCI_CHIP_RV370_5B63 */ + 0x5B64, /* PCI_CHIP_RV370_5B64 */ + 0x5B65, /* PCI_CHIP_RV370_5B65 */ + 0x3150, /* PCI_CHIP_RV380_3150 */ + 0x3152, /* PCI_CHIP_RV380_3152 */ + 0x3154, /* PCI_CHIP_RV380_3154 */ + 0x3155, /* PCI_CHIP_RV380_3155 */ + 0x3E50, /* PCI_CHIP_RV380_3E50 */ + 0x3E54, /* PCI_CHIP_RV380_3E54 */ + 0x4A48, /* PCI_CHIP_R420_JH */ + 0x4A49, /* PCI_CHIP_R420_JI */ + 0x4A4A, /* PCI_CHIP_R420_JJ */ + 0x4A4B, /* PCI_CHIP_R420_JK */ + 0x4A4C, /* PCI_CHIP_R420_JL */ + 0x4A4D, /* PCI_CHIP_R420_JM */ + 0x4A4E, /* PCI_CHIP_R420_JN */ + 0x4A4F, /* PCI_CHIP_R420_JO */ + 0x4A50, /* PCI_CHIP_R420_JP */ + 0x4A54, /* PCI_CHIP_R420_JT */ + 0x5548, /* PCI_CHIP_R423_UH */ + 0x5549, /* PCI_CHIP_R423_UI */ + 0x554A, /* PCI_CHIP_R423_UJ */ + 0x554B, /* PCI_CHIP_R423_UK */ + 0x5550, /* PCI_CHIP_R423_5550 */ + 0x5551, /* PCI_CHIP_R423_UQ */ + 0x5552, /* PCI_CHIP_R423_UR */ + 0x5554, /* PCI_CHIP_R423_UT */ + 0x5D57, /* PCI_CHIP_R423_5D57 */ + 0x554C, /* PCI_CHIP_R430_554C */ + 0x554D, /* PCI_CHIP_R430_554D */ + 0x554E, /* PCI_CHIP_R430_554E */ + 0x554F, /* PCI_CHIP_R430_554F */ + 0x5D48, /* PCI_CHIP_R430_5D48 */ + 0x5D49, /* PCI_CHIP_R430_5D49 */ + 0x5D4A, /* PCI_CHIP_R430_5D4A */ + 0x5D4C, /* PCI_CHIP_R480_5D4C */ + 0x5D4D, /* PCI_CHIP_R480_5D4D */ + 0x5D4E, /* PCI_CHIP_R480_5D4E */ + 0x5D4F, /* PCI_CHIP_R480_5D4F */ + 0x5D50, /* PCI_CHIP_R480_5D50 */ + 0x5D52, /* PCI_CHIP_R480_5D52 */ + 0x4B49, /* PCI_CHIP_R481_4B49 */ + 0x4B4A, /* PCI_CHIP_R481_4B4A */ + 0x4B4B, /* PCI_CHIP_R481_4B4B */ + 0x4B4C, /* PCI_CHIP_R481_4B4C */ + 0x564A, /* PCI_CHIP_RV410_564A */ + 0x564B, /* PCI_CHIP_RV410_564B */ + 0x564F, /* PCI_CHIP_RV410_564F */ + 0x5652, /* PCI_CHIP_RV410_5652 */ + 0x5653, /* PCI_CHIP_RV410_5653 */ + 0x5657, /* PCI_CHIP_RV410_5657 */ + 0x5E48, /* PCI_CHIP_RV410_5E48 */ + 0x5E4A, /* PCI_CHIP_RV410_5E4A */ + 0x5E4B, /* PCI_CHIP_RV410_5E4B */ + 0x5E4C, /* PCI_CHIP_RV410_5E4C */ + 0x5E4D, /* PCI_CHIP_RV410_5E4D */ + 0x5E4F, /* PCI_CHIP_RV410_5E4F */ + 0x5A41, /* PCI_CHIP_RS400_5A41 */ + 0x5A42, /* PCI_CHIP_RS400_5A42 */ + 0x5A61, /* PCI_CHIP_RC410_5A61 */ + 0x5A62, /* PCI_CHIP_RC410_5A62 */ + 0x5954, /* PCI_CHIP_RS480_5954 */ + 0x5955, /* PCI_CHIP_RS480_5955 */ + 0x5974, /* PCI_CHIP_RS482_5974 */ + 0x5975, /* PCI_CHIP_RS482_5975 */ + 0x7100, /* PCI_CHIP_R520_7100 */ + 0x7101, /* PCI_CHIP_R520_7101 */ + 0x7102, /* PCI_CHIP_R520_7102 */ + 0x7103, /* PCI_CHIP_R520_7103 */ + 0x7104, /* PCI_CHIP_R520_7104 */ + 0x7105, /* PCI_CHIP_R520_7105 */ + 0x7106, /* PCI_CHIP_R520_7106 */ + 0x7108, /* PCI_CHIP_R520_7108 */ + 0x7109, /* PCI_CHIP_R520_7109 */ + 0x710A, /* PCI_CHIP_R520_710A */ + 0x710B, /* PCI_CHIP_R520_710B */ + 0x710C, /* PCI_CHIP_R520_710C */ + 0x710E, /* PCI_CHIP_R520_710E */ + 0x710F, /* PCI_CHIP_R520_710F */ + 0x7140, /* PCI_CHIP_RV515_7140 */ + 0x7141, /* PCI_CHIP_RV515_7141 */ + 0x7142, /* PCI_CHIP_RV515_7142 */ + 0x7143, /* PCI_CHIP_RV515_7143 */ + 0x7144, /* PCI_CHIP_RV515_7144 */ + 0x7145, /* PCI_CHIP_RV515_7145 */ + 0x7146, /* PCI_CHIP_RV515_7146 */ + 0x7147, /* PCI_CHIP_RV515_7147 */ + 0x7149, /* PCI_CHIP_RV515_7149 */ + 0x714A, /* PCI_CHIP_RV515_714A */ + 0x714B, /* PCI_CHIP_RV515_714B */ + 0x714C, /* PCI_CHIP_RV515_714C */ + 0x714D, /* PCI_CHIP_RV515_714D */ + 0x714E, /* PCI_CHIP_RV515_714E */ + 0x714F, /* PCI_CHIP_RV515_714F */ + 0x7151, /* PCI_CHIP_RV515_7151 */ + 0x7152, /* PCI_CHIP_RV515_7152 */ + 0x7153, /* PCI_CHIP_RV515_7153 */ + 0x715E, /* PCI_CHIP_RV515_715E */ + 0x715F, /* PCI_CHIP_RV515_715F */ + 0x7180, /* PCI_CHIP_RV515_7180 */ + 0x7181, /* PCI_CHIP_RV515_7181 */ + 0x7183, /* PCI_CHIP_RV515_7183 */ + 0x7186, /* PCI_CHIP_RV515_7186 */ + 0x7187, /* PCI_CHIP_RV515_7187 */ + 0x7188, /* PCI_CHIP_RV515_7188 */ + 0x718A, /* PCI_CHIP_RV515_718A */ + 0x718B, /* PCI_CHIP_RV515_718B */ + 0x718C, /* PCI_CHIP_RV515_718C */ + 0x718D, /* PCI_CHIP_RV515_718D */ + 0x718F, /* PCI_CHIP_RV515_718F */ + 0x7193, /* PCI_CHIP_RV515_7193 */ + 0x7196, /* PCI_CHIP_RV515_7196 */ + 0x719B, /* PCI_CHIP_RV515_719B */ + 0x719F, /* PCI_CHIP_RV515_719F */ + 0x7200, /* PCI_CHIP_RV515_7200 */ + 0x7210, /* PCI_CHIP_RV515_7210 */ + 0x7211, /* PCI_CHIP_RV515_7211 */ + 0x71C0, /* PCI_CHIP_RV530_71C0 */ + 0x71C1, /* PCI_CHIP_RV530_71C1 */ + 0x71C2, /* PCI_CHIP_RV530_71C2 */ + 0x71C3, /* PCI_CHIP_RV530_71C3 */ + 0x71C4, /* PCI_CHIP_RV530_71C4 */ + 0x71C5, /* PCI_CHIP_RV530_71C5 */ + 0x71C6, /* PCI_CHIP_RV530_71C6 */ + 0x71C7, /* PCI_CHIP_RV530_71C7 */ + 0x71CD, /* PCI_CHIP_RV530_71CD */ + 0x71CE, /* PCI_CHIP_RV530_71CE */ + 0x71D2, /* PCI_CHIP_RV530_71D2 */ + 0x71D4, /* PCI_CHIP_RV530_71D4 */ + 0x71D5, /* PCI_CHIP_RV530_71D5 */ + 0x71D6, /* PCI_CHIP_RV530_71D6 */ + 0x71DA, /* PCI_CHIP_RV530_71DA */ + 0x71DE, /* PCI_CHIP_RV530_71DE */ + 0x7281, /* PCI_CHIP_RV560_7281 */ + 0x7283, /* PCI_CHIP_RV560_7283 */ + 0x7287, /* PCI_CHIP_RV560_7287 */ + 0x7290, /* PCI_CHIP_RV560_7290 */ + 0x7291, /* PCI_CHIP_RV560_7291 */ + 0x7293, /* PCI_CHIP_RV560_7293 */ + 0x7297, /* PCI_CHIP_RV560_7297 */ + 0x7280, /* PCI_CHIP_RV570_7280 */ + 0x7288, /* PCI_CHIP_RV570_7288 */ + 0x7289, /* PCI_CHIP_RV570_7289 */ + 0x728B, /* PCI_CHIP_RV570_728B */ + 0x728C, /* PCI_CHIP_RV570_728C */ + 0x7240, /* PCI_CHIP_R580_7240 */ + 0x7243, /* PCI_CHIP_R580_7243 */ + 0x7244, /* PCI_CHIP_R580_7244 */ + 0x7245, /* PCI_CHIP_R580_7245 */ + 0x7246, /* PCI_CHIP_R580_7246 */ + 0x7247, /* PCI_CHIP_R580_7247 */ + 0x7248, /* PCI_CHIP_R580_7248 */ + 0x7249, /* PCI_CHIP_R580_7249 */ + 0x724A, /* PCI_CHIP_R580_724A */ + 0x724B, /* PCI_CHIP_R580_724B */ + 0x724C, /* PCI_CHIP_R580_724C */ + 0x724D, /* PCI_CHIP_R580_724D */ + 0x724E, /* PCI_CHIP_R580_724E */ + 0x724F, /* PCI_CHIP_R580_724F */ + 0x7284, /* PCI_CHIP_R580_7284 */ + 0x793F, /* PCI_CHIP_RS600_793F */ + 0x7941, /* PCI_CHIP_RS600_7941 */ + 0x7942, /* PCI_CHIP_RS600_7942 */ + 0x791E, /* PCI_CHIP_RS690_791E */ + 0x791F, /* PCI_CHIP_RS690_791F */ + 0x796C, /* PCI_CHIP_RS740_796C */ + 0x796D, /* PCI_CHIP_RS740_796D */ + 0x796E, /* PCI_CHIP_RS740_796E */ + 0x796F, /* PCI_CHIP_RS740_796F */ +}; + +const int r600_chip_ids[] = { + 0x9400, /* PCI_CHIP_R600_9400 */ + 0x9401, /* PCI_CHIP_R600_9401 */ + 0x9402, /* PCI_CHIP_R600_9402 */ + 0x9403, /* PCI_CHIP_R600_9403 */ + 0x9405, /* PCI_CHIP_R600_9405 */ + 0x940A, /* PCI_CHIP_R600_940A */ + 0x940B, /* PCI_CHIP_R600_940B */ + 0x940F, /* PCI_CHIP_R600_940F */ + 0x94C0, /* PCI_CHIP_RV610_94C0 */ + 0x94C1, /* PCI_CHIP_RV610_94C1 */ + 0x94C3, /* PCI_CHIP_RV610_94C3 */ + 0x94C4, /* PCI_CHIP_RV610_94C4 */ + 0x94C5, /* PCI_CHIP_RV610_94C5 */ + 0x94C6, /* PCI_CHIP_RV610_94C6 */ + 0x94C7, /* PCI_CHIP_RV610_94C7 */ + 0x94C8, /* PCI_CHIP_RV610_94C8 */ + 0x94C9, /* PCI_CHIP_RV610_94C9 */ + 0x94CB, /* PCI_CHIP_RV610_94CB */ + 0x94CC, /* PCI_CHIP_RV610_94CC */ + 0x94CD, /* PCI_CHIP_RV610_94CD */ + 0x9580, /* PCI_CHIP_RV630_9580 */ + 0x9581, /* PCI_CHIP_RV630_9581 */ + 0x9583, /* PCI_CHIP_RV630_9583 */ + 0x9586, /* PCI_CHIP_RV630_9586 */ + 0x9587, /* PCI_CHIP_RV630_9587 */ + 0x9588, /* PCI_CHIP_RV630_9588 */ + 0x9589, /* PCI_CHIP_RV630_9589 */ + 0x958A, /* PCI_CHIP_RV630_958A */ + 0x958B, /* PCI_CHIP_RV630_958B */ + 0x958C, /* PCI_CHIP_RV630_958C */ + 0x958D, /* PCI_CHIP_RV630_958D */ + 0x958E, /* PCI_CHIP_RV630_958E */ + 0x958F, /* PCI_CHIP_RV630_958F */ + 0x9500, /* PCI_CHIP_RV670_9500 */ + 0x9501, /* PCI_CHIP_RV670_9501 */ + 0x9504, /* PCI_CHIP_RV670_9504 */ + 0x9505, /* PCI_CHIP_RV670_9505 */ + 0x9506, /* PCI_CHIP_RV670_9506 */ + 0x9507, /* PCI_CHIP_RV670_9507 */ + 0x9508, /* PCI_CHIP_RV670_9508 */ + 0x9509, /* PCI_CHIP_RV670_9509 */ + 0x950F, /* PCI_CHIP_RV670_950F */ + 0x9511, /* PCI_CHIP_RV670_9511 */ + 0x9515, /* PCI_CHIP_RV670_9515 */ + 0x9517, /* PCI_CHIP_RV670_9517 */ + 0x9519, /* PCI_CHIP_RV670_9519 */ + 0x95C0, /* PCI_CHIP_RV620_95C0 */ + 0x95C2, /* PCI_CHIP_RV620_95C2 */ + 0x95C4, /* PCI_CHIP_RV620_95C4 */ + 0x95C5, /* PCI_CHIP_RV620_95C5 */ + 0x95C6, /* PCI_CHIP_RV620_95C6 */ + 0x95C7, /* PCI_CHIP_RV620_95C7 */ + 0x95C9, /* PCI_CHIP_RV620_95C9 */ + 0x95CC, /* PCI_CHIP_RV620_95CC */ + 0x95CD, /* PCI_CHIP_RV620_95CD */ + 0x95CE, /* PCI_CHIP_RV620_95CE */ + 0x95CF, /* PCI_CHIP_RV620_95CF */ + 0x9590, /* PCI_CHIP_RV635_9590 */ + 0x9591, /* PCI_CHIP_RV635_9591 */ + 0x9593, /* PCI_CHIP_RV635_9593 */ + 0x9595, /* PCI_CHIP_RV635_9595 */ + 0x9596, /* PCI_CHIP_RV635_9596 */ + 0x9597, /* PCI_CHIP_RV635_9597 */ + 0x9598, /* PCI_CHIP_RV635_9598 */ + 0x9599, /* PCI_CHIP_RV635_9599 */ + 0x959B, /* PCI_CHIP_RV635_959B */ + 0x9610, /* PCI_CHIP_RS780_9610 */ + 0x9611, /* PCI_CHIP_RS780_9611 */ + 0x9612, /* PCI_CHIP_RS780_9612 */ + 0x9613, /* PCI_CHIP_RS780_9613 */ + 0x9614, /* PCI_CHIP_RS780_9614 */ + 0x9615, /* PCI_CHIP_RS780_9615 */ + 0x9616, /* PCI_CHIP_RS780_9616 */ + 0x9710, /* PCI_CHIP_RS880_9710 */ + 0x9711, /* PCI_CHIP_RS880_9711 */ + 0x9712, /* PCI_CHIP_RS880_9712 */ + 0x9713, /* PCI_CHIP_RS880_9713 */ + 0x9714, /* PCI_CHIP_RS880_9714 */ + 0x9715, /* PCI_CHIP_RS880_9715 */ + 0x9440, /* PCI_CHIP_RV770_9440 */ + 0x9441, /* PCI_CHIP_RV770_9441 */ + 0x9442, /* PCI_CHIP_RV770_9442 */ + 0x9443, /* PCI_CHIP_RV770_9443 */ + 0x9444, /* PCI_CHIP_RV770_9444 */ + 0x9446, /* PCI_CHIP_RV770_9446 */ + 0x944A, /* PCI_CHIP_RV770_944A */ + 0x944B, /* PCI_CHIP_RV770_944B */ + 0x944C, /* PCI_CHIP_RV770_944C */ + 0x944E, /* PCI_CHIP_RV770_944E */ + 0x9450, /* PCI_CHIP_RV770_9450 */ + 0x9452, /* PCI_CHIP_RV770_9452 */ + 0x9456, /* PCI_CHIP_RV770_9456 */ + 0x945A, /* PCI_CHIP_RV770_945A */ + 0x945B, /* PCI_CHIP_RV770_945B */ + 0x945E, /* PCI_CHIP_RV770_945E */ + 0x9460, /* PCI_CHIP_RV790_9460 */ + 0x9462, /* PCI_CHIP_RV790_9462 */ + 0x946A, /* PCI_CHIP_RV770_946A */ + 0x946B, /* PCI_CHIP_RV770_946B */ + 0x947A, /* PCI_CHIP_RV770_947A */ + 0x947B, /* PCI_CHIP_RV770_947B */ + 0x9480, /* PCI_CHIP_RV730_9480 */ + 0x9487, /* PCI_CHIP_RV730_9487 */ + 0x9488, /* PCI_CHIP_RV730_9488 */ + 0x9489, /* PCI_CHIP_RV730_9489 */ + 0x948A, /* PCI_CHIP_RV730_948A */ + 0x948F, /* PCI_CHIP_RV730_948F */ + 0x9490, /* PCI_CHIP_RV730_9490 */ + 0x9491, /* PCI_CHIP_RV730_9491 */ + 0x9495, /* PCI_CHIP_RV730_9495 */ + 0x9498, /* PCI_CHIP_RV730_9498 */ + 0x949C, /* PCI_CHIP_RV730_949C */ + 0x949E, /* PCI_CHIP_RV730_949E */ + 0x949F, /* PCI_CHIP_RV730_949F */ + 0x9540, /* PCI_CHIP_RV710_9540 */ + 0x9541, /* PCI_CHIP_RV710_9541 */ + 0x9542, /* PCI_CHIP_RV710_9542 */ + 0x954E, /* PCI_CHIP_RV710_954E */ + 0x954F, /* PCI_CHIP_RV710_954F */ + 0x9552, /* PCI_CHIP_RV710_9552 */ + 0x9553, /* PCI_CHIP_RV710_9553 */ + 0x9555, /* PCI_CHIP_RV710_9555 */ + 0x9557, /* PCI_CHIP_RV710_9557 */ + 0x955F, /* PCI_CHIP_RV710_955F */ + 0x94A0, /* PCI_CHIP_RV740_94A0 */ + 0x94A1, /* PCI_CHIP_RV740_94A1 */ + 0x94A3, /* PCI_CHIP_RV740_94A3 */ + 0x94B1, /* PCI_CHIP_RV740_94B1 */ + 0x94B3, /* PCI_CHIP_RV740_94B3 */ + 0x94B4, /* PCI_CHIP_RV740_94B4 */ + 0x94B5, /* PCI_CHIP_RV740_94B5 */ + 0x94B9, /* PCI_CHIP_RV740_94B9 */ + 0x68E0, /* PCI_CHIP_CEDAR_68E0 */ + 0x68E1, /* PCI_CHIP_CEDAR_68E1 */ + 0x68E4, /* PCI_CHIP_CEDAR_68E4 */ + 0x68E5, /* PCI_CHIP_CEDAR_68E5 */ + 0x68E8, /* PCI_CHIP_CEDAR_68E8 */ + 0x68E9, /* PCI_CHIP_CEDAR_68E9 */ + 0x68F1, /* PCI_CHIP_CEDAR_68F1 */ + 0x68F8, /* PCI_CHIP_CEDAR_68F8 */ + 0x68F9, /* PCI_CHIP_CEDAR_68F9 */ + 0x68FE, /* PCI_CHIP_CEDAR_68FE */ + 0x68C0, /* PCI_CHIP_REDWOOD_68C0 */ + 0x68C1, /* PCI_CHIP_REDWOOD_68C1 */ + 0x68C8, /* PCI_CHIP_REDWOOD_68C8 */ + 0x68C9, /* PCI_CHIP_REDWOOD_68C9 */ + 0x68D8, /* PCI_CHIP_REDWOOD_68D8 */ + 0x68D9, /* PCI_CHIP_REDWOOD_68D9 */ + 0x68DA, /* PCI_CHIP_REDWOOD_68DA */ + 0x68DE, /* PCI_CHIP_REDWOOD_68DE */ + 0x68A0, /* PCI_CHIP_JUNIPER_68A0 */ + 0x68A1, /* PCI_CHIP_JUNIPER_68A1 */ + 0x68A8, /* PCI_CHIP_JUNIPER_68A8 */ + 0x68A9, /* PCI_CHIP_JUNIPER_68A9 */ + 0x68B0, /* PCI_CHIP_JUNIPER_68B0 */ + 0x68B8, /* PCI_CHIP_JUNIPER_68B8 */ + 0x68B9, /* PCI_CHIP_JUNIPER_68B9 */ + 0x68BE, /* PCI_CHIP_JUNIPER_68BE */ + 0x6880, /* PCI_CHIP_CYPRESS_6880 */ + 0x6888, /* PCI_CHIP_CYPRESS_6888 */ + 0x6889, /* PCI_CHIP_CYPRESS_6889 */ + 0x688A, /* PCI_CHIP_CYPRESS_688A */ + 0x6898, /* PCI_CHIP_CYPRESS_6898 */ + 0x6899, /* PCI_CHIP_CYPRESS_6899 */ + 0x689E, /* PCI_CHIP_CYPRESS_689E */ + 0x689C, /* PCI_CHIP_HEMLOCK_689C */ + 0x689D, /* PCI_CHIP_HEMLOCK_689D */ }; const struct dri2_driver_map driver_map[] = { { 0x8086, "i915", i915_chip_ids, ARRAY_SIZE(i915_chip_ids) }, { 0x8086, "i965", i965_chip_ids, ARRAY_SIZE(i965_chip_ids) }, + { 0x1002, "radeon", r100_chip_ids, ARRAY_SIZE(r100_chip_ids) }, + { 0x1002, "r200", r200_chip_ids, ARRAY_SIZE(r200_chip_ids) }, + { 0x1002, "r300", r300_chip_ids, ARRAY_SIZE(r300_chip_ids) }, + { 0x1002, "r600", r600_chip_ids, ARRAY_SIZE(r600_chip_ids) }, }; static char * @@ -1160,7 +1599,7 @@ dri2_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf) (void) drv; - if (_eglIsSurfaceBound(surf)) + if (!_eglPutSurface(surf)) return EGL_TRUE; (*dri2_dpy->core->destroyDrawable)(dri2_surf->dri_drawable); @@ -1187,15 +1626,17 @@ dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf, struct dri2_egl_surface *dri2_dsurf = dri2_egl_surface(dsurf); struct dri2_egl_surface *dri2_rsurf = dri2_egl_surface(rsurf); struct dri2_egl_context *dri2_ctx = dri2_egl_context(ctx); + _EGLContext *old_ctx; + _EGLSurface *old_dsurf, *old_rsurf; __DRIdrawable *ddraw, *rdraw; __DRIcontext *cctx; - /* bind the new context and return the "orphaned" one */ - if (!_eglBindContext(&ctx, &dsurf, &rsurf)) + /* make new bindings */ + if (!_eglBindContext(ctx, dsurf, rsurf, &old_ctx, &old_dsurf, &old_rsurf)) return EGL_FALSE; /* flush before context switch */ - if (ctx && dri2_drv->glFlush) + if (old_ctx && dri2_drv->glFlush) dri2_drv->glFlush(); ddraw = (dri2_dsurf) ? dri2_dsurf->dri_drawable : NULL; @@ -1204,16 +1645,29 @@ dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf, if ((cctx == NULL && ddraw == NULL && rdraw == NULL) || dri2_dpy->core->bindContext(cctx, ddraw, rdraw)) { - if (dsurf && !_eglIsSurfaceLinked(dsurf)) - dri2_destroy_surface(drv, disp, dsurf); - if (rsurf && rsurf != dsurf && !_eglIsSurfaceLinked(dsurf)) - dri2_destroy_surface(drv, disp, rsurf); - if (ctx != NULL && !_eglIsContextLinked(ctx)) - dri2_dpy->core->unbindContext(dri2_egl_context(ctx)->dri_context); + dri2_destroy_surface(drv, disp, old_dsurf); + dri2_destroy_surface(drv, disp, old_rsurf); + if (old_ctx) { + dri2_dpy->core->unbindContext(dri2_egl_context(old_ctx)->dri_context); + /* no destroy? */ + _eglPutContext(old_ctx); + } return EGL_TRUE; } else { - _eglBindContext(&ctx, &dsurf, &rsurf); + /* undo the previous _eglBindContext */ + _eglBindContext(old_ctx, old_dsurf, old_rsurf, &ctx, &dsurf, &rsurf); + assert(&dri2_ctx->base == ctx && + &dri2_dsurf->base == dsurf && + &dri2_rsurf->base == rsurf); + + _eglPutSurface(dsurf); + _eglPutSurface(rsurf); + _eglPutContext(ctx); + + _eglPutSurface(old_dsurf); + _eglPutSurface(old_rsurf); + _eglPutContext(old_ctx); return EGL_FALSE; } diff --git a/src/egl/drivers/glx/egl_glx.c b/src/egl/drivers/glx/egl_glx.c index 9bebc61de9..8ec7c48c50 100644 --- a/src/egl/drivers/glx/egl_glx.c +++ b/src/egl/drivers/glx/egl_glx.c @@ -452,7 +452,7 @@ create_configs(_EGLDisplay *dpy, struct GLX_egl_display *GLX_dpy, memcpy(GLX_conf, &template, sizeof(template)); GLX_conf->index = i; - _eglAddConfig(dpy, &GLX_conf->Base); + _eglLinkConfig(&GLX_conf->Base); id++; } } @@ -677,14 +677,16 @@ GLX_eglMakeCurrent(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf, struct GLX_egl_surface *GLX_dsurf = GLX_egl_surface(dsurf); struct GLX_egl_surface *GLX_rsurf = GLX_egl_surface(rsurf); struct GLX_egl_context *GLX_ctx = GLX_egl_context(ctx); + _EGLContext *old_ctx; + _EGLSurface *old_dsurf, *old_rsurf; GLXDrawable ddraw, rdraw; GLXContext cctx; EGLBoolean ret = EGL_FALSE; (void) drv; - /* bind the new context and return the "orphaned" one */ - if (!_eglBindContext(&ctx, &dsurf, &rsurf)) + /* make new bindings */ + if (!_eglBindContext(ctx, dsurf, rsurf, &old_ctx, &old_dsurf, &old_rsurf)) return EGL_FALSE; ddraw = (GLX_dsurf) ? GLX_dsurf->glx_drawable : None; @@ -697,13 +699,27 @@ GLX_eglMakeCurrent(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf, ret = glXMakeCurrent(GLX_dpy->dpy, ddraw, cctx); if (ret) { - if (dsurf && !_eglIsSurfaceLinked(dsurf)) - destroy_surface(disp, dsurf); - if (rsurf && rsurf != dsurf && !_eglIsSurfaceLinked(rsurf)) - destroy_surface(disp, rsurf); + if (_eglPutSurface(old_dsurf)) + destroy_surface(disp, old_dsurf); + if (_eglPutSurface(old_rsurf)) + destroy_surface(disp, old_rsurf); + /* no destroy? */ + _eglPutContext(old_ctx); } else { - _eglBindContext(&ctx, &dsurf, &rsurf); + /* undo the previous _eglBindContext */ + _eglBindContext(old_ctx, old_dsurf, old_rsurf, &ctx, &dsurf, &rsurf); + assert(&GLX_ctx->Base == ctx && + &GLX_dsurf->Base == dsurf && + &GLX_rsurf->Base == rsurf); + + _eglPutSurface(dsurf); + _eglPutSurface(rsurf); + _eglPutContext(ctx); + + _eglPutSurface(old_dsurf); + _eglPutSurface(old_rsurf); + _eglPutContext(old_ctx); } return ret; @@ -907,7 +923,7 @@ GLX_eglDestroySurface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf) { (void) drv; - if (!_eglIsSurfaceBound(surf)) + if (_eglPutSurface(surf)) destroy_surface(disp, surf); return EGL_TRUE; diff --git a/src/egl/main/SConscript b/src/egl/main/SConscript index 8ade85b357..f001b81600 100644 --- a/src/egl/main/SConscript +++ b/src/egl/main/SConscript @@ -4,49 +4,49 @@ Import('*') -if env['platform'] != 'winddk': +env = env.Clone() - env = env.Clone() +env.Append(CPPDEFINES = [ + '_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_WINDOWS', + '_EGL_DRIVER_SEARCH_DIR=\\"\\"', + '_EGL_OS_WINDOWS', + '_EGL_GET_CORE_ADDRESSES', + 'KHRONOS_DLL_EXPORTS', +]) - env.Append(CPPDEFINES = [ - '_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_WINDOWS', - '_EGL_DRIVER_SEARCH_DIR=\\"\\"', - '_EGL_OS_WINDOWS', - '_EGL_GET_CORE_ADDRESSES', - 'KHRONOS_DLL_EXPORTS', - ]) +env.Append(CPPPATH = [ + '#/include', +]) - env.Append(CPPPATH = [ - '#/include', - ]) +egl_sources = [ + 'eglapi.c', + 'eglarray.c', + 'eglconfig.c', + 'eglcontext.c', + 'eglcurrent.c', + 'egldisplay.c', + 'egldriver.c', + 'eglfallbacks.c', + 'eglglobals.c', + 'eglimage.c', + 'egllog.c', + 'eglmisc.c', + 'eglmode.c', + 'eglscreen.c', + 'eglstring.c', + 'eglsurface.c', + 'eglsync.c', +] - egl_sources = [ - 'eglapi.c', - 'eglarray.c', - 'eglconfig.c', - 'eglcontext.c', - 'eglcurrent.c', - 'egldisplay.c', - 'egldriver.c', - 'eglfallbacks.c', - 'eglglobals.c', - 'eglimage.c', - 'egllog.c', - 'eglmisc.c', - 'eglmode.c', - 'eglscreen.c', - 'eglstring.c', - 'eglsurface.c', - 'eglsync.c', - ] +egl = env.SharedLibrary( + target = 'libEGL', + source = egl_sources + ['egl.def'], +) - egl = env.SharedLibrary( - target = 'libEGL', - source = egl_sources + ['egl.def'], - ) +installed_egl = env.InstallSharedLibrary(egl, version=(1, 4, 0)) - env.InstallSharedLibrary(egl, version=(1, 4, 0)) +env.Alias('egl', installed_egl) - egl = [env.FindIxes(egl, 'LIBPREFIX', 'LIBSUFFIX')] +egl = [env.FindIxes(egl, 'LIBPREFIX', 'LIBSUFFIX')] - Export('egl') +Export('egl') diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index e8f856f6be..efa9e97346 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -416,7 +416,7 @@ eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_list, RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_NO_CONTEXT); context = drv->API.CreateContext(drv, disp, conf, share, attrib_list); - ret = (context) ? _eglLinkContext(context, disp) : EGL_NO_CONTEXT; + ret = (context) ? _eglLinkContext(context) : EGL_NO_CONTEXT; RETURN_EGL_EVAL(disp, ret); } @@ -515,7 +515,7 @@ eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, RETURN_EGL_ERROR(disp, EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE); surf = drv->API.CreateWindowSurface(drv, disp, conf, window, attrib_list); - ret = (surf) ? _eglLinkSurface(surf, disp) : EGL_NO_SURFACE; + ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE; RETURN_EGL_EVAL(disp, ret); } @@ -536,7 +536,7 @@ eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, RETURN_EGL_ERROR(disp, EGL_BAD_NATIVE_PIXMAP, EGL_NO_SURFACE); surf = drv->API.CreatePixmapSurface(drv, disp, conf, pixmap, attrib_list); - ret = (surf) ? _eglLinkSurface(surf, disp) : EGL_NO_SURFACE; + ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE; RETURN_EGL_EVAL(disp, ret); } @@ -555,7 +555,7 @@ eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, _EGL_CHECK_CONFIG(disp, conf, EGL_NO_SURFACE, drv); surf = drv->API.CreatePbufferSurface(drv, disp, conf, attrib_list); - ret = (surf) ? _eglLinkSurface(surf, disp) : EGL_NO_SURFACE; + ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE; RETURN_EGL_EVAL(disp, ret); } @@ -648,11 +648,12 @@ eglSwapInterval(EGLDisplay dpy, EGLint interval) _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv); - if (!ctx || !_eglIsContextLinked(ctx) || ctx->Resource.Display != disp) + if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT || + ctx->Resource.Display != disp) RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_FALSE); surf = ctx->DrawSurface; - if (!_eglIsSurfaceLinked(surf)) + if (_eglGetSurfaceHandle(surf) == EGL_NO_SURFACE) RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE); ret = drv->API.SwapInterval(drv, disp, surf, interval); @@ -673,7 +674,8 @@ eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv); /* surface must be bound to current context in EGL 1.4 */ - if (!ctx || !_eglIsContextLinked(ctx) || surf != ctx->DrawSurface) + if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT || + surf != ctx->DrawSurface) RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE); ret = drv->API.SwapBuffers(drv, disp, surf); @@ -714,7 +716,8 @@ eglWaitClient(void) _eglLockMutex(&disp->Mutex); /* let bad current context imply bad current surface */ - if (!_eglIsContextLinked(ctx) || !_eglIsSurfaceLinked(ctx->DrawSurface)) + if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT || + _eglGetSurfaceHandle(ctx->DrawSurface) == EGL_NO_SURFACE) RETURN_EGL_ERROR(disp, EGL_BAD_CURRENT_SURFACE, EGL_FALSE); /* a valid current context implies an initialized current display */ @@ -763,7 +766,8 @@ eglWaitNative(EGLint engine) _eglLockMutex(&disp->Mutex); /* let bad current context imply bad current surface */ - if (!_eglIsContextLinked(ctx) || !_eglIsSurfaceLinked(ctx->DrawSurface)) + if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT || + _eglGetSurfaceHandle(ctx->DrawSurface) == EGL_NO_SURFACE) RETURN_EGL_ERROR(disp, EGL_BAD_CURRENT_SURFACE, EGL_FALSE); /* a valid current context implies an initialized current display */ @@ -1043,7 +1047,7 @@ eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config, _EGL_CHECK_CONFIG(disp, conf, EGL_NO_SURFACE, drv); surf = drv->API.CreateScreenSurfaceMESA(drv, disp, conf, attrib_list); - ret = (surf) ? _eglLinkSurface(surf, disp) : EGL_NO_SURFACE; + ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE; RETURN_EGL_EVAL(disp, ret); } @@ -1235,7 +1239,7 @@ eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, surf = drv->API.CreatePbufferFromClientBuffer(drv, disp, buftype, buffer, conf, attrib_list); - ret = (surf) ? _eglLinkSurface(surf, disp) : EGL_NO_SURFACE; + ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE; RETURN_EGL_EVAL(disp, ret); } @@ -1298,7 +1302,7 @@ eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, img = drv->API.CreateImageKHR(drv, disp, context, target, buffer, attr_list); - ret = (img) ? _eglLinkImage(img, disp) : EGL_NO_IMAGE_KHR; + ret = (img) ? _eglLinkImage(img) : EGL_NO_IMAGE_KHR; RETURN_EGL_EVAL(disp, ret); } @@ -1344,7 +1348,7 @@ eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list) RETURN_EGL_EVAL(disp, EGL_NO_SYNC_KHR); sync = drv->API.CreateSyncKHR(drv, disp, type, attrib_list); - ret = (sync) ? _eglLinkSync(sync, disp) : EGL_NO_SYNC_KHR; + ret = (sync) ? _eglLinkSync(sync) : EGL_NO_SYNC_KHR; RETURN_EGL_EVAL(disp, ret); } @@ -1437,7 +1441,8 @@ eglSwapBuffersRegionNOK(EGLDisplay dpy, EGLSurface surface, RETURN_EGL_EVAL(disp, EGL_FALSE); /* surface must be bound to current context in EGL 1.4 */ - if (!ctx || !_eglIsContextLinked(ctx) || surf != ctx->DrawSurface) + if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT || + surf != ctx->DrawSurface) RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE); ret = drv->API.SwapBuffersRegionNOK(drv, disp, surf, numRects, rects); @@ -1463,7 +1468,7 @@ eglCreateDRMImageMESA(EGLDisplay dpy, const EGLint *attr_list) RETURN_EGL_EVAL(disp, EGL_NO_IMAGE_KHR); img = drv->API.CreateDRMImageMESA(drv, disp, attr_list); - ret = (img) ? _eglLinkImage(img, disp) : EGL_NO_IMAGE_KHR; + ret = (img) ? _eglLinkImage(img) : EGL_NO_IMAGE_KHR; RETURN_EGL_EVAL(disp, ret); } diff --git a/src/egl/main/eglarray.h b/src/egl/main/eglarray.h index fe92efc11e..c8309fb066 100644 --- a/src/egl/main/eglarray.h +++ b/src/egl/main/eglarray.h @@ -37,7 +37,7 @@ void * _eglFindArray(_EGLArray *array, void *elem); -void ** +PUBLIC void ** _eglFilterArray(_EGLArray *array, EGLint *size, _EGLArrayForEach filter, void *filter_data); diff --git a/src/egl/main/eglconfig.c b/src/egl/main/eglconfig.c index 4d313a9bb5..fec94fb20c 100644 --- a/src/egl/main/eglconfig.c +++ b/src/egl/main/eglconfig.c @@ -40,16 +40,18 @@ _eglInitConfig(_EGLConfig *conf, _EGLDisplay *dpy, EGLint id) /** - * Link a config to a display and return the handle of the link. + * Link a config to its display and return the handle of the link. * The handle can be passed to client directly. * * Note that we just save the ptr to the config (we don't copy the config). */ -EGLConfig -_eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf) +PUBLIC EGLConfig +_eglLinkConfig(_EGLConfig *conf) { + _EGLDisplay *dpy = conf->Display; + /* sanity check */ - assert(conf->ConfigID > 0); + assert(dpy && conf->ConfigID > 0); if (!dpy->Configs) { dpy->Configs = _eglCreateArray("Config", 16); @@ -57,23 +59,29 @@ _eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf) return (EGLConfig) NULL; } - conf->Display = dpy; _eglAppendArray(dpy->Configs, (void *) conf); return (EGLConfig) conf; } -EGLBoolean -_eglCheckConfigHandle(EGLConfig config, _EGLDisplay *dpy) +/** + * Lookup a handle to find the linked config. + * Return NULL if the handle has no corresponding linked config. + */ +_EGLConfig * +_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy) { _EGLConfig *conf; + if (!dpy) + return NULL; + conf = (_EGLConfig *) _eglFindArray(dpy->Configs, (void *) config); if (conf) assert(conf->Display == dpy); - return (conf != NULL); + return conf; } @@ -464,10 +472,13 @@ _eglIsConfigAttribValid(_EGLConfig *conf, EGLint attr) * Return EGL_FALSE if any of the attribute is invalid. */ EGLBoolean -_eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list) +_eglParseConfigAttribList(_EGLConfig *conf, _EGLDisplay *dpy, + const EGLint *attrib_list) { EGLint attr, val, i; + _eglInitConfig(conf, dpy, EGL_DONT_CARE); + /* reset to default values */ for (i = 0; i < ARRAY_SIZE(_eglValidationTable); i++) { attr = _eglValidationTable[i].attr; @@ -494,7 +505,7 @@ _eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list) return EGL_FALSE; /* ignore other attributes when EGL_CONFIG_ID is given */ - if (conf->ConfigID > 0) { + if (conf->ConfigID != EGL_DONT_CARE) { for (i = 0; i < ARRAY_SIZE(_eglValidationTable); i++) { attr = _eglValidationTable[i].attr; if (attr != EGL_CONFIG_ID) @@ -683,8 +694,7 @@ _eglChooseConfig(_EGLDriver *drv, _EGLDisplay *disp, const EGLint *attrib_list, if (!num_configs) return _eglError(EGL_BAD_PARAMETER, "eglChooseConfigs"); - _eglInitConfig(&criteria, disp, 0); - if (!_eglParseConfigAttribList(&criteria, attrib_list)) + if (!_eglParseConfigAttribList(&criteria, disp, attrib_list)) return _eglError(EGL_BAD_ATTRIBUTE, "eglChooseConfig"); configList = (_EGLConfig **) _eglFilterArray(disp->Configs, &count, diff --git a/src/egl/main/eglconfig.h b/src/egl/main/eglconfig.h index 892815fa63..2169960fd1 100644 --- a/src/egl/main/eglconfig.h +++ b/src/egl/main/eglconfig.h @@ -3,6 +3,7 @@ #include <assert.h> +#include <stddef.h> #include "egltypedefs.h" @@ -136,34 +137,20 @@ _eglInitConfig(_EGLConfig *config, _EGLDisplay *dpy, EGLint id); PUBLIC EGLConfig -_eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf); +_eglLinkConfig(_EGLConfig *conf); -extern EGLBoolean -_eglCheckConfigHandle(EGLConfig config, _EGLDisplay *dpy); - - -/** - * Lookup a handle to find the linked config. - * Return NULL if the handle has no corresponding linked config. - */ -static INLINE _EGLConfig * -_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy) -{ - _EGLConfig *conf = (_EGLConfig *) config; - if (!dpy || !_eglCheckConfigHandle(config, dpy)) - conf = NULL; - return conf; -} +extern _EGLConfig * +_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy); /** - * Return the handle of a linked config, or NULL. + * Return the handle of a linked config. */ static INLINE EGLConfig _eglGetConfigHandle(_EGLConfig *conf) { - return (EGLConfig) ((conf && conf->Display) ? conf : NULL); + return (EGLConfig) conf; } @@ -176,7 +163,8 @@ _eglMatchConfig(const _EGLConfig *conf, const _EGLConfig *criteria); PUBLIC EGLBoolean -_eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list); +_eglParseConfigAttribList(_EGLConfig *conf, _EGLDisplay *dpy, + const EGLint *attrib_list); PUBLIC EGLint diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c index 113e4e48fb..33dcfa6875 100644 --- a/src/egl/main/eglcontext.c +++ b/src/egl/main/eglcontext.c @@ -103,8 +103,7 @@ _eglInitContext(_EGLContext *ctx, _EGLDisplay *dpy, _EGLConfig *conf, return EGL_FALSE; } - memset(ctx, 0, sizeof(_EGLContext)); - ctx->Resource.Display = dpy; + _eglInitResource(&ctx->Resource, sizeof(*ctx), dpy); ctx->ClientAPI = api; ctx->Config = conf; ctx->WindowRenderBuffer = EGL_NONE; @@ -250,10 +249,6 @@ _eglCheckMakeCurrent(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read) if (!surfaceless && (draw == NULL || read == NULL)) return _eglError(EGL_BAD_MATCH, "eglMakeCurrent"); - /* context stealing from another thread is not allowed */ - if (ctx->Binding && ctx->Binding != t) - return _eglError(EGL_BAD_ACCESS, "eglMakeCurrent"); - /* * The spec says * @@ -261,16 +256,23 @@ _eglCheckMakeCurrent(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read) * bound to contexts in another thread, an EGL_BAD_ACCESS error is * generated." * - * But it also says + * and * * "at most one context may be bound to a particular surface at a given * time" - * - * The latter is more restrictive so we can check only the latter case. */ - if ((draw && draw->CurrentContext && draw->CurrentContext != ctx) || - (read && read->CurrentContext && read->CurrentContext != ctx)) + if (ctx->Binding && ctx->Binding != t) return _eglError(EGL_BAD_ACCESS, "eglMakeCurrent"); + if (draw && draw->CurrentContext && draw->CurrentContext != ctx) { + if (draw->CurrentContext->Binding != t || + draw->CurrentContext->ClientAPI != ctx->ClientAPI) + return _eglError(EGL_BAD_ACCESS, "eglMakeCurrent"); + } + if (read && read->CurrentContext && read->CurrentContext != ctx) { + if (read->CurrentContext->Binding != t || + read->CurrentContext->ClientAPI != ctx->ClientAPI) + return _eglError(EGL_BAD_ACCESS, "eglMakeCurrent"); + } /* simply require the configs to be equal */ if ((draw && draw->Config != ctx->Config) || @@ -301,54 +303,65 @@ _eglCheckMakeCurrent(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read) /** * Bind the context to the current thread and given surfaces. Return the - * "orphaned" context and surfaces. Each argument is both input and output. + * previous bound context and surfaces. The caller should unreference the + * returned context and surfaces. + * + * Making a second call with the resources returned by the first call + * unsurprisingly undoes the first call, except for the resouce reference + * counts. */ EGLBoolean -_eglBindContext(_EGLContext **ctx, _EGLSurface **draw, _EGLSurface **read) +_eglBindContext(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read, + _EGLContext **old_ctx, + _EGLSurface **old_draw, _EGLSurface **old_read) { _EGLThreadInfo *t = _eglGetCurrentThread(); - _EGLContext *newCtx = *ctx, *oldCtx; - _EGLSurface *newDraw = *draw, *newRead = *read; + _EGLContext *prev_ctx; + _EGLSurface *prev_draw, *prev_read; - if (!_eglCheckMakeCurrent(newCtx, newDraw, newRead)) + if (!_eglCheckMakeCurrent(ctx, draw, read)) return EGL_FALSE; + /* increment refcounts before binding */ + _eglGetContext(ctx); + _eglGetSurface(draw); + _eglGetSurface(read); + /* bind the new context */ - oldCtx = _eglBindContextToThread(newCtx, t); + prev_ctx = _eglBindContextToThread(ctx, t); - /* break old bindings */ - if (oldCtx) { - *ctx = oldCtx; - *draw = oldCtx->DrawSurface; - *read = oldCtx->ReadSurface; + /* break previous bindings */ + if (prev_ctx) { + prev_draw = prev_ctx->DrawSurface; + prev_read = prev_ctx->ReadSurface; - if (*draw) - (*draw)->CurrentContext = NULL; - if (*read) - (*read)->CurrentContext = NULL; + if (prev_draw) + prev_draw->CurrentContext = NULL; + if (prev_read) + prev_read->CurrentContext = NULL; - oldCtx->DrawSurface = NULL; - oldCtx->ReadSurface = NULL; + prev_ctx->DrawSurface = NULL; + prev_ctx->ReadSurface = NULL; + } + else { + prev_draw = prev_read = NULL; } /* establish new bindings */ - if (newCtx) { - if (newDraw) - newDraw->CurrentContext = newCtx; - if (newRead) - newRead->CurrentContext = newCtx; + if (ctx) { + if (draw) + draw->CurrentContext = ctx; + if (read) + read->CurrentContext = ctx; - newCtx->DrawSurface = newDraw; - newCtx->ReadSurface = newRead; + ctx->DrawSurface = draw; + ctx->ReadSurface = read; } - /* an old context or surface is not orphaned if it is still bound */ - if (*ctx == newCtx) - *ctx = NULL; - if (*draw == newDraw || *draw == newRead) - *draw = NULL; - if (*read == newDraw || *read == newRead) - *read = NULL; + assert(old_ctx && old_draw && old_read); + *old_ctx = prev_ctx; + *old_draw = prev_draw; + *old_read = prev_read; return EGL_TRUE; } diff --git a/src/egl/main/eglcontext.h b/src/egl/main/eglcontext.h index 148f160cae..8cd0df1731 100644 --- a/src/egl/main/eglcontext.h +++ b/src/egl/main/eglcontext.h @@ -39,30 +39,41 @@ _eglQueryContext(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx, EGLint att PUBLIC EGLBoolean -_eglBindContext(_EGLContext **ctx, _EGLSurface **draw, _EGLSurface **read); +_eglBindContext(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read, + _EGLContext **old_ctx, + _EGLSurface **old_draw, _EGLSurface **old_read); /** - * Return true if the context is bound to a thread. - * - * The binding is considered a reference to the context. Drivers should not - * destroy a context when it is bound. + * Increment reference count for the context. + */ +static INLINE _EGLContext * +_eglGetContext(_EGLContext *ctx) +{ + if (ctx) + _eglGetResource(&ctx->Resource); + return ctx; +} + + +/** + * Decrement reference count for the context. */ static INLINE EGLBoolean -_eglIsContextBound(_EGLContext *ctx) +_eglPutContext(_EGLContext *ctx) { - return (ctx->Binding != NULL); + return (ctx) ? _eglPutResource(&ctx->Resource) : EGL_FALSE; } /** - * Link a context to a display and return the handle of the link. + * Link a context to its display and return the handle of the link. * The handle can be passed to client directly. */ static INLINE EGLContext -_eglLinkContext(_EGLContext *ctx, _EGLDisplay *dpy) +_eglLinkContext(_EGLContext *ctx) { - _eglLinkResource(&ctx->Resource, _EGL_RESOURCE_CONTEXT, dpy); + _eglLinkResource(&ctx->Resource, _EGL_RESOURCE_CONTEXT); return (EGLContext) ctx; } @@ -104,18 +115,4 @@ _eglGetContextHandle(_EGLContext *ctx) } -/** - * Return true if the context is linked to a display. - * - * The link is considered a reference to the context (the display is owning the - * context). Drivers should not destroy a context when it is linked. - */ -static INLINE EGLBoolean -_eglIsContextLinked(_EGLContext *ctx) -{ - _EGLResource *res = (_EGLResource *) ctx; - return (res && _eglIsResourceLinked(res)); -} - - #endif /* EGLCONTEXT_INCLUDED */ diff --git a/src/egl/main/eglcurrent.c b/src/egl/main/eglcurrent.c index c0e8c119a9..cbca9ff2c2 100644 --- a/src/egl/main/eglcurrent.c +++ b/src/egl/main/eglcurrent.c @@ -14,33 +14,7 @@ static _EGLThreadInfo dummy_thread = _EGL_THREAD_INFO_INITIALIZER; -#ifdef GLX_USE_TLS -static __thread const _EGLThreadInfo *_egl_TSD - __attribute__ ((tls_model("initial-exec"))); - -static INLINE void _eglSetTSD(const _EGLThreadInfo *t) -{ - _egl_TSD = t; -} - -static INLINE _EGLThreadInfo *_eglGetTSD(void) -{ - return (_EGLThreadInfo *) _egl_TSD; -} - -static INLINE void _eglFiniTSD(void) -{ -} - -static INLINE EGLBoolean _eglInitTSD(void (*dtor)(_EGLThreadInfo *)) -{ - /* TODO destroy TSD */ - (void) dtor; - (void) _eglFiniTSD; - return EGL_TRUE; -} - -#elif PTHREADS +#if PTHREADS #include <pthread.h> static _EGL_DECLARE_MUTEX(_egl_TSDMutex); @@ -48,14 +22,26 @@ static EGLBoolean _egl_TSDInitialized; static pthread_key_t _egl_TSD; static void (*_egl_FreeTSD)(_EGLThreadInfo *); +#ifdef GLX_USE_TLS +static __thread const _EGLThreadInfo *_egl_TLS + __attribute__ ((tls_model("initial-exec"))); +#endif + static INLINE void _eglSetTSD(const _EGLThreadInfo *t) { pthread_setspecific(_egl_TSD, (const void *) t); +#ifdef GLX_USE_TLS + _egl_TLS = t; +#endif } static INLINE _EGLThreadInfo *_eglGetTSD(void) { +#ifdef GLX_USE_TLS + return (_EGLThreadInfo *) _egl_TLS; +#else return (_EGLThreadInfo *) pthread_getspecific(_egl_TSD); +#endif } static INLINE void _eglFiniTSD(void) diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index cc0f03e01b..565e44d2d2 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -233,17 +233,53 @@ _eglCheckResource(void *res, _EGLResourceType type, _EGLDisplay *dpy) /** - * Link a resource to a display. + * Initialize a display resource. */ void -_eglLinkResource(_EGLResource *res, _EGLResourceType type, _EGLDisplay *dpy) +_eglInitResource(_EGLResource *res, EGLint size, _EGLDisplay *dpy) { - assert(!res->Display || res->Display == dpy); - + memset(res, 0, size); res->Display = dpy; + res->RefCount = 1; +} + + +/** + * Increment reference count for the resource. + */ +void +_eglGetResource(_EGLResource *res) +{ + assert(res && res->RefCount > 0); + /* hopefully a resource is always manipulated with its display locked */ + res->RefCount++; +} + + +/** + * Decrement reference count for the resource. + */ +EGLBoolean +_eglPutResource(_EGLResource *res) +{ + assert(res && res->RefCount > 0); + res->RefCount--; + return (!res->RefCount); +} + + +/** + * Link a resource to its display. + */ +void +_eglLinkResource(_EGLResource *res, _EGLResourceType type) +{ + assert(res->Display); + res->IsLinked = EGL_TRUE; - res->Next = dpy->ResourceLists[type]; - dpy->ResourceLists[type] = res; + res->Next = res->Display->ResourceLists[type]; + res->Display->ResourceLists[type] = res; + _eglGetResource(res); } @@ -270,6 +306,9 @@ _eglUnlinkResource(_EGLResource *res, _EGLResourceType type) } res->Next = NULL; - /* do not reset res->Display */ res->IsLinked = EGL_FALSE; + _eglPutResource(res); + + /* We always unlink before destroy. The driver still owns a reference */ + assert(res->RefCount); } diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h index 3863cce010..bcba05480a 100644 --- a/src/egl/main/egldisplay.h +++ b/src/egl/main/egldisplay.h @@ -40,6 +40,7 @@ struct _egl_resource /* which display the resource belongs to */ _EGLDisplay *Display; EGLBoolean IsLinked; + EGLint RefCount; /* used to link resources of the same type */ _EGLResource *Next; @@ -162,7 +163,19 @@ _eglGetDisplayHandle(_EGLDisplay *dpy) extern void -_eglLinkResource(_EGLResource *res, _EGLResourceType type, _EGLDisplay *dpy); +_eglInitResource(_EGLResource *res, EGLint size, _EGLDisplay *dpy); + + +PUBLIC void +_eglGetResource(_EGLResource *res); + + +PUBLIC EGLBoolean +_eglPutResource(_EGLResource *res); + + +extern void +_eglLinkResource(_EGLResource *res, _EGLResourceType type); extern void diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c index 2359253ff1..ff0011c4b1 100644 --- a/src/egl/main/egldriver.c +++ b/src/egl/main/egldriver.c @@ -395,35 +395,62 @@ _eglPreloadForEach(const char *search_path, static const char * _eglGetSearchPath(void) { - static const char *search_path; + static char search_path[1024]; #if defined(_EGL_OS_UNIX) || defined(_EGL_OS_WINDOWS) - if (!search_path) { - static char buffer[1024]; - const char *p; + if (search_path[0] == '\0') { + char *buf = search_path; + size_t len = sizeof(search_path); + EGLBoolean use_env; + char dir_sep; int ret; - p = getenv("EGL_DRIVERS_PATH"); #if defined(_EGL_OS_UNIX) - if (p && (geteuid() != getuid() || getegid() != getgid())) { + use_env = (geteuid() == getuid() && getegid() == getgid()); + dir_sep = '/'; +#else + use_env = EGL_TRUE; + dir_sep = '\\'; +#endif + + if (use_env) { + char *p; + + /* extract the dirname from EGL_DRIVER */ + p = getenv("EGL_DRIVER"); + if (p && strchr(p, dir_sep)) { + ret = _eglsnprintf(buf, len, "%s", p); + if (ret > 0 && ret < len) { + p = strrchr(buf, dir_sep); + *p++ = ':'; + + len -= p - buf; + buf = p; + } + } + + /* append EGL_DRIVERS_PATH */ + p = getenv("EGL_DRIVERS_PATH"); + if (p) { + ret = _eglsnprintf(buf, len, "%s:", p); + if (ret > 0 && ret < len) { + buf += ret; + len -= ret; + } + } + } + else { _eglLog(_EGL_DEBUG, "ignore EGL_DRIVERS_PATH for setuid/setgid binaries"); - p = NULL; } -#endif /* _EGL_OS_UNIX */ - if (p) { - ret = _eglsnprintf(buffer, sizeof(buffer), - "%s:%s", p, _EGL_DRIVER_SEARCH_DIR); - if (ret > 0 && ret < sizeof(buffer)) - search_path = buffer; - } + ret = _eglsnprintf(buf, len, "%s", _EGL_DRIVER_SEARCH_DIR); + if (ret < 0 || ret >= len) + search_path[0] = '\0'; + + _eglLog(_EGL_DEBUG, "EGL search path is %s", search_path); } - if (!search_path) - search_path = _EGL_DRIVER_SEARCH_DIR; -#else - search_path = ""; -#endif +#endif /* defined(_EGL_OS_UNIX) || defined(_EGL_OS_WINDOWS) */ return search_path; } diff --git a/src/egl/main/egldriver.h b/src/egl/main/egldriver.h index 1ca7c6cd93..1a0aaad1f8 100644 --- a/src/egl/main/egldriver.h +++ b/src/egl/main/egldriver.h @@ -4,7 +4,7 @@ #include "egltypedefs.h" #include "eglapi.h" - +#include <stddef.h> /** * Define an inline driver typecast function. diff --git a/src/egl/main/eglimage.c b/src/egl/main/eglimage.c index af4a29fb0e..6d4ee4e08b 100644 --- a/src/egl/main/eglimage.c +++ b/src/egl/main/eglimage.c @@ -2,7 +2,6 @@ #include <string.h> #include "eglimage.h" -#include "eglcurrent.h" #include "egllog.h" @@ -81,8 +80,7 @@ _eglParseImageAttribList(_EGLImageAttribs *attrs, _EGLDisplay *dpy, EGLBoolean _eglInitImage(_EGLImage *img, _EGLDisplay *dpy) { - memset(img, 0, sizeof(_EGLImage)); - img->Resource.Display = dpy; + _eglInitResource(&img->Resource, sizeof(*img), dpy); return EGL_TRUE; } diff --git a/src/egl/main/eglimage.h b/src/egl/main/eglimage.h index 7cd92c1125..adb939a9e0 100644 --- a/src/egl/main/eglimage.h +++ b/src/egl/main/eglimage.h @@ -43,13 +43,35 @@ _eglInitImage(_EGLImage *img, _EGLDisplay *dpy); /** - * Link an image to a display and return the handle of the link. + * Increment reference count for the image. + */ +static INLINE _EGLImage * +_eglGetImage(_EGLImage *img) +{ + if (img) + _eglGetResource(&img->Resource); + return img; +} + + +/** + * Decrement reference count for the image. + */ +static INLINE EGLBoolean +_eglPutImage(_EGLImage *img) +{ + return (img) ? _eglPutResource(&img->Resource) : EGL_FALSE; +} + + +/** + * Link an image to its display and return the handle of the link. * The handle can be passed to client directly. */ static INLINE EGLImageKHR -_eglLinkImage(_EGLImage *img, _EGLDisplay *dpy) +_eglLinkImage(_EGLImage *img) { - _eglLinkResource(&img->Resource, _EGL_RESOURCE_IMAGE, dpy); + _eglLinkResource(&img->Resource, _EGL_RESOURCE_IMAGE); return (EGLImageKHR) img; } @@ -91,15 +113,4 @@ _eglGetImageHandle(_EGLImage *img) } -/** - * Return true if the image is linked to a display. - */ -static INLINE EGLBoolean -_eglIsImageLinked(_EGLImage *img) -{ - _EGLResource *res = (_EGLResource *) img; - return (res && _eglIsResourceLinked(res)); -} - - #endif /* EGLIMAGE_INCLUDED */ diff --git a/src/egl/main/egllog.c b/src/egl/main/egllog.c index 8f3bae2243..12c55f901a 100644 --- a/src/egl/main/egllog.c +++ b/src/egl/main/egllog.c @@ -151,6 +151,7 @@ _eglLog(EGLint level, const char *fmtStr, ...) { va_list args; char msg[MAXSTRING]; + int ret; /* one-time initialization; a little race here is fine */ if (!logging.initialized) @@ -162,7 +163,9 @@ _eglLog(EGLint level, const char *fmtStr, ...) if (logging.logger) { va_start(args, fmtStr); - vsnprintf(msg, MAXSTRING, fmtStr, args); + ret = vsnprintf(msg, MAXSTRING, fmtStr, args); + if (ret < 0 || ret >= MAXSTRING) + strcpy(msg, "<message truncated>"); va_end(args); logging.logger(level, msg); diff --git a/src/egl/main/eglmode.c b/src/egl/main/eglmode.c index ed107d5d7a..a9653496c3 100644 --- a/src/egl/main/eglmode.c +++ b/src/egl/main/eglmode.c @@ -3,11 +3,9 @@ #include <string.h> #include "egldisplay.h" -#include "egldriver.h" #include "eglmode.h" #include "eglcurrent.h" #include "eglscreen.h" -#include "eglstring.h" #ifdef EGL_MESA_screen_surface @@ -31,56 +29,24 @@ _eglLookupMode(EGLModeMESA mode, _EGLDisplay *disp) /* loop over all screens on the display */ for (scrnum = 0; scrnum < disp->Screens->Size; scrnum++) { const _EGLScreen *scrn = disp->Screens->Elements[scrnum]; - EGLint i; - /* search list of modes for handle */ - for (i = 0; i < scrn->NumModes; i++) { - if (scrn->Modes[i].Handle == mode) { - return scrn->Modes + i; - } - } - } + EGLint idx; - return NULL; -} + /* + * the mode ids of a screen ranges from scrn->Handle to scrn->Handle + + * scrn->NumModes + */ + if (mode >= scrn->Handle && + mode < scrn->Handle + _EGL_SCREEN_MAX_MODES) { + idx = mode - scrn->Handle; + assert(idx < scrn->NumModes && scrn->Modes[idx].Handle == mode); -/** - * Add a new mode with the given attributes (width, height, depth, refreshRate) - * to the given screen. - * Assign a new mode ID/handle to the mode as well. - * \return pointer to the new _EGLMode - */ -_EGLMode * -_eglAddNewMode(_EGLScreen *screen, EGLint width, EGLint height, - EGLint refreshRate, const char *name) -{ - EGLint n; - _EGLMode *newModes; - - assert(screen); - assert(width > 0); - assert(height > 0); - assert(refreshRate > 0); - - n = screen->NumModes; - newModes = (_EGLMode *) realloc(screen->Modes, (n+1) * sizeof(_EGLMode)); - if (newModes) { - screen->Modes = newModes; - screen->Modes[n].Handle = n + 1; - screen->Modes[n].Width = width; - screen->Modes[n].Height = height; - screen->Modes[n].RefreshRate = refreshRate; - screen->Modes[n].Optimal = EGL_FALSE; - screen->Modes[n].Interlaced = EGL_FALSE; - screen->Modes[n].Name = _eglstrdup(name); - screen->NumModes++; - return screen->Modes + n; - } - else { - return NULL; + return &scrn->Modes[idx]; + } } -} + return NULL; +} /** diff --git a/src/egl/main/eglmode.h b/src/egl/main/eglmode.h index 9167cbc4b9..ed4eb2c34a 100644 --- a/src/egl/main/eglmode.h +++ b/src/egl/main/eglmode.h @@ -32,11 +32,6 @@ extern _EGLMode * _eglLookupMode(EGLModeMESA mode, _EGLDisplay *dpy); -PUBLIC _EGLMode * -_eglAddNewMode(_EGLScreen *screen, EGLint width, EGLint height, - EGLint refreshRate, const char *name); - - extern EGLBoolean _eglChooseModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, const EGLint *attrib_list, EGLModeMESA *modes, diff --git a/src/egl/main/eglscreen.c b/src/egl/main/eglscreen.c index 2ae403494e..3abe85ff22 100644 --- a/src/egl/main/eglscreen.c +++ b/src/egl/main/eglscreen.c @@ -18,7 +18,6 @@ #include "egldisplay.h" #include "eglcurrent.h" #include "eglmode.h" -#include "eglconfig.h" #include "eglsurface.h" #include "eglscreen.h" #include "eglmutex.h" @@ -42,7 +41,8 @@ _eglAllocScreenHandle(void) EGLScreenMESA s; _eglLockMutex(&_eglNextScreenHandleMutex); - s = _eglNextScreenHandle++; + s = _eglNextScreenHandle; + _eglNextScreenHandle += _EGL_SCREEN_MAX_MODES; _eglUnlockMutex(&_eglNextScreenHandleMutex); return s; @@ -53,60 +53,80 @@ _eglAllocScreenHandle(void) * Initialize an _EGLScreen object to default values. */ void -_eglInitScreen(_EGLScreen *screen) +_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy, EGLint num_modes) { memset(screen, 0, sizeof(_EGLScreen)); + + screen->Display = dpy; + screen->NumModes = num_modes; screen->StepX = 1; screen->StepY = 1; + + if (num_modes > _EGL_SCREEN_MAX_MODES) + num_modes = _EGL_SCREEN_MAX_MODES; + screen->Modes = (_EGLMode *) calloc(num_modes, sizeof(*screen->Modes)); + screen->NumModes = (screen->Modes) ? num_modes : 0; } /** - * Given a public screen handle, return the internal _EGLScreen object. + * Link a screen to its display and return the handle of the link. + * The handle can be passed to client directly. */ -_EGLScreen * -_eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *display) +EGLScreenMESA +_eglLinkScreen(_EGLScreen *screen) { + _EGLDisplay *display; EGLint i; - if (!display || !display->Screens) - return NULL; + assert(screen && screen->Display); + display = screen->Display; - for (i = 0; i < display->Screens->Size; i++) { - _EGLScreen *scr = (_EGLScreen *) display->Screens->Elements[i]; - if (scr->Handle == screen) - return scr; + if (!display->Screens) { + display->Screens = _eglCreateArray("Screen", 4); + if (!display->Screens) + return (EGLScreenMESA) 0; } - return NULL; + + screen->Handle = _eglAllocScreenHandle(); + for (i = 0; i < screen->NumModes; i++) + screen->Modes[i].Handle = screen->Handle + i; + + _eglAppendArray(display->Screens, (void *) screen); + + return screen->Handle; } /** - * Add the given _EGLScreen to the display's list of screens. + * Lookup a handle to find the linked config. + * Return NULL if the handle has no corresponding linked config. */ -void -_eglAddScreen(_EGLDisplay *display, _EGLScreen *screen) +_EGLScreen * +_eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *display) { - assert(display); - assert(screen); + EGLint i; - if (!display->Screens) { - display->Screens = _eglCreateArray("Screen", 4); - if (!display->Screens) - return; + if (!display || !display->Screens) + return NULL; + + for (i = 0; i < display->Screens->Size; i++) { + _EGLScreen *scr = (_EGLScreen *) display->Screens->Elements[i]; + if (scr->Handle == screen) { + assert(scr->Display == display); + return scr; + } } - screen->Handle = _eglAllocScreenHandle(); - _eglAppendArray(display->Screens, (void *) screen); + return NULL; } - static EGLBoolean _eglFlattenScreen(void *elem, void *buffer) { _EGLScreen *scr = (_EGLScreen *) elem; EGLScreenMESA *handle = (EGLScreenMESA *) buffer; - *handle = scr->Handle; + *handle = _eglGetScreenHandle(scr); return EGL_TRUE; } @@ -123,22 +143,6 @@ _eglGetScreensMESA(_EGLDriver *drv, _EGLDisplay *display, EGLScreenMESA *screens /** - * Set a screen's current display mode. - * Note: mode = EGL_NO_MODE is valid (turns off the screen) - * - * This is just a placeholder function; drivers will always override - * this with code that _really_ sets the mode. - */ -EGLBoolean -_eglScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, - _EGLMode *m) -{ - scrn->CurrentMode = m; - return EGL_TRUE; -} - - -/** * Set a screen's surface origin. */ EGLBoolean @@ -198,33 +202,4 @@ _eglQueryScreenMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, } -/** - * Delete the modes associated with given screen. - */ -void -_eglDestroyScreenModes(_EGLScreen *scrn) -{ - EGLint i; - for (i = 0; i < scrn->NumModes; i++) { - if (scrn->Modes[i].Name) - free((char *) scrn->Modes[i].Name); /* cast away const */ - } - if (scrn->Modes) - free(scrn->Modes); - scrn->Modes = NULL; - scrn->NumModes = 0; -} - - -/** - * Default fallback routine - drivers should usually override this. - */ -void -_eglDestroyScreen(_EGLScreen *scrn) -{ - _eglDestroyScreenModes(scrn); - free(scrn); -} - - #endif /* EGL_MESA_screen_surface */ diff --git a/src/egl/main/eglscreen.h b/src/egl/main/eglscreen.h index e564793e51..2a99f23c50 100644 --- a/src/egl/main/eglscreen.h +++ b/src/egl/main/eglscreen.h @@ -8,6 +8,9 @@ #ifdef EGL_MESA_screen_surface +#define _EGL_SCREEN_MAX_MODES 16 + + /** * Per-screen information. * Note that an EGL screen doesn't have a size. A screen may be set to @@ -19,6 +22,8 @@ */ struct _egl_screen { + _EGLDisplay *Display; + EGLScreenMESA Handle; /* The public/opaque handle which names this object */ _EGLMode *CurrentMode; @@ -33,15 +38,25 @@ struct _egl_screen PUBLIC void -_eglInitScreen(_EGLScreen *screen); +_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy, EGLint num_modes); + + +PUBLIC EGLScreenMESA +_eglLinkScreen(_EGLScreen *screen); extern _EGLScreen * _eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *dpy); -PUBLIC void -_eglAddScreen(_EGLDisplay *display, _EGLScreen *screen); +/** + * Return the handle of a linked screen. + */ +static INLINE EGLScreenMESA +_eglGetScreenHandle(_EGLScreen *screen) +{ + return (screen) ? screen->Handle : (EGLScreenMESA) 0; +} extern EGLBoolean @@ -49,18 +64,10 @@ _eglGetScreensMESA(_EGLDriver *drv, _EGLDisplay *dpy, EGLScreenMESA *screens, EG extern EGLBoolean -_eglScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, _EGLMode *m); - - -extern EGLBoolean _eglScreenPositionMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint x, EGLint y); extern EGLBoolean -_eglQueryDisplayMESA(_EGLDriver *drv, _EGLDisplay *dpy, EGLint attribute, EGLint *value); - - -extern EGLBoolean _eglQueryScreenSurfaceMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, _EGLSurface **surface); @@ -73,14 +80,6 @@ extern EGLBoolean _eglQueryScreenMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint attribute, EGLint *value); -extern void -_eglDestroyScreenModes(_EGLScreen *scrn); - - -PUBLIC void -_eglDestroyScreen(_EGLScreen *scrn); - - #endif /* EGL_MESA_screen_surface */ diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c index 74f10230ea..cc505045e1 100644 --- a/src/egl/main/eglsurface.c +++ b/src/egl/main/eglsurface.c @@ -269,8 +269,7 @@ _eglInitSurface(_EGLSurface *surf, _EGLDisplay *dpy, EGLint type, return EGL_FALSE; } - memset(surf, 0, sizeof(_EGLSurface)); - surf->Resource.Display = dpy; + _eglInitResource(&surf->Resource, sizeof(*surf), dpy); surf->Type = type; surf->Config = conf; diff --git a/src/egl/main/eglsurface.h b/src/egl/main/eglsurface.h index 729499e80a..ef01b32ede 100644 --- a/src/egl/main/eglsurface.h +++ b/src/egl/main/eglsurface.h @@ -68,26 +68,35 @@ _eglSwapInterval(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf, EGLint in /** - * Return true if there is a context bound to the surface. - * - * The binding is considered a reference to the surface. Drivers should not - * destroy a surface when it is bound. + * Increment reference count for the surface. + */ +static INLINE _EGLSurface * +_eglGetSurface(_EGLSurface *surf) +{ + if (surf) + _eglGetResource(&surf->Resource); + return surf; +} + + +/** + * Decrement reference count for the surface. */ static INLINE EGLBoolean -_eglIsSurfaceBound(_EGLSurface *surf) +_eglPutSurface(_EGLSurface *surf) { - return (surf->CurrentContext != NULL); + return (surf) ? _eglPutResource(&surf->Resource) : EGL_FALSE; } /** - * Link a surface to a display and return the handle of the link. + * Link a surface to its display and return the handle of the link. * The handle can be passed to client directly. */ static INLINE EGLSurface -_eglLinkSurface(_EGLSurface *surf, _EGLDisplay *dpy) +_eglLinkSurface(_EGLSurface *surf) { - _eglLinkResource(&surf->Resource, _EGL_RESOURCE_SURFACE, dpy); + _eglLinkResource(&surf->Resource, _EGL_RESOURCE_SURFACE); return (EGLSurface) surf; } @@ -129,18 +138,4 @@ _eglGetSurfaceHandle(_EGLSurface *surf) } -/** - * Return true if the surface is linked to a display. - * - * The link is considered a reference to the surface (the display is owning the - * surface). Drivers should not destroy a surface when it is linked. - */ -static INLINE EGLBoolean -_eglIsSurfaceLinked(_EGLSurface *surf) -{ - _EGLResource *res = (_EGLResource *) surf; - return (res && _eglIsResourceLinked(res)); -} - - #endif /* EGLSURFACE_INCLUDED */ diff --git a/src/egl/main/eglsync.c b/src/egl/main/eglsync.c index b9cd99a332..95e97c7354 100644 --- a/src/egl/main/eglsync.c +++ b/src/egl/main/eglsync.c @@ -50,10 +50,7 @@ _eglInitSync(_EGLSync *sync, _EGLDisplay *dpy, EGLenum type, !(type == EGL_SYNC_FENCE_KHR && dpy->Extensions.KHR_fence_sync)) return _eglError(EGL_BAD_ATTRIBUTE, "eglCreateSyncKHR"); - memset(sync, 0, sizeof(*sync)); - - sync->Resource.Display = dpy; - + _eglInitResource(&sync->Resource, sizeof(*sync), dpy); sync->Type = type; sync->SyncStatus = EGL_UNSIGNALED_KHR; sync->SyncCondition = EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR; diff --git a/src/egl/main/eglsync.h b/src/egl/main/eglsync.h index 052d016681..a0025237e7 100644 --- a/src/egl/main/eglsync.h +++ b/src/egl/main/eglsync.h @@ -34,13 +34,35 @@ _eglGetSyncAttribKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync, /** - * Link a sync to a display and return the handle of the link. + * Increment reference count for the sync. + */ +static INLINE _EGLSync * +_eglGetSync(_EGLSync *sync) +{ + if (sync) + _eglGetResource(&sync->Resource); + return sync; +} + + +/** + * Decrement reference count for the sync. + */ +static INLINE EGLBoolean +_eglPutSync(_EGLSync *sync) +{ + return (sync) ? _eglPutResource(&sync->Resource) : EGL_FALSE; +} + + +/** + * Link a sync to its display and return the handle of the link. * The handle can be passed to client directly. */ static INLINE EGLSyncKHR -_eglLinkSync(_EGLSync *sync, _EGLDisplay *dpy) +_eglLinkSync(_EGLSync *sync) { - _eglLinkResource(&sync->Resource, _EGL_RESOURCE_SYNC, dpy); + _eglLinkResource(&sync->Resource, _EGL_RESOURCE_SYNC); return (EGLSyncKHR) sync; } @@ -81,20 +103,6 @@ _eglGetSyncHandle(_EGLSync *sync) } -/** - * Return true if the sync is linked to a display. - * - * The link is considered a reference to the sync (the display is owning the - * sync). Drivers should not destroy a sync when it is linked. - */ -static INLINE EGLBoolean -_eglIsSyncLinked(_EGLSync *sync) -{ - _EGLResource *res = (_EGLResource *) sync; - return (res && _eglIsResourceLinked(res)); -} - - #endif /* EGL_KHR_reusable_sync */ diff --git a/src/gallium/SConscript b/src/gallium/SConscript index 3c171552be..0efab834f6 100644 --- a/src/gallium/SConscript +++ b/src/gallium/SConscript @@ -1,30 +1,135 @@ -import os +Import('env') -Import('*') +# +# Auxiliary modules +# SConscript('auxiliary/SConscript') -for driver in env['drivers']: - SConscript(os.path.join('drivers', driver, 'SConscript')) +# +# Drivers +# + +SConscript([ + 'drivers/failover/SConscript', + 'drivers/galahad/SConscript', + 'drivers/identity/SConscript', + 'drivers/llvmpipe/SConscript', + 'drivers/rbug/SConscript', + 'drivers/softpipe/SConscript', + 'drivers/svga/SConscript', + 'drivers/trace/SConscript', +]) + +if not env['msvc']: + # These drivers do not build on MSVC compilers + SConscript([ + 'drivers/i915/SConscript', + 'drivers/i965/SConscript', + 'drivers/r300/SConscript', + ]) + +if env['drm']: + # These drivers depend on drm headers + if env['drm_radeon']: + SConscript([ + 'drivers/r600/SConscript', + ]) + # XXX: nouveau drivers have a tight dependency on libdrm, so to enable + # we need some version logic before we enable them. Also, ATM there is + # no nouveau target in scons + # if env['drm_nouveau']: + # SConscript([ + # 'drivers/nouveau/SConscript', + # 'drivers/nv50/SConscript', + # 'drivers/nvfx/SConscript', + # ]) + +# +# State trackers +# # Needed by some state trackers SConscript('winsys/sw/null/SConscript') SConscript('state_trackers/python/SConscript') -if platform != 'embedded': - SConscript('state_trackers/glx/xlib/SConscript') - SConscript('state_trackers/dri/SConscript') - SConscript('state_trackers/xorg/SConscript') - SConscript('state_trackers/egl/SConscript') - SConscript('state_trackers/vega/SConscript') +if env['platform'] != 'embedded': + SConscript('state_trackers/vega/SConscript') + + if env['x11']: + SConscript('state_trackers/glx/xlib/SConscript') + + if env['dri']: + SConscript('state_trackers/dri/SConscript') + + if env['dri'] and env['xorg']: + SConscript('state_trackers/xorg/SConscript') + +if env['platform'] == 'windows': + SConscript([ + 'state_trackers/egl/SConscript', + 'state_trackers/wgl/SConscript', + ]) -if platform == 'windows': - SConscript('state_trackers/wgl/SConscript') +# +# Winsys +# SConscript('winsys/SConscript') -SConscript('targets/SConscript') +# +# Targets +# + +SConscript([ + 'targets/graw-null/SConscript', +]) + +if env['x11']: + SConscript([ + 'targets/graw-xlib/SConscript', + 'targets/libgl-xlib/SConscript', + ]) + +if env['platform'] == 'windows': + SConscript([ + 'targets/graw-gdi/SConscript', + 'targets/libgl-gdi/SConscript', + #'egl-gdi/SConscript', + ]) + +if env['dri']: + SConscript([ + 'targets/SConscript.dri', + 'targets/dri-swrast/SConscript', + 'targets/dri-vmwgfx/SConscript', + #'targets/dri-nouveau/SConscript', + ]) + if env['drm_intel']: + SConscript([ + 'targets/dri-i915/SConscript', + 'targets/dri-i965/SConscript', + ]) + if env['drm_radeon']: + SConscript([ + 'targets/dri-r300/SConscript', + 'targets/dri-r600/SConscript', + ]) + +if env['xorg'] and env['drm']: + SConscript([ + #'targets/xorg-i915/SConscript', + #'targets/xorg-i965/SConscript', + #'targets/xorg-nouveau/SConscript', + #'targets/xorg-radeon/SConscript', + 'targets/xorg-vmwgfx/SConscript', + ]) + + +# +# Unit tests & tools +# -if platform != 'embedded': - SConscript('tests/unit/SConscript') - SConscript('tests/graw/SConscript') +if env['platform'] != 'embedded': + SConscript('tests/unit/SConscript') + SConscript('tests/graw/SConscript') diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile index abd33f6eef..53a0847f03 100644 --- a/src/gallium/auxiliary/Makefile +++ b/src/gallium/auxiliary/Makefile @@ -142,8 +142,7 @@ C_SOURCES = \ util/u_tile.c \ util/u_transfer.c \ util/u_resource.c \ - util/u_upload_mgr.c \ - target-helpers/wrap_screen.c + util/u_upload_mgr.c # Disabling until pipe-video branch gets merged in #vl/vl_bitstream_parser.c \ @@ -211,16 +210,16 @@ include ../Makefile.template indices/u_indices_gen.c: indices/u_indices_gen.py - python $< > $@ + $(PYTHON2) $< > $@ indices/u_unfilled_gen.c: indices/u_unfilled_gen.py - python $< > $@ + $(PYTHON2) $< > $@ util/u_format_srgb.c: util/u_format_srgb.py - python $< > $@ + $(PYTHON2) $< > $@ util/u_format_table.c: util/u_format_table.py util/u_format_pack.py util/u_format_parse.py util/u_format.csv - python util/u_format_table.py util/u_format.csv > $@ + $(PYTHON2) util/u_format_table.py util/u_format.csv > $@ util/u_half.c: util/u_half.py - python util/u_half.py > $@ + $(PYTHON2) util/u_half.py > $@ diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript index 94cd74424a..75c27dd242 100644 --- a/src/gallium/auxiliary/SConscript +++ b/src/gallium/auxiliary/SConscript @@ -7,8 +7,6 @@ env.Append(CPPPATH = [ 'util', ]) -env.Tool('udis86') - env.CodeGenerate( target = 'indices/u_indices_gen.c', script = 'indices/u_indices_gen.py', @@ -198,43 +196,45 @@ source = [ #'vl/vl_compositor.c', #'vl/vl_csc.c', #'vl/vl_shader_build.c', - 'target-helpers/wrap_screen.c', ] if env['llvm']: + if env['UDIS86']: + env.Append(CPPDEFINES = [('HAVE_UDIS86', '1')]) + source += [ - 'gallivm/lp_bld_arit.c', - 'gallivm/lp_bld_assert.c', - 'gallivm/lp_bld_bitarit.c', - 'gallivm/lp_bld_const.c', - 'gallivm/lp_bld_conv.c', - 'gallivm/lp_bld_debug.c', - 'gallivm/lp_bld_flow.c', - 'gallivm/lp_bld_format_aos.c', - 'gallivm/lp_bld_format_soa.c', - 'gallivm/lp_bld_format_yuv.c', - 'gallivm/lp_bld_gather.c', - 'gallivm/lp_bld_init.c', - 'gallivm/lp_bld_intr.c', - 'gallivm/lp_bld_logic.c', - 'gallivm/lp_bld_misc.cpp', - 'gallivm/lp_bld_pack.c', - 'gallivm/lp_bld_printf.c', - 'gallivm/lp_bld_quad.c', - 'gallivm/lp_bld_sample.c', - 'gallivm/lp_bld_sample_aos.c', - 'gallivm/lp_bld_sample_soa.c', - 'gallivm/lp_bld_struct.c', - 'gallivm/lp_bld_swizzle.c', - 'gallivm/lp_bld_tgsi_aos.c', - 'gallivm/lp_bld_tgsi_info.c', - 'gallivm/lp_bld_tgsi_soa.c', - 'gallivm/lp_bld_type.c', - 'draw/draw_llvm.c', - 'draw/draw_llvm_sample.c', - 'draw/draw_llvm_translate.c', - 'draw/draw_pt_fetch_shade_pipeline_llvm.c', - 'draw/draw_vs_llvm.c' + 'gallivm/lp_bld_arit.c', + 'gallivm/lp_bld_assert.c', + 'gallivm/lp_bld_bitarit.c', + 'gallivm/lp_bld_const.c', + 'gallivm/lp_bld_conv.c', + 'gallivm/lp_bld_debug.c', + 'gallivm/lp_bld_flow.c', + 'gallivm/lp_bld_format_aos.c', + 'gallivm/lp_bld_format_soa.c', + 'gallivm/lp_bld_format_yuv.c', + 'gallivm/lp_bld_gather.c', + 'gallivm/lp_bld_init.c', + 'gallivm/lp_bld_intr.c', + 'gallivm/lp_bld_logic.c', + 'gallivm/lp_bld_misc.cpp', + 'gallivm/lp_bld_pack.c', + 'gallivm/lp_bld_printf.c', + 'gallivm/lp_bld_quad.c', + 'gallivm/lp_bld_sample.c', + 'gallivm/lp_bld_sample_aos.c', + 'gallivm/lp_bld_sample_soa.c', + 'gallivm/lp_bld_struct.c', + 'gallivm/lp_bld_swizzle.c', + 'gallivm/lp_bld_tgsi_aos.c', + 'gallivm/lp_bld_tgsi_info.c', + 'gallivm/lp_bld_tgsi_soa.c', + 'gallivm/lp_bld_type.c', + 'draw/draw_llvm.c', + 'draw/draw_llvm_sample.c', + 'draw/draw_llvm_translate.c', + 'draw/draw_pt_fetch_shade_pipeline_llvm.c', + 'draw/draw_vs_llvm.c' ] gallium = env.ConvenienceLibrary( @@ -242,4 +242,6 @@ gallium = env.ConvenienceLibrary( source = source, ) +env.Alias('gallium', gallium) + Export('gallium') diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 140e596f99..2b5f01cda7 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -1164,11 +1164,6 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) sampler->destroy(sampler); -#ifdef PIPE_ARCH_X86 - /* Avoid corrupting the FPU stack on 32bit OSes. */ - lp_build_intrinsic(builder, "llvm.x86.mmx.emms", LLVMVoidType(), NULL, 0); -#endif - ret = LLVMBuildLoad(builder, ret_ptr,""); LLVMBuildRet(builder, ret); @@ -1378,11 +1373,6 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian sampler->destroy(sampler); -#ifdef PIPE_ARCH_X86 - /* Avoid corrupting the FPU stack on 32bit OSes. */ - lp_build_intrinsic(builder, "llvm.x86.mmx.emms", LLVMVoidType(), NULL, 0); -#endif - ret = LLVMBuildLoad(builder, ret_ptr,""); LLVMBuildRet(builder, ret); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c index 5598ca5c48..0b9a6f745f 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_init.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c @@ -145,13 +145,7 @@ lp_build_init(void) LLVMAddCFGSimplificationPass(lp_build_pass); LLVMAddPromoteMemoryToRegisterPass(lp_build_pass); LLVMAddConstantPropagationPass(lp_build_pass); - if(util_cpu_caps.has_sse4_1) { - /* FIXME: There is a bug in this pass, whereby the combination of fptosi - * and sitofp (necessary for trunc/floor/ceil/round implementation) - * somehow becomes invalid code. - */ - LLVMAddInstructionCombiningPass(lp_build_pass); - } + LLVMAddInstructionCombiningPass(lp_build_pass); LLVMAddGVNPass(lp_build_pass); } else { /* We need at least this pass to prevent the backends to fail in diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index 3c318cc8c8..7f0f058c22 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -58,6 +58,7 @@ #include "lp_bld_tgsi.h" #include "lp_bld_limits.h" #include "lp_bld_debug.h" +#include "lp_bld_printf.h" #define FOR_EACH_CHANNEL( CHAN )\ @@ -119,9 +120,12 @@ struct lp_build_tgsi_soa_context { struct lp_build_context base; - /* Builder for integer masks and indices */ + /* Builder for vector integer masks and indices */ struct lp_build_context uint_bld; + /* Builder for scalar elements of shader's data type (float) */ + struct lp_build_context elem_bld; + LLVMValueRef consts_ptr; const LLVMValueRef *pos; const LLVMValueRef (*inputs)[NUM_CHANNELS]; @@ -140,6 +144,18 @@ struct lp_build_tgsi_soa_context */ LLVMValueRef temps_array; + /* We allocate/use this array of output if (1 << TGSI_FILE_OUTPUT) is + * set in the indirect_files field. + * The outputs[] array above is unused then. + */ + LLVMValueRef outputs_array; + + /* We allocate/use this array of inputs if (1 << TGSI_FILE_INPUT) is + * set in the indirect_files field. + * The inputs[] array above is unused then. + */ + LLVMValueRef inputs_array; + const struct tgsi_shader_info *info; /** bitmask indicating which register files are accessed indirectly */ unsigned indirect_files; @@ -435,6 +451,26 @@ get_temp_ptr(struct lp_build_tgsi_soa_context *bld, } } +/** + * Return pointer to a output register channel (src or dest). + * Note that indirect addressing cannot be handled here. + * \param index which output register + * \param chan which channel of the output register. + */ +static LLVMValueRef +get_output_ptr(struct lp_build_tgsi_soa_context *bld, + unsigned index, + unsigned chan) +{ + assert(chan < 4); + if (bld->indirect_files & (1 << TGSI_FILE_OUTPUT)) { + LLVMValueRef lindex = lp_build_const_int32(index * 4 + chan); + return LLVMBuildGEP(bld->base.builder, bld->outputs_array, &lindex, 1, ""); + } + else { + return bld->outputs[index][chan]; + } +} /** * Gather vector. @@ -457,7 +493,7 @@ build_gather(struct lp_build_tgsi_soa_context *bld, LLVMValueRef index = LLVMBuildExtractElement(bld->base.builder, indexes, ii, ""); LLVMValueRef scalar_ptr = LLVMBuildGEP(bld->base.builder, base_ptr, - &index, 1, ""); + &index, 1, "gather_ptr"); LLVMValueRef scalar = LLVMBuildLoad(bld->base.builder, scalar_ptr, ""); res = LLVMBuildInsertElement(bld->base.builder, res, scalar, ii, ""); @@ -468,8 +504,60 @@ build_gather(struct lp_build_tgsi_soa_context *bld, /** + * Scatter/store vector. + */ +static void +emit_mask_scatter(struct lp_build_tgsi_soa_context *bld, + LLVMValueRef base_ptr, + LLVMValueRef indexes, + LLVMValueRef values, + struct lp_exec_mask *mask, + LLVMValueRef pred) +{ + LLVMBuilderRef builder = bld->base.builder; + unsigned i; + + /* Mix the predicate and execution mask */ + if (mask->has_mask) { + if (pred) { + pred = LLVMBuildAnd(mask->bld->builder, pred, mask->exec_mask, ""); + } + else { + pred = mask->exec_mask; + } + } + + /* + * Loop over elements of index_vec, store scalar value. + */ + for (i = 0; i < bld->base.type.length; i++) { + LLVMValueRef ii = LLVMConstInt(LLVMInt32Type(), i, 0); + LLVMValueRef index = LLVMBuildExtractElement(builder, indexes, ii, ""); + LLVMValueRef scalar_ptr = LLVMBuildGEP(builder, base_ptr, &index, 1, "scatter_ptr"); + LLVMValueRef val = LLVMBuildExtractElement(builder, values, ii, "scatter_val"); + LLVMValueRef scalar_pred = pred ? + LLVMBuildExtractElement(builder, pred, ii, "scatter_pred") : NULL; + + if (0) + lp_build_printf(builder, "scatter %d: val %f at %d %p\n", + ii, val, index, scalar_ptr); + + if (scalar_pred) { + LLVMValueRef real_val, dst_val; + dst_val = LLVMBuildLoad(builder, scalar_ptr, ""); + real_val = lp_build_select(&bld->elem_bld, scalar_pred, val, dst_val); + LLVMBuildStore(builder, real_val, scalar_ptr); + } + else { + LLVMBuildStore(builder, val, scalar_ptr); + } + } +} + + +/** * Read the current value of the ADDR register, convert the floats to - * ints, multiply by four and return the vector of offsets. + * ints, add the base index and return the vector of offsets. * The offsets will be used to index into the constant buffer or * temporary register file. */ @@ -577,7 +665,38 @@ emit_fetch( break; case TGSI_FILE_INPUT: - res = bld->inputs[reg->Register.Index][swizzle]; + if (reg->Register.Indirect) { + LLVMValueRef swizzle_vec = + lp_build_const_int_vec(uint_bld->type, swizzle); + LLVMValueRef length_vec = + lp_build_const_int_vec(uint_bld->type, bld->base.type.length); + LLVMValueRef index_vec; /* index into the const buffer */ + LLVMValueRef inputs_array; + LLVMTypeRef float4_ptr_type; + + /* index_vec = (indirect_index * 4 + swizzle) * length */ + index_vec = lp_build_shl_imm(uint_bld, indirect_index, 2); + index_vec = lp_build_add(uint_bld, index_vec, swizzle_vec); + index_vec = lp_build_mul(uint_bld, index_vec, length_vec); + + /* cast inputs_array pointer to float* */ + float4_ptr_type = LLVMPointerType(LLVMFloatType(), 0); + inputs_array = LLVMBuildBitCast(uint_bld->builder, bld->inputs_array, + float4_ptr_type, ""); + + /* Gather values from the temporary register array */ + res = build_gather(bld, inputs_array, index_vec); + } else { + if (bld->indirect_files & (1 << TGSI_FILE_INPUT)) { + LLVMValueRef lindex = lp_build_const_int32(reg->Register.Index * 4 + swizzle); + LLVMValueRef input_ptr = LLVMBuildGEP(bld->base.builder, + bld->inputs_array, &lindex, 1, ""); + res = LLVMBuildLoad(bld->base.builder, input_ptr, ""); + } + else { + res = bld->inputs[reg->Register.Index][swizzle]; + } + } assert(res); break; @@ -748,6 +867,7 @@ emit_store( LLVMValueRef value) { const struct tgsi_full_dst_register *reg = &inst->Dst[index]; + struct lp_build_context *uint_bld = &bld->uint_bld; LLVMValueRef indirect_index = NULL; switch( inst->Instruction.Saturate ) { @@ -779,15 +899,81 @@ emit_store( switch( reg->Register.File ) { case TGSI_FILE_OUTPUT: - lp_exec_mask_store(&bld->exec_mask, pred, value, - bld->outputs[reg->Register.Index][chan_index]); + if (reg->Register.Indirect) { + LLVMBuilderRef builder = bld->base.builder; + LLVMValueRef chan_vec = + lp_build_const_int_vec(uint_bld->type, chan_index); + LLVMValueRef length_vec = + lp_build_const_int_vec(uint_bld->type, bld->base.type.length); + LLVMValueRef index_vec; /* indexes into the temp registers */ + LLVMValueRef outputs_array; + LLVMValueRef pixel_offsets; + LLVMTypeRef float_ptr_type; + int i; + + /* build pixel offset vector: {0, 1, 2, 3, ...} */ + pixel_offsets = uint_bld->undef; + for (i = 0; i < bld->base.type.length; i++) { + LLVMValueRef ii = lp_build_const_int32(i); + pixel_offsets = LLVMBuildInsertElement(builder, pixel_offsets, + ii, ii, ""); + } + + /* index_vec = (indirect_index * 4 + chan_index) * length + offsets */ + index_vec = lp_build_shl_imm(uint_bld, indirect_index, 2); + index_vec = lp_build_add(uint_bld, index_vec, chan_vec); + index_vec = lp_build_mul(uint_bld, index_vec, length_vec); + index_vec = lp_build_add(uint_bld, index_vec, pixel_offsets); + + float_ptr_type = LLVMPointerType(LLVMFloatType(), 0); + outputs_array = LLVMBuildBitCast(builder, bld->outputs_array, + float_ptr_type, ""); + + /* Scatter store values into temp registers */ + emit_mask_scatter(bld, outputs_array, index_vec, value, + &bld->exec_mask, pred); + } + else { + LLVMValueRef out_ptr = get_output_ptr(bld, reg->Register.Index, + chan_index); + lp_exec_mask_store(&bld->exec_mask, pred, value, out_ptr); + } break; case TGSI_FILE_TEMPORARY: if (reg->Register.Indirect) { - /* XXX not done yet */ - debug_printf("WARNING: LLVM scatter store of temp regs" - " not implemented\n"); + LLVMBuilderRef builder = bld->base.builder; + LLVMValueRef chan_vec = + lp_build_const_int_vec(uint_bld->type, chan_index); + LLVMValueRef length_vec = + lp_build_const_int_vec(uint_bld->type, bld->base.type.length); + LLVMValueRef index_vec; /* indexes into the temp registers */ + LLVMValueRef temps_array; + LLVMValueRef pixel_offsets; + LLVMTypeRef float_ptr_type; + int i; + + /* build pixel offset vector: {0, 1, 2, 3, ...} */ + pixel_offsets = uint_bld->undef; + for (i = 0; i < bld->base.type.length; i++) { + LLVMValueRef ii = lp_build_const_int32(i); + pixel_offsets = LLVMBuildInsertElement(builder, pixel_offsets, + ii, ii, ""); + } + + /* index_vec = (indirect_index * 4 + chan_index) * length + offsets */ + index_vec = lp_build_shl_imm(uint_bld, indirect_index, 2); + index_vec = lp_build_add(uint_bld, index_vec, chan_vec); + index_vec = lp_build_mul(uint_bld, index_vec, length_vec); + index_vec = lp_build_add(uint_bld, index_vec, pixel_offsets); + + float_ptr_type = LLVMPointerType(LLVMFloatType(), 0); + temps_array = LLVMBuildBitCast(builder, bld->temps_array, + float_ptr_type, ""); + + /* Scatter store values into temp registers */ + emit_mask_scatter(bld, temps_array, index_vec, value, + &bld->exec_mask, pred); } else { LLVMValueRef temp_ptr = get_temp_ptr(bld, reg->Register.Index, @@ -1040,15 +1226,60 @@ emit_kilp(struct lp_build_tgsi_soa_context *bld, lp_build_mask_check(bld->mask); } + +/** + * Emit code which will dump the value of all the temporary registers + * to stdout. + */ +static void +emit_dump_temps(struct lp_build_tgsi_soa_context *bld) +{ + LLVMBuilderRef builder = bld->base.builder; + LLVMValueRef temp_ptr; + LLVMValueRef i0 = lp_build_const_int32(0); + LLVMValueRef i1 = lp_build_const_int32(1); + LLVMValueRef i2 = lp_build_const_int32(2); + LLVMValueRef i3 = lp_build_const_int32(3); + int index; + int n = bld->info->file_max[TGSI_FILE_TEMPORARY]; + + for (index = 0; index < n; index++) { + LLVMValueRef idx = lp_build_const_int32(index); + LLVMValueRef v[4][4], res; + int chan; + + lp_build_printf(builder, "TEMP[%d]:\n", idx); + + for (chan = 0; chan < 4; chan++) { + temp_ptr = get_temp_ptr(bld, index, chan); + res = LLVMBuildLoad(bld->base.builder, temp_ptr, ""); + v[chan][0] = LLVMBuildExtractElement(builder, res, i0, ""); + v[chan][1] = LLVMBuildExtractElement(builder, res, i1, ""); + v[chan][2] = LLVMBuildExtractElement(builder, res, i2, ""); + v[chan][3] = LLVMBuildExtractElement(builder, res, i3, ""); + } + + lp_build_printf(builder, " X: %f %f %f %f\n", + v[0][0], v[0][1], v[0][2], v[0][3]); + lp_build_printf(builder, " Y: %f %f %f %f\n", + v[1][0], v[1][1], v[1][2], v[1][3]); + lp_build_printf(builder, " Z: %f %f %f %f\n", + v[2][0], v[2][1], v[2][2], v[2][3]); + lp_build_printf(builder, " W: %f %f %f %f\n", + v[3][0], v[3][1], v[3][2], v[3][3]); + } +} + + + static void emit_declaration( struct lp_build_tgsi_soa_context *bld, const struct tgsi_full_declaration *decl) { LLVMTypeRef vec_type = bld->base.vec_type; - - unsigned first = decl->Range.First; - unsigned last = decl->Range.Last; + const unsigned first = decl->Range.First; + const unsigned last = decl->Range.Last; unsigned idx, i; for (idx = first; idx <= last; ++idx) { @@ -1056,36 +1287,33 @@ emit_declaration( switch (decl->Declaration.File) { case TGSI_FILE_TEMPORARY: assert(idx < LP_MAX_TGSI_TEMPS); - if (bld->indirect_files & (1 << TGSI_FILE_TEMPORARY)) { - LLVMValueRef array_size = LLVMConstInt(LLVMInt32Type(), - last*4 + 4, 0); - bld->temps_array = lp_build_array_alloca(bld->base.builder, - vec_type, array_size, ""); - } else { + if (!(bld->indirect_files & (1 << TGSI_FILE_TEMPORARY))) { for (i = 0; i < NUM_CHANNELS; i++) bld->temps[idx][i] = lp_build_alloca(bld->base.builder, - vec_type, ""); + vec_type, "temp"); } break; case TGSI_FILE_OUTPUT: - for (i = 0; i < NUM_CHANNELS; i++) - bld->outputs[idx][i] = lp_build_alloca(bld->base.builder, - vec_type, ""); + if (!(bld->indirect_files & (1 << TGSI_FILE_OUTPUT))) { + for (i = 0; i < NUM_CHANNELS; i++) + bld->outputs[idx][i] = lp_build_alloca(bld->base.builder, + vec_type, "output"); + } break; case TGSI_FILE_ADDRESS: assert(idx < LP_MAX_TGSI_ADDRS); for (i = 0; i < NUM_CHANNELS; i++) bld->addr[idx][i] = lp_build_alloca(bld->base.builder, - vec_type, ""); + vec_type, "addr"); break; case TGSI_FILE_PREDICATE: assert(idx < LP_MAX_TGSI_PREDS); for (i = 0; i < NUM_CHANNELS; i++) bld->preds[idx][i] = lp_build_alloca(bld->base.builder, - vec_type, ""); + vec_type, "predicate"); break; default: @@ -1740,6 +1968,10 @@ emit_instruction( break; case TGSI_OPCODE_END: + if (0) { + /* for debugging */ + emit_dump_temps(bld); + } *pc = -1; break; @@ -2082,6 +2314,7 @@ lp_build_tgsi_soa(LLVMBuilderRef builder, memset(&bld, 0, sizeof bld); lp_build_context_init(&bld.base, builder, type); lp_build_context_init(&bld.uint_bld, builder, lp_uint_type(type)); + lp_build_context_init(&bld.elem_bld, builder, lp_elem_type(type)); bld.mask = mask; bld.pos = pos; bld.inputs = inputs; @@ -2100,6 +2333,48 @@ lp_build_tgsi_soa(LLVMBuilderRef builder, lp_exec_mask_init(&bld.exec_mask, &bld.base); + if (bld.indirect_files & (1 << TGSI_FILE_TEMPORARY)) { + LLVMValueRef array_size = LLVMConstInt(LLVMInt32Type(), + info->file_max[TGSI_FILE_TEMPORARY]*4 + 4, 0); + bld.temps_array = lp_build_array_alloca(bld.base.builder, + bld.base.vec_type, array_size, + "temp_array"); + } + + if (bld.indirect_files & (1 << TGSI_FILE_OUTPUT)) { + LLVMValueRef array_size = LLVMConstInt(LLVMInt32Type(), + info->file_max[TGSI_FILE_OUTPUT]*4 + 4, 0); + bld.outputs_array = lp_build_array_alloca(bld.base.builder, + bld.base.vec_type, array_size, + "output_array"); + } + + /* If we have indirect addressing in inputs we need to copy them into + * our alloca array to be able to iterate over them */ + if (bld.indirect_files & (1 << TGSI_FILE_INPUT)) { + unsigned index, chan; + LLVMTypeRef vec_type = bld.base.vec_type; + LLVMValueRef array_size = LLVMConstInt(LLVMInt32Type(), + info->file_max[TGSI_FILE_INPUT]*4 + 4, 0); + bld.inputs_array = lp_build_array_alloca(bld.base.builder, + vec_type, array_size, + "input_array"); + + assert(info->num_inputs <= info->file_max[TGSI_FILE_INPUT] + 1); + + for (index = 0; index < info->num_inputs; ++index) { + for (chan = 0; chan < NUM_CHANNELS; ++chan) { + LLVMValueRef lindex = lp_build_const_int32(index * 4 + chan); + LLVMValueRef input_ptr = + LLVMBuildGEP(bld.base.builder, bld.inputs_array, + &lindex, 1, ""); + LLVMValueRef value = bld.inputs[index][chan]; + if (value) + LLVMBuildStore(bld.base.builder, value, input_ptr); + } + } + } + tgsi_parse_init( &parse, tokens ); while( !tgsi_parse_end_of_tokens( &parse ) ) { @@ -2169,6 +2444,18 @@ lp_build_tgsi_soa(LLVMBuilderRef builder, opcode_info->mnemonic); } + /* If we have indirect addressing in outputs we need to copy our alloca array + * to the outputs slots specified by the called */ + if (bld.indirect_files & (1 << TGSI_FILE_OUTPUT)) { + unsigned index, chan; + assert(info->num_outputs <= info->file_max[TGSI_FILE_OUTPUT] + 1); + for (index = 0; index < info->num_outputs; ++index) { + for (chan = 0; chan < NUM_CHANNELS; ++chan) { + bld.outputs[index][chan] = get_output_ptr(&bld, index, chan); + } + } + } + if (0) { LLVMBasicBlockRef block = LLVMGetInsertBlock(builder); LLVMValueRef function = LLVMGetBasicBlockParent(block); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_type.c b/src/gallium/auxiliary/gallivm/lp_bld_type.c index 06f1aae6dc..5205c7ada9 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_type.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_type.c @@ -188,6 +188,22 @@ lp_build_int32_vec4_type(void) /** + * Create element of vector type + */ +struct lp_type +lp_elem_type(struct lp_type type) +{ + struct lp_type res_type; + + assert(type.length > 1); + res_type = type; + res_type.length = 1; + + return res_type; +} + + +/** * Create unsigned integer type variation of given type. */ struct lp_type diff --git a/src/gallium/auxiliary/gallivm/lp_bld_type.h b/src/gallium/auxiliary/gallivm/lp_bld_type.h index fec1d3dfbc..a135d0df84 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_type.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_type.h @@ -365,6 +365,10 @@ lp_unorm8_vec4_type(void) struct lp_type +lp_elem_type(struct lp_type type); + + +struct lp_type lp_uint_type(struct lp_type type); diff --git a/src/gallium/auxiliary/os/os_stream_stdc.c b/src/gallium/auxiliary/os/os_stream_stdc.c index 37e7d063e2..afd3ff6dce 100644 --- a/src/gallium/auxiliary/os/os_stream_stdc.c +++ b/src/gallium/auxiliary/os/os_stream_stdc.c @@ -106,7 +106,7 @@ os_file_stream_create(const char *filename) stream->base.flush = &os_stdc_stream_flush; stream->base.vprintf = &os_stdc_stream_vprintf; - stream->file = fopen(filename, "w"); + stream->file = fopen(filename, "wb"); if(!stream->file) goto no_file; diff --git a/src/gallium/auxiliary/pipebuffer/SConscript b/src/gallium/auxiliary/pipebuffer/SConscript deleted file mode 100644 index a074a55471..0000000000 --- a/src/gallium/auxiliary/pipebuffer/SConscript +++ /dev/null @@ -1,18 +0,0 @@ -Import('*') - -pipebuffer = env.ConvenienceLibrary( - target = 'pipebuffer', - source = [ - 'pb_buffer_fenced.c', - 'pb_buffer_malloc.c', - 'pb_bufmgr_alt.c', - 'pb_bufmgr_cache.c', - 'pb_bufmgr_debug.c', - 'pb_bufmgr_mm.c', - 'pb_bufmgr_ondemand.c', - 'pb_bufmgr_pool.c', - 'pb_bufmgr_slab.c', - 'pb_validate.c', - ]) - -auxiliaries.insert(0, pipebuffer) diff --git a/src/gallium/auxiliary/rtasm/rtasm_ppc.c b/src/gallium/auxiliary/rtasm/rtasm_ppc.c index ef4b306cb6..330838d23c 100644 --- a/src/gallium/auxiliary/rtasm/rtasm_ppc.c +++ b/src/gallium/auxiliary/rtasm/rtasm_ppc.c @@ -97,7 +97,7 @@ void (*ppc_get_func(struct ppc_function *p))(void) return (void (*)(void)) NULL; else #endif - return (void (*)(void)) p->store; + return (void (*)(void)) pointer_to_func(p->store); } diff --git a/src/gallium/auxiliary/target-helpers/wrap_screen.c b/src/gallium/auxiliary/target-helpers/wrap_screen.c deleted file mode 100644 index df5d56a53c..0000000000 --- a/src/gallium/auxiliary/target-helpers/wrap_screen.c +++ /dev/null @@ -1,68 +0,0 @@ -/************************************************************************** - * - * Copyright 2007 Tungsten Graphics, Inc., Bismarck, ND., USA - * 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, sub license, 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 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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. - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * - **************************************************************************/ - -/* - * Authors: - * Keith Whitwell - */ - -#include "target-helpers/wrap_screen.h" -#include "trace/tr_public.h" -#include "rbug/rbug_public.h" -#include "identity/id_public.h" -#include "util/u_debug.h" - - -/* Centralized code to inject common wrapping layers: - */ -struct pipe_screen * -gallium_wrap_screen( struct pipe_screen *screen ) -{ - /* Screen wrapping functions are required not to fail. If it is - * impossible to wrap a screen, the unwrapped screen should be - * returned instead. Any failure condition should be returned in - * an OUT argument. - * - * Otherwise it is really messy trying to clean up in this code. - */ - if (debug_get_bool_option("GALLIUM_WRAP", FALSE)) { - screen = identity_screen_create(screen); - } - - /* Trace does its own checking if it should run */ - screen = trace_screen_create(screen); - - /* Rbug does its own checking if it should run */ - screen = rbug_screen_create(screen); - - return screen; -} - - - - diff --git a/src/gallium/auxiliary/target-helpers/wrap_screen.h b/src/gallium/auxiliary/target-helpers/wrap_screen.h deleted file mode 100644 index 7e76beb7c5..0000000000 --- a/src/gallium/auxiliary/target-helpers/wrap_screen.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef WRAP_SCREEN_HELPER_H -#define WRAP_SCREEN_HELPER_H - -#include "pipe/p_compiler.h" - -struct pipe_screen; - -/* Centralized code to inject common wrapping layers. Other layers - * can be introduced by specific targets, but these are the generally - * helpful ones we probably want everywhere. - */ -struct pipe_screen * -gallium_wrap_screen( struct pipe_screen *screen ); - - -#endif diff --git a/src/gallium/auxiliary/tgsi/tgsi_build.c b/src/gallium/auxiliary/tgsi/tgsi_build.c index 6dbedf15ca..16a205f206 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_build.c +++ b/src/gallium/auxiliary/tgsi/tgsi_build.c @@ -64,25 +64,14 @@ header_bodysize_grow( struct tgsi_header *header ) } struct tgsi_processor -tgsi_default_processor( void ) -{ - struct tgsi_processor processor; - - processor.Processor = TGSI_PROCESSOR_FRAGMENT; - processor.Padding = 0; - - return processor; -} - -struct tgsi_processor tgsi_build_processor( unsigned type, struct tgsi_header *header ) { struct tgsi_processor processor; - processor = tgsi_default_processor(); processor.Processor = type; + processor.Padding = 0; header_headersize_grow( header ); @@ -93,7 +82,19 @@ tgsi_build_processor( * declaration */ -struct tgsi_declaration +static void +declaration_grow( + struct tgsi_declaration *declaration, + struct tgsi_header *header ) +{ + assert( declaration->NrTokens < 0xFF ); + + declaration->NrTokens++; + + header_bodysize_grow( header ); +} + +static struct tgsi_declaration tgsi_default_declaration( void ) { struct tgsi_declaration declaration; @@ -112,7 +113,7 @@ tgsi_default_declaration( void ) return declaration; } -struct tgsi_declaration +static struct tgsi_declaration tgsi_build_declaration( unsigned file, unsigned usage_mask, @@ -144,16 +145,85 @@ tgsi_build_declaration( return declaration; } -static void -declaration_grow( +static struct tgsi_declaration_range +tgsi_default_declaration_range( void ) +{ + struct tgsi_declaration_range dr; + + dr.First = 0; + dr.Last = 0; + + return dr; +} + +static struct tgsi_declaration_range +tgsi_build_declaration_range( + unsigned first, + unsigned last, struct tgsi_declaration *declaration, struct tgsi_header *header ) { - assert( declaration->NrTokens < 0xFF ); + struct tgsi_declaration_range declaration_range; - declaration->NrTokens++; + assert( last >= first ); + assert( last <= 0xFFFF ); - header_bodysize_grow( header ); + declaration_range.First = first; + declaration_range.Last = last; + + declaration_grow( declaration, header ); + + return declaration_range; +} + +static struct tgsi_declaration_dimension +tgsi_build_declaration_dimension(unsigned index_2d, + struct tgsi_declaration *declaration, + struct tgsi_header *header) +{ + struct tgsi_declaration_dimension dd; + + assert(index_2d <= 0xFFFF); + + dd.Index2D = index_2d; + dd.Padding = 0; + + declaration_grow(declaration, header); + + return dd; +} + +static struct tgsi_declaration_semantic +tgsi_default_declaration_semantic( void ) +{ + struct tgsi_declaration_semantic ds; + + ds.Name = TGSI_SEMANTIC_POSITION; + ds.Index = 0; + ds.Padding = 0; + + return ds; +} + +static struct tgsi_declaration_semantic +tgsi_build_declaration_semantic( + unsigned semantic_name, + unsigned semantic_index, + struct tgsi_declaration *declaration, + struct tgsi_header *header ) +{ + struct tgsi_declaration_semantic ds; + + assert( semantic_name <= TGSI_SEMANTIC_COUNT ); + assert( semantic_index <= 0xFFFF ); + + ds.Name = semantic_name; + ds.Index = semantic_index; + ds.Padding = 0; + + declaration_grow( declaration, header ); + + return ds; } struct tgsi_full_declaration @@ -257,104 +327,11 @@ tgsi_build_full_declaration( return size; } -struct tgsi_declaration_range -tgsi_default_declaration_range( void ) -{ - struct tgsi_declaration_range dr; - - dr.First = 0; - dr.Last = 0; - - return dr; -} - -struct tgsi_declaration_range -tgsi_build_declaration_range( - unsigned first, - unsigned last, - struct tgsi_declaration *declaration, - struct tgsi_header *header ) -{ - struct tgsi_declaration_range declaration_range; - - assert( last >= first ); - assert( last <= 0xFFFF ); - - declaration_range = tgsi_default_declaration_range(); - declaration_range.First = first; - declaration_range.Last = last; - - declaration_grow( declaration, header ); - - return declaration_range; -} - -struct tgsi_declaration_dimension -tgsi_default_declaration_dimension(void) -{ - struct tgsi_declaration_dimension dd; - - dd.Index2D = 0; - dd.Padding = 0; - - return dd; -} - -struct tgsi_declaration_dimension -tgsi_build_declaration_dimension(unsigned index_2d, - struct tgsi_declaration *declaration, - struct tgsi_header *header) -{ - struct tgsi_declaration_dimension dd; - - assert(index_2d <= 0xFFFF); - - dd = tgsi_default_declaration_dimension(); - dd.Index2D = index_2d; - - declaration_grow(declaration, header); - - return dd; -} - -struct tgsi_declaration_semantic -tgsi_default_declaration_semantic( void ) -{ - struct tgsi_declaration_semantic ds; - - ds.Name = TGSI_SEMANTIC_POSITION; - ds.Index = 0; - ds.Padding = 0; - - return ds; -} - -struct tgsi_declaration_semantic -tgsi_build_declaration_semantic( - unsigned semantic_name, - unsigned semantic_index, - struct tgsi_declaration *declaration, - struct tgsi_header *header ) -{ - struct tgsi_declaration_semantic ds; - - assert( semantic_name <= TGSI_SEMANTIC_COUNT ); - assert( semantic_index <= 0xFFFF ); - - ds = tgsi_default_declaration_semantic(); - ds.Name = semantic_name; - ds.Index = semantic_index; - - declaration_grow( declaration, header ); - - return ds; -} - /* * immediate */ -struct tgsi_immediate +static struct tgsi_immediate tgsi_default_immediate( void ) { struct tgsi_immediate immediate; @@ -367,7 +344,7 @@ tgsi_default_immediate( void ) return immediate; } -struct tgsi_immediate +static struct tgsi_immediate tgsi_build_immediate( struct tgsi_header *header ) { @@ -406,7 +383,7 @@ immediate_grow( header_bodysize_grow( header ); } -union tgsi_immediate_data +static union tgsi_immediate_data tgsi_build_immediate_float32( float value, struct tgsi_immediate *immediate, @@ -480,7 +457,7 @@ tgsi_default_instruction( void ) return instruction; } -struct tgsi_instruction +static struct tgsi_instruction tgsi_build_instruction(unsigned opcode, unsigned saturate, unsigned predicate, @@ -519,6 +496,266 @@ instruction_grow( header_bodysize_grow( header ); } +struct tgsi_instruction_predicate +tgsi_default_instruction_predicate(void) +{ + struct tgsi_instruction_predicate instruction_predicate; + + instruction_predicate.SwizzleX = TGSI_SWIZZLE_X; + instruction_predicate.SwizzleY = TGSI_SWIZZLE_Y; + instruction_predicate.SwizzleZ = TGSI_SWIZZLE_Z; + instruction_predicate.SwizzleW = TGSI_SWIZZLE_W; + instruction_predicate.Negate = 0; + instruction_predicate.Index = 0; + instruction_predicate.Padding = 0; + + return instruction_predicate; +} + +static struct tgsi_instruction_predicate +tgsi_build_instruction_predicate(int index, + unsigned negate, + unsigned swizzleX, + unsigned swizzleY, + unsigned swizzleZ, + unsigned swizzleW, + struct tgsi_instruction *instruction, + struct tgsi_header *header) +{ + struct tgsi_instruction_predicate instruction_predicate; + + instruction_predicate = tgsi_default_instruction_predicate(); + instruction_predicate.SwizzleX = swizzleX; + instruction_predicate.SwizzleY = swizzleY; + instruction_predicate.SwizzleZ = swizzleZ; + instruction_predicate.SwizzleW = swizzleW; + instruction_predicate.Negate = negate; + instruction_predicate.Index = index; + + instruction_grow(instruction, header); + + return instruction_predicate; +} + +static struct tgsi_instruction_label +tgsi_default_instruction_label( void ) +{ + struct tgsi_instruction_label instruction_label; + + instruction_label.Label = 0; + instruction_label.Padding = 0; + + return instruction_label; +} + +static struct tgsi_instruction_label +tgsi_build_instruction_label( + unsigned label, + struct tgsi_token *prev_token, + struct tgsi_instruction *instruction, + struct tgsi_header *header ) +{ + struct tgsi_instruction_label instruction_label; + + instruction_label.Label = label; + instruction_label.Padding = 0; + instruction->Label = 1; + + instruction_grow( instruction, header ); + + return instruction_label; +} + +static struct tgsi_instruction_texture +tgsi_default_instruction_texture( void ) +{ + struct tgsi_instruction_texture instruction_texture; + + instruction_texture.Texture = TGSI_TEXTURE_UNKNOWN; + instruction_texture.Padding = 0; + + return instruction_texture; +} + +static struct tgsi_instruction_texture +tgsi_build_instruction_texture( + unsigned texture, + struct tgsi_token *prev_token, + struct tgsi_instruction *instruction, + struct tgsi_header *header ) +{ + struct tgsi_instruction_texture instruction_texture; + + instruction_texture.Texture = texture; + instruction_texture.Padding = 0; + instruction->Texture = 1; + + instruction_grow( instruction, header ); + + return instruction_texture; +} + +static struct tgsi_src_register +tgsi_default_src_register( void ) +{ + struct tgsi_src_register src_register; + + src_register.File = TGSI_FILE_NULL; + src_register.SwizzleX = TGSI_SWIZZLE_X; + src_register.SwizzleY = TGSI_SWIZZLE_Y; + src_register.SwizzleZ = TGSI_SWIZZLE_Z; + src_register.SwizzleW = TGSI_SWIZZLE_W; + src_register.Negate = 0; + src_register.Absolute = 0; + src_register.Indirect = 0; + src_register.Dimension = 0; + src_register.Index = 0; + + return src_register; +} + +static struct tgsi_src_register +tgsi_build_src_register( + unsigned file, + unsigned swizzle_x, + unsigned swizzle_y, + unsigned swizzle_z, + unsigned swizzle_w, + unsigned negate, + unsigned absolute, + unsigned indirect, + unsigned dimension, + int index, + struct tgsi_instruction *instruction, + struct tgsi_header *header ) +{ + struct tgsi_src_register src_register; + + assert( file < TGSI_FILE_COUNT ); + assert( swizzle_x <= TGSI_SWIZZLE_W ); + assert( swizzle_y <= TGSI_SWIZZLE_W ); + assert( swizzle_z <= TGSI_SWIZZLE_W ); + assert( swizzle_w <= TGSI_SWIZZLE_W ); + assert( negate <= 1 ); + assert( index >= -0x8000 && index <= 0x7FFF ); + + src_register.File = file; + src_register.SwizzleX = swizzle_x; + src_register.SwizzleY = swizzle_y; + src_register.SwizzleZ = swizzle_z; + src_register.SwizzleW = swizzle_w; + src_register.Negate = negate; + src_register.Absolute = absolute; + src_register.Indirect = indirect; + src_register.Dimension = dimension; + src_register.Index = index; + + instruction_grow( instruction, header ); + + return src_register; +} + +static struct tgsi_dimension +tgsi_default_dimension( void ) +{ + struct tgsi_dimension dimension; + + dimension.Indirect = 0; + dimension.Dimension = 0; + dimension.Padding = 0; + dimension.Index = 0; + + return dimension; +} + +static struct tgsi_full_src_register +tgsi_default_full_src_register( void ) +{ + struct tgsi_full_src_register full_src_register; + + full_src_register.Register = tgsi_default_src_register(); + full_src_register.Indirect = tgsi_default_src_register(); + full_src_register.Dimension = tgsi_default_dimension(); + full_src_register.DimIndirect = tgsi_default_src_register(); + + return full_src_register; +} + +static struct tgsi_dimension +tgsi_build_dimension( + unsigned indirect, + unsigned index, + struct tgsi_instruction *instruction, + struct tgsi_header *header ) +{ + struct tgsi_dimension dimension; + + dimension.Indirect = indirect; + dimension.Dimension = 0; + dimension.Padding = 0; + dimension.Index = index; + + instruction_grow( instruction, header ); + + return dimension; +} + +static struct tgsi_dst_register +tgsi_default_dst_register( void ) +{ + struct tgsi_dst_register dst_register; + + dst_register.File = TGSI_FILE_NULL; + dst_register.WriteMask = TGSI_WRITEMASK_XYZW; + dst_register.Indirect = 0; + dst_register.Dimension = 0; + dst_register.Index = 0; + dst_register.Padding = 0; + + return dst_register; +} + +static struct tgsi_dst_register +tgsi_build_dst_register( + unsigned file, + unsigned mask, + unsigned indirect, + unsigned dimension, + int index, + struct tgsi_instruction *instruction, + struct tgsi_header *header ) +{ + struct tgsi_dst_register dst_register; + + assert( file < TGSI_FILE_COUNT ); + assert( mask <= TGSI_WRITEMASK_XYZW ); + assert( index >= -32768 && index <= 32767 ); + + dst_register.File = file; + dst_register.WriteMask = mask; + dst_register.Indirect = indirect; + dst_register.Dimension = dimension; + dst_register.Index = index; + dst_register.Padding = 0; + + instruction_grow( instruction, header ); + + return dst_register; +} + +static struct tgsi_full_dst_register +tgsi_default_full_dst_register( void ) +{ + struct tgsi_full_dst_register full_dst_register; + + full_dst_register.Register = tgsi_default_dst_register(); + full_dst_register.Indirect = tgsi_default_src_register(); + full_dst_register.Dimension = tgsi_default_dimension(); + full_dst_register.DimIndirect = tgsi_default_src_register(); + + return full_dst_register; +} + struct tgsi_full_instruction tgsi_default_full_instruction( void ) { @@ -794,268 +1031,7 @@ tgsi_build_full_instruction( return size; } -struct tgsi_instruction_predicate -tgsi_default_instruction_predicate(void) -{ - struct tgsi_instruction_predicate instruction_predicate; - - instruction_predicate.SwizzleX = TGSI_SWIZZLE_X; - instruction_predicate.SwizzleY = TGSI_SWIZZLE_Y; - instruction_predicate.SwizzleZ = TGSI_SWIZZLE_Z; - instruction_predicate.SwizzleW = TGSI_SWIZZLE_W; - instruction_predicate.Negate = 0; - instruction_predicate.Index = 0; - instruction_predicate.Padding = 0; - - return instruction_predicate; -} - -struct tgsi_instruction_predicate -tgsi_build_instruction_predicate(int index, - unsigned negate, - unsigned swizzleX, - unsigned swizzleY, - unsigned swizzleZ, - unsigned swizzleW, - struct tgsi_instruction *instruction, - struct tgsi_header *header) -{ - struct tgsi_instruction_predicate instruction_predicate; - - instruction_predicate = tgsi_default_instruction_predicate(); - instruction_predicate.SwizzleX = swizzleX; - instruction_predicate.SwizzleY = swizzleY; - instruction_predicate.SwizzleZ = swizzleZ; - instruction_predicate.SwizzleW = swizzleW; - instruction_predicate.Negate = negate; - instruction_predicate.Index = index; - - instruction_grow(instruction, header); - - return instruction_predicate; -} - -struct tgsi_instruction_label -tgsi_default_instruction_label( void ) -{ - struct tgsi_instruction_label instruction_label; - - instruction_label.Label = 0; - instruction_label.Padding = 0; - - return instruction_label; -} - -struct tgsi_instruction_label -tgsi_build_instruction_label( - unsigned label, - struct tgsi_token *prev_token, - struct tgsi_instruction *instruction, - struct tgsi_header *header ) -{ - struct tgsi_instruction_label instruction_label; - - instruction_label = tgsi_default_instruction_label(); - instruction_label.Label = label; - instruction->Label = 1; - - instruction_grow( instruction, header ); - - return instruction_label; -} - -struct tgsi_instruction_texture -tgsi_default_instruction_texture( void ) -{ - struct tgsi_instruction_texture instruction_texture; - - instruction_texture.Texture = TGSI_TEXTURE_UNKNOWN; - instruction_texture.Padding = 0; - - return instruction_texture; -} - -struct tgsi_instruction_texture -tgsi_build_instruction_texture( - unsigned texture, - struct tgsi_token *prev_token, - struct tgsi_instruction *instruction, - struct tgsi_header *header ) -{ - struct tgsi_instruction_texture instruction_texture; - - instruction_texture = tgsi_default_instruction_texture(); - instruction_texture.Texture = texture; - instruction->Texture = 1; - - instruction_grow( instruction, header ); - - return instruction_texture; -} - -struct tgsi_src_register -tgsi_default_src_register( void ) -{ - struct tgsi_src_register src_register; - - src_register.File = TGSI_FILE_NULL; - src_register.SwizzleX = TGSI_SWIZZLE_X; - src_register.SwizzleY = TGSI_SWIZZLE_Y; - src_register.SwizzleZ = TGSI_SWIZZLE_Z; - src_register.SwizzleW = TGSI_SWIZZLE_W; - src_register.Negate = 0; - src_register.Absolute = 0; - src_register.Indirect = 0; - src_register.Dimension = 0; - src_register.Index = 0; - - return src_register; -} - -struct tgsi_src_register -tgsi_build_src_register( - unsigned file, - unsigned swizzle_x, - unsigned swizzle_y, - unsigned swizzle_z, - unsigned swizzle_w, - unsigned negate, - unsigned absolute, - unsigned indirect, - unsigned dimension, - int index, - struct tgsi_instruction *instruction, - struct tgsi_header *header ) -{ - struct tgsi_src_register src_register; - - assert( file < TGSI_FILE_COUNT ); - assert( swizzle_x <= TGSI_SWIZZLE_W ); - assert( swizzle_y <= TGSI_SWIZZLE_W ); - assert( swizzle_z <= TGSI_SWIZZLE_W ); - assert( swizzle_w <= TGSI_SWIZZLE_W ); - assert( negate <= 1 ); - assert( index >= -0x8000 && index <= 0x7FFF ); - - src_register = tgsi_default_src_register(); - src_register.File = file; - src_register.SwizzleX = swizzle_x; - src_register.SwizzleY = swizzle_y; - src_register.SwizzleZ = swizzle_z; - src_register.SwizzleW = swizzle_w; - src_register.Negate = negate; - src_register.Absolute = absolute; - src_register.Indirect = indirect; - src_register.Dimension = dimension; - src_register.Index = index; - - instruction_grow( instruction, header ); - - return src_register; -} - -struct tgsi_full_src_register -tgsi_default_full_src_register( void ) -{ - struct tgsi_full_src_register full_src_register; - - full_src_register.Register = tgsi_default_src_register(); - full_src_register.Indirect = tgsi_default_src_register(); - full_src_register.Dimension = tgsi_default_dimension(); - full_src_register.DimIndirect = tgsi_default_src_register(); - - return full_src_register; -} - - -struct tgsi_dimension -tgsi_default_dimension( void ) -{ - struct tgsi_dimension dimension; - - dimension.Indirect = 0; - dimension.Dimension = 0; - dimension.Padding = 0; - dimension.Index = 0; - - return dimension; -} - -struct tgsi_dimension -tgsi_build_dimension( - unsigned indirect, - unsigned index, - struct tgsi_instruction *instruction, - struct tgsi_header *header ) -{ - struct tgsi_dimension dimension; - - dimension = tgsi_default_dimension(); - dimension.Indirect = indirect; - dimension.Index = index; - - instruction_grow( instruction, header ); - - return dimension; -} - -struct tgsi_dst_register -tgsi_default_dst_register( void ) -{ - struct tgsi_dst_register dst_register; - - dst_register.File = TGSI_FILE_NULL; - dst_register.WriteMask = TGSI_WRITEMASK_XYZW; - dst_register.Indirect = 0; - dst_register.Dimension = 0; - dst_register.Index = 0; - dst_register.Padding = 0; - - return dst_register; -} - -struct tgsi_dst_register -tgsi_build_dst_register( - unsigned file, - unsigned mask, - unsigned indirect, - unsigned dimension, - int index, - struct tgsi_instruction *instruction, - struct tgsi_header *header ) -{ - struct tgsi_dst_register dst_register; - - assert( file < TGSI_FILE_COUNT ); - assert( mask <= TGSI_WRITEMASK_XYZW ); - assert( index >= -32768 && index <= 32767 ); - - dst_register = tgsi_default_dst_register(); - dst_register.File = file; - dst_register.WriteMask = mask; - dst_register.Index = index; - dst_register.Indirect = indirect; - dst_register.Dimension = dimension; - - instruction_grow( instruction, header ); - - return dst_register; -} - -struct tgsi_full_dst_register -tgsi_default_full_dst_register( void ) -{ - struct tgsi_full_dst_register full_dst_register; - - full_dst_register.Register = tgsi_default_dst_register(); - full_dst_register.Indirect = tgsi_default_src_register(); - full_dst_register.Dimension = tgsi_default_dimension(); - full_dst_register.DimIndirect = tgsi_default_src_register(); - - return full_dst_register; -} - -struct tgsi_property +static struct tgsi_property tgsi_default_property( void ) { struct tgsi_property property; @@ -1068,7 +1044,7 @@ tgsi_default_property( void ) return property; } -struct tgsi_property +static struct tgsi_property tgsi_build_property(unsigned property_name, struct tgsi_header *header) { @@ -1107,7 +1083,7 @@ property_grow( header_bodysize_grow( header ); } -struct tgsi_property_data +static struct tgsi_property_data tgsi_build_property_data( unsigned value, struct tgsi_property *property, diff --git a/src/gallium/auxiliary/tgsi/tgsi_build.h b/src/gallium/auxiliary/tgsi/tgsi_build.h index 112107a088..3f236a9c24 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_build.h +++ b/src/gallium/auxiliary/tgsi/tgsi_build.h @@ -45,9 +45,6 @@ struct tgsi_header tgsi_build_header( void ); struct tgsi_processor -tgsi_default_processor( void ); - -struct tgsi_processor tgsi_build_processor( unsigned processor, struct tgsi_header *header ); @@ -56,21 +53,6 @@ tgsi_build_processor( * declaration */ -struct tgsi_declaration -tgsi_default_declaration( void ); - -struct tgsi_declaration -tgsi_build_declaration( - unsigned file, - unsigned usage_mask, - unsigned interpolate, - unsigned dimension, - unsigned semantic, - unsigned centroid, - unsigned invariant, - unsigned cylindrical_wrap, - struct tgsi_header *header ); - struct tgsi_full_declaration tgsi_default_full_declaration( void ); @@ -81,54 +63,13 @@ tgsi_build_full_declaration( struct tgsi_header *header, unsigned maxsize ); -struct tgsi_declaration_range -tgsi_default_declaration_range( void ); - -struct tgsi_declaration_range -tgsi_build_declaration_range( - unsigned first, - unsigned last, - struct tgsi_declaration *declaration, - struct tgsi_header *header ); - -struct tgsi_declaration_dimension -tgsi_default_declaration_dimension(void); - -struct tgsi_declaration_dimension -tgsi_build_declaration_dimension(unsigned index_2d, - struct tgsi_declaration *declaration, - struct tgsi_header *header); - -struct tgsi_declaration_semantic -tgsi_default_declaration_semantic( void ); - -struct tgsi_declaration_semantic -tgsi_build_declaration_semantic( - unsigned semantic_name, - unsigned semantic_index, - struct tgsi_declaration *declaration, - struct tgsi_header *header ); - /* * immediate */ -struct tgsi_immediate -tgsi_default_immediate( void ); - -struct tgsi_immediate -tgsi_build_immediate( - struct tgsi_header *header ); - struct tgsi_full_immediate tgsi_default_full_immediate( void ); -union tgsi_immediate_data -tgsi_build_immediate_float32( - float value, - struct tgsi_immediate *immediate, - struct tgsi_header *header ); - unsigned tgsi_build_full_immediate( const struct tgsi_full_immediate *full_imm, @@ -140,23 +81,9 @@ tgsi_build_full_immediate( * properties */ -struct tgsi_property -tgsi_default_property( void ); - -struct tgsi_property -tgsi_build_property( - unsigned property_name, - struct tgsi_header *header ); - struct tgsi_full_property tgsi_default_full_property( void ); -struct tgsi_property_data -tgsi_build_property_data( - unsigned value, - struct tgsi_property *property, - struct tgsi_header *header ); - unsigned tgsi_build_full_property( const struct tgsi_full_property *full_prop, @@ -171,15 +98,6 @@ tgsi_build_full_property( struct tgsi_instruction tgsi_default_instruction( void ); -struct tgsi_instruction -tgsi_build_instruction( - unsigned opcode, - unsigned saturate, - unsigned predicate, - unsigned num_dst_regs, - unsigned num_src_regs, - struct tgsi_header *header ); - struct tgsi_full_instruction tgsi_default_full_instruction( void ); @@ -193,85 +111,6 @@ tgsi_build_full_instruction( struct tgsi_instruction_predicate tgsi_default_instruction_predicate(void); -struct tgsi_instruction_predicate -tgsi_build_instruction_predicate(int index, - unsigned negate, - unsigned swizzleX, - unsigned swizzleY, - unsigned swizzleZ, - unsigned swizzleW, - struct tgsi_instruction *instruction, - struct tgsi_header *header); - -struct tgsi_instruction_label -tgsi_default_instruction_label( void ); - -struct tgsi_instruction_label -tgsi_build_instruction_label( - unsigned label, - struct tgsi_token *prev_token, - struct tgsi_instruction *instruction, - struct tgsi_header *header ); - -struct tgsi_instruction_texture -tgsi_default_instruction_texture( void ); - -struct tgsi_instruction_texture -tgsi_build_instruction_texture( - unsigned texture, - struct tgsi_token *prev_token, - struct tgsi_instruction *instruction, - struct tgsi_header *header ); - -struct tgsi_src_register -tgsi_default_src_register( void ); - -struct tgsi_src_register -tgsi_build_src_register( - unsigned file, - unsigned swizzle_x, - unsigned swizzle_y, - unsigned swizzle_z, - unsigned swizzle_w, - unsigned negate, - unsigned absolute, - unsigned indirect, - unsigned dimension, - int index, - struct tgsi_instruction *instruction, - struct tgsi_header *header ); - -struct tgsi_full_src_register -tgsi_default_full_src_register( void ); - - -struct tgsi_dimension -tgsi_default_dimension( void ); - -struct tgsi_dimension -tgsi_build_dimension( - unsigned indirect, - unsigned index, - struct tgsi_instruction *instruction, - struct tgsi_header *header ); - -struct tgsi_dst_register -tgsi_default_dst_register( void ); - -struct tgsi_dst_register -tgsi_build_dst_register( - unsigned file, - unsigned mask, - unsigned indirect, - unsigned dimension, - int index, - struct tgsi_instruction *instruction, - struct tgsi_header *header ); - -struct tgsi_full_dst_register -tgsi_default_full_dst_register( void ); - - #if defined __cplusplus } #endif diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c index 3a71540506..7892a67f04 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.c +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c @@ -429,6 +429,24 @@ micro_sne(union tgsi_exec_channel *dst, } static void +micro_sfl(union tgsi_exec_channel *dst) +{ + dst->f[0] = 0.0f; + dst->f[1] = 0.0f; + dst->f[2] = 0.0f; + dst->f[3] = 0.0f; +} + +static void +micro_str(union tgsi_exec_channel *dst) +{ + dst->f[0] = 1.0f; + dst->f[1] = 1.0f; + dst->f[2] = 1.0f; + dst->f[3] = 1.0f; +} + +static void micro_trunc(union tgsi_exec_channel *dst, const union tgsi_exec_channel *src) { @@ -453,50 +471,12 @@ enum tgsi_exec_datatype { /* * Shorthand locations of various utility registers (_I = Index, _C = Channel) */ -#define TEMP_0_I TGSI_EXEC_TEMP_00000000_I -#define TEMP_0_C TGSI_EXEC_TEMP_00000000_C -#define TEMP_7F_I TGSI_EXEC_TEMP_7FFFFFFF_I -#define TEMP_7F_C TGSI_EXEC_TEMP_7FFFFFFF_C -#define TEMP_80_I TGSI_EXEC_TEMP_80000000_I -#define TEMP_80_C TGSI_EXEC_TEMP_80000000_C -#define TEMP_FF_I TGSI_EXEC_TEMP_FFFFFFFF_I -#define TEMP_FF_C TGSI_EXEC_TEMP_FFFFFFFF_C -#define TEMP_1_I TGSI_EXEC_TEMP_ONE_I -#define TEMP_1_C TGSI_EXEC_TEMP_ONE_C -#define TEMP_2_I TGSI_EXEC_TEMP_TWO_I -#define TEMP_2_C TGSI_EXEC_TEMP_TWO_C -#define TEMP_128_I TGSI_EXEC_TEMP_128_I -#define TEMP_128_C TGSI_EXEC_TEMP_128_C -#define TEMP_M128_I TGSI_EXEC_TEMP_MINUS_128_I -#define TEMP_M128_C TGSI_EXEC_TEMP_MINUS_128_C #define TEMP_KILMASK_I TGSI_EXEC_TEMP_KILMASK_I #define TEMP_KILMASK_C TGSI_EXEC_TEMP_KILMASK_C #define TEMP_OUTPUT_I TGSI_EXEC_TEMP_OUTPUT_I #define TEMP_OUTPUT_C TGSI_EXEC_TEMP_OUTPUT_C #define TEMP_PRIMITIVE_I TGSI_EXEC_TEMP_PRIMITIVE_I #define TEMP_PRIMITIVE_C TGSI_EXEC_TEMP_PRIMITIVE_C -#define TEMP_CC_I TGSI_EXEC_TEMP_CC_I -#define TEMP_CC_C TGSI_EXEC_TEMP_CC_C -#define TEMP_3_I TGSI_EXEC_TEMP_THREE_I -#define TEMP_3_C TGSI_EXEC_TEMP_THREE_C -#define TEMP_HALF_I TGSI_EXEC_TEMP_HALF_I -#define TEMP_HALF_C TGSI_EXEC_TEMP_HALF_C -#define TEMP_R0 TGSI_EXEC_TEMP_R0 -#define TEMP_P0 TGSI_EXEC_TEMP_P0 - -#define IS_CHANNEL_ENABLED(INST, CHAN)\ - ((INST).Dst[0].Register.WriteMask & (1 << (CHAN))) - -#define IS_CHANNEL_ENABLED2(INST, CHAN)\ - ((INST).Dst[1].Register.WriteMask & (1 << (CHAN))) - -#define FOR_EACH_ENABLED_CHANNEL(INST, CHAN)\ - for (CHAN = 0; CHAN < NUM_CHANNELS; CHAN++)\ - if (IS_CHANNEL_ENABLED( INST, CHAN )) - -#define FOR_EACH_ENABLED_CHANNEL2(INST, CHAN)\ - for (CHAN = 0; CHAN < NUM_CHANNELS; CHAN++)\ - if (IS_CHANNEL_ENABLED2( INST, CHAN )) /** The execution mask depends on the conditional mask and the loop mask */ @@ -511,6 +491,14 @@ static const union tgsi_exec_channel OneVec = { {1.0f, 1.0f, 1.0f, 1.0f} }; +static const union tgsi_exec_channel P128Vec = { + {128.0f, 128.0f, 128.0f, 128.0f} +}; + +static const union tgsi_exec_channel M128Vec = { + {-128.0f, -128.0f, -128.0f, -128.0f} +}; + /** * Assert that none of the float values in 'chan' are infinite or NaN. @@ -572,8 +560,6 @@ tgsi_exec_set_constant_buffers(struct tgsi_exec_machine *mach, } - - /** * Check if there's a potential src/dst register data dependency when * using SOA execution. @@ -607,18 +593,20 @@ tgsi_check_soa_dependencies(const struct tgsi_full_instruction *inst) inst->Dst[0].Register.File) && ((inst->Src[i].Register.Index == inst->Dst[0].Register.Index) || - inst->Src[i].Register.Indirect || - inst->Dst[0].Register.Indirect)) { + inst->Src[i].Register.Indirect || + inst->Dst[0].Register.Indirect)) { /* loop over dest channels */ uint channelsWritten = 0x0; - FOR_EACH_ENABLED_CHANNEL(*inst, chan) { - /* check if we're reading a channel that's been written */ - uint swizzle = tgsi_util_get_full_src_register_swizzle(&inst->Src[i], chan); - if (channelsWritten & (1 << swizzle)) { - return TRUE; - } + for (chan = 0; chan < NUM_CHANNELS; chan++) { + if (inst->Dst[0].Register.WriteMask & (1 << chan)) { + /* check if we're reading a channel that's been written */ + uint swizzle = tgsi_util_get_full_src_register_swizzle(&inst->Src[i], chan); + if (channelsWritten & (1 << swizzle)) { + return TRUE; + } - channelsWritten |= (1 << chan); + channelsWritten |= (1 << chan); + } } } } @@ -813,18 +801,18 @@ tgsi_exec_machine_create( void ) mach->MaxGeometryShaderOutputs = TGSI_MAX_TOTAL_VERTICES; mach->Predicates = &mach->Temps[TGSI_EXEC_TEMP_P0]; - /* Setup constants. */ + /* Setup constants needed by the SSE2 executor. */ for( i = 0; i < 4; i++ ) { - mach->Temps[TEMP_0_I].xyzw[TEMP_0_C].u[i] = 0x00000000; - mach->Temps[TEMP_7F_I].xyzw[TEMP_7F_C].u[i] = 0x7FFFFFFF; - mach->Temps[TEMP_80_I].xyzw[TEMP_80_C].u[i] = 0x80000000; - mach->Temps[TEMP_FF_I].xyzw[TEMP_FF_C].u[i] = 0xFFFFFFFF; - mach->Temps[TEMP_1_I].xyzw[TEMP_1_C].f[i] = 1.0f; - mach->Temps[TEMP_2_I].xyzw[TEMP_2_C].f[i] = 2.0f; - mach->Temps[TEMP_128_I].xyzw[TEMP_128_C].f[i] = 128.0f; - mach->Temps[TEMP_M128_I].xyzw[TEMP_M128_C].f[i] = -128.0f; - mach->Temps[TEMP_3_I].xyzw[TEMP_3_C].f[i] = 3.0f; - mach->Temps[TEMP_HALF_I].xyzw[TEMP_HALF_C].f[i] = 0.5f; + mach->Temps[TGSI_EXEC_TEMP_00000000_I].xyzw[TGSI_EXEC_TEMP_00000000_C].u[i] = 0x00000000; + mach->Temps[TGSI_EXEC_TEMP_7FFFFFFF_I].xyzw[TGSI_EXEC_TEMP_7FFFFFFF_C].u[i] = 0x7FFFFFFF; + mach->Temps[TGSI_EXEC_TEMP_80000000_I].xyzw[TGSI_EXEC_TEMP_80000000_C].u[i] = 0x80000000; + mach->Temps[TGSI_EXEC_TEMP_FFFFFFFF_I].xyzw[TGSI_EXEC_TEMP_FFFFFFFF_C].u[i] = 0xFFFFFFFF; /* not used */ + mach->Temps[TGSI_EXEC_TEMP_ONE_I].xyzw[TGSI_EXEC_TEMP_ONE_C].f[i] = 1.0f; + mach->Temps[TGSI_EXEC_TEMP_TWO_I].xyzw[TGSI_EXEC_TEMP_TWO_C].f[i] = 2.0f; /* not used */ + mach->Temps[TGSI_EXEC_TEMP_128_I].xyzw[TGSI_EXEC_TEMP_128_C].f[i] = 128.0f; + mach->Temps[TGSI_EXEC_TEMP_MINUS_128_I].xyzw[TGSI_EXEC_TEMP_MINUS_128_C].f[i] = -128.0f; + mach->Temps[TGSI_EXEC_TEMP_THREE_I].xyzw[TGSI_EXEC_TEMP_THREE_C].f[i] = 3.0f; + mach->Temps[TGSI_EXEC_TEMP_HALF_I].xyzw[TGSI_EXEC_TEMP_HALF_C].f[i] = 0.5f; } #ifdef DEBUG @@ -886,27 +874,35 @@ micro_div( } static void -micro_float_clamp(union tgsi_exec_channel *dst, - const union tgsi_exec_channel *src) +micro_rcc(union tgsi_exec_channel *dst, + const union tgsi_exec_channel *src) { uint i; for (i = 0; i < 4; i++) { - if (src->f[i] > 0.0f) { - if (src->f[i] > 1.884467e+019f) + float recip = 1.0f / src->f[i]; + + if (recip > 0.0f) { + if (recip > 1.884467e+019f) { dst->f[i] = 1.884467e+019f; - else if (src->f[i] < 5.42101e-020f) + } + else if (recip < 5.42101e-020f) { dst->f[i] = 5.42101e-020f; - else - dst->f[i] = src->f[i]; + } + else { + dst->f[i] = recip; + } } else { - if (src->f[i] < -1.884467e+019f) + if (recip < -1.884467e+019f) { dst->f[i] = -1.884467e+019f; - else if (src->f[i] > -5.42101e-020f) + } + else if (recip > -5.42101e-020f) { dst->f[i] = -5.42101e-020f; - else - dst->f[i] = src->f[i]; + } + else { + dst->f[i] = recip; + } } } } @@ -958,60 +954,6 @@ micro_mul(union tgsi_exec_channel *dst, dst->f[3] = src0->f[3] * src1->f[3]; } -#if 0 -static void -micro_imul64( - union tgsi_exec_channel *dst0, - union tgsi_exec_channel *dst1, - const union tgsi_exec_channel *src0, - const union tgsi_exec_channel *src1 ) -{ - dst1->i[0] = src0->i[0] * src1->i[0]; - dst1->i[1] = src0->i[1] * src1->i[1]; - dst1->i[2] = src0->i[2] * src1->i[2]; - dst1->i[3] = src0->i[3] * src1->i[3]; - dst0->i[0] = 0; - dst0->i[1] = 0; - dst0->i[2] = 0; - dst0->i[3] = 0; -} -#endif - -#if 0 -static void -micro_umul64( - union tgsi_exec_channel *dst0, - union tgsi_exec_channel *dst1, - const union tgsi_exec_channel *src0, - const union tgsi_exec_channel *src1 ) -{ - dst1->u[0] = src0->u[0] * src1->u[0]; - dst1->u[1] = src0->u[1] * src1->u[1]; - dst1->u[2] = src0->u[2] * src1->u[2]; - dst1->u[3] = src0->u[3] * src1->u[3]; - dst0->u[0] = 0; - dst0->u[1] = 0; - dst0->u[2] = 0; - dst0->u[3] = 0; -} -#endif - - -#if 0 -static void -micro_movc( - union tgsi_exec_channel *dst, - const union tgsi_exec_channel *src0, - const union tgsi_exec_channel *src1, - const union tgsi_exec_channel *src2 ) -{ - dst->u[0] = src0->u[0] ? src1->u[0] : src2->u[0]; - dst->u[1] = src0->u[1] ? src1->u[1] : src2->u[1]; - dst->u[2] = src0->u[2] ? src1->u[2] : src2->u[2]; - dst->u[3] = src0->u[3] ? src1->u[3] : src2->u[3]; -} -#endif - static void micro_neg( union tgsi_exec_channel *dst, @@ -1607,9 +1549,6 @@ store_dest(struct tgsi_exec_machine *mach, #define FETCH(VAL,INDEX,CHAN)\ fetch_source(mach, VAL, &inst->Src[INDEX], CHAN, TGSI_EXEC_DATA_FLOAT) -#define STORE(VAL,INDEX,CHAN)\ - store_dest(mach, VAL, &inst->Dst[INDEX], inst, CHAN, TGSI_EXEC_DATA_FLOAT) - /** * Execute ARB-style KIL which is predicated by a src register. @@ -1753,7 +1692,7 @@ exec_tex(struct tgsi_exec_machine *mach, union tgsi_exec_channel r[4]; const union tgsi_exec_channel *lod = &ZeroVec; enum tgsi_sampler_control control; - uint chan_index; + uint chan; if (modifier != TEX_MODIFIER_NONE) { FETCH(&r[3], 0, CHAN_W); @@ -1825,8 +1764,10 @@ exec_tex(struct tgsi_exec_machine *mach, assert(0); } - FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) { - STORE(&r[chan_index], 0, chan_index); + for (chan = 0; chan < NUM_CHANNELS; chan++) { + if (inst->Dst[0].Register.WriteMask & (1 << chan)) { + store_dest(mach, &r[chan], &inst->Dst[0], inst, chan, TGSI_EXEC_DATA_FLOAT); + } } } @@ -1836,7 +1777,7 @@ exec_txd(struct tgsi_exec_machine *mach, { const uint unit = inst->Src[3].Register.Index; union tgsi_exec_channel r[4]; - uint chan_index; + uint chan; /* * XXX: This is fake TXD -- the derivatives are not taken into account, yet. @@ -1886,8 +1827,10 @@ exec_txd(struct tgsi_exec_machine *mach, assert(0); } - FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) { - STORE(&r[chan_index], 0, chan_index); + for (chan = 0; chan < NUM_CHANNELS; chan++) { + if (inst->Dst[0].Register.WriteMask & (1 << chan)) { + store_dest(mach, &r[chan], &inst->Dst[0], inst, chan, TGSI_EXEC_DATA_FLOAT); + } } } @@ -2021,6 +1964,26 @@ exec_declaration(struct tgsi_exec_machine *mach, } } +typedef void (* micro_op)(union tgsi_exec_channel *dst); + +static void +exec_vector(struct tgsi_exec_machine *mach, + const struct tgsi_full_instruction *inst, + micro_op op, + enum tgsi_exec_datatype dst_datatype) +{ + unsigned int chan; + + for (chan = 0; chan < NUM_CHANNELS; chan++) { + if (inst->Dst[0].Register.WriteMask & (1 << chan)) { + union tgsi_exec_channel dst; + + op(&dst); + store_dest(mach, &dst, &inst->Dst[0], inst, chan, dst_datatype); + } + } +} + typedef void (* micro_unary_op)(union tgsi_exec_channel *dst, const union tgsi_exec_channel *src); @@ -2074,6 +2037,27 @@ typedef void (* micro_binary_op)(union tgsi_exec_channel *dst, const union tgsi_exec_channel *src1); static void +exec_scalar_binary(struct tgsi_exec_machine *mach, + const struct tgsi_full_instruction *inst, + micro_binary_op op, + enum tgsi_exec_datatype dst_datatype, + enum tgsi_exec_datatype src_datatype) +{ + unsigned int chan; + union tgsi_exec_channel src[2]; + union tgsi_exec_channel dst; + + fetch_source(mach, &src[0], &inst->Src[0], CHAN_X, src_datatype); + fetch_source(mach, &src[1], &inst->Src[1], CHAN_Y, src_datatype); + op(&dst, &src[0], &src[1]); + for (chan = 0; chan < NUM_CHANNELS; chan++) { + if (inst->Dst[0].Register.WriteMask & (1 << chan)) { + store_dest(mach, &dst, &inst->Dst[0], inst, chan, dst_datatype); + } + } +} + +static void exec_vector_binary(struct tgsi_exec_machine *mach, const struct tgsi_full_instruction *inst, micro_binary_op op, @@ -2320,6 +2304,289 @@ exec_nrm3(struct tgsi_exec_machine *mach, } static void +exec_scs(struct tgsi_exec_machine *mach, + const struct tgsi_full_instruction *inst) +{ + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_XY) { + union tgsi_exec_channel arg; + union tgsi_exec_channel result; + + fetch_source(mach, &arg, &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT); + + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) { + micro_cos(&result, &arg); + store_dest(mach, &result, &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) { + micro_sin(&result, &arg); + store_dest(mach, &result, &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT); + } + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) { + store_dest(mach, &ZeroVec, &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) { + store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT); + } +} + +static void +exec_x2d(struct tgsi_exec_machine *mach, + const struct tgsi_full_instruction *inst) +{ + union tgsi_exec_channel r[4]; + union tgsi_exec_channel d[2]; + + fetch_source(mach, &r[0], &inst->Src[1], CHAN_X, TGSI_EXEC_DATA_FLOAT); + fetch_source(mach, &r[1], &inst->Src[1], CHAN_Y, TGSI_EXEC_DATA_FLOAT); + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_XZ) { + fetch_source(mach, &r[2], &inst->Src[2], CHAN_X, TGSI_EXEC_DATA_FLOAT); + micro_mul(&r[2], &r[2], &r[0]); + fetch_source(mach, &r[3], &inst->Src[2], CHAN_Y, TGSI_EXEC_DATA_FLOAT); + micro_mul(&r[3], &r[3], &r[1]); + micro_add(&r[2], &r[2], &r[3]); + fetch_source(mach, &r[3], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT); + micro_add(&d[0], &r[2], &r[3]); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_YW) { + fetch_source(mach, &r[2], &inst->Src[2], CHAN_Z, TGSI_EXEC_DATA_FLOAT); + micro_mul(&r[2], &r[2], &r[0]); + fetch_source(mach, &r[3], &inst->Src[2], CHAN_W, TGSI_EXEC_DATA_FLOAT); + micro_mul(&r[3], &r[3], &r[1]); + micro_add(&r[2], &r[2], &r[3]); + fetch_source(mach, &r[3], &inst->Src[0], CHAN_Y, TGSI_EXEC_DATA_FLOAT); + micro_add(&d[1], &r[2], &r[3]); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) { + store_dest(mach, &d[0], &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) { + store_dest(mach, &d[1], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) { + store_dest(mach, &d[0], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) { + store_dest(mach, &d[1], &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT); + } +} + +static void +exec_rfl(struct tgsi_exec_machine *mach, + const struct tgsi_full_instruction *inst) +{ + union tgsi_exec_channel r[9]; + + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_XYZ) { + /* r0 = dp3(src0, src0) */ + fetch_source(mach, &r[2], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT); + micro_mul(&r[0], &r[2], &r[2]); + fetch_source(mach, &r[4], &inst->Src[0], CHAN_Y, TGSI_EXEC_DATA_FLOAT); + micro_mul(&r[8], &r[4], &r[4]); + micro_add(&r[0], &r[0], &r[8]); + fetch_source(mach, &r[6], &inst->Src[0], CHAN_Z, TGSI_EXEC_DATA_FLOAT); + micro_mul(&r[8], &r[6], &r[6]); + micro_add(&r[0], &r[0], &r[8]); + + /* r1 = dp3(src0, src1) */ + fetch_source(mach, &r[3], &inst->Src[1], CHAN_X, TGSI_EXEC_DATA_FLOAT); + micro_mul(&r[1], &r[2], &r[3]); + fetch_source(mach, &r[5], &inst->Src[1], CHAN_Y, TGSI_EXEC_DATA_FLOAT); + micro_mul(&r[8], &r[4], &r[5]); + micro_add(&r[1], &r[1], &r[8]); + fetch_source(mach, &r[7], &inst->Src[1], CHAN_Z, TGSI_EXEC_DATA_FLOAT); + micro_mul(&r[8], &r[6], &r[7]); + micro_add(&r[1], &r[1], &r[8]); + + /* r1 = 2 * r1 / r0 */ + micro_add(&r[1], &r[1], &r[1]); + micro_div(&r[1], &r[1], &r[0]); + + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) { + micro_mul(&r[2], &r[2], &r[1]); + micro_sub(&r[2], &r[2], &r[3]); + store_dest(mach, &r[2], &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) { + micro_mul(&r[4], &r[4], &r[1]); + micro_sub(&r[4], &r[4], &r[5]); + store_dest(mach, &r[4], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) { + micro_mul(&r[6], &r[6], &r[1]); + micro_sub(&r[6], &r[6], &r[7]); + store_dest(mach, &r[6], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT); + } + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) { + store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT); + } +} + +static void +exec_xpd(struct tgsi_exec_machine *mach, + const struct tgsi_full_instruction *inst) +{ + union tgsi_exec_channel r[6]; + union tgsi_exec_channel d[3]; + + fetch_source(mach, &r[0], &inst->Src[0], CHAN_Y, TGSI_EXEC_DATA_FLOAT); + fetch_source(mach, &r[1], &inst->Src[1], CHAN_Z, TGSI_EXEC_DATA_FLOAT); + + micro_mul(&r[2], &r[0], &r[1]); + + fetch_source(mach, &r[3], &inst->Src[0], CHAN_Z, TGSI_EXEC_DATA_FLOAT); + fetch_source(mach, &r[4], &inst->Src[1], CHAN_Y, TGSI_EXEC_DATA_FLOAT); + + micro_mul(&r[5], &r[3], &r[4] ); + micro_sub(&d[CHAN_X], &r[2], &r[5]); + + fetch_source(mach, &r[2], &inst->Src[1], CHAN_X, TGSI_EXEC_DATA_FLOAT); + + micro_mul(&r[3], &r[3], &r[2]); + + fetch_source(mach, &r[5], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT); + + micro_mul(&r[1], &r[1], &r[5]); + micro_sub(&d[CHAN_Y], &r[3], &r[1]); + + micro_mul(&r[5], &r[5], &r[4]); + micro_mul(&r[0], &r[0], &r[2]); + micro_sub(&d[CHAN_Z], &r[5], &r[0]); + + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) { + store_dest(mach, &d[CHAN_X], &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) { + store_dest(mach, &d[CHAN_Y], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) { + store_dest(mach, &d[CHAN_Z], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) { + store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT); + } +} + +static void +exec_dst(struct tgsi_exec_machine *mach, + const struct tgsi_full_instruction *inst) +{ + union tgsi_exec_channel r[2]; + union tgsi_exec_channel d[4]; + + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) { + fetch_source(mach, &r[0], &inst->Src[0], CHAN_Y, TGSI_EXEC_DATA_FLOAT); + fetch_source(mach, &r[1], &inst->Src[1], CHAN_Y, TGSI_EXEC_DATA_FLOAT); + micro_mul(&d[CHAN_Y], &r[0], &r[1]); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) { + fetch_source(mach, &d[CHAN_Z], &inst->Src[0], CHAN_Z, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) { + fetch_source(mach, &d[CHAN_W], &inst->Src[1], CHAN_W, TGSI_EXEC_DATA_FLOAT); + } + + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) { + store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) { + store_dest(mach, &d[CHAN_Y], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) { + store_dest(mach, &d[CHAN_Z], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) { + store_dest(mach, &d[CHAN_W], &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT); + } +} + +static void +exec_log(struct tgsi_exec_machine *mach, + const struct tgsi_full_instruction *inst) +{ + union tgsi_exec_channel r[3]; + + fetch_source(mach, &r[0], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT); + micro_abs(&r[2], &r[0]); /* r2 = abs(r0) */ + micro_lg2(&r[1], &r[2]); /* r1 = lg2(r2) */ + micro_flr(&r[0], &r[1]); /* r0 = floor(r1) */ + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) { + store_dest(mach, &r[0], &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) { + micro_exp2(&r[0], &r[0]); /* r0 = 2 ^ r0 */ + micro_div(&r[0], &r[2], &r[0]); /* r0 = r2 / r0 */ + store_dest(mach, &r[0], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) { + store_dest(mach, &r[1], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) { + store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT); + } +} + +static void +exec_exp(struct tgsi_exec_machine *mach, + const struct tgsi_full_instruction *inst) +{ + union tgsi_exec_channel r[3]; + + fetch_source(mach, &r[0], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT); + micro_flr(&r[1], &r[0]); /* r1 = floor(r0) */ + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) { + micro_exp2(&r[2], &r[1]); /* r2 = 2 ^ r1 */ + store_dest(mach, &r[2], &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) { + micro_sub(&r[2], &r[0], &r[1]); /* r2 = r0 - r1 */ + store_dest(mach, &r[2], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) { + micro_exp2(&r[2], &r[0]); /* r2 = 2 ^ r0 */ + store_dest(mach, &r[2], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) { + store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT); + } +} + +static void +exec_lit(struct tgsi_exec_machine *mach, + const struct tgsi_full_instruction *inst) +{ + union tgsi_exec_channel r[3]; + union tgsi_exec_channel d[3]; + + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) { + store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT); + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_YZ) { + fetch_source(mach, &r[0], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT); + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) { + micro_max(&d[CHAN_Y], &r[0], &ZeroVec); + store_dest(mach, &d[CHAN_Y], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT); + } + + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) { + fetch_source(mach, &r[1], &inst->Src[0], CHAN_Y, TGSI_EXEC_DATA_FLOAT); + micro_max(&r[1], &r[1], &ZeroVec); + + fetch_source(mach, &r[2], &inst->Src[0], CHAN_W, TGSI_EXEC_DATA_FLOAT); + micro_min(&r[2], &r[2], &P128Vec); + micro_max(&r[2], &r[2], &M128Vec); + micro_pow(&r[1], &r[1], &r[2]); + micro_lt(&d[CHAN_Z], &ZeroVec, &r[0], &r[1], &ZeroVec); + store_dest(mach, &d[CHAN_Z], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT); + } + } + if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) { + store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT); + } +} + +static void exec_break(struct tgsi_exec_machine *mach) { if (mach->BreakType == TGSI_EXEC_BREAK_INSIDE_LOOP) { @@ -2702,9 +2969,7 @@ exec_instruction( const struct tgsi_full_instruction *inst, int *pc ) { - uint chan_index; union tgsi_exec_channel r[10]; - union tgsi_exec_channel d[8]; (*pc)++; @@ -2718,36 +2983,7 @@ exec_instruction( break; case TGSI_OPCODE_LIT: - if (IS_CHANNEL_ENABLED( *inst, CHAN_Y ) || IS_CHANNEL_ENABLED( *inst, CHAN_Z )) { - FETCH( &r[0], 0, CHAN_X ); - if (IS_CHANNEL_ENABLED( *inst, CHAN_Y )) { - micro_max(&d[CHAN_Y], &r[0], &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C]); - } - - if (IS_CHANNEL_ENABLED( *inst, CHAN_Z )) { - FETCH( &r[1], 0, CHAN_Y ); - micro_max( &r[1], &r[1], &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C] ); - - FETCH( &r[2], 0, CHAN_W ); - micro_min( &r[2], &r[2], &mach->Temps[TEMP_128_I].xyzw[TEMP_128_C] ); - micro_max( &r[2], &r[2], &mach->Temps[TEMP_M128_I].xyzw[TEMP_M128_C] ); - micro_pow( &r[1], &r[1], &r[2] ); - micro_lt(&d[CHAN_Z], &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C], &r[0], &r[1], &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C]); - } - - if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) { - STORE(&d[CHAN_Y], 0, CHAN_Y); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Z)) { - STORE(&d[CHAN_Z], 0, CHAN_Z); - } - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_X )) { - STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_X ); - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_W )) { - STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W ); - } + exec_lit(mach, inst); break; case TGSI_OPCODE_RCP: @@ -2759,44 +2995,11 @@ exec_instruction( break; case TGSI_OPCODE_EXP: - FETCH( &r[0], 0, CHAN_X ); - micro_flr( &r[1], &r[0] ); /* r1 = floor(r0) */ - if (IS_CHANNEL_ENABLED( *inst, CHAN_X )) { - micro_exp2( &r[2], &r[1] ); /* r2 = 2 ^ r1 */ - STORE( &r[2], 0, CHAN_X ); /* store r2 */ - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_Y )) { - micro_sub( &r[2], &r[0], &r[1] ); /* r2 = r0 - r1 */ - STORE( &r[2], 0, CHAN_Y ); /* store r2 */ - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_Z )) { - micro_exp2( &r[2], &r[0] ); /* r2 = 2 ^ r0 */ - STORE( &r[2], 0, CHAN_Z ); /* store r2 */ - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_W )) { - STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W ); - } + exec_exp(mach, inst); break; case TGSI_OPCODE_LOG: - FETCH( &r[0], 0, CHAN_X ); - micro_abs( &r[2], &r[0] ); /* r2 = abs(r0) */ - micro_lg2( &r[1], &r[2] ); /* r1 = lg2(r2) */ - micro_flr( &r[0], &r[1] ); /* r0 = floor(r1) */ - if (IS_CHANNEL_ENABLED( *inst, CHAN_X )) { - STORE( &r[0], 0, CHAN_X ); - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_Y )) { - micro_exp2( &r[0], &r[0] ); /* r0 = 2 ^ r0 */ - micro_div( &r[0], &r[2], &r[0] ); /* r0 = r2 / r0 */ - STORE( &r[0], 0, CHAN_Y ); - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_Z )) { - STORE( &r[1], 0, CHAN_Z ); - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_W )) { - STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W ); - } + exec_log(mach, inst); break; case TGSI_OPCODE_MUL: @@ -2816,30 +3019,7 @@ exec_instruction( break; case TGSI_OPCODE_DST: - if (IS_CHANNEL_ENABLED( *inst, CHAN_Y )) { - FETCH( &r[0], 0, CHAN_Y ); - FETCH( &r[1], 1, CHAN_Y); - micro_mul(&d[CHAN_Y], &r[0], &r[1]); - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_Z )) { - FETCH(&d[CHAN_Z], 0, CHAN_Z); - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_W )) { - FETCH(&d[CHAN_W], 1, CHAN_W); - } - - if (IS_CHANNEL_ENABLED(*inst, CHAN_X)) { - STORE(&mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_X); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) { - STORE(&d[CHAN_Y], 0, CHAN_Y); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Z)) { - STORE(&d[CHAN_Z], 0, CHAN_Z); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_W)) { - STORE(&d[CHAN_W], 0, CHAN_W); - } + exec_dst(mach, inst); break; case TGSI_OPCODE_MIN: @@ -2903,53 +3083,11 @@ exec_instruction( break; case TGSI_OPCODE_POW: - FETCH(&r[0], 0, CHAN_X); - FETCH(&r[1], 1, CHAN_X); - - micro_pow( &r[0], &r[0], &r[1] ); - - FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) { - STORE( &r[0], 0, chan_index ); - } + exec_scalar_binary(mach, inst, micro_pow, TGSI_EXEC_DATA_FLOAT, TGSI_EXEC_DATA_FLOAT); break; case TGSI_OPCODE_XPD: - FETCH(&r[0], 0, CHAN_Y); - FETCH(&r[1], 1, CHAN_Z); - - micro_mul( &r[2], &r[0], &r[1] ); - - FETCH(&r[3], 0, CHAN_Z); - FETCH(&r[4], 1, CHAN_Y); - - micro_mul( &r[5], &r[3], &r[4] ); - micro_sub(&d[CHAN_X], &r[2], &r[5]); - - FETCH(&r[2], 1, CHAN_X); - - micro_mul( &r[3], &r[3], &r[2] ); - - FETCH(&r[5], 0, CHAN_X); - - micro_mul( &r[1], &r[1], &r[5] ); - micro_sub(&d[CHAN_Y], &r[3], &r[1]); - - micro_mul( &r[5], &r[5], &r[4] ); - micro_mul( &r[0], &r[0], &r[2] ); - micro_sub(&d[CHAN_Z], &r[5], &r[0]); - - if (IS_CHANNEL_ENABLED(*inst, CHAN_X)) { - STORE(&d[CHAN_X], 0, CHAN_X); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) { - STORE(&d[CHAN_Y], 0, CHAN_Y); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Z)) { - STORE(&d[CHAN_Z], 0, CHAN_Z); - } - if (IS_CHANNEL_ENABLED( *inst, CHAN_W )) { - STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W ); - } + exec_xpd(mach, inst); break; case TGSI_OPCODE_ABS: @@ -2957,12 +3095,7 @@ exec_instruction( break; case TGSI_OPCODE_RCC: - FETCH(&r[0], 0, CHAN_X); - micro_div(&r[0], &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], &r[0]); - micro_float_clamp(&r[0], &r[0]); - FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) { - STORE(&r[0], 0, chan_index); - } + exec_scalar_unary(mach, inst, micro_rcc, TGSI_EXEC_DATA_FLOAT, TGSI_EXEC_DATA_FLOAT); break; case TGSI_OPCODE_DPH: @@ -3006,52 +3139,7 @@ exec_instruction( break; case TGSI_OPCODE_RFL: - if (IS_CHANNEL_ENABLED(*inst, CHAN_X) || - IS_CHANNEL_ENABLED(*inst, CHAN_Y) || - IS_CHANNEL_ENABLED(*inst, CHAN_Z)) { - /* r0 = dp3(src0, src0) */ - FETCH(&r[2], 0, CHAN_X); - micro_mul(&r[0], &r[2], &r[2]); - FETCH(&r[4], 0, CHAN_Y); - micro_mul(&r[8], &r[4], &r[4]); - micro_add(&r[0], &r[0], &r[8]); - FETCH(&r[6], 0, CHAN_Z); - micro_mul(&r[8], &r[6], &r[6]); - micro_add(&r[0], &r[0], &r[8]); - - /* r1 = dp3(src0, src1) */ - FETCH(&r[3], 1, CHAN_X); - micro_mul(&r[1], &r[2], &r[3]); - FETCH(&r[5], 1, CHAN_Y); - micro_mul(&r[8], &r[4], &r[5]); - micro_add(&r[1], &r[1], &r[8]); - FETCH(&r[7], 1, CHAN_Z); - micro_mul(&r[8], &r[6], &r[7]); - micro_add(&r[1], &r[1], &r[8]); - - /* r1 = 2 * r1 / r0 */ - micro_add(&r[1], &r[1], &r[1]); - micro_div(&r[1], &r[1], &r[0]); - - if (IS_CHANNEL_ENABLED(*inst, CHAN_X)) { - micro_mul(&r[2], &r[2], &r[1]); - micro_sub(&r[2], &r[2], &r[3]); - STORE(&r[2], 0, CHAN_X); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) { - micro_mul(&r[4], &r[4], &r[1]); - micro_sub(&r[4], &r[4], &r[5]); - STORE(&r[4], 0, CHAN_Y); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Z)) { - micro_mul(&r[6], &r[6], &r[1]); - micro_sub(&r[6], &r[6], &r[7]); - STORE(&r[6], 0, CHAN_Z); - } - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_W)) { - STORE(&mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W); - } + exec_rfl(mach, inst); break; case TGSI_OPCODE_SEQ: @@ -3059,9 +3147,7 @@ exec_instruction( break; case TGSI_OPCODE_SFL: - FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) { - STORE(&mach->Temps[TEMP_0_I].xyzw[TEMP_0_C], 0, chan_index); - } + exec_vector(mach, inst, micro_sfl, TGSI_EXEC_DATA_FLOAT); break; case TGSI_OPCODE_SGT: @@ -3081,9 +3167,7 @@ exec_instruction( break; case TGSI_OPCODE_STR: - FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) { - STORE(&mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, chan_index); - } + exec_vector(mach, inst, micro_str, TGSI_EXEC_DATA_FLOAT); break; case TGSI_OPCODE_TEX: @@ -3140,42 +3224,7 @@ exec_instruction( break; case TGSI_OPCODE_X2D: - FETCH(&r[0], 1, CHAN_X); - FETCH(&r[1], 1, CHAN_Y); - if (IS_CHANNEL_ENABLED(*inst, CHAN_X) || - IS_CHANNEL_ENABLED(*inst, CHAN_Z)) { - FETCH(&r[2], 2, CHAN_X); - micro_mul(&r[2], &r[2], &r[0]); - FETCH(&r[3], 2, CHAN_Y); - micro_mul(&r[3], &r[3], &r[1]); - micro_add(&r[2], &r[2], &r[3]); - FETCH(&r[3], 0, CHAN_X); - micro_add(&d[CHAN_X], &r[2], &r[3]); - - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Y) || - IS_CHANNEL_ENABLED(*inst, CHAN_W)) { - FETCH(&r[2], 2, CHAN_Z); - micro_mul(&r[2], &r[2], &r[0]); - FETCH(&r[3], 2, CHAN_W); - micro_mul(&r[3], &r[3], &r[1]); - micro_add(&r[2], &r[2], &r[3]); - FETCH(&r[3], 0, CHAN_Y); - micro_add(&d[CHAN_Y], &r[2], &r[3]); - - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_X)) { - STORE(&d[CHAN_X], 0, CHAN_X); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) { - STORE(&d[CHAN_Y], 0, CHAN_Y); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Z)) { - STORE(&d[CHAN_X], 0, CHAN_Z); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_W)) { - STORE(&d[CHAN_Y], 0, CHAN_W); - } + exec_x2d(mach, inst); break; case TGSI_OPCODE_ARA: @@ -3283,23 +3332,7 @@ exec_instruction( break; case TGSI_OPCODE_SCS: - if( IS_CHANNEL_ENABLED( *inst, CHAN_X ) || IS_CHANNEL_ENABLED( *inst, CHAN_Y ) ) { - FETCH( &r[0], 0, CHAN_X ); - if (IS_CHANNEL_ENABLED(*inst, CHAN_X)) { - micro_cos(&r[1], &r[0]); - STORE(&r[1], 0, CHAN_X); - } - if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) { - micro_sin(&r[1], &r[0]); - STORE(&r[1], 0, CHAN_Y); - } - } - if( IS_CHANNEL_ENABLED( *inst, CHAN_Z ) ) { - STORE( &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C], 0, CHAN_Z ); - } - if( IS_CHANNEL_ENABLED( *inst, CHAN_W ) ) { - STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W ); - } + exec_scs(mach, inst); break; case TGSI_OPCODE_NRM: @@ -3684,14 +3717,6 @@ tgsi_exec_machine_run( struct tgsi_exec_machine *mach ) mach->Primitives[0] = 0; } - for (i = 0; i < QUAD_SIZE; i++) { - mach->Temps[TEMP_CC_I].xyzw[TEMP_CC_C].u[i] = - (TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_X_SHIFT) | - (TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_Y_SHIFT) | - (TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_Z_SHIFT) | - (TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_W_SHIFT); - } - /* execute declarations (interpolants) */ for (i = 0; i < mach->NumDeclarations; i++) { exec_declaration( mach, mach->Declarations+i ); diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h b/src/gallium/auxiliary/tgsi/tgsi_exec.h index 9d62c1d7e7..7b07778601 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.h +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h @@ -131,34 +131,15 @@ struct tgsi_sampler #define TGSI_EXEC_TEMP_PRIMITIVE_I (TGSI_EXEC_NUM_TEMPS + 2) #define TGSI_EXEC_TEMP_PRIMITIVE_C 2 -/* NVIDIA condition code (CC) vector - */ -#define TGSI_EXEC_CC_GT 0x01 -#define TGSI_EXEC_CC_EQ 0x02 -#define TGSI_EXEC_CC_LT 0x04 -#define TGSI_EXEC_CC_UN 0x08 - -#define TGSI_EXEC_CC_X_MASK 0x000000ff -#define TGSI_EXEC_CC_X_SHIFT 0 -#define TGSI_EXEC_CC_Y_MASK 0x0000ff00 -#define TGSI_EXEC_CC_Y_SHIFT 8 -#define TGSI_EXEC_CC_Z_MASK 0x00ff0000 -#define TGSI_EXEC_CC_Z_SHIFT 16 -#define TGSI_EXEC_CC_W_MASK 0xff000000 -#define TGSI_EXEC_CC_W_SHIFT 24 - -#define TGSI_EXEC_TEMP_CC_I (TGSI_EXEC_NUM_TEMPS + 2) -#define TGSI_EXEC_TEMP_CC_C 3 - -#define TGSI_EXEC_TEMP_THREE_I (TGSI_EXEC_NUM_TEMPS + 3) -#define TGSI_EXEC_TEMP_THREE_C 0 +#define TGSI_EXEC_TEMP_THREE_I (TGSI_EXEC_NUM_TEMPS + 2) +#define TGSI_EXEC_TEMP_THREE_C 3 #define TGSI_EXEC_TEMP_HALF_I (TGSI_EXEC_NUM_TEMPS + 3) -#define TGSI_EXEC_TEMP_HALF_C 1 +#define TGSI_EXEC_TEMP_HALF_C 0 /* execution mask, each value is either 0 or ~0 */ #define TGSI_EXEC_MASK_I (TGSI_EXEC_NUM_TEMPS + 3) -#define TGSI_EXEC_MASK_C 2 +#define TGSI_EXEC_MASK_C 1 /* 4 register buffer for various purposes */ #define TGSI_EXEC_TEMP_R0 (TGSI_EXEC_NUM_TEMPS + 4) @@ -402,6 +383,11 @@ tgsi_exec_get_shader_param(enum pipe_shader_cap param) return TGSI_EXEC_NUM_PREDS; case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 1; default: return 0; } diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c index b01d2ff468..9a38c37979 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_text.c +++ b/src/gallium/auxiliary/tgsi/tgsi_text.c @@ -1007,7 +1007,8 @@ static const char *semantic_names[TGSI_SEMANTIC_COUNT] = "FACE", "EDGEFLAG", "PRIM_ID", - "INSTANCEID" + "INSTANCEID", + "STENCIL" }; static const char *interpolate_names[TGSI_INTERPOLATE_COUNT] = diff --git a/src/gallium/auxiliary/translate/translate.h b/src/gallium/auxiliary/translate/translate.h index a75380228b..850ef39ef2 100644 --- a/src/gallium/auxiliary/translate/translate.h +++ b/src/gallium/auxiliary/translate/translate.h @@ -68,6 +68,33 @@ struct translate_key { }; +struct translate; + + +typedef void (PIPE_CDECL *run_elts_func)(struct translate *, + const unsigned *elts, + unsigned count, + unsigned instance_id, + void *output_buffer); + +typedef void (PIPE_CDECL *run_elts16_func)(struct translate *, + const uint16_t *elts, + unsigned count, + unsigned instance_id, + void *output_buffer); + +typedef void (PIPE_CDECL *run_elts8_func)(struct translate *, + const uint8_t *elts, + unsigned count, + unsigned instance_id, + void *output_buffer); + +typedef void (PIPE_CDECL *run_func)(struct translate *, + unsigned start, + unsigned count, + unsigned instance_id, + void *output_buffer); + struct translate { struct translate_key key; @@ -79,42 +106,14 @@ struct translate { unsigned stride, unsigned max_index ); - void (PIPE_CDECL *run_elts)( struct translate *, - const unsigned *elts, - unsigned count, - unsigned instance_id, - void *output_buffer); - - void (PIPE_CDECL *run_elts16)( struct translate *, - const uint16_t *elts, - unsigned count, - unsigned instance_id, - void *output_buffer); - - void (PIPE_CDECL *run_elts8)( struct translate *, - const uint8_t *elts, - unsigned count, - unsigned instance_id, - void *output_buffer); - - void (PIPE_CDECL *run)( struct translate *, - unsigned start, - unsigned count, - unsigned instance_id, - void *output_buffer); + run_elts_func run_elts; + run_elts16_func run_elts16; + run_elts8_func run_elts8; + run_func run; }; -#if 0 -struct translate_context *translate_context_create( void ); -void translate_context_destroy( struct translate_context * ); - -struct translate *translate_lookup_or_create( struct translate_context *tctx, - const struct translate_key *key ); -#endif - - struct translate *translate_create( const struct translate_key *key ); boolean translate_is_output_format_supported(enum pipe_format format); diff --git a/src/gallium/auxiliary/translate/translate_sse.c b/src/gallium/auxiliary/translate/translate_sse.c index f8bf5b4669..ef7f4be4c3 100644 --- a/src/gallium/auxiliary/translate/translate_sse.c +++ b/src/gallium/auxiliary/translate/translate_sse.c @@ -1495,19 +1495,19 @@ struct translate *translate_sse2_create( const struct translate_key *key ) if (!build_vertex_emit(p, &p->elt8_func, 1)) goto fail; - p->translate.run = (void*)x86_get_func(&p->linear_func); + p->translate.run = (run_func) x86_get_func(&p->linear_func); if (p->translate.run == NULL) goto fail; - p->translate.run_elts = (void*)x86_get_func(&p->elt_func); + p->translate.run_elts = (run_elts_func) x86_get_func(&p->elt_func); if (p->translate.run_elts == NULL) goto fail; - p->translate.run_elts16 = (void*)x86_get_func(&p->elt16_func); + p->translate.run_elts16 = (run_elts16_func) x86_get_func(&p->elt16_func); if (p->translate.run_elts16 == NULL) goto fail; - p->translate.run_elts8 = (void*)x86_get_func(&p->elt8_func); + p->translate.run_elts8 = (run_elts8_func) x86_get_func(&p->elt8_func); if (p->translate.run_elts8 == NULL) goto fail; diff --git a/src/gallium/auxiliary/util/u_dl.c b/src/gallium/auxiliary/util/u_dl.c index 220860ebf4..aca435d6ca 100644 --- a/src/gallium/auxiliary/util/u_dl.c +++ b/src/gallium/auxiliary/util/u_dl.c @@ -38,6 +38,7 @@ #endif #include "u_dl.h" +#include "u_pointer.h" struct util_dl_library * @@ -58,7 +59,7 @@ util_dl_get_proc_address(struct util_dl_library *library, const char *procname) { #if defined(PIPE_OS_UNIX) - return (util_dl_proc)dlsym((void *)library, procname); + return (util_dl_proc) pointer_to_func(dlsym((void *)library, procname)); #elif defined(PIPE_OS_WINDOWS) return (util_dl_proc)GetProcAddress((HMODULE)library, procname); #else diff --git a/src/gallium/auxiliary/util/u_format_srgb.py b/src/gallium/auxiliary/util/u_format_srgb.py index 3e8000f368..cd63ae7891 100644 --- a/src/gallium/auxiliary/util/u_format_srgb.py +++ b/src/gallium/auxiliary/util/u_format_srgb.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -''' +CopyRight = ''' /************************************************************************** * * Copyright 2010 VMware, Inc. @@ -89,7 +89,7 @@ def main(): print '/* This file is autogenerated by u_format_srgb.py. Do not edit directly. */' print # This will print the copyright message on the top of this file - print __doc__.strip() + print CopyRight.strip() print print '#include "u_format_srgb.h"' print diff --git a/src/gallium/auxiliary/util/u_format_table.py b/src/gallium/auxiliary/util/u_format_table.py index f0b407b8b8..8cc22a5637 100755 --- a/src/gallium/auxiliary/util/u_format_table.py +++ b/src/gallium/auxiliary/util/u_format_table.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -''' +CopyRight = ''' /************************************************************************** * * Copyright 2010 VMware, Inc. @@ -83,7 +83,7 @@ def write_format_table(formats): print '/* This file is autogenerated by u_format_table.py from u_format.csv. Do not edit directly. */' print # This will print the copyright message on the top of this file - print __doc__.strip() + print CopyRight.strip() print print '#include "u_format.h"' print '#include "u_format_s3tc.h"' diff --git a/src/gallium/drivers/failover/SConscript b/src/gallium/drivers/failover/SConscript index f8e9b1b491..9347431f4e 100644 --- a/src/gallium/drivers/failover/SConscript +++ b/src/gallium/drivers/failover/SConscript @@ -10,4 +10,6 @@ failover = env.ConvenienceLibrary( 'fo_context.c', ]) +env.Alias('failover', failover) + Export('failover') diff --git a/src/gallium/drivers/galahad/SConscript b/src/gallium/drivers/galahad/SConscript index b398a3f061..3f39f99e51 100644 --- a/src/gallium/drivers/galahad/SConscript +++ b/src/gallium/drivers/galahad/SConscript @@ -3,11 +3,13 @@ Import('*') env = env.Clone() galahad = env.ConvenienceLibrary( - target = 'identity', + target = 'galahad', source = [ 'glhd_context.c', 'glhd_objects.c', 'glhd_screen.c', ]) +env.Alias('galahad', galahad) + Export('galahad') diff --git a/src/gallium/drivers/i915/SConscript b/src/gallium/drivers/i915/SConscript index d4bf6fef13..8f5deed64a 100644 --- a/src/gallium/drivers/i915/SConscript +++ b/src/gallium/drivers/i915/SConscript @@ -2,10 +2,6 @@ Import('*') env = env.Clone() -if msvc: - print 'warning: not building i915g' - Return() - i915 = env.ConvenienceLibrary( target = 'i915', source = [ @@ -34,4 +30,6 @@ i915 = env.ConvenienceLibrary( 'i915_resource_texture.c', ]) +env.Alias('i915', i915) + Export('i915') diff --git a/src/gallium/drivers/i915/i915_reg.h b/src/gallium/drivers/i915/i915_reg.h index 04620fec68..cc28891e4a 100644 --- a/src/gallium/drivers/i915/i915_reg.h +++ b/src/gallium/drivers/i915/i915_reg.h @@ -973,6 +973,8 @@ #define PCI_CHIP_G33_G 0x29C2 #define PCI_CHIP_Q35_G 0x29B2 #define PCI_CHIP_Q33_G 0x29D2 +#define PCI_CHIP_PINEVIEW_G 0xA001 +#define PCI_CHIP_PINEVIEW_M 0xA011 #endif diff --git a/src/gallium/drivers/i915/i915_resource.h b/src/gallium/drivers/i915/i915_resource.h index 1093e8f41f..753bd266b1 100644 --- a/src/gallium/drivers/i915/i915_resource.h +++ b/src/gallium/drivers/i915/i915_resource.h @@ -32,6 +32,7 @@ struct i915_screen; #include "util/u_transfer.h" #include "util/u_debug.h" +#include "i915_winsys.h" struct i915_context; @@ -52,13 +53,12 @@ struct i915_buffer { struct i915_texture { struct u_resource b; + /* tiling flags */ + enum i915_winsys_buffer_tile tiling; unsigned stride; unsigned depth_stride; /* per-image on i945? */ unsigned total_nblocksy; - unsigned sw_tiled; /**< tiled with software flags */ - unsigned hw_tiled; /**< tiled with hardware fences */ - unsigned nr_images[I915_MAX_TEXTURE_2D_LEVELS]; /* Explicitly store the offset of each image for each cube face or diff --git a/src/gallium/drivers/i915/i915_resource_texture.c b/src/gallium/drivers/i915/i915_resource_texture.c index c5c6179b16..d45346b32a 100644 --- a/src/gallium/drivers/i915/i915_resource_texture.c +++ b/src/gallium/drivers/i915/i915_resource_texture.c @@ -165,7 +165,7 @@ i9x5_scanout_layout(struct i915_texture *tex) if (pt->width0 >= 240) { tex->stride = get_pot_stride(pt->format, pt->width0); tex->total_nblocksy = align_nblocksy(pt->format, pt->height0, 8); - tex->hw_tiled = I915_TILE_X; + tex->tiling = I915_TILE_X; } else if (pt->width0 == 64 && pt->height0 == 64) { tex->stride = get_pot_stride(pt->format, pt->width0); tex->total_nblocksy = align_nblocksy(pt->format, pt->height0, 8); @@ -202,7 +202,7 @@ i9x5_display_target_layout(struct i915_texture *tex) tex->stride = get_pot_stride(pt->format, pt->width0); tex->total_nblocksy = align_nblocksy(pt->format, pt->height0, 8); - tex->hw_tiled = I915_TILE_X; + tex->tiling = I915_TILE_X; #if DEBUG_TEXTURE debug_printf("%s size: %d,%d,%d offset %d,%d (0x%x)\n", __FUNCTION__, @@ -790,9 +790,8 @@ i915_texture_create(struct pipe_screen *screen, goto fail; /* setup any hw fences */ - if (tex->hw_tiled) { - assert(tex->sw_tiled == I915_TILE_NONE); - iws->buffer_set_fence_reg(iws, tex->buffer, tex->stride, tex->hw_tiled); + if (tex->tiling) { + iws->buffer_set_fence_reg(iws, tex->buffer, tex->stride, tex->tiling); } diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c index a3e7c5c577..0718325364 100644 --- a/src/gallium/drivers/i915/i915_screen.c +++ b/src/gallium/drivers/i915/i915_screen.c @@ -83,6 +83,12 @@ i915_get_name(struct pipe_screen *screen) case PCI_CHIP_Q33_G: chipset = "Q33"; break; + case PCI_CHIP_PINEVIEW_G: + chipset = "Pineview G"; + break; + case PCI_CHIP_PINEVIEW_M: + chipset = "Pineview M"; + break; default: chipset = "unknown"; break; @@ -178,6 +184,11 @@ i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_sha return 0; case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 0; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 1; default: assert(0); return 0; @@ -220,10 +231,6 @@ i915_is_format_supported(struct pipe_screen *screen, static const enum pipe_format tex_supported[] = { PIPE_FORMAT_B8G8R8A8_UNORM, PIPE_FORMAT_B8G8R8X8_UNORM, - PIPE_FORMAT_R8G8B8A8_UNORM, -#if 0 - PIPE_FORMAT_R8G8B8X8_UNORM, -#endif PIPE_FORMAT_B5G6R5_UNORM, PIPE_FORMAT_L8_UNORM, PIPE_FORMAT_A8_UNORM, @@ -346,6 +353,8 @@ i915_screen_create(struct i915_winsys *iws) case PCI_CHIP_G33_G: case PCI_CHIP_Q33_G: case PCI_CHIP_Q35_G: + case PCI_CHIP_PINEVIEW_G: + case PCI_CHIP_PINEVIEW_M: is->is_i945 = TRUE; break; diff --git a/src/gallium/drivers/i915/i915_state_emit.c b/src/gallium/drivers/i915/i915_state_emit.c index bd059d5716..49dff1f775 100644 --- a/src/gallium/drivers/i915/i915_state_emit.c +++ b/src/gallium/drivers/i915/i915_state_emit.c @@ -224,10 +224,6 @@ i915_emit_hardware_state(struct i915_context *i915 ) struct i915_texture *tex = i915_texture(cbuf_surface->texture); assert(tex); - if (tex && tex->sw_tiled) { - ctile = BUF_3D_TILED_SURFACE; - } - OUT_BATCH(_3DSTATE_BUF_INFO_CMD); OUT_BATCH(BUF_3D_ID_COLOR_BACK | @@ -246,10 +242,6 @@ i915_emit_hardware_state(struct i915_context *i915 ) struct i915_texture *tex = i915_texture(depth_surface->texture); assert(tex); - if (tex && tex->sw_tiled) { - ztile = BUF_3D_TILED_SURFACE; - } - OUT_BATCH(_3DSTATE_BUF_INFO_CMD); assert(tex); diff --git a/src/gallium/drivers/i915/i915_state_sampler.c b/src/gallium/drivers/i915/i915_state_sampler.c index 4667e0b78d..9771274ca1 100644 --- a/src/gallium/drivers/i915/i915_state_sampler.c +++ b/src/gallium/drivers/i915/i915_state_sampler.c @@ -267,11 +267,6 @@ static void update_map(struct i915_context *i915, assert(format); assert(pitch); - if (tex->sw_tiled) { - assert(!((pitch - 1) & pitch)); - tiled = MS3_TILED_SURFACE; - } - /* MS3 state */ state[0] = (((height - 1) << MS3_HEIGHT_SHIFT) diff --git a/src/gallium/drivers/i965/SConscript b/src/gallium/drivers/i965/SConscript index 119f914a16..019af682f6 100644 --- a/src/gallium/drivers/i965/SConscript +++ b/src/gallium/drivers/i965/SConscript @@ -2,10 +2,6 @@ Import('*') env = env.Clone() -if msvc: - print 'warning: not building i965g' - Return(); - i965 = env.ConvenienceLibrary( target = 'i965', source = [ diff --git a/src/gallium/drivers/i965/brw_screen.c b/src/gallium/drivers/i965/brw_screen.c index 864b21fa53..57160ebb29 100644 --- a/src/gallium/drivers/i965/brw_screen.c +++ b/src/gallium/drivers/i965/brw_screen.c @@ -235,6 +235,11 @@ brw_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_shad return 0; case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 1; default: assert(0); return 0; diff --git a/src/gallium/drivers/llvmpipe/Makefile b/src/gallium/drivers/llvmpipe/Makefile index 08da2286b0..669e42e300 100644 --- a/src/gallium/drivers/llvmpipe/Makefile +++ b/src/gallium/drivers/llvmpipe/Makefile @@ -69,7 +69,7 @@ lp_test_sincos.o : sse_mathfun.h PROGS_DEPS := ../../auxiliary/libgallium.a lp_tile_soa.c: lp_tile_soa.py ../../auxiliary/util/u_format_parse.py ../../auxiliary/util/u_format_pack.py ../../auxiliary/util/u_format.csv - python lp_tile_soa.py ../../auxiliary/util/u_format.csv > $@ + $(PYTHON2) $(PYTHON_FLAGS) lp_tile_soa.py ../../auxiliary/util/u_format.csv > $@ LDFLAGS += $(LLVM_LDFLAGS) LIBS += -L../../auxiliary/ -lgallium libllvmpipe.a $(LLVM_LIBS) $(GL_LIB_DEPS) diff --git a/src/gallium/drivers/llvmpipe/README b/src/gallium/drivers/llvmpipe/README index ec30d4d708..e9374cc6ef 100644 --- a/src/gallium/drivers/llvmpipe/README +++ b/src/gallium/drivers/llvmpipe/README @@ -1,53 +1,6 @@ LLVMPIPE -- a fork of softpipe that employs LLVM for code generation. -Status -====== - -Done so far is: - - - the whole fragment pipeline is code generated in a single function - - - input interpolation - - - depth testing - - - texture sampling - - 1D/2D/3D/cube maps supported - - all texture wrap modes supported - - all texture filtering modes supported - - perhaps not all texture formats yet supported - - - fragment shader TGSI translation - - same level of support as the TGSI SSE2 exec machine, with the exception - we don't fallback to TGSI interpretation when an unsupported opcode is - found, but just ignore it - - done in SoA layout - - input interpolation also code generated - - - alpha testing - - - blend (including logic ops) - - both in SoA and AoS layouts, but only the former used for now - - - code is generic - - intermediates can be vectors of floats, ubytes, fixed point, etc, and of - any width and length - - not all operations are implemented for these types yet though - -Most mesa/progs/demos/* work. - -To do (probably by this order): - - - code generate stipple and stencil testing - - - translate TGSI control flow instructions, and all other remaining opcodes - - - integrate with the draw module for VS code generation - - - code generate the triangle setup and rasterization - - Requirements ============ @@ -98,7 +51,7 @@ Building To build everything on Linux invoke scons as: - scons debug=yes statetrackers=mesa drivers=llvmpipe winsys=xlib dri=false + scons build=debug libgl-xlib Alternatively, you can build it with GNU make, if you prefer, by invoking it as @@ -108,19 +61,16 @@ but the rest of these instructions assume that scons is used. For windows is everything the except except the winsys: - scons debug=yes statetrackers=mesa drivers=llvmpipe winsys=gdi dri=false + scons build=debug libgl-gdi Using ===== -On Linux, building will create a drop-in alternative for libGL.so. To use it -set the environment variables: - - export LD_LIBRARY_PATH=$PWD/build/linux-x86_64-debug/lib:$LD_LIBRARY_PATH +On Linux, building will create a drop-in alternative for libGL.so into -or + build/foo/gallium/targets/libgl-xlib/libGL.so - export LD_LIBRARY_PATH=$PWD/build/linux-x86-debug/lib:$LD_LIBRARY_PATH +To use it set the LD_LIBRARY_PATH environment variable accordingly. For performance evaluation pass debug=no to scons, and use the corresponding lib directory without the "-debug" suffix. @@ -136,7 +86,7 @@ Profiling To profile llvmpipe you should pass the options - scons debug=no profile=yes <same-as-before> + scons build=profile <same-as-before> This will ensure that frame pointers are used both in C and JIT functions, and that no tail call optimizations are done by gcc. @@ -200,5 +150,4 @@ Development Notes interfaces very closely, and appear to be complete enough for code generation. See http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html - for a stand-alone example. - See the llvm-c/Core.h file for reference. + for a stand-alone example. See the llvm-c/Core.h file for reference. diff --git a/src/gallium/drivers/llvmpipe/SConscript b/src/gallium/drivers/llvmpipe/SConscript index 49950153a4..26b258b956 100644 --- a/src/gallium/drivers/llvmpipe/SConscript +++ b/src/gallium/drivers/llvmpipe/SConscript @@ -9,8 +9,6 @@ if not env['llvm']: env = env.Clone() -env.Tool('udis86') - env.Append(CPPPATH = ['.']) env.CodeGenerate( @@ -78,6 +76,8 @@ llvmpipe = env.ConvenienceLibrary( lp_tile_soa_os, ]) +env.Alias('llvmpipe', llvmpipe) + if env['platform'] != 'embedded': env = env.Clone() @@ -92,7 +92,7 @@ if env['platform'] != 'embedded': 'sincos', ] - if not msvc: + if not env['msvc']: tests.append('round') for test in tests: diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c index d358a98394..decf3bd449 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.c +++ b/src/gallium/drivers/llvmpipe/lp_rast.c @@ -485,8 +485,11 @@ static void lp_rast_end_query(struct lp_rasterizer_task *task, const union lp_rast_cmd_arg arg) { - task->query->count[task->thread_index] += task->vis_counter; - task->query = NULL; + assert(task->query); + if (task->query) { + task->query->count[task->thread_index] += task->vis_counter; + task->query = NULL; + } } diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c index 827413bb33..29c231714e 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_line.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c @@ -569,7 +569,10 @@ try_setup_line( struct lp_setup_context *setup, return TRUE; } - u_rect_find_intersection(&setup->draw_region, &bbox); + /* Can safely discard negative regions: + */ + bbox.x0 = MAX2(bbox.x0, 0); + bbox.y0 = MAX2(bbox.y0, 0); line = lp_setup_alloc_triangle(scene, key->num_inputs, @@ -680,24 +683,26 @@ try_setup_line( struct lp_setup_context *setup, * these planes elsewhere. */ if (nr_planes == 8) { + const struct u_rect *scissor = &setup->scissor; + plane[4].dcdx = -1; plane[4].dcdy = 0; - plane[4].c = 1-bbox.x0; + plane[4].c = 1-scissor->x0; plane[4].eo = 1; plane[5].dcdx = 1; plane[5].dcdy = 0; - plane[5].c = bbox.x1+1; + plane[5].c = scissor->x1+1; plane[5].eo = 0; plane[6].dcdx = 0; plane[6].dcdy = 1; - plane[6].c = 1-bbox.y0; + plane[6].c = 1-scissor->y0; plane[6].eo = 1; plane[7].dcdx = 0; plane[7].dcdy = -1; - plane[7].c = bbox.y1+1; + plane[7].c = scissor->y1+1; plane[7].eo = 0; } diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index 4ab0b72a57..bfb6bf277b 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -295,7 +295,12 @@ do_triangle_ccw(struct lp_setup_context *setup, return TRUE; } - u_rect_find_intersection(&setup->draw_region, &bbox); + /* Can safely discard negative regions, but need to keep hold of + * information about when the triangle extends past screen + * boundaries. See trimmed_box in lp_setup_bin_triangle(). + */ + bbox.x0 = MAX2(bbox.x0, 0); + bbox.y0 = MAX2(bbox.y0, 0); tri = lp_setup_alloc_triangle(scene, key->num_inputs, @@ -501,24 +506,26 @@ do_triangle_ccw(struct lp_setup_context *setup, * these planes elsewhere. */ if (nr_planes == 7) { + const struct u_rect *scissor = &setup->scissor; + plane[3].dcdx = -1; plane[3].dcdy = 0; - plane[3].c = 1-bbox.x0; + plane[3].c = 1-scissor->x0; plane[3].eo = 1; plane[4].dcdx = 1; plane[4].dcdy = 0; - plane[4].c = bbox.x1+1; + plane[4].c = scissor->x1+1; plane[4].eo = 0; plane[5].dcdx = 0; plane[5].dcdy = 1; - plane[5].c = 1-bbox.y0; + plane[5].c = 1-scissor->y0; plane[5].eo = 1; plane[6].dcdx = 0; plane[6].dcdy = -1; - plane[6].c = bbox.y1+1; + plane[6].c = scissor->y1+1; plane[6].eo = 0; } @@ -559,6 +566,7 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, int nr_planes ) { struct lp_scene *scene = setup->scene; + struct u_rect trimmed_box = *bbox; int i; /* What is the largest power-of-two boundary this triangle crosses: @@ -572,6 +580,13 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, int sz = floor_pot((bbox->x1 - (bbox->x0 & ~3)) | (bbox->y1 - (bbox->y0 & ~3))); + /* Now apply scissor, etc to the bounding box. Could do this + * earlier, but it confuses the logic for tri-16 and would force + * the rasterizer to also respect scissor, etc, just for the rare + * cases where a small triangle extends beyond the scissor. + */ + u_rect_find_intersection(&setup->draw_region, &trimmed_box); + /* Determine which tile(s) intersect the triangle's bounding box */ if (dx < TILE_SIZE) @@ -626,15 +641,16 @@ lp_setup_bin_triangle( struct lp_setup_context *setup, struct lp_rast_plane *plane = GET_PLANES(tri); int c[MAX_PLANES]; int ei[MAX_PLANES]; + int eo[MAX_PLANES]; int xstep[MAX_PLANES]; int ystep[MAX_PLANES]; int x, y; - int ix0 = bbox->x0 / TILE_SIZE; - int iy0 = bbox->y0 / TILE_SIZE; - int ix1 = bbox->x1 / TILE_SIZE; - int iy1 = bbox->y1 / TILE_SIZE; + int ix0 = trimmed_box.x0 / TILE_SIZE; + int iy0 = trimmed_box.y0 / TILE_SIZE; + int ix1 = trimmed_box.x1 / TILE_SIZE; + int iy1 = trimmed_box.y1 / TILE_SIZE; for (i = 0; i < nr_planes; i++) { c[i] = (plane[i].c + @@ -799,6 +815,16 @@ static void triangle_both( struct lp_setup_context *setup, { float area = calc_area(v0, v1, v2); + if (0) { + assert(!util_is_inf_or_nan(v0[0][0])); + assert(!util_is_inf_or_nan(v0[0][1])); + assert(!util_is_inf_or_nan(v1[0][0])); + assert(!util_is_inf_or_nan(v1[0][1])); + assert(!util_is_inf_or_nan(v2[0][0])); + assert(!util_is_inf_or_nan(v2[0][1])); + assert(!util_is_inf_or_nan(area)); + } + if (area > 0.0f) retry_triangle_ccw( setup, v0, v1, v2, setup->ccw_is_frontface ); else if (area < 0.0f) diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 9fbedac165..48971510f2 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -761,11 +761,6 @@ generate_fragment(struct llvmpipe_screen *screen, } } -#ifdef PIPE_ARCH_X86 - /* Avoid corrupting the FPU stack on 32bit OSes. */ - lp_build_intrinsic(builder, "llvm.x86.mmx.emms", LLVMVoidType(), NULL, 0); -#endif - LLVMBuildRetVoid(builder); LLVMDisposeBuilder(builder); @@ -1067,11 +1062,11 @@ llvmpipe_bind_fs_state(struct pipe_context *pipe, void *fs) draw_flush(llvmpipe->draw); + llvmpipe->fs = (struct lp_fragment_shader *) fs; + draw_bind_fragment_shader(llvmpipe->draw, (llvmpipe->fs ? llvmpipe->fs->draw_data : NULL)); - llvmpipe->fs = fs; - llvmpipe->dirty |= LP_NEW_FS; } diff --git a/src/gallium/drivers/llvmpipe/lp_tile_soa.py b/src/gallium/drivers/llvmpipe/lp_tile_soa.py index e49f9c62fe..8df7b236fe 100644 --- a/src/gallium/drivers/llvmpipe/lp_tile_soa.py +++ b/src/gallium/drivers/llvmpipe/lp_tile_soa.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -''' +CopyRight = ''' /************************************************************************** * * Copyright 2009 VMware, Inc. @@ -510,7 +510,7 @@ def main(): print '/* This file is autogenerated by lp_tile_soa.py from u_format.csv. Do not edit directly. */' print # This will print the copyright message on the top of this file - print __doc__.strip() + print CopyRight.strip() print print '#include "pipe/p_compiler.h"' print '#include "util/u_format.h"' diff --git a/src/gallium/drivers/sw/Makefile b/src/gallium/drivers/noop/Makefile index 2713a62ee9..29b8d73de2 100644 --- a/src/gallium/drivers/sw/Makefile +++ b/src/gallium/drivers/noop/Makefile @@ -4,7 +4,10 @@ TOP = ../../../.. include $(TOP)/configs/current +LIBNAME = noop + C_SOURCES = \ - sw.c + noop_pipe.c \ + noop_state.c include ../../Makefile.template diff --git a/src/gallium/drivers/noop/SConscript b/src/gallium/drivers/noop/SConscript new file mode 100644 index 0000000000..a4d0dcaf27 --- /dev/null +++ b/src/gallium/drivers/noop/SConscript @@ -0,0 +1,15 @@ +####################################################################### +# SConscript for noop convenience library + +Import('*') + +env = env.Clone() + +noop = env.ConvenienceLibrary( + target = 'noop', + source = [ + 'noop_pipe.c', + 'noop_state.c' + ] + ) + extra +Export('noop') diff --git a/src/gallium/drivers/noop/noop_pipe.c b/src/gallium/drivers/noop/noop_pipe.c new file mode 100644 index 0000000000..fb5cdb4609 --- /dev/null +++ b/src/gallium/drivers/noop/noop_pipe.c @@ -0,0 +1,550 @@ +/* + * Copyright 2010 Red Hat Inc. + * + * 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 + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, 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 (including the next + * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS 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. + */ +#include <stdio.h> +#include <errno.h> +#include <pipe/p_defines.h> +#include <pipe/p_state.h> +#include <pipe/p_context.h> +#include <pipe/p_screen.h> +#include <util/u_memory.h> +#include <util/u_inlines.h> +#include <util/u_format.h> +#include "noop_public.h" +#include "state_tracker/sw_winsys.h" + +void noop_init_state_functions(struct pipe_context *ctx); + +/* + * query + */ +struct noop_query { + unsigned query; +}; +static struct pipe_query *noop_create_query(struct pipe_context *ctx, unsigned query_type) +{ + struct noop_query *query = CALLOC_STRUCT(noop_query); + + return (struct pipe_query *)query; +} + +static void noop_destroy_query(struct pipe_context *ctx, struct pipe_query *query) +{ + FREE(query); +} + +static void noop_begin_query(struct pipe_context *ctx, struct pipe_query *query) +{ +} + +static void noop_end_query(struct pipe_context *ctx, struct pipe_query *query) +{ +} + +static boolean noop_get_query_result(struct pipe_context *ctx, + struct pipe_query *query, + boolean wait, void *vresult) +{ + uint64_t *result = (uint64_t*)vresult; + + *result = 0; + return TRUE; +} + + +/* + * resource + */ +struct noop_resource { + struct pipe_resource base; + unsigned size; + char *data; + struct sw_displaytarget *dt; +}; + +static unsigned noop_is_resource_referenced(struct pipe_context *pipe, + struct pipe_resource *resource, + unsigned face, unsigned level) +{ + return PIPE_UNREFERENCED; +} + +static struct pipe_resource *noop_resource_create(struct pipe_screen *screen, + const struct pipe_resource *templ) +{ + struct noop_resource *nresource; + unsigned stride; + + nresource = CALLOC_STRUCT(noop_resource); + if (nresource == NULL) + return NULL; + + stride = util_format_get_stride(templ->format, templ->width0); + nresource->base = *templ; + nresource->base.screen = screen; + nresource->size = stride * templ->height0 * templ->depth0; + nresource->data = malloc(nresource->size); + pipe_reference_init(&nresource->base.reference, 1); + if (nresource->data == NULL) { + FREE(nresource); + return NULL; + } +#if 0 + if (nresource->base.bind & (PIPE_BIND_DISPLAY_TARGET | + PIPE_BIND_SCANOUT | + PIPE_BIND_SHARED)) { + struct sw_winsys *winsys = (struct sw_winsys *)screen->winsys; + unsigned stride; + + nresource->dt = winsys->displaytarget_create(winsys, nresource->base.bind, + nresource->base.format, + nresource->base.width0, + nresource->base.height0, + 16, &stride); + } +#endif + return &nresource->base; +} + +static struct pipe_resource *noop_resource_from_handle(struct pipe_screen * screen, + const struct pipe_resource *templ, + struct winsys_handle *whandle) +{ + struct sw_winsys *winsys = (struct sw_winsys *)screen->winsys; + struct noop_resource *nresource; + struct sw_displaytarget *dt; + unsigned stride; + + dt = winsys->displaytarget_from_handle(winsys, templ, whandle, &stride); + if (dt == NULL) { + return NULL; + } + nresource = (struct noop_resource *)noop_resource_create(screen, templ); + nresource->dt = dt; + return &nresource->base; +} + +static boolean noop_resource_get_handle(struct pipe_screen *screen, + struct pipe_resource *resource, + struct winsys_handle *handle) +{ + struct sw_winsys *winsys = (struct sw_winsys *)screen->winsys; + struct noop_resource *nresource = (struct noop_resource *)resource; + + if (nresource->dt == NULL) + return FALSE; + + return winsys->displaytarget_get_handle(winsys, nresource->dt, handle); +} + +static void noop_resource_destroy(struct pipe_screen *screen, + struct pipe_resource *resource) +{ + struct noop_resource *nresource = (struct noop_resource *)resource; + + if (nresource->dt) { + /* display target */ + struct sw_winsys *winsys = (struct sw_winsys *)screen->winsys; + winsys->displaytarget_destroy(winsys, nresource->dt); + } + free(nresource->data); + FREE(resource); +} + +static struct pipe_resource *noop_user_buffer_create(struct pipe_screen *screen, + void *ptr, unsigned bytes, + unsigned bind) +{ + struct pipe_resource templ; + + templ.target = PIPE_BUFFER; + templ.format = PIPE_FORMAT_R8_UNORM; + templ.usage = PIPE_USAGE_IMMUTABLE; + templ.bind = bind; + templ.width0 = bytes; + templ.height0 = 1; + templ.depth0 = 1; + templ.flags = 0; + return noop_resource_create(screen, &templ); +} + + +/* + * transfer + */ +static struct pipe_transfer *noop_get_transfer(struct pipe_context *context, + struct pipe_resource *resource, + struct pipe_subresource sr, + enum pipe_transfer_usage usage, + const struct pipe_box *box) +{ + struct pipe_transfer *transfer; + + transfer = CALLOC_STRUCT(pipe_transfer); + if (transfer == NULL) + return NULL; + pipe_resource_reference(&transfer->resource, resource); + transfer->sr = sr; + transfer->usage = usage; + transfer->box = *box; + transfer->stride = 1; + transfer->slice_stride = 1; + return transfer; +} + +static void *noop_transfer_map(struct pipe_context *pipe, + struct pipe_transfer *transfer) +{ + struct noop_resource *nresource = (struct noop_resource *)transfer->resource; + + return nresource->data; +} + +static void noop_transfer_flush_region(struct pipe_context *pipe, + struct pipe_transfer *transfer, + const struct pipe_box *box) +{ +} + +static void noop_transfer_unmap(struct pipe_context *pipe, + struct pipe_transfer *transfer) +{ +} + +static void noop_transfer_destroy(struct pipe_context *pipe, + struct pipe_transfer *transfer) +{ + pipe_resource_reference(&transfer->resource, NULL); + FREE(transfer); +} + +static void noop_transfer_inline_write(struct pipe_context *pipe, + struct pipe_resource *resource, + struct pipe_subresource sr, + unsigned usage, + const struct pipe_box *box, + const void *data, + unsigned stride, + unsigned slice_stride) +{ +} + + +/* + * clear/copy + */ +static void noop_clear(struct pipe_context *ctx, unsigned buffers, + const float *rgba, double depth, unsigned stencil) +{ +} + +static void noop_clear_render_target(struct pipe_context *ctx, + struct pipe_surface *dst, + const float *rgba, + unsigned dstx, unsigned dsty, + unsigned width, unsigned height) +{ +} + +static void noop_clear_depth_stencil(struct pipe_context *ctx, + struct pipe_surface *dst, + unsigned clear_flags, + double depth, + unsigned stencil, + unsigned dstx, unsigned dsty, + unsigned width, unsigned height) +{ +} + +static void noop_resource_copy_region(struct pipe_context *ctx, + struct pipe_resource *dst, + struct pipe_subresource subdst, + unsigned dstx, unsigned dsty, unsigned dstz, + struct pipe_resource *src, + struct pipe_subresource subsrc, + unsigned srcx, unsigned srcy, unsigned srcz, + unsigned width, unsigned height) +{ +} + + +/* + * context + */ +static void noop_flush(struct pipe_context *ctx, unsigned flags, + struct pipe_fence_handle **fence) +{ +} + +static void noop_destroy_context(struct pipe_context *ctx) +{ + FREE(ctx); +} + +static struct pipe_context *noop_create_context(struct pipe_screen *screen, void *priv) +{ + struct pipe_context *ctx = CALLOC_STRUCT(pipe_context); + + if (ctx == NULL) + return NULL; + ctx->winsys = screen->winsys; + ctx->screen = screen; + ctx->priv = priv; + ctx->destroy = noop_destroy_context; + ctx->flush = noop_flush; + ctx->clear = noop_clear; + ctx->clear_render_target = noop_clear_render_target; + ctx->clear_depth_stencil = noop_clear_depth_stencil; + ctx->resource_copy_region = noop_resource_copy_region; + ctx->create_query = noop_create_query; + ctx->destroy_query = noop_destroy_query; + ctx->begin_query = noop_begin_query; + ctx->end_query = noop_end_query; + ctx->get_query_result = noop_get_query_result; + ctx->get_transfer = noop_get_transfer; + ctx->transfer_map = noop_transfer_map; + ctx->transfer_flush_region = noop_transfer_flush_region; + ctx->transfer_unmap = noop_transfer_unmap; + ctx->transfer_destroy = noop_transfer_destroy; + ctx->transfer_inline_write = noop_transfer_inline_write; + ctx->is_resource_referenced = noop_is_resource_referenced; + noop_init_state_functions(ctx); + + return ctx; +} + +/* + * texture + */ +static struct pipe_surface *noop_get_tex_surface(struct pipe_screen *screen, + struct pipe_resource *texture, + unsigned face, unsigned level, + unsigned zslice, unsigned flags) +{ + struct pipe_surface *surface = CALLOC_STRUCT(pipe_surface); + + if (surface == NULL) + return NULL; + pipe_reference_init(&surface->reference, 1); + pipe_resource_reference(&surface->texture, texture); + surface->format = texture->format; + surface->width = texture->width0; + surface->height = texture->height0; + surface->offset = 0; + surface->usage = flags; + surface->zslice = zslice; + surface->texture = texture; + surface->face = face; + surface->level = level; + + return surface; +} + +static void noop_tex_surface_destroy(struct pipe_surface *surface) +{ + pipe_resource_reference(&surface->texture, NULL); + FREE(surface); +} + + +/* + * pipe_screen + */ +static void noop_flush_frontbuffer(struct pipe_screen *_screen, + struct pipe_surface *surface, + void *context_private) +{ +} + +static const char *noop_get_vendor(struct pipe_screen* pscreen) +{ + return "X.Org"; +} + +static const char *noop_get_name(struct pipe_screen* pscreen) +{ + return "NOOP"; +} + +static int noop_get_param(struct pipe_screen* pscreen, enum pipe_cap param) +{ + switch (param) { + /* Supported features (boolean caps). */ + case PIPE_CAP_NPOT_TEXTURES: + case PIPE_CAP_TWO_SIDED_STENCIL: + case PIPE_CAP_GLSL: + case PIPE_CAP_OCCLUSION_QUERY: + case PIPE_CAP_POINT_SPRITE: + case PIPE_CAP_ANISOTROPIC_FILTER: + case PIPE_CAP_TEXTURE_MIRROR_CLAMP: + case PIPE_CAP_TEXTURE_MIRROR_REPEAT: + case PIPE_CAP_TEXTURE_SHADOW_MAP: + case PIPE_CAP_TEXTURE_SWIZZLE: + case PIPE_CAP_BLEND_EQUATION_SEPARATE: + + return 1; + case PIPE_CAP_DUAL_SOURCE_BLEND: + + case PIPE_CAP_SM3: + case PIPE_CAP_INDEP_BLEND_ENABLE: + case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: + case PIPE_CAP_DEPTH_CLAMP: + case PIPE_CAP_SHADER_STENCIL_EXPORT: + case PIPE_CAP_TIMER_QUERY: + case PIPE_CAP_STREAM_OUTPUT: + case PIPE_CAP_PRIMITIVE_RESTART: + case PIPE_CAP_INDEP_BLEND_FUNC: + return 0; + + /* Texturing. */ + case PIPE_CAP_MAX_TEXTURE_2D_LEVELS: + case PIPE_CAP_MAX_TEXTURE_3D_LEVELS: + case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: + return 14; + case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS: + return 16; + case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS: + case PIPE_CAP_MAX_COMBINED_SAMPLERS: + return 16; + + /* Render targets. */ + case PIPE_CAP_MAX_RENDER_TARGETS: + return 8; + + /* Fragment coordinate conventions. */ + case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT: + case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER: + return 1; + case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT: + case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER: + return 0; + + default: + return 0; + } +} + +static float noop_get_paramf(struct pipe_screen* pscreen, enum pipe_cap param) +{ + switch (param) { + case PIPE_CAP_MAX_LINE_WIDTH: + case PIPE_CAP_MAX_LINE_WIDTH_AA: + case PIPE_CAP_MAX_POINT_WIDTH: + case PIPE_CAP_MAX_POINT_WIDTH_AA: + return 8192.0f; + case PIPE_CAP_MAX_TEXTURE_ANISOTROPY: + return 16.0f; + case PIPE_CAP_MAX_TEXTURE_LOD_BIAS: + return 16.0f; + default: + return 0.0f; + } +} + +static int noop_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enum pipe_shader_cap param) +{ + switch(shader) + { + case PIPE_SHADER_FRAGMENT: + case PIPE_SHADER_VERTEX: + case PIPE_SHADER_GEOMETRY: + break; + default: + return 0; + } + + switch (param) { + case PIPE_SHADER_CAP_MAX_INSTRUCTIONS: + case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS: + case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS: + case PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS: + return 16384; + case PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH: + return 8; + case PIPE_SHADER_CAP_MAX_INPUTS: + return 16; + case PIPE_SHADER_CAP_MAX_TEMPS: + return 256; + case PIPE_SHADER_CAP_MAX_ADDRS: + return 1; + case PIPE_SHADER_CAP_MAX_CONSTS: + return 256; + case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: + return 1; + case PIPE_SHADER_CAP_MAX_PREDS: + return 0; + case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: + return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 1; + default: + return 0; + } +} + +static boolean noop_is_format_supported(struct pipe_screen* screen, + enum pipe_format format, + enum pipe_texture_target target, + unsigned sample_count, + unsigned usage, + unsigned geom_flags) +{ + return true; +} + +static void noop_destroy_screen(struct pipe_screen *screen) +{ + FREE(screen); +} + +struct pipe_screen *noop_screen_create(struct sw_winsys *winsys) +{ + struct pipe_screen *screen; + + screen = CALLOC_STRUCT(pipe_screen); + if (screen == NULL) { + return NULL; + } + + screen->winsys = (struct pipe_winsys*)winsys; + screen->destroy = noop_destroy_screen; + screen->get_name = noop_get_name; + screen->get_vendor = noop_get_vendor; + screen->get_param = noop_get_param; + screen->get_shader_param = noop_get_shader_param; + screen->get_paramf = noop_get_paramf; + screen->is_format_supported = noop_is_format_supported; + screen->context_create = noop_create_context; + screen->get_tex_surface = noop_get_tex_surface; + screen->tex_surface_destroy = noop_tex_surface_destroy; + screen->resource_create = noop_resource_create; + screen->resource_from_handle = noop_resource_from_handle; + screen->resource_get_handle = noop_resource_get_handle; + screen->resource_destroy = noop_resource_destroy; + screen->user_buffer_create = noop_user_buffer_create; + screen->flush_frontbuffer = noop_flush_frontbuffer; + + return screen; +} diff --git a/src/gallium/drivers/noop/noop_public.h b/src/gallium/drivers/noop/noop_public.h new file mode 100644 index 0000000000..8ce82bec69 --- /dev/null +++ b/src/gallium/drivers/noop/noop_public.h @@ -0,0 +1,30 @@ +/* + * Copyright 2010 Red Hat Inc. + * + * 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 + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, 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 (including the next + * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS 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. + */ +#ifndef NOOP_PUBLIC_H +#define NOOP_PUBLIC_H + +struct sw_winsys; + +struct pipe_screen *noop_screen_create(struct sw_winsys *winsys); + +#endif diff --git a/src/gallium/drivers/noop/noop_state.c b/src/gallium/drivers/noop/noop_state.c new file mode 100644 index 0000000000..048ed42a9b --- /dev/null +++ b/src/gallium/drivers/noop/noop_state.c @@ -0,0 +1,256 @@ +/* + * Copyright 2010 Red Hat Inc. + * + * 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 + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, 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 (including the next + * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS 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. + */ +#include <stdio.h> +#include <errno.h> +#include <pipe/p_defines.h> +#include <pipe/p_state.h> +#include <pipe/p_context.h> +#include <pipe/p_screen.h> +#include <util/u_memory.h> +#include <util/u_inlines.h> + +static void noop_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) +{ +} + +static void noop_set_blend_color(struct pipe_context *ctx, + const struct pipe_blend_color *state) +{ +} + +static void *noop_create_blend_state(struct pipe_context *ctx, + const struct pipe_blend_state *state) +{ + struct pipe_blend_state *nstate = CALLOC_STRUCT(pipe_blend_state); + + if (nstate == NULL) { + return NULL; + } + *nstate = *state; + return nstate; +} + +static void *noop_create_dsa_state(struct pipe_context *ctx, + const struct pipe_depth_stencil_alpha_state *state) +{ + struct pipe_depth_stencil_alpha_state *nstate = CALLOC_STRUCT(pipe_depth_stencil_alpha_state); + + if (nstate == NULL) { + return NULL; + } + *nstate = *state; + return nstate; +} + +static void *noop_create_rs_state(struct pipe_context *ctx, + const struct pipe_rasterizer_state *state) +{ + struct pipe_rasterizer_state *nstate = CALLOC_STRUCT(pipe_rasterizer_state); + + if (nstate == NULL) { + return NULL; + } + *nstate = *state; + return nstate; +} + +static void *noop_create_sampler_state(struct pipe_context *ctx, + const struct pipe_sampler_state *state) +{ + struct pipe_sampler_state *nstate = CALLOC_STRUCT(pipe_sampler_state); + + if (nstate == NULL) { + return NULL; + } + *nstate = *state; + return nstate; +} + +static struct pipe_sampler_view *noop_create_sampler_view(struct pipe_context *ctx, + struct pipe_resource *texture, + const struct pipe_sampler_view *state) +{ + struct pipe_sampler_view *sampler_view = CALLOC_STRUCT(pipe_sampler_view); + + if (sampler_view == NULL) + return NULL; + /* initialize base object */ + pipe_resource_reference(&sampler_view->texture, texture); + pipe_reference_init(&sampler_view->reference, 1); + sampler_view->context = ctx; + return sampler_view; +} + +static void noop_set_vs_sampler_view(struct pipe_context *ctx, unsigned count, + struct pipe_sampler_view **views) +{ +} + +static void noop_set_ps_sampler_view(struct pipe_context *ctx, unsigned count, + struct pipe_sampler_view **views) +{ +} + +static void noop_bind_sampler(struct pipe_context *ctx, unsigned count, void **states) +{ +} + +static void noop_set_clip_state(struct pipe_context *ctx, + const struct pipe_clip_state *state) +{ +} + +static void noop_set_polygon_stipple(struct pipe_context *ctx, + const struct pipe_poly_stipple *state) +{ +} + +static void noop_set_sample_mask(struct pipe_context *pipe, unsigned sample_mask) +{ +} + +static void noop_set_scissor_state(struct pipe_context *ctx, + const struct pipe_scissor_state *state) +{ +} + +static void noop_set_stencil_ref(struct pipe_context *ctx, + const struct pipe_stencil_ref *state) +{ +} + +static void noop_set_viewport_state(struct pipe_context *ctx, + const struct pipe_viewport_state *state) +{ +} + +static void noop_set_framebuffer_state(struct pipe_context *ctx, + const struct pipe_framebuffer_state *state) +{ +} + +static void noop_set_constant_buffer(struct pipe_context *ctx, + uint shader, uint index, + struct pipe_resource *buffer) +{ +} + + +static void noop_sampler_view_destroy(struct pipe_context *ctx, + struct pipe_sampler_view *state) +{ + pipe_resource_reference(&state->texture, NULL); + FREE(state); +} + +static void noop_bind_state(struct pipe_context *ctx, void *state) +{ +} + +static void noop_delete_state(struct pipe_context *ctx, void *state) +{ + FREE(state); +} + +static void noop_delete_vertex_element(struct pipe_context *ctx, void *state) +{ + FREE(state); +} + + +static void noop_set_index_buffer(struct pipe_context *ctx, + const struct pipe_index_buffer *ib) +{ +} + +static void noop_set_vertex_buffers(struct pipe_context *ctx, unsigned count, + const struct pipe_vertex_buffer *buffers) +{ +} + +static void *noop_create_vertex_elements(struct pipe_context *ctx, + unsigned count, + const struct pipe_vertex_element *state) +{ + struct pipe_vertex_element *nstate = CALLOC_STRUCT(pipe_vertex_element); + + if (nstate == NULL) { + return NULL; + } + *nstate = *state; + return nstate; +} + +static void *noop_create_shader_state(struct pipe_context *ctx, + const struct pipe_shader_state *state) +{ + struct pipe_shader_state *nstate = CALLOC_STRUCT(pipe_shader_state); + + if (nstate == NULL) { + return NULL; + } + *nstate = *state; + return nstate; +} + +void noop_init_state_functions(struct pipe_context *ctx) +{ + ctx->create_blend_state = noop_create_blend_state; + ctx->create_depth_stencil_alpha_state = noop_create_dsa_state; + ctx->create_fs_state = noop_create_shader_state; + ctx->create_rasterizer_state = noop_create_rs_state; + ctx->create_sampler_state = noop_create_sampler_state; + ctx->create_sampler_view = noop_create_sampler_view; + ctx->create_vertex_elements_state = noop_create_vertex_elements; + ctx->create_vs_state = noop_create_shader_state; + ctx->bind_blend_state = noop_bind_state; + ctx->bind_depth_stencil_alpha_state = noop_bind_state; + ctx->bind_fragment_sampler_states = noop_bind_sampler; + ctx->bind_fs_state = noop_bind_state; + ctx->bind_rasterizer_state = noop_bind_state; + ctx->bind_vertex_elements_state = noop_bind_state; + ctx->bind_vertex_sampler_states = noop_bind_sampler; + ctx->bind_vs_state = noop_bind_state; + ctx->delete_blend_state = noop_delete_state; + ctx->delete_depth_stencil_alpha_state = noop_delete_state; + ctx->delete_fs_state = noop_delete_state; + ctx->delete_rasterizer_state = noop_delete_state; + ctx->delete_sampler_state = noop_delete_state; + ctx->delete_vertex_elements_state = noop_delete_vertex_element; + ctx->delete_vs_state = noop_delete_state; + ctx->set_blend_color = noop_set_blend_color; + ctx->set_clip_state = noop_set_clip_state; + ctx->set_constant_buffer = noop_set_constant_buffer; + ctx->set_fragment_sampler_views = noop_set_ps_sampler_view; + ctx->set_framebuffer_state = noop_set_framebuffer_state; + ctx->set_polygon_stipple = noop_set_polygon_stipple; + ctx->set_sample_mask = noop_set_sample_mask; + ctx->set_scissor_state = noop_set_scissor_state; + ctx->set_stencil_ref = noop_set_stencil_ref; + ctx->set_vertex_buffers = noop_set_vertex_buffers; + ctx->set_index_buffer = noop_set_index_buffer; + ctx->set_vertex_sampler_views = noop_set_vs_sampler_view; + ctx->set_viewport_state = noop_set_viewport_state; + ctx->sampler_view_destroy = noop_sampler_view_destroy; + ctx->draw_vbo = noop_draw_vbo; +} diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c index c6bd62df1d..51eab3a0b0 100644 --- a/src/gallium/drivers/nv50/nv50_screen.c +++ b/src/gallium/drivers/nv50/nv50_screen.c @@ -171,6 +171,11 @@ nv50_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, return NV50_CAP_MAX_PROGRAM_TEMPS; case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 1; default: return 0; } diff --git a/src/gallium/drivers/nv50/nv50_shader_state.c b/src/gallium/drivers/nv50/nv50_shader_state.c index 6c41e8f456..306aa81d98 100644 --- a/src/gallium/drivers/nv50/nv50_shader_state.c +++ b/src/gallium/drivers/nv50/nv50_shader_state.c @@ -39,6 +39,9 @@ nv50_transfer_constbuf(struct nv50_context *nv50, uint32_t *map; unsigned count, start; + if (buf == NULL) + return; + map = pipe_buffer_map(pipe, buf, PIPE_TRANSFER_READ, &transfer); if (!map) return; diff --git a/src/gallium/drivers/nvfx/nvfx_screen.c b/src/gallium/drivers/nvfx/nvfx_screen.c index 8024800bd0..d7553e9f39 100644 --- a/src/gallium/drivers/nvfx/nvfx_screen.c +++ b/src/gallium/drivers/nvfx/nvfx_screen.c @@ -37,7 +37,7 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_POINT_SPRITE: return 1; case PIPE_CAP_MAX_RENDER_TARGETS: - return screen->use_nv4x ? 4 : 2; + return screen->use_nv4x ? 4 : 1; case PIPE_CAP_OCCLUSION_QUERY: return 1; case PIPE_CAP_TIMER_QUERY: @@ -77,6 +77,10 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return 1; case PIPE_CAP_DEPTH_CLAMP: return 0; // TODO: implement depth clamp + case PIPE_CAP_PRIMITIVE_RESTART: + return 0; // TODO: implement primitive restart + case PIPE_CAP_SHADER_STENCIL_EXPORT: + return 0; default: NOUVEAU_ERR("Warning: unknown PIPE_CAP %d\n", param); return 0; @@ -114,6 +118,11 @@ nvfx_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, enum return 0; /* we could expose these, but nothing uses them */ case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 0; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 0; default: break; } @@ -146,6 +155,12 @@ nvfx_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, enum return 0; /* we could expose these, but nothing uses them */ case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + return 0; + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 1; default: break; } diff --git a/src/gallium/drivers/r300/SConscript b/src/gallium/drivers/r300/SConscript index bf023daaa5..b49db93799 100644 --- a/src/gallium/drivers/r300/SConscript +++ b/src/gallium/drivers/r300/SConscript @@ -39,5 +39,7 @@ r300 = env.ConvenienceLibrary( 'r300_transfer.c', ] + r300compiler) + r300compiler +env.Alias('r300', r300) + Export('r300') diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c index 91a374a583..0ac4e4c6f1 100644 --- a/src/gallium/drivers/r300/r300_blit.c +++ b/src/gallium/drivers/r300/r300_blit.c @@ -176,12 +176,12 @@ static void r300_clear(struct pipe_context* pipe, fb->zsbuf ? r300_texture(fb->zsbuf->texture) : NULL; uint32_t width = fb->width; uint32_t height = fb->height; - boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); + boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); uint32_t hyperz_dcv = hyperz->zb_depthclearvalue; /* Enable fast Z clear. * The zbuffer must be in micro-tiled mode, otherwise it locks up. */ - if ((buffers & PIPE_CLEAR_DEPTHSTENCIL) && has_hyperz) { + if ((buffers & PIPE_CLEAR_DEPTHSTENCIL) && can_hyperz) { hyperz_dcv = hyperz->zb_depthclearvalue = r300_depth_clear_value(fb->zsbuf->format, depth, stencil); diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c index 624dadd07d..e8c09b214a 100644 --- a/src/gallium/drivers/r300/r300_context.c +++ b/src/gallium/drivers/r300/r300_context.c @@ -79,6 +79,9 @@ static void r300_release_referenced_objects(struct r300_context *r300) NULL); } + /* The dummy VBO. */ + pipe_resource_reference(&r300->dummy_vb, NULL); + /* The SWTCL VBO. */ pipe_resource_reference(&r300->vbo, NULL); @@ -184,7 +187,7 @@ static void r300_setup_atoms(struct r300_context* r300) boolean has_tcl = r300->screen->caps.has_tcl; boolean drm_2_3_0 = r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0); boolean drm_2_6_0 = r300->rws->get_value(r300->rws, R300_VID_DRM_2_6_0); - boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); + boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); boolean has_hiz_ram = r300->screen->caps.hiz_ram > 0; /* Create the actual atom list. @@ -240,7 +243,7 @@ static void r300_setup_atoms(struct r300_context* r300) /* TX. */ R300_INIT_ATOM(texture_cache_inval, 2); R300_INIT_ATOM(textures_state, 0); - if (has_hyperz) { + if (can_hyperz) { /* HiZ Clear */ if (has_hiz_ram) R300_INIT_ATOM(hiz_clear, 0); @@ -488,6 +491,7 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen, rtempl.target = PIPE_TEXTURE_2D; rtempl.format = PIPE_FORMAT_I8_UNORM; rtempl.bind = PIPE_BIND_SAMPLER_VIEW; + rtempl.usage = PIPE_USAGE_IMMUTABLE; rtempl.width0 = 1; rtempl.height0 = 1; rtempl.depth0 = 1; @@ -501,6 +505,19 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen, pipe_resource_reference(&tex, NULL); } + { + struct pipe_resource vb = {}; + vb.target = PIPE_BUFFER; + vb.format = PIPE_FORMAT_R8_UNORM; + vb.bind = PIPE_BIND_VERTEX_BUFFER; + vb.usage = PIPE_USAGE_IMMUTABLE; + vb.width0 = sizeof(float) * 16; + vb.height0 = 1; + vb.depth0 = 1; + + r300->dummy_vb = screen->resource_create(screen, &vb); + } + return &r300->context; fail: diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h index b59bc00261..7217c51b95 100644 --- a/src/gallium/drivers/r300/r300_context.h +++ b/src/gallium/drivers/r300/r300_context.h @@ -480,6 +480,10 @@ struct r300_context { * dummy texture there. */ struct r300_sampler_view *texkill_sampler; + /* When no vertex buffer is set, this one is used instead to prevent + * hardlocks. */ + struct pipe_resource *dummy_vb; + /* The currently active query. */ struct r300_query *query_current; /* The saved query for blitter operations. */ diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index 3a1085d2dc..c187f115da 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -358,7 +358,7 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state) struct pipe_framebuffer_state* fb = (struct pipe_framebuffer_state*)state; struct r300_surface* surf; unsigned i; - boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); + boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); CS_LOCALS(r300); BEGIN_CS(size); @@ -411,7 +411,7 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state) OUT_CS_REG_SEQ(R300_ZB_DEPTHPITCH, 1); OUT_CS_RELOC(surf->buffer, surf->pitch, 0, surf->domain); - if (has_hyperz) { + if (can_hyperz) { uint32_t surf_pitch; struct r300_texture *tex; int level = surf->base.level; diff --git a/src/gallium/drivers/r300/r300_hyperz.c b/src/gallium/drivers/r300/r300_hyperz.c index eb5b0c36f8..79f7f8abe9 100644 --- a/src/gallium/drivers/r300/r300_hyperz.c +++ b/src/gallium/drivers/r300/r300_hyperz.c @@ -44,10 +44,10 @@ static bool r300_get_sc_hz_max(struct r300_context *r300) { struct r300_dsa_state *dsa_state = r300->dsa_state.state; - int func = dsa_state->z_stencil_control & 0x7; + int func = dsa_state->z_stencil_control & R300_ZS_MASK; int ret = R300_SC_HYPERZ_MIN; - if (func >= 4 && func <= 7) + if (func >= R300_ZS_GEQUAL && func <= R300_ZS_ALWAYS) ret = R300_SC_HYPERZ_MAX; return ret; } @@ -55,23 +55,26 @@ static bool r300_get_sc_hz_max(struct r300_context *r300) static bool r300_zfunc_same_direction(int func1, int func2) { /* func1 is less/lessthan */ - if (func1 == 1 || func1 == 2) - if (func2 == 3 || func2 == 4 || func2 == 5) + if ((func1 == R300_ZS_LESS || func1 == R300_ZS_LEQUAL) && + (func2 == R300_ZS_EQUAL || func2 == R300_ZS_GEQUAL || + func2 == R300_ZS_GREATER)) return FALSE; - if (func2 == 1 || func2 == 2) - if (func1 == 4 || func1 == 5) + /* func1 is greater/greaterthan */ + if ((func1 == R300_ZS_GEQUAL || func1 == R300_ZS_GREATER) && + (func2 == R300_ZS_LESS || func2 == R300_ZS_LEQUAL)) return FALSE; + return TRUE; } - + static int r300_get_hiz_min(struct r300_context *r300) { struct r300_dsa_state *dsa_state = r300->dsa_state.state; - int func = dsa_state->z_stencil_control & 0x7; + int func = dsa_state->z_stencil_control & R300_ZS_MASK; int ret = R300_HIZ_MIN; - if (func == 1 || func == 2) + if (func == R300_ZS_LESS || func == R300_ZS_LEQUAL) ret = R300_HIZ_MAX; return ret; } @@ -112,13 +115,16 @@ static boolean r300_can_hiz(struct r300_context *r300) } /* depth comparison function - if just cleared save and return okay */ if (z->current_func == -1) { - int func = dsa_state->z_stencil_control & 0x7; + int func = dsa_state->z_stencil_control & R300_ZS_MASK; if (func != 0 && func != 7) - z->current_func = dsa_state->z_stencil_control & 0x7; + z->current_func = dsa_state->z_stencil_control & R300_ZS_MASK; } else { /* simple don't change */ - if (!r300_zfunc_same_direction(z->current_func, (dsa_state->z_stencil_control & 0x7))) { - DBG(r300, DBG_HYPERZ, "z func changed direction - disabling hyper-z %d -> %d\n", z->current_func, dsa_state->z_stencil_control); + if (!r300_zfunc_same_direction(z->current_func, + (dsa_state->z_stencil_control & R300_ZS_MASK))) { + DBG(r300, DBG_HYPERZ, + "z func changed direction - disabling hyper-z %d -> %d\n", + z->current_func, dsa_state->z_stencil_control); return FALSE; } } diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c index 2f00c878f5..60700cf303 100644 --- a/src/gallium/drivers/r300/r300_render.c +++ b/src/gallium/drivers/r300/r300_render.c @@ -535,29 +535,8 @@ static void r300_draw_range_elements(struct pipe_context* pipe, r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0); unsigned short_count; int buffer_offset = 0, index_offset = 0; /* for index bias emulation */ - boolean translate = FALSE; unsigned new_offset; - if (r300->skip_rendering) { - return; - } - - if (!u_trim_pipe_prim(mode, &count)) { - return; - } - - /* Index buffer range checking. */ - if ((start + count) * indexSize > indexBuffer->width0) { - fprintf(stderr, "r300: Invalid index buffer range. Skipping rendering.\n"); - return; - } - - /* Set up fallback for incompatible vertex layout if needed. */ - if (r300->incompatible_vb_layout || r300->velems->incompatible_layout) { - r300_begin_vertex_translate(r300); - translate = TRUE; - } - if (indexBias && !r500_index_bias_supported(r300)) { r300_split_index_bias(r300, indexBias, &buffer_offset, &index_offset); } @@ -603,10 +582,6 @@ done: if (indexBuffer != orgIndexBuffer) { pipe_resource_reference( &indexBuffer, NULL ); } - - if (translate) { - r300_end_vertex_translate(r300); - } } static void r300_draw_arrays(struct pipe_context* pipe, unsigned mode, @@ -617,21 +592,6 @@ static void r300_draw_arrays(struct pipe_context* pipe, unsigned mode, count > 65536 && r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0); unsigned short_count; - boolean translate = FALSE; - - if (r300->skip_rendering) { - return; - } - - if (!u_trim_pipe_prim(mode, &count)) { - return; - } - - /* Set up fallback for incompatible vertex layout if needed. */ - if (r300->incompatible_vb_layout || r300->velems->incompatible_layout) { - r300_begin_vertex_translate(r300); - translate = TRUE; - } r300_update_derived_state(r300); @@ -642,7 +602,7 @@ static void r300_draw_arrays(struct pipe_context* pipe, unsigned mode, if (!r300_prepare_for_rendering(r300, PREP_FIRST_DRAW | PREP_VALIDATE_VBOS | PREP_EMIT_AOS, NULL, 9, start, 0)) - goto done; + return; if (alt_num_verts || count <= 65535) { r300_emit_draw_arrays(r300, mode, count); @@ -659,32 +619,53 @@ static void r300_draw_arrays(struct pipe_context* pipe, unsigned mode, if (!r300_prepare_for_rendering(r300, PREP_VALIDATE_VBOS | PREP_EMIT_AOS, NULL, 9, start, 0)) - goto done; + return; } } while (count); } } - -done: - if (translate) { - r300_end_vertex_translate(r300); - } } static void r300_draw_vbo(struct pipe_context* pipe, const struct pipe_draw_info *info) { struct r300_context* r300 = r300_context(pipe); + unsigned count = info->count; + boolean translate = FALSE; + boolean indexed = info->indexed && r300->index_buffer.buffer; + unsigned start_indexed = 0; - if (!r300->velems->count || !r300->vertex_buffer_count) - return; + if (r300->skip_rendering) { + return; + } - if (info->indexed && r300->index_buffer.buffer) { - unsigned offset; + if (!u_trim_pipe_prim(info->mode, &count)) { + return; + } + /* Index buffer range checking. */ + if (indexed) { assert(r300->index_buffer.offset % r300->index_buffer.index_size == 0); - offset = r300->index_buffer.offset / r300->index_buffer.index_size; + /* Compute start for draw_elements, taking the offset into account. */ + start_indexed = + info->start + + (r300->index_buffer.offset / r300->index_buffer.index_size); + + if ((start_indexed + count) * r300->index_buffer.index_size > + r300->index_buffer.buffer->width0) { + fprintf(stderr, "r300: Invalid index buffer range. Skipping rendering.\n"); + return; + } + } + + /* Set up fallback for incompatible vertex layout if needed. */ + if (r300->incompatible_vb_layout || r300->velems->incompatible_layout) { + r300_begin_vertex_translate(r300); + translate = TRUE; + } + + if (indexed) { r300_draw_range_elements(pipe, r300->index_buffer.buffer, r300->index_buffer.index_size, @@ -692,14 +673,17 @@ static void r300_draw_vbo(struct pipe_context* pipe, info->min_index, info->max_index, info->mode, - info->start + offset, - info->count); - } - else { + start_indexed, + count); + } else { r300_draw_arrays(pipe, info->mode, info->start, - info->count); + count); + } + + if (translate) { + r300_end_vertex_translate(r300); } } diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index b448924f85..759d0e6696 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -32,6 +32,8 @@ #include "r300_winsys.h" #include "r300_public.h" +#include "draw/draw_context.h" + /* Return the identifier behind whom the brave coders responsible for this * amalgamation of code, sweat, and duct tape, routinely obscure their names. * @@ -44,31 +46,31 @@ static const char* r300_get_vendor(struct pipe_screen* pscreen) } static const char* chip_families[] = { - "R300", - "R350", - "R360", - "RV350", - "RV370", - "RV380", - "R420", - "R423", - "R430", - "R480", - "R481", - "RV410", - "RS400", - "RC410", - "RS480", - "RS482", - "RS600", - "RS690", - "RS740", - "RV515", - "R520", - "RV530", - "R580", - "RV560", - "RV570" + "ATI R300", + "ATI R350", + "ATI R360", + "ATI RV350", + "ATI RV370", + "ATI RV380", + "ATI R420", + "ATI R423", + "ATI R430", + "ATI R480", + "ATI R481", + "ATI RV410", + "ATI RS400", + "ATI RC410", + "ATI RS480", + "ATI RS482", + "ATI RS600", + "ATI RS690", + "ATI RS740", + "ATI RV515", + "ATI R520", + "ATI RV530", + "ATI R580", + "ATI RV560", + "ATI RV570" }; static const char* r300_get_name(struct pipe_screen* pscreen) @@ -125,6 +127,8 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_DEPTH_CLAMP: /* XXX implemented, but breaks Regnum Online */ case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: case PIPE_CAP_SHADER_STENCIL_EXPORT: + case PIPE_CAP_STREAM_OUTPUT: + case PIPE_CAP_PRIMITIVE_RESTART: return 0; /* Texturing. */ @@ -154,8 +158,8 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER: return 0; default: - fprintf(stderr, "r300: Implementation error: Bad param %d\n", - param); + debug_printf("r300: Warning: Unknown CAP %d in get_param.\n", + param); return 0; } } @@ -205,9 +209,18 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e return is_r500 ? 1 : 0; case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 0; } break; case PIPE_SHADER_VERTEX: + if (!r300screen->caps.has_tcl) { + return draw_get_shader_param(shader, param); + } + switch (param) { case PIPE_SHADER_CAP_MAX_INSTRUCTIONS: @@ -232,6 +245,12 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e return is_r500 ? 4 : 0; /* XXX guessed. */ case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + return 0; + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 1; default: break; } @@ -264,9 +283,16 @@ static float r300_get_paramf(struct pipe_screen* pscreen, enum pipe_cap param) return 16.0f; case PIPE_CAP_MAX_TEXTURE_LOD_BIAS: return 16.0f; + case PIPE_CAP_GUARD_BAND_LEFT: + case PIPE_CAP_GUARD_BAND_TOP: + case PIPE_CAP_GUARD_BAND_RIGHT: + case PIPE_CAP_GUARD_BAND_BOTTOM: + /* XXX I don't know what these should be but the least we can do is + * silence the potential error message */ + return 0.0f; default: - fprintf(stderr, "r300: Implementation error: Bad paramf %d\n", - param); + debug_printf("r300: Warning: Unknown CAP %d in get_paramf.\n", + param); return 0.0f; } } diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c index f2479a994c..247c22216e 100644 --- a/src/gallium/drivers/r300/r300_state.c +++ b/src/gallium/drivers/r300/r300_state.c @@ -684,7 +684,7 @@ void r300_mark_fb_state_dirty(struct r300_context *r300, enum r300_fb_state_change change) { struct pipe_framebuffer_state *state = r300->fb_state.state; - boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); + boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); /* What is marked as dirty depends on the enum r300_fb_state_change. */ r300->gpu_flush.dirty = TRUE; @@ -703,7 +703,7 @@ void r300_mark_fb_state_dirty(struct r300_context *r300, r300->fb_state.size += 10; else if (state->zsbuf) { r300->fb_state.size += 10; - if (has_hyperz) + if (can_hyperz) r300->fb_state.size += r300->screen->caps.hiz_ram ? 8 : 4; } @@ -717,7 +717,7 @@ static void struct r300_context* r300 = r300_context(pipe); struct r300_aa_state *aa = (struct r300_aa_state*)r300->aa_state.state; struct pipe_framebuffer_state *old_state = r300->fb_state.state; - boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); + boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); unsigned max_width, max_height, i; uint32_t zbuffer_bpp = 0; int blocksize; @@ -764,7 +764,7 @@ static void zbuffer_bpp = 24; break; } - if (has_hyperz) { + if (can_hyperz) { struct r300_surface *zs_surf = r300_surface(state->zsbuf); struct r300_texture *tex; int compress = r300->screen->caps.is_rv350 ? RV350_Z_COMPRESS_88 : R300_Z_COMPRESS_44; @@ -1448,6 +1448,15 @@ static void r300_set_vertex_buffers(struct pipe_context* pipe, struct pipe_vertex_buffer *vbo; unsigned i, max_index = (1 << 24) - 1; boolean any_user_buffer = FALSE; + struct pipe_vertex_buffer dummy_vb = {0}; + + /* There must be at least one vertex buffer set, otherwise it locks up. */ + if (!count) { + dummy_vb.buffer = r300->dummy_vb; + dummy_vb.max_index = r300->dummy_vb->width0 / 4; + buffers = &dummy_vb; + count = 1; + } if (count == r300->vertex_buffer_count && memcmp(r300->vertex_buffer, buffers, @@ -1601,6 +1610,14 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe, struct r300_vertex_element_state *velems; unsigned i; enum pipe_format *format; + struct pipe_vertex_element dummy_attrib = {0}; + + /* R300 Programmable Stream Control (PSC) doesn't support 0 vertex elements. */ + if (!count) { + dummy_attrib.src_format = PIPE_FORMAT_R8G8B8A8_UNORM; + attribs = &dummy_attrib; + count = 1; + } assert(count <= PIPE_MAX_ATTRIBS); velems = CALLOC_STRUCT(r300_vertex_element_state); @@ -1667,7 +1684,8 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe, * swizzles are already set up. * Also compute the vertex size. */ for (i = 0; i < count; i++) { - /* This is OK because we check for aligned strides too. */ + /* This is OK because we check for aligned strides too + * elsewhere. */ velems->hw_format_size[i] = align(util_format_get_blocksize(velems->hw_format[i]), 4); velems->vertex_size_dwords += velems->hw_format_size[i] / 4; @@ -1789,7 +1807,7 @@ static void r300_set_constant_buffer(struct pipe_context *pipe, { struct r300_context* r300 = r300_context(pipe); struct r300_constant_buffer *cbuf; - uint32_t *mapped = r300_buffer(buf)->user_buffer; + uint32_t *mapped; switch (shader) { case PIPE_SHADER_VERTEX: diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c index 904736ef06..1cff3483b5 100644 --- a/src/gallium/drivers/r300/r300_state_derived.c +++ b/src/gallium/drivers/r300/r300_state_derived.c @@ -25,6 +25,7 @@ #include "util/u_math.h" #include "util/u_memory.h" +#include "util/u_pack_color.h" #include "r300_context.h" #include "r300_fs.h" @@ -433,6 +434,8 @@ static void r300_update_rs_block(struct r300_context *r300) fp_offset++; col_count++; DBG(r300, DBG_RS, "r300: Rasterized FACE written to FS.\n"); + } else if (fs_inputs->face != ATTR_UNUSED) { + fprintf(stderr, "r300: ERROR: FS input FACE unassigned.\n"); } /* Rasterize texture coordinates. */ @@ -484,12 +487,10 @@ static void r300_update_rs_block(struct r300_context *r300) } } - if (DBG_ON(r300, DBG_RS)) { - for (; i < ATTR_GENERIC_COUNT; i++) { - if (fs_inputs->generic[i] != ATTR_UNUSED) { - DBG(r300, DBG_RS, - "r300: FS input generic %i unassigned.\n", i); - } + for (; i < ATTR_GENERIC_COUNT; i++) { + if (fs_inputs->generic[i] != ATTR_UNUSED) { + fprintf(stderr, "r300: ERROR: FS input generic %i unassigned, " + "not enough hardware slots.\n", i); } } @@ -520,7 +521,12 @@ static void r300_update_rs_block(struct r300_context *r300) if (fs_inputs->fog != ATTR_UNUSED) { fp_offset++; - DBG(r300, DBG_RS, "r300: FS input fog unassigned.\n"); + if (tex_count < 8) { + DBG(r300, DBG_RS, "r300: FS input fog unassigned.\n"); + } else { + fprintf(stderr, "r300: ERROR: FS input fog unassigned, " + "not enough hardware slots.\n"); + } } } @@ -543,6 +549,11 @@ static void r300_update_rs_block(struct r300_context *r300) fp_offset++; tex_count++; tex_ptr += 4; + } else { + if (fs_inputs->wpos != ATTR_UNUSED && tex_count >= 8) { + fprintf(stderr, "r300: ERROR: FS input WPOS unassigned, " + "not enough hardware slots.\n"); + } } /* Invalidate the rest of the no-TCL (GA) stream locations. */ @@ -584,53 +595,56 @@ static uint32_t r300_get_border_color(enum pipe_format format, const float border[4]) { const struct util_format_description *desc; - float border_swizzled[4] = { - border[2], - border[1], - border[0], - border[3] - }; - uint32_t r; + float border_swizzled[4] = {0}; + unsigned i; + union util_color uc = {0}; desc = util_format_description(format); - /* We don't use util_pack_format because it does not handle the formats - * we want, e.g. R4G4B4A4 is non-existent in Gallium. */ + /* Apply inverse swizzle of the format. */ + for (i = 0; i < 4; i++) { + switch (desc->swizzle[i]) { + case UTIL_FORMAT_SWIZZLE_X: + border_swizzled[2] = border[i]; + break; + case UTIL_FORMAT_SWIZZLE_Y: + border_swizzled[1] = border[i]; + break; + case UTIL_FORMAT_SWIZZLE_Z: + border_swizzled[0] = border[i]; + break; + case UTIL_FORMAT_SWIZZLE_W: + border_swizzled[3] = border[i]; + break; + } + } + switch (desc->channel[0].size) { case 4: - r = ((float_to_ubyte(border_swizzled[0]) & 0xf0) >> 4) | - ((float_to_ubyte(border_swizzled[1]) & 0xf0) << 0) | - ((float_to_ubyte(border_swizzled[2]) & 0xf0) << 4) | - ((float_to_ubyte(border_swizzled[3]) & 0xf0) << 8); + util_pack_color(border_swizzled, PIPE_FORMAT_B4G4R4A4_UNORM, &uc); break; case 5: if (desc->channel[1].size == 5) { - r = ((float_to_ubyte(border_swizzled[0]) & 0xf8) >> 3) | - ((float_to_ubyte(border_swizzled[1]) & 0xf8) << 2) | - ((float_to_ubyte(border_swizzled[2]) & 0xf8) << 7) | - ((float_to_ubyte(border_swizzled[3]) & 0x80) << 8); + util_pack_color(border_swizzled, PIPE_FORMAT_B5G5R5A1_UNORM, &uc); } else if (desc->channel[1].size == 6) { - r = ((float_to_ubyte(border_swizzled[0]) & 0xf8) >> 3) | - ((float_to_ubyte(border_swizzled[1]) & 0xfc) << 3) | - ((float_to_ubyte(border_swizzled[2]) & 0xf8) << 8); + util_pack_color(border_swizzled, PIPE_FORMAT_B5G6R5_UNORM, &uc); } else { assert(0); - r = 0; } break; default: - /* I think the fat formats (16, 32) are specified - * as the 8-bit ones. I am not sure how compressed formats - * work here. */ - r = ((float_to_ubyte(border_swizzled[0]) & 0xff) << 0) | - ((float_to_ubyte(border_swizzled[1]) & 0xff) << 8) | - ((float_to_ubyte(border_swizzled[2]) & 0xff) << 16) | - ((float_to_ubyte(border_swizzled[3]) & 0xff) << 24); + case 8: + util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_UNORM, &uc); + break; + + case 10: + util_pack_color(border_swizzled, PIPE_FORMAT_B10G10R10A2_UNORM, &uc); + break; } - return r; + return uc.ui; } static void r300_merge_textures_and_samplers(struct r300_context* r300) diff --git a/src/gallium/drivers/r300/r300_tgsi_to_rc.c b/src/gallium/drivers/r300/r300_tgsi_to_rc.c index a4911b9a2a..33448bf0de 100644 --- a/src/gallium/drivers/r300/r300_tgsi_to_rc.c +++ b/src/gallium/drivers/r300/r300_tgsi_to_rc.c @@ -363,10 +363,7 @@ void r300_tgsi_to_rc(struct tgsi_to_rc * ttr, break; case TGSI_TOKEN_TYPE_INSTRUCTION: inst = &parser.FullToken.FullInstruction; - /* This hack with the RET opcode woudn't work with - * conditionals. */ - if (inst->Instruction.Opcode == TGSI_OPCODE_END || - inst->Instruction.Opcode == TGSI_OPCODE_RET) { + if (inst->Instruction.Opcode == TGSI_OPCODE_END) { break; } diff --git a/src/gallium/drivers/r600/SConscript b/src/gallium/drivers/r600/SConscript index bf0ad8571b..3fc1fa94c2 100644 --- a/src/gallium/drivers/r600/SConscript +++ b/src/gallium/drivers/r600/SConscript @@ -25,10 +25,14 @@ r600 = env.ConvenienceLibrary( 'r600_resource.c', 'r600_shader.c', 'r600_state.c', + 'r600_state_common.c', 'r600_texture.c', + 'r600_translate.c', 'r700_asm.c', 'evergreen_state.c', 'eg_asm.c', ]) +env.Alias('r600', r600) + Export('r600') diff --git a/src/gallium/drivers/r600/eg_asm.c b/src/gallium/drivers/r600/eg_asm.c index 52b7189e9e..21d66fa956 100644 --- a/src/gallium/drivers/r600/eg_asm.c +++ b/src/gallium/drivers/r600/eg_asm.c @@ -36,8 +36,13 @@ int eg_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf) case (EG_V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU << 3): case (EG_V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_PUSH_BEFORE << 3): bc->bytecode[id++] = S_SQ_CF_ALU_WORD0_ADDR(cf->addr >> 1) | - S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode); + S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode) | + S_SQ_CF_ALU_WORD0_KCACHE_BANK0(cf->kcache0_bank) | + S_SQ_CF_ALU_WORD0_KCACHE_BANK1(cf->kcache1_bank); bc->bytecode[id++] = S_SQ_CF_ALU_WORD1_CF_INST(cf->inst >> 3) | + S_SQ_CF_ALU_WORD1_KCACHE_MODE1(cf->kcache1_mode) | + S_SQ_CF_ALU_WORD1_KCACHE_ADDR0(cf->kcache0_addr) | + S_SQ_CF_ALU_WORD1_KCACHE_ADDR1(cf->kcache1_addr) | S_SQ_CF_ALU_WORD1_BARRIER(1) | S_SQ_CF_ALU_WORD1_COUNT((cf->ndw / 2) - 1); break; @@ -69,6 +74,8 @@ int eg_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf) case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END: case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE: case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK: + case EG_V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS: + case EG_V_SQ_CF_WORD1_SQ_CF_INST_RETURN: bc->bytecode[id++] = S_SQ_CF_WORD0_ADDR(cf->cf_addr >> 1); bc->bytecode[id++] = S_SQ_CF_WORD1_CF_INST(cf->inst) | S_SQ_CF_WORD1_BARRIER(1) | diff --git a/src/gallium/drivers/r600/eg_state_inlines.h b/src/gallium/drivers/r600/eg_state_inlines.h index be81c28b43..698299ec13 100644 --- a/src/gallium/drivers/r600/eg_state_inlines.h +++ b/src/gallium/drivers/r600/eg_state_inlines.h @@ -311,6 +311,7 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format) case PIPE_FORMAT_Z16_UNORM: return V_028C70_SWAP_STD; + case PIPE_FORMAT_L8A8_UNORM: case PIPE_FORMAT_R8G8_UNORM: return V_028C70_SWAP_STD; @@ -400,6 +401,7 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) case PIPE_FORMAT_Z16_UNORM: return V_028C70_COLOR_16; + case PIPE_FORMAT_L8A8_UNORM: case PIPE_FORMAT_R8G8_UNORM: return V_028C70_COLOR_8_8; @@ -447,8 +449,10 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) return V_028C70_COLOR_16_16; /* 64-bit buffers. */ - case PIPE_FORMAT_R16G16B16A16_SSCALED: + case PIPE_FORMAT_R16G16B16_USCALED: + case PIPE_FORMAT_R16G16B16A16_USCALED: case PIPE_FORMAT_R16G16B16_SSCALED: + case PIPE_FORMAT_R16G16B16A16_SSCALED: case PIPE_FORMAT_R16G16B16A16_UNORM: case PIPE_FORMAT_R16G16B16A16_SNORM: return V_028C70_COLOR_16_16_16_16; @@ -460,6 +464,7 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) case PIPE_FORMAT_R32G32_FLOAT: return V_028C70_COLOR_32_32_FLOAT; + case PIPE_FORMAT_R32G32_USCALED: case PIPE_FORMAT_R32G32_SSCALED: return V_028C70_COLOR_32_32; @@ -473,7 +478,7 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) case PIPE_FORMAT_UYVY: case PIPE_FORMAT_YUYV: default: - R600_ERR("unsupported color format %d\n", format); + //R600_ERR("unsupported color format %d\n", format); return ~0; /* Unsupported. */ } } @@ -634,38 +639,4 @@ out_unknown: return ~0; } -static INLINE uint32_t r600_translate_vertex_data_swizzle(enum pipe_format format) -{ - const struct util_format_description *desc = util_format_description(format); - unsigned i; - uint32_t word3; - - assert(format); - - if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN) { - fprintf(stderr, "r600: Bad format %s in %s:%d\n", - util_format_short_name(format), __FUNCTION__, __LINE__); - return 0; - } - - word3 = 0; - for (i = 0; i < desc->nr_channels; i++) { - switch (i) { - case 0: - word3 |= S_03000C_DST_SEL_X(desc->swizzle[0]); - break; - case 1: - word3 |= S_03000C_DST_SEL_Y(desc->swizzle[1]); - break; - case 2: - word3 |= S_03000C_DST_SEL_Z(desc->swizzle[2]); - break; - case 3: - word3 |= S_03000C_DST_SEL_W(desc->swizzle[3]); - break; - } - } - return word3; -} - #endif diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index f394527edf..26dad7b65c 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -137,20 +137,6 @@ static void *evergreen_create_blend_state(struct pipe_context *ctx, return rstate; } -static void evergreen_bind_blend_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_blend *blend = (struct r600_pipe_blend *)state; - struct r600_pipe_state *rstate; - - if (state == NULL) - return; - rstate = &blend->rstate; - rctx->states[rstate->id] = rstate; - rctx->cb_target_mask = blend->cb_target_mask; - r600_context_pipe_state_set(&rctx->ctx, rstate); -} - static void *evergreen_create_dsa_state(struct pipe_context *ctx, const struct pipe_depth_stencil_alpha_state *state) { @@ -261,7 +247,7 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx, rstate->id = R600_PIPE_STATE_RASTERIZER; if (state->flatshade_first) prov_vtx = 0; - tmp = 0x00000001; + tmp = S_0286D4_FLAT_SHADE_ENA(1); if (state->sprite_coord_enable) { tmp |= S_0286D4_PNT_SPRITE_ENA(1) | S_0286D4_PNT_SPRITE_OVRD_X(2) | @@ -295,46 +281,23 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx, tmp = (unsigned)(state->point_size * 8.0); r600_pipe_state_add_reg(rstate, R_028A00_PA_SU_POINT_SIZE, S_028A00_HEIGHT(tmp) | S_028A00_WIDTH(tmp), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028A04_PA_SU_POINT_MINMAX, 0x80000000, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, R_028A08_PA_SU_LINE_CNTL, 0x00000008, 0xFFFFFFFF, NULL); + + tmp = (unsigned)state->line_width * 8; + r600_pipe_state_add_reg(rstate, R_028A08_PA_SU_LINE_CNTL, S_028A08_WIDTH(tmp), 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_028C00_PA_SC_LINE_CNTL, 0x00000400, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028C0C_PA_CL_GB_VERT_CLIP_ADJ, 0x3F800000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028C10_PA_CL_GB_VERT_DISC_ADJ, 0x3F800000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028C14_PA_CL_GB_HORZ_CLIP_ADJ, 0x3F800000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028C18_PA_CL_GB_HORZ_DISC_ADJ, 0x3F800000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028B7C_PA_SU_POLY_OFFSET_CLAMP, 0x0, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL, 0x00000005, 0xFFFFFFFF, NULL); - r600_pipe_state_add_reg(rstate, R_02820C_PA_SC_CLIPRECT_RULE, clip_rule, 0xFFFFFFFF, NULL); - return rstate; -} - -static void evergreen_bind_rs_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - if (state == NULL) - return; - - rctx->flatshade = rs->flatshade; - rctx->sprite_coord_enable = rs->sprite_coord_enable; - rctx->rasterizer = rs; - - rctx->states[rs->rstate.id] = &rs->rstate; - r600_context_pipe_state_set(&rctx->ctx, &rs->rstate); -} -static void evergreen_delete_rs_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; + r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL, + S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules), + 0xFFFFFFFF, NULL); - if (rctx->rasterizer == rs) { - rctx->rasterizer = NULL; - } - if (rctx->states[rs->rstate.id] == &rs->rstate) { - rctx->states[rs->rstate.id] = NULL; - } - free(rs); + r600_pipe_state_add_reg(rstate, R_02820C_PA_SC_CLIPRECT_RULE, clip_rule, 0xFFFFFFFF, NULL); + return rstate; } static void *evergreen_create_sampler_state(struct pipe_context *ctx, @@ -360,11 +323,11 @@ static void *evergreen_create_sampler_state(struct pipe_context *ctx, S_03C000_BORDER_COLOR_TYPE(uc.ui ? V_03C000_SQ_TEX_BORDER_COLOR_REGISTER : 0), 0xFFFFFFFF, NULL); /* FIXME LOD it depends on texture base level ... */ r600_pipe_state_add_reg(rstate, R_03C004_SQ_TEX_SAMPLER_WORD1_0, - S_03C004_MIN_LOD(S_FIXED(CLAMP(state->min_lod, 0, 15), 6)) | - S_03C004_MAX_LOD(S_FIXED(CLAMP(state->max_lod, 0, 15), 6)), + S_03C004_MIN_LOD(S_FIXED(CLAMP(state->min_lod, 0, 15), 8)) | + S_03C004_MAX_LOD(S_FIXED(CLAMP(state->max_lod, 0, 15), 8)), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_03C008_SQ_TEX_SAMPLER_WORD2_0, - S_03C008_LOD_BIAS(S_FIXED(CLAMP(state->lod_bias, -16, 16), 6)) | + S_03C008_LOD_BIAS(S_FIXED(CLAMP(state->lod_bias, -16, 16), 8)) | S_03C008_TYPE(1), 0xFFFFFFFF, NULL); @@ -377,15 +340,6 @@ static void *evergreen_create_sampler_state(struct pipe_context *ctx, return rstate; } -static void evergreen_sampler_view_destroy(struct pipe_context *ctx, - struct pipe_sampler_view *state) -{ - struct r600_pipe_sampler_view *resource = (struct r600_pipe_sampler_view *)state; - - pipe_resource_reference(&state->texture, NULL); - FREE(resource); -} - static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_context *ctx, struct pipe_resource *texture, const struct pipe_sampler_view *state) @@ -477,7 +431,7 @@ static void evergreen_set_vs_sampler_view(struct pipe_context *ctx, unsigned cou for (int i = 0; i < count; i++) { if (resource[i]) { - evergreen_context_pipe_state_set_vs_resource(&rctx->ctx, &resource[i]->state, i + PIPE_MAX_ATTRIBS); + evergreen_context_pipe_state_set_vs_resource(&rctx->ctx, &resource[i]->state, i); } } } @@ -510,17 +464,6 @@ static void evergreen_set_ps_sampler_view(struct pipe_context *ctx, unsigned cou rctx->ps_samplers.n_views = count; } -static void evergreen_bind_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; - - if (state == NULL) - return; - rctx->states[rstate->id] = rstate; - r600_context_pipe_state_set(&rctx->ctx, rstate); -} - static void evergreen_bind_ps_sampler(struct pipe_context *ctx, unsigned count, void **states) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; @@ -545,31 +488,6 @@ static void evergreen_bind_vs_sampler(struct pipe_context *ctx, unsigned count, } } -static void evergreen_delete_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; - - if (rctx->states[rstate->id] == rstate) { - rctx->states[rstate->id] = NULL; - } - for (int i = 0; i < rstate->nregs; i++) { - r600_bo_reference(rctx->radeon, &rstate->regs[i].bo, NULL); - } - free(rstate); -} - -static void evergreen_delete_vertex_element(struct pipe_context *ctx, void *state) -{ - struct r600_vertex_element *v = (struct r600_vertex_element*)state; - - if (v == NULL) - return; - if (--v->refcount) - return; - free(v); -} - static void evergreen_set_clip_state(struct pipe_context *ctx, const struct pipe_clip_state *state) { @@ -583,16 +501,16 @@ static void evergreen_set_clip_state(struct pipe_context *ctx, rstate->id = R600_PIPE_STATE_CLIP; for (int i = 0; i < state->nr; i++) { r600_pipe_state_add_reg(rstate, - R_0285BC_PA_CL_UCP0_X + i * 4, + R_0285BC_PA_CL_UCP0_X + i * 16, fui(state->ucp[i][0]), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, - R_0285C0_PA_CL_UCP0_Y + i * 4, + R_0285C0_PA_CL_UCP0_Y + i * 16, fui(state->ucp[i][1]) , 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, - R_0285C4_PA_CL_UCP0_Z + i * 4, + R_0285C4_PA_CL_UCP0_Z + i * 16, fui(state->ucp[i][2]), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, - R_0285C8_PA_CL_UCP0_W + i * 4, + R_0285C8_PA_CL_UCP0_W + i * 16, fui(state->ucp[i][3]), 0xFFFFFFFF, NULL); } r600_pipe_state_add_reg(rstate, R_028810_PA_CL_CLIP_CNTL, @@ -605,19 +523,6 @@ static void evergreen_set_clip_state(struct pipe_context *ctx, r600_context_pipe_state_set(&rctx->ctx, rstate); } -static void evergreen_bind_vertex_elements(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_vertex_element *v = (struct r600_vertex_element*)state; - - evergreen_delete_vertex_element(ctx, rctx->vertex_elements); - rctx->vertex_elements = v; - if (v) { - v->refcount++; -// rctx->vs_rebuild = TRUE; - } -} - static void evergreen_set_polygon_stipple(struct pipe_context *ctx, const struct pipe_poly_stipple *state) { @@ -755,7 +660,7 @@ static void evergreen_cb(struct r600_pipe_context *rctx, struct r600_pipe_state S_028C70_COMP_SWAP(swap) | S_028C70_BLEND_CLAMP(1) | S_028C70_NUMBER_TYPE(ntype); - if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) + if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) color_info |= S_028C70_SOURCE_FORMAT(1); /* FIXME handle enabling of CB beyond BASE8 which has different offset */ @@ -928,6 +833,13 @@ static void evergreen_set_constant_buffer(struct pipe_context *ctx, uint shader, struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_resource *rbuffer = (struct r600_resource*)buffer; + /* Note that the state tracker can unbind constant buffers by + * passing NULL here. + */ + if (buffer == NULL) { + return; + } + switch (shader) { case PIPE_SHADER_VERTEX: rctx->vs_const_buffer.nregs = 0; @@ -957,84 +869,31 @@ static void evergreen_set_constant_buffer(struct pipe_context *ctx, uint shader, } } -static void *evergreen_create_shader_state(struct pipe_context *ctx, - const struct pipe_shader_state *state) -{ - struct r600_pipe_shader *shader = CALLOC_STRUCT(r600_pipe_shader); - int r; - - r = r600_pipe_shader_create(ctx, shader, state->tokens); - if (r) { - return NULL; - } - return shader; -} - -static void evergreen_bind_ps_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - /* TODO delete old shader */ - rctx->ps_shader = (struct r600_pipe_shader *)state; -} - -static void evergreen_bind_vs_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - /* TODO delete old shader */ - rctx->vs_shader = (struct r600_pipe_shader *)state; -} - -static void evergreen_delete_ps_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; - - if (rctx->ps_shader == shader) { - rctx->ps_shader = NULL; - } - /* TODO proper delete */ - free(shader); -} - -static void evergreen_delete_vs_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; - - if (rctx->vs_shader == shader) { - rctx->vs_shader = NULL; - } - /* TODO proper delete */ - free(shader); -} - void evergreen_init_state_functions(struct r600_pipe_context *rctx) { rctx->context.create_blend_state = evergreen_create_blend_state; rctx->context.create_depth_stencil_alpha_state = evergreen_create_dsa_state; - rctx->context.create_fs_state = evergreen_create_shader_state; + rctx->context.create_fs_state = r600_create_shader_state; rctx->context.create_rasterizer_state = evergreen_create_rs_state; rctx->context.create_sampler_state = evergreen_create_sampler_state; rctx->context.create_sampler_view = evergreen_create_sampler_view; rctx->context.create_vertex_elements_state = r600_create_vertex_elements; - rctx->context.create_vs_state = evergreen_create_shader_state; - rctx->context.bind_blend_state = evergreen_bind_blend_state; - rctx->context.bind_depth_stencil_alpha_state = evergreen_bind_state; + rctx->context.create_vs_state = r600_create_shader_state; + rctx->context.bind_blend_state = r600_bind_blend_state; + rctx->context.bind_depth_stencil_alpha_state = r600_bind_state; rctx->context.bind_fragment_sampler_states = evergreen_bind_ps_sampler; - rctx->context.bind_fs_state = evergreen_bind_ps_shader; - rctx->context.bind_rasterizer_state = evergreen_bind_rs_state; - rctx->context.bind_vertex_elements_state = evergreen_bind_vertex_elements; + rctx->context.bind_fs_state = r600_bind_ps_shader; + rctx->context.bind_rasterizer_state = r600_bind_rs_state; + rctx->context.bind_vertex_elements_state = r600_bind_vertex_elements; rctx->context.bind_vertex_sampler_states = evergreen_bind_vs_sampler; - rctx->context.bind_vs_state = evergreen_bind_vs_shader; - rctx->context.delete_blend_state = evergreen_delete_state; - rctx->context.delete_depth_stencil_alpha_state = evergreen_delete_state; - rctx->context.delete_fs_state = evergreen_delete_ps_shader; - rctx->context.delete_rasterizer_state = evergreen_delete_rs_state; - rctx->context.delete_sampler_state = evergreen_delete_state; - rctx->context.delete_vertex_elements_state = evergreen_delete_vertex_element; - rctx->context.delete_vs_state = evergreen_delete_vs_shader; + rctx->context.bind_vs_state = r600_bind_vs_shader; + rctx->context.delete_blend_state = r600_delete_state; + rctx->context.delete_depth_stencil_alpha_state = r600_delete_state; + rctx->context.delete_fs_state = r600_delete_ps_shader; + rctx->context.delete_rasterizer_state = r600_delete_rs_state; + rctx->context.delete_sampler_state = r600_delete_state; + rctx->context.delete_vertex_elements_state = r600_delete_vertex_element; + rctx->context.delete_vs_state = r600_delete_vs_shader; rctx->context.set_blend_color = evergreen_set_blend_color; rctx->context.set_clip_state = evergreen_set_clip_state; rctx->context.set_constant_buffer = evergreen_set_constant_buffer; @@ -1048,7 +907,7 @@ void evergreen_init_state_functions(struct r600_pipe_context *rctx) rctx->context.set_index_buffer = r600_set_index_buffer; rctx->context.set_vertex_sampler_views = evergreen_set_vs_sampler_view; rctx->context.set_viewport_state = evergreen_set_viewport_state; - rctx->context.sampler_view_destroy = evergreen_sampler_view_destroy; + rctx->context.sampler_view_destroy = r600_sampler_view_destroy; } void evergreen_init_config(struct r600_pipe_context *rctx) @@ -1417,7 +1276,10 @@ void evergreen_draw(struct pipe_context *ctx, const struct pipe_draw_info *info) word2 = format | S_030008_STRIDE(vertex_buffer->stride); - word3 = r600_translate_vertex_data_swizzle(rctx->vertex_elements->hw_format[i]); + word3 = S_03000C_DST_SEL_X(V_03000C_SQ_SEL_X) | + S_03000C_DST_SEL_Y(V_03000C_SQ_SEL_Y) | + S_03000C_DST_SEL_Z(V_03000C_SQ_SEL_Z) | + S_03000C_DST_SEL_W(V_03000C_SQ_SEL_W); r600_pipe_state_add_reg(rstate, R_030000_RESOURCE0_WORD0, offset, 0xFFFFFFFF, rbuffer->bo); r600_pipe_state_add_reg(rstate, R_030004_RESOURCE0_WORD1, rbuffer->size - offset - 1, 0xFFFFFFFF, NULL); @@ -1427,7 +1289,7 @@ void evergreen_draw(struct pipe_context *ctx, const struct pipe_draw_info *info) r600_pipe_state_add_reg(rstate, R_030014_RESOURCE0_WORD5, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_030018_RESOURCE0_WORD6, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_03001C_RESOURCE0_WORD7, 0xC0000000, 0xFFFFFFFF, NULL); - evergreen_vs_resource_set(&rctx->ctx, rstate, i); + evergreen_fs_resource_set(&rctx->ctx, rstate, i); } mask = 0; @@ -1605,8 +1467,8 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader S_0286E0_PERSP_CENTROID_ENA(have_centroid); if (have_linear) spi_baryc_cntl |= S_0286E0_LINEAR_CENTER_ENA(1) | - S_0286E0_LINEAR_CENTROID_ENA(have_centroid); - + S_0286E0_LINEAR_CENTROID_ENA(have_centroid); + r600_pipe_state_add_reg(rstate, R_0286CC_SPI_PS_IN_CONTROL_0, spi_ps_in_control_0, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_0286D0_SPI_PS_IN_CONTROL_1, @@ -1692,7 +1554,7 @@ void evergreen_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader (r600_bo_offset(shader->bo)) >> 8, 0xFFFFFFFF, shader->bo); r600_pipe_state_add_reg(rstate, R_0288A4_SQ_PGM_START_FS, - (r600_bo_offset(shader->bo)) >> 8, 0xFFFFFFFF, shader->bo); + (r600_bo_offset(shader->bo)) >> 8, 0xFFFFFFFF, shader->bo_fetch); r600_pipe_state_add_reg(rstate, R_03A200_SQ_LOOP_CONST_0 + (32 * 4), 0x01000FFF, diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h index 8e96f9355e..a337916c09 100644 --- a/src/gallium/drivers/r600/evergreend.h +++ b/src/gallium/drivers/r600/evergreend.h @@ -1636,6 +1636,9 @@ #define R_028980_ALU_CONST_CACHE_VS_0 0x00028980 #define R_028A04_PA_SU_POINT_MINMAX 0x00028A04 #define R_028A08_PA_SU_LINE_CNTL 0x00028A08 +#define S_028A08_WIDTH(x) (((x) & 0xFFFF) << 0) +#define G_028A08_WIDTH(x) (((x) >> 0) & 0xFFFF) +#define C_028A08_WIDTH 0xFFFF0000 #define R_028A10_VGT_OUTPUT_PATH_CNTL 0x00028A10 #define R_028A14_VGT_HOS_CNTL 0x00028A14 #define R_028A18_VGT_HOS_MAX_TESS_LEVEL 0x00028A18 @@ -1687,6 +1690,9 @@ #define R_028C00_PA_SC_LINE_CNTL 0x00028C00 #define R_028C04_PA_SC_AA_CONFIG 0x00028C04 #define R_028C08_PA_SU_VTX_CNTL 0x00028C08 +#define S_028C08_PIX_CENTER_HALF(x) (((x) & 0x1) << 0) +#define G_028C08_PIX_CENTER_HALF(x) (((x) >> 0) & 0x1) +#define C_028C08_PIX_CENTER_HALF 0xFFFFFFFE #define R_028C0C_PA_CL_GB_VERT_CLIP_ADJ 0x00028C0C #define R_028C10_PA_CL_GB_VERT_DISC_ADJ 0x00028C10 #define R_028C14_PA_CL_GB_HORZ_CLIP_ADJ 0x00028C14 diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h index 62d983269f..a617a5b863 100644 --- a/src/gallium/drivers/r600/r600.h +++ b/src/gallium/drivers/r600/r600.h @@ -43,6 +43,7 @@ typedef uint16_t u16; typedef uint8_t u8; struct radeon; +struct winsys_handle; enum radeon_family { CHIP_UNKNOWN, @@ -112,13 +113,16 @@ struct r600_tiling_info *r600_get_tiling_info(struct radeon *radeon); /* r600_bo.c */ struct r600_bo; struct r600_bo *r600_bo(struct radeon *radeon, - unsigned size, unsigned alignment, unsigned usage); + unsigned size, unsigned alignment, + unsigned binding, unsigned usage); struct r600_bo *r600_bo_handle(struct radeon *radeon, unsigned handle, unsigned *array_mode); void *r600_bo_map(struct radeon *radeon, struct r600_bo *bo, unsigned usage, void *ctx); void r600_bo_unmap(struct radeon *radeon, struct r600_bo *bo); void r600_bo_reference(struct radeon *radeon, struct r600_bo **dst, struct r600_bo *src); +boolean r600_bo_get_winsys_handle(struct radeon *radeon, struct r600_bo *pb_bo, + unsigned stride, struct winsys_handle *whandle); static INLINE unsigned r600_bo_offset(struct r600_bo *bo) { return 0; @@ -260,6 +264,7 @@ void r600_context_fini(struct r600_context *ctx); void r600_context_pipe_state_set(struct r600_context *ctx, struct r600_pipe_state *state); void r600_context_pipe_state_set_ps_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); void r600_context_pipe_state_set_vs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); +void r600_context_pipe_state_set_fs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); void r600_context_pipe_state_set_ps_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id); void r600_context_pipe_state_set_vs_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id); void r600_context_flush(struct r600_context *ctx); @@ -280,9 +285,11 @@ int evergreen_context_init(struct r600_context *ctx, struct radeon *radeon); void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *draw); void evergreen_ps_resource_set(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); void evergreen_vs_resource_set(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); +void evergreen_fs_resource_set(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); void evergreen_context_pipe_state_set_ps_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); void evergreen_context_pipe_state_set_vs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); +void evergreen_context_pipe_state_set_fs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); void evergreen_context_pipe_state_set_ps_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id); void evergreen_context_pipe_state_set_vs_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id); diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c index d13da0ef63..ba1471eb78 100644 --- a/src/gallium/drivers/r600/r600_asm.c +++ b/src/gallium/drivers/r600/r600_asm.c @@ -23,6 +23,7 @@ #include <stdio.h> #include <errno.h> #include "util/u_memory.h" +#include "pipe/p_shader_tokens.h" #include "r600_pipe.h" #include "r600_sq.h" #include "r600_opcodes.h" @@ -55,8 +56,8 @@ static inline unsigned int r600_bc_get_num_operands(struct r600_bc_alu *alu) case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_DOT4: case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_DOT4_IEEE: case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_CUBE: - return 2; - + return 2; + case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV: case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_FLOOR: case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FRACT: @@ -74,7 +75,7 @@ static inline unsigned int r600_bc_get_num_operands(struct r600_bc_alu *alu) default: R600_ERR( "Need instruction operand number for 0x%x.\n", alu->inst); }; - + return 3; } @@ -137,20 +138,20 @@ int r600_bc_init(struct r600_bc *bc, enum radeon_family family) case CHIP_RV635: case CHIP_RS780: case CHIP_RS880: - bc->chiprev = 0; + bc->chiprev = CHIPREV_R600; break; case CHIP_RV770: case CHIP_RV730: case CHIP_RV710: case CHIP_RV740: - bc->chiprev = 1; + bc->chiprev = CHIPREV_R700; break; case CHIP_CEDAR: case CHIP_REDWOOD: case CHIP_JUNIPER: case CHIP_CYPRESS: case CHIP_HEMLOCK: - bc->chiprev = 2; + bc->chiprev = CHIPREV_EVERGREEN; break; default: R600_ERR("unknown family %d\n", bc->family); @@ -199,9 +200,9 @@ const unsigned bank_swizzle_vec[8] = {SQ_ALU_VEC_210, //000 SQ_ALU_VEC_012}; //111 const unsigned bank_swizzle_scl[8] = {SQ_ALU_SCL_210, //000 - SQ_ALU_SCL_122, //001 + SQ_ALU_SCL_122, //001 SQ_ALU_SCL_122, //010 - + SQ_ALU_SCL_221, //011 SQ_ALU_SCL_212, //100 SQ_ALU_SCL_122, //101 @@ -592,10 +593,34 @@ int r600_bc_add_cfinst(struct r600_bc *bc, int inst) /* common to all 3 families */ static int r600_bc_vtx_build(struct r600_bc *bc, struct r600_bc_vtx *vtx, unsigned id) { - bc->bytecode[id++] = S_SQ_VTX_WORD0_BUFFER_ID(vtx->buffer_id) | - S_SQ_VTX_WORD0_SRC_GPR(vtx->src_gpr) | - S_SQ_VTX_WORD0_SRC_SEL_X(vtx->src_sel_x) | - S_SQ_VTX_WORD0_MEGA_FETCH_COUNT(vtx->mega_fetch_count); + unsigned fetch_resource_start = 0; + + /* check if we are fetch shader */ + /* fetch shader can also access vertex resource, + * first fetch shader resource is at 160 + */ + if (bc->type == -1) { + switch (bc->chiprev) { + /* r600 */ + case CHIPREV_R600: + /* r700 */ + case CHIPREV_R700: + fetch_resource_start = 160; + break; + /* evergreen */ + case CHIPREV_EVERGREEN: + fetch_resource_start = 0; + break; + default: + fprintf(stderr, "%s:%s:%d unknown chiprev %d\n", + __FILE__, __func__, __LINE__, bc->chiprev); + break; + } + } + bc->bytecode[id++] = S_SQ_VTX_WORD0_BUFFER_ID(vtx->buffer_id + fetch_resource_start) | + S_SQ_VTX_WORD0_SRC_GPR(vtx->src_gpr) | + S_SQ_VTX_WORD0_SRC_SEL_X(vtx->src_sel_x) | + S_SQ_VTX_WORD0_MEGA_FETCH_COUNT(vtx->mega_fetch_count); bc->bytecode[id++] = S_SQ_VTX_WORD1_DST_SEL_X(vtx->dst_sel_x) | S_SQ_VTX_WORD1_DST_SEL_Y(vtx->dst_sel_y) | S_SQ_VTX_WORD1_DST_SEL_Z(vtx->dst_sel_z) | @@ -678,8 +703,8 @@ static int r600_bc_alu_build(struct r600_bc *bc, struct r600_bc_alu *alu, unsign S_SQ_ALU_WORD1_OP2_WRITE_MASK(alu->dst.write) | S_SQ_ALU_WORD1_OP2_ALU_INST(alu->inst) | S_SQ_ALU_WORD1_BANK_SWIZZLE(alu->bank_swizzle) | - S_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK(alu->predicate) | - S_SQ_ALU_WORD1_OP2_UPDATE_PRED(alu->predicate); + S_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK(alu->predicate) | + S_SQ_ALU_WORD1_OP2_UPDATE_PRED(alu->predicate); } if (alu->last) { if (alu->nliteral && !alu->literal_added) { @@ -701,11 +726,16 @@ static int r600_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf) case (V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU << 3): case (V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_PUSH_BEFORE << 3): bc->bytecode[id++] = S_SQ_CF_ALU_WORD0_ADDR(cf->addr >> 1) | - S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode); + S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode) | + S_SQ_CF_ALU_WORD0_KCACHE_BANK0(cf->kcache0_bank) | + S_SQ_CF_ALU_WORD0_KCACHE_BANK1(cf->kcache1_bank); bc->bytecode[id++] = S_SQ_CF_ALU_WORD1_CF_INST(cf->inst >> 3) | + S_SQ_CF_ALU_WORD1_KCACHE_MODE1(cf->kcache1_mode) | + S_SQ_CF_ALU_WORD1_KCACHE_ADDR0(cf->kcache0_addr) | + S_SQ_CF_ALU_WORD1_KCACHE_ADDR1(cf->kcache1_addr) | S_SQ_CF_ALU_WORD1_BARRIER(1) | - S_SQ_CF_ALU_WORD1_USES_WATERFALL(bc->chiprev == 0 ? cf->r6xx_uses_waterfall : 0) | + S_SQ_CF_ALU_WORD1_USES_WATERFALL(bc->chiprev == CHIPREV_R600 ? cf->r6xx_uses_waterfall : 0) | S_SQ_CF_ALU_WORD1_COUNT((cf->ndw / 2) - 1); break; case V_SQ_CF_WORD1_SQ_CF_INST_TEX: @@ -737,6 +767,8 @@ static int r600_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf) case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END: case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE: case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK: + case V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS: + case V_SQ_CF_WORD1_SQ_CF_INST_RETURN: bc->bytecode[id++] = S_SQ_CF_WORD0_ADDR(cf->cf_addr >> 1); bc->bytecode[id++] = S_SQ_CF_WORD1_CF_INST(cf->inst) | S_SQ_CF_WORD1_BARRIER(1) | @@ -761,7 +793,10 @@ int r600_bc_build(struct r600_bc *bc) int r; if (bc->callstack[0].max > 0) - bc->nstack = ((bc->callstack[0].max + 3) >> 2) + 2; + bc->nstack = ((bc->callstack[0].max + 3) >> 2) + 2; + if (bc->type == TGSI_PROCESSOR_VERTEX && !bc->nstack) { + bc->nstack = 1; + } /* first path compute addr of each CF block */ /* addr start after all the CF instructions */ @@ -790,6 +825,8 @@ int r600_bc_build(struct r600_bc *bc) case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END: case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE: case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK: + case V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS: + case V_SQ_CF_WORD1_SQ_CF_INST_RETURN: break; default: R600_ERR("unsupported CF instruction (0x%X)\n", cf->inst); @@ -805,7 +842,7 @@ int r600_bc_build(struct r600_bc *bc) return -ENOMEM; LIST_FOR_EACH_ENTRY(cf, &bc->cf, list) { addr = cf->addr; - if (bc->chiprev == 2) + if (bc->chiprev == CHIPREV_EVERGREEN) r = eg_bc_cf_build(bc, cf); else r = r600_bc_cf_build(bc, cf); @@ -816,11 +853,11 @@ int r600_bc_build(struct r600_bc *bc) case (V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_PUSH_BEFORE << 3): LIST_FOR_EACH_ENTRY(alu, &cf->alu, list) { switch(bc->chiprev) { - case 0: + case CHIPREV_R600: r = r600_bc_alu_build(bc, alu, addr); break; - case 1: - case 2: /* eg alu is same encoding as r700 */ + case CHIPREV_R700: + case CHIPREV_EVERGREEN: /* eg alu is same encoding as r700 */ r = r700_bc_alu_build(bc, alu, addr); break; default: @@ -863,6 +900,8 @@ int r600_bc_build(struct r600_bc *bc) case V_SQ_CF_WORD1_SQ_CF_INST_JUMP: case V_SQ_CF_WORD1_SQ_CF_INST_ELSE: case V_SQ_CF_WORD1_SQ_CF_INST_POP: + case V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS: + case V_SQ_CF_WORD1_SQ_CF_INST_RETURN: break; default: R600_ERR("unsupported CF instruction (0x%X)\n", cf->inst); @@ -871,3 +910,39 @@ int r600_bc_build(struct r600_bc *bc) } return 0; } + +void r600_bc_clear(struct r600_bc *bc) +{ + struct r600_bc_cf *cf = NULL, *next_cf; + + free(bc->bytecode); + bc->bytecode = NULL; + + LIST_FOR_EACH_ENTRY_SAFE(cf, next_cf, &bc->cf, list) { + struct r600_bc_alu *alu = NULL, *next_alu; + struct r600_bc_tex *tex = NULL, *next_tex; + struct r600_bc_tex *vtx = NULL, *next_vtx; + + LIST_FOR_EACH_ENTRY_SAFE(alu, next_alu, &cf->alu, list) { + free(alu); + } + + LIST_INITHEAD(&cf->alu); + + LIST_FOR_EACH_ENTRY_SAFE(tex, next_tex, &cf->tex, list) { + free(tex); + } + + LIST_INITHEAD(&cf->tex); + + LIST_FOR_EACH_ENTRY_SAFE(vtx, next_vtx, &cf->vtx, list) { + free(vtx); + } + + LIST_INITHEAD(&cf->vtx); + + free(cf); + } + + LIST_INITHEAD(&cf->list); +} diff --git a/src/gallium/drivers/r600/r600_asm.h b/src/gallium/drivers/r600/r600_asm.h index bebc7c15b0..f2016af3e7 100644 --- a/src/gallium/drivers/r600/r600_asm.h +++ b/src/gallium/drivers/r600/r600_asm.h @@ -132,6 +132,11 @@ struct r600_bc_cf { unsigned pop_count; unsigned cf_addr; /* control flow addr */ unsigned kcache0_mode; + unsigned kcache1_mode; + unsigned kcache0_addr; + unsigned kcache1_addr; + unsigned kcache0_bank; + unsigned kcache1_bank; unsigned r6xx_uses_waterfall; struct list_head alu; struct list_head tex; @@ -140,12 +145,12 @@ struct r600_bc_cf { struct r600_bc_alu *curr_bs_head; }; -#define FC_NONE 0 -#define FC_IF 1 -#define FC_LOOP 2 -#define FC_REP 3 -#define FC_PUSH_VPM 4 -#define FC_PUSH_WQM 5 +#define FC_NONE 0 +#define FC_IF 1 +#define FC_LOOP 2 +#define FC_REP 3 +#define FC_PUSH_VPM 4 +#define FC_PUSH_WQM 5 struct r600_cf_stack_entry { int type; @@ -161,10 +166,11 @@ struct r600_cf_callstack { int current; int max; }; - + struct r600_bc { enum radeon_family family; int chiprev; /* 0 - r600, 1 - r700, 2 - evergreen */ + int type; struct list_head cf; struct r600_bc_cf *cf_last; unsigned ndw; @@ -185,6 +191,7 @@ int eg_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf); /* r600_asm.c */ int r600_bc_init(struct r600_bc *bc, enum radeon_family family); +void r600_bc_clear(struct r600_bc *bc); int r600_bc_add_alu(struct r600_bc *bc, const struct r600_bc_alu *alu); int r600_bc_add_literal(struct r600_bc *bc, const u32 *value); int r600_bc_add_vtx(struct r600_bc *bc, const struct r600_bc_vtx *vtx); diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index 50d47060c1..74cf968799 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -27,9 +27,9 @@ enum r600_blitter_op /* bitmask */ { - R600_CLEAR = 1, - R600_CLEAR_SURFACE = 2, - R600_COPY = 4 + R600_CLEAR = 1, + R600_CLEAR_SURFACE = 2, + R600_COPY = 4 }; static void r600_blitter_begin(struct pipe_context *ctx, enum r600_blitter_op op) @@ -189,7 +189,6 @@ static void r600_resource_copy_region(struct pipe_context *ctx, else r600_hw_copy_region(ctx, dst, subdst, dstx, dsty, dstz, src, subsrc, srcx, srcy, srcz, width, height); - } void r600_init_blit_functions(struct r600_pipe_context *rctx) diff --git a/src/gallium/drivers/r600/r600_buffer.c b/src/gallium/drivers/r600/r600_buffer.c index 455aa2e81f..a432271b82 100644 --- a/src/gallium/drivers/r600/r600_buffer.c +++ b/src/gallium/drivers/r600/r600_buffer.c @@ -38,32 +38,6 @@ extern struct u_resource_vtbl r600_buffer_vtbl; -u32 r600_domain_from_usage(unsigned usage) -{ - u32 domain = RADEON_GEM_DOMAIN_GTT; - - if (usage & PIPE_BIND_RENDER_TARGET) { - domain |= RADEON_GEM_DOMAIN_VRAM; - } - if (usage & PIPE_BIND_DEPTH_STENCIL) { - domain |= RADEON_GEM_DOMAIN_VRAM; - } - if (usage & PIPE_BIND_SAMPLER_VIEW) { - domain |= RADEON_GEM_DOMAIN_VRAM; - } - /* also need BIND_BLIT_SOURCE/DESTINATION ? */ - if (usage & PIPE_BIND_VERTEX_BUFFER) { - domain |= RADEON_GEM_DOMAIN_GTT; - } - if (usage & PIPE_BIND_INDEX_BUFFER) { - domain |= RADEON_GEM_DOMAIN_GTT; - } - if (usage & PIPE_BIND_CONSTANT_BUFFER) { - domain |= RADEON_GEM_DOMAIN_VRAM; - } - - return domain; -} struct pipe_resource *r600_buffer_create(struct pipe_screen *screen, const struct pipe_resource *templ) @@ -85,8 +59,7 @@ struct pipe_resource *r600_buffer_create(struct pipe_screen *screen, rbuffer->r.base.b.screen = screen; rbuffer->r.base.vtbl = &r600_buffer_vtbl; rbuffer->r.size = rbuffer->r.base.b.width0; - rbuffer->r.domain = r600_domain_from_usage(rbuffer->r.base.b.bind); - bo = r600_bo((struct radeon*)screen->winsys, rbuffer->r.base.b.width0, alignment, rbuffer->r.base.b.bind); + bo = r600_bo((struct radeon*)screen->winsys, rbuffer->r.base.b.width0, alignment, rbuffer->r.base.b.bind, rbuffer->r.base.b.usage); if (bo == NULL) { FREE(rbuffer); return NULL; @@ -151,13 +124,14 @@ static void *r600_buffer_transfer_map(struct pipe_context *pipe, if ((transfer->box.x >= rbuffer->ranges[i].start) && (transfer->box.x < rbuffer->ranges[i].end)) flush = TRUE; - + if (flush) { r600_bo_reference((struct radeon*)pipe->winsys, &rbuffer->r.bo, NULL); rbuffer->num_ranges = 0; rbuffer->r.bo = r600_bo((struct radeon*)pipe->winsys, - rbuffer->r.base.b.width0, 0, - rbuffer->r.base.b.bind); + rbuffer->r.base.b.width0, 0, + rbuffer->r.base.b.bind, + rbuffer->r.base.b.usage); break; } } @@ -206,7 +180,7 @@ static void r600_buffer_transfer_flush_region(struct pipe_context *pipe, return; } } - + rbuffer->ranges[rbuffer->num_ranges].start = offset; rbuffer->ranges[rbuffer->num_ranges].end = offset+length; rbuffer->num_ranges++; diff --git a/src/gallium/drivers/r600/r600_opcodes.h b/src/gallium/drivers/r600/r600_opcodes.h index 4f9b39a7fd..2ee0c83e5d 100644 --- a/src/gallium/drivers/r600/r600_opcodes.h +++ b/src/gallium/drivers/r600/r600_opcodes.h @@ -385,8 +385,13 @@ #define EG_V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_MEM_EXPORT_COMBINED 0x0000005B #define EG_V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_MEM_RAT_COMBINED_CACHELESS 0x0000005C -#define BC_INST(bc, x) ((bc)->chiprev == 2 ? EG_##x : x) -#define CTX_INST(x) (ctx->bc->chiprev == 2 ? EG_##x : x) +#define CHIPREV_R600 0 +#define CHIPREV_R700 1 +#define CHIPREV_EVERGREEN 2 + +#define BC_INST(bc, x) ((bc)->chiprev == CHIPREV_EVERGREEN ? EG_##x : x) + +#define CTX_INST(x) (ctx->bc->chiprev == CHIPREV_EVERGREEN ? EG_##x : x) #endif diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index bea7ef5df8..d7bd4db48e 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -77,7 +77,12 @@ static void r600_destroy_context(struct pipe_context *context) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)context; + rctx->context.delete_depth_stencil_alpha_state(&rctx->context, rctx->custom_dsa_flush); + r600_context_fini(&rctx->ctx); + + util_blitter_destroy(rctx->blitter); + for (int i = 0; i < R600_PIPE_NSTATES; i++) { free(rctx->states[i]); } @@ -181,7 +186,7 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void FREE(rctx); return NULL; } - + rctx->vs_resource = CALLOC(R600_RESOURCE_ARRAY_SIZE, sizeof(struct r600_pipe_state)); if (!rctx->vs_resource) { FREE(rctx); @@ -216,24 +221,24 @@ static const char* r600_get_vendor(struct pipe_screen* pscreen) static const char *r600_get_family_name(enum radeon_family family) { switch(family) { - case CHIP_R600: return "R600"; - case CHIP_RV610: return "RV610"; - case CHIP_RV630: return "RV630"; - case CHIP_RV670: return "RV670"; - case CHIP_RV620: return "RV620"; - case CHIP_RV635: return "RV635"; - case CHIP_RS780: return "RS780"; - case CHIP_RS880: return "RS880"; - case CHIP_RV770: return "RV770"; - case CHIP_RV730: return "RV730"; - case CHIP_RV710: return "RV710"; - case CHIP_RV740: return "RV740"; - case CHIP_CEDAR: return "CEDAR"; - case CHIP_REDWOOD: return "REDWOOD"; - case CHIP_JUNIPER: return "JUNIPER"; - case CHIP_CYPRESS: return "CYPRESS"; - case CHIP_HEMLOCK: return "HEMLOCK"; - default: return "unknown"; + case CHIP_R600: return "AMD R600"; + case CHIP_RV610: return "AMD RV610"; + case CHIP_RV630: return "AMD RV630"; + case CHIP_RV670: return "AMD RV670"; + case CHIP_RV620: return "AMD RV620"; + case CHIP_RV635: return "AMD RV635"; + case CHIP_RS780: return "AMD RS780"; + case CHIP_RS880: return "AMD RS880"; + case CHIP_RV770: return "AMD RV770"; + case CHIP_RV730: return "AMD RV730"; + case CHIP_RV710: return "AMD RV710"; + case CHIP_RV740: return "AMD RV740"; + case CHIP_CEDAR: return "AMD CEDAR"; + case CHIP_REDWOOD: return "AMD REDWOOD"; + case CHIP_JUNIPER: return "AMD JUNIPER"; + case CHIP_CYPRESS: return "AMD CYPRESS"; + case CHIP_HEMLOCK: return "AMD HEMLOCK"; + default: return "AMD unknown"; } } @@ -271,6 +276,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) /* Unsupported features (boolean caps). */ case PIPE_CAP_TIMER_QUERY: case PIPE_CAP_STREAM_OUTPUT: + case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_INDEP_BLEND_FUNC: /* FIXME allow this */ return 0; @@ -364,6 +370,11 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e return 0; /* FIXME */ case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 1; default: return 0; } @@ -395,7 +406,7 @@ static boolean r600_is_format_supported(struct pipe_screen* screen, PIPE_BIND_DISPLAY_TARGET | PIPE_BIND_SCANOUT | PIPE_BIND_SHARED)) && - r600_is_colorbuffer_format_supported(format)) { + r600_is_colorbuffer_format_supported(format)) { retval |= usage & (PIPE_BIND_RENDER_TARGET | PIPE_BIND_DISPLAY_TARGET | @@ -426,6 +437,9 @@ static void r600_destroy_screen(struct pipe_screen* pscreen) if (rscreen == NULL) return; + + radeon_decref(rscreen->radeon); + FREE(rscreen); } diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 11410f17c7..ba9fedf0b6 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -83,7 +83,6 @@ struct r600_pipe_blend { struct r600_vertex_element { unsigned count; - unsigned refcount; struct pipe_vertex_element elements[PIPE_MAX_ATTRIBS]; enum pipe_format hw_format[PIPE_MAX_ATTRIBS]; unsigned hw_format_size[PIPE_MAX_ATTRIBS]; @@ -94,6 +93,7 @@ struct r600_pipe_shader { struct r600_shader shader; struct r600_pipe_state rstate; struct r600_bo *bo; + struct r600_bo *bo_fetch; struct r600_vertex_element vertex_elements; }; @@ -209,6 +209,7 @@ void r600_init_context_resource_functions(struct r600_pipe_context *r600); /* r600_shader.c */ int r600_pipe_shader_update(struct pipe_context *ctx, struct r600_pipe_shader *shader); int r600_pipe_shader_create(struct pipe_context *ctx, struct r600_pipe_shader *shader, const struct tgsi_token *tokens); +void r600_pipe_shader_destroy(struct pipe_context *ctx, struct r600_pipe_shader *shader); int r600_find_vs_semantic_index(struct r600_shader *vs, struct r600_shader *ps, int id); @@ -242,6 +243,22 @@ void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, void *r600_create_vertex_elements(struct pipe_context *ctx, unsigned count, const struct pipe_vertex_element *elements); +void r600_delete_vertex_element(struct pipe_context *ctx, void *state); +void r600_bind_blend_state(struct pipe_context *ctx, void *state); +void r600_bind_rs_state(struct pipe_context *ctx, void *state); +void r600_delete_rs_state(struct pipe_context *ctx, void *state); +void r600_sampler_view_destroy(struct pipe_context *ctx, + struct pipe_sampler_view *state); +void r600_bind_state(struct pipe_context *ctx, void *state); +void r600_delete_state(struct pipe_context *ctx, void *state); +void r600_bind_vertex_elements(struct pipe_context *ctx, void *state); + +void *r600_create_shader_state(struct pipe_context *ctx, + const struct pipe_shader_state *state); +void r600_bind_ps_shader(struct pipe_context *ctx, void *state); +void r600_bind_vs_shader(struct pipe_context *ctx, void *state); +void r600_delete_ps_shader(struct pipe_context *ctx, void *state); +void r600_delete_vs_shader(struct pipe_context *ctx, void *state); /* * common helpers */ diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h index d152285815..7a2d1f4412 100644 --- a/src/gallium/drivers/r600/r600_resource.h +++ b/src/gallium/drivers/r600/r600_resource.h @@ -35,7 +35,7 @@ struct r600_transfer { /* Buffer transfer. */ struct pipe_transfer *buffer_transfer; unsigned offset; - struct pipe_resource *linear_texture; + struct pipe_resource *staging_texture; }; /* This gets further specialized into either buffer or texture @@ -45,8 +45,6 @@ struct r600_transfer { struct r600_resource { struct u_resource base; struct r600_bo *bo; - u32 domain; - u32 flink; u32 size; }; @@ -68,9 +66,6 @@ struct r600_resource_texture { void r600_init_screen_resource_functions(struct pipe_screen *screen); -/* r600_buffer */ -u32 r600_domain_from_usage(unsigned usage); - /* r600_texture */ struct pipe_resource *r600_texture_create(struct pipe_screen *screen, const struct pipe_resource *templ); diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 0dd416c0d8..3e42309bde 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -80,7 +80,7 @@ static void r600_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shade r600_bo_offset(shader->bo) >> 8, 0xFFFFFFFF, shader->bo); r600_pipe_state_add_reg(rstate, R_028894_SQ_PGM_START_FS, - r600_bo_offset(shader->bo) >> 8, 0xFFFFFFFF, shader->bo); + r600_bo_offset(shader->bo_fetch) >> 8, 0xFFFFFFFF, shader->bo_fetch); r600_pipe_state_add_reg(rstate, R_03E200_SQ_LOOP_CONST_0 + (32 * 4), 0x01000FFF, @@ -217,8 +217,17 @@ static int r600_pipe_shader(struct pipe_context *ctx, struct r600_pipe_shader *s void *ptr; /* copy new shader */ + if (rshader->processor_type == TGSI_PROCESSOR_VERTEX && shader->bo_fetch == NULL) { + shader->bo_fetch = r600_bo(rctx->radeon, rshader->bc_fetch.ndw * 4, 4096, 0, 0); + if (shader->bo_fetch == NULL) { + return -ENOMEM; + } + ptr = r600_bo_map(rctx->radeon, shader->bo_fetch, 0, NULL); + memcpy(ptr, rshader->bc_fetch.bytecode, rshader->bc_fetch.ndw * 4); + r600_bo_unmap(rctx->radeon, shader->bo_fetch); + } if (shader->bo == NULL) { - shader->bo = r600_bo(rctx->radeon, rshader->bc.ndw * 4, 4096, 0); + shader->bo = r600_bo(rctx->radeon, rshader->bc.ndw * 4, 4096, 0, 0); if (shader->bo == NULL) { return -ENOMEM; } @@ -257,7 +266,7 @@ static int r600_shader_update(struct pipe_context *ctx, struct r600_pipe_shader const struct util_format_description *desc; enum pipe_format resource_format[160]; unsigned i, nresources = 0; - struct r600_bc *bc = &shader->bc; + struct r600_bc *bc = &shader->bc_fetch; struct r600_bc_cf *cf; struct r600_bc_vtx *vtx; @@ -272,7 +281,7 @@ static int r600_shader_update(struct pipe_context *ctx, struct r600_pipe_shader for (i = 0; i < rctx->vertex_elements->count; i++) { resource_format[nresources++] = rctx->vertex_elements->hw_format[i]; } - r600_bo_reference(rctx->radeon, &rshader->bo, NULL); + r600_bo_reference(rctx->radeon, &rshader->bo_fetch, NULL); LIST_FOR_EACH_ENTRY(cf, &bc->cf, list) { switch (cf->inst) { case V_SQ_CF_WORD1_SQ_CF_INST_VTX: @@ -293,7 +302,7 @@ static int r600_shader_update(struct pipe_context *ctx, struct r600_pipe_shader break; } } - return r600_bc_build(&shader->bc); + return r600_bc_build(&shader->bc_fetch); } int r600_pipe_shader_update(struct pipe_context *ctx, struct r600_pipe_shader *shader) @@ -334,10 +343,29 @@ int r600_pipe_shader_create(struct pipe_context *ctx, struct r600_pipe_shader *s R600_ERR("building bytecode failed !\n"); return r; } + if (shader->shader.processor_type == TGSI_PROCESSOR_VERTEX) { + r = r600_bc_build(&shader->shader.bc_fetch); + if (r) { + R600_ERR("building bytecode failed !\n"); + return r; + } + } //fprintf(stderr, "______________________________________________________________\n"); return 0; } +void +r600_pipe_shader_destroy(struct pipe_context *ctx, struct r600_pipe_shader *shader) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + r600_bo_reference(rctx->radeon, &shader->bo, NULL); + + r600_bc_clear(&shader->shader.bc); + + /* FIXME: is there more stuff to free? */ +} + /* * tgsi -> r600 shader */ @@ -352,6 +380,7 @@ struct r600_shader_ctx { unsigned temp_reg; struct r600_shader_tgsi_instruction *inst_info; struct r600_bc *bc; + struct r600_bc *bc_fetch; struct r600_shader *shader; u32 value[4]; u32 *literals; @@ -432,7 +461,7 @@ static int evergreen_interp_alu(struct r600_shader_ctx *ctx, int input) if (ctx->shader->input[input].centroid) ij_index++; } - + /* work out gpr and base_chan from index */ gpr = ij_index / 2; base_chan = (2 * (ij_index % 2)) + 1; @@ -465,9 +494,9 @@ static int evergreen_interp_alu(struct r600_shader_ctx *ctx, int input) return r; } return 0; -} - - +} + + static int tgsi_declaration(struct r600_shader_ctx *ctx) { struct tgsi_full_declaration *d = &ctx->parse.FullToken.FullDeclaration; @@ -499,11 +528,11 @@ static int tgsi_declaration(struct r600_shader_ctx *ctx) vtx.dst_sel_z = 2; vtx.dst_sel_w = 3; vtx.use_const_fields = 1; - r = r600_bc_add_vtx(ctx->bc, &vtx); + r = r600_bc_add_vtx(ctx->bc_fetch, &vtx); if (r) return r; } - if (ctx->type == TGSI_PROCESSOR_FRAGMENT && ctx->bc->chiprev == 2) { + if (ctx->type == TGSI_PROCESSOR_FRAGMENT && ctx->bc->chiprev == CHIPREV_EVERGREEN) { /* turn input into interpolate on EG */ if (ctx->shader->input[i].name != TGSI_SEMANTIC_POSITION) { if (ctx->shader->input[i].interpolate > 0) { @@ -537,7 +566,7 @@ static int r600_get_temp(struct r600_shader_ctx *ctx) return ctx->temp_reg + ctx->max_driver_temp_used++; } -/* +/* * for evergreen we need to scan the shader to find the number of GPRs we need to * reserve for interpolation. * @@ -594,6 +623,7 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s int i, r = 0, pos0; ctx.bc = &shader->bc; + ctx.bc_fetch = &shader->bc_fetch; ctx.shader = shader; r = r600_bc_init(ctx.bc, shader->family); if (r) @@ -603,6 +633,13 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s tgsi_parse_init(&ctx.parse, tokens); ctx.type = ctx.parse.FullHeader.Processor.Processor; shader->processor_type = ctx.type; + if (shader->processor_type == TGSI_PROCESSOR_VERTEX) { + r = r600_bc_init(ctx.bc_fetch, shader->family); + if (r) + return r; + ctx.bc_fetch->type = -1; + } + ctx.bc->type = shader->processor_type; /* register allocations */ /* Values [0,127] correspond to GPR[0..127]. @@ -628,8 +665,13 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s } if (ctx.type == TGSI_PROCESSOR_VERTEX) { ctx.file_offset[TGSI_FILE_INPUT] = 1; + if (ctx.bc->chiprev == CHIPREV_EVERGREEN) { + r600_bc_add_cfinst(ctx.bc, EG_V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS); + } else { + r600_bc_add_cfinst(ctx.bc, V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS); + } } - if (ctx.type == TGSI_PROCESSOR_FRAGMENT && ctx.bc->chiprev == 2) { + if (ctx.type == TGSI_PROCESSOR_FRAGMENT && ctx.bc->chiprev == CHIPREV_EVERGREEN) { ctx.file_offset[TGSI_FILE_INPUT] = evergreen_gpr_count(&ctx); } ctx.file_offset[TGSI_FILE_OUTPUT] = ctx.file_offset[TGSI_FILE_INPUT] + @@ -675,7 +717,7 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s /* reserve first tmp for everyone */ r600_get_temp(&ctx); opcode = ctx.parse.FullToken.FullInstruction.Instruction.Opcode; - if (ctx.bc->chiprev == 2) + if (ctx.bc->chiprev == CHIPREV_EVERGREEN) ctx.inst_info = &eg_shader_tgsi_instruction[opcode]; else ctx.inst_info = &r600_shader_tgsi_instruction[opcode]; @@ -797,6 +839,14 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s output[i].inst = BC_INST(ctx.bc, V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_EXPORT_DONE); } } + /* add return to fetch shader */ + if (ctx.type == TGSI_PROCESSOR_VERTEX) { + if (ctx.bc->chiprev == CHIPREV_EVERGREEN) { + r600_bc_add_cfinst(ctx.bc_fetch, EG_V_SQ_CF_WORD1_SQ_CF_INST_RETURN); + } else { + r600_bc_add_cfinst(ctx.bc_fetch, V_SQ_CF_WORD1_SQ_CF_INST_RETURN); + } + } /* add output to bytecode */ for (i = 0; i < noutput; i++) { r = r600_bc_add_output(ctx.bc, &output[i]); @@ -989,7 +1039,7 @@ static int tgsi_op2_s(struct r600_shader_ctx *ctx, int swap) r = tgsi_dst(ctx, &inst->Dst[0], i, &alu.dst); if (r) return r; - + alu.inst = ctx->inst_info->r600_opcode; if (!swap) { for (j = 0; j < inst->Instruction.NumSrcRegs; j++) { @@ -1034,7 +1084,7 @@ static int tgsi_op2_swap(struct r600_shader_ctx *ctx) return tgsi_op2_s(ctx, 1); } -/* +/* * r600 - trunc to -PI..PI range * r700 - normalize by dividing by 2PI * see fdo bug 27901 @@ -1046,7 +1096,7 @@ static int tgsi_setup_trig(struct r600_shader_ctx *ctx, int r; uint32_t lit_vals[4]; struct r600_bc_alu alu; - + memset(lit_vals, 0, 4*4); r = tgsi_split_constant(ctx, r600_src); if (r) @@ -1072,7 +1122,7 @@ static int tgsi_setup_trig(struct r600_shader_ctx *ctx, alu.src[0] = r600_src[0]; alu.src[0].chan = tgsi_chan(&inst->Src[0], 0); - + alu.src[1].sel = V_SQ_ALU_SRC_LITERAL; alu.src[1].chan = 0; alu.src[2].sel = V_SQ_ALU_SRC_LITERAL; @@ -1087,7 +1137,7 @@ static int tgsi_setup_trig(struct r600_shader_ctx *ctx, memset(&alu, 0, sizeof(struct r600_bc_alu)); alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FRACT); - + alu.dst.chan = 0; alu.dst.sel = ctx->temp_reg; alu.dst.write = 1; @@ -1099,7 +1149,7 @@ static int tgsi_setup_trig(struct r600_shader_ctx *ctx, if (r) return r; - if (ctx->bc->chiprev == 0) { + if (ctx->bc->chiprev == CHIPREV_R600) { lit_vals[0] = fui(3.1415926535897f * 2.0f); lit_vals[1] = fui(-3.1415926535897f); } else { @@ -1117,7 +1167,7 @@ static int tgsi_setup_trig(struct r600_shader_ctx *ctx, alu.src[0].sel = ctx->temp_reg; alu.src[0].chan = 0; - + alu.src[1].sel = V_SQ_ALU_SRC_LITERAL; alu.src[1].chan = 0; alu.src[2].sel = V_SQ_ALU_SRC_LITERAL; @@ -1896,10 +1946,10 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) r = r600_bc_add_alu(ctx->bc, &alu); if (r) return r; - + /* MULADD R0.x, R0.x, PS1, (0x3FC00000, 1.5f).x * MULADD R0.y, R0.y, PS1, (0x3FC00000, 1.5f).x - * muladd has no writemask, have to use another temp + * muladd has no writemask, have to use another temp */ memset(&alu, 0, sizeof(struct r600_bc_alu)); alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MULADD); @@ -1909,7 +1959,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) alu.src[0].chan = 0; alu.src[1].sel = ctx->temp_reg; alu.src[1].chan = 2; - + alu.src[2].sel = V_SQ_ALU_SRC_LITERAL; alu.src[2].chan = 0; @@ -1929,7 +1979,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) alu.src[0].chan = 1; alu.src[1].sel = ctx->temp_reg; alu.src[1].chan = 2; - + alu.src[2].sel = V_SQ_ALU_SRC_LITERAL; alu.src[2].chan = 0; @@ -1968,7 +2018,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) } src_gpr = ctx->temp_reg; } - + opcode = ctx->inst_info->r600_opcode; if (opcode == SQ_TEX_INST_SAMPLE && (inst->Texture.Texture == TGSI_TEXTURE_SHADOW1D || inst->Texture.Texture == TGSI_TEXTURE_SHADOW2D)) @@ -1978,8 +2028,6 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) tex.inst = opcode; tex.sampler_id = ctx->file_offset[inst->Src[1].Register.File] + inst->Src[1].Register.Index; tex.resource_id = tex.sampler_id; - if (ctx->shader->processor_type == TGSI_PROCESSOR_VERTEX) - tex.resource_id += PIPE_MAX_ATTRIBS; tex.src_gpr = src_gpr; tex.dst_gpr = ctx->file_offset[inst->Dst[0].Register.File] + inst->Dst[0].Register.Index; tex.dst_sel_x = (inst->Dst[0].Register.WriteMask & 1) ? 0 : 7; @@ -2014,7 +2062,6 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) /* add shadow ambient support - gallium doesn't do it yet */ return 0; - } static int tgsi_lrp(struct r600_shader_ctx *ctx) @@ -2144,7 +2191,7 @@ static int tgsi_cmp(struct r600_shader_ctx *ctx) r = r600_bc_add_alu(ctx->bc, &alu); if (r) return r; - } + } if (use_temp) return tgsi_helper_copy(ctx, inst); return 0; @@ -2330,7 +2377,7 @@ static int tgsi_exp(struct r600_shader_ctx *ctx) if (r) return r; } - + /* result.y = tmp - floor(tmp); */ if ((inst->Dst[0].Register.WriteMask >> 1) & 1) { memset(&alu, 0, sizeof(struct r600_bc_alu)); @@ -2609,16 +2656,25 @@ static int tgsi_log(struct r600_shader_ctx *ctx) return tgsi_helper_copy(ctx, inst); } -/* r6/7 only for now */ static int tgsi_eg_arl(struct r600_shader_ctx *ctx) { struct tgsi_full_instruction *inst = &ctx->parse.FullToken.FullInstruction; struct r600_bc_alu alu; int r; - memset(&alu, 0, sizeof(struct r600_bc_alu)); - alu.inst = EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT_FLOOR; + switch (inst->Instruction.Opcode) { + case TGSI_OPCODE_ARL: + alu.inst = EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT_FLOOR; + break; + case TGSI_OPCODE_ARR: + alu.inst = EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT; + break; + default: + assert(0); + return -1; + } + r = tgsi_src(ctx, &inst->Src[0], &alu.src[0]); if (r) return r; @@ -2651,7 +2707,18 @@ static int tgsi_r600_arl(struct r600_shader_ctx *ctx) int r; memset(&alu, 0, sizeof(struct r600_bc_alu)); - alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_FLOOR; + switch (inst->Instruction.Opcode) { + case TGSI_OPCODE_ARL: + alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_FLOOR; + break; + case TGSI_OPCODE_ARR: + alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA; + break; + default: + assert(0); + return -1; + } + r = tgsi_src(ctx, &inst->Src[0], &alu.src[0]); if (r) @@ -2680,8 +2747,8 @@ static int tgsi_opdst(struct r600_shader_ctx *ctx) r = tgsi_dst(ctx, &inst->Dst[0], i, &alu.dst); if (r) return r; - - if (i == 0 || i == 3) { + + if (i == 0 || i == 3) { alu.src[0].sel = V_SQ_ALU_SRC_1; } else { r = tgsi_src(ctx, &inst->Src[0], &alu.src[0]); @@ -2727,7 +2794,7 @@ static int emit_logic_pred(struct r600_shader_ctx *ctx, int opcode) alu.src[0].chan = tgsi_chan(&inst->Src[0], 0); alu.src[1].sel = V_SQ_ALU_SRC_0; alu.src[1].chan = 0; - + alu.last = 1; r = r600_bc_add_alu_type(ctx->bc, &alu, CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_PUSH_BEFORE)); @@ -2781,7 +2848,7 @@ static inline void callstack_check_depth(struct r600_shader_ctx *ctx, unsigned r ctx->bc->callstack[ctx->bc->call_sp].current + diff; } return; - } + } switch (reason) { case FC_PUSH_VPM: ctx->bc->callstack[ctx->bc->call_sp].current++; @@ -2855,7 +2922,7 @@ static int emit_setret_in_loop_flag(struct r600_shader_ctx *ctx, unsigned flag_v static void emit_testflag(struct r600_shader_ctx *ctx) { - + } static void emit_return_on_flag(struct r600_shader_ctx *ctx, unsigned ifidx) @@ -3058,7 +3125,7 @@ static struct r600_shader_tgsi_instruction r600_shader_tgsi_instruction[] = { {TGSI_OPCODE_UP4UB, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_X2D, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_ARA, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, - {TGSI_OPCODE_ARR, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, + {TGSI_OPCODE_ARR, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_r600_arl}, {TGSI_OPCODE_BRA, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_CAL, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_RET, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, @@ -3216,7 +3283,7 @@ static struct r600_shader_tgsi_instruction eg_shader_tgsi_instruction[] = { {TGSI_OPCODE_UP4UB, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_X2D, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_ARA, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, - {TGSI_OPCODE_ARR, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, + {TGSI_OPCODE_ARR, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_eg_arl}, {TGSI_OPCODE_BRA, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_CAL, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, {TGSI_OPCODE_RET, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported}, diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h index f8bc595139..cd108da491 100644 --- a/src/gallium/drivers/r600/r600_shader.h +++ b/src/gallium/drivers/r600/r600_shader.h @@ -46,6 +46,7 @@ struct r600_shader { struct r600_shader_io output[32]; enum radeon_family family; boolean uses_kill; + struct r600_bc bc_fetch; }; int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *shader); diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index df2c05ea13..bf4ca057d2 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -109,7 +109,7 @@ static void r600_draw_common(struct r600_drawl *draw) r600_pipe_state_add_reg(rstate, R_038010_RESOURCE0_WORD4, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_038014_RESOURCE0_WORD5, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_038018_RESOURCE0_WORD6, 0xC0000000, 0xFFFFFFFF, NULL); - r600_context_pipe_state_set_vs_resource(&rctx->ctx, rstate, i); + r600_context_pipe_state_set_fs_resource(&rctx->ctx, rstate, i); } mask = 0; @@ -296,7 +296,7 @@ static void *r600_create_blend_state(struct pipe_context *ctx, unsigned eqRGB = state->rt[i].rgb_func; unsigned srcRGB = state->rt[i].rgb_src_factor; unsigned dstRGB = state->rt[i].rgb_dst_factor; - + unsigned eqA = state->rt[i].alpha_func; unsigned srcA = state->rt[i].alpha_src_factor; unsigned dstA = state->rt[i].alpha_dst_factor; @@ -324,20 +324,6 @@ static void *r600_create_blend_state(struct pipe_context *ctx, return rstate; } -static void r600_bind_blend_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_blend *blend = (struct r600_pipe_blend *)state; - struct r600_pipe_state *rstate; - - if (state == NULL) - return; - rstate = &blend->rstate; - rctx->states[rstate->id] = rstate; - rctx->cb_target_mask = blend->cb_target_mask; - r600_context_pipe_state_set(&rctx->ctx, rstate); -} - static void *r600_create_dsa_state(struct pipe_context *ctx, const struct pipe_depth_stencil_alpha_state *state) { @@ -448,7 +434,7 @@ static void *r600_create_rs_state(struct pipe_context *ctx, rstate->id = R600_PIPE_STATE_RASTERIZER; if (state->flatshade_first) prov_vtx = 0; - tmp = 0x00000001; + tmp = S_0286D4_FLAT_SHADE_ENA(1); if (state->sprite_coord_enable) { tmp |= S_0286D4_PNT_SPRITE_ENA(1) | S_0286D4_PNT_SPRITE_OVRD_X(2) | @@ -483,12 +469,17 @@ static void *r600_create_rs_state(struct pipe_context *ctx, r600_pipe_state_add_reg(rstate, R_028A00_PA_SU_POINT_SIZE, S_028A00_HEIGHT(tmp) | S_028A00_WIDTH(tmp), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028A04_PA_SU_POINT_MINMAX, 0x80000000, 0xFFFFFFFF, NULL); - tmp = (unsigned)(state->line_width * 8.0); + tmp = (unsigned)state->line_width * 8; r600_pipe_state_add_reg(rstate, R_028A08_PA_SU_LINE_CNTL, S_028A08_WIDTH(tmp), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028A0C_PA_SC_LINE_STIPPLE, 0x00000005, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028A48_PA_SC_MPASS_PS_CNTL, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028C00_PA_SC_LINE_CNTL, 0x00000400, 0xFFFFFFFF, NULL); + + r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL, + S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules), + 0xFFFFFFFF, NULL); + r600_pipe_state_add_reg(rstate, R_028C0C_PA_CL_GB_VERT_CLIP_ADJ, 0x3F800000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028C10_PA_CL_GB_VERT_DISC_ADJ, 0x3F800000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_028C14_PA_CL_GB_HORZ_CLIP_ADJ, 0x3F800000, 0xFFFFFFFF, NULL); @@ -499,36 +490,6 @@ static void *r600_create_rs_state(struct pipe_context *ctx, return rstate; } -static void r600_bind_rs_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - if (state == NULL) - return; - - rctx->flatshade = rs->flatshade; - rctx->sprite_coord_enable = rs->sprite_coord_enable; - rctx->rasterizer = rs; - - rctx->states[rs->rstate.id] = &rs->rstate; - r600_context_pipe_state_set(&rctx->ctx, &rs->rstate); -} - -static void r600_delete_rs_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; - - if (rctx->rasterizer == rs) { - rctx->rasterizer = NULL; - } - if (rctx->states[rs->rstate.id] == &rs->rstate) { - rctx->states[rs->rstate.id] = NULL; - } - free(rs); -} - static void *r600_create_sampler_state(struct pipe_context *ctx, const struct pipe_sampler_state *state) { @@ -565,16 +526,6 @@ static void *r600_create_sampler_state(struct pipe_context *ctx, return rstate; } - -static void r600_sampler_view_destroy(struct pipe_context *ctx, - struct pipe_sampler_view *state) -{ - struct r600_pipe_sampler_view *resource = (struct r600_pipe_sampler_view *)state; - - pipe_resource_reference(&state->texture, NULL); - FREE(resource); -} - static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *ctx, struct pipe_resource *texture, const struct pipe_sampler_view *state) @@ -671,7 +622,7 @@ static void r600_set_vs_sampler_view(struct pipe_context *ctx, unsigned count, for (int i = 0; i < count; i++) { if (resource[i]) { - r600_context_pipe_state_set_vs_resource(&rctx->ctx, &resource[i]->state, i + PIPE_MAX_ATTRIBS); + r600_context_pipe_state_set_vs_resource(&rctx->ctx, &resource[i]->state, i); } } } @@ -705,17 +656,6 @@ static void r600_set_ps_sampler_view(struct pipe_context *ctx, unsigned count, rctx->ps_samplers.n_views = count; } -static void r600_bind_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; - - if (state == NULL) - return; - rctx->states[rstate->id] = rstate; - r600_context_pipe_state_set(&rctx->ctx, rstate); -} - static void r600_bind_ps_sampler(struct pipe_context *ctx, unsigned count, void **states) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; @@ -739,31 +679,6 @@ static void r600_bind_vs_sampler(struct pipe_context *ctx, unsigned count, void } } -static void r600_delete_state(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; - - if (rctx->states[rstate->id] == rstate) { - rctx->states[rstate->id] = NULL; - } - for (int i = 0; i < rstate->nregs; i++) { - r600_bo_reference(rctx->radeon, &rstate->regs[i].bo, NULL); - } - free(rstate); -} - -static void r600_delete_vertex_element(struct pipe_context *ctx, void *state) -{ - struct r600_vertex_element *v = (struct r600_vertex_element*)state; - - if (v == NULL) - return; - if (--v->refcount) - return; - free(v); -} - static void r600_set_clip_state(struct pipe_context *ctx, const struct pipe_clip_state *state) { @@ -777,16 +692,16 @@ static void r600_set_clip_state(struct pipe_context *ctx, rstate->id = R600_PIPE_STATE_CLIP; for (int i = 0; i < state->nr; i++) { r600_pipe_state_add_reg(rstate, - R_028E20_PA_CL_UCP0_X + i * 4, + R_028E20_PA_CL_UCP0_X + i * 16, fui(state->ucp[i][0]), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, - R_028E24_PA_CL_UCP0_Y + i * 4, + R_028E24_PA_CL_UCP0_Y + i * 16, fui(state->ucp[i][1]) , 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, - R_028E28_PA_CL_UCP0_Z + i * 4, + R_028E28_PA_CL_UCP0_Z + i * 16, fui(state->ucp[i][2]), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, - R_028E2C_PA_CL_UCP0_W + i * 4, + R_028E2C_PA_CL_UCP0_W + i * 16, fui(state->ucp[i][3]), 0xFFFFFFFF, NULL); } r600_pipe_state_add_reg(rstate, R_028810_PA_CL_CLIP_CNTL, @@ -799,19 +714,6 @@ static void r600_set_clip_state(struct pipe_context *ctx, r600_context_pipe_state_set(&rctx->ctx, rstate); } -static void r600_bind_vertex_elements(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_vertex_element *v = (struct r600_vertex_element*)state; - - r600_delete_vertex_element(ctx, rctx->vertex_elements); - rctx->vertex_elements = v; - if (v) { - v->refcount++; -// rctx->vs_rebuild = TRUE; - } -} - static void r600_set_polygon_stipple(struct pipe_context *ctx, const struct pipe_poly_stipple *state) { @@ -950,7 +852,7 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta S_0280A0_ARRAY_MODE(rtex->array_mode[level]) | S_0280A0_BLEND_CLAMP(1) | S_0280A0_NUMBER_TYPE(ntype); - if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) + if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) color_info |= S_0280A0_SOURCE_FORMAT(1); r600_pipe_state_add_reg(rstate, @@ -1031,7 +933,7 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx, rstate->id = R600_PIPE_STATE_FRAMEBUFFER; util_copy_framebuffer_state(&rctx->framebuffer, state); - + rctx->pframebuffer = &rctx->framebuffer; /* build states */ @@ -1121,6 +1023,13 @@ static void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_resource *rbuffer = (struct r600_resource*)buffer; + /* Note that the state tracker can unbind constant buffers by + * passing NULL here. + */ + if (buffer == NULL) { + return; + } + switch (shader) { case PIPE_SHADER_VERTEX: rctx->vs_const_buffer.nregs = 0; @@ -1150,59 +1059,6 @@ static void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint } } -static void *r600_create_shader_state(struct pipe_context *ctx, - const struct pipe_shader_state *state) -{ - struct r600_pipe_shader *shader = CALLOC_STRUCT(r600_pipe_shader); - int r; - - r = r600_pipe_shader_create(ctx, shader, state->tokens); - if (r) { - return NULL; - } - return shader; -} - -static void r600_bind_ps_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - /* TODO delete old shader */ - rctx->ps_shader = (struct r600_pipe_shader *)state; -} - -static void r600_bind_vs_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - - /* TODO delete old shader */ - rctx->vs_shader = (struct r600_pipe_shader *)state; -} - -static void r600_delete_ps_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; - - if (rctx->ps_shader == shader) { - rctx->ps_shader = NULL; - } - /* TODO proper delete */ - free(shader); -} - -static void r600_delete_vs_shader(struct pipe_context *ctx, void *state) -{ - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; - - if (rctx->vs_shader == shader) { - rctx->vs_shader = NULL; - } - /* TODO proper delete */ - free(shader); -} - void r600_init_state_functions(struct r600_pipe_context *rctx) { rctx->context.create_blend_state = r600_create_blend_state; diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 722ce32263..55bc5d0d22 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -30,6 +30,105 @@ #include "r600_pipe.h" /* common state between evergreen and r600 */ +void r600_bind_blend_state(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_blend *blend = (struct r600_pipe_blend *)state; + struct r600_pipe_state *rstate; + + if (state == NULL) + return; + rstate = &blend->rstate; + rctx->states[rstate->id] = rstate; + rctx->cb_target_mask = blend->cb_target_mask; + r600_context_pipe_state_set(&rctx->ctx, rstate); +} + +void r600_bind_rs_state(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + if (state == NULL) + return; + + rctx->flatshade = rs->flatshade; + rctx->sprite_coord_enable = rs->sprite_coord_enable; + rctx->rasterizer = rs; + + rctx->states[rs->rstate.id] = &rs->rstate; + r600_context_pipe_state_set(&rctx->ctx, &rs->rstate); +} + +void r600_delete_rs_state(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state; + + if (rctx->rasterizer == rs) { + rctx->rasterizer = NULL; + } + if (rctx->states[rs->rstate.id] == &rs->rstate) { + rctx->states[rs->rstate.id] = NULL; + } + free(rs); +} + +void r600_sampler_view_destroy(struct pipe_context *ctx, + struct pipe_sampler_view *state) +{ + struct r600_pipe_sampler_view *resource = (struct r600_pipe_sampler_view *)state; + + pipe_resource_reference(&state->texture, NULL); + FREE(resource); +} + +void r600_bind_state(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; + + if (state == NULL) + return; + rctx->states[rstate->id] = rstate; + r600_context_pipe_state_set(&rctx->ctx, rstate); +} + +void r600_delete_state(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_state *rstate = (struct r600_pipe_state *)state; + + if (rctx->states[rstate->id] == rstate) { + rctx->states[rstate->id] = NULL; + } + for (int i = 0; i < rstate->nregs; i++) { + r600_bo_reference(rctx->radeon, &rstate->regs[i].bo, NULL); + } + free(rstate); +} + +void r600_bind_vertex_elements(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_vertex_element *v = (struct r600_vertex_element*)state; + + rctx->vertex_elements = v; + if (v) { +// rctx->vs_rebuild = TRUE; + } +} + +void r600_delete_vertex_element(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + FREE(state); + + if (rctx->vertex_elements == state) + rctx->vertex_elements = NULL; +} + void r600_set_index_buffer(struct pipe_context *ctx, const struct pipe_index_buffer *ib) @@ -103,10 +202,10 @@ void *r600_create_vertex_elements(struct pipe_context *ctx, format = &v->hw_format[i]; switch (*format) { - FORMAT_REPLACE(R64_FLOAT, R32_FLOAT); - FORMAT_REPLACE(R64G64_FLOAT, R32G32_FLOAT); - FORMAT_REPLACE(R64G64B64_FLOAT, R32G32B32_FLOAT); - FORMAT_REPLACE(R64G64B64A64_FLOAT, R32G32B32A32_FLOAT); + FORMAT_REPLACE(R64_FLOAT, R32_FLOAT); + FORMAT_REPLACE(R64G64_FLOAT, R32G32_FLOAT); + FORMAT_REPLACE(R64G64B64_FLOAT, R32G32B32_FLOAT); + FORMAT_REPLACE(R64G64B64A64_FLOAT, R32G32B32A32_FLOAT); default:; } v->incompatible_layout = @@ -114,10 +213,63 @@ void *r600_create_vertex_elements(struct pipe_context *ctx, v->elements[i].src_format != v->hw_format[i] || v->elements[i].src_offset % 4 != 0; - v->hw_format_size[i] = - align(util_format_get_blocksize(v->hw_format[i]), 4); + v->hw_format_size[i] = align(util_format_get_blocksize(v->hw_format[i]), 4); } - v->refcount = 1; return v; } + +void *r600_create_shader_state(struct pipe_context *ctx, + const struct pipe_shader_state *state) +{ + struct r600_pipe_shader *shader = CALLOC_STRUCT(r600_pipe_shader); + int r; + + r = r600_pipe_shader_create(ctx, shader, state->tokens); + if (r) { + return NULL; + } + return shader; +} + +void r600_bind_ps_shader(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + /* TODO delete old shader */ + rctx->ps_shader = (struct r600_pipe_shader *)state; +} + +void r600_bind_vs_shader(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + /* TODO delete old shader */ + rctx->vs_shader = (struct r600_pipe_shader *)state; +} + +void r600_delete_ps_shader(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; + + if (rctx->ps_shader == shader) { + rctx->ps_shader = NULL; + } + + r600_pipe_shader_destroy(ctx, shader); + free(shader); +} + +void r600_delete_vs_shader(struct pipe_context *ctx, void *state) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state; + + if (rctx->vs_shader == shader) { + rctx->vs_shader = NULL; + } + + r600_pipe_shader_destroy(ctx, shader); + free(shader); +} diff --git a/src/gallium/drivers/r600/r600_state_inlines.h b/src/gallium/drivers/r600/r600_state_inlines.h index 1c1978f8ab..781612af57 100644 --- a/src/gallium/drivers/r600/r600_state_inlines.h +++ b/src/gallium/drivers/r600/r600_state_inlines.h @@ -282,6 +282,7 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format) switch (format) { /* 8-bit buffers. */ case PIPE_FORMAT_A8_UNORM: + return V_0280A0_SWAP_ALT_REV; case PIPE_FORMAT_I8_UNORM: case PIPE_FORMAT_L8_UNORM: case PIPE_FORMAT_R8_UNORM: @@ -472,7 +473,7 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) case PIPE_FORMAT_UYVY: case PIPE_FORMAT_YUYV: default: - R600_ERR("unsupported color format %d %s\n", format, util_format_name(format)); + //R600_ERR("unsupported color format %d %s\n", format, util_format_name(format)); return ~0; /* Unsupported. */ } } diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 4ebd5b754b..8ecd434a43 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -31,6 +31,7 @@ #include <util/u_inlines.h> #include <util/u_memory.h> #include "state_tracker/drm_driver.h" +#include "pipebuffer/pb_buffer.h" #include "r600_pipe.h" #include "r600_resource.h" #include "r600_state_inlines.h" @@ -39,8 +40,8 @@ extern struct u_resource_vtbl r600_texture_vtbl; -/* Copy from a tiled texture to a detiled one. */ -static void r600_copy_from_tiled_texture(struct pipe_context *ctx, struct r600_transfer *rtransfer) +/* Copy from a full GPU texture to a transfer's staging one. */ +static void r600_copy_to_staging_texture(struct pipe_context *ctx, struct r600_transfer *rtransfer) { struct pipe_transfer *transfer = (struct pipe_transfer*)rtransfer; struct pipe_resource *texture = transfer->resource; @@ -48,15 +49,15 @@ static void r600_copy_from_tiled_texture(struct pipe_context *ctx, struct r600_t subdst.face = 0; subdst.level = 0; - ctx->resource_copy_region(ctx, rtransfer->linear_texture, + ctx->resource_copy_region(ctx, rtransfer->staging_texture, subdst, 0, 0, 0, texture, transfer->sr, transfer->box.x, transfer->box.y, transfer->box.z, transfer->box.width, transfer->box.height); } -/* Copy from a detiled texture to a tiled one. */ -static void r600_copy_into_tiled_texture(struct pipe_context *ctx, struct r600_transfer *rtransfer) +/* Copy from a transfer's staging texture to a full GPU one. */ +static void r600_copy_from_staging_texture(struct pipe_context *ctx, struct r600_transfer *rtransfer) { struct pipe_transfer *transfer = (struct pipe_transfer*)rtransfer; struct pipe_resource *texture = transfer->resource; @@ -66,7 +67,7 @@ static void r600_copy_into_tiled_texture(struct pipe_context *ctx, struct r600_t subsrc.level = 0; ctx->resource_copy_region(ctx, texture, transfer->sr, transfer->box.x, transfer->box.y, transfer->box.z, - rtransfer->linear_texture, subsrc, + rtransfer->staging_texture, subsrc, 0, 0, 0, transfer->box.width, transfer->box.height); @@ -108,11 +109,11 @@ static unsigned r600_get_pixel_alignment(struct pipe_screen *screen, case V_038000_ARRAY_2D_TILED_THIN1: p_align = MAX2(rscreen->tiling_info->num_banks, (((rscreen->tiling_info->group_bytes / 8 / pixsize)) * - rscreen->tiling_info->num_banks)); + rscreen->tiling_info->num_banks)) * 8; break; - case 0: + case V_038000_ARRAY_LINEAR_GENERAL: default: - p_align = 64; + p_align = rscreen->tiling_info->group_bytes / pixsize; break; } return p_align; @@ -138,6 +139,29 @@ static unsigned r600_get_height_alignment(struct pipe_screen *screen, return h_align; } +static unsigned r600_get_base_alignment(struct pipe_screen *screen, + enum pipe_format format, + unsigned array_mode) +{ + struct r600_screen* rscreen = (struct r600_screen *)screen; + unsigned pixsize = util_format_get_blocksize(format); + int p_align = r600_get_pixel_alignment(screen, format, array_mode); + int h_align = r600_get_height_alignment(screen, array_mode); + int b_align; + + switch (array_mode) { + case V_038000_ARRAY_2D_TILED_THIN1: + b_align = MAX2(rscreen->tiling_info->num_banks * rscreen->tiling_info->num_channels * 8 * 8 * pixsize, + p_align * pixsize * h_align); + break; + case V_038000_ARRAY_1D_TILED_THIN1: + default: + b_align = rscreen->tiling_info->group_bytes; + break; + } + return b_align; +} + static unsigned mip_minify(unsigned size, unsigned level) { unsigned val; @@ -151,11 +175,12 @@ static unsigned r600_texture_get_stride(struct pipe_screen *screen, struct r600_resource_texture *rtex, unsigned level) { + struct r600_screen* rscreen = (struct r600_screen *)screen; struct pipe_resource *ptex = &rtex->resource.base.b; struct radeon *radeon = (struct radeon *)screen->winsys; enum chip_class chipc = r600_get_family_class(radeon); unsigned width, stride, tile_width; - + if (rtex->pitch_override) return rtex->pitch_override; @@ -166,8 +191,7 @@ static unsigned r600_texture_get_stride(struct pipe_screen *screen, width = align(width, tile_width); } stride = util_format_get_stride(ptex->format, width); - if (chipc == EVERGREEN) - stride = align(stride, 512); + return stride; } @@ -252,6 +276,9 @@ static void r600_setup_miptree(struct pipe_screen *screen, } else size = layer_size * u_minify(ptex->depth0, i); + /* align base image and start of miptree */ + if ((i == 0) || (i == 1)) + offset = align(offset, r600_get_base_alignment(screen, ptex->format, array_mode)); rtex->offset[i] = offset; rtex->layer_size[i] = layer_size; rtex->pitch_in_bytes[i] = pitch; @@ -283,7 +310,6 @@ r600_texture_create_object(struct pipe_screen *screen, pipe_reference_init(&resource->base.b.reference, 1); resource->base.b.screen = screen; resource->bo = bo; - resource->domain = r600_domain_from_usage(resource->base.b.bind); rtex->pitch_override = pitch_in_bytes_override; if (array_mode) @@ -293,7 +319,10 @@ r600_texture_create_object(struct pipe_screen *screen, resource->size = rtex->size; if (!resource->bo) { - resource->bo = r600_bo(radeon, rtex->size, 4096, 0); + struct pipe_resource *ptex = &rtex->resource.base.b; + int base_align = r600_get_base_alignment(screen, ptex->format, array_mode); + + resource->bo = r600_bo(radeon, rtex->size, base_align, base->bind, base->usage); if (!resource->bo) { FREE(rtex); return NULL; @@ -306,8 +335,14 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen, const struct pipe_resource *templ) { unsigned array_mode = 0; + static int force_tiling = -1; - if (debug_get_bool_option("R600_FORCE_TILING", FALSE)) { + /* Would like some magic "get_bool_option_once" routine. + */ + if (force_tiling == -1) + force_tiling = debug_get_bool_option("R600_FORCE_TILING", FALSE); + + if (force_tiling) { if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER) && !(templ->bind & PIPE_BIND_SCANOUT)) { array_mode = V_038000_ARRAY_2D_TILED_THIN1; @@ -335,6 +370,18 @@ static void r600_texture_destroy(struct pipe_screen *screen, FREE(rtex); } +static boolean r600_texture_get_handle(struct pipe_screen* screen, + struct pipe_resource *ptex, + struct winsys_handle *whandle) +{ + struct r600_resource_texture *rtex = (struct r600_resource_texture*)ptex; + struct r600_resource *resource = &rtex->resource; + struct radeon *radeon = (struct radeon *)screen->winsys; + + return r600_bo_get_winsys_handle(radeon, resource->bo, + rtex->pitch_in_bytes[0], whandle); +} + static struct pipe_surface *r600_get_tex_surface(struct pipe_screen *screen, struct pipe_resource *texture, unsigned face, unsigned level, @@ -434,10 +481,59 @@ int r600_texture_depth_flush(struct pipe_context *ctx, } out: + /* XXX: only do this if the depth texture has actually changed: + */ r600_blit_uncompress_depth_ptr(ctx, rtex); return 0; } +/* Needs adjustment for pixelformat: + */ +static INLINE unsigned u_box_volume( const struct pipe_box *box ) +{ + return box->width * box->depth * box->height; +}; + + +/* Figure out whether u_blitter will fallback to a transfer operation. + * If so, don't use a staging resource. + */ +static boolean permit_hardware_blit(struct pipe_screen *screen, + struct pipe_resource *res) +{ + unsigned bind; + + if (util_format_is_depth_or_stencil(res->format)) + bind = PIPE_BIND_DEPTH_STENCIL; + else + bind = PIPE_BIND_RENDER_TARGET; + + /* See r600_resource_copy_region: there is something wrong + * with depth resource copies at the moment so avoid them for + * now. + */ + if (util_format_get_component_bits(res->format, + UTIL_FORMAT_COLORSPACE_ZS, + 0) != 0) + return FALSE; + + if (!screen->is_format_supported(screen, + res->format, + res->target, + res->nr_samples, + bind, 0)) + return FALSE; + + if (!screen->is_format_supported(screen, + res->format, + res->target, + res->nr_samples, + PIPE_BIND_SAMPLER_VIEW, 0)) + return FALSE; + + return TRUE; +} + struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, struct pipe_resource *texture, struct pipe_subresource sr, @@ -448,6 +544,36 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, struct pipe_resource resource; struct r600_transfer *trans; int r; + boolean use_staging_texture = FALSE; + + /* We cannot map a tiled texture directly because the data is + * in a different order, therefore we do detiling using a blit. + * + * Also, use a temporary in GTT memory for read transfers, as + * the CPU is much happier reading out of cached system memory + * than uncached VRAM. + */ + if (rtex->tiled) + use_staging_texture = TRUE; + + if ((usage & PIPE_TRANSFER_READ) && + u_box_volume(box) > 1024) + use_staging_texture = TRUE; + + /* XXX: Use a staging texture for uploads if the underlying BO + * is busy. No interface for checking that currently? so do + * it eagerly whenever the transfer doesn't require a readback + * and might block. + */ + if ((usage & PIPE_TRANSFER_WRITE) && + !(usage & (PIPE_TRANSFER_READ | + PIPE_TRANSFER_DONTBLOCK | + PIPE_TRANSFER_UNSYNCHRONIZED))) + use_staging_texture = TRUE; + + if (!permit_hardware_blit(ctx->screen, texture) || + (texture->flags & R600_RESOURCE_FLAG_TRANSFER)) + use_staging_texture = FALSE; trans = CALLOC_STRUCT(r600_transfer); if (trans == NULL) @@ -457,6 +583,10 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, trans->transfer.usage = usage; trans->transfer.box = *box; if (rtex->depth) { + /* XXX: only readback the rectangle which is being mapped? + */ + /* XXX: when discard is true, no need to read back from depth texture + */ r = r600_texture_depth_flush(ctx, texture); if (r < 0) { R600_ERR("failed to create temporary texture to hold untiled copy\n"); @@ -464,7 +594,7 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, FREE(trans); return NULL; } - } else if (rtex->tiled) { + } else if (use_staging_texture) { resource.target = PIPE_TEXTURE_2D; resource.format = texture->format; resource.width0 = box->width; @@ -472,7 +602,7 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, resource.depth0 = 1; resource.last_level = 0; resource.nr_samples = 0; - resource.usage = PIPE_USAGE_DYNAMIC; + resource.usage = PIPE_USAGE_STAGING; resource.bind = 0; resource.flags = R600_RESOURCE_FLAG_TRANSFER; /* For texture reading, the temporary (detiled) texture is used as @@ -486,8 +616,8 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, resource.bind |= PIPE_BIND_SAMPLER_VIEW; } /* Create the temporary texture. */ - trans->linear_texture = ctx->screen->resource_create(ctx->screen, &resource); - if (trans->linear_texture == NULL) { + trans->staging_texture = ctx->screen->resource_create(ctx->screen, &resource); + if (trans->staging_texture == NULL) { R600_ERR("failed to create temporary texture to hold untiled copy\n"); pipe_resource_reference(&trans->transfer.resource, NULL); FREE(trans); @@ -495,11 +625,9 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx, } trans->transfer.stride = - ((struct r600_resource_texture *)trans->linear_texture)->pitch_in_bytes[0]; + ((struct r600_resource_texture *)trans->staging_texture)->pitch_in_bytes[0]; if (usage & PIPE_TRANSFER_READ) { - /* We cannot map a tiled texture directly because the data is - * in a different order, therefore we do detiling using a blit. */ - r600_copy_from_tiled_texture(ctx, trans); + r600_copy_to_staging_texture(ctx, trans); /* Always referenced in the blit. */ ctx->flush(ctx, 0, NULL); } @@ -516,11 +644,11 @@ void r600_texture_transfer_destroy(struct pipe_context *ctx, struct r600_transfer *rtransfer = (struct r600_transfer*)transfer; struct r600_resource_texture *rtex = (struct r600_resource_texture*)transfer->resource; - if (rtransfer->linear_texture) { + if (rtransfer->staging_texture) { if (transfer->usage & PIPE_TRANSFER_WRITE) { - r600_copy_into_tiled_texture(ctx, rtransfer); + r600_copy_from_staging_texture(ctx, rtransfer); } - pipe_resource_reference(&rtransfer->linear_texture, NULL); + pipe_resource_reference(&rtransfer->staging_texture, NULL); } if (rtex->flushed_depth_texture) { pipe_resource_reference((struct pipe_resource **)&rtex->flushed_depth_texture, NULL); @@ -537,10 +665,11 @@ void* r600_texture_transfer_map(struct pipe_context *ctx, enum pipe_format format = transfer->resource->format; struct radeon *radeon = (struct radeon *)ctx->screen->winsys; unsigned offset = 0; + unsigned usage = 0; char *map; - if (rtransfer->linear_texture) { - bo = ((struct r600_resource *)rtransfer->linear_texture)->bo; + if (rtransfer->staging_texture) { + bo = ((struct r600_resource *)rtransfer->staging_texture)->bo; } else { struct r600_resource_texture *rtex = (struct r600_resource_texture*)transfer->resource; @@ -553,7 +682,30 @@ void* r600_texture_transfer_map(struct pipe_context *ctx, transfer->box.y / util_format_get_blockheight(format) * transfer->stride + transfer->box.x / util_format_get_blockwidth(format) * util_format_get_blocksize(format); } - map = r600_bo_map(radeon, bo, 0, ctx); + + if (transfer->usage & PIPE_TRANSFER_WRITE) { + usage |= PB_USAGE_CPU_WRITE; + + if (transfer->usage & PIPE_TRANSFER_DISCARD) { + } + + if (transfer->usage & PIPE_TRANSFER_FLUSH_EXPLICIT) { + } + } + + if (transfer->usage & PIPE_TRANSFER_READ) { + usage |= PB_USAGE_CPU_READ; + } + + if (transfer->usage & PIPE_TRANSFER_DONTBLOCK) { + usage |= PB_USAGE_DONTBLOCK; + } + + if (transfer->usage & PIPE_TRANSFER_UNSYNCHRONIZED) { + usage |= PB_USAGE_UNSYNCHRONIZED; + } + + map = r600_bo_map(radeon, bo, usage, ctx); if (!map) { return NULL; } @@ -568,8 +720,8 @@ void r600_texture_transfer_unmap(struct pipe_context *ctx, struct radeon *radeon = (struct radeon *)ctx->screen->winsys; struct r600_bo *bo; - if (rtransfer->linear_texture) { - bo = ((struct r600_resource *)rtransfer->linear_texture)->bo; + if (rtransfer->staging_texture) { + bo = ((struct r600_resource *)rtransfer->staging_texture)->bo; } else { struct r600_resource_texture *rtex = (struct r600_resource_texture*)transfer->resource; @@ -584,7 +736,7 @@ void r600_texture_transfer_unmap(struct pipe_context *ctx, struct u_resource_vtbl r600_texture_vtbl = { - u_default_resource_get_handle, /* get_handle */ + r600_texture_get_handle, /* get_handle */ r600_texture_destroy, /* resource_destroy */ r600_texture_is_referenced, /* is_resource_referenced */ r600_texture_get_transfer, /* get_transfer */ @@ -689,7 +841,7 @@ uint32_t r600_translate_texformat(enum pipe_format format, result = FMT_24_8; goto out_word4; case PIPE_FORMAT_S8_USCALED: - result = V_0280A0_COLOR_8; + result = FMT_8; word4 |= S_038010_NUM_FORMAT_ALL(V_038010_SQ_NUM_FORMAT_INT); goto out_word4; default: @@ -718,7 +870,29 @@ uint32_t r600_translate_texformat(enum pipe_format format, /* S3TC formats. TODO */ if (desc->layout == UTIL_FORMAT_LAYOUT_S3TC) { - goto out_unknown; + static int r600_enable_s3tc = -1; + + if (r600_enable_s3tc == -1) + r600_enable_s3tc = + debug_get_bool_option("R600_ENABLE_S3TC", FALSE); + + if (!r600_enable_s3tc) + goto out_unknown; + + switch (format) { + case PIPE_FORMAT_DXT1_RGB: + case PIPE_FORMAT_DXT1_RGBA: + result = FMT_BC1; + goto out_word4; + case PIPE_FORMAT_DXT3_RGBA: + result = FMT_BC2; + goto out_word4; + case PIPE_FORMAT_DXT5_RGBA: + result = FMT_BC3; + goto out_word4; + default: + goto out_unknown; + } } diff --git a/src/gallium/drivers/r600/r600d.h b/src/gallium/drivers/r600/r600d.h index a3cb5b8600..ae19bfb828 100644 --- a/src/gallium/drivers/r600/r600d.h +++ b/src/gallium/drivers/r600/r600d.h @@ -2100,6 +2100,10 @@ #define G_028C00_LAST_PIXEL(x) (((x) >> 10) & 0x1) #define C_028C00_LAST_PIXEL 0xFFFFFBFF #define R_028C04_PA_SC_AA_CONFIG 0x028C04 +#define R_028C08_PA_SU_VTX_CNTL 0x028C08 +#define S_028C08_PIX_CENTER_HALF(x) (((x) & 0x1) << 0) +#define G_028C08_PIX_CENTER_HALF(x) (((x) >> 0) & 0x1) +#define C_028C08_PIX_CENTER_HALF 0xFFFFFFFE #define R_028C1C_PA_SC_AA_SAMPLE_LOCS_MCTX 0x028C1C #define R_028C48_PA_SC_AA_MASK 0x028C48 #define R_028810_PA_CL_CLIP_CNTL 0x028810 diff --git a/src/gallium/drivers/rbug/README b/src/gallium/drivers/rbug/README index b6d3a5cf35..9d7bd4e769 100644 --- a/src/gallium/drivers/rbug/README +++ b/src/gallium/drivers/rbug/README @@ -7,24 +7,10 @@ This directory contains a Gallium3D remote debugger pipe driver. It provides remote debugging functionality. -= Build Instructions = - -To build, invoke scons on the top dir as - - scons dri=no statetrackers=mesa winsys=xlib - - = Usage = -To use do - - export LD_LIBRARY_PATH=$PWD/build/linux-x86-debug/lib - -ensure the right libGL.so is being picked by doing - - ldd progs/trivial/tri +Do - export XMESA_TRACE=y GALLIUM_RBUG=true progs/trivial/tri which should open gallium remote debugging session. While the program is running diff --git a/src/gallium/drivers/rbug/SConscript b/src/gallium/drivers/rbug/SConscript index 3da6ac104a..169c2718dc 100644 --- a/src/gallium/drivers/rbug/SConscript +++ b/src/gallium/drivers/rbug/SConscript @@ -11,4 +11,6 @@ rbug = env.ConvenienceLibrary( 'rbug_screen.c', ]) +env.Alias('rbug', rbug) + Export('rbug') diff --git a/src/gallium/drivers/softpipe/SConscript b/src/gallium/drivers/softpipe/SConscript index d5f4d28aef..ea10e8a9f9 100644 --- a/src/gallium/drivers/softpipe/SConscript +++ b/src/gallium/drivers/softpipe/SConscript @@ -37,4 +37,6 @@ softpipe = env.ConvenienceLibrary( 'sp_tile_cache.c', ]) +env.Alias('softpipe', softpipe) + Export('softpipe') diff --git a/src/gallium/drivers/softpipe/sp_quad_depth_test.c b/src/gallium/drivers/softpipe/sp_quad_depth_test.c index c8f5f89568..89b2a91fc1 100644 --- a/src/gallium/drivers/softpipe/sp_quad_depth_test.c +++ b/src/gallium/drivers/softpipe/sp_quad_depth_test.c @@ -860,6 +860,7 @@ choose_depth_test(struct quad_stage *qs, /* look for special cases */ if (!alpha && !depth && + !occlusion && !stencil) { qs->run = depth_noop; } diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index a2bfa1bd8d..5f171d314a 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -64,7 +64,12 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS: return PIPE_MAX_SAMPLERS; case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS: +#ifdef HAVE_LLVM + /* Softpipe doesn't yet know how to tell draw/llvm about textures */ + return 0; +#else return PIPE_MAX_VERTEX_SAMPLERS; +#endif case PIPE_CAP_MAX_COMBINED_SAMPLERS: return PIPE_MAX_SAMPLERS + PIPE_MAX_VERTEX_SAMPLERS; case PIPE_CAP_NPOT_TEXTURES: @@ -209,13 +214,6 @@ softpipe_is_format_supported( struct pipe_screen *screen, if (format_desc->block.width != 1 || format_desc->block.height != 1) return FALSE; - - /* - * TODO: Unfortunately we cannot render into anything more than 32 bits - * because we encode color clear values into a 32bit word. - */ - if (format_desc->block.bits > 32) - return FALSE; } if (bind & PIPE_BIND_DEPTH_STENCIL) { diff --git a/src/gallium/drivers/softpipe/sp_tex_sample.c b/src/gallium/drivers/softpipe/sp_tex_sample.c index 088e48f81f..2eac4c7a82 100644 --- a/src/gallium/drivers/softpipe/sp_tex_sample.c +++ b/src/gallium/drivers/softpipe/sp_tex_sample.c @@ -44,6 +44,9 @@ #include "sp_tex_tile_cache.h" +/** Set to one to help debug texture sampling */ +#define DEBUG_TEX 0 + /* * Return fractional part of 'f'. Used for computing interpolation weights. @@ -774,6 +777,18 @@ pot_level_size(unsigned base_pot, unsigned level) } +static void +print_sample(const char *function, float rgba[NUM_CHANNELS][QUAD_SIZE]) +{ + debug_printf("%s %g %g %g %g, %g %g %g %g, %g %g %g %g, %g %g %g %g\n", + function, + rgba[0][0], rgba[1][0], rgba[2][0], rgba[3][0], + rgba[0][1], rgba[1][1], rgba[2][1], rgba[3][1], + rgba[0][2], rgba[1][2], rgba[2][2], rgba[3][2], + rgba[0][3], rgba[1][3], rgba[2][3], rgba[3][3]); +} + + /* Some image-filter fastpaths: */ static INLINE void @@ -832,6 +847,10 @@ img_filter_2d_linear_repeat_POT(struct tgsi_sampler *tgsi_sampler, tx[2][c], tx[3][c]); } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -872,6 +891,10 @@ img_filter_2d_nearest_repeat_POT(struct tgsi_sampler *tgsi_sampler, rgba[c][j] = out[c]; } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -921,6 +944,10 @@ img_filter_2d_nearest_clamp_POT(struct tgsi_sampler *tgsi_sampler, rgba[c][j] = out[c]; } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -957,6 +984,10 @@ img_filter_1d_nearest(struct tgsi_sampler *tgsi_sampler, rgba[c][j] = out[c]; } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -997,6 +1028,10 @@ img_filter_2d_nearest(struct tgsi_sampler *tgsi_sampler, rgba[c][j] = out[c]; } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -1045,6 +1080,10 @@ img_filter_cube_nearest(struct tgsi_sampler *tgsi_sampler, rgba[c][j] = out[c]; } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -1357,6 +1396,10 @@ mip_filter_linear(struct tgsi_sampler *tgsi_sampler, } } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -1402,13 +1445,9 @@ mip_filter_nearest(struct tgsi_sampler *tgsi_sampler, samp->min_img_filter(tgsi_sampler, s, t, p, NULL, tgsi_sampler_lod_bias, rgba); } -#if 0 - printf("RGBA %g %g %g %g, %g %g %g %g, %g %g %g %g, %g %g %g %g\n", - rgba[0][0], rgba[1][0], rgba[2][0], rgba[3][0], - rgba[0][1], rgba[1][1], rgba[2][1], rgba[3][1], - rgba[0][2], rgba[1][2], rgba[2][2], rgba[3][2], - rgba[0][3], rgba[1][3], rgba[2][3], rgba[3][3]); -#endif + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } @@ -1510,6 +1549,10 @@ mip_filter_linear_2d_linear_repeat_POT( } } } + + if (DEBUG_TEX) { + print_sample(__FUNCTION__, rgba); + } } diff --git a/src/gallium/drivers/softpipe/sp_tile_cache.h b/src/gallium/drivers/softpipe/sp_tile_cache.h index 031c7c1ea5..4151a47c32 100644 --- a/src/gallium/drivers/softpipe/sp_tile_cache.h +++ b/src/gallium/drivers/softpipe/sp_tile_cache.h @@ -86,7 +86,7 @@ struct softpipe_tile_cache struct softpipe_cached_tile *entries[NUM_ENTRIES]; uint clear_flags[(MAX_WIDTH / TILE_SIZE) * (MAX_HEIGHT / TILE_SIZE) / 32]; float clear_color[4]; /**< for color bufs */ - uint clear_val; /**< for z+stencil, or packed color clear value */ + uint clear_val; /**< for z+stencil */ boolean depth_stencil; /**< Is the surface a depth/stencil format? */ struct softpipe_cached_tile *tile; /**< scratch tile for clears */ diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index b5fae94f78..af99c41901 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -231,6 +231,12 @@ static int svga_get_shader_param(struct pipe_screen *screen, unsigned shader, en return svgascreen->use_ps30 ? 1 : 0; case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + return svgascreen->use_ps30 ? 1 : 0; + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 0; } break; case PIPE_SHADER_VERTEX: @@ -263,6 +269,13 @@ static int svga_get_shader_param(struct pipe_screen *screen, unsigned shader, en return svgascreen->use_vs30 ? 1 : 0; case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + return svgascreen->use_vs30 ? 1 : 0; + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + return 0; + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 1; default: break; } diff --git a/src/gallium/drivers/sw/SConscript b/src/gallium/drivers/sw/SConscript deleted file mode 100644 index e9ebf751dd..0000000000 --- a/src/gallium/drivers/sw/SConscript +++ /dev/null @@ -1,38 +0,0 @@ -####################################################################### -# SConscript for swrast convenience library -# -# This is a meta-driver which consists of any and all of the software -# rasterizers into a single driver. A software rasterizer is defined -# as any driver which takes an sw_winsys pointer as the only argument -# to create_screen. - -Import('*') - -env = env.Clone() - -# To avoid targets having to check extensively or add drivers on a whim, append -# all referenced extra drivers to the exported symbol. -extra = [] -if True: - env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE') - env.Prepend(LIBS = [softpipe]) - extra.append(softpipe) - -if env['llvm']: - env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE') - env.Tool('udis86') - env.Prepend(LIBS = [llvmpipe]) - extra.append(llvmpipe) - -if 'cell' in env['drivers']: - env.Append(CPPDEFINES = 'GALLIUM_CELL') - env.Prepend(LIBS = [cell]) - extra.append(cell) - -sw = env.ConvenienceLibrary( - target = 'sw', - source = [ - 'sw.c', - ] - ) + extra -Export('sw') diff --git a/src/gallium/drivers/sw/sw.c b/src/gallium/drivers/sw/sw.c deleted file mode 100644 index 6b873ecc1b..0000000000 --- a/src/gallium/drivers/sw/sw.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "pipe/p_compiler.h" -#include "util/u_debug.h" -#include "target-helpers/wrap_screen.h" -#include "sw_public.h" - - -/* Helper function to choose and instantiate one of the software rasterizers: - * cell, llvmpipe, softpipe. - */ - -#ifdef GALLIUM_SOFTPIPE -#include "softpipe/sp_public.h" -#endif - -#ifdef GALLIUM_LLVMPIPE -#include "llvmpipe/lp_public.h" -#endif - -#ifdef GALLIUM_CELL -#include "cell/ppu/cell_public.h" -#endif - -struct pipe_screen * -swrast_create_screen(struct sw_winsys *winsys) -{ - const char *default_driver; - const char *driver; - struct pipe_screen *screen = NULL; - -#if defined(GALLIUM_CELL) - default_driver = "cell"; -#elif defined(GALLIUM_LLVMPIPE) - default_driver = "llvmpipe"; -#elif defined(GALLIUM_SOFTPIPE) - default_driver = "softpipe"; -#else - default_driver = ""; -#endif - - driver = debug_get_option("GALLIUM_DRIVER", default_driver); - -#if defined(GALLIUM_CELL) - if (screen == NULL && strcmp(driver, "cell") == 0) - screen = cell_create_screen( winsys ); -#endif - -#if defined(GALLIUM_LLVMPIPE) - if (screen == NULL && strcmp(driver, "llvmpipe") == 0) - screen = llvmpipe_create_screen( winsys ); -#endif - -#if defined(GALLIUM_SOFTPIPE) - if (screen == NULL) - screen = softpipe_create_screen( winsys ); -#endif - - return screen; -} diff --git a/src/gallium/drivers/sw/sw_public.h b/src/gallium/drivers/sw/sw_public.h deleted file mode 100644 index 7085c5c85a..0000000000 --- a/src/gallium/drivers/sw/sw_public.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef SW_PUBLIC_H -#define SW_PUBLIC_H - -/* A convenience library, primarily to isolate the logic required to - * figure out which if any software rasterizers have been built and - * select between them. - */ -struct sw_winsys; - -struct pipe_screen * -swrast_create_screen(struct sw_winsys *winsys); - -#endif diff --git a/src/gallium/drivers/trace/README b/src/gallium/drivers/trace/README index cdcd8d2b4b..c210cba032 100644 --- a/src/gallium/drivers/trace/README +++ b/src/gallium/drivers/trace/README @@ -7,23 +7,8 @@ This directory contains a Gallium3D trace debugger pipe driver. It can traces all incoming calls. -= Build Instructions = - -To build, invoke scons on the top dir as - - scons dri=no statetrackers=mesa winsys=xlib - - = Usage = -To use do - - export LD_LIBRARY_PATH=$PWD/build/linux-x86-debug/lib - -ensure the right libGL.so is being picked by doing - - ldd progs/trivial/tri - == Tracing == For tracing then do @@ -40,6 +25,7 @@ For remote debugging see: src/gallium/drivers/rbug/README + = Integrating = You can integrate the trace pipe driver either inside the state tracker or the @@ -60,5 +46,5 @@ are automatically wrapped by trace_screen. -- -Jose Fonseca <jrfonseca@tungstengraphics.com> +Jose Fonseca <jfonseca@vmware.com> Jakob Bornecrantz <jakob@vmware.com> diff --git a/src/gallium/drivers/trace/SConscript b/src/gallium/drivers/trace/SConscript index 06b0c4863a..1384fe33d7 100644 --- a/src/gallium/drivers/trace/SConscript +++ b/src/gallium/drivers/trace/SConscript @@ -12,4 +12,6 @@ trace = env.ConvenienceLibrary( 'tr_texture.c', ]) +env.Alias('trace', trace) + Export('trace') diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 53f7b601ad..6cca301ccc 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -483,7 +483,12 @@ enum pipe_shader_cap PIPE_SHADER_CAP_MAX_TEMPS, PIPE_SHADER_CAP_MAX_ADDRS, PIPE_SHADER_CAP_MAX_PREDS, + /* boolean caps */ PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED, + PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR, + PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR, + PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR, + PIPE_SHADER_CAP_INDIRECT_CONST_ADDR, }; /** diff --git a/src/gallium/include/state_tracker/graw.h b/src/gallium/include/state_tracker/graw.h index 6a99b234aa..217fa31ba1 100644 --- a/src/gallium/include/state_tracker/graw.h +++ b/src/gallium/include/state_tracker/graw.h @@ -44,8 +44,9 @@ #include "pipe/p_compiler.h" #include "pipe/p_format.h" -struct pipe_screen; struct pipe_context; +struct pipe_screen; +struct pipe_surface; /* Returns a handle to be used with flush_frontbuffer()/present(). * @@ -71,4 +72,25 @@ PUBLIC void *graw_parse_vertex_shader( struct pipe_context *pipe, PUBLIC void *graw_parse_fragment_shader( struct pipe_context *pipe, const char *text ); +/* Parse a single command-line option, if any. Options include: + * + * -o <filename> + * + * If an option has been successfully parsed, argi is updated + * to point just after the option and return TRUE. + */ +PUBLIC boolean graw_parse_args(int *argi, int argc, char *argv[]); + +/* Saves surface contents to a file. + * + * If filename is NULL, the filename provided with the `-o' option + * is used. If the option has not been specified, the surface + * will not be saved. + * + * Returns TRUE if the surface has been saved. + */ +PUBLIC boolean graw_save_surface_to_file(struct pipe_context *pipe, + struct pipe_surface *surface, + const char *filename); + #endif diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h index 21e2165ed9..565a09614a 100644 --- a/src/gallium/include/state_tracker/st_api.h +++ b/src/gallium/include/state_tracker/st_api.h @@ -349,6 +349,12 @@ struct st_context_iface struct st_context_iface *stsrci, unsigned mask); /** + * Used to implement wglShareLists. + */ + boolean (*share)(struct st_context_iface *stctxi, + struct st_context_iface *stsrci); + + /** * Look up and return the info of a resource for EGLImage. * * This function is optional. @@ -402,6 +408,11 @@ struct st_manager struct st_api { /** + * The name of the rendering API. This is informative. + */ + const char *name; + + /** * The supported rendering API. */ enum st_api_type api; diff --git a/src/gallium/include/state_tracker/swrast_screen_create.h b/src/gallium/include/state_tracker/swrast_screen_create.h deleted file mode 100644 index a08f83a325..0000000000 --- a/src/gallium/include/state_tracker/swrast_screen_create.h +++ /dev/null @@ -1,67 +0,0 @@ -#include "pipe/p_compiler.h" -#include "util/u_debug.h" -#include "target-helpers/wrap_screen.h" - -struct sw_winsys; - -#ifdef GALLIUM_SOFTPIPE -#include "softpipe/sp_public.h" -#endif - -#ifdef GALLIUM_LLVMPIPE -#include "llvmpipe/lp_public.h" -#endif - -#ifdef GALLIUM_CELL -#include "cell/ppu/cell_public.h" -#endif - -/* - * Helper function to choose and instantiate one of the software rasterizers: - * cell, llvmpipe, softpipe. - * - * This function could be shared, but currently causes headaches for - * the build systems, particularly scons if we try. Long term, want - * to avoid having global #defines for things like GALLIUM_LLVMPIPE, - * GALLIUM_CELL, etc. Scons already eliminates those #defines, so - * things that are painful for it now are likely to be painful for - * other build systems in the future. - */ - -static INLINE struct pipe_screen * -swrast_screen_create(struct sw_winsys *winsys) -{ - const char *default_driver; - const char *driver; - struct pipe_screen *screen = NULL; - -#if defined(GALLIUM_CELL) - default_driver = "cell"; -#elif defined(GALLIUM_LLVMPIPE) - default_driver = "llvmpipe"; -#elif defined(GALLIUM_SOFTPIPE) - default_driver = "softpipe"; -#else - default_driver = ""; -#endif - - driver = debug_get_option("GALLIUM_DRIVER", default_driver); - -#if defined(GALLIUM_CELL) - if (screen == NULL && strcmp(driver, "cell") == 0) - screen = cell_create_screen( winsys ); -#endif - -#if defined(GALLIUM_LLVMPIPE) - if (screen == NULL && strcmp(driver, "llvmpipe") == 0) - screen = llvmpipe_create_screen( winsys ); -#endif - -#if defined(GALLIUM_SOFTPIPE) - if (screen == NULL) - screen = softpipe_create_screen( winsys ); -#endif - - return gallium_wrap_screen( screen ); -} - diff --git a/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp b/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp index e1c34611d1..c246fc5ef7 100644 --- a/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp +++ b/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp @@ -1101,6 +1101,7 @@ struct GalliumDXGISwapChain : public GalliumDXGIObject<IDXGISwapChain, GalliumDX struct pipe_resource* dst; struct pipe_resource* src; struct pipe_surface* dst_surface; + enum native_attachment att; void* present_cookie; hr = parent->backend->BeginPresent(desc.OutputWindow, &present_cookie, &cur_window, &rect, &rgndata, &preserve_aspect_ratio); @@ -1221,16 +1222,9 @@ struct GalliumDXGISwapChain : public GalliumDXGIObject<IDXGISwapChain, GalliumDX pipe->flush(pipe, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, 0); - if(db) - { - if(!surface->swap_buffers(surface)) - return DXGI_ERROR_DEVICE_REMOVED; - } - else - { - if(!surface->flush_frontbuffer(surface)) - return DXGI_ERROR_DEVICE_REMOVED; - } + att = (db) ? NATIVE_ATTACHMENT_BACK_LEFT : NATIVE_ATTACHMENT_FRONT_LEFT; + if(!surface->present(surface, att, FALSE, 0)) + return DXGI_ERROR_DEVICE_REMOVED; end_present: parent->backend->EndPresent(desc.OutputWindow, present_cookie); diff --git a/src/gallium/state_trackers/dri/SConscript b/src/gallium/state_trackers/dri/SConscript index aba60fb8c5..7702d8e632 100644 --- a/src/gallium/state_trackers/dri/SConscript +++ b/src/gallium/state_trackers/dri/SConscript @@ -1,6 +1,6 @@ Import('*') SConscript([ - 'sw/SConscript', - 'drm/SConscript', + 'sw/SConscript', + 'drm/SConscript', ]) diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c index 770b37037f..3d5d24e692 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.c +++ b/src/gallium/state_trackers/dri/common/dri_context.c @@ -178,7 +178,8 @@ dri_make_current(__DRIcontext * cPriv, read->texture_stamp = driReadPriv->lastStamp - 1; } - ctx->stapi->make_current(ctx->stapi, ctx->st, &draw->base, &read->base); + ctx->stapi->make_current(ctx->stapi, ctx->st, + (draw) ? &draw->base : NULL, (read) ? &read->base : NULL); return GL_TRUE; } diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.h b/src/gallium/state_trackers/dri/common/dri_drawable.h index 837d398374..2ff6b71329 100644 --- a/src/gallium/state_trackers/dri/common/dri_drawable.h +++ b/src/gallium/state_trackers/dri/common/dri_drawable.h @@ -70,7 +70,8 @@ struct dri_drawable static INLINE struct dri_drawable * dri_drawable(__DRIdrawable * driDrawPriv) { - return (struct dri_drawable *)driDrawPriv->driverPrivate; + return (struct dri_drawable *) (driDrawPriv) + ? driDrawPriv->driverPrivate : NULL; } /*********************************************************************** diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c b/src/gallium/state_trackers/dri/common/dri_screen.c index 252ad1768d..1302e9bc01 100644 --- a/src/gallium/state_trackers/dri/common/dri_screen.c +++ b/src/gallium/state_trackers/dri/common/dri_screen.c @@ -231,6 +231,9 @@ dri_fill_st_visual(struct st_visual *stvis, struct dri_screen *screen, { memset(stvis, 0, sizeof(*stvis)); + if (!mode) + return; + stvis->samples = mode->samples; stvis->render_buffer = ST_ATTACHMENT_INVALID; diff --git a/src/gallium/state_trackers/dri/drm/SConscript b/src/gallium/state_trackers/dri/drm/SConscript index 2a0af65f9b..b188f76f91 100644 --- a/src/gallium/state_trackers/dri/drm/SConscript +++ b/src/gallium/state_trackers/dri/drm/SConscript @@ -3,25 +3,26 @@ Import('*') -if env['dri']: +env = env.Clone() - env = env.Clone() +env.ParseConfig('pkg-config --cflags --libs libdrm') - env.ParseConfig('pkg-config --cflags --libs libdrm') +env.Append(CPPPATH = [ + '#/src/mapi', + '#/src/mesa', + '#/src/gallium/state_trackers/dri/common', + '#/src/mesa/drivers/dri/common', +]) - env.Append(CPPPATH = [ - '#/src/mapi', - '#/src/mesa', - '#/src/gallium/state_trackers/dri/common', - '#/src/mesa/drivers/dri/common', - ]) +sources = [ + 'dri_context.c', + 'dri_drawable.c', + 'dri_screen.c', + 'dri2.c', +] - st_dri = env.ConvenienceLibrary( - target = 'st_dri', - source = [ 'dri_context.c', - 'dri_drawable.c', - 'dri_screen.c', - 'dri2.c', - ] - ) - Export('st_dri') +st_dri = env.ConvenienceLibrary( + target = 'st_dri', + source = sources, +) +Export('st_dri') diff --git a/src/gallium/state_trackers/dri/sw/SConscript b/src/gallium/state_trackers/dri/sw/SConscript index d2eb66668e..d0c3efc6fa 100644 --- a/src/gallium/state_trackers/dri/sw/SConscript +++ b/src/gallium/state_trackers/dri/sw/SConscript @@ -3,25 +3,26 @@ Import('*') -if env['dri']: +env = env.Clone() - env = env.Clone() +env.Append(CPPPATH = [ + '#/src/mapi', + '#/src/mesa', + '#/src/gallium/state_trackers/dri/common', + '#/src/mesa/drivers/dri/common', +]) - env.Append(CPPPATH = [ - '#/src/mapi', - '#/src/mesa', - '#/src/gallium/state_trackers/dri/common', - '#/src/mesa/drivers/dri/common', - ]) +env.Append(CPPDEFINES = [('__NOT_HAVE_DRM_H', '1')]) - env.Append(CPPDEFINES = [('__NOT_HAVE_DRM_H', '1')]) +sources = [ + 'dri_context.c', + 'dri_drawable.c', + 'dri_screen.c', + 'drisw.c', +] - st_drisw = env.ConvenienceLibrary( - target = 'st_drisw', - source = [ 'dri_context.c', - 'dri_drawable.c', - 'dri_screen.c', - 'drisw.c', - ] - ) - Export('st_drisw') +st_drisw = env.ConvenienceLibrary( + target = 'st_drisw', + source = sources, +) +Export('st_drisw') diff --git a/src/gallium/state_trackers/egl/Makefile b/src/gallium/state_trackers/egl/Makefile index 8dbfc5b8e5..8cfcef968e 100644 --- a/src/gallium/state_trackers/egl/Makefile +++ b/src/gallium/state_trackers/egl/Makefile @@ -17,7 +17,7 @@ x11_INCLUDES = \ -I$(TOP)/src/mapi \ -I$(TOP)/src/mesa \ $(X11_CFLAGS) \ - $(shell pkg-config --cflags-only-I libdrm) + $(shell pkg-config --cflags-only-I libdrm dri2proto) x11_SOURCES = $(wildcard x11/*.c) \ $(TOP)/src/glx/dri2.c diff --git a/src/gallium/state_trackers/egl/SConscript b/src/gallium/state_trackers/egl/SConscript index efcce25e31..50c7681995 100644 --- a/src/gallium/state_trackers/egl/SConscript +++ b/src/gallium/state_trackers/egl/SConscript @@ -3,34 +3,32 @@ Import('*') -if 'egl' in env['statetrackers']: +env = env.Clone() - env = env.Clone() +env.Append(CPPPATH = [ + '#/src/egl/main', + '#/src/gallium/winsys/sw', + '.', +]) +env.Append(CPPDEFINES = [ + 'HAVE_GDI_BACKEND', +]) - env.Append(CPPPATH = [ - '#/src/egl/main', - '#/src/gallium/winsys/sw', - '.', - ]) - env.Append(CPPDEFINES = [ - 'HAVE_GDI_BACKEND', - ]) +common_sources = [ + 'common/egl_g3d.c', + 'common/egl_g3d_api.c', + 'common/egl_g3d_image.c', + 'common/egl_g3d_st.c', + 'common/egl_g3d_sync.c', + 'common/native_helper.c', +] - common_sources = [ - 'common/egl_g3d.c', - 'common/egl_g3d_api.c', - 'common/egl_g3d_image.c', - 'common/egl_g3d_st.c', - 'common/egl_g3d_sync.c', - 'common/native_helper.c', - ] +gdi_sources = common_sources + [ + 'gdi/native_gdi.c', +] - gdi_sources = common_sources + [ - 'gdi/native_gdi.c', - ] - - st_egl_gdi = env.ConvenienceLibrary( - target = 'st_egl_gdi', - source = gdi_sources, - ) - Export('st_egl_gdi') +st_egl_gdi = env.ConvenienceLibrary( + target = 'st_egl_gdi', + source = gdi_sources, +) +Export('st_egl_gdi') diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.c b/src/gallium/state_trackers/egl/common/egl_g3d.c index aaa2ff6bb2..a3750ac56f 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d.c @@ -126,24 +126,24 @@ egl_g3d_add_screens(_EGLDriver *drv, _EGLDisplay *dpy) continue; } - _eglInitScreen(&gscr->base); - - for (j = 0; j < num_modes; j++) { + _eglInitScreen(&gscr->base, dpy, num_modes); + for (j = 0; j < gscr->base.NumModes; j++) { const struct native_mode *nmode = native_modes[j]; - _EGLMode *mode; + _EGLMode *mode = &gscr->base.Modes[j]; - mode = _eglAddNewMode(&gscr->base, nmode->width, nmode->height, - nmode->refresh_rate, nmode->desc); - if (!mode) - break; - /* gscr->native_modes and gscr->base.Modes should be consistent */ - assert(mode == &gscr->base.Modes[j]); + mode->Width = nmode->width; + mode->Height = nmode->height; + mode->RefreshRate = nmode->refresh_rate; + mode->Optimal = EGL_FALSE; + mode->Interlaced = EGL_FALSE; + /* no need to strdup() */ + mode->Name = nmode->desc; } gscr->native = nconn; gscr->native_modes = native_modes; - _eglAddScreen(dpy, &gscr->base); + _eglLinkScreen(&gscr->base); } FREE(native_connectors); @@ -156,7 +156,8 @@ egl_g3d_add_screens(_EGLDriver *drv, _EGLDisplay *dpy) */ static EGLBoolean init_config_attributes(_EGLConfig *conf, const struct native_config *nconf, - EGLint api_mask, enum pipe_format depth_stencil_format) + EGLint api_mask, enum pipe_format depth_stencil_format, + EGLBoolean preserve_buffer, EGLint max_swap_interval) { uint rgba[4], depth_stencil[2], buffer_size; EGLint surface_type; @@ -238,6 +239,11 @@ init_config_attributes(_EGLConfig *conf, const struct native_config *nconf, conf->TransparentBlueValue = nconf->transparent_rgb_values[2]; } + conf->MinSwapInterval = 0; + conf->MaxSwapInterval = max_swap_interval; + if (preserve_buffer) + conf->SurfaceType |= EGL_SWAP_BEHAVIOR_PRESERVED_BIT; + return _eglValidateConfig(conf, EGL_FALSE); } @@ -247,7 +253,8 @@ init_config_attributes(_EGLConfig *conf, const struct native_config *nconf, static EGLBoolean egl_g3d_init_config(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, const struct native_config *nconf, - enum pipe_format depth_stencil_format) + enum pipe_format depth_stencil_format, + int preserve_buffer, int max_swap_interval) { struct egl_g3d_config *gconf = egl_g3d_config(conf); EGLint buffer_mask, api_mask; @@ -288,7 +295,8 @@ egl_g3d_init_config(_EGLDriver *drv, _EGLDisplay *dpy, } valid = init_config_attributes(&gconf->base, - nconf, api_mask, depth_stencil_format); + nconf, api_mask, depth_stencil_format, + preserve_buffer, max_swap_interval); if (!valid) { _eglLog(_EGL_DEBUG, "skip invalid config 0x%x", nconf->native_visual_id); return EGL_FALSE; @@ -349,6 +357,7 @@ egl_g3d_add_configs(_EGLDriver *drv, _EGLDisplay *dpy, EGLint id) const struct native_config **native_configs; enum pipe_format depth_stencil_formats[8]; int num_formats, num_configs, i, j; + int preserve_buffer, max_swap_interval; native_configs = gdpy->native->get_configs(gdpy->native, &num_configs); if (!num_configs) { @@ -357,6 +366,11 @@ egl_g3d_add_configs(_EGLDriver *drv, _EGLDisplay *dpy, EGLint id) return id; } + preserve_buffer = + gdpy->native->get_param(gdpy->native, NATIVE_PARAM_PRESERVE_BUFFER); + max_swap_interval = + gdpy->native->get_param(gdpy->native, NATIVE_PARAM_MAX_SWAP_INTERVAL); + num_formats = egl_g3d_fill_depth_stencil_formats(dpy, depth_stencil_formats); @@ -368,12 +382,13 @@ egl_g3d_add_configs(_EGLDriver *drv, _EGLDisplay *dpy, EGLint id) if (gconf) { _eglInitConfig(&gconf->base, dpy, id); if (!egl_g3d_init_config(drv, dpy, &gconf->base, - native_configs[i], depth_stencil_formats[j])) { + native_configs[i], depth_stencil_formats[j], + preserve_buffer, max_swap_interval)) { FREE(gconf); break; } - _eglAddConfig(dpy, &gconf->base); + _eglLinkConfig(&gconf->base); id++; } } @@ -538,7 +553,8 @@ egl_g3d_initialize(_EGLDriver *drv, _EGLDisplay *dpy, if (dpy->Platform == _EGL_PLATFORM_DRM) { dpy->Extensions.MESA_drm_display = EGL_TRUE; - dpy->Extensions.MESA_drm_image = EGL_TRUE; + if (gdpy->native->buffer) + dpy->Extensions.MESA_drm_image = EGL_TRUE; } if (egl_g3d_add_configs(drv, dpy, 1) == 1) { diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.h b/src/gallium/state_trackers/egl/common/egl_g3d.h index be450bbede..72c14f0ac4 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d.h +++ b/src/gallium/state_trackers/egl/common/egl_g3d.h @@ -106,8 +106,6 @@ _EGL_DRIVER_TYPECAST(egl_g3d_image, _EGLImage, obj) struct egl_g3d_sync { _EGLSync base; - int refs; - /* the mutex protects only the condvar, not the struct */ pipe_mutex mutex; pipe_condvar condvar; diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_api.c b/src/gallium/state_trackers/egl/common/egl_g3d_api.c index 3bde39737b..fd7dc8f814 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_api.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_api.c @@ -97,6 +97,70 @@ egl_g3d_choose_st(_EGLDriver *drv, _EGLContext *ctx, return stapi; } +static int +egl_g3d_compare_config(const _EGLConfig *conf1, const _EGLConfig *conf2, + void *priv_data) +{ + const _EGLConfig *criteria = (const _EGLConfig *) priv_data; + + /* EGL_NATIVE_VISUAL_TYPE ignored? */ + return _eglCompareConfigs(conf1, conf2, criteria, EGL_TRUE); +} + +static EGLBoolean +egl_g3d_match_config(const _EGLConfig *conf, const _EGLConfig *criteria) +{ + if (!_eglMatchConfig(conf, criteria)) + return EGL_FALSE; + + if (criteria->MatchNativePixmap != EGL_NONE && + criteria->MatchNativePixmap != EGL_DONT_CARE) { + struct egl_g3d_display *gdpy = egl_g3d_display(conf->Display); + struct egl_g3d_config *gconf = egl_g3d_config(conf); + EGLNativePixmapType pix = + (EGLNativePixmapType) criteria->MatchNativePixmap; + + if (!gdpy->native->is_pixmap_supported(gdpy->native, pix, gconf->native)) + return EGL_FALSE; + } + + return EGL_TRUE; +} + +static EGLBoolean +egl_g3d_choose_config(_EGLDriver *drv, _EGLDisplay *dpy, const EGLint *attribs, + EGLConfig *configs, EGLint size, EGLint *num_configs) +{ + _EGLConfig **tmp_configs, criteria; + EGLint tmp_size, i; + + if (!num_configs) + return _eglError(EGL_BAD_PARAMETER, "eglChooseConfigs"); + + if (!_eglParseConfigAttribList(&criteria, dpy, attribs)) + return _eglError(EGL_BAD_ATTRIBUTE, "eglChooseConfig"); + + tmp_configs = (_EGLConfig **) _eglFilterArray(dpy->Configs, &tmp_size, + (_EGLArrayForEach) egl_g3d_match_config, (void *) &criteria); + if (!tmp_configs) + return _eglError(EGL_BAD_ALLOC, "eglChooseConfig(out of memory)"); + + /* perform sorting of configs */ + if (tmp_configs && tmp_size) { + _eglSortConfigs((const _EGLConfig **) tmp_configs, tmp_size, + egl_g3d_compare_config, (void *) &criteria); + size = MIN2(tmp_size, size); + for (i = 0; i < size; i++) + configs[i] = _eglGetConfigHandle(tmp_configs[i]); + } + + free(tmp_configs); + + *num_configs = size; + + return EGL_TRUE; +} + static _EGLContext * egl_g3d_create_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, _EGLContext *share, const EGLint *attribs) @@ -160,7 +224,7 @@ destroy_context(_EGLDisplay *dpy, _EGLContext *ctx) static EGLBoolean egl_g3d_destroy_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx) { - if (!_eglIsContextBound(ctx)) + if (_eglPutContext(ctx)) destroy_context(dpy, ctx); return EGL_TRUE; } @@ -433,7 +497,7 @@ destroy_surface(_EGLDisplay *dpy, _EGLSurface *surf) static EGLBoolean egl_g3d_destroy_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf) { - if (!_eglIsSurfaceBound(surf)) + if (_eglPutSurface(surf)) destroy_surface(dpy, surf); return EGL_TRUE; } @@ -446,13 +510,15 @@ egl_g3d_make_current(_EGLDriver *drv, _EGLDisplay *dpy, struct egl_g3d_surface *gdraw = egl_g3d_surface(draw); struct egl_g3d_surface *gread = egl_g3d_surface(read); struct egl_g3d_context *old_gctx; + _EGLContext *old_ctx; + _EGLSurface *old_draw, *old_read; EGLBoolean ok = EGL_TRUE; - /* bind the new context and return the "orphaned" one */ - if (!_eglBindContext(&ctx, &draw, &read)) + /* make new bindings */ + if (!_eglBindContext(ctx, draw, read, &old_ctx, &old_draw, &old_read)) return EGL_FALSE; - old_gctx = egl_g3d_context(ctx); + old_gctx = egl_g3d_context(old_ctx); if (old_gctx) { /* flush old context */ old_gctx->stctxi->flush(old_gctx->stctxi, @@ -481,15 +547,33 @@ egl_g3d_make_current(_EGLDriver *drv, _EGLDisplay *dpy, } else if (old_gctx) { ok = old_gctx->stapi->make_current(old_gctx->stapi, NULL, NULL, NULL); - old_gctx->base.WindowRenderBuffer = EGL_NONE; + if (ok) + old_gctx->base.WindowRenderBuffer = EGL_NONE; } - if (ctx && !_eglIsContextLinked(ctx)) - destroy_context(dpy, ctx); - if (draw && !_eglIsSurfaceLinked(draw)) - destroy_surface(dpy, draw); - if (read && read != draw && !_eglIsSurfaceLinked(read)) - destroy_surface(dpy, read); + if (ok) { + if (_eglPutContext(old_ctx)) + destroy_context(dpy, old_ctx); + if (_eglPutSurface(old_draw)) + destroy_surface(dpy, old_draw); + if (_eglPutSurface(old_read)) + destroy_surface(dpy, old_read); + } + else { + /* undo the previous _eglBindContext */ + _eglBindContext(old_ctx, old_draw, old_read, &ctx, &draw, &read); + assert(&gctx->base == ctx && + &gdraw->base == draw && + &gread->base == read); + + _eglPutSurface(draw); + _eglPutSurface(read); + _eglPutContext(ctx); + + _eglPutSurface(old_draw); + _eglPutSurface(old_read); + _eglPutContext(old_ctx); + } return ok; } @@ -519,7 +603,10 @@ egl_g3d_swap_buffers(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf) PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, NULL); } - return gsurf->native->swap_buffers(gsurf->native); + return gsurf->native->present(gsurf->native, + NATIVE_ATTACHMENT_BACK_LEFT, + gsurf->base.SwapBehavior == EGL_BUFFER_PRESERVED, + gsurf->base.SwapInterval); } /** @@ -587,8 +674,7 @@ egl_g3d_copy_buffers(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf, if (psrc) { gdpy->pipe->resource_copy_region(gdpy->pipe, ptex, subdst, 0, 0, 0, gsurf->render_texture, subsrc, 0, 0, 0, ptex->width0, ptex->height0); - - nsurf->flush_frontbuffer(nsurf); + nsurf->present(nsurf, NATIVE_ATTACHMENT_FRONT_LEFT, FALSE, 0); } pipe_resource_reference(&ptex, NULL); @@ -818,6 +904,8 @@ egl_g3d_init_driver_api(_EGLDriver *drv) { _eglInitDriverFallbacks(drv); + drv->API.ChooseConfig = egl_g3d_choose_config; + drv->API.CreateContext = egl_g3d_create_context; drv->API.DestroyContext = egl_g3d_destroy_context; drv->API.CreateWindowSurface = egl_g3d_create_window_surface; diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_image.c b/src/gallium/state_trackers/egl/common/egl_g3d_image.c index be9c88e5e4..6a1f8cc697 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_image.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_image.c @@ -38,7 +38,7 @@ #include "egl_g3d_api.h" #include "egl_g3d_image.h" -/* move this to native display? */ +/* for struct winsys_handle */ #include "state_tracker/drm_driver.h" /** @@ -137,13 +137,11 @@ egl_g3d_reference_drm_buffer(_EGLDisplay *dpy, EGLint name, _EGLImage *img, const EGLint *attribs) { struct egl_g3d_display *gdpy = egl_g3d_display(dpy); - struct pipe_screen *screen = gdpy->native->screen; struct pipe_resource templ; struct winsys_handle wsh; _EGLImageAttribs attrs; EGLint format; - /* winsys_handle is in theory platform-specific */ if (dpy->Platform != _EGL_PLATFORM_DRM) return NULL; @@ -178,9 +176,10 @@ egl_g3d_reference_drm_buffer(_EGLDisplay *dpy, EGLint name, memset(&wsh, 0, sizeof(wsh)); wsh.handle = (unsigned) name; - wsh.stride = attrs.DRMBufferStrideMESA; + wsh.stride = + attrs.DRMBufferStrideMESA * util_format_get_blocksize(templ.format); - return screen->resource_from_handle(screen, &templ, &wsh); + return gdpy->native->buffer->import_buffer(gdpy->native, &templ, &wsh); } #endif /* EGL_MESA_drm_image */ @@ -302,10 +301,8 @@ egl_g3d_export_drm_image(_EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *img, { struct egl_g3d_display *gdpy = egl_g3d_display(dpy); struct egl_g3d_image *gimg = egl_g3d_image(img); - struct pipe_screen *screen = gdpy->native->screen; struct winsys_handle wsh; - /* winsys_handle is in theory platform-specific */ if (dpy->Platform != _EGL_PLATFORM_DRM) return EGL_FALSE; @@ -313,9 +310,9 @@ egl_g3d_export_drm_image(_EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *img, if (name) { memset(&handle, 0, sizeof(handle)); wsh.type = DRM_API_HANDLE_TYPE_SHARED; - if (!screen->resource_get_handle(screen, gimg->texture, &wsh)) { + if (!gdpy->native->buffer->export_buffer(gdpy->native, + gimg->texture, &wsh)) return EGL_FALSE; - } *name = wsh.handle; } @@ -324,7 +321,8 @@ egl_g3d_export_drm_image(_EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *img, if (handle || stride) { memset(&wsh, 0, sizeof(wsh)); wsh.type = DRM_API_HANDLE_TYPE_KMS; - if (!screen->resource_get_handle(screen, gimg->texture, &wsh)) + if (!gdpy->native->buffer->export_buffer(gdpy->native, + gimg->texture, &wsh)) return EGL_FALSE; if (handle) diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_st.c b/src/gallium/state_trackers/egl/common/egl_g3d_st.c index 0affe632cf..25e2999590 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_st.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_st.c @@ -192,7 +192,8 @@ egl_g3d_st_framebuffer_flush_front(struct st_framebuffer_iface *stfbi, _EGLSurface *surf = (_EGLSurface *) stfbi->st_manager_private; struct egl_g3d_surface *gsurf = egl_g3d_surface(surf); - return gsurf->native->flush_frontbuffer(gsurf->native); + return gsurf->native->present(gsurf->native, + NATIVE_ATTACHMENT_FRONT_LEFT, FALSE, 0); } static boolean diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_sync.c b/src/gallium/state_trackers/egl/common/egl_g3d_sync.c index ec74e9eb94..4e6d944c15 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_sync.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_sync.c @@ -128,13 +128,13 @@ egl_g3d_wait_fence_sync(struct egl_g3d_sync *gsync, EGLTimeKHR timeout) static INLINE void egl_g3d_ref_sync(struct egl_g3d_sync *gsync) { - p_atomic_inc(&gsync->refs); + _eglGetSync(&gsync->base); } static INLINE void egl_g3d_unref_sync(struct egl_g3d_sync *gsync) { - if (p_atomic_dec_zero(&gsync->refs)) { + if (_eglPutSync(&gsync->base)) { pipe_condvar_destroy(gsync->condvar); pipe_mutex_destroy(gsync->mutex); @@ -194,7 +194,6 @@ egl_g3d_create_sync(_EGLDriver *drv, _EGLDisplay *dpy, pipe_mutex_init(gsync->mutex); pipe_condvar_init(gsync->condvar); - p_atomic_set(&gsync->refs, 1); return &gsync->base; } diff --git a/src/gallium/state_trackers/egl/common/native.h b/src/gallium/state_trackers/egl/common/native.h index 3c3f57e267..3886ca2056 100644 --- a/src/gallium/state_trackers/egl/common/native.h +++ b/src/gallium/state_trackers/egl/common/native.h @@ -34,6 +34,11 @@ #include "pipe/p_state.h" #include "state_tracker/sw_winsys.h" +#ifdef __cplusplus +extern "C" { +#endif + +#include "native_buffer.h" #include "native_modeset.h" /** @@ -54,7 +59,17 @@ enum native_param_type { * Return TRUE if window/pixmap surfaces use the buffers of the native * types. */ - NATIVE_PARAM_USE_NATIVE_BUFFER + NATIVE_PARAM_USE_NATIVE_BUFFER, + + /** + * Return TRUE if native_surface::present can preserve the buffer. + */ + NATIVE_PARAM_PRESERVE_BUFFER, + + /** + * Return the maximum supported swap interval. + */ + NATIVE_PARAM_MAX_SWAP_INTERVAL }; struct native_surface { @@ -66,17 +81,12 @@ struct native_surface { void (*destroy)(struct native_surface *nsurf); /** - * Swap the front and back buffers so that the back buffer is visible. It - * is no-op if the surface is single-buffered. The contents of the back - * buffer after swapping may or may not be preserved. - */ - boolean (*swap_buffers)(struct native_surface *nsurf); - - /** - * Make the front buffer visible. In some native displays, changes to the - * front buffer might not be visible immediately and require manual flush. + * Present the given buffer to the native engine. */ - boolean (*flush_frontbuffer)(struct native_surface *nsurf); + boolean (*present)(struct native_surface *nsurf, + enum native_attachment natt, + boolean preserve, + uint swap_interval); /** * Validate the buffers of the surface. textures, if not NULL, points to an @@ -181,6 +191,7 @@ struct native_display { EGLNativePixmapType pix, const struct native_config *nconf); + const struct native_display_buffer *buffer; const struct native_display_modeset *modeset; }; @@ -232,4 +243,8 @@ native_get_drm_platform(void); const struct native_platform * native_get_fbdev_platform(void); +#ifdef __cplusplus +} +#endif + #endif /* _NATIVE_H_ */ diff --git a/src/gallium/state_trackers/egl/common/native_buffer.h b/src/gallium/state_trackers/egl/common/native_buffer.h new file mode 100644 index 0000000000..5c29ab9741 --- /dev/null +++ b/src/gallium/state_trackers/egl/common/native_buffer.h @@ -0,0 +1,59 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * 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 + * THE AUTHORS OR COPYRIGHT HOLDERS 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. + * + * Authors: + * Chia-I Wu <olv@lunarg.com> + */ + +#ifndef _NATIVE_BUFFER_H_ +#define _NATIVE_BUFFER_H_ + +#include "pipe/p_compiler.h" + +struct native_display; +struct pipe_resource; + +/** + * Buffer interface of the native display. It allows native buffers to be + * imported and exported. + * + * Just like a native window or a native pixmap, a native buffer is another + * native type. Its definition depends on the native display. + * + * For DRM platform, the type of a native buffer is struct winsys_handle. + */ +struct native_display_buffer { + struct pipe_resource *(*import_buffer)(struct native_display *ndpy, + const struct pipe_resource *templ, + void *buf); + + /** + * The resource must be creatred with PIPE_BIND_SHARED. + */ + boolean (*export_buffer)(struct native_display *ndpy, + struct pipe_resource *res, + void *buf); +}; + +#endif /* _NATIVE_BUFFER_H_ */ diff --git a/src/gallium/state_trackers/egl/common/native_modeset.h b/src/gallium/state_trackers/egl/common/native_modeset.h index dee757b3a8..2598082d68 100644 --- a/src/gallium/state_trackers/egl/common/native_modeset.h +++ b/src/gallium/state_trackers/egl/common/native_modeset.h @@ -39,7 +39,7 @@ struct native_connector { struct native_mode { const char *desc; int width, height; - int refresh_rate; + int refresh_rate; /* HZ * 1000 */ }; /** diff --git a/src/gallium/state_trackers/egl/drm/modeset.c b/src/gallium/state_trackers/egl/drm/modeset.c index 06a6077053..0cc06caa2a 100644 --- a/src/gallium/state_trackers/egl/drm/modeset.c +++ b/src/gallium/state_trackers/egl/drm/modeset.c @@ -167,6 +167,32 @@ drm_surface_swap_buffers(struct native_surface *nsurf) return TRUE; } +static boolean +drm_surface_present(struct native_surface *nsurf, + enum native_attachment natt, + boolean preserve, + uint swap_interval) +{ + boolean ret; + + if (preserve || swap_interval) + return FALSE; + + switch (natt) { + case NATIVE_ATTACHMENT_FRONT_LEFT: + ret = drm_surface_flush_frontbuffer(nsurf); + break; + case NATIVE_ATTACHMENT_BACK_LEFT: + ret = drm_surface_swap_buffers(nsurf); + break; + default: + ret = FALSE; + break; + } + + return ret; +} + static void drm_surface_wait(struct native_surface *nsurf) { @@ -225,8 +251,7 @@ drm_display_create_surface(struct native_display *ndpy, resource_surface_set_size(drmsurf->rsurf, drmsurf->width, drmsurf->height); drmsurf->base.destroy = drm_surface_destroy; - drmsurf->base.swap_buffers = drm_surface_swap_buffers; - drmsurf->base.flush_frontbuffer = drm_surface_flush_frontbuffer; + drmsurf->base.present = drm_surface_present; drmsurf->base.validate = drm_surface_validate; drmsurf->base.wait = drm_surface_wait; @@ -469,8 +494,8 @@ drm_display_get_modes(struct native_display *ndpy, drmmode->base.height = drmmode->mode.vdisplay; drmmode->base.refresh_rate = drmmode->mode.vrefresh; /* not all kernels have vrefresh = refresh_rate * 1000 */ - if (drmmode->base.refresh_rate > 1000) - drmmode->base.refresh_rate = (drmmode->base.refresh_rate + 500) / 1000; + if (drmmode->base.refresh_rate < 1000) + drmmode->base.refresh_rate *= 1000; } nmodes_return = MALLOC(count * sizeof(*nmodes_return)); diff --git a/src/gallium/state_trackers/egl/drm/native_drm.c b/src/gallium/state_trackers/egl/drm/native_drm.c index f6dc558437..3759c2a26d 100644 --- a/src/gallium/state_trackers/egl/drm/native_drm.c +++ b/src/gallium/state_trackers/egl/drm/native_drm.c @@ -103,6 +103,9 @@ drm_display_get_param(struct native_display *ndpy, int val; switch (param) { + case NATIVE_PARAM_USE_NATIVE_BUFFER: + case NATIVE_PARAM_PRESERVE_BUFFER: + case NATIVE_PARAM_MAX_SWAP_INTERVAL: default: val = 0; break; @@ -182,6 +185,29 @@ drm_display_init_screen(struct native_display *ndpy) return TRUE; } +static struct pipe_resource * +drm_display_import_buffer(struct native_display *ndpy, + const struct pipe_resource *templ, + void *buf) +{ + return ndpy->screen->resource_from_handle(ndpy->screen, + templ, (struct winsys_handle *) buf); +} + +static boolean +drm_display_export_buffer(struct native_display *ndpy, + struct pipe_resource *res, + void *buf) +{ + return ndpy->screen->resource_get_handle(ndpy->screen, + res, (struct winsys_handle *) buf); +} + +static struct native_display_buffer drm_display_buffer = { + drm_display_import_buffer, + drm_display_export_buffer +}; + static struct native_display * drm_create_display(int fd, struct native_event_handler *event_handler, void *user_data) @@ -205,6 +231,7 @@ drm_create_display(int fd, struct native_event_handler *event_handler, drmdpy->base.get_param = drm_display_get_param; drmdpy->base.get_configs = drm_display_get_configs; + drmdpy->base.buffer = &drm_display_buffer; drm_display_init_modeset(&drmdpy->base); return &drmdpy->base; diff --git a/src/gallium/state_trackers/egl/fbdev/native_fbdev.c b/src/gallium/state_trackers/egl/fbdev/native_fbdev.c index e459402076..1b5ea8bf9d 100644 --- a/src/gallium/state_trackers/egl/fbdev/native_fbdev.c +++ b/src/gallium/state_trackers/egl/fbdev/native_fbdev.c @@ -137,6 +137,32 @@ fbdev_surface_swap_buffers(struct native_surface *nsurf) return ret; } +static boolean +fbdev_surface_present(struct native_surface *nsurf, + enum native_attachment natt, + boolean preserve, + uint swap_interval) +{ + boolean ret; + + if (preserve || swap_interval) + return FALSE; + + switch (natt) { + case NATIVE_ATTACHMENT_FRONT_LEFT: + ret = fbdev_surface_flush_frontbuffer(nsurf); + break; + case NATIVE_ATTACHMENT_BACK_LEFT: + ret = fbdev_surface_swap_buffers(nsurf); + break; + default: + ret = FALSE; + break; + } + + return ret; +} + static void fbdev_surface_wait(struct native_surface *nsurf) { @@ -181,8 +207,7 @@ fbdev_display_create_scanout_surface(struct native_display *ndpy, resource_surface_set_size(fbsurf->rsurf, fbsurf->width, fbsurf->height); fbsurf->base.destroy = fbdev_surface_destroy; - fbsurf->base.swap_buffers = fbdev_surface_swap_buffers; - fbsurf->base.flush_frontbuffer = fbdev_surface_flush_frontbuffer; + fbsurf->base.present = fbdev_surface_present; fbsurf->base.validate = fbdev_surface_validate; fbsurf->base.wait = fbdev_surface_wait; @@ -279,6 +304,9 @@ fbdev_display_get_param(struct native_display *ndpy, int val; switch (param) { + case NATIVE_PARAM_USE_NATIVE_BUFFER: + case NATIVE_PARAM_PRESERVE_BUFFER: + case NATIVE_PARAM_MAX_SWAP_INTERVAL: default: val = 0; break; diff --git a/src/gallium/state_trackers/egl/gdi/native_gdi.c b/src/gallium/state_trackers/egl/gdi/native_gdi.c index 91701e5b7d..d259e6edc8 100644 --- a/src/gallium/state_trackers/egl/gdi/native_gdi.c +++ b/src/gallium/state_trackers/egl/gdi/native_gdi.c @@ -160,6 +160,32 @@ gdi_surface_swap_buffers(struct native_surface *nsurf) } static boolean +gdi_surface_present(struct native_surface *nsurf, + enum native_attachment natt, + boolean preserve, + uint swap_interval) +{ + boolean ret; + + if (preserve || swap_interval) + return FALSE; + + switch (natt) { + case NATIVE_ATTACHMENT_FRONT_LEFT: + ret = gdi_surface_flush_frontbuffer(nsurf); + break; + case NATIVE_ATTACHMENT_BACK_LEFT: + ret = gdi_surface_swap_buffers(nsurf); + break; + default: + ret = FALSE; + break; + } + + return ret; +} + +static boolean gdi_surface_validate(struct native_surface *nsurf, uint attachment_mask, unsigned int *seq_num, struct pipe_resource **textures, int *width, int *height) @@ -231,8 +257,7 @@ gdi_display_create_window_surface(struct native_display *ndpy, gdi_surface_update_geometry(&gsurf->base); gsurf->base.destroy = gdi_surface_destroy; - gsurf->base.swap_buffers = gdi_surface_swap_buffers; - gsurf->base.flush_frontbuffer = gdi_surface_flush_frontbuffer; + gsurf->base.present = gdi_surface_present; gsurf->base.validate = gdi_surface_validate; gsurf->base.wait = gdi_surface_wait; @@ -321,6 +346,8 @@ gdi_display_get_param(struct native_display *ndpy, /* private buffers are allocated */ val = FALSE; break; + case NATIVE_PARAM_PRESERVE_BUFFER: + case NATIVE_PARAM_MAX_SWAP_INTERVAL: default: val = 0; break; diff --git a/src/gallium/state_trackers/egl/x11/native_dri2.c b/src/gallium/state_trackers/egl/x11/native_dri2.c index 1169e273c3..331a7de432 100644 --- a/src/gallium/state_trackers/egl/x11/native_dri2.c +++ b/src/gallium/state_trackers/egl/x11/native_dri2.c @@ -338,6 +338,32 @@ dri2_surface_swap_buffers(struct native_surface *nsurf) } static boolean +dri2_surface_present(struct native_surface *nsurf, + enum native_attachment natt, + boolean preserve, + uint swap_interval) +{ + boolean ret; + + if (swap_interval) + return FALSE; + + switch (natt) { + case NATIVE_ATTACHMENT_FRONT_LEFT: + ret = dri2_surface_flush_frontbuffer(nsurf); + break; + case NATIVE_ATTACHMENT_BACK_LEFT: + ret = dri2_surface_swap_buffers(nsurf); + break; + default: + ret = FALSE; + break; + } + + return ret; +} + +static boolean dri2_surface_validate(struct native_surface *nsurf, uint attachment_mask, unsigned int *seq_num, struct pipe_resource **textures, int *width, int *height) @@ -430,8 +456,7 @@ dri2_display_create_surface(struct native_display *ndpy, dri2surf->color_format = dri2conf->base.color_format; dri2surf->base.destroy = dri2_surface_destroy; - dri2surf->base.swap_buffers = dri2_surface_swap_buffers; - dri2surf->base.flush_frontbuffer = dri2_surface_flush_frontbuffer; + dri2surf->base.present = dri2_surface_present; dri2surf->base.validate = dri2_surface_validate; dri2surf->base.wait = dri2_surface_wait; @@ -630,9 +655,14 @@ dri2_display_get_param(struct native_display *ndpy, switch (param) { case NATIVE_PARAM_USE_NATIVE_BUFFER: - /* DRI2GetBuffers use the native buffers */ + /* DRI2GetBuffers uses the native buffers */ + val = TRUE; + break; + case NATIVE_PARAM_PRESERVE_BUFFER: + /* DRI2CopyRegion is used */ val = TRUE; break; + case NATIVE_PARAM_MAX_SWAP_INTERVAL: default: val = 0; break; diff --git a/src/gallium/state_trackers/egl/x11/native_x11.h b/src/gallium/state_trackers/egl/x11/native_x11.h index 0b47837e1b..8945117276 100644 --- a/src/gallium/state_trackers/egl/x11/native_x11.h +++ b/src/gallium/state_trackers/egl/x11/native_x11.h @@ -27,6 +27,7 @@ #define _NATIVE_X11_H_ #include "common/native.h" +#include <X11/Xlib.h> struct native_display * x11_create_ximage_display(Display *dpy, diff --git a/src/gallium/state_trackers/egl/x11/native_ximage.c b/src/gallium/state_trackers/egl/x11/native_ximage.c index 4b32f6e36e..84811fb6e1 100644 --- a/src/gallium/state_trackers/egl/x11/native_ximage.c +++ b/src/gallium/state_trackers/egl/x11/native_ximage.c @@ -175,6 +175,32 @@ ximage_surface_swap_buffers(struct native_surface *nsurf) } static boolean +ximage_surface_present(struct native_surface *nsurf, + enum native_attachment natt, + boolean preserve, + uint swap_interval) +{ + boolean ret; + + if (preserve || swap_interval) + return FALSE; + + switch (natt) { + case NATIVE_ATTACHMENT_FRONT_LEFT: + ret = ximage_surface_flush_frontbuffer(nsurf); + break; + case NATIVE_ATTACHMENT_BACK_LEFT: + ret = ximage_surface_swap_buffers(nsurf); + break; + default: + ret = FALSE; + break; + } + + return ret; +} + +static boolean ximage_surface_validate(struct native_surface *nsurf, uint attachment_mask, unsigned int *seq_num, struct pipe_resource **textures, int *width, int *height) @@ -257,8 +283,7 @@ ximage_display_create_surface(struct native_display *ndpy, xsurf->xdraw.drawable = xsurf->drawable; xsurf->base.destroy = ximage_surface_destroy; - xsurf->base.swap_buffers = ximage_surface_swap_buffers; - xsurf->base.flush_frontbuffer = ximage_surface_flush_frontbuffer; + xsurf->base.present = ximage_surface_present; xsurf->base.validate = ximage_surface_validate; xsurf->base.wait = ximage_surface_wait; @@ -416,6 +441,8 @@ ximage_display_get_param(struct native_display *ndpy, /* private buffers are allocated */ val = FALSE; break; + case NATIVE_PARAM_PRESERVE_BUFFER: + case NATIVE_PARAM_MAX_SWAP_INTERVAL: default: val = 0; break; diff --git a/src/gallium/state_trackers/glx/xlib/SConscript b/src/gallium/state_trackers/glx/xlib/SConscript index 9df351a276..9e7ebf3fc9 100644 --- a/src/gallium/state_trackers/glx/xlib/SConscript +++ b/src/gallium/state_trackers/glx/xlib/SConscript @@ -3,25 +3,24 @@ Import('*') -if env['platform'] == 'linux' \ - and 'mesa' in env['statetrackers']: +env = env.Clone() - env = env.Clone() +env.Append(CPPPATH = [ + '#/src/mapi', + '#/src/mesa', + '#/src/mesa/main', +]) - env.Append(CPPPATH = [ - '#/src/mapi', - '#/src/mesa', - '#/src/mesa/main', - ]) +sources = [ + 'glx_api.c', + 'glx_getproc.c', + 'glx_usefont.c', + 'xm_api.c', + 'xm_st.c', +] - st_xlib = env.ConvenienceLibrary( - target = 'st_xlib', - source = [ - 'glx_api.c', - 'glx_getproc.c', - 'glx_usefont.c', - 'xm_api.c', - 'xm_st.c', - ] - ) - Export('st_xlib') +st_xlib = env.ConvenienceLibrary( + target = 'st_xlib', + source = sources, +) +Export('st_xlib') diff --git a/src/gallium/state_trackers/glx/xlib/glx_api.c b/src/gallium/state_trackers/glx/xlib/glx_api.c index dcd50e19d7..205a7e3c19 100644 --- a/src/gallium/state_trackers/glx/xlib/glx_api.c +++ b/src/gallium/state_trackers/glx/xlib/glx_api.c @@ -46,9 +46,6 @@ #define SERVER_MAJOR_VERSION 1 #define SERVER_MINOR_VERSION 4 -/* This is appended onto the glXGetClient/ServerString version strings. */ -#define MESA_GLX_VERSION "Mesa " MESA_VERSION_STRING - /* Who implemented this GLX? */ #define VENDOR "Brian Paul" @@ -1672,7 +1669,7 @@ glXQueryServerString( Display *dpy, int screen, int name ) { static char version[1000]; sprintf(version, "%d.%d %s", - SERVER_MAJOR_VERSION, SERVER_MINOR_VERSION, MESA_GLX_VERSION); + SERVER_MAJOR_VERSION, SERVER_MINOR_VERSION, xmesa_get_name()); (void) dpy; (void) screen; @@ -1697,7 +1694,7 @@ glXGetClientString( Display *dpy, int name ) { static char version[1000]; sprintf(version, "%d.%d %s", CLIENT_MAJOR_VERSION, - CLIENT_MINOR_VERSION, MESA_GLX_VERSION); + CLIENT_MINOR_VERSION, xmesa_get_name()); (void) dpy; diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c index 8332633f01..7c47a25ceb 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.c +++ b/src/gallium/state_trackers/glx/xlib/xm_api.c @@ -828,6 +828,16 @@ void XMesaDestroyVisual( XMesaVisual v ) /** + * Return the informative name. + */ +const char * +xmesa_get_name(void) +{ + return stapi->name; +} + + +/** * Do per-display initializations. */ void diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.h b/src/gallium/state_trackers/glx/xlib/xm_api.h index b8ac979edc..4ea42dc375 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.h +++ b/src/gallium/state_trackers/glx/xlib/xm_api.h @@ -57,7 +57,7 @@ and create a window, you must do the following to use the X/Mesa interface: #define XMESA_H -#include "main/core.h" /* for GLvisual and MESA_VERSION_STRING */ +#include "main/core.h" /* for gl_config */ #include "state_tracker/st_api.h" #include "os/os_thread.h" @@ -351,6 +351,9 @@ struct xmesa_buffer { +extern const char * +xmesa_get_name(void); + extern void xmesa_init(Display *dpy); diff --git a/src/gallium/state_trackers/python/SConscript b/src/gallium/state_trackers/python/SConscript index aadeaa0a35..b8371865a6 100644 --- a/src/gallium/state_trackers/python/SConscript +++ b/src/gallium/state_trackers/python/SConscript @@ -3,57 +3,64 @@ import os.path Import('*') -if 'python' in env['statetrackers']: +if env['toolchain'] == 'crossmingw': + # Cross-compilation not supported + Return() - env = env.Clone() - - env.Tool('python') - - env.Tool('swig') - env.Append(SWIGPATH = ['#src/gallium/include', '#src/gallium/include/pipe']) - env.Append(SWIGFLAGS = ['-python', '-keyword']) - - env.Append(CPPPATH = '.') +if not env.Detect(['swig']): + Return() - if env['platform'] == 'windows': - env.Append(LIBS = [ - 'opengl32', - 'gdi32', - 'user32', - 'kernel32', - 'ws2_32', - ]) - else: - env.Append(CPPDEFINES = ['GCC_HASCLASSVISIBILITY']) - env.Append(LIBS = [ - 'GL', - 'X11', - ]) +env = env.Clone() - sources = [ - 'gallium.i', - 'st_device.c', - 'st_sample.c', - 'st_hardpipe_winsys.c', - 'st_softpipe_winsys.c', - ] +env.Tool('python') - env.Prepend(LIBS = [ - ws_null, - trace, - gallium, +env.Tool('swig') +env.Append(SWIGPATH = ['#src/gallium/include', '#src/gallium/include/pipe']) +env.Append(SWIGFLAGS = ['-python', '-keyword']) + +env.Append(CPPPATH = '.') + +if env['platform'] == 'windows': + env.Append(LIBS = [ + 'opengl32', + 'gdi32', + 'user32', + 'kernel32', + 'ws2_32', + ]) +else: + env.Append(CPPDEFINES = ['GCC_HASCLASSVISIBILITY']) + env.Append(LIBS = [ + 'GL', + 'X11', ]) - if env['llvm']: - env.Append(CPPDEFINES = ['HAVE_LLVMPIPE']) - env.Prepend(LIBS = [llvmpipe]) - if True: - env.Append(CPPDEFINES = ['HAVE_SOFTPIPE']) - env.Prepend(LIBS = [softpipe]) +sources = [ + 'gallium.i', + 'st_device.c', + 'st_sample.c', + 'st_hardpipe_winsys.c', + 'st_softpipe_winsys.c', +] + +env.Prepend(LIBS = [ + ws_null, + trace, + gallium, +]) + +if env['llvm']: + env.Append(CPPDEFINES = ['HAVE_LLVMPIPE']) + env.Prepend(LIBS = [llvmpipe]) +if True: + env.Append(CPPDEFINES = ['HAVE_SOFTPIPE']) + env.Prepend(LIBS = [softpipe]) + +env['no_import_lib'] = 1 - env['no_import_lib'] = 1 +pyst = env.SharedLibrary( + target = '_gallium', + source = sources, +) - env.SharedLibrary( - target = '_gallium', - source = sources, - ) +env.Alias('python', pyst) diff --git a/src/gallium/state_trackers/vega/Makefile b/src/gallium/state_trackers/vega/Makefile index e0a87151c4..0543fac094 100644 --- a/src/gallium/state_trackers/vega/Makefile +++ b/src/gallium/state_trackers/vega/Makefile @@ -9,6 +9,9 @@ LIBRARY_INCLUDES = \ -I$(TOP)/include \ -I$(TOP)/src/mapi +LIBRARY_DEFINES = \ + -DVEGA_VERSION_STRING=\"$(MESA_VERSION)\" + C_SOURCES = \ api.c \ api_context.c \ diff --git a/src/gallium/state_trackers/vega/SConscript b/src/gallium/state_trackers/vega/SConscript index 548053eb64..a62783ab18 100644 --- a/src/gallium/state_trackers/vega/SConscript +++ b/src/gallium/state_trackers/vega/SConscript @@ -3,49 +3,51 @@ Import('*') -if 'egl' in env['statetrackers']: +env = env.Clone() - env = env.Clone() +env.Append(CPPPATH = [ + '#/src/mapi', +]) +env.Append(CPPDEFINES = [ + 'VEGA_VERSION_STRING=', +]) - env.Append(CPPPATH = [ - '#/src/mapi', - ]) +vega_sources = [ + 'api.c', + 'api_context.c', + 'api_filters.c', + 'api_images.c', + 'api_masks.c', + 'api_misc.c', + 'api_paint.c', + 'api_params.c', + 'api_path.c', + 'api_text.c', + 'api_transform.c', + 'vgu.c', + 'vg_context.c', + 'vg_manager.c', + 'vg_state.c', + 'vg_translate.c', + 'polygon.c', + 'bezier.c', + 'path.c', + 'paint.c', + 'arc.c', + 'image.c', + 'renderer.c', + 'stroker.c', + 'mask.c', + 'shader.c', + 'shaders_cache.c', +] - vega_sources = [ - 'api.c', - 'api_context.c', - 'api_filters.c', - 'api_images.c', - 'api_masks.c', - 'api_misc.c', - 'api_paint.c', - 'api_params.c', - 'api_path.c', - 'api_text.c', - 'api_transform.c', - 'vgu.c', - 'vg_context.c', - 'vg_manager.c', - 'vg_state.c', - 'vg_translate.c', - 'polygon.c', - 'bezier.c', - 'path.c', - 'paint.c', - 'arc.c', - 'image.c', - 'renderer.c', - 'stroker.c', - 'mask.c', - 'shader.c', - 'shaders_cache.c', - ] +# vgapi_header must be generated first +env.Depends(vega_sources, vgapi_header) - # vgapi_header must be generated first - env.Depends(vega_sources, vgapi_header) +st_vega = env.ConvenienceLibrary( + target = 'st_vega', + source = vega_sources, +) - st_vega = env.ConvenienceLibrary( - target = 'st_vega', - source = vega_sources, - ) - Export('st_vega') +Export('st_vega') diff --git a/src/gallium/state_trackers/vega/api_context.c b/src/gallium/state_trackers/vega/api_context.c index 0d04d8e871..d6bbda5e07 100644 --- a/src/gallium/state_trackers/vega/api_context.c +++ b/src/gallium/state_trackers/vega/api_context.c @@ -73,7 +73,8 @@ void vegaFinish(void) pipe = ctx->pipe; pipe->flush(pipe, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, &fence); - - pipe->screen->fence_finish(pipe->screen, fence, 0); - pipe->screen->fence_reference(pipe->screen, &fence, NULL); + if (fence) { + pipe->screen->fence_finish(pipe->screen, fence, 0); + pipe->screen->fence_reference(pipe->screen, &fence, NULL); + } } diff --git a/src/gallium/state_trackers/vega/api_filters.c b/src/gallium/state_trackers/vega/api_filters.c index 8ace985336..fa1e00d1f8 100644 --- a/src/gallium/state_trackers/vega/api_filters.c +++ b/src/gallium/state_trackers/vega/api_filters.c @@ -37,10 +37,8 @@ #include "pipe/p_state.h" #include "util/u_inlines.h" #include "pipe/p_screen.h" -#include "pipe/p_shader_tokens.h" #include "util/u_format.h" -#include "util/u_memory.h" #include "util/u_sampler.h" #include "util/u_string.h" @@ -798,6 +796,8 @@ void vegaLookupSingle(VGImage dst, VGImage src, return; } + vg_validate_state(ctx); + for (i = 0; i < 256; ++i) { VGuint rgba = lookupTable[i]; VGubyte blue, green, red, alpha; diff --git a/src/gallium/state_trackers/vega/api_images.c b/src/gallium/state_trackers/vega/api_images.c index c36b3d2f3c..e9f038c5f9 100644 --- a/src/gallium/state_trackers/vega/api_images.c +++ b/src/gallium/state_trackers/vega/api_images.c @@ -36,9 +36,8 @@ #include "pipe/p_context.h" #include "pipe/p_screen.h" #include "util/u_inlines.h" -#include "util/u_blit.h" #include "util/u_tile.h" -#include "util/u_memory.h" +#include "util/u_math.h" static INLINE VGboolean supported_image_format(VGImageFormat format) { @@ -404,7 +403,6 @@ void vegaReadPixels(void * data, VGint dataStride, VGfloat temp[VEGA_MAX_IMAGE_WIDTH][4]; VGfloat *df = (VGfloat*)temp; - VGint y = (fb->height - sy) - 1, yStep = -1; VGint i; VGubyte *dst = (VGubyte *)data; VGint xoffset = 0, yoffset = 0; @@ -432,18 +430,26 @@ void vegaReadPixels(void * data, VGint dataStride, } if (sy < 0) { yoffset = -sy; + yoffset *= dataStride; height += sy; sy = 0; - y = (fb->height - sy) - 1; - yoffset *= dataStride; + } + + if (sx + width > fb->width || sy + height > fb->height) { + width = fb->width - sx; + height = fb->height - sy; + /* nothing to read */ + if (width <= 0 || height <= 0) + return; } { + VGint y = (fb->height - sy) - 1, yStep = -1; struct pipe_transfer *transfer; transfer = pipe_get_transfer(pipe, strb->texture, 0, 0, 0, PIPE_TRANSFER_READ, - 0, 0, width, height); + 0, 0, sx + width, fb->height - sy); /* Do a row at a time to flip image data vertically */ for (i = 0; i < height; i++) { diff --git a/src/gallium/state_trackers/vega/api_masks.c b/src/gallium/state_trackers/vega/api_masks.c index 94c1ff5375..189390ec2d 100644 --- a/src/gallium/state_trackers/vega/api_masks.c +++ b/src/gallium/state_trackers/vega/api_masks.c @@ -27,7 +27,6 @@ #include "VG/openvg.h" #include "mask.h" -#include "renderer.h" #include "api.h" #include "vg_context.h" @@ -36,7 +35,6 @@ #include "util/u_pack_color.h" #include "util/u_draw_quad.h" -#include "util/u_memory.h" #define DISABLE_1_1_MASKING 1 diff --git a/src/gallium/state_trackers/vega/api_paint.c b/src/gallium/state_trackers/vega/api_paint.c index d88341b04f..1411806455 100644 --- a/src/gallium/state_trackers/vega/api_paint.c +++ b/src/gallium/state_trackers/vega/api_paint.c @@ -28,7 +28,6 @@ #include "vg_context.h" #include "paint.h" -#include "image.h" #include "api.h" VGPaint vegaCreatePaint(void) diff --git a/src/gallium/state_trackers/vega/api_path.c b/src/gallium/state_trackers/vega/api_path.c index 6c9a2e8d65..f76adddb58 100644 --- a/src/gallium/state_trackers/vega/api_path.c +++ b/src/gallium/state_trackers/vega/api_path.c @@ -28,13 +28,9 @@ #include "vg_context.h" #include "path.h" -#include "polygon.h" -#include "paint.h" #include "api.h" #include "pipe/p_context.h" -#include "util/u_inlines.h" -#include "util/u_draw_quad.h" VGPath vegaCreatePath(VGint pathFormat, VGPathDatatype datatype, diff --git a/src/gallium/state_trackers/vega/api_text.c b/src/gallium/state_trackers/vega/api_text.c index b35f3be90a..2a62da0a1d 100644 --- a/src/gallium/state_trackers/vega/api_text.c +++ b/src/gallium/state_trackers/vega/api_text.c @@ -27,7 +27,6 @@ #include "VG/openvg.h" #include "vg_context.h" -#include "api.h" #include "util/u_memory.h" diff --git a/src/gallium/state_trackers/vega/image.c b/src/gallium/state_trackers/vega/image.c index c12dc71b86..28bbe420a2 100644 --- a/src/gallium/state_trackers/vega/image.c +++ b/src/gallium/state_trackers/vega/image.c @@ -32,13 +32,11 @@ #include "renderer.h" #include "util_array.h" #include "api_consts.h" -#include "shaders_cache.h" #include "shader.h" #include "pipe/p_context.h" #include "pipe/p_screen.h" #include "util/u_inlines.h" -#include "util/u_blit.h" #include "util/u_format.h" #include "util/u_tile.h" #include "util/u_memory.h" diff --git a/src/gallium/state_trackers/vega/paint.c b/src/gallium/state_trackers/vega/paint.c index 2c0eb6b23d..c0c8cddabe 100644 --- a/src/gallium/state_trackers/vega/paint.c +++ b/src/gallium/state_trackers/vega/paint.c @@ -26,7 +26,6 @@ #include "paint.h" -#include "shaders_cache.h" #include "matrix.h" #include "image.h" #include "st_inlines.h" @@ -34,7 +33,6 @@ #include "pipe/p_compiler.h" #include "util/u_inlines.h" -#include "util/u_format.h" #include "util/u_memory.h" #include "util/u_math.h" #include "util/u_sampler.h" diff --git a/src/gallium/state_trackers/vega/polygon.c b/src/gallium/state_trackers/vega/polygon.c index bc94170eb9..ca8831064c 100644 --- a/src/gallium/state_trackers/vega/polygon.c +++ b/src/gallium/state_trackers/vega/polygon.c @@ -29,7 +29,6 @@ #include "matrix.h" /*for floatsEqual*/ #include "vg_context.h" #include "vg_state.h" -#include "paint.h" #include "renderer.h" #include "util_array.h" #include "VG/openvg.h" diff --git a/src/gallium/state_trackers/vega/renderer.c b/src/gallium/state_trackers/vega/renderer.c index 8c023044c4..c6f5f7a05b 100644 --- a/src/gallium/state_trackers/vega/renderer.c +++ b/src/gallium/state_trackers/vega/renderer.c @@ -35,12 +35,9 @@ #include "pipe/p_shader_tokens.h" #include "util/u_draw_quad.h" -#include "util/u_format.h" #include "util/u_simple_shaders.h" #include "util/u_memory.h" -#include "util/u_rect.h" #include "util/u_sampler.h" -#include "util/u_surface.h" #include "cso_cache/cso_context.h" diff --git a/src/gallium/state_trackers/vega/shaders_cache.c b/src/gallium/state_trackers/vega/shaders_cache.c index 53e6bfcf16..e002a7ed42 100644 --- a/src/gallium/state_trackers/vega/shaders_cache.c +++ b/src/gallium/state_trackers/vega/shaders_cache.c @@ -30,8 +30,6 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" -#include "util/u_inlines.h" -#include "pipe/p_screen.h" #include "pipe/p_shader_tokens.h" #include "tgsi/tgsi_build.h" diff --git a/src/gallium/state_trackers/vega/vg_context.c b/src/gallium/state_trackers/vega/vg_context.c index 5cb2590602..99e444affd 100644 --- a/src/gallium/state_trackers/vega/vg_context.c +++ b/src/gallium/state_trackers/vega/vg_context.c @@ -37,7 +37,6 @@ #include "pipe/p_context.h" #include "util/u_inlines.h" -#include "pipe/p_shader_tokens.h" #include "cso_cache/cso_context.h" @@ -128,6 +127,7 @@ struct vg_context * vg_create_context(struct pipe_context *pipe, ctx->mask.sampler.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE; ctx->mask.sampler.wrap_t = PIPE_TEX_WRAP_CLAMP_TO_EDGE; + ctx->mask.sampler.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE; ctx->mask.sampler.min_mip_filter = PIPE_TEX_MIPFILTER_NONE; ctx->mask.sampler.min_img_filter = PIPE_TEX_FILTER_NEAREST; ctx->mask.sampler.mag_img_filter = PIPE_TEX_FILTER_NEAREST; @@ -135,6 +135,7 @@ struct vg_context * vg_create_context(struct pipe_context *pipe, ctx->blend_sampler.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE; ctx->blend_sampler.wrap_t = PIPE_TEX_WRAP_CLAMP_TO_EDGE; + ctx->blend_sampler.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE; ctx->blend_sampler.min_mip_filter = PIPE_TEX_MIPFILTER_NONE; ctx->blend_sampler.min_img_filter = PIPE_TEX_FILTER_NEAREST; ctx->blend_sampler.mag_img_filter = PIPE_TEX_FILTER_NEAREST; diff --git a/src/gallium/state_trackers/vega/vg_manager.c b/src/gallium/state_trackers/vega/vg_manager.c index 232deefa16..bb15ec024f 100644 --- a/src/gallium/state_trackers/vega/vg_manager.c +++ b/src/gallium/state_trackers/vega/vg_manager.c @@ -535,6 +535,7 @@ vg_api_destroy(struct st_api *stapi) } static const struct st_api vg_api = { + "Vega " VEGA_VERSION_STRING, ST_API_OPENVG, ST_PROFILE_DEFAULT_MASK, vg_api_destroy, diff --git a/src/gallium/state_trackers/wgl/SConscript b/src/gallium/state_trackers/wgl/SConscript index 0f580b859c..ec55f042f9 100644 --- a/src/gallium/state_trackers/wgl/SConscript +++ b/src/gallium/state_trackers/wgl/SConscript @@ -2,41 +2,38 @@ import os Import('*') -if env['platform'] in ['windows']: - - env = env.Clone() - - env.Append(CPPPATH = [ - '#src/mapi', - '#src/mesa', - '.', - ]) - - env.AppendUnique(CPPDEFINES = [ - '_GDI32_', # prevent wgl* being declared __declspec(dllimport) - 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers - 'WIN32_THREADS', # use Win32 thread API - 'WIN32_LEAN_AND_MEAN', # http://msdn2.microsoft.com/en-us/library/6dwk3a1z.aspx - ]) - - sources = [ - 'stw_context.c', - 'stw_device.c', - 'stw_ext_extensionsstring.c', - 'stw_ext_gallium.c', - 'stw_ext_pixelformat.c', - 'stw_ext_swapinterval.c', - 'stw_framebuffer.c', - 'stw_getprocaddress.c', - 'stw_pixelformat.c', - 'stw_st.c', - 'stw_tls.c', - 'stw_wgl.c', - ] +env = env.Clone() - wgl = env.ConvenienceLibrary( - target ='wgl', - source = sources, - ) - - Export('wgl') +env.Append(CPPPATH = [ + '#src/mapi', + '#src/mesa', + '.', +]) + +env.AppendUnique(CPPDEFINES = [ + '_GDI32_', # prevent wgl* being declared __declspec(dllimport) + 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers + 'WIN32_THREADS', # use Win32 thread API + 'WIN32_LEAN_AND_MEAN', # http://msdn2.microsoft.com/en-us/library/6dwk3a1z.aspx +]) + +sources = [ + 'stw_context.c', + 'stw_device.c', + 'stw_ext_extensionsstring.c', + 'stw_ext_gallium.c', + 'stw_ext_pixelformat.c', + 'stw_ext_swapinterval.c', + 'stw_framebuffer.c', + 'stw_getprocaddress.c', + 'stw_pixelformat.c', + 'stw_st.c', + 'stw_tls.c', + 'stw_wgl.c', +] + +wgl = env.ConvenienceLibrary( + target ='wgl', + source = sources, +) +Export('wgl') diff --git a/src/gallium/state_trackers/wgl/stw_context.c b/src/gallium/state_trackers/wgl/stw_context.c index 85878b4673..86c0a28e8d 100644 --- a/src/gallium/state_trackers/wgl/stw_context.c +++ b/src/gallium/state_trackers/wgl/stw_context.c @@ -29,12 +29,10 @@ #include "pipe/p_compiler.h" #include "pipe/p_context.h" +#include "pipe/p_state.h" +#include "util/u_memory.h" #include "state_tracker/st_api.h" -/* for _mesa_share_state */ -#include "state_tracker/st_context.h" -#include "main/core.h" - #include "stw_icd.h" #include "stw_device.h" #include "stw_winsys.h" @@ -102,13 +100,8 @@ DrvShareLists( ctx1 = stw_lookup_context_locked( dhglrc1 ); ctx2 = stw_lookup_context_locked( dhglrc2 ); - if (ctx1 && ctx2) { - struct st_context *st1, *st2; - - st1 = (struct st_context *) ctx1->st; - st2 = (struct st_context *) ctx2->st; - ret = _mesa_share_state(st2->ctx, st1->ctx); - } + if (ctx1 && ctx2 && ctx2->st->share) + ret = ctx2->st->share(ctx2->st, ctx1->st); pipe_mutex_unlock( stw_dev->ctx_mutex ); diff --git a/src/gallium/state_trackers/xorg/SConscript b/src/gallium/state_trackers/xorg/SConscript index 0b598dab6e..19315694b7 100644 --- a/src/gallium/state_trackers/xorg/SConscript +++ b/src/gallium/state_trackers/xorg/SConscript @@ -3,34 +3,38 @@ Import('*') -if 'xorg' in env['statetrackers']: +env = env.Clone() - env = env.Clone() +env.Append(CPPPATH = [ + '#/src/mesa', +]) - env.Append(CPPPATH = [ - '#/src/mesa', - ]) +env.ParseConfig('pkg-config --cflags --libs libdrm xorg-server') - env.ParseConfig('pkg-config --cflags --libs libdrm xorg-server') +if env['kms']: + env.Append(CPPDEFINES = ['HAVE_LIBKMS']) - conf = env.Configure() +conf = env.Configure() - if conf.CheckHeader('X11/extensions/dpmsconst.h'): - env.Append(CPPDEFINES = [('HAVE_XEXTPROTO_71', '1')]) +if conf.CheckHeader('X11/extensions/dpmsconst.h'): + env.Append(CPPDEFINES = [('HAVE_XEXTPROTO_71', '1')]) - conf.Finish() +conf.Finish() - st_xorg = env.ConvenienceLibrary( - target = 'st_xorg', - source = [ 'xorg_composite.c', - 'xorg_crtc.c', - 'xorg_dri2.c', - 'xorg_driver.c', - 'xorg_exa.c', - 'xorg_exa_tgsi.c', - 'xorg_output.c', - 'xorg_renderer.c', - 'xorg_xv.c', - ] - ) - Export('st_xorg') +sources = [ + 'xorg_composite.c', + 'xorg_crtc.c', + 'xorg_dri2.c', + 'xorg_driver.c', + 'xorg_exa.c', + 'xorg_exa_tgsi.c', + 'xorg_output.c', + 'xorg_renderer.c', + 'xorg_xv.c', +] + +st_xorg = env.ConvenienceLibrary( + target = 'st_xorg', + source = sources, +) +Export('st_xorg') diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index 1ec772df17..1ee79ae177 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -447,7 +447,7 @@ drv_pre_init(ScrnInfoPtr pScrn, int flags) if (!drv_init_resource_management(pScrn)) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Could not init " - "Gallium3D or libKMS."); + "Gallium3D or libKMS.\n"); return FALSE; } diff --git a/src/gallium/targets/Makefile.dri b/src/gallium/targets/Makefile.dri index 59961e982a..3fb4cc6b86 100644 --- a/src/gallium/targets/Makefile.dri +++ b/src/gallium/targets/Makefile.dri @@ -80,7 +80,7 @@ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(PIPE_DRIVERS) Makefile \ $(OBJECTS) $(PIPE_DRIVERS) \ -Wl,--start-group $(MESA_MODULES) -Wl,--end-group \ $(DRI_LIB_DEPS) $(DRIVER_EXTRAS) - $(CXX) $(CFLAGS) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS); + $(CXX) $(CFLAGS) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS) $(LDFLAGS); @rm -f $@.test mv -f $@.tmp $@ diff --git a/src/gallium/targets/Makefile.xorg b/src/gallium/targets/Makefile.xorg index 87eedd7136..47040bb14c 100644 --- a/src/gallium/targets/Makefile.xorg +++ b/src/gallium/targets/Makefile.xorg @@ -42,7 +42,7 @@ endif default: depend $(TOP)/$(LIB_DIR)/gallium $(LIBNAME) $(LIBNAME_STAGING) $(LIBNAME): $(OBJECTS) Makefile ../Makefile.xorg $(LIBS) $(DRIVER_PIPES) - $(MKLIB) -linker $(CC) -noprefix -o $@ $(LDFLAGS) $(OBJECTS) $(DRIVER_PIPES) $(GALLIUM_AUXILIARIES) $(DRIVER_LINKS) + $(MKLIB) -linker '$(CC)' -noprefix -o $@ $(LDFLAGS) $(OBJECTS) $(DRIVER_PIPES) $(GALLIUM_AUXILIARIES) $(DRIVER_LINKS) depend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURCES) rm -f depend diff --git a/src/gallium/targets/SConscript b/src/gallium/targets/SConscript deleted file mode 100644 index e447d09361..0000000000 --- a/src/gallium/targets/SConscript +++ /dev/null @@ -1,41 +0,0 @@ -import os -Import('*') - -# Compatibility with old build scripts: -# -if 'mesa' in env['statetrackers']: - if 'xlib' in env['winsys'] and 'libgl-xlib' not in env['targets']: - env['targets'].append('libgl-xlib') - if 'gdi' in env['winsys'] and 'libgl-gdi' not in env['targets']: - env['targets'].append('libgl-gdi') - -if not 'graw-xlib' in env['targets'] and not 'graw-null' in env['targets'] and not env['msvc']: - # XXX: disable until MSVC can link correctly - SConscript('graw-null/SConscript') - - -if env['dri']: - SConscript([ - 'SConscript.dri' - ]) - -if 'xorg' in env['statetrackers']: - if 'vmware' in env['winsys']: - SConscript([ - 'xorg-vmwgfx/SConscript', - ]) - -if 'egl' in env['statetrackers']: - SConscript([ - 'egl-gdi/SConscript', - ]) - -# Ideally all non-target directories would produce convenience -# libraries, and the actual shared libraries and other installables -# would be finally assembled in the targets subtree: -# -for target in env['targets']: - SConscript(os.path.join(target, 'SConscript')) - - - diff --git a/src/gallium/targets/SConscript.dri b/src/gallium/targets/SConscript.dri index bc8d179e3d..bc3671a256 100644 --- a/src/gallium/targets/SConscript.dri +++ b/src/gallium/targets/SConscript.dri @@ -3,68 +3,71 @@ Import('*') +if not env['dri']: + Return() + drienv = env.Clone() drienv.Replace(CPPPATH = [ - '#src/mesa/drivers/dri/common', - '#include', - '#include/GL/internal', - '#src/mapi', - '#src/gallium/include', - '#src/gallium/auxiliary', - '#src/gallium/drivers', - '#src/gallium/winsys', - '#src/mesa', - '#src/mesa/main', - '#src/mesa/glapi', - '#src/mesa/math', - '#src/mesa/transform', - '#src/mesa/shader', - '#src/mesa/swrast', - '#src/mesa/swrast_setup', - '#src/egl/main', - '#src/egl/drivers/dri', + '#src/mesa/drivers/dri/common', + '#include', + '#include/GL/internal', + '#src/mapi', + '#src/gallium/include', + '#src/gallium/auxiliary', + '#src/gallium/drivers', + '#src/gallium/winsys', + '#src/mesa', + '#src/mesa/main', + '#src/mesa/glapi', + '#src/mesa/math', + '#src/mesa/transform', + '#src/mesa/shader', + '#src/mesa/swrast', + '#src/mesa/swrast_setup', + '#src/egl/main', + '#src/egl/drivers/dri', ]) drienv.ParseConfig('pkg-config --cflags --libs libdrm') dri_common_utils = drienv.SharedObject( - target = 'utils.o', - source = '#src/mesa/drivers/dri/common/utils.c' + target = 'utils.o', + source = '#src/mesa/drivers/dri/common/utils.c' ) dri_common_xmlconfig = drienv.SharedObject( - target = 'xmlconfig.o', - source = '#src/mesa/drivers/dri/common/xmlconfig.c' + target = 'xmlconfig.o', + source = '#src/mesa/drivers/dri/common/xmlconfig.c' ) dri_common_vblank = drienv.SharedObject( - target = 'vblank.o', - source = '#src/mesa/drivers/dri/common/vblank.c' + target = 'vblank.o', + source = '#src/mesa/drivers/dri/common/vblank.c' ) dri_common_dri_util = drienv.SharedObject( - target = 'dri_util.o', - source = '#src/mesa/drivers/dri/common/dri_util.c' + target = 'dri_util.o', + source = '#src/mesa/drivers/dri/common/dri_util.c' ) dri_common_drisw_util = drienv.SharedObject( - target = 'drisw_util.o', - source = '#src/mesa/drivers/dri/common/drisw_util.c' + target = 'drisw_util.o', + source = '#src/mesa/drivers/dri/common/drisw_util.c' ) COMMON_DRI_SW_OBJECTS = [ - dri_common_utils, - dri_common_xmlconfig, - dri_common_drisw_util, + dri_common_utils, + dri_common_xmlconfig, + dri_common_drisw_util, ] COMMON_DRI_DRM_OBJECTS = [ - dri_common_utils, - dri_common_xmlconfig, - dri_common_vblank, - dri_common_dri_util, + dri_common_utils, + dri_common_xmlconfig, + dri_common_vblank, + dri_common_dri_util, ] drienv.AppendUnique(LIBS = [ @@ -73,36 +76,7 @@ drienv.AppendUnique(LIBS = [ ]) Export([ - 'drienv', - 'COMMON_DRI_SW_OBJECTS', - 'COMMON_DRI_DRM_OBJECTS', -]) - -SConscript([ - 'dri-swrast/SConscript', + 'drienv', + 'COMMON_DRI_SW_OBJECTS', + 'COMMON_DRI_DRM_OBJECTS', ]) - -if 'vmware' in env['winsys']: - SConscript([ - 'dri-vmwgfx/SConscript', - ]) - -if 'i915' in env['winsys']: - SConscript([ - 'dri-i915/SConscript', - ]) - -if 'i965' in env['winsys']: - SConscript([ - 'dri-i965/SConscript', - ]) - -if 'radeon' in env['winsys']: - SConscript([ - 'dri-radeong/SConscript', - ]) - -if 'r600' in env['winsys']: - SConscript([ - 'dri-r600/SConscript', - ]) diff --git a/src/gallium/targets/dri-i915/SConscript b/src/gallium/targets/dri-i915/SConscript index 172f92d6b8..ab60013830 100644 --- a/src/gallium/targets/dri-i915/SConscript +++ b/src/gallium/targets/dri-i915/SConscript @@ -1,9 +1,5 @@ Import('*') -if not 'i915' in env['drivers']: - print 'warning: i915 pipe driver not built skipping i915_dri.so' - Return() - env = drienv.Clone() env.ParseConfig('pkg-config --cflags --libs libdrm_intel') @@ -24,8 +20,10 @@ env.Prepend(LIBS = [ COMMON_DRI_DRM_OBJECTS ]) -env.LoadableModule( +module = env.LoadableModule( target = 'i915_dri.so', source = 'target.c', SHLIBPREFIX = '', ) + +env.Alias('dri-i915', module)
\ No newline at end of file diff --git a/src/gallium/targets/dri-i965/SConscript b/src/gallium/targets/dri-i965/SConscript index 684e3488f7..669f70d6b8 100644 --- a/src/gallium/targets/dri-i965/SConscript +++ b/src/gallium/targets/dri-i965/SConscript @@ -1,9 +1,5 @@ Import('*') -if not 'i965' in env['drivers']: - print 'warning: i965 pipe driver not built skipping i965_dri.so' - Return() - env = drienv.Clone() env.ParseConfig('pkg-config --cflags --libs libdrm_intel') @@ -27,8 +23,10 @@ env.Prepend(LIBS = [ COMMON_DRI_DRM_OBJECTS ]) -env.LoadableModule( +module = env.LoadableModule( target = 'i965_dri.so', source = 'target.c', SHLIBPREFIX = '', ) + +env.Alias('dri-i965', module)
\ No newline at end of file diff --git a/src/gallium/targets/dri-noop/Makefile b/src/gallium/targets/dri-noop/Makefile new file mode 100644 index 0000000000..21c5f4f9f2 --- /dev/null +++ b/src/gallium/targets/dri-noop/Makefile @@ -0,0 +1,34 @@ +TOP = ../../../.. +include $(TOP)/configs/current + +LIBNAME = noop_dri.so + +DRIVER_DEFINES = \ + -D__NOT_HAVE_DRM_H + +PIPE_DRIVERS = \ + $(TOP)/src/gallium/state_trackers/dri/sw/libdrisw.a \ + $(TOP)/src/gallium/winsys/sw/dri/libswdri.a \ + $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \ + $(TOP)/src/gallium/drivers/trace/libtrace.a \ + $(TOP)/src/gallium/drivers/rbug/librbug.a \ + $(TOP)/src/gallium/drivers/noop/libnoop.a + +SWRAST_COMMON_GALLIUM_SOURCES = \ + $(TOP)/src/mesa/drivers/dri/common/utils.c \ + $(TOP)/src/mesa/drivers/dri/common/drisw_util.c \ + $(TOP)/src/mesa/drivers/dri/common/xmlconfig.c + +C_SOURCES = \ + swrast_drm_api.c \ + $(SWRAST_COMMON_GALLIUM_SOURCES) \ + $(DRIVER_SOURCES) + +ASM_SOURCES = + +include ../Makefile.dri + +INCLUDES += \ + -I$(TOP)/src/gallium/winsys/sw/dri + +symlinks: diff --git a/src/gallium/targets/dri-noop/SConscript b/src/gallium/targets/dri-noop/SConscript new file mode 100644 index 0000000000..9c04ee6631 --- /dev/null +++ b/src/gallium/targets/dri-noop/SConscript @@ -0,0 +1,31 @@ +Import('*') + +env = drienv.Clone() + +env.Append(CPPPATH = [ + '#/src/gallium/winsys/sw/dri', +]) + +env.Prepend(LIBS = [ + st_drisw, + ws_dri, + noop, + mesa, + glsl, + gallium, + COMMON_DRI_SW_OBJECTS +]) + +env.Prepend(LIBS = [noop]) + +swrastg_sources = [ + 'swrast_drm_api.c' +] + +module = env.LoadableModule( + target ='noop_dri.so', + source = swrastg_sources, + SHLIBPREFIX = '', +) + +env.Alias('dri-noop', module) diff --git a/src/gallium/targets/dri-noop/swrast_drm_api.c b/src/gallium/targets/dri-noop/swrast_drm_api.c new file mode 100644 index 0000000000..a99779f183 --- /dev/null +++ b/src/gallium/targets/dri-noop/swrast_drm_api.c @@ -0,0 +1,63 @@ +/************************************************************************** + * + * Copyright 2009, VMware, Inc. + * All Rights Reserved. + * Copyright 2010 George Sapountzis <gsapountzis@gmail.com> + * + * 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, sub license, 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 (including the + * next paragraph) 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 NON-INFRINGEMENT. + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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. + * + **************************************************************************/ + +#include "pipe/p_compiler.h" +#include "util/u_memory.h" +#include "dri_sw_winsys.h" +#include "noop/noop_public.h" + +#include "target-helpers/inline_debug_helper.h" +#include "target-helpers/inline_sw_helper.h" + + +struct pipe_screen * +drisw_create_screen(struct drisw_loader_funcs *lf) +{ + struct sw_winsys *winsys = NULL; + struct pipe_screen *screen = NULL; + + winsys = dri_create_sw_winsys(lf); + if (winsys == NULL) + return NULL; + + screen = noop_screen_create(winsys); + if (!screen) + goto fail; + + screen = debug_screen_wrap(screen); + + return screen; + +fail: + if (winsys) + winsys->destroy(winsys); + + return NULL; +} + +/* vim: set sw=3 ts=8 sts=3 expandtab: */ diff --git a/src/gallium/targets/dri-r300/SConscript b/src/gallium/targets/dri-r300/SConscript index 33a458f2e6..005b4bbf7f 100644 --- a/src/gallium/targets/dri-r300/SConscript +++ b/src/gallium/targets/dri-r300/SConscript @@ -1,9 +1,5 @@ Import('*') -if not 'r300' in env['drivers']: - print 'warning: r300 pipe driver not built skipping r300_dri.so' - Return() - env = drienv.Clone() env.ParseConfig('pkg-config --cflags --libs libdrm_radeon') @@ -23,8 +19,10 @@ env.Prepend(LIBS = [ COMMON_DRI_DRM_OBJECTS ]) -env.SharedLibrary( +module = env.SharedLibrary( target ='r300_dri.so', source = 'target.c', SHLIBPREFIX = '', ) + +env.Alias('dri-r300', module)
\ No newline at end of file diff --git a/src/gallium/targets/dri-r600/SConscript b/src/gallium/targets/dri-r600/SConscript index 64d6d2a7f6..aa771db2d1 100644 --- a/src/gallium/targets/dri-r600/SConscript +++ b/src/gallium/targets/dri-r600/SConscript @@ -1,9 +1,5 @@ Import('*') -if not 'r600' in env['drivers']: - print 'warning: r600 pipe driver not built skipping r600_dri.so' - Return() - env = drienv.Clone() env.ParseConfig('pkg-config --cflags --libs libdrm_radeon') @@ -22,8 +18,10 @@ env.Prepend(LIBS = [ COMMON_DRI_DRM_OBJECTS ]) -env.SharedLibrary( +module = env.SharedLibrary( target ='r600_dri.so', source = 'target.c', SHLIBPREFIX = '', ) + +env.Alias('dri-r600', module) diff --git a/src/gallium/targets/dri-swrast/SConscript b/src/gallium/targets/dri-swrast/SConscript index d814347119..b67483800e 100644 --- a/src/gallium/targets/dri-swrast/SConscript +++ b/src/gallium/targets/dri-swrast/SConscript @@ -27,15 +27,16 @@ if True: if env['llvm']: env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE') - env.Tool('udis86') env.Prepend(LIBS = [llvmpipe]) swrastg_sources = [ 'swrast_drm_api.c' ] -env.LoadableModule( +module = env.LoadableModule( target ='swrastg_dri.so', source = swrastg_sources, SHLIBPREFIX = '', ) + +env.Alias('dri-swrast', module) diff --git a/src/gallium/targets/dri-vmwgfx/Makefile b/src/gallium/targets/dri-vmwgfx/Makefile index 97c703b373..38f78932e1 100644 --- a/src/gallium/targets/dri-vmwgfx/Makefile +++ b/src/gallium/targets/dri-vmwgfx/Makefile @@ -12,6 +12,7 @@ PIPE_DRIVERS = \ C_SOURCES = \ target.c \ + vmw_powf.c \ $(COMMON_GALLIUM_SOURCES) DRIVER_DEFINES = \ diff --git a/src/gallium/targets/dri-vmwgfx/SConscript b/src/gallium/targets/dri-vmwgfx/SConscript index 7afabc7429..7888e4f2c8 100644 --- a/src/gallium/targets/dri-vmwgfx/SConscript +++ b/src/gallium/targets/dri-vmwgfx/SConscript @@ -1,9 +1,5 @@ Import('*') -if not 'svga' in env['drivers']: - print 'warning: svga pipe driver not built skipping vmwgfx_dri.so' - Return() - env = drienv.Clone() env.Append(CPPDEFINES = ['GALLIUM_RBUG', 'GALLIUM_TRACE']) @@ -20,8 +16,10 @@ env.Prepend(LIBS = [ COMMON_DRI_DRM_OBJECTS ]) -env.LoadableModule( +module = env.LoadableModule( target = 'vmwgfx_dri.so', source = 'target.c', SHLIBPREFIX = '', ) + +env.Alias('dri-vmwgfx', module)
\ No newline at end of file diff --git a/src/gallium/targets/dri-vmwgfx/vmw_powf.c b/src/gallium/targets/dri-vmwgfx/vmw_powf.c new file mode 100644 index 0000000000..ca5e39b389 --- /dev/null +++ b/src/gallium/targets/dri-vmwgfx/vmw_powf.c @@ -0,0 +1,17 @@ +/** + * Powf may leave an unresolved symbol pointing to a libstdc++.so powf. + * However, not all libstdc++.so include this function, so optionally + * replace the powf function with calls to expf and logf. + */ + +#ifdef VMW_RESOLVE_POWF + +extern float expf(float x); +extern float logf(float x); +extern float powf(float x, float y); + +float powf(float x, float y) { + return expf(logf(x)*y); +} + +#endif diff --git a/src/gallium/targets/egl-gdi/SConscript b/src/gallium/targets/egl-gdi/SConscript index 8f8b28ef67..d52eeb70fd 100644 --- a/src/gallium/targets/egl-gdi/SConscript +++ b/src/gallium/targets/egl-gdi/SConscript @@ -3,45 +3,53 @@ Import('*') -if env['platform'] == 'windows': +env = env.Clone() - env = env.Clone() +env.Append(CPPPATH = [ + '#/src/gallium/state_trackers/egl', + '#/src/gallium/state_trackers/vega', + '#/src/egl/main', + '#/src/mesa', +]) - env.Append(CPPPATH = [ - '#/src/gallium/state_trackers/egl', - '#/src/gallium/state_trackers/vega', - '#/src/egl/main', - '#/src/mesa', - ]) +env.Append(CPPDEFINES = [ + 'FEATURE_VG=1', + 'GALLIUM_SOFTPIPE', + 'GALLIUM_RBUG', + 'GALLIUM_TRACE', +]) - env.Append(CPPDEFINES = [ - 'FEATURE_VG=1', - 'GALLIUM_SOFTPIPE', - 'GALLIUM_RBUG', - 'GALLIUM_TRACE', - ]) +env.Append(LIBS = [ + 'gdi32', + 'user32', + 'kernel32', + 'ws2_32', +]) - env.Append(LIBS = [ - 'gdi32', - 'user32', - 'kernel32', - 'ws2_32', - ]) +env.Prepend(LIBS = [ + st_egl_gdi, + ws_gdi, + identity, + trace, + rbug, + softpipe, + vgapi, + st_vega, + gallium, + egl, +]) - env['no_import_lib'] = 1 +if env['llvm']: + env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE') + env.Prepend(LIBS = [llvmpipe]) - drivers = [softpipe] - if env['llvm']: - env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE') - drivers += [llvmpipe] - drivers += [identity, trace, rbug] +egl_gallium = env.SharedLibrary( + target ='egl_gallium', + source = 'egl-static.c', +) - apis = [vgapi, st_vega] +env['no_import_lib'] = 1 - egl_gallium = env.SharedLibrary( - target ='egl_gallium', - source = 'egl-static.c', - LIBS = st_egl_gdi + ws_gdi + drivers + apis + gallium + egl + env['LIBS'], - ) +egl_gdi = env.InstallSharedLibrary(egl_gallium) - env.InstallSharedLibrary(egl_gallium) +env.Alias('egl-gdi', egl_gdi) diff --git a/src/gallium/targets/egl/Makefile b/src/gallium/targets/egl/Makefile index 38e60dbafb..63e9352144 100644 --- a/src/gallium/targets/egl/Makefile +++ b/src/gallium/targets/egl/Makefile @@ -39,7 +39,7 @@ egl_CPPFLAGS := \ -I$(TOP)/src/gallium/state_trackers/egl \ -I$(TOP)/src/egl/main \ -DPIPE_PREFIX=\"$(PIPE_PREFIX)\" -DST_PREFIX=\"$(ST_PREFIX)\" -egl_SYS := -lm $(DLOPEN_LIBS) -L$(TOP)/$(LIB_DIR) -lEGL +egl_SYS := -lm $(DLOPEN_LIBS) -lEGL egl_LIBS := $(TOP)/src/gallium/state_trackers/egl/libegl.a ifneq ($(findstring x11, $(EGL_PLATFORMS)),) @@ -54,9 +54,8 @@ egl_LIBS += $(TOP)/src/gallium/winsys/sw/fbdev/libfbdev.a endif # EGL_RENDERABLE_TYPE is a compile time attribute -egl_CPPFLAGS += $(API_DEFINES) ifneq ($(filter $(GL_LIB), $(EGL_CLIENT_APIS)),) -egl_CPPFLAGS += -DFEATURE_GL=1 +egl_CPPFLAGS += $(API_DEFINES) endif ifneq ($(filter $(GLESv1_CM_LIB), $(EGL_CLIENT_APIS)),) egl_CPPFLAGS += -DFEATURE_ES1=1 @@ -134,17 +133,17 @@ GL_LIBS := $(TOP)/src/mesa/libmesagallium.a # OpenGL ES 1.x state tracker GLESv1_CM_CPPFLAGS := -I$(TOP)/src/mesa -GLESv1_CM_SYS := $(DRI_LIB_DEPS) -L$(TOP)/$(LIB_DIR) -l$(GLESv1_CM_LIB) +GLESv1_CM_SYS := $(DRI_LIB_DEPS) -l$(GLESv1_CM_LIB) GLESv1_CM_LIBS := $(TOP)/src/mesa/libes1gallium.a # OpenGL ES 2.x state tracker GLESv2_CPPFLAGS := -I$(TOP)/src/mesa -GLESv2_SYS := $(DRI_LIB_DEPS) -L$(TOP)/$(LIB_DIR) -l$(GLESv2_LIB) +GLESv2_SYS := $(DRI_LIB_DEPS) -l$(GLESv2_LIB) GLESv2_LIBS := $(TOP)/src/mesa/libes2gallium.a # OpenVG state tracker OpenVG_CPPFLAGS := -I$(TOP)/src/gallium/state_trackers/vega -OpenVG_SYS := -lm -L$(TOP)/$(LIB_DIR) -l$(VG_LIB) +OpenVG_SYS := -lm -l$(VG_LIB) OpenVG_LIBS := $(TOP)/src/gallium/state_trackers/vega/libvega.a @@ -181,14 +180,16 @@ OUTPUTS := $(addprefix $(OUTPUT_PATH)/, $(OUTPUTS)) default: $(OUTPUTS) define mklib -$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' \ + -L$(TOP)/$(LIB_DIR) -ldflags '$(LDFLAGS)' \ -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \ -Wl,--start-group $(common_LIBS) $($(1)_LIBS) -Wl,--end-group \ $(common_SYS) $($(1)_SYS) endef define mklib-cxx -$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CXX)' -ldflags '$(LDFLAGS)' \ +$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CXX)' \ + -L$(TOP)/$(LIB_DIR) -ldflags '$(LDFLAGS)' \ -cplusplus -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \ -Wl,--start-group $(common_LIBS) $($(1)_LIBS) -Wl,--end-group \ $(common_SYS) $($(1)_SYS) diff --git a/src/gallium/targets/graw-gdi/SConscript b/src/gallium/targets/graw-gdi/SConscript new file mode 100644 index 0000000000..352efe95d0 --- /dev/null +++ b/src/gallium/targets/graw-gdi/SConscript @@ -0,0 +1,43 @@ +####################################################################### +# SConscript for graw-gdi + +Import('*') + +env = env.Clone() + +env.Append(CPPPATH = [ + '#src/gallium/winsys/sw', +]) + +env.Prepend(LIBS = [ + gallium, + 'gdi32', + 'user32', + 'ws2_32', +]) + +sources = [ + 'graw_gdi.c', + graw_util, +] + +if True: + env.Append(CPPDEFINES = ['GALLIUM_TRACE', 'GALLIUM_RBUG', 'GALLIUM_GALAHAD', 'GALLIUM_SOFTPIPE']) + env.Prepend(LIBS = [trace, rbug, galahad, softpipe]) + +if env['llvm']: + env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE') + env.Prepend(LIBS = [llvmpipe]) + +graw = env.SharedLibrary( + target = 'graw', + source = sources, + LIBS = ws_gdi + env['LIBS'], +) + +if env['platform'] == 'windows': + graw = env.FindIxes(graw, 'LIBPREFIX', 'LIBSUFFIX') +else: + graw = env.FindIxes(graw, 'SHLIBPREFIX', 'SHLIBSUFFIX') + +env.Alias('graw-gdi', graw) diff --git a/src/gallium/targets/graw-gdi/graw_gdi.c b/src/gallium/targets/graw-gdi/graw_gdi.c new file mode 100644 index 0000000000..17ca2a761c --- /dev/null +++ b/src/gallium/targets/graw-gdi/graw_gdi.c @@ -0,0 +1,157 @@ +/************************************************************************** + * + * Copyright 2010 VMware, Inc. + * 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, sub license, 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 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 NON-INFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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. + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * + **************************************************************************/ + +#include "gdi/gdi_sw_winsys.h" +#include "pipe/p_screen.h" +#include "state_tracker/graw.h" +#include "target-helpers/inline_debug_helper.h" +#include "target-helpers/inline_sw_helper.h" +#include <windows.h> + + +static LRESULT CALLBACK +window_proc(HWND hWnd, + UINT uMsg, + WPARAM wParam, + LPARAM lParam) +{ + switch (uMsg) { + case WM_DESTROY: + PostQuitMessage(0); + break; + + default: + return DefWindowProc(hWnd, uMsg, wParam, lParam); + } + + return 0; +} + +static struct { + void (* draw)(void); +} graw; + +struct pipe_screen * +graw_create_window_and_screen(int x, + int y, + unsigned width, + unsigned height, + enum pipe_format format, + void **handle) +{ + struct sw_winsys *winsys = NULL; + struct pipe_screen *screen = NULL; + WNDCLASSEX wc = {sizeof(wc)}; + UINT style = WS_VISIBLE | WS_TILEDWINDOW; + RECT rect; + HWND hWnd = NULL; + HDC hDC = NULL; + + if (format != PIPE_FORMAT_R8G8B8A8_UNORM) + goto fail; + + winsys = gdi_create_sw_winsys(); + if (winsys == NULL) + goto fail; + + screen = sw_screen_create(winsys); + if (screen == NULL) + goto fail; + + wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; + wc.lpfnWndProc = window_proc; + wc.lpszClassName = "graw-gdi"; + wc.hInstance = GetModuleHandle(NULL); + wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); + RegisterClassEx(&wc); + + SetRect(&rect, 0, 0, width, height); + AdjustWindowRectEx(&rect, style, FALSE, 0); + + hWnd = CreateWindowEx(0, + wc.lpszClassName, + wc.lpszClassName, + style, + x, + y, + rect.right - rect.left, + rect.bottom - rect.top, + NULL, + NULL, + wc.hInstance, + 0); + if (hWnd == NULL) + goto fail; + + hDC = GetDC(hWnd); + if (hDC == NULL) + goto fail; + + *handle = (void *)hDC; + + return debug_screen_wrap(screen); + +fail: + if (hWnd) + DestroyWindow(hWnd); + + if (screen) + screen->destroy(screen); + + return NULL; +} + +void +graw_set_display_func(void (* draw)(void)) +{ + graw.draw = draw; +} + +void +graw_main_loop(void) +{ + for (;;) { + MSG msg; + + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { + if (msg.message == WM_QUIT) { + return; + } + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + if (graw.draw) { + graw.draw(); + } + + Sleep(0); + } +} diff --git a/src/gallium/targets/graw-null/SConscript b/src/gallium/targets/graw-null/SConscript index 3416989d8e..ebac1728f0 100644 --- a/src/gallium/targets/graw-null/SConscript +++ b/src/gallium/targets/graw-null/SConscript @@ -5,54 +5,28 @@ Import('*') env = env.Clone() -env.Prepend(LIBS = [ - ws_null, - trace, - rbug, - identity, -# gallium, -]) - -env.Append(CPPPATH = [ - '#src/gallium/drivers', -]) +graw_util = env.SharedObject( + source = ['graw_util.c'], +) -if env['platform'] == 'windows': - # For trace - env.Append(LIBS = [ - 'ws2_32', - ]) +env = env.Clone() sources = [ 'graw_null.c', - '../graw-xlib/graw_util.c', + graw_util, ] -if True: - env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE') - env.Prepend(LIBS = [softpipe]) - -if env['llvm']: - env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE') - env.Tool('udis86') - env.Prepend(LIBS = [llvmpipe]) - -# Need this for trace, identity drivers referenced by -# gallium_wrap_screen(). -# env.Prepend(LIBS = [gallium]) # TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions graw = env.SharedLibrary( - target ='graw', + target = 'graw', source = sources, ) -env.InstallSharedLibrary(graw, version=(1, 0)) - if env['platform'] == 'windows': graw = env.FindIxes(graw, 'LIBPREFIX', 'LIBSUFFIX') else: graw = env.FindIxes(graw, 'SHLIBPREFIX', 'SHLIBSUFFIX') -Export('graw') +Export('graw_util', 'graw') diff --git a/src/gallium/targets/graw-null/graw_null.c b/src/gallium/targets/graw-null/graw_null.c index 5939a5acd3..f1fe3872c9 100644 --- a/src/gallium/targets/graw-null/graw_null.c +++ b/src/gallium/targets/graw-null/graw_null.c @@ -1,31 +1,5 @@ -#include "pipe/p_compiler.h" -#include "util/u_debug.h" -#include "util/u_memory.h" -#include "target-helpers/wrap_screen.h" -#include "sw/null/null_sw_winsys.h" -#include "os/os_time.h" #include "state_tracker/graw.h" -#ifdef GALLIUM_SOFTPIPE -#include "softpipe/sp_public.h" -#endif - -#ifdef GALLIUM_LLVMPIPE -#include "llvmpipe/lp_public.h" -#endif - -/* Haven't figured out a decent way to build the helper code yet - - * #include it here temporarily. - */ -#include "sw/sw_public.h" -#include "sw/sw.c" - -#include <stdio.h> - - -static struct { - void (*draw)(void); -} graw; @@ -37,45 +11,7 @@ graw_create_window_and_screen( int x, enum pipe_format format, void **handle) { - const char *default_driver; - const char *driver; - struct pipe_screen *screen = NULL; - struct sw_winsys *winsys = NULL; - static int dummy; - - - /* Create the underlying winsys, which performs presents to Xlib - * drawables: - */ - winsys = null_sw_create(); - if (winsys == NULL) - return NULL; - -#if defined(GALLIUM_LLVMPIPE) - default_driver = "llvmpipe"; -#elif defined(GALLIUM_SOFTPIPE) - default_driver = "softpipe"; -#else - default_driver = ""; -#endif - - driver = debug_get_option("GALLIUM_DRIVER", default_driver); - -#if defined(GALLIUM_LLVMPIPE) - if (screen == NULL && strcmp(driver, "llvmpipe") == 0) - screen = llvmpipe_create_screen( winsys ); -#endif - -#if defined(GALLIUM_SOFTPIPE) - if (screen == NULL) - screen = softpipe_create_screen( winsys ); -#endif - - *handle = &dummy; - - /* Inject any wrapping layers we want to here: - */ - return gallium_wrap_screen( screen ); + return NULL; } @@ -83,13 +19,10 @@ graw_create_window_and_screen( int x, void graw_set_display_func( void (*draw)( void ) ) { - graw.draw = draw; } void graw_main_loop( void ) { - graw.draw(); - os_time_sleep(100000); } diff --git a/src/gallium/targets/graw-null/graw_util.c b/src/gallium/targets/graw-null/graw_util.c new file mode 100644 index 0000000000..e5cf526d33 --- /dev/null +++ b/src/gallium/targets/graw-null/graw_util.c @@ -0,0 +1,92 @@ + +#include "pipe/p_compiler.h" +#include "pipe/p_context.h" +#include "pipe/p_state.h" +#include "tgsi/tgsi_text.h" +#include "util/u_debug.h" +#include "util/u_memory.h" +#include "state_tracker/graw.h" + + +/* Helper functions. These are the same for all graw implementations. + */ +PUBLIC void * +graw_parse_geometry_shader(struct pipe_context *pipe, + const char *text) +{ + struct tgsi_token tokens[1024]; + struct pipe_shader_state state; + + if (!tgsi_text_translate(text, tokens, Elements(tokens))) + return NULL; + + state.tokens = tokens; + return pipe->create_gs_state(pipe, &state); +} + +PUBLIC void * +graw_parse_vertex_shader(struct pipe_context *pipe, + const char *text) +{ + struct tgsi_token tokens[1024]; + struct pipe_shader_state state; + + if (!tgsi_text_translate(text, tokens, Elements(tokens))) + return NULL; + + state.tokens = tokens; + return pipe->create_vs_state(pipe, &state); +} + +PUBLIC void * +graw_parse_fragment_shader(struct pipe_context *pipe, + const char *text) +{ + struct tgsi_token tokens[1024]; + struct pipe_shader_state state; + + if (!tgsi_text_translate(text, tokens, Elements(tokens))) + return NULL; + + state.tokens = tokens; + return pipe->create_fs_state(pipe, &state); +} + +static char out_filename[256] = ""; + +PUBLIC boolean +graw_parse_args(int *argi, + int argc, + char *argv[]) +{ + if (strcmp(argv[*argi], "-o") == 0) { + if (*argi + 1 >= argc) { + return FALSE; + } + + strncpy(out_filename, argv[*argi + 1], sizeof(out_filename) - 1); + out_filename[sizeof(out_filename) - 1] = '\0'; + *argi += 2; + return TRUE; + } + + return FALSE; +} + +PUBLIC boolean +graw_save_surface_to_file(struct pipe_context *pipe, + struct pipe_surface *surface, + const char *filename) +{ + if (!filename || !*filename) { + filename = out_filename; + if (!filename || !*filename) { + return FALSE; + } + } + + /* XXX: Make that working in release builds. + */ + debug_dump_surface_bmp(pipe, filename, surface); + return TRUE; +} diff --git a/src/gallium/targets/graw-xlib/SConscript b/src/gallium/targets/graw-xlib/SConscript index 21fce948f4..42cb349cc9 100644 --- a/src/gallium/targets/graw-xlib/SConscript +++ b/src/gallium/targets/graw-xlib/SConscript @@ -3,56 +3,40 @@ Import('*') -if env['platform'] != 'linux': - Return() - env = env.Clone() -env.Tool('x11') - env.Prepend(LIBS = [ ws_xlib, - trace, - rbug, - identity, -# gallium, + gallium, ]) +env.Prepend(LIBS = env['X11_LIBS']) + env.Append(CPPPATH = [ '#src/gallium/drivers', '#src/gallium/include/state_tracker', ]) +env.Append(CPPDEFINES = ['GALLIUM_RBUG', 'GALLIUM_TRACE', 'GALLIUM_GALAHAD']) sources = [ 'graw_xlib.c', - 'graw_util.c', + graw_util ] -env.Tool('x11') - if True: - env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE') - env.Prepend(LIBS = [softpipe]) + env.Append(CPPDEFINES = ['GALLIUM_TRACE', 'GALLIUM_RBUG', 'GALLIUM_GALAHAD', 'GALLIUM_SOFTPIPE']) + env.Prepend(LIBS = [trace, rbug, galahad, softpipe]) if env['llvm']: env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE') - env.Tool('udis86') env.Prepend(LIBS = [llvmpipe]) -# Need this for trace, identity drivers referenced by -# gallium_wrap_screen(). -# -env.Prepend(LIBS = [gallium]) - -# TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions graw = env.SharedLibrary( target ='graw', source = sources, ) -env.InstallSharedLibrary(graw, version=(1, 0)) - -graw = env.FindIxes(graw, 'SHLIBPREFIX', 'SHLIBSUFFIX') +graw = env.InstallSharedLibrary(graw, version=(1, 0)) -Export('graw') +env.Alias('graw-xlib', graw) diff --git a/src/gallium/targets/graw-xlib/graw_util.c b/src/gallium/targets/graw-xlib/graw_util.c deleted file mode 100644 index fc7c9ae6f9..0000000000 --- a/src/gallium/targets/graw-xlib/graw_util.c +++ /dev/null @@ -1,50 +0,0 @@ - -#include "pipe/p_compiler.h" -#include "pipe/p_context.h" -#include "pipe/p_state.h" -#include "tgsi/tgsi_text.h" -#include "util/u_memory.h" -#include "state_tracker/graw.h" - - -/* Helper functions. These are the same for all graw implementations. - */ -void *graw_parse_geometry_shader(struct pipe_context *pipe, - const char *text) -{ - struct tgsi_token tokens[1024]; - struct pipe_shader_state state; - - if (!tgsi_text_translate(text, tokens, Elements(tokens))) - return NULL; - - state.tokens = tokens; - return pipe->create_gs_state(pipe, &state); -} - -void *graw_parse_vertex_shader(struct pipe_context *pipe, - const char *text) -{ - struct tgsi_token tokens[1024]; - struct pipe_shader_state state; - - if (!tgsi_text_translate(text, tokens, Elements(tokens))) - return NULL; - - state.tokens = tokens; - return pipe->create_vs_state(pipe, &state); -} - -void *graw_parse_fragment_shader(struct pipe_context *pipe, - const char *text) -{ - struct tgsi_token tokens[1024]; - struct pipe_shader_state state; - - if (!tgsi_text_translate(text, tokens, Elements(tokens))) - return NULL; - - state.tokens = tokens; - return pipe->create_fs_state(pipe, &state); -} - diff --git a/src/gallium/targets/graw-xlib/graw_xlib.c b/src/gallium/targets/graw-xlib/graw_xlib.c index 8b64a0b819..578086f8f9 100644 --- a/src/gallium/targets/graw-xlib/graw_xlib.c +++ b/src/gallium/targets/graw-xlib/graw_xlib.c @@ -3,23 +3,9 @@ #include "pipe/p_screen.h" #include "util/u_debug.h" #include "util/u_memory.h" -#include "target-helpers/wrap_screen.h" +#include "target-helpers/inline_sw_helper.h" +#include "target-helpers/inline_debug_helper.h" #include "state_tracker/xlib_sw_winsys.h" - -#ifdef GALLIUM_SOFTPIPE -#include "softpipe/sp_public.h" -#endif - -#ifdef GALLIUM_LLVMPIPE -#include "llvmpipe/lp_public.h" -#endif - -/* Haven't figured out a decent way to build the helper code yet - - * #include it here temporarily. - */ -#include "sw/sw_public.h" -#include "sw/sw.c" - #include "state_tracker/graw.h" #include <X11/Xlib.h> @@ -36,8 +22,6 @@ static struct { static struct pipe_screen * graw_create_screen( void ) { - const char *default_driver; - const char *driver; struct pipe_screen *screen = NULL; struct sw_winsys *winsys = NULL; @@ -48,35 +32,14 @@ graw_create_screen( void ) if (winsys == NULL) return NULL; -#if defined(GALLIUM_LLVMPIPE) - default_driver = "llvmpipe"; -#elif defined(GALLIUM_SOFTPIPE) - default_driver = "softpipe"; -#else - default_driver = ""; -#endif - - driver = debug_get_option("GALLIUM_DRIVER", default_driver); - -#if defined(GALLIUM_LLVMPIPE) - if (screen == NULL && strcmp(driver, "llvmpipe") == 0) - screen = llvmpipe_create_screen( winsys ); -#endif - -#if defined(GALLIUM_SOFTPIPE) - if (screen == NULL) - screen = softpipe_create_screen( winsys ); -#endif + screen = sw_screen_create( winsys ); /* Inject any wrapping layers we want to here: */ - return gallium_wrap_screen( screen ); + return debug_screen_wrap( screen ); } - - - struct pipe_screen * graw_create_window_and_screen( int x, int y, diff --git a/src/gallium/targets/libgl-gdi/SConscript b/src/gallium/targets/libgl-gdi/SConscript index 12fe403f62..6fa0851a1a 100644 --- a/src/gallium/targets/libgl-gdi/SConscript +++ b/src/gallium/targets/libgl-gdi/SConscript @@ -3,45 +3,45 @@ Import('*') -if env['platform'] == 'windows': +env = env.Clone() - env = env.Clone() +env.Append(CPPPATH = [ + '#src/gallium/state_trackers/wgl', + '#src/gallium/winsys/sw', +]) - env.Append(CPPPATH = [ - '#src/gallium/state_trackers/wgl', - '#src/gallium/winsys/sw', - ]) +env.Append(LIBS = [ + 'gdi32', + 'user32', + 'kernel32', + 'ws2_32', + talloc, +]) - env.Append(LIBS = [ - 'gdi32', - 'user32', - 'kernel32', - 'ws2_32', - talloc, - ]) +sources = ['libgl_gdi.c'] +drivers = [] - sources = [] - drivers = [] +if True: + drivers += [softpipe] - if True: - sources = ['gdi_softpipe_winsys.c'] - drivers = [softpipe] +if env['llvm']: + env.Append(CPPDEFINES = 'HAVE_LLVMPIPE') + drivers += [llvmpipe] - if env['llvm']: - sources = ['gdi_llvmpipe_winsys.c'] - drivers = [llvmpipe] +if env['gcc']: + sources += ['#src/gallium/state_trackers/wgl/opengl32.mingw.def'] +else: + sources += ['#src/gallium/state_trackers/wgl/opengl32.def'] + +drivers += [trace, rbug] - if env['gcc']: - sources += ['#src/gallium/state_trackers/wgl/opengl32.mingw.def'] - else: - sources += ['#src/gallium/state_trackers/wgl/opengl32.def'] - - drivers += [trace, rbug] +env['no_import_lib'] = 1 - env['no_import_lib'] = 1 +opengl32 = env.SharedLibrary( + target ='opengl32', + source = sources, + LIBS = wgl + ws_gdi + glapi + mesa + drivers + gallium + glsl + env['LIBS'], +) - env.SharedLibrary( - target ='opengl32', - source = sources, - LIBS = wgl + ws_gdi + glapi + mesa + drivers + gallium + glsl + env['LIBS'], - ) +env.Alias('opengl32', opengl32) +env.Alias('libgl-gdi', opengl32) diff --git a/src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c b/src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c deleted file mode 100644 index 4ac507ff9c..0000000000 --- a/src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c +++ /dev/null @@ -1,124 +0,0 @@ -/************************************************************************** - * - * Copyright 2009 VMware, Inc. - * 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, sub license, 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 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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. - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * - **************************************************************************/ - -/** - * @file - * LLVMpipe support. - * - * @author Jose Fonseca <jfonseca@vmware.com> - */ - - -#include <windows.h> - -#include "stw_winsys.h" -#include "gdi/gdi_sw_winsys.h" -#include "softpipe/sp_texture.h" -#include "softpipe/sp_screen.h" -#include "softpipe/sp_public.h" - - -static struct pipe_screen * -gdi_softpipe_screen_create(void) -{ - static struct sw_winsys *winsys; - struct pipe_screen *screen; - - winsys = gdi_create_sw_winsys(); - if(!winsys) - goto no_winsys; - - screen = softpipe_create_screen(winsys); - if(!screen) - goto no_screen; - - return screen; - -no_screen: - winsys->destroy(winsys); -no_winsys: - return NULL; -} - - - - -static void -gdi_softpipe_present(struct pipe_screen *screen, - struct pipe_surface *surface, - HDC hDC) -{ - /* This will fail if any interposing layer (trace, debug, etc) has - * been introduced between the state-trackers and softpipe. - * - * Ideally this would get replaced with a call to - * pipe_screen::flush_frontbuffer(). - * - * Failing that, it may be necessary for intervening layers to wrap - * other structs such as this stw_winsys as well... - */ - gdi_sw_display(softpipe_screen(screen)->winsys, - softpipe_resource(surface->texture)->dt, - hDC); -} - - -static const struct stw_winsys stw_winsys = { - &gdi_softpipe_screen_create, - &gdi_softpipe_present, - NULL, /* get_adapter_luid */ - NULL, /* shared_surface_open */ - NULL, /* shared_surface_close */ - NULL /* compose */ -}; - - -BOOL WINAPI -DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) -{ - switch (fdwReason) { - case DLL_PROCESS_ATTACH: - stw_init(&stw_winsys); - stw_init_thread(); - break; - - case DLL_THREAD_ATTACH: - stw_init_thread(); - break; - - case DLL_THREAD_DETACH: - stw_cleanup_thread(); - break; - - case DLL_PROCESS_DETACH: - stw_cleanup_thread(); - stw_cleanup(); - break; - } - return TRUE; -} diff --git a/src/gallium/targets/libgl-gdi/gdi_llvmpipe_winsys.c b/src/gallium/targets/libgl-gdi/libgl_gdi.c index 58c941a03b..1d6e664eab 100644 --- a/src/gallium/targets/libgl-gdi/gdi_llvmpipe_winsys.c +++ b/src/gallium/targets/libgl-gdi/libgl_gdi.c @@ -1,6 +1,6 @@ /************************************************************************** * - * Copyright 2009 VMware, Inc. + * Copyright 2009-2010 VMware, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -28,7 +28,7 @@ /** * @file - * LLVMpipe support. + * Softpipe/LLVMpipe support. * * @author Jose Fonseca <jfonseca@vmware.com> */ @@ -36,24 +36,56 @@ #include <windows.h> +#include "util/u_debug.h" #include "stw_winsys.h" #include "gdi/gdi_sw_winsys.h" + +#include "softpipe/sp_texture.h" +#include "softpipe/sp_screen.h" +#include "softpipe/sp_public.h" + +#ifdef HAVE_LLVMPIPE #include "llvmpipe/lp_texture.h" #include "llvmpipe/lp_screen.h" #include "llvmpipe/lp_public.h" +#endif + + +static boolean use_llvmpipe = FALSE; static struct pipe_screen * -gdi_llvmpipe_screen_create(void) +gdi_screen_create(void) { - static struct sw_winsys *winsys; - struct pipe_screen *screen; + const char *default_driver; + const char *driver; + struct pipe_screen *screen = NULL; + struct sw_winsys *winsys; winsys = gdi_create_sw_winsys(); if(!winsys) goto no_winsys; - screen = llvmpipe_create_screen(winsys); +#ifdef HAVE_LLVMPIPE + default_driver = "llvmpipe"; +#else + default_driver = "softpipe"; +#endif + + driver = debug_get_option("GALLIUM_DRIVER", default_driver); + +#ifdef HAVE_LLVMPIPE + if (strcmp(driver, "llvmpipe") == 0) { + screen = llvmpipe_create_screen( winsys ); + } +#endif + + if (screen == NULL) { + screen = softpipe_create_screen( winsys ); + } else { + use_llvmpipe = TRUE; + } + if(!screen) goto no_screen; @@ -66,15 +98,13 @@ no_winsys: } - - static void -gdi_llvmpipe_present(struct pipe_screen *screen, - struct pipe_surface *surface, - HDC hDC) +gdi_present(struct pipe_screen *screen, + struct pipe_surface *surface, + HDC hDC) { /* This will fail if any interposing layer (trace, debug, etc) has - * been introduced between the state-trackers and llvmpipe. + * been introduced between the state-trackers and the pipe driver. * * Ideally this would get replaced with a call to * pipe_screen::flush_frontbuffer(). @@ -82,15 +112,28 @@ gdi_llvmpipe_present(struct pipe_screen *screen, * Failing that, it may be necessary for intervening layers to wrap * other structs such as this stw_winsys as well... */ - gdi_sw_display(llvmpipe_screen(screen)->winsys, - llvmpipe_resource(surface->texture)->dt, - hDC); + + struct sw_winsys *winsys = NULL; + struct sw_displaytarget *dt = NULL; + +#ifdef HAVE_LLVMPIPE + if (use_llvmpipe) { + winsys = llvmpipe_screen(screen)->winsys; + dt = llvmpipe_resource(surface->texture)->dt; + gdi_sw_display(winsys, dt, hDC); + return; + } +#endif + + winsys = softpipe_screen(screen)->winsys, + dt = softpipe_resource(surface->texture)->dt, + gdi_sw_display(winsys, dt, hDC); } static const struct stw_winsys stw_winsys = { - &gdi_llvmpipe_screen_create, - &gdi_llvmpipe_present, + &gdi_screen_create, + &gdi_present, NULL, /* get_adapter_luid */ NULL, /* shared_surface_open */ NULL, /* shared_surface_close */ diff --git a/src/gallium/targets/libgl-xlib/Makefile b/src/gallium/targets/libgl-xlib/Makefile index 076a040a5a..fb537c3155 100644 --- a/src/gallium/targets/libgl-xlib/Makefile +++ b/src/gallium/targets/libgl-xlib/Makefile @@ -26,6 +26,8 @@ INCLUDE_DIRS = \ DEFINES += \ -DGALLIUM_SOFTPIPE \ + -DGALLIUM_RBUG \ + -DGALLIUM_TRACE \ -DGALLIUM_GALAHAD #-DGALLIUM_CELL will be defined by the config */ @@ -44,7 +46,7 @@ LIBS = \ $(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a \ $(TOP)/src/gallium/drivers/trace/libtrace.a \ $(TOP)/src/gallium/drivers/rbug/librbug.a \ - $(TOP)/src/gallium/drivers/identity/libidentity.a \ + $(TOP)/src/gallium/drivers/galahad/libgalahad.a \ $(TOP)/src/mapi/glapi/libglapi.a \ $(TOP)/src/mesa/libmesagallium.a \ $(GALLIUM_AUXILIARIES) \ diff --git a/src/gallium/targets/libgl-xlib/SConscript b/src/gallium/targets/libgl-xlib/SConscript index 27b562e1d5..d932736be7 100644 --- a/src/gallium/targets/libgl-xlib/SConscript +++ b/src/gallium/targets/libgl-xlib/SConscript @@ -3,17 +3,6 @@ Import('*') -if env['platform'] != 'linux': - Return() - -if 'mesa' not in env['statetrackers']: - print 'warning: Mesa state tracker disabled: skipping build of xlib libGL.so' - Return() - -if env['dri']: - print 'warning: DRI enabled: skipping build of xlib libGL.so' - Return() - env = env.Clone() env.Append(CPPPATH = [ @@ -25,12 +14,11 @@ env.Append(CPPPATH = [ env.Append(CPPDEFINES = ['USE_XSHM']) +env.Prepend(LIBS = env['X11_LIBS']) + env.Prepend(LIBS = [ st_xlib, ws_xlib, - trace, - rbug, - identity, glapi, mesa, glsl, @@ -42,22 +30,16 @@ sources = [ 'xlib.c', ] -env.Tool('x11') - if True: - env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE') - env.Prepend(LIBS = [softpipe]) - -if True: - env.Append(CPPDEFINES = 'GALLIUM_GALAHAD') - env.Prepend(LIBS = [galahad]) + env.Append(CPPDEFINES = ['GALLIUM_TRACE', 'GALLIUM_RBUG', 'GALLIUM_GALAHAD', 'GALLIUM_SOFTPIPE']) + env.Prepend(LIBS = [trace, rbug, galahad, softpipe]) if env['llvm']: - env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE') - env.Tool('udis86') + env.Append(CPPDEFINES = ['GALLIUM_LLVMPIPE']) env.Prepend(LIBS = [llvmpipe]) -if 'cell' in env['drivers']: +if False: + # TODO: Detect Cell SDK env.Append(CPPDEFINES = 'GALLIUM_CELL') env.Prepend(LIBS = [cell]) @@ -67,6 +49,8 @@ libgl = env.SharedLibrary( source = sources, ) -if not env['dri']: - # Only install this libGL.so if DRI not enabled - env.InstallSharedLibrary(libgl, version=(1, 5)) +if True: + # XXX: Only install this libGL.so if DRI not enabled + libgl = env.InstallSharedLibrary(libgl, version=(1, 5)) + +env.Alias('libgl-xlib', libgl) diff --git a/src/gallium/targets/libgl-xlib/xlib.c b/src/gallium/targets/libgl-xlib/xlib.c index 2f8cd2d404..9a3e0e07b0 100644 --- a/src/gallium/targets/libgl-xlib/xlib.c +++ b/src/gallium/targets/libgl-xlib/xlib.c @@ -32,92 +32,15 @@ */ #include "pipe/p_compiler.h" #include "util/u_debug.h" -#include "target-helpers/wrap_screen.h" #include "state_tracker/xlib_sw_winsys.h" #include "xm_public.h" #include "state_tracker/st_api.h" #include "state_tracker/st_gl_api.h" +#include "target-helpers/inline_sw_helper.h" +#include "target-helpers/inline_debug_helper.h" -/* Helper function to choose and instantiate one of the software rasterizers: - * cell, llvmpipe, softpipe. - * - * This function could be shared, but currently causes headaches for - * the build systems, particularly scons if we try. Long term, want - * to avoid having global #defines for things like GALLIUM_LLVMPIPE, - * GALLIUM_CELL, etc. Scons already eliminates those #defines, so - * things that are painful for it now are likely to be painful for - * other build systems in the future. - * - * Copies (full or partial): - * targets/libgl-xlib - * targets/graw-xlib - * targets/dri-swrast - * winsys/sw/drm - * drivers/sw - * - */ - -#ifdef GALLIUM_SOFTPIPE -#include "softpipe/sp_public.h" -#endif - -#ifdef GALLIUM_LLVMPIPE -#include "llvmpipe/lp_public.h" -#endif - -#ifdef GALLIUM_CELL -#include "cell/ppu/cell_public.h" -#endif - -#ifdef GALLIUM_GALAHAD -#include "galahad/glhd_public.h" -#endif - -static struct pipe_screen * -swrast_create_screen(struct sw_winsys *winsys) -{ - const char *default_driver; - const char *driver; - struct pipe_screen *screen = NULL; - -#if defined(GALLIUM_CELL) - default_driver = "cell"; -#elif defined(GALLIUM_LLVMPIPE) - default_driver = "llvmpipe"; -#elif defined(GALLIUM_SOFTPIPE) - default_driver = "softpipe"; -#else - default_driver = ""; -#endif - driver = debug_get_option("GALLIUM_DRIVER", default_driver); - -#if defined(GALLIUM_CELL) - if (screen == NULL && strcmp(driver, "cell") == 0) - screen = cell_create_screen( winsys ); -#endif - -#if defined(GALLIUM_LLVMPIPE) - if (screen == NULL && strcmp(driver, "llvmpipe") == 0) - screen = llvmpipe_create_screen( winsys ); -#endif - -#if defined(GALLIUM_SOFTPIPE) - if (screen == NULL) - screen = softpipe_create_screen( winsys ); -#endif - -#if defined(GALLIUM_GALAHAD) - if (screen) { - struct pipe_screen *galahad_screen = galahad_screen_create(screen); - if (galahad_screen) - screen = galahad_screen; - } -#endif - - return screen; -} /* Helper function to build a subset of a driver stack consisting of * one of the software rasterizers (cell, llvmpipe, softpipe) and the @@ -138,13 +61,13 @@ swrast_xlib_create_screen( Display *display ) /* Create a software rasterizer on top of that winsys: */ - screen = swrast_create_screen( winsys ); + screen = sw_screen_create( winsys ); if (screen == NULL) goto fail; /* Inject any wrapping layers we want to here: */ - return gallium_wrap_screen( screen ); + return debug_screen_wrap( screen ); fail: if (winsys) @@ -195,7 +118,6 @@ extern void (*linker_foo(const unsigned char *procName))() #include "GL/gl.h" #include "glapi/glapi.h" #include "glapi/glapitable.h" -#include "glapi/glapidispatch.h" #if defined(USE_MGL_NAMESPACE) #define NAME(func) mgl##func @@ -204,10 +126,10 @@ extern void (*linker_foo(const unsigned char *procName))() #endif #define DISPATCH(FUNC, ARGS, MESSAGE) \ - CALL_ ## FUNC(GET_DISPATCH(), ARGS); + GET_DISPATCH()->FUNC ARGS #define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \ - return CALL_ ## FUNC(GET_DISPATCH(), ARGS); + return GET_DISPATCH()->FUNC ARGS /* skip normal ones */ #define _GLAPI_SKIP_NORMAL_ENTRY_POINTS diff --git a/src/gallium/targets/xorg-vmwgfx/SConscript b/src/gallium/targets/xorg-vmwgfx/SConscript index 43b2c74f9c..099d49cf1b 100644 --- a/src/gallium/targets/xorg-vmwgfx/SConscript +++ b/src/gallium/targets/xorg-vmwgfx/SConscript @@ -2,62 +2,62 @@ import os.path Import('*') -if not 'svga' in env['drivers']: - print 'warning: svga pipe driver not built skipping vmwgfx_drv.so' - Return() +env = env.Clone() -if env['platform'] == 'linux': +env.ParseConfig('pkg-config --cflags --libs libdrm xorg-server') - env = env.Clone() +if env['kms']: + env.ParseConfig('pkg-config --cflags --libs libkms') - env.ParseConfig('pkg-config --cflags --libs libdrm xorg-server') +env.Prepend(CPPPATH = [ + '#/include', + '#/src/gallium', + '#/src/mesa', + '#/src/gallium/drivers/svga', + '#/src/gallium/drivers/svga/include', +]) - env.Prepend(CPPPATH = [ - '#/include', - '#/src/gallium', - '#/src/mesa', - '#/src/gallium/drivers/svga', - '#/src/gallium/drivers/svga/include', - ]) +env.Append(CPPDEFINES = [ +]) - env.Append(CPPDEFINES = [ - ]) +if env['gcc']: + env.Append(CPPDEFINES = [ + 'HAVE_STDINT_H', + 'HAVE_SYS_TYPES_H', + ]) - if env['gcc']: - env.Append(CPPDEFINES = [ - 'HAVE_STDINT_H', - 'HAVE_SYS_TYPES_H', - ]) +env.Append(CFLAGS = [ + '-std=gnu99', + '-D_FILE_OFFSET_BITS=64', +]) - env.Append(CFLAGS = [ - '-std=gnu99', - '-D_FILE_OFFSET_BITS=64', - ]) +env.Prepend(LIBPATH = [ +]) - env.Prepend(LIBPATH = [ - ]) +env.Prepend(LIBS = [ + trace, + rbug, + st_xorg, + svgadrm, + svga, + gallium, +]) - env.Prepend(LIBS = [ - trace, - rbug, - st_xorg, - svgadrm, - svga, - gallium, - ]) +sources = [ + 'vmw_ioctl.c', + 'vmw_ctrl.c', + 'vmw_screen.c', + 'vmw_target.c', + 'vmw_video.c', + 'vmw_xorg.c', +] - sources = [ - 'vmw_ioctl.c', - 'vmw_ctrl.c', - 'vmw_screen.c', - 'vmw_video.c', - 'vmw_xorg.c', - ] +# TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions +module = env.LoadableModule( + target ='vmwgfx_drv.so', + source = sources, + LIBS = env['LIBS'], + SHLIBPREFIX = '', +) - # TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions - env.LoadableModule( - target ='vmwgfx_drv.so', - source = sources, - LIBS = env['LIBS'], - SHLIBPREFIX = '', - ) +env.Alias('xorg-vmwgfx', module) diff --git a/src/gallium/tests/graw/SConscript b/src/gallium/tests/graw/SConscript index ffde61965b..3341b88498 100644 --- a/src/gallium/tests/graw/SConscript +++ b/src/gallium/tests/graw/SConscript @@ -1,20 +1,17 @@ Import('*') -try: - graw -except NameError: - print 'warning: graw library not avaiable: skipping build of graw test' - Return() - env = env.Clone() +env.Prepend(LIBS = [gallium]) + env.Prepend(LIBPATH = [graw.dir]) -env.Prepend(LIBS = ['graw'] + gallium) +env.Prepend(LIBS = ['graw']) + -if platform in ('freebsd8', 'sunos5'): +if env['platform'] in ('freebsd8', 'sunos5'): env.Append(LIBS = ['m']) -if platform == 'freebsd8': +if env['platform'] == 'freebsd8': env.Append(LIBS = ['pthread']) progs = [ @@ -29,9 +26,10 @@ progs = [ 'tri-gs', ] -for prog in progs: - env.Program( - target = prog, - source = prog + '.c', +for name in progs: + program = env.Program( + target = name, + source = name + '.c', ) - + #env.Depends(program, graw) + env.Alias('graw-progs', program) diff --git a/src/gallium/tests/graw/clear.c b/src/gallium/tests/graw/clear.c index ce52a93aa1..ee4581ef1e 100644 --- a/src/gallium/tests/graw/clear.c +++ b/src/gallium/tests/graw/clear.c @@ -8,8 +8,6 @@ #include "pipe/p_state.h" #include "pipe/p_defines.h" -#include "util/u_debug.h" /* debug_dump_surface_bmp() */ - enum pipe_format formats[] = { PIPE_FORMAT_R8G8B8A8_UNORM, PIPE_FORMAT_B8G8R8A8_UNORM, @@ -31,17 +29,7 @@ static void draw( void ) ctx->clear(ctx, PIPE_CLEAR_COLOR, clear_color, 0, 0); ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL); -#if 0 - /* At the moment, libgraw leaks out/makes available some of the - * symbols from gallium/auxiliary, including these debug helpers. - * Will eventually want to bless some of these paths, and lock the - * others down so they aren't accessible from test programs. - * - * This currently just happens to work on debug builds - a release - * build will probably fail to link here: - */ - debug_dump_surface_bmp(ctx, "result.bmp", surf); -#endif + graw_save_surface_to_file(ctx, surf, NULL); screen->flush_frontbuffer(screen, surf, window); } @@ -103,10 +91,21 @@ static void init( void ) ctx->set_framebuffer_state(ctx, &fb); } +static void args(int argc, char *argv[]) +{ + int i; + for (i = 1; i < argc;) { + if (graw_parse_args(&i, argc, argv)) { + continue; + } + exit(1); + } +} int main( int argc, char *argv[] ) { + args(argc, argv); init(); graw_set_display_func( draw ); diff --git a/src/gallium/tests/graw/fs-test.c b/src/gallium/tests/graw/fs-test.c index 53fbb744d8..19af83fda8 100644 --- a/src/gallium/tests/graw/fs-test.c +++ b/src/gallium/tests/graw/fs-test.c @@ -10,7 +10,6 @@ #include "pipe/p_defines.h" #include <stdio.h> /* for fread(), etc */ -#include "util/u_debug.h" /* debug_dump_surface_bmp() */ #include "util/u_inlines.h" #include "util/u_memory.h" /* Offset() */ #include "util/u_draw_quad.h" @@ -279,17 +278,7 @@ static void draw( void ) util_draw_arrays(ctx, PIPE_PRIM_TRIANGLES, 0, 3); ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL); -#if 0 - /* At the moment, libgraw leaks out/makes available some of the - * symbols from gallium/auxiliary, including these debug helpers. - * Will eventually want to bless some of these paths, and lock the - * others down so they aren't accessible from test programs. - * - * This currently just happens to work on debug builds - a release - * build will probably fail to link here: - */ - debug_dump_surface_bmp(ctx, "result.bmp", surf); -#endif + graw_save_surface_to_file(ctx, surf, NULL); screen->flush_frontbuffer(screen, surf, window); } @@ -526,16 +515,21 @@ static void args(int argc, char *argv[]) { int i; - for (i = 1; i < argc; i++) { + for (i = 1; i < argc;) { + if (graw_parse_args(&i, argc, argv)) { + continue; + } if (strcmp(argv[i], "-fps") == 0) { show_fps = 1; + i++; } else if (i == argc - 1) { - filename = argv[i]; + filename = argv[i]; + i++; } else { - usage(argv[0]); - exit(1); + usage(argv[0]); + exit(1); } } diff --git a/src/gallium/tests/graw/gs-test.c b/src/gallium/tests/graw/gs-test.c index 62714900bd..ef29f13498 100644 --- a/src/gallium/tests/graw/gs-test.c +++ b/src/gallium/tests/graw/gs-test.c @@ -10,7 +10,6 @@ #include "pipe/p_defines.h" #include <stdio.h> /* for fread(), etc */ -#include "util/u_debug.h" /* debug_dump_surface_bmp() */ #include "util/u_inlines.h" #include "util/u_memory.h" /* Offset() */ #include "util/u_draw_quad.h" @@ -343,17 +342,7 @@ static void draw( void ) ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL); -#if 0 - /* At the moment, libgraw leaks out/makes available some of the - * symbols from gallium/auxiliary, including these debug helpers. - * Will eventually want to bless some of these paths, and lock the - * others down so they aren't accessible from test programs. - * - * This currently just happens to work on debug builds - a release - * build will probably fail to link here: - */ - debug_dump_surface_bmp(ctx, "result.bmp", surf); -#endif + graw_save_surface_to_file(ctx, surf, NULL); screen->flush_frontbuffer(screen, surf, window); } @@ -591,19 +580,25 @@ static void args(int argc, char *argv[]) { int i; - for (i = 1; i < argc; i++) { + for (i = 1; i < argc;) { + if (graw_parse_args(&i, argc, argv)) { + continue; + } if (strcmp(argv[i], "-fps") == 0) { show_fps = 1; + i++; } else if (strcmp(argv[i], "-strip") == 0) { draw_strip = 1; + i++; } else if (i == argc - 1) { - filename = argv[i]; + filename = argv[i]; + i++; } else { - usage(argv[0]); - exit(1); + usage(argv[0]); + exit(1); } } diff --git a/src/gallium/tests/graw/quad-tex.c b/src/gallium/tests/graw/quad-tex.c index c50ef12ab5..35eade939e 100644 --- a/src/gallium/tests/graw/quad-tex.c +++ b/src/gallium/tests/graw/quad-tex.c @@ -9,7 +9,6 @@ #include "pipe/p_state.h" #include "pipe/p_defines.h" -#include "util/u_debug.h" /* debug_dump_surface_bmp() */ #include "util/u_inlines.h" #include "util/u_memory.h" /* Offset() */ #include "util/u_draw_quad.h" @@ -150,17 +149,7 @@ static void draw( void ) util_draw_arrays(ctx, PIPE_PRIM_QUADS, 0, 4); ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL); -#if 0 - /* At the moment, libgraw leaks out/makes available some of the - * symbols from gallium/auxiliary, including these debug helpers. - * Will eventually want to bless some of these paths, and lock the - * others down so they aren't accessible from test programs. - * - * This currently just happens to work on debug builds - a release - * build will probably fail to link here: - */ - debug_dump_surface_bmp(ctx, "result.bmp", surf); -#endif + graw_save_surface_to_file(ctx, surf, NULL); screen->flush_frontbuffer(screen, surf, window); } @@ -392,9 +381,21 @@ static void init( void ) set_fragment_shader(); } +static void args(int argc, char *argv[]) +{ + int i; + + for (i = 1; i < argc;) { + if (graw_parse_args(&i, argc, argv)) { + continue; + } + exit(1); + } +} int main( int argc, char *argv[] ) { + args(argc, argv); init(); graw_set_display_func( draw ); diff --git a/src/gallium/tests/graw/shader-leak.c b/src/gallium/tests/graw/shader-leak.c index ec30871e82..0a6c362d17 100644 --- a/src/gallium/tests/graw/shader-leak.c +++ b/src/gallium/tests/graw/shader-leak.c @@ -9,7 +9,6 @@ #include "pipe/p_state.h" #include "pipe/p_defines.h" -#include "util/u_debug.h" /* debug_dump_surface_bmp() */ #include "util/u_memory.h" /* Offset() */ #include "util/u_draw_quad.h" diff --git a/src/gallium/tests/graw/tri-gs.c b/src/gallium/tests/graw/tri-gs.c index 152ae408eb..731c4e10cf 100644 --- a/src/gallium/tests/graw/tri-gs.c +++ b/src/gallium/tests/graw/tri-gs.c @@ -8,7 +8,6 @@ #include "pipe/p_state.h" #include "pipe/p_defines.h" -#include "util/u_debug.h" /* debug_dump_surface_bmp() */ #include "util/u_memory.h" /* Offset() */ #include "util/u_draw_quad.h" diff --git a/src/gallium/tests/graw/tri-instanced.c b/src/gallium/tests/graw/tri-instanced.c index 8859f745fd..7644381162 100644 --- a/src/gallium/tests/graw/tri-instanced.c +++ b/src/gallium/tests/graw/tri-instanced.c @@ -11,7 +11,6 @@ #include "pipe/p_state.h" #include "pipe/p_defines.h" -#include "util/u_debug.h" /* debug_dump_surface_bmp() */ #include "util/u_memory.h" /* Offset() */ #include "util/u_draw_quad.h" @@ -215,17 +214,7 @@ static void draw( void ) ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL); -#if 0 - /* At the moment, libgraw leaks out/makes available some of the - * symbols from gallium/auxiliary, including these debug helpers. - * Will eventually want to bless some of these paths, and lock the - * others down so they aren't accessible from test programs. - * - * This currently just happens to work on debug builds - a release - * build will probably fail to link here: - */ - debug_dump_surface_bmp(ctx, "result.bmp", surf); -#endif + graw_save_surface_to_file(ctx, surf, NULL); screen->flush_frontbuffer(screen, surf, window); } @@ -322,9 +311,18 @@ static void init( void ) static void options(int argc, char *argv[]) { int i; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-e") == 0) + + for (i = 1; i < argc;) { + if (graw_parse_args(&i, argc, argv)) { + continue; + } + if (strcmp(argv[i], "-e") == 0) { draw_elements = 1; + i++; + } + else { + i++; + } } if (draw_elements) printf("Using pipe_context::draw_elements_instanced()\n"); diff --git a/src/gallium/tests/graw/tri.c b/src/gallium/tests/graw/tri.c index f7e39588a4..025a1470dc 100644 --- a/src/gallium/tests/graw/tri.c +++ b/src/gallium/tests/graw/tri.c @@ -10,7 +10,6 @@ #include "pipe/p_state.h" #include "pipe/p_defines.h" -#include "util/u_debug.h" /* debug_dump_surface_bmp() */ #include "util/u_memory.h" /* Offset() */ #include "util/u_draw_quad.h" @@ -143,17 +142,7 @@ static void draw( void ) util_draw_arrays(ctx, PIPE_PRIM_TRIANGLES, 0, 3); ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL); -#if 0 - /* At the moment, libgraw leaks out/makes available some of the - * symbols from gallium/auxiliary, including these debug helpers. - * Will eventually want to bless some of these paths, and lock the - * others down so they aren't accessible from test programs. - * - * This currently just happens to work on debug builds - a release - * build will probably fail to link here: - */ - debug_dump_surface_bmp(ctx, "result.bmp", surf); -#endif + graw_save_surface_to_file(ctx, surf, NULL); screen->flush_frontbuffer(screen, surf, window); } @@ -252,9 +241,21 @@ static void init( void ) set_fragment_shader(); } +static void args(int argc, char *argv[]) +{ + int i; + + for (i = 1; i < argc;) { + if (graw_parse_args(&i, argc, argv)) { + continue; + } + exit(1); + } +} int main( int argc, char *argv[] ) { + args(argc, argv); init(); graw_set_display_func( draw ); diff --git a/src/gallium/tests/graw/vs-test.c b/src/gallium/tests/graw/vs-test.c index e1cd814bf7..440c40bdcd 100644 --- a/src/gallium/tests/graw/vs-test.c +++ b/src/gallium/tests/graw/vs-test.c @@ -11,7 +11,6 @@ #include <stdio.h> /* for fread(), etc */ -#include "util/u_debug.h" /* debug_dump_surface_bmp() */ #include "util/u_inlines.h" #include "util/u_memory.h" /* Offset() */ #include "util/u_draw_quad.h" @@ -230,17 +229,7 @@ static void draw( void ) util_draw_arrays(ctx, PIPE_PRIM_POINTS, 0, Elements(vertices)); ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL); -#if 0 - /* At the moment, libgraw leaks out/makes available some of the - * symbols from gallium/auxiliary, including these debug helpers. - * Will eventually want to bless some of these paths, and lock the - * others down so they aren't accessible from test programs. - * - * This currently just happens to work on debug builds - a release - * build will probably fail to link here: - */ - debug_dump_surface_bmp(ctx, "result.bmp", surf); -#endif + graw_save_surface_to_file(ctx, surf, NULL); screen->flush_frontbuffer(screen, surf, window); } @@ -478,16 +467,21 @@ static void args(int argc, char *argv[]) { int i; - for (i = 1; i < argc; i++) { + for (i = 1; i < argc;) { + if (graw_parse_args(&i, argc, argv)) { + continue; + } if (strcmp(argv[i], "-fps") == 0) { show_fps = 1; + i++; } else if (i == argc - 1) { - filename = argv[i]; + filename = argv[i]; + i++; } else { - usage(argv[0]); - exit(1); + usage(argv[0]); + exit(1); } } diff --git a/src/gallium/tests/unit/SConscript b/src/gallium/tests/unit/SConscript index 359759e22b..655e8a9b41 100644 --- a/src/gallium/tests/unit/SConscript +++ b/src/gallium/tests/unit/SConscript @@ -4,10 +4,10 @@ env = env.Clone() env.Prepend(LIBS = [gallium]) -if platform in ('freebsd8', 'sunos5'): +if env['platform'] in ('freebsd8', 'sunos5'): env.Append(LIBS = ['m']) -if platform == 'freebsd8': +if env['platform'] == 'freebsd8': env.Append(LIBS = ['pthread']) progs = [ diff --git a/src/gallium/winsys/SConscript b/src/gallium/winsys/SConscript index 65b12287df..d74f8a2e98 100644 --- a/src/gallium/winsys/SConscript +++ b/src/gallium/winsys/SConscript @@ -2,45 +2,38 @@ Import('*') SConscript([ - 'sw/wrapper/SConscript', + 'sw/wrapper/SConscript', ]) -if 'xlib' in env['winsys']: - SConscript([ - 'sw/xlib/SConscript', - ]) +SConscript([ + 'sw/xlib/SConscript', +]) -if 'gdi' in env['winsys']: - SConscript([ - 'sw/gdi/SConscript', - ]) +SConscript([ + 'sw/gdi/SConscript', +]) if env['dri']: - SConscript([ - 'sw/dri/SConscript', - ]) + SConscript([ + 'sw/dri/SConscript', + ]) - if 'vmware' in env['winsys']: - SConscript([ - 'svga/drm/SConscript', - ]) + SConscript([ + 'svga/drm/SConscript', + ]) - if 'i915' in env['winsys']: - SConscript([ - 'i915/drm/SConscript', - ]) + SConscript([ + 'i915/drm/SConscript', + ]) - if 'i965' in env['winsys']: - SConscript([ - 'i965/drm/SConscript', - ]) + SConscript([ + 'i965/drm/SConscript', + ]) - if 'radeon' in env['winsys']: - SConscript([ - 'radeon/drm/SConscript', - ]) + SConscript([ + 'radeon/drm/SConscript', + ]) - if 'r600' in env['winsys']: - SConscript([ - 'r600/drm/SConscript', - ]) + SConscript([ + 'r600/drm/SConscript', + ]) diff --git a/src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c b/src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c index e50e7801c0..c6daa52a37 100644 --- a/src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c +++ b/src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c @@ -41,7 +41,7 @@ i915_drm_batchbuffer_reset(struct i915_drm_batchbuffer *batch) if (batch->bo) drm_intel_bo_unreference(batch->bo); - batch->bo = drm_intel_bo_alloc(idws->pools.gem, + batch->bo = drm_intel_bo_alloc(idws->gem_manager, "gallium3d_batchbuffer", batch->actual_size, 4096); diff --git a/src/gallium/winsys/i915/drm/i915_drm_buffer.c b/src/gallium/winsys/i915/drm/i915_drm_buffer.c index 6b06e7ae99..15ec448745 100644 --- a/src/gallium/winsys/i915/drm/i915_drm_buffer.c +++ b/src/gallium/winsys/i915/drm/i915_drm_buffer.c @@ -12,7 +12,6 @@ i915_drm_buffer_create(struct i915_winsys *iws, { struct i915_drm_buffer *buf = CALLOC_STRUCT(i915_drm_buffer); struct i915_drm_winsys *idws = i915_drm_winsys(iws); - drm_intel_bufmgr *pool; char *name; if (!buf) @@ -21,26 +20,19 @@ i915_drm_buffer_create(struct i915_winsys *iws, buf->magic = 0xDEAD1337; buf->flinked = FALSE; buf->flink = 0; - buf->map_gtt = FALSE; if (type == I915_NEW_TEXTURE) { name = "gallium3d_texture"; - pool = idws->pools.gem; } else if (type == I915_NEW_VERTEX) { name = "gallium3d_vertex"; - pool = idws->pools.gem; - buf->map_gtt = TRUE; } else if (type == I915_NEW_SCANOUT) { name = "gallium3d_scanout"; - pool = idws->pools.gem; - buf->map_gtt = TRUE; } else { assert(0); name = "gallium3d_unknown"; - pool = idws->pools.gem; } - buf->bo = drm_intel_bo_alloc(pool, name, size, alignment); + buf->bo = drm_intel_bo_alloc(idws->gem_manager, name, size, alignment); if (!buf->bo) goto err; @@ -66,7 +58,7 @@ i915_drm_buffer_from_handle(struct i915_winsys *iws, return NULL; buf->magic = 0xDEAD1337; - buf->bo = drm_intel_bo_gem_create_from_name(idws->pools.gem, "gallium3d_from_handle", whandle->handle); + buf->bo = drm_intel_bo_gem_create_from_name(idws->gem_manager, "gallium3d_from_handle", whandle->handle); buf->flinked = TRUE; buf->flink = whandle->handle; @@ -74,8 +66,6 @@ i915_drm_buffer_from_handle(struct i915_winsys *iws, goto err; drm_intel_bo_get_tiling(buf->bo, &tile, &swizzle); - if (tile != I915_TILE_NONE) - buf->map_gtt = TRUE; *stride = whandle->stride; @@ -126,7 +116,6 @@ i915_drm_buffer_set_fence_reg(struct i915_winsys *iws, if (tile != I915_TILE_NONE) { assert(buf->map_count == 0); - buf->map_gtt = TRUE; } return drm_intel_bo_set_tiling(buf->bo, &tile, stride); @@ -146,10 +135,7 @@ i915_drm_buffer_map(struct i915_winsys *iws, if (buf->map_count) goto out; - if (buf->map_gtt) - ret = drm_intel_gem_bo_map_gtt(bo); - else - ret = drm_intel_bo_map(bo, write); + ret = drm_intel_gem_bo_map_gtt(bo); buf->ptr = bo->virtual; @@ -171,10 +157,7 @@ i915_drm_buffer_unmap(struct i915_winsys *iws, if (--buf->map_count) return; - if (buf->map_gtt) - drm_intel_gem_bo_unmap_gtt(intel_bo(buffer)); - else - drm_intel_bo_unmap(intel_bo(buffer)); + drm_intel_gem_bo_unmap_gtt(intel_bo(buffer)); } static int diff --git a/src/gallium/winsys/i915/drm/i915_drm_winsys.c b/src/gallium/winsys/i915/drm/i915_drm_winsys.c index 179a84a704..cc0b6a9957 100644 --- a/src/gallium/winsys/i915/drm/i915_drm_winsys.c +++ b/src/gallium/winsys/i915/drm/i915_drm_winsys.c @@ -40,7 +40,7 @@ i915_drm_winsys_destroy(struct i915_winsys *iws) { struct i915_drm_winsys *idws = i915_drm_winsys(iws); - drm_intel_bufmgr_destroy(idws->pools.gem); + drm_intel_bufmgr_destroy(idws->gem_manager); FREE(idws); } @@ -67,8 +67,8 @@ i915_drm_winsys_create(int drmFD) idws->base.destroy = i915_drm_winsys_destroy; - idws->pools.gem = drm_intel_bufmgr_gem_init(idws->fd, idws->max_batch_size); - drm_intel_bufmgr_gem_enable_reuse(idws->pools.gem); + idws->gem_manager = drm_intel_bufmgr_gem_init(idws->fd, idws->max_batch_size); + drm_intel_bufmgr_gem_enable_reuse(idws->gem_manager); idws->dump_cmd = debug_get_bool_option("I915_DUMP_CMD", FALSE); idws->send_cmd = !debug_get_bool_option("I915_NO_HW", FALSE); diff --git a/src/gallium/winsys/i915/drm/i915_drm_winsys.h b/src/gallium/winsys/i915/drm/i915_drm_winsys.h index 88a71f2424..0d74d0270c 100644 --- a/src/gallium/winsys/i915/drm/i915_drm_winsys.h +++ b/src/gallium/winsys/i915/drm/i915_drm_winsys.h @@ -24,9 +24,7 @@ struct i915_drm_winsys size_t max_batch_size; - struct { - drm_intel_bufmgr *gem; - } pools; + drm_intel_bufmgr *gem_manager; }; static INLINE struct i915_drm_winsys * @@ -54,7 +52,6 @@ struct i915_drm_buffer { void *ptr; unsigned map_count; - boolean map_gtt; boolean flinked; unsigned flink; diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c index 7f21b53ace..b93cc65027 100644 --- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c +++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c @@ -577,6 +577,12 @@ int evergreen_context_init(struct r600_context *ctx, struct radeon *radeon) if (r) goto out_err; } + /* FS RESOURCE */ + for (int j = 0, offset = 0x7C00; j < 16; j++, offset += 0x20) { + r = evergreen_state_resource_init(ctx, offset); + if (r) + goto out_err; + } /* PS loop const */ evergreen_loop_const_init(ctx, 0); @@ -686,6 +692,13 @@ void evergreen_context_pipe_state_set_vs_resource(struct r600_context *ctx, stru evergreen_context_pipe_state_set_resource(ctx, state, offset); } +void evergreen_context_pipe_state_set_fs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid) +{ + unsigned offset = R_030000_SQ_TEX_RESOURCE_WORD0_0 + 0x7C00 + 0x20 * rid; + + evergreen_context_pipe_state_set_resource(ctx, state, offset); +} + static inline void evergreen_context_pipe_state_set_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset) { struct r600_range *range; @@ -917,3 +930,10 @@ void evergreen_vs_resource_set(struct r600_context *ctx, struct r600_pipe_state evergreen_resource_set(ctx, state, offset); } + +void evergreen_fs_resource_set(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid) +{ + unsigned offset = R_030000_RESOURCE0_WORD0 + 0x7C00 + 0x20 * rid; + + evergreen_resource_set(ctx, state, offset); +} diff --git a/src/gallium/winsys/r600/drm/r600_bo.c b/src/gallium/winsys/r600/drm/r600_bo.c index 7d54ff18fc..251f009a6b 100644 --- a/src/gallium/winsys/r600/drm/r600_bo.c +++ b/src/gallium/winsys/r600/drm/r600_bo.c @@ -26,26 +26,41 @@ #include <pipe/p_compiler.h> #include <pipe/p_screen.h> #include <pipebuffer/pb_bufmgr.h> -#include "radeon_drm.h" +#include "state_tracker/drm_driver.h" #include "r600_priv.h" #include "r600d.h" +#include "drm.h" +#include "radeon_drm.h" struct r600_bo *r600_bo(struct radeon *radeon, - unsigned size, unsigned alignment, unsigned usage) + unsigned size, unsigned alignment, + unsigned binding, unsigned usage) { struct r600_bo *ws_bo = calloc(1, sizeof(struct r600_bo)); struct pb_desc desc; struct pb_manager *man; desc.alignment = alignment; - desc.usage = usage; + desc.usage = (PB_USAGE_CPU_READ_WRITE | PB_USAGE_GPU_READ_WRITE); ws_bo->size = size; - if (usage & (PIPE_BIND_CONSTANT_BUFFER | PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_INDEX_BUFFER)) + if (binding & (PIPE_BIND_CONSTANT_BUFFER | PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_INDEX_BUFFER)) man = radeon->cman; else man = radeon->kman; + /* Staging resources particpate in transfers and blits only + * and are used for uploads and downloads from regular + * resources. We generate them internally for some transfers. + */ + if (usage == PIPE_USAGE_STAGING) + ws_bo->domains = RADEON_GEM_DOMAIN_CPU | RADEON_GEM_DOMAIN_GTT; + else + ws_bo->domains = (RADEON_GEM_DOMAIN_CPU | + RADEON_GEM_DOMAIN_GTT | + RADEON_GEM_DOMAIN_VRAM); + + ws_bo->pb = man->create_buffer(man, size, &desc); if (ws_bo->pb == NULL) { free(ws_bo); @@ -69,6 +84,10 @@ struct r600_bo *r600_bo_handle(struct radeon *radeon, } bo = radeon_bo_pb_get_bo(ws_bo->pb); ws_bo->size = bo->size; + ws_bo->domains = (RADEON_GEM_DOMAIN_CPU | + RADEON_GEM_DOMAIN_GTT | + RADEON_GEM_DOMAIN_VRAM); + pipe_reference_init(&ws_bo->reference, 1); radeon_bo_get_tiling_flags(radeon, bo, &ws_bo->tiling_flags, @@ -136,3 +155,28 @@ unsigned r600_bo_get_size(struct r600_bo *pb_bo) return bo->size; } + +boolean r600_bo_get_winsys_handle(struct radeon *radeon, struct r600_bo *pb_bo, + unsigned stride, struct winsys_handle *whandle) +{ + struct radeon_bo *bo; + + bo = radeon_bo_pb_get_bo(pb_bo->pb); + if (!bo) + return FALSE; + + whandle->stride = stride; + switch(whandle->type) { + case DRM_API_HANDLE_TYPE_KMS: + whandle->handle = r600_bo_get_handle(pb_bo); + break; + case DRM_API_HANDLE_TYPE_SHARED: + if (radeon_bo_get_name(radeon, bo, &whandle->handle)) + return FALSE; + break; + default: + return FALSE; + } + + return TRUE; +} diff --git a/src/gallium/winsys/r600/drm/r600_drm.c b/src/gallium/winsys/r600/drm/r600_drm.c index c9de95ffc0..6742993ef3 100644 --- a/src/gallium/winsys/r600/drm/r600_drm.c +++ b/src/gallium/winsys/r600/drm/r600_drm.c @@ -65,7 +65,7 @@ static int radeon_drm_get_tiling(struct radeon *radeon) sizeof(struct drm_radeon_info)); if (r) - return r; + return 0; switch ((tiling_config & 0xe) >> 1) { case 0: @@ -195,12 +195,16 @@ struct radeon *radeon_new(int fd, unsigned device) case CHIP_RS780: case CHIP_RS880: radeon->chip_class = R600; + /* set default group bytes, overridden by tiling info ioctl */ + radeon->tiling_info.group_bytes = 256; break; case CHIP_RV770: case CHIP_RV730: case CHIP_RV710: case CHIP_RV740: radeon->chip_class = R700; + /* set default group bytes, overridden by tiling info ioctl */ + radeon->tiling_info.group_bytes = 256; break; case CHIP_CEDAR: case CHIP_REDWOOD: @@ -208,6 +212,8 @@ struct radeon *radeon_new(int fd, unsigned device) case CHIP_CYPRESS: case CHIP_HEMLOCK: radeon->chip_class = EVERGREEN; + /* set default group bytes, overridden by tiling info ioctl */ + radeon->tiling_info.group_bytes = 512; break; default: fprintf(stderr, "%s unknown or unsupported chipset 0x%04X\n", diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index 2521ff9647..de22891895 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -44,7 +44,7 @@ int r600_context_init_fence(struct r600_context *ctx) { ctx->fence = 1; - ctx->fence_bo = r600_bo(ctx->radeon, 4096, 0, 0); + ctx->fence_bo = r600_bo(ctx->radeon, 4096, 0, 0, 0); if (ctx->fence_bo == NULL) { return -ENOMEM; } @@ -384,6 +384,7 @@ static const struct r600_reg r600_context_reg_list[] = { {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028A0C_PA_SC_LINE_STIPPLE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028A48_PA_SC_MPASS_PS_CNTL, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C00_PA_SC_LINE_CNTL, 0, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C08_PA_SU_VTX_CNTL, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C0C_PA_CL_GB_VERT_CLIP_ADJ, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C10_PA_CL_GB_VERT_DISC_ADJ, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C14_PA_CL_GB_HORZ_CLIP_ADJ, 0, 0, 0}, @@ -592,6 +593,17 @@ static int r600_loop_const_init(struct r600_context *ctx, u32 offset) return r600_context_add_block(ctx, r600_loop_consts, nreg); } +static void r600_context_clear_fenced_bo(struct r600_context *ctx) +{ + struct radeon_bo *bo, *tmp; + + LIST_FOR_EACH_ENTRY_SAFE(bo, tmp, &ctx->fenced_bo, fencedlist) { + LIST_DELINIT(&bo->fencedlist); + bo->fence = 0; + bo->ctx = NULL; + } +} + /* initialize */ void r600_context_fini(struct r600_context *ctx) { @@ -611,8 +623,12 @@ void r600_context_fini(struct r600_context *ctx) } free(ctx->range[i].blocks); } + free(ctx->blocks); free(ctx->reloc); + free(ctx->bo); free(ctx->pm4); + + r600_context_clear_fenced_bo(ctx); if (ctx->fence_bo) { r600_bo_reference(ctx->radeon, &ctx->fence_bo, NULL); } @@ -690,6 +706,12 @@ int r600_context_init(struct r600_context *ctx, struct radeon *radeon) if (r) goto out_err; } + /* FS RESOURCE */ + for (int j = 0, offset = 0x2300; j < 16; j++, offset += 0x1C) { + r = r600_state_resource_init(ctx, offset); + if (r) + goto out_err; + } /* PS loop const */ r600_loop_const_init(ctx, 0); @@ -785,8 +807,8 @@ void r600_context_bo_reloc(struct r600_context *ctx, u32 *pm4, struct r600_bo *r bo->reloc = &ctx->reloc[ctx->creloc]; bo->reloc_id = ctx->creloc * sizeof(struct r600_reloc) / 4; ctx->reloc[ctx->creloc].handle = bo->handle; - ctx->reloc[ctx->creloc].read_domain = RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM; - ctx->reloc[ctx->creloc].write_domain = RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM; + ctx->reloc[ctx->creloc].read_domain = rbo->domains & (RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM); + ctx->reloc[ctx->creloc].write_domain = rbo->domains & (RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM); ctx->reloc[ctx->creloc].flags = 0; radeon_bo_reference(ctx->radeon, &ctx->bo[ctx->creloc], bo); ctx->creloc++; @@ -877,6 +899,13 @@ void r600_context_pipe_state_set_vs_resource(struct r600_context *ctx, struct r6 r600_context_pipe_state_set_resource(ctx, state, offset); } +void r600_context_pipe_state_set_fs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid) +{ + unsigned offset = R_038000_SQ_TEX_RESOURCE_WORD0_0 + 0x2300 + 0x1C * rid; + + r600_context_pipe_state_set_resource(ctx, state, offset); +} + static inline void r600_context_pipe_state_set_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset) { struct r600_range *range; @@ -1046,7 +1075,7 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_draw_initiator; } ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 0); - ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT; + ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT) | EVENT_INDEX(0); /* flush color buffer */ for (int i = 0; i < 8; i++) { @@ -1083,7 +1112,7 @@ void r600_context_flush(struct r600_context *ctx) /* emit fence */ ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE_EOP, 4); - ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT | (5 << 8); + ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT) | EVENT_INDEX(5); ctx->pm4[ctx->pm4_cdwords++] = 0; ctx->pm4[ctx->pm4_cdwords++] = (1 << 29) | (0 << 24); ctx->pm4[ctx->pm4_cdwords++] = ctx->fence; @@ -1106,6 +1135,8 @@ void r600_context_flush(struct r600_context *ctx) chunk_array[1] = (uint64_t)(uintptr_t)&chunks[1]; r = drmCommandWriteRead(ctx->radeon->fd, DRM_RADEON_CS, &drmib, sizeof(struct drm_radeon_cs)); +#else + *ctx->cfence = ctx->fence; #endif r600_context_update_fenced_list(ctx); @@ -1261,7 +1292,7 @@ void r600_query_begin(struct r600_context *ctx, struct r600_query *query) /* emit begin query */ ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 2); - ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE_ZPASS_DONE; + ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_ZPASS_DONE) | EVENT_INDEX(1); ctx->pm4[ctx->pm4_cdwords++] = query->num_results + r600_bo_offset(query->buffer); ctx->pm4[ctx->pm4_cdwords++] = 0; ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NOP, 0); @@ -1277,7 +1308,7 @@ void r600_query_end(struct r600_context *ctx, struct r600_query *query) { /* emit begin query */ ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 2); - ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE_ZPASS_DONE; + ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_ZPASS_DONE) | EVENT_INDEX(1); ctx->pm4[ctx->pm4_cdwords++] = query->num_results + 8 + r600_bo_offset(query->buffer); ctx->pm4[ctx->pm4_cdwords++] = 0; ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NOP, 0); @@ -1304,7 +1335,12 @@ struct r600_query *r600_context_query_create(struct r600_context *ctx, unsigned query->type = query_type; query->buffer_size = 4096; - query->buffer = r600_bo(ctx->radeon, query->buffer_size, 1, 0); + /* As of GL4, query buffers are normally read by the CPU after + * being written by the gpu, hence staging is probably a good + * usage pattern. + */ + query->buffer = r600_bo(ctx->radeon, query->buffer_size, 1, 0, + PIPE_USAGE_STAGING); if (!query->buffer) { free(query); return NULL; diff --git a/src/gallium/winsys/r600/drm/r600_priv.h b/src/gallium/winsys/r600/drm/r600_priv.h index b5bd7bd92c..9fd77b71c7 100644 --- a/src/gallium/winsys/r600/drm/r600_priv.h +++ b/src/gallium/winsys/r600/drm/r600_priv.h @@ -62,7 +62,7 @@ struct radeon_bo { unsigned handle; unsigned size; unsigned alignment; - unsigned map_count; + int map_count; void *data; struct list_head fencedlist; unsigned fence; @@ -79,6 +79,7 @@ struct r600_bo { unsigned size; unsigned tiling_flags; unsigned kernel_pitch; + unsigned domains; }; @@ -90,7 +91,7 @@ struct radeon *radeon_decref(struct radeon *radeon); /* radeon_bo.c */ struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle, - unsigned size, unsigned alignment, void *ptr); + unsigned size, unsigned alignment); void radeon_bo_reference(struct radeon *radeon, struct radeon_bo **dst, struct radeon_bo *src); int radeon_bo_wait(struct radeon *radeon, struct radeon_bo *bo); @@ -101,6 +102,9 @@ int radeon_bo_get_tiling_flags(struct radeon *radeon, struct radeon_bo *bo, uint32_t *tiling_flags, uint32_t *pitch); +int radeon_bo_get_name(struct radeon *radeon, + struct radeon_bo *bo, + uint32_t *name); /* radeon_bo_pb.c */ struct radeon_bo *radeon_bo_pb_get_bo(struct pb_buffer *_buf); diff --git a/src/gallium/winsys/r600/drm/r600d.h b/src/gallium/winsys/r600/drm/r600d.h index d91f7737af..4a08d504aa 100644 --- a/src/gallium/winsys/r600/drm/r600d.h +++ b/src/gallium/winsys/r600/drm/r600d.h @@ -94,6 +94,15 @@ #define EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT 0x14 #define EVENT_TYPE_ZPASS_DONE 0x15 #define EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT 0x16 +#define EVENT_TYPE(x) ((x) << 0) +#define EVENT_INDEX(x) ((x) << 8) + /* 0 - any non-TS event + * 1 - ZPASS_DONE + * 2 - SAMPLE_PIPELINESTAT + * 3 - SAMPLE_STREAMOUTSTAT* + * 4 - *S_PARTIAL_FLUSH + * 5 - TS events + */ #define PKT_TYPE_S(x) (((x) & 0x3) << 30) #define PKT_TYPE_G(x) (((x) >> 30) & 0x3) @@ -795,6 +804,7 @@ #define R_028A48_PA_SC_MPASS_PS_CNTL 0x028A48 #define R_028C00_PA_SC_LINE_CNTL 0x028C00 #define R_028C04_PA_SC_AA_CONFIG 0x028C04 +#define R_028C08_PA_SU_VTX_CNTL 0x028C08 #define R_028C1C_PA_SC_AA_SAMPLE_LOCS_MCTX 0x028C1C #define R_028C48_PA_SC_AA_MASK 0x028C48 #define R_028810_PA_CL_CLIP_CNTL 0x028810 diff --git a/src/gallium/winsys/r600/drm/radeon_bo.c b/src/gallium/winsys/r600/drm/radeon_bo.c index 9d664b7e53..557cfb9597 100644 --- a/src/gallium/winsys/r600/drm/radeon_bo.c +++ b/src/gallium/winsys/r600/drm/radeon_bo.c @@ -69,7 +69,7 @@ static void radeon_bo_fixed_unmap(struct radeon *radeon, struct radeon_bo *bo) } struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle, - unsigned size, unsigned alignment, void *ptr) + unsigned size, unsigned alignment) { struct radeon_bo *bo; int r; @@ -82,6 +82,7 @@ struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle, bo->handle = handle; pipe_reference_init(&bo->reference, 1); bo->alignment = alignment; + LIST_INITHEAD(&bo->fencedlist); if (handle) { struct drm_gem_open open_arg; @@ -120,10 +121,6 @@ struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle, radeon_bo_reference(radeon, &bo, NULL); return bo; } - if (ptr) { - memcpy(bo->data, ptr, size); - } - LIST_INITHEAD(&bo->fencedlist); return bo; } @@ -156,14 +153,15 @@ int radeon_bo_wait(struct radeon *radeon, struct radeon_bo *bo) struct drm_radeon_gem_wait_idle args; int ret; - if (!bo->fence && !bo->shared) - return 0; - - if (bo->fence <= *bo->ctx->cfence) { - LIST_DELINIT(&bo->fencedlist); - bo->fence = 0; - return 0; - } + if (!bo->shared) { + if (!bo->fence) + return 0; + if (bo->fence <= *bo->ctx->cfence) { + LIST_DELINIT(&bo->fencedlist); + bo->fence = 0; + return 0; + } + } /* Zero out args to make valgrind happy */ memset(&args, 0, sizeof(args)); @@ -219,3 +217,19 @@ int radeon_bo_get_tiling_flags(struct radeon *radeon, *pitch = args.pitch; return ret; } + +int radeon_bo_get_name(struct radeon *radeon, + struct radeon_bo *bo, + uint32_t *name) +{ + struct drm_gem_flink flink; + int ret; + + flink.handle = bo->handle; + ret = drmIoctl(radeon->fd, DRM_IOCTL_GEM_FLINK, &flink); + if (ret) + return ret; + + *name = flink.name; + return ret; +} diff --git a/src/gallium/winsys/r600/drm/radeon_bo_pb.c b/src/gallium/winsys/r600/drm/radeon_bo_pb.c index a3452027f2..312552f075 100644 --- a/src/gallium/winsys/r600/drm/radeon_bo_pb.c +++ b/src/gallium/winsys/r600/drm/radeon_bo_pb.c @@ -63,11 +63,13 @@ static void radeon_bo_pb_destroy(struct pb_buffer *_buf) { struct radeon_bo_pb *buf = radeon_bo_pb(_buf); - LIST_DEL(&buf->maplist); - - if (buf->bo->data != NULL) { + /* If this buffer is on the list of buffers to unmap, + * do the unmapping now. + */ + if (!LIST_IS_EMPTY(&buf->maplist)) radeon_bo_unmap(buf->mgr->radeon, buf->bo); - } + + LIST_DEL(&buf->maplist); radeon_bo_reference(buf->mgr->radeon, &buf->bo, NULL); FREE(buf); } @@ -80,7 +82,7 @@ radeon_bo_pb_map_internal(struct pb_buffer *_buf, struct pipe_context *pctx = ctx; if (flags & PB_USAGE_UNSYNCHRONIZED) { - if (!buf->bo->data && radeon_bo_map(buf->mgr->radeon, buf->bo)) { + if (radeon_bo_map(buf->mgr->radeon, buf->bo)) { return NULL; } LIST_DELINIT(&buf->maplist); @@ -106,18 +108,12 @@ radeon_bo_pb_map_internal(struct pb_buffer *_buf, goto out; } - if (buf->bo->data != NULL) { - if (radeon_bo_wait(buf->mgr->radeon, buf->bo)) { - return NULL; - } - } else { - if (radeon_bo_map(buf->mgr->radeon, buf->bo)) { - return NULL; - } - if (radeon_bo_wait(buf->mgr->radeon, buf->bo)) { - radeon_bo_unmap(buf->mgr->radeon, buf->bo); - return NULL; - } + if (radeon_bo_map(buf->mgr->radeon, buf->bo)) { + return NULL; + } + if (radeon_bo_wait(buf->mgr->radeon, buf->bo)) { + radeon_bo_unmap(buf->mgr->radeon, buf->bo); + return NULL; } out: LIST_DELINIT(&buf->maplist); @@ -172,7 +168,7 @@ radeon_bo_pb_create_buffer_from_handle(struct pb_manager *_mgr, struct radeon_bo_pb *bo; struct radeon_bo *hw_bo; - hw_bo = radeon_bo(radeon, handle, 0, 0, NULL); + hw_bo = radeon_bo(radeon, handle, 0, 0); if (hw_bo == NULL) return NULL; @@ -217,8 +213,7 @@ radeon_bo_pb_create_buffer(struct pb_manager *_mgr, LIST_INITHEAD(&bo->maplist); - bo->bo = radeon_bo(radeon, 0, size, - desc->alignment, NULL); + bo->bo = radeon_bo(radeon, 0, size, desc->alignment); if (bo->bo == NULL) goto error2; return &bo->b; diff --git a/src/gallium/winsys/svga/drm/SConscript b/src/gallium/winsys/svga/drm/SConscript index 3ad4c72572..b049ea60aa 100644 --- a/src/gallium/winsys/svga/drm/SConscript +++ b/src/gallium/winsys/svga/drm/SConscript @@ -5,37 +5,37 @@ env = env.Clone() env.ParseConfig('pkg-config --cflags libdrm') if env['gcc']: - env.Append(CCFLAGS = ['-fvisibility=hidden']) - env.Append(CPPDEFINES = [ - 'HAVE_STDINT_H', - 'HAVE_SYS_TYPES_H', - '-D_FILE_OFFSET_BITS=64', - ]) - + env.Append(CCFLAGS = ['-fvisibility=hidden']) + env.Append(CPPDEFINES = [ + 'HAVE_STDINT_H', + 'HAVE_SYS_TYPES_H', + '-D_FILE_OFFSET_BITS=64', + ]) + env.Prepend(CPPPATH = [ - 'include', - '#/src/gallium/drivers/svga', - '#/src/gallium/drivers/svga/include', + 'include', + '#/src/gallium/drivers/svga', + '#/src/gallium/drivers/svga/include', ]) env.Append(CPPDEFINES = [ ]) sources = [ - 'vmw_buffer.c', - 'vmw_context.c', - 'vmw_fence.c', - 'vmw_screen.c', - 'vmw_screen_dri.c', - 'vmw_screen_ioctl.c', - 'vmw_screen_pools.c', - 'vmw_screen_svga.c', - 'vmw_surface.c', + 'vmw_buffer.c', + 'vmw_context.c', + 'vmw_fence.c', + 'vmw_screen.c', + 'vmw_screen_dri.c', + 'vmw_screen_ioctl.c', + 'vmw_screen_pools.c', + 'vmw_screen_svga.c', + 'vmw_surface.c', ] svgadrm = env.ConvenienceLibrary( - target = 'svgadrm', - source = sources, + target = 'svgadrm', + source = sources, ) Export('svgadrm') diff --git a/src/gallium/winsys/sw/xlib/SConscript b/src/gallium/winsys/sw/xlib/SConscript index 2af6153b4c..df01a9ec2b 100644 --- a/src/gallium/winsys/sw/xlib/SConscript +++ b/src/gallium/winsys/sw/xlib/SConscript @@ -4,7 +4,7 @@ Import('*') -if env['platform'] == 'linux': +if env['platform'] in ('cygwin', 'linux'): env = env.Clone() diff --git a/src/glsl/Makefile b/src/glsl/Makefile index 83869b1d84..f5aadc347b 100644 --- a/src/glsl/Makefile +++ b/src/glsl/Makefile @@ -30,55 +30,53 @@ CXX_SOURCES = \ glsl_types.cpp \ glsl_symbol_table.cpp \ hir_field_selection.cpp \ - ir_algebraic.cpp \ ir_basic_block.cpp \ ir_clone.cpp \ ir_constant_expression.cpp \ - ir_constant_folding.cpp \ - ir_constant_propagation.cpp \ - ir_constant_variable.cpp \ - ir_copy_propagation.cpp \ ir.cpp \ - ir_dead_code.cpp \ - ir_dead_code_local.cpp \ - ir_dead_functions.cpp \ - ir_div_to_mul_rcp.cpp \ - ir_explog_to_explog2.cpp \ ir_expression_flattening.cpp \ ir_function_can_inline.cpp \ ir_function.cpp \ - ir_function_inlining.cpp \ ir_hierarchical_visitor.cpp \ ir_hv_accept.cpp \ - ir_if_simplification.cpp \ - ir_if_to_cond_assign.cpp \ ir_import_prototypes.cpp \ - ir_lower_jumps.cpp \ - ir_mat_op_to_vec.cpp \ - ir_mod_to_fract.cpp \ - ir_noop_swizzle.cpp \ ir_print_visitor.cpp \ ir_reader.cpp \ ir_rvalue_visitor.cpp \ ir_set_program_inouts.cpp \ - ir_structure_splitting.cpp \ - ir_sub_to_add_neg.cpp \ - ir_swizzle_swizzle.cpp \ - ir_tree_grafting.cpp \ ir_validate.cpp \ ir_variable.cpp \ ir_variable_refcount.cpp \ - ir_vec_index_to_cond_assign.cpp \ - ir_vec_index_to_swizzle.cpp \ linker.cpp \ link_functions.cpp \ loop_analysis.cpp \ loop_controls.cpp \ loop_unroll.cpp \ + lower_if_to_cond_assign.cpp \ + lower_instructions.cpp \ + lower_jumps.cpp \ + lower_mat_op_to_vec.cpp \ lower_noise.cpp \ lower_texture_projection.cpp \ lower_variable_index_to_cond_assign.cpp \ + lower_vec_index_to_cond_assign.cpp \ + lower_vec_index_to_swizzle.cpp \ + lower_vector.cpp \ + opt_algebraic.cpp \ + opt_constant_folding.cpp \ + opt_constant_propagation.cpp \ + opt_constant_variable.cpp \ + opt_copy_propagation.cpp \ + opt_dead_code.cpp \ + opt_dead_code_local.cpp \ + opt_dead_functions.cpp \ + opt_function_inlining.cpp \ + opt_if_simplification.cpp \ + opt_noop_swizzle.cpp \ opt_redundant_jumps.cpp \ + opt_structure_splitting.cpp \ + opt_swizzle_swizzle.cpp \ + opt_tree_grafting.cpp \ s_expression.cpp LIBS = \ @@ -178,7 +176,7 @@ builtins: builtin_function.cpp builtins/profiles/* builtins/ir/* builtins/tools/ cp builtins/tools/builtin_function.cpp . make glsl_compiler @echo Regenerating builtin_function.cpp... - ./builtins/tools/generate_builtins.py > builtin_function.cpp + $(PYTHON2) $(PYTHON_FLAGS) builtins/tools/generate_builtins.py > builtin_function.cpp @echo Rebuilding the real compiler... make glsl_compiler diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am deleted file mode 100644 index 5f013c31e9..0000000000 --- a/src/glsl/Makefile.am +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright © 2010 Intel Corporation -# 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 -# on the rights to use, copy, modify, merge, publish, distribute, sub -# license, 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 (including the next -# paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL -# AUTHORS, COPYRIGHT HOLDERS, AND/OR THEIR SUPPLIERS 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. - -AUTOMAKE_OPTIONS = foreign -AM_CPPFLAGS = -I mesa - -SUBDIRS = glcpp - -bin_PROGRAMS = glsl - -glsl_LDADD = ./glcpp/libglcpp.la -glsl_LDFLAGS = @LDFLAGS@ $(talloc_LIBS) -glsl_SOURCES = \ - main.cpp \ - builtin_types.h \ - glsl_types.cpp \ - glsl_parser.ypp glsl_lexer.lpp glsl_parser_extras.cpp \ - ast_expr.cpp ast_to_hir.cpp ast_function.cpp ast_type.cpp \ - ir.cpp hir_field_selection.cpp builtin_function.cpp \ - ir_print_visitor.cpp ir_variable.cpp ir_function.cpp \ - ir_basic_block.cpp \ - ir_basic_block.h \ - ir_clone.cpp \ - ir_constant_expression.cpp \ - ir_constant_folding.cpp \ - ir_constant_variable.cpp \ - ir_copy_propagation.cpp \ - ir_copy_propagation.h \ - ir_dead_code.cpp \ - ir_dead_code.h \ - ir_dead_code_local.cpp \ - ir_expression_flattening.cpp \ - ir_function_can_inline.cpp \ - ir_function_inlining.cpp \ - ir_if_simplification.cpp \ - ir_optimization.h \ - ir_reader.cpp s_expression.cpp \ - ir_hv_accept.cpp \ - ir_hierarchical_visitor.h \ - ir_hierarchical_visitor.cpp \ - ir_swizzle_swizzle.cpp \ - ir_to_mesa.cpp \ - ir_to_mesa.h \ - ir_validate.cpp \ - ir_vec_index_to_swizzle.cpp \ - linker.cpp \ - loop_analysis.cpp \ - loop_controls.cpp \ - loop_unroll.cpp \ - lower_noise.cpp \ - lower_variable_index_to_cond_assign.cpp \ - opt_redundant_jumps.cpp - -BUILT_SOURCES = glsl_parser.h glsl_parser.cpp glsl_lexer.cpp -CLEANFILES = $(BUILT_SOURCES) - -builtin_function.cpp: builtins/*/* - ./builtins/tools/generate_builtins.pl > builtin_function.cpp -glsl_parser.h: glsl_parser.cpp - -.lpp.cpp: - $(LEXCOMPILE) --outfile="$@" $< diff --git a/src/glsl/SConscript b/src/glsl/SConscript index c183e208d6..fd22f66863 100644 --- a/src/glsl/SConscript +++ b/src/glsl/SConscript @@ -27,54 +27,52 @@ sources = [ 'glsl_types.cpp', 'glsl_symbol_table.cpp', 'hir_field_selection.cpp', - 'ir_algebraic.cpp', 'ir_basic_block.cpp', 'ir_clone.cpp', 'ir_constant_expression.cpp', - 'ir_constant_folding.cpp', - 'ir_constant_propagation.cpp', - 'ir_constant_variable.cpp', - 'ir_copy_propagation.cpp', 'ir.cpp', - 'ir_dead_code.cpp', - 'ir_dead_code_local.cpp', - 'ir_dead_functions.cpp', - 'ir_div_to_mul_rcp.cpp', - 'ir_explog_to_explog2.cpp', 'ir_expression_flattening.cpp', 'ir_function_can_inline.cpp', 'ir_function.cpp', - 'ir_function_inlining.cpp', 'ir_hierarchical_visitor.cpp', 'ir_hv_accept.cpp', - 'ir_if_simplification.cpp', - 'ir_if_to_cond_assign.cpp', 'ir_import_prototypes.cpp', - 'ir_lower_jumps.cpp', - 'ir_mat_op_to_vec.cpp', - 'ir_mod_to_fract.cpp', - 'ir_noop_swizzle.cpp', 'ir_print_visitor.cpp', 'ir_reader.cpp', 'ir_rvalue_visitor.cpp', 'ir_set_program_inouts.cpp', - 'ir_structure_splitting.cpp', - 'ir_sub_to_add_neg.cpp', - 'ir_swizzle_swizzle.cpp', - 'ir_tree_grafting.cpp', 'ir_validate.cpp', 'ir_variable.cpp', 'ir_variable_refcount.cpp', - 'ir_vec_index_to_cond_assign.cpp', - 'ir_vec_index_to_swizzle.cpp', 'linker.cpp', 'link_functions.cpp', 'loop_analysis.cpp', 'loop_controls.cpp', 'loop_unroll.cpp', + 'lower_if_to_cond_assign.cpp', + 'lower_instructions.cpp', + 'lower_jumps.cpp', + 'lower_mat_op_to_vec.cpp', 'lower_noise.cpp', 'lower_variable_index_to_cond_assign.cpp', + 'lower_vec_index_to_cond_assign.cpp', + 'lower_vec_index_to_swizzle.cpp', + 'lower_vector.cpp', + 'opt_algebraic.cpp', + 'opt_constant_folding.cpp', + 'opt_constant_propagation.cpp', + 'opt_constant_variable.cpp', + 'opt_copy_propagation.cpp', + 'opt_dead_code.cpp', + 'opt_dead_code_local.cpp', + 'opt_dead_functions.cpp', + 'opt_function_inlining.cpp', + 'opt_if_simplification.cpp', + 'opt_noop_swizzle.cpp', 'opt_redundant_jumps.cpp', + 'opt_structure_splitting.cpp', + 'opt_swizzle_swizzle.cpp', + 'opt_tree_grafting.cpp', 's_expression.cpp', ] diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp index 20448f5a97..1e66033348 100644 --- a/src/glsl/ast_function.cpp +++ b/src/glsl/ast_function.cpp @@ -101,9 +101,6 @@ process_call(exec_list *instructions, ir_function *f, ir_function_signature *sig = f->matching_signature(actual_parameters); - /* The instructions param will be used when the FINISHMEs below are done */ - (void) instructions; - if (sig != NULL) { /* Verify that 'out' and 'inout' actual parameters are lvalues. This * isn't done in ir_function::matching_signature because that function @@ -545,7 +542,7 @@ emit_inline_vector_constructor(const glsl_type *type, /* Mask of fields to be written in the assignment. */ constant_mask |= ((1U << rhs_components) - 1) << base_lhs_component; - constant_components++; + constant_components += rhs_components; base_component += rhs_components; } @@ -580,18 +577,17 @@ emit_inline_vector_constructor(const glsl_type *type, const ir_constant *const c = param->as_constant(); if (c == NULL) { - /* Generate a swizzle in case rhs_components != rhs->type->vector_elements. */ - unsigned swiz[4] = { 0, 0, 0, 0 }; - for (unsigned i = 0; i < rhs_components; i++) - swiz[i] = i; - /* Mask of fields to be written in the assignment. */ const unsigned write_mask = ((1U << rhs_components) - 1) << base_component; ir_dereference *lhs = new(ctx) ir_dereference_variable(var); - ir_rvalue *rhs = new(ctx) ir_swizzle(param, swiz, rhs_components); + + /* Generate a swizzle so that LHS and RHS sizes match. + */ + ir_rvalue *rhs = + new(ctx) ir_swizzle(param, 0, 1, 2, 3, rhs_components); ir_instruction *inst = new(ctx) ir_assignment(lhs, rhs, NULL, write_mask); @@ -631,21 +627,21 @@ assign_to_matrix_column(ir_variable *var, unsigned column, unsigned row_base, assert(column_ref->type->components() >= (row_base + count)); assert(src->type->components() >= (src_base + count)); - /* Generate a swizzle that puts the first element of the source at the - * location of the first element of the destination. + /* Generate a swizzle that extracts the number of components from the source + * that are to be assigned to the column of the matrix. */ - unsigned swiz[4] = { src_base, src_base, src_base, src_base }; - for (unsigned i = 0; i < count; i++) - swiz[i + row_base] = i; - - ir_rvalue *const rhs = - new(mem_ctx) ir_swizzle(src, swiz, count); + if (count < src->type->vector_elements) { + src = new(mem_ctx) ir_swizzle(src, + src_base + 0, src_base + 1, + src_base + 2, src_base + 3, + count); + } /* Mask of fields to be written in the assignment. */ const unsigned write_mask = ((1U << count) - 1) << row_base; - return new(mem_ctx) ir_assignment(column_ref, rhs, NULL, write_mask); + return new(mem_ctx) ir_assignment(column_ref, src, NULL, write_mask); } diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 15e1afc4dd..d615b30e7d 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -2210,7 +2210,7 @@ ast_declarator_list::hir(exec_list *instructions, earlier->type = var->type; delete var; var = NULL; - } else if (state->extensions->ARB_fragment_coord_conventions + } else if (state->ARB_fragment_coord_conventions_enable && strcmp(var->name, "gl_FragCoord") == 0 && earlier->type == var->type && earlier->mode == var->mode) { @@ -2636,8 +2636,7 @@ ast_jump_statement::hir(exec_list *instructions, state->current_function->function_name()); } - ir_expression *const ret = (ir_expression *) - opt_return_value->hir(instructions, state); + ir_rvalue *const ret = opt_return_value->hir(instructions, state); assert(ret != NULL); /* Implicit conversions are not allowed for return values. */ diff --git a/src/glsl/builtin_function.cpp b/src/glsl/builtin_function.cpp index f0206431fb..bc36814105 100644 --- a/src/glsl/builtin_function.cpp +++ b/src/glsl/builtin_function.cpp @@ -123,6 +123,30 @@ static const char builtin_acos[] = "))\n" "" ; +static const char builtin_acosh[] = + "((function acosh\n" + " (signature float\n" + " (parameters\n" + " (declare (in) float x))\n" + " ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float - (expression float * (var_ref x) (var_ref x)) (constant float (1)))))))))\n" + "\n" + " (signature vec2\n" + " (parameters\n" + " (declare (in) vec2 x))\n" + " ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 - (expression vec2 * (var_ref x) (var_ref x)) (constant vec2 (1)))))))))\n" + "\n" + " (signature vec3\n" + " (parameters\n" + " (declare (in) vec3 x))\n" + " ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 - (expression vec3 * (var_ref x) (var_ref x)) (constant vec3 (1)))))))))\n" + "\n" + " (signature vec4\n" + " (parameters\n" + " (declare (in) vec4 x))\n" + " ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 - (expression vec4 * (var_ref x) (var_ref x)) (constant vec4 (1)))))))))\n" + "))\n" + "" +; static const char builtin_all[] = "((function all\n" " (signature bool\n" @@ -261,18 +285,42 @@ static const char builtin_asin[] = "))\n" "" ; +static const char builtin_asinh[] = + "((function asinh\n" + " (signature float\n" + " (parameters\n" + " (declare (in) float x))\n" + " ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float + (expression float * (var_ref x) (var_ref x)) (constant float (1)))))))))\n" + "\n" + " (signature vec2\n" + " (parameters\n" + " (declare (in) vec2 x))\n" + " ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 + (expression vec2 * (var_ref x) (var_ref x)) (constant vec2 (1)))))))))\n" + "\n" + " (signature vec3\n" + " (parameters\n" + " (declare (in) vec3 x))\n" + " ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 + (expression vec3 * (var_ref x) (var_ref x)) (constant vec3 (1)))))))))\n" + "\n" + " (signature vec4\n" + " (parameters\n" + " (declare (in) vec4 x))\n" + " ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 + (expression vec4 * (var_ref x) (var_ref x)) (constant vec4 (1)))))))))\n" + "))\n" + "" +; static const char builtin_atan[] = "((function atan\n" " (signature float\n" " (parameters\n" - " (declare (in) float x))\n" + " (declare (in) float y_over_x))\n" " ((return (call asin ((expression float *\n" - " (var_ref x)\n" + " (var_ref y_over_x)\n" " (expression float rsq\n" " (expression float +\n" " (expression float *\n" - " (var_ref x)\n" - " (var_ref x))\n" + " (var_ref y_over_x)\n" + " (var_ref y_over_x))\n" " (constant float (1.0))))))))))\n" "\n" " (signature vec2\n" @@ -318,30 +366,15 @@ static const char builtin_atan[] = " )\n" " (\n" " (declare () float r)\n" - " (declare ( ) float abs_retval)\n" - " (assign (constant bool (1)) (x) (var_ref abs_retval) (call abs ((var_ref x) ))\n" - ")\n" - " (if (expression bool > (var_ref abs_retval) (constant float (0.000100)) ) (\n" - " (declare ( ) float atan_retval)\n" - " (assign (constant bool (1)) (x) (var_ref atan_retval) (call atan ((expression float / (var_ref y) (var_ref x) ) ))\n" - ")\n" - " (assign (constant bool (1)) (x) (var_ref r) (var_ref atan_retval) )\n" + " (if (expression bool > (expression float abs (var_ref x)) (constant float (0.000100))) (\n" + " (assign (constant bool (1)) (x) (var_ref r) (call atan ((expression float / (var_ref y) (var_ref x)))))\n" " (if (expression bool < (var_ref x) (constant float (0.000000)) ) (\n" - " (if (expression bool >= (var_ref y) (constant float (0.000000)) ) (\n" - " (declare ( ) float assignment_tmp)\n" - " (assign (constant bool (1)) (x) (var_ref assignment_tmp) (expression float + (var_ref r) (constant float (3.141593)) ) )\n" - " (assign (constant bool (1)) (x) (var_ref r) (var_ref assignment_tmp) )\n" - " )\n" - " (\n" - " (declare ( ) float assignment_tmp)\n" - " (assign (constant bool (1)) (x) (var_ref assignment_tmp) (expression float - (var_ref r) (constant float (3.141593)) ) )\n" - " (assign (constant bool (1)) (x) (var_ref r) (var_ref assignment_tmp) )\n" - " ))\n" - "\n" + " (if (expression bool >= (var_ref y) (constant float (0.000000)) )\n" + " ((assign (constant bool (1)) (x) (var_ref r) (expression float + (var_ref r) (constant float (3.141593)))))\n" + " ((assign (constant bool (1)) (x) (var_ref r) (expression float - (var_ref r) (constant float (3.141593))))))\n" " )\n" " (\n" " ))\n" - "\n" " )\n" " (\n" " (declare () float sgn)\n" @@ -405,6 +438,46 @@ static const char builtin_atan[] = "))\n" "" ; +static const char builtin_atanh[] = + "((function atanh\n" + " (signature float\n" + " (parameters\n" + " (declare (in) float x))\n" + " ((return (expression float * (constant float (0.5))\n" + " (expression float log\n" + " (expression float /\n" + " (expression float + (constant float (1)) (var_ref x))\n" + " (expression float - (constant float (1)) (var_ref x))))))))\n" + "\n" + " (signature vec2\n" + " (parameters\n" + " (declare (in) vec2 x))\n" + " ((return (expression vec2 * (constant vec2 (0.5))\n" + " (expression vec2 log\n" + " (expression vec2 /\n" + " (expression vec2 + (constant vec2 (1)) (var_ref x))\n" + " (expression vec2 - (constant vec2 (1)) (var_ref x))))))))\n" + "\n" + " (signature vec3\n" + " (parameters\n" + " (declare (in) vec3 x))\n" + " ((return (expression vec3 * (constant vec3 (0.5))\n" + " (expression vec3 log\n" + " (expression vec3 /\n" + " (expression vec3 + (constant vec3 (1)) (var_ref x))\n" + " (expression vec3 - (constant vec3 (1)) (var_ref x))))))))\n" + "\n" + " (signature vec4\n" + " (parameters\n" + " (declare (in) vec4 x))\n" + " ((return (expression vec4 * (constant vec4 (0.5))\n" + " (expression vec4 log\n" + " (expression vec4 /\n" + " (expression vec4 + (constant vec4 (1)) (var_ref x))\n" + " (expression vec4 - (constant vec4 (1)) (var_ref x))))))))\n" + "))\n" + "" +; static const char builtin_ceil[] = "((function ceil\n" " (signature float\n" @@ -641,9 +714,11 @@ static const char builtin_cross[] = "((function cross\n" " (signature vec3\n" " (parameters\n" - " (declare (in) vec3 arg0)\n" - " (declare (in) vec3 arg1))\n" - " ((return (expression vec3 cross (var_ref arg0) (var_ref arg1)))))\n" + " (declare (in) vec3 a)\n" + " (declare (in) vec3 b))\n" + " ((return (expression vec3 -\n" + " (expression vec3 * (swiz yzx (var_ref a)) (swiz zxy (var_ref b)))\n" + " (expression vec3 * (swiz zxy (var_ref a)) (swiz yzx (var_ref b)))))))\n" "))\n" "" ; @@ -12940,6 +13015,9 @@ static const char prototypes_for_130_frag[] = '(','f','u','n','c','t','i','o','n',' ','s','i','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', '(','f','u','n','c','t','i','o','n',' ','c','o','s','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', '(','f','u','n','c','t','i','o','n',' ','t','a','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','s','i','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','c','o','s','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','t','a','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', '(','f','u','n','c','t','i','o','n',' ','p','o','w',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',')', '(','f','u','n','c','t','i','o','n',' ','e','x','p',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', '(','f','u','n','c','t','i','o','n',' ','l','o','g',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', @@ -13022,10 +13100,13 @@ static const char prototypes_for_130_frag[] = static const char *functions_for_130_frag [] = { builtin_abs, builtin_acos, + builtin_acosh, builtin_all, builtin_any, builtin_asin, + builtin_asinh, builtin_atan, + builtin_atanh, builtin_ceil, builtin_clamp, builtin_cos, @@ -13112,3012 +13193,108 @@ static const char *functions_for_130_frag [] = { builtin_trunc, }; static const char prototypes_for_130_vert[] = - "(\n" - "(function radians\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float degrees))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 degrees))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 degrees))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 degrees))\n" - " ()))\n" - "(function degrees\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float radians))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 radians))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 radians))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 radians))\n" - " ()))\n" - "(function sin\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float angle))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 angle))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 angle))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 angle))\n" - " ()))\n" - "(function cos\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float angle))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 angle))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 angle))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 angle))\n" - " ()))\n" - "(function tan\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float angle))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 angle))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 angle))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 angle))\n" - " ()))\n" - "(function asin\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float angle))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 angle))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 angle))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 angle))\n" - " ()))\n" - "(function acos\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float angle))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 angle))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 angle))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 angle))\n" - " ()))\n" - "(function atan\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float y)\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 y)\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 y)\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 y)\n" - " (declare (in) vec4 x))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float y_over_x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 y_over_x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 y_over_x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 y_over_x))\n" - " ()))\n" - "(function sinh\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function cosh\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function tanh\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function pow\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ()))\n" - "(function exp\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function log\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function exp2\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function log2\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function sqrt\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function inversesqrt\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function abs\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ())\n" - " (signature int\n" - " (parameters\n" - " (declare (in) int x))\n" - " ())\n" - " (signature ivec2\n" - " (parameters\n" - " (declare (in) ivec2 x))\n" - " ())\n" - " (signature ivec3\n" - " (parameters\n" - " (declare (in) ivec3 x))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) ivec4 x))\n" - " ()))\n" - "(function sign\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ())\n" - " (signature int\n" - " (parameters\n" - " (declare (in) int x))\n" - " ())\n" - " (signature ivec2\n" - " (parameters\n" - " (declare (in) ivec2 x))\n" - " ())\n" - " (signature ivec3\n" - " (parameters\n" - " (declare (in) ivec3 x))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) ivec4 x))\n" - " ()))\n" - "(function floor\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function trunc\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function round\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function roundEven\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function ceil\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function fract\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function mod\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ()))\n" - "(function modf\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x)\n" - " (declare (out) float i))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (out) vec2 i))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (out) vec3 i))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (out) vec4 i))\n" - " ()))\n" - "(function min\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature int\n" - " (parameters\n" - " (declare (in) int x)\n" - " (declare (in) int y))\n" - " ())\n" - " (signature ivec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) ivec2 y))\n" - " ())\n" - " (signature ivec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) ivec3 y))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) ivec4 y))\n" - " ())\n" - " (signature ivec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) int y))\n" - " ())\n" - " (signature ivec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) int y))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) int y))\n" - " ())\n" - " (signature uint\n" - " (parameters\n" - " (declare (in) uint x)\n" - " (declare (in) uint y))\n" - " ())\n" - " (signature uvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uvec2 y))\n" - " ())\n" - " (signature uvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uvec3 y))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uvec4 y))\n" - " ())\n" - " (signature uvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uint y))\n" - " ())\n" - " (signature uvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uint y))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uint y))\n" - " ()))\n" - "(function max\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature int\n" - " (parameters\n" - " (declare (in) int x)\n" - " (declare (in) int y))\n" - " ())\n" - " (signature ivec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) ivec2 y))\n" - " ())\n" - " (signature ivec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) ivec3 y))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) ivec4 y))\n" - " ())\n" - " (signature ivec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) int y))\n" - " ())\n" - " (signature ivec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) int y))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) int y))\n" - " ())\n" - " (signature uint\n" - " (parameters\n" - " (declare (in) uint x)\n" - " (declare (in) uint y))\n" - " ())\n" - " (signature uvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uvec2 y))\n" - " ())\n" - " (signature uvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uvec3 y))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uvec4 y))\n" - " ())\n" - " (signature uvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uint y))\n" - " ())\n" - " (signature uvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uint y))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uint y))\n" - " ()))\n" - "(function clamp\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x)\n" - " (declare (in) float minVal)\n" - " (declare (in) float maxVal))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 minVal)\n" - " (declare (in) vec2 maxVal))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 minVal)\n" - " (declare (in) vec3 maxVal))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 minVal)\n" - " (declare (in) vec4 maxVal))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) float minVal)\n" - " (declare (in) float maxVal))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) float minVal)\n" - " (declare (in) float maxVal))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) float minVal)\n" - " (declare (in) float maxVal))\n" - " ())\n" - " (signature int\n" - " (parameters\n" - " (declare (in) int x)\n" - " (declare (in) int minVal)\n" - " (declare (in) int maxVal))\n" - " ())\n" - " (signature ivec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) ivec2 minVal)\n" - " (declare (in) ivec2 maxVal))\n" - " ())\n" - " (signature ivec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) ivec3 minVal)\n" - " (declare (in) ivec3 maxVal))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) ivec4 minVal)\n" - " (declare (in) ivec4 maxVal))\n" - " ())\n" - " (signature ivec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) int minVal)\n" - " (declare (in) int maxVal))\n" - " ())\n" - " (signature ivec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) int minVal)\n" - " (declare (in) int maxVal))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) int minVal)\n" - " (declare (in) int maxVal))\n" - " ())\n" - " (signature uint\n" - " (parameters\n" - " (declare (in) uint x)\n" - " (declare (in) uint minVal)\n" - " (declare (in) uint maxVal))\n" - " ())\n" - " (signature uvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uvec2 minVal)\n" - " (declare (in) uvec2 maxVal))\n" - " ())\n" - " (signature uvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uvec3 minVal)\n" - " (declare (in) uvec3 maxVal))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uvec4 minVal)\n" - " (declare (in) uvec4 maxVal))\n" - " ())\n" - " (signature uvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uint minVal)\n" - " (declare (in) uint maxVal))\n" - " ())\n" - " (signature uvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uint minVal)\n" - " (declare (in) uint maxVal))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uint minVal)\n" - " (declare (in) uint maxVal))\n" - " ()))\n" - "(function mix\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x)\n" - " (declare (in) float y)\n" - " (declare (in) float a))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y)\n" - " (declare (in) vec2 a))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y)\n" - " (declare (in) vec3 a))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y)\n" - " (declare (in) vec4 a))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y)\n" - " (declare (in) float a))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y)\n" - " (declare (in) float a))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y)\n" - " (declare (in) float a))\n" - " ()))\n" - "(function step\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float edge)\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 edge)\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 edge)\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 edge)\n" - " (declare (in) vec4 x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) float edge)\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) float edge)\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) float edge)\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function smoothstep\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float edge0)\n" - " (declare (in) float edge1)\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 edge0)\n" - " (declare (in) vec2 edge1)\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 edge0)\n" - " (declare (in) vec3 edge1)\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 edge0)\n" - " (declare (in) vec4 edge1)\n" - " (declare (in) vec4 x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) float edge0)\n" - " (declare (in) float edge1)\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) float edge0)\n" - " (declare (in) float edge1)\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) float edge0)\n" - " (declare (in) float edge1)\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function length\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function distance\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float p0)\n" - " (declare (in) float p1))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec2 p0)\n" - " (declare (in) vec2 p1))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec3 p0)\n" - " (declare (in) vec3 p1))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec4 p0)\n" - " (declare (in) vec4 p1))\n" - " ()))\n" - "(function dot\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x)\n" - " (declare (in) float y))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ()))\n" - "(function cross\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ()))\n" - "(function normalize\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function ftransform\n" - " (signature vec4\n" - " (parameters)\n" - " ()))\n" - "(function faceforward\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float N)\n" - " (declare (in) float I)\n" - " (declare (in) float Nref))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 N)\n" - " (declare (in) vec2 I)\n" - " (declare (in) vec2 Nref))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 N)\n" - " (declare (in) vec3 I)\n" - " (declare (in) vec3 Nref))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 N)\n" - " (declare (in) vec4 I)\n" - " (declare (in) vec4 Nref))\n" - " ()))\n" - "(function reflect\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float I)\n" - " (declare (in) float N))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 I)\n" - " (declare (in) vec2 N))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 I)\n" - " (declare (in) vec3 N))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 I)\n" - " (declare (in) vec4 N))\n" - " ()))\n" - "(function refract\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float I)\n" - " (declare (in) float N)\n" - " (declare (in) float eta))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 I)\n" - " (declare (in) vec2 N)\n" - " (declare (in) float eta))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 I)\n" - " (declare (in) vec3 N)\n" - " (declare (in) float eta))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 I)\n" - " (declare (in) vec4 N)\n" - " (declare (in) float eta))\n" - " ()))\n" - "(function matrixCompMult\n" - " (signature mat2\n" - " (parameters\n" - " (declare (in) mat2 x)\n" - " (declare (in) mat2 y))\n" - " ())\n" - " (signature mat3\n" - " (parameters\n" - " (declare (in) mat3 x)\n" - " (declare (in) mat3 y))\n" - " ())\n" - " (signature mat4\n" - " (parameters\n" - " (declare (in) mat4 x)\n" - " (declare (in) mat4 y))\n" - " ())\n" - " (signature mat2x3\n" - " (parameters\n" - " (declare (in) mat2x3 x)\n" - " (declare (in) mat2x3 y))\n" - " ())\n" - " (signature mat2x4\n" - " (parameters\n" - " (declare (in) mat2x4 x)\n" - " (declare (in) mat2x4 y))\n" - " ())\n" - " (signature mat3x2\n" - " (parameters\n" - " (declare (in) mat3x2 x)\n" - " (declare (in) mat3x2 y))\n" - " ())\n" - " (signature mat3x4\n" - " (parameters\n" - " (declare (in) mat3x4 x)\n" - " (declare (in) mat3x4 y))\n" - " ())\n" - " (signature mat4x2\n" - " (parameters\n" - " (declare (in) mat4x2 x)\n" - " (declare (in) mat4x2 y))\n" - " ())\n" - " (signature mat4x3\n" - " (parameters\n" - " (declare (in) mat4x3 x)\n" - " (declare (in) mat4x3 y))\n" - " ()))\n" - "(function outerProduct\n" - " (signature mat2\n" - " (parameters\n" - " (declare (in) vec2 c)\n" - " (declare (in) vec2 r))\n" - " ())\n" - " (signature mat3\n" - " (parameters\n" - " (declare (in) vec3 c)\n" - " (declare (in) vec3 r))\n" - " ())\n" - " (signature mat4\n" - " (parameters\n" - " (declare (in) vec4 c)\n" - " (declare (in) vec4 r))\n" - " ())\n" - " (signature mat2x3\n" - " (parameters\n" - " (declare (in) vec3 c)\n" - " (declare (in) vec2 r))\n" - " ())\n" - " (signature mat3x2\n" - " (parameters\n" - " (declare (in) vec2 c)\n" - " (declare (in) vec3 r))\n" - " ())\n" - " (signature mat2x4\n" - " (parameters\n" - " (declare (in) vec4 c)\n" - " (declare (in) vec2 r))\n" - " ())\n" - " (signature mat4x2\n" - " (parameters\n" - " (declare (in) vec2 c)\n" - " (declare (in) vec4 r))\n" - " ())\n" - " (signature mat3x4\n" - " (parameters\n" - " (declare (in) vec4 c)\n" - " (declare (in) vec3 r))\n" - " ())\n" - " (signature mat4x3\n" - " (parameters\n" - " (declare (in) vec3 c)\n" - " (declare (in) vec4 r))\n" - " ()))\n" - "(function transpose\n" - " (signature mat2\n" - " (parameters\n" - " (declare (in) mat2 m))\n" - " ())\n" - " (signature mat3\n" - " (parameters\n" - " (declare (in) mat3 m))\n" - " ())\n" - " (signature mat4\n" - " (parameters\n" - " (declare (in) mat4 m))\n" - " ())\n" - " (signature mat2x3\n" - " (parameters\n" - " (declare (in) mat3x2 m))\n" - " ())\n" - " (signature mat3x2\n" - " (parameters\n" - " (declare (in) mat2x3 m))\n" - " ())\n" - " (signature mat2x4\n" - " (parameters\n" - " (declare (in) mat4x2 m))\n" - " ())\n" - " (signature mat4x2\n" - " (parameters\n" - " (declare (in) mat2x4 m))\n" - " ())\n" - " (signature mat3x4\n" - " (parameters\n" - " (declare (in) mat4x3 m))\n" - " ())\n" - " (signature mat4x3\n" - " (parameters\n" - " (declare (in) mat3x4 m))\n" - " ()))\n" - "(function lessThan\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) ivec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) ivec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) ivec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uvec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uvec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uvec4 y))\n" - " ()))\n" - "(function lessThanEqual\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) ivec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) ivec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) ivec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uvec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uvec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uvec4 y))\n" - " ()))\n" - "(function greaterThan\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) ivec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) ivec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) ivec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uvec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uvec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uvec4 y))\n" - " ()))\n" - "(function greaterThanEqual\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) ivec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) ivec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) ivec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uvec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uvec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uvec4 y))\n" - " ()))\n" - "(function equal\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) ivec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) ivec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) ivec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uvec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uvec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uvec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) bvec2 x)\n" - " (declare (in) bvec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) bvec3 x)\n" - " (declare (in) bvec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) bvec4 x)\n" - " (declare (in) bvec4 y))\n" - " ()))\n" - "(function notEqual\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) vec2 x)\n" - " (declare (in) vec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) vec3 x)\n" - " (declare (in) vec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) vec4 x)\n" - " (declare (in) vec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) ivec2 x)\n" - " (declare (in) ivec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) ivec3 x)\n" - " (declare (in) ivec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) ivec4 x)\n" - " (declare (in) ivec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) uvec2 x)\n" - " (declare (in) uvec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) uvec3 x)\n" - " (declare (in) uvec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) uvec4 x)\n" - " (declare (in) uvec4 y))\n" - " ())\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) bvec2 x)\n" - " (declare (in) bvec2 y))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) bvec3 x)\n" - " (declare (in) bvec3 y))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) bvec4 x)\n" - " (declare (in) bvec4 y))\n" - " ()))\n" - "(function any\n" - " (signature bool\n" - " (parameters\n" - " (declare (in) bvec2 x))\n" - " ())\n" - " (signature bool\n" - " (parameters\n" - " (declare (in) bvec3 x))\n" - " ())\n" - " (signature bool\n" - " (parameters\n" - " (declare (in) bvec4 x))\n" - " ()))\n" - "(function all\n" - " (signature bool\n" - " (parameters\n" - " (declare (in) bvec2 x))\n" - " ())\n" - " (signature bool\n" - " (parameters\n" - " (declare (in) bvec3 x))\n" - " ())\n" - " (signature bool\n" - " (parameters\n" - " (declare (in) bvec4 x))\n" - " ()))\n" - "(function not\n" - " (signature bvec2\n" - " (parameters\n" - " (declare (in) bvec2 x))\n" - " ())\n" - " (signature bvec3\n" - " (parameters\n" - " (declare (in) bvec3 x))\n" - " ())\n" - " (signature bvec4\n" - " (parameters\n" - " (declare (in) bvec4 x))\n" - " ()))\n" - "(function texture\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) float P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) float P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) float P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec2 P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec2 P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec2 P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler3D sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler3D sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) samplerCube sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isamplerCube sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usamplerCube sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) samplerCubeShadow sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DArray sampler)\n" - " (declare (in) vec2 P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1DArray sampler)\n" - " (declare (in) vec2 P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1DArray sampler)\n" - " (declare (in) vec2 P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DArray sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2DArray sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2DArray sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DArrayShadow sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler2DArrayShadow sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) float P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) float P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) float P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler3D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler3D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) samplerCube sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isamplerCube sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usamplerCube sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) samplerCubeShadow sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DArray sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1DArray sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1DArray sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DArray sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2DArray sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2DArray sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DArrayShadow sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function textureProj\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec2 P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) vec2 P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) vec2 P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec3 P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler3D sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler3D sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec4 P))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler3D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler3D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function textureLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) float P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) float P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) float P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler3D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler3D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) samplerCube sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isamplerCube sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usamplerCube sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DArray sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1DArray sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1DArray sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DArray sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2DArray sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2DArray sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DArrayShadow sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function texelFetch\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) int P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) int P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) int P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) ivec2 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) ivec2 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) ivec2 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) ivec3 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler3D sampler)\n" - " (declare (in) ivec3 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler3D sampler)\n" - " (declare (in) ivec3 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DArray sampler)\n" - " (declare (in) ivec2 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1DArray sampler)\n" - " (declare (in) ivec2 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1DArray sampler)\n" - " (declare (in) ivec2 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DArray sampler)\n" - " (declare (in) ivec3 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2DArray sampler)\n" - " (declare (in) ivec3 P)\n" - " (declare (in) int lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2DArray sampler)\n" - " (declare (in) ivec3 P)\n" - " (declare (in) int lod))\n" - " ()))\n" - "(function textureProjLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler3D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler3D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function textureGrad\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) float P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) float P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) float P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec3 dPdx)\n" - " (declare (in) vec3 dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler3D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec3 dPdx)\n" - " (declare (in) vec3 dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler3D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec3 dPdx)\n" - " (declare (in) vec3 dPdy))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) samplerCube sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec3 dPdx)\n" - " (declare (in) vec3 dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isamplerCube sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec3 dPdx)\n" - " (declare (in) vec3 dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usamplerCube sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec3 dPdx)\n" - " (declare (in) vec3 dPdy))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) samplerCubeShadow sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) vec3 dPdx)\n" - " (declare (in) vec3 dPdy))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DArray sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1DArray sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1DArray sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DArray sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2DArray sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2DArray sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DArrayShadow sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler2DArrayShadow sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ()))\n" - "(function textureProjGrad\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) vec2 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler1D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler1D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec3 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler2D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler2D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) vec3 dPdx)\n" - " (declare (in) vec3 dPdy))\n" - " ())\n" - " (signature ivec4\n" - " (parameters\n" - " (declare (in) isampler3D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) vec3 dPdx)\n" - " (declare (in) vec3 dPdy))\n" - " ())\n" - " (signature uvec4\n" - " (parameters\n" - " (declare (in) usampler3D sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) vec3 dPdx)\n" - " (declare (in) vec3 dPdy))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) float dPdx)\n" - " (declare (in) float dPdy))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec4 P)\n" - " (declare (in) vec2 dPdx)\n" - " (declare (in) vec2 dPdy))\n" - " ()))\n" - "(function texture1D\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) float coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) float coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function texture1DProj\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec2 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec4 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec2 coord)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec4 coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function texture1DLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) float coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function texture1DProjLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec2 coord)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1D sampler)\n" - " (declare (in) vec4 coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function texture2D\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec2 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec2 coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function texture2DProj\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec3 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec4 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec3 coord)\n" - " (declare (in) float bias))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec4 coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function texture2DLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec2 coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function texture2DProjLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec3 coord)\n" - " (declare (in) float lod))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2D sampler)\n" - " (declare (in) vec4 coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function texture3D\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec3 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec3 coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function texture3DProj\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec4 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec4 coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function texture3DLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec3 coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function texture3DProjLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler3D sampler)\n" - " (declare (in) vec4 coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function textureCube\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) samplerCube sampler)\n" - " (declare (in) vec3 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) samplerCube sampler)\n" - " (declare (in) vec3 coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function textureCubeLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) samplerCube sampler)\n" - " (declare (in) vec3 coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function shadow1D\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec3 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec3 coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function shadow2D\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec3 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec3 coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function shadow1DProj\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec4 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec4 coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function shadow2DProj\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec4 coord))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec4 coord)\n" - " (declare (in) float bias))\n" - " ()))\n" - "(function shadow1DLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec3 coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function shadow2DLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec3 coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function shadow1DProjLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler1DShadow sampler)\n" - " (declare (in) vec4 coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function shadow2DProjLod\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) sampler2DShadow sampler)\n" - " (declare (in) vec4 coord)\n" - " (declare (in) float lod))\n" - " ()))\n" - "(function noise1\n" - " (signature float\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature float\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function noise2\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec2\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function noise3\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec3\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ()))\n" - "(function noise4\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) float x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec2 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec3 x))\n" - " ())\n" - " (signature vec4\n" - " (parameters\n" - " (declare (in) vec4 x))\n" - " ())))" -; +{'(', +'(','f','u','n','c','t','i','o','n',' ','r','a','d','i','a','n','s',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','e','g','r','e','e','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','e','g','r','e','e','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','e','g','r','e','e','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','d','e','g','r','e','e','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','d','e','g','r','e','e','s',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','r','a','d','i','a','n','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','r','a','d','i','a','n','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','r','a','d','i','a','n','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','r','a','d','i','a','n','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','i','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a','n','g','l','e',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','c','o','s',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a','n','g','l','e',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','a','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a','n','g','l','e',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','s','i','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a','n','g','l','e',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','c','o','s',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a','n','g','l','e',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','t','a','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y','_','o','v','e','r','_','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y','_','o','v','e','r','_','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y','_','o','v','e','r','_','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y','_','o','v','e','r','_','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','i','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','c','o','s','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','a','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','s','i','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','c','o','s','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','t','a','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','p','o','w',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','e','x','p',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','l','o','g',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','e','x','p','2',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','l','o','g','2',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','q','r','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','i','n','v','e','r','s','e','s','q','r','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','b','s',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','i','g','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','f','l','o','o','r',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','r','u','n','c',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','r','o','u','n','d',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','r','o','u','n','d','E','v','e','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','c','e','i','l',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','f','r','a','c','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','m','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','m','o','d','f',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','o','u','t',')',' ','f','l','o','a','t',' ','i',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','o','u','t',')',' ','v','e','c','2',' ','i',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','o','u','t',')',' ','v','e','c','3',' ','i',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','o','u','t',')',' ','v','e','c','4',' ','i',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','m','i','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','m','a','x',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','c','l','a','m','p',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','m','i','x',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','t','e','p',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','m','o','o','t','h','s','t','e','p',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','l','e','n','g','t','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','d','i','s','t','a','n','c','e',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','p','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','p','1',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','p','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','p','1',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','p','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','p','1',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','p','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','p','1',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','d','o','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','c','r','o','s','s',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','n','o','r','m','a','l','i','z','e',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','f','t','r','a','n','s','f','o','r','m',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','f','a','c','e','f','o','r','w','a','r','d',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','N','r','e','f',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','N','r','e','f',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','N','r','e','f',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','N','r','e','f',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','r','e','f','l','e','c','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','N',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','N',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','N',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','N',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','r','e','f','r','a','c','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','t','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','t','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','t','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','t','a',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','m','a','t','r','i','x','C','o','m','p','M','u','l','t',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','3',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','o','u','t','e','r','P','r','o','d','u','c','t',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','r',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','r','a','n','s','p','o','s','e',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','2',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','3',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','2',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','4',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','3',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','4',' ','m',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','l','e','s','s','T','h','a','n',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','l','e','s','s','T','h','a','n','E','q','u','a','l',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','g','r','e','a','t','e','r','T','h','a','n',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','g','r','e','a','t','e','r','T','h','a','n','E','q','u','a','l',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','e','q','u','a','l',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','n','o','t','E','q','u','a','l',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','n','y',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','a','l','l',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','n','o','t',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','e','l','F','e','t','c','h',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','G','r','a','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','P','r','o','j','G','r','a','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','1','D',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','1','D','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','1','D','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','1','D','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','2','D',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','2','D','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','2','D','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','2','D','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','3','D',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','3','D','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','3','D','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','3','D','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','C','u','b','e',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','C','u','b','e','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','1','D',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','2','D',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','1','D','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','2','D','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','1','D','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','2','D','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','1','D','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','2','D','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','n','o','i','s','e','1',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','n','o','i','s','e','2',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','n','o','i','s','e','3',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')', +'(','f','u','n','c','t','i','o','n',' ','n','o','i','s','e','4',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',')'} ; static const char *functions_for_130_vert [] = { builtin_abs, builtin_acos, + builtin_acosh, builtin_all, builtin_any, builtin_asin, + builtin_asinh, builtin_atan, + builtin_atanh, builtin_ceil, builtin_clamp, builtin_cos, diff --git a/src/glsl/builtin_types.h b/src/glsl/builtin_types.h index 7175e08afb..443ae1606e 100644 --- a/src/glsl/builtin_types.h +++ b/src/glsl/builtin_types.h @@ -275,9 +275,9 @@ const glsl_type glsl_type::builtin_ARB_texture_rectangle_types[] = { const glsl_type glsl_type::builtin_EXT_texture_array_types[] = { glsl_type(GL_SAMPLER_1D_ARRAY, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT, "sampler1DArray"), - glsl_type(GL_SAMPLER_1D_ARRAY_SHADOW, - GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT, "sampler2DArray"), glsl_type(GL_SAMPLER_2D_ARRAY, + GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT, "sampler2DArray"), + glsl_type(GL_SAMPLER_1D_ARRAY_SHADOW, GLSL_SAMPLER_DIM_1D, 1, 1, GLSL_TYPE_FLOAT, "sampler1DArrayShadow"), glsl_type(GL_SAMPLER_2D_ARRAY_SHADOW, GLSL_SAMPLER_DIM_2D, 1, 1, GLSL_TYPE_FLOAT, "sampler2DArrayShadow"), diff --git a/src/glsl/builtins/ir/acosh b/src/glsl/builtins/ir/acosh new file mode 100644 index 0000000000..5518e75753 --- /dev/null +++ b/src/glsl/builtins/ir/acosh @@ -0,0 +1,21 @@ +((function acosh + (signature float + (parameters + (declare (in) float x)) + ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float - (expression float * (var_ref x) (var_ref x)) (constant float (1))))))))) + + (signature vec2 + (parameters + (declare (in) vec2 x)) + ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 - (expression vec2 * (var_ref x) (var_ref x)) (constant vec2 (1))))))))) + + (signature vec3 + (parameters + (declare (in) vec3 x)) + ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 - (expression vec3 * (var_ref x) (var_ref x)) (constant vec3 (1))))))))) + + (signature vec4 + (parameters + (declare (in) vec4 x)) + ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 - (expression vec4 * (var_ref x) (var_ref x)) (constant vec4 (1))))))))) +)) diff --git a/src/glsl/builtins/ir/asinh b/src/glsl/builtins/ir/asinh new file mode 100644 index 0000000000..cdc2c20e76 --- /dev/null +++ b/src/glsl/builtins/ir/asinh @@ -0,0 +1,21 @@ +((function asinh + (signature float + (parameters + (declare (in) float x)) + ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float + (expression float * (var_ref x) (var_ref x)) (constant float (1))))))))) + + (signature vec2 + (parameters + (declare (in) vec2 x)) + ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 + (expression vec2 * (var_ref x) (var_ref x)) (constant vec2 (1))))))))) + + (signature vec3 + (parameters + (declare (in) vec3 x)) + ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 + (expression vec3 * (var_ref x) (var_ref x)) (constant vec3 (1))))))))) + + (signature vec4 + (parameters + (declare (in) vec4 x)) + ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 + (expression vec4 * (var_ref x) (var_ref x)) (constant vec4 (1))))))))) +)) diff --git a/src/glsl/builtins/ir/atan b/src/glsl/builtins/ir/atan index 6dc99d74d3..3f97e0d46f 100644 --- a/src/glsl/builtins/ir/atan +++ b/src/glsl/builtins/ir/atan @@ -1,14 +1,14 @@ ((function atan (signature float (parameters - (declare (in) float x)) + (declare (in) float y_over_x)) ((return (call asin ((expression float * - (var_ref x) + (var_ref y_over_x) (expression float rsq (expression float + (expression float * - (var_ref x) - (var_ref x)) + (var_ref y_over_x) + (var_ref y_over_x)) (constant float (1.0)))))))))) (signature vec2 @@ -54,30 +54,15 @@ ) ( (declare () float r) - (declare ( ) float abs_retval) - (assign (constant bool (1)) (x) (var_ref abs_retval) (call abs ((var_ref x) )) -) - (if (expression bool > (var_ref abs_retval) (constant float (0.000100)) ) ( - (declare ( ) float atan_retval) - (assign (constant bool (1)) (x) (var_ref atan_retval) (call atan ((expression float / (var_ref y) (var_ref x) ) )) -) - (assign (constant bool (1)) (x) (var_ref r) (var_ref atan_retval) ) + (if (expression bool > (expression float abs (var_ref x)) (constant float (0.000100))) ( + (assign (constant bool (1)) (x) (var_ref r) (call atan ((expression float / (var_ref y) (var_ref x))))) (if (expression bool < (var_ref x) (constant float (0.000000)) ) ( - (if (expression bool >= (var_ref y) (constant float (0.000000)) ) ( - (declare ( ) float assignment_tmp) - (assign (constant bool (1)) (x) (var_ref assignment_tmp) (expression float + (var_ref r) (constant float (3.141593)) ) ) - (assign (constant bool (1)) (x) (var_ref r) (var_ref assignment_tmp) ) - ) - ( - (declare ( ) float assignment_tmp) - (assign (constant bool (1)) (x) (var_ref assignment_tmp) (expression float - (var_ref r) (constant float (3.141593)) ) ) - (assign (constant bool (1)) (x) (var_ref r) (var_ref assignment_tmp) ) - )) - + (if (expression bool >= (var_ref y) (constant float (0.000000)) ) + ((assign (constant bool (1)) (x) (var_ref r) (expression float + (var_ref r) (constant float (3.141593))))) + ((assign (constant bool (1)) (x) (var_ref r) (expression float - (var_ref r) (constant float (3.141593)))))) ) ( )) - ) ( (declare () float sgn) diff --git a/src/glsl/builtins/ir/atanh b/src/glsl/builtins/ir/atanh new file mode 100644 index 0000000000..5559e97406 --- /dev/null +++ b/src/glsl/builtins/ir/atanh @@ -0,0 +1,37 @@ +((function atanh + (signature float + (parameters + (declare (in) float x)) + ((return (expression float * (constant float (0.5)) + (expression float log + (expression float / + (expression float + (constant float (1)) (var_ref x)) + (expression float - (constant float (1)) (var_ref x)))))))) + + (signature vec2 + (parameters + (declare (in) vec2 x)) + ((return (expression vec2 * (constant vec2 (0.5)) + (expression vec2 log + (expression vec2 / + (expression vec2 + (constant vec2 (1)) (var_ref x)) + (expression vec2 - (constant vec2 (1)) (var_ref x)))))))) + + (signature vec3 + (parameters + (declare (in) vec3 x)) + ((return (expression vec3 * (constant vec3 (0.5)) + (expression vec3 log + (expression vec3 / + (expression vec3 + (constant vec3 (1)) (var_ref x)) + (expression vec3 - (constant vec3 (1)) (var_ref x)))))))) + + (signature vec4 + (parameters + (declare (in) vec4 x)) + ((return (expression vec4 * (constant vec4 (0.5)) + (expression vec4 log + (expression vec4 / + (expression vec4 + (constant vec4 (1)) (var_ref x)) + (expression vec4 - (constant vec4 (1)) (var_ref x)))))))) +)) diff --git a/src/glsl/builtins/ir/cross b/src/glsl/builtins/ir/cross index 24717a2183..02991fe422 100644 --- a/src/glsl/builtins/ir/cross +++ b/src/glsl/builtins/ir/cross @@ -1,7 +1,9 @@ ((function cross (signature vec3 (parameters - (declare (in) vec3 arg0) - (declare (in) vec3 arg1)) - ((return (expression vec3 cross (var_ref arg0) (var_ref arg1))))) + (declare (in) vec3 a) + (declare (in) vec3 b)) + ((return (expression vec3 - + (expression vec3 * (swiz yzx (var_ref a)) (swiz zxy (var_ref b))) + (expression vec3 * (swiz zxy (var_ref a)) (swiz yzx (var_ref b))))))) )) diff --git a/src/glsl/builtins/profiles/130.frag b/src/glsl/builtins/profiles/130.frag index 0d860eb9ed..329116f2a2 100644 --- a/src/glsl/builtins/profiles/130.frag +++ b/src/glsl/builtins/profiles/130.frag @@ -62,7 +62,6 @@ vec2 tanh(vec2 x); vec3 tanh(vec3 x); vec4 tanh(vec4 x); -#if 0 float asinh(float x); vec2 asinh(vec2 x); vec3 asinh(vec3 x); @@ -77,7 +76,6 @@ float atanh(float x); vec2 atanh(vec2 x); vec3 atanh(vec3 x); vec4 atanh(vec4 x); -#endif /* * 8.2 - Exponential Functions diff --git a/src/glsl/builtins/profiles/130.vert b/src/glsl/builtins/profiles/130.vert index 2fd44dce8c..1c212ebb3c 100644 --- a/src/glsl/builtins/profiles/130.vert +++ b/src/glsl/builtins/profiles/130.vert @@ -62,7 +62,6 @@ vec2 tanh(vec2 x); vec3 tanh(vec3 x); vec4 tanh(vec4 x); -#if 0 float asinh(float x); vec2 asinh(vec2 x); vec3 asinh(vec3 x); @@ -77,7 +76,6 @@ float atanh(float x); vec2 atanh(vec2 x); vec3 atanh(vec3 x); vec4 atanh(vec4 x); -#endif /* * 8.2 - Exponential Functions diff --git a/src/glsl/builtins/tools/generate_builtins.py b/src/glsl/builtins/tools/generate_builtins.py index 9bde17157a..1f1056ea09 100755 --- a/src/glsl/builtins/tools/generate_builtins.py +++ b/src/glsl/builtins/tools/generate_builtins.py @@ -29,12 +29,12 @@ def stringify(s): # rather than actual string literals. if len(s) >= 65535: #t = "/* Warning: length " + repr(len(s)) + " too large */\n" - t = "" + t = "" for c in re.sub('\s\s+', ' ', s): if c == '\n': - t += '\n' + t += '\n' else: - t += "'" + c + "'," + t += "'" + c + "'," return '{' + t[:-1] + '}' t = s.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n"\n "') diff --git a/src/glsl/glcpp/glcpp-lex.c b/src/glsl/glcpp/glcpp-lex.c index af8f07419a..156af3008c 100644 --- a/src/glsl/glcpp/glcpp-lex.c +++ b/src/glsl/glcpp/glcpp-lex.c @@ -795,10 +795,6 @@ int glcpp_get_lineno (yyscan_t yyscanner ); void glcpp_set_lineno (int line_number ,yyscan_t yyscanner ); -int glcpp_get_column (yyscan_t yyscanner ); - -void glcpp_set_column (int column_no ,yyscan_t yyscanner ); - YYSTYPE * glcpp_get_lval (yyscan_t yyscanner ); void glcpp_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); @@ -958,7 +954,7 @@ YY_DECL /* Single-line comments */ -#line 962 "glcpp/glcpp-lex.c" +#line 958 "glcpp/glcpp-lex.c" yylval = yylval_param; @@ -1475,7 +1471,7 @@ YY_RULE_SETUP #line 319 "glcpp/glcpp-lex.l" ECHO; YY_BREAK -#line 1479 "glcpp/glcpp-lex.c" +#line 1475 "glcpp/glcpp-lex.c" case YY_STATE_EOF(DONE): case YY_STATE_EOF(COMMENT): case YY_STATE_EOF(UNREACHABLE): diff --git a/src/glsl/glcpp/glcpp-parse.c b/src/glsl/glcpp/glcpp-parse.c index 30b6fd6ef9..0cd1fe5d59 100644 --- a/src/glsl/glcpp/glcpp-parse.c +++ b/src/glsl/glcpp/glcpp-parse.c @@ -1,10 +1,9 @@ - -/* A Bison parser, made by GNU Bison 2.4.1. */ +/* A Bison parser, made by GNU Bison 2.4.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,7 +45,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.4.1" +#define YYBISON_VERSION "2.4.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -220,7 +219,7 @@ add_builtin_define(glcpp_parser_t *parser, const char *name, int value); /* Line 189 of yacc.c */ -#line 224 "glcpp/glcpp-parse.c" +#line 223 "glcpp/glcpp-parse.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -308,7 +307,7 @@ typedef struct YYLTYPE /* Line 264 of yacc.c */ -#line 312 "glcpp/glcpp-parse.c" +#line 311 "glcpp/glcpp-parse.c" #ifdef short # undef short @@ -358,7 +357,7 @@ typedef short int yytype_int16; #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ -# if YYENABLE_NLS +# if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) @@ -635,15 +634,15 @@ static const yytype_uint16 yyrline[] = { 0, 188, 188, 190, 194, 197, 202, 203, 207, 210, 216, 219, 222, 225, 233, 252, 262, 267, 272, 291, - 306, 309, 312, 325, 329, 338, 343, 344, 347, 350, - 353, 356, 359, 362, 365, 368, 371, 374, 377, 380, - 383, 386, 389, 392, 395, 398, 401, 404, 407, 410, - 416, 421, 429, 430, 434, 440, 441, 444, 446, 453, - 457, 461, 466, 472, 480, 486, 494, 498, 502, 506, - 510, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547 + 306, 309, 312, 333, 337, 346, 351, 352, 355, 358, + 361, 364, 367, 370, 373, 376, 379, 382, 385, 388, + 391, 394, 397, 400, 403, 406, 409, 412, 415, 418, + 424, 429, 437, 438, 442, 448, 449, 452, 454, 461, + 465, 469, 474, 480, 488, 494, 502, 506, 510, 514, + 518, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555 }; #endif @@ -946,9 +945,18 @@ static const yytype_uint8 yystos[] = /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ #define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif #define YYRECOVERING() (!!yyerrstatus) @@ -1005,7 +1013,7 @@ while (YYID (0)) we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT -# if YYLTYPE_IS_TRIVIAL +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ @@ -1547,7 +1555,7 @@ YYLTYPE yylloc; YYLTYPE *yylsp; /* The locations where the error started and ended. */ - YYLTYPE yyerror_range[2]; + YYLTYPE yyerror_range[3]; YYSIZE_T yystacksize; @@ -1594,7 +1602,7 @@ YYLTYPE yylloc; yyvsp = yyvs; yylsp = yyls; -#if YYLTYPE_IS_TRIVIAL +#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL /* Initialize the default location before parsing starts. */ yylloc.first_line = yylloc.last_line = 1; yylloc.first_column = yylloc.last_column = 1; @@ -1602,7 +1610,7 @@ YYLTYPE yylloc; /* User initialization code. */ -/* Line 1242 of yacc.c */ +/* Line 1251 of yacc.c */ #line 155 "glcpp/glcpp-parse.y" { yylloc.first_line = 1; @@ -1612,8 +1620,8 @@ YYLTYPE yylloc; yylloc.source = 0; } -/* Line 1242 of yacc.c */ -#line 1617 "glcpp/glcpp-parse.c" +/* Line 1251 of yacc.c */ +#line 1625 "glcpp/glcpp-parse.c" yylsp[0] = yylloc; goto yysetstate; @@ -1800,7 +1808,7 @@ yyreduce: { case 4: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 194 "glcpp/glcpp-parse.y" { glcpp_print(parser->output, "\n"); @@ -1809,7 +1817,7 @@ yyreduce: case 5: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 197 "glcpp/glcpp-parse.y" { _glcpp_parser_print_expanded_token_list (parser, (yyvsp[(1) - (1)].token_list)); @@ -1820,7 +1828,7 @@ yyreduce: case 8: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 207 "glcpp/glcpp-parse.y" { _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (3)]), (yyvsp[(2) - (3)].ival)); @@ -1829,7 +1837,7 @@ yyreduce: case 9: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 210 "glcpp/glcpp-parse.y" { _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (3)]), "elif", (yyvsp[(2) - (3)].ival)); @@ -1838,7 +1846,7 @@ yyreduce: case 10: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 216 "glcpp/glcpp-parse.y" { _define_object_macro (parser, & (yylsp[(2) - (4)]), (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].token_list)); @@ -1847,7 +1855,7 @@ yyreduce: case 11: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 219 "glcpp/glcpp-parse.y" { _define_function_macro (parser, & (yylsp[(2) - (6)]), (yyvsp[(2) - (6)].str), NULL, (yyvsp[(5) - (6)].token_list)); @@ -1856,7 +1864,7 @@ yyreduce: case 12: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 222 "glcpp/glcpp-parse.y" { _define_function_macro (parser, & (yylsp[(2) - (7)]), (yyvsp[(2) - (7)].str), (yyvsp[(4) - (7)].string_list), (yyvsp[(6) - (7)].token_list)); @@ -1865,7 +1873,7 @@ yyreduce: case 13: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 225 "glcpp/glcpp-parse.y" { macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (3)].str)); @@ -1879,7 +1887,7 @@ yyreduce: case 14: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 233 "glcpp/glcpp-parse.y" { /* Be careful to only evaluate the 'if' expression if @@ -1904,7 +1912,7 @@ yyreduce: case 15: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 252 "glcpp/glcpp-parse.y" { /* #if without an expression is only an error if we @@ -1920,7 +1928,7 @@ yyreduce: case 16: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 262 "glcpp/glcpp-parse.y" { macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str)); @@ -1931,7 +1939,7 @@ yyreduce: case 17: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 267 "glcpp/glcpp-parse.y" { macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str)); @@ -1942,7 +1950,7 @@ yyreduce: case 18: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 272 "glcpp/glcpp-parse.y" { /* Be careful to only evaluate the 'elif' expression @@ -1967,7 +1975,7 @@ yyreduce: case 19: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 291 "glcpp/glcpp-parse.y" { /* #elif without an expression is an error unless we @@ -1988,7 +1996,7 @@ yyreduce: case 20: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 306 "glcpp/glcpp-parse.y" { _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (2)]), "else", 1); @@ -1997,7 +2005,7 @@ yyreduce: case 21: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 309 "glcpp/glcpp-parse.y" { _glcpp_parser_skip_stack_pop (parser, & (yylsp[(1) - (2)])); @@ -2006,7 +2014,7 @@ yyreduce: case 22: -/* Line 1455 of yacc.c */ +/* Line 1464 of yacc.c */ #line 312 "glcpp/glcpp-parse.y" { macro_t *macro = hash_table_find (parser->defines, "__VERSION__"); @@ -2019,14 +2027,22 @@ yyreduce: if ((yyvsp[(2) - (3)].ival) == 100) add_builtin_define (parser, "GL_ES", 1); + /* Currently, all ES2 implementations support highp in the + * fragment shader, so we always define this macro in ES2. + * If we ever get a driver that doesn't support highp, we'll + * need to add a flag to the gl_context and check that here. + */ + if ((yyvsp[(2) - (3)].ival) >= 130 || (yyvsp[(2) - (3)].ival) == 100) + add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1); + glcpp_printf(parser->output, "#version %" PRIiMAX, (yyvsp[(2) - (3)].ival)); ;} break; case 24: -/* Line 1455 of yacc.c */ -#line 329 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 337 "glcpp/glcpp-parse.y" { if (strlen ((yyvsp[(1) - (1)].str)) >= 3 && strncmp ((yyvsp[(1) - (1)].str), "0x", 2) == 0) { (yyval.ival) = strtoll ((yyvsp[(1) - (1)].str) + 2, NULL, 16); @@ -2040,8 +2056,8 @@ yyreduce: case 25: -/* Line 1455 of yacc.c */ -#line 338 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 346 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} @@ -2049,8 +2065,8 @@ yyreduce: case 27: -/* Line 1455 of yacc.c */ -#line 344 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 352 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) || (yyvsp[(3) - (3)].ival); ;} @@ -2058,8 +2074,8 @@ yyreduce: case 28: -/* Line 1455 of yacc.c */ -#line 347 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 355 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) && (yyvsp[(3) - (3)].ival); ;} @@ -2067,8 +2083,8 @@ yyreduce: case 29: -/* Line 1455 of yacc.c */ -#line 350 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 358 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} @@ -2076,8 +2092,8 @@ yyreduce: case 30: -/* Line 1455 of yacc.c */ -#line 353 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 361 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) ^ (yyvsp[(3) - (3)].ival); ;} @@ -2085,8 +2101,8 @@ yyreduce: case 31: -/* Line 1455 of yacc.c */ -#line 356 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 364 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) & (yyvsp[(3) - (3)].ival); ;} @@ -2094,8 +2110,8 @@ yyreduce: case 32: -/* Line 1455 of yacc.c */ -#line 359 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 367 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) != (yyvsp[(3) - (3)].ival); ;} @@ -2103,8 +2119,8 @@ yyreduce: case 33: -/* Line 1455 of yacc.c */ -#line 362 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 370 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) == (yyvsp[(3) - (3)].ival); ;} @@ -2112,8 +2128,8 @@ yyreduce: case 34: -/* Line 1455 of yacc.c */ -#line 365 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 373 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) >= (yyvsp[(3) - (3)].ival); ;} @@ -2121,8 +2137,8 @@ yyreduce: case 35: -/* Line 1455 of yacc.c */ -#line 368 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 376 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) <= (yyvsp[(3) - (3)].ival); ;} @@ -2130,8 +2146,8 @@ yyreduce: case 36: -/* Line 1455 of yacc.c */ -#line 371 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 379 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) > (yyvsp[(3) - (3)].ival); ;} @@ -2139,8 +2155,8 @@ yyreduce: case 37: -/* Line 1455 of yacc.c */ -#line 374 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 382 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) < (yyvsp[(3) - (3)].ival); ;} @@ -2148,8 +2164,8 @@ yyreduce: case 38: -/* Line 1455 of yacc.c */ -#line 377 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 385 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) >> (yyvsp[(3) - (3)].ival); ;} @@ -2157,8 +2173,8 @@ yyreduce: case 39: -/* Line 1455 of yacc.c */ -#line 380 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 388 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) << (yyvsp[(3) - (3)].ival); ;} @@ -2166,8 +2182,8 @@ yyreduce: case 40: -/* Line 1455 of yacc.c */ -#line 383 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 391 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) - (yyvsp[(3) - (3)].ival); ;} @@ -2175,8 +2191,8 @@ yyreduce: case 41: -/* Line 1455 of yacc.c */ -#line 386 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 394 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) + (yyvsp[(3) - (3)].ival); ;} @@ -2184,8 +2200,8 @@ yyreduce: case 42: -/* Line 1455 of yacc.c */ -#line 389 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 397 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) % (yyvsp[(3) - (3)].ival); ;} @@ -2193,8 +2209,8 @@ yyreduce: case 43: -/* Line 1455 of yacc.c */ -#line 392 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 400 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) / (yyvsp[(3) - (3)].ival); ;} @@ -2202,8 +2218,8 @@ yyreduce: case 44: -/* Line 1455 of yacc.c */ -#line 395 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 403 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) * (yyvsp[(3) - (3)].ival); ;} @@ -2211,8 +2227,8 @@ yyreduce: case 45: -/* Line 1455 of yacc.c */ -#line 398 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 406 "glcpp/glcpp-parse.y" { (yyval.ival) = ! (yyvsp[(2) - (2)].ival); ;} @@ -2220,8 +2236,8 @@ yyreduce: case 46: -/* Line 1455 of yacc.c */ -#line 401 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 409 "glcpp/glcpp-parse.y" { (yyval.ival) = ~ (yyvsp[(2) - (2)].ival); ;} @@ -2229,8 +2245,8 @@ yyreduce: case 47: -/* Line 1455 of yacc.c */ -#line 404 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 412 "glcpp/glcpp-parse.y" { (yyval.ival) = - (yyvsp[(2) - (2)].ival); ;} @@ -2238,8 +2254,8 @@ yyreduce: case 48: -/* Line 1455 of yacc.c */ -#line 407 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 415 "glcpp/glcpp-parse.y" { (yyval.ival) = + (yyvsp[(2) - (2)].ival); ;} @@ -2247,8 +2263,8 @@ yyreduce: case 49: -/* Line 1455 of yacc.c */ -#line 410 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 418 "glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(2) - (3)].ival); ;} @@ -2256,8 +2272,8 @@ yyreduce: case 50: -/* Line 1455 of yacc.c */ -#line 416 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 424 "glcpp/glcpp-parse.y" { (yyval.string_list) = _string_list_create (parser); _string_list_append_item ((yyval.string_list), (yyvsp[(1) - (1)].str)); @@ -2267,8 +2283,8 @@ yyreduce: case 51: -/* Line 1455 of yacc.c */ -#line 421 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 429 "glcpp/glcpp-parse.y" { (yyval.string_list) = (yyvsp[(1) - (3)].string_list); _string_list_append_item ((yyval.string_list), (yyvsp[(3) - (3)].str)); @@ -2278,15 +2294,15 @@ yyreduce: case 52: -/* Line 1455 of yacc.c */ -#line 429 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 437 "glcpp/glcpp-parse.y" { (yyval.token_list) = NULL; ;} break; case 54: -/* Line 1455 of yacc.c */ -#line 434 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 442 "glcpp/glcpp-parse.y" { yyerror (& (yylsp[(1) - (2)]), parser, "Invalid tokens after #"); ;} @@ -2294,15 +2310,15 @@ yyreduce: case 55: -/* Line 1455 of yacc.c */ -#line 440 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 448 "glcpp/glcpp-parse.y" { (yyval.token_list) = NULL; ;} break; case 58: -/* Line 1455 of yacc.c */ -#line 446 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 454 "glcpp/glcpp-parse.y" { glcpp_warning(&(yylsp[(1) - (1)]), parser, "extra tokens at end of directive"); ;} @@ -2310,8 +2326,8 @@ yyreduce: case 59: -/* Line 1455 of yacc.c */ -#line 453 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 461 "glcpp/glcpp-parse.y" { int v = hash_table_find (parser->defines, (yyvsp[(2) - (2)].str)) ? 1 : 0; (yyval.token) = _token_create_ival (parser, INTEGER, v); @@ -2320,8 +2336,8 @@ yyreduce: case 60: -/* Line 1455 of yacc.c */ -#line 457 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 465 "glcpp/glcpp-parse.y" { int v = hash_table_find (parser->defines, (yyvsp[(3) - (4)].str)) ? 1 : 0; (yyval.token) = _token_create_ival (parser, INTEGER, v); @@ -2330,8 +2346,8 @@ yyreduce: case 62: -/* Line 1455 of yacc.c */ -#line 466 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 474 "glcpp/glcpp-parse.y" { parser->space_tokens = 1; (yyval.token_list) = _token_list_create (parser); @@ -2342,8 +2358,8 @@ yyreduce: case 63: -/* Line 1455 of yacc.c */ -#line 472 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 480 "glcpp/glcpp-parse.y" { (yyval.token_list) = (yyvsp[(1) - (2)].token_list); _token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token)); @@ -2353,8 +2369,8 @@ yyreduce: case 64: -/* Line 1455 of yacc.c */ -#line 480 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 488 "glcpp/glcpp-parse.y" { parser->space_tokens = 1; (yyval.token_list) = _token_list_create (parser); @@ -2365,8 +2381,8 @@ yyreduce: case 65: -/* Line 1455 of yacc.c */ -#line 486 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 494 "glcpp/glcpp-parse.y" { (yyval.token_list) = (yyvsp[(1) - (2)].token_list); _token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token)); @@ -2376,8 +2392,8 @@ yyreduce: case 66: -/* Line 1455 of yacc.c */ -#line 494 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 502 "glcpp/glcpp-parse.y" { (yyval.token) = _token_create_str (parser, IDENTIFIER, (yyvsp[(1) - (1)].str)); (yyval.token)->location = yylloc; @@ -2386,8 +2402,8 @@ yyreduce: case 67: -/* Line 1455 of yacc.c */ -#line 498 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 506 "glcpp/glcpp-parse.y" { (yyval.token) = _token_create_str (parser, INTEGER_STRING, (yyvsp[(1) - (1)].str)); (yyval.token)->location = yylloc; @@ -2396,8 +2412,8 @@ yyreduce: case 68: -/* Line 1455 of yacc.c */ -#line 502 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 510 "glcpp/glcpp-parse.y" { (yyval.token) = _token_create_ival (parser, (yyvsp[(1) - (1)].ival), (yyvsp[(1) - (1)].ival)); (yyval.token)->location = yylloc; @@ -2406,8 +2422,8 @@ yyreduce: case 69: -/* Line 1455 of yacc.c */ -#line 506 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 514 "glcpp/glcpp-parse.y" { (yyval.token) = _token_create_str (parser, OTHER, (yyvsp[(1) - (1)].str)); (yyval.token)->location = yylloc; @@ -2416,8 +2432,8 @@ yyreduce: case 70: -/* Line 1455 of yacc.c */ -#line 510 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 518 "glcpp/glcpp-parse.y" { (yyval.token) = _token_create_ival (parser, SPACE, SPACE); (yyval.token)->location = yylloc; @@ -2426,225 +2442,225 @@ yyreduce: case 71: -/* Line 1455 of yacc.c */ -#line 517 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 525 "glcpp/glcpp-parse.y" { (yyval.ival) = '['; ;} break; case 72: -/* Line 1455 of yacc.c */ -#line 518 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 526 "glcpp/glcpp-parse.y" { (yyval.ival) = ']'; ;} break; case 73: -/* Line 1455 of yacc.c */ -#line 519 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 527 "glcpp/glcpp-parse.y" { (yyval.ival) = '('; ;} break; case 74: -/* Line 1455 of yacc.c */ -#line 520 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 528 "glcpp/glcpp-parse.y" { (yyval.ival) = ')'; ;} break; case 75: -/* Line 1455 of yacc.c */ -#line 521 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 529 "glcpp/glcpp-parse.y" { (yyval.ival) = '{'; ;} break; case 76: -/* Line 1455 of yacc.c */ -#line 522 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 530 "glcpp/glcpp-parse.y" { (yyval.ival) = '}'; ;} break; case 77: -/* Line 1455 of yacc.c */ -#line 523 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 531 "glcpp/glcpp-parse.y" { (yyval.ival) = '.'; ;} break; case 78: -/* Line 1455 of yacc.c */ -#line 524 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 532 "glcpp/glcpp-parse.y" { (yyval.ival) = '&'; ;} break; case 79: -/* Line 1455 of yacc.c */ -#line 525 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 533 "glcpp/glcpp-parse.y" { (yyval.ival) = '*'; ;} break; case 80: -/* Line 1455 of yacc.c */ -#line 526 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 534 "glcpp/glcpp-parse.y" { (yyval.ival) = '+'; ;} break; case 81: -/* Line 1455 of yacc.c */ -#line 527 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 535 "glcpp/glcpp-parse.y" { (yyval.ival) = '-'; ;} break; case 82: -/* Line 1455 of yacc.c */ -#line 528 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 536 "glcpp/glcpp-parse.y" { (yyval.ival) = '~'; ;} break; case 83: -/* Line 1455 of yacc.c */ -#line 529 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 537 "glcpp/glcpp-parse.y" { (yyval.ival) = '!'; ;} break; case 84: -/* Line 1455 of yacc.c */ -#line 530 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 538 "glcpp/glcpp-parse.y" { (yyval.ival) = '/'; ;} break; case 85: -/* Line 1455 of yacc.c */ -#line 531 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 539 "glcpp/glcpp-parse.y" { (yyval.ival) = '%'; ;} break; case 86: -/* Line 1455 of yacc.c */ -#line 532 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 540 "glcpp/glcpp-parse.y" { (yyval.ival) = LEFT_SHIFT; ;} break; case 87: -/* Line 1455 of yacc.c */ -#line 533 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 541 "glcpp/glcpp-parse.y" { (yyval.ival) = RIGHT_SHIFT; ;} break; case 88: -/* Line 1455 of yacc.c */ -#line 534 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 542 "glcpp/glcpp-parse.y" { (yyval.ival) = '<'; ;} break; case 89: -/* Line 1455 of yacc.c */ -#line 535 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 543 "glcpp/glcpp-parse.y" { (yyval.ival) = '>'; ;} break; case 90: -/* Line 1455 of yacc.c */ -#line 536 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 544 "glcpp/glcpp-parse.y" { (yyval.ival) = LESS_OR_EQUAL; ;} break; case 91: -/* Line 1455 of yacc.c */ -#line 537 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 545 "glcpp/glcpp-parse.y" { (yyval.ival) = GREATER_OR_EQUAL; ;} break; case 92: -/* Line 1455 of yacc.c */ -#line 538 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 546 "glcpp/glcpp-parse.y" { (yyval.ival) = EQUAL; ;} break; case 93: -/* Line 1455 of yacc.c */ -#line 539 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 547 "glcpp/glcpp-parse.y" { (yyval.ival) = NOT_EQUAL; ;} break; case 94: -/* Line 1455 of yacc.c */ -#line 540 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 548 "glcpp/glcpp-parse.y" { (yyval.ival) = '^'; ;} break; case 95: -/* Line 1455 of yacc.c */ -#line 541 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 549 "glcpp/glcpp-parse.y" { (yyval.ival) = '|'; ;} break; case 96: -/* Line 1455 of yacc.c */ -#line 542 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 550 "glcpp/glcpp-parse.y" { (yyval.ival) = AND; ;} break; case 97: -/* Line 1455 of yacc.c */ -#line 543 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 551 "glcpp/glcpp-parse.y" { (yyval.ival) = OR; ;} break; case 98: -/* Line 1455 of yacc.c */ -#line 544 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 552 "glcpp/glcpp-parse.y" { (yyval.ival) = ';'; ;} break; case 99: -/* Line 1455 of yacc.c */ -#line 545 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 553 "glcpp/glcpp-parse.y" { (yyval.ival) = ','; ;} break; case 100: -/* Line 1455 of yacc.c */ -#line 546 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 554 "glcpp/glcpp-parse.y" { (yyval.ival) = '='; ;} break; case 101: -/* Line 1455 of yacc.c */ -#line 547 "glcpp/glcpp-parse.y" +/* Line 1464 of yacc.c */ +#line 555 "glcpp/glcpp-parse.y" { (yyval.ival) = PASTE; ;} break; -/* Line 1455 of yacc.c */ -#line 2648 "glcpp/glcpp-parse.c" +/* Line 1464 of yacc.c */ +#line 2664 "glcpp/glcpp-parse.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2716,7 +2732,7 @@ yyerrlab: #endif } - yyerror_range[0] = yylloc; + yyerror_range[1] = yylloc; if (yyerrstatus == 3) { @@ -2753,7 +2769,7 @@ yyerrorlab: if (/*CONSTCOND*/ 0) goto yyerrorlab; - yyerror_range[0] = yylsp[1-yylen]; + yyerror_range[1] = yylsp[1-yylen]; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); @@ -2787,7 +2803,7 @@ yyerrlab1: if (yyssp == yyss) YYABORT; - yyerror_range[0] = *yylsp; + yyerror_range[1] = *yylsp; yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp, parser); YYPOPSTACK (1); @@ -2797,10 +2813,10 @@ yyerrlab1: *++yyvsp = yylval; - yyerror_range[1] = yylloc; + yyerror_range[2] = yylloc; /* Using YYLLOC is tempting, but would change the location of the lookahead. YYLOC is available though. */ - YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); + YYLLOC_DEFAULT (yyloc, yyerror_range, 2); *++yylsp = yyloc; /* Shift the error token. */ @@ -2862,8 +2878,8 @@ yyreturn: -/* Line 1675 of yacc.c */ -#line 550 "glcpp/glcpp-parse.y" +/* Line 1684 of yacc.c */ +#line 558 "glcpp/glcpp-parse.y" string_list_t * diff --git a/src/glsl/glcpp/glcpp-parse.h b/src/glsl/glcpp/glcpp-parse.h index 50758930e9..40556854f3 100644 --- a/src/glsl/glcpp/glcpp-parse.h +++ b/src/glsl/glcpp/glcpp-parse.h @@ -1,10 +1,9 @@ - -/* A Bison parser, made by GNU Bison 2.4.1. */ +/* A Bison parser, made by GNU Bison 2.4.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y index b31a18f87d..8475e08f00 100644 --- a/src/glsl/glcpp/glcpp-parse.y +++ b/src/glsl/glcpp/glcpp-parse.y @@ -320,6 +320,14 @@ control_line: if ($2 == 100) add_builtin_define (parser, "GL_ES", 1); + /* Currently, all ES2 implementations support highp in the + * fragment shader, so we always define this macro in ES2. + * If we ever get a driver that doesn't support highp, we'll + * need to add a flag to the gl_context and check that here. + */ + if ($2 >= 130 || $2 == 100) + add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1); + glcpp_printf(parser->output, "#version %" PRIiMAX, $2); } | HASH NEWLINE diff --git a/src/glsl/glsl_lexer.cpp b/src/glsl/glsl_lexer.cpp index d3bc3aa9f1..e3d0a3cfc9 100644 --- a/src/glsl/glsl_lexer.cpp +++ b/src/glsl/glsl_lexer.cpp @@ -54,6 +54,7 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -84,8 +85,6 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#endif /* ! C99 */ - #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -159,15 +158,7 @@ typedef void* yyscan_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -358,8 +349,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 189 -#define YY_END_OF_BUFFER 190 +#define YY_NUM_RULES 209 +#define YY_END_OF_BUFFER 210 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -367,87 +358,98 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[716] = +static yyconst flex_int16_t yy_accept[813] = { 0, - 0, 0, 15, 15, 0, 0, 190, 188, 1, 20, - 188, 188, 188, 188, 188, 188, 188, 188, 102, 100, - 188, 188, 188, 187, 188, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 188, 1, 188, 189, 15, - 19, 189, 18, 16, 17, 13, 12, 1, 84, 93, - 85, 96, 90, 79, 92, 80, 99, 104, 91, 105, - 102, 0, 0, 107, 0, 100, 88, 81, 83, 82, - 89, 187, 97, 87, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 29, 187, 187, 187, + 0, 0, 15, 15, 0, 0, 210, 208, 1, 20, + 208, 208, 208, 208, 208, 208, 208, 208, 119, 117, + 208, 208, 208, 207, 208, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 208, 1, 208, 209, 15, + 19, 209, 18, 16, 17, 13, 12, 1, 101, 110, + 102, 113, 107, 96, 109, 97, 116, 121, 108, 122, + 119, 0, 0, 124, 119, 0, 117, 117, 105, 98, + 100, 99, 106, 207, 114, 104, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 29, 207, + + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 33, 207, 207, 60, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 115, + 103, 1, 0, 0, 2, 0, 0, 0, 0, 15, + 14, 18, 17, 0, 121, 120, 0, 122, 0, 123, + 118, 111, 112, 207, 127, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 32, 207, 207, 207, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 33, 187, 187, 60, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 98, 86, 1, 0, - 0, 2, 0, 0, 0, 0, 15, 14, 18, 17, - 0, 104, 103, 0, 105, 0, 106, 101, 94, 95, - 187, 110, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 32, 187, 187, 187, 187, 187, 187, + 207, 207, 207, 207, 207, 207, 207, 25, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 61, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 0, 0, 0, 0, 14, 0, 121, 0, 120, 0, + 122, 123, 118, 207, 207, 23, 207, 207, 174, 167, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 31, + 130, 207, 207, 207, 207, 67, 207, 207, 135, 149, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 187, 187, 187, 187, 25, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 61, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 0, 0, 0, 0, 14, - 0, 104, 0, 103, 0, 105, 106, 187, 187, 23, - 187, 187, 150, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 31, 113, 187, 187, 187, 187, 67, 187, - 187, 118, 132, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 129, 153, 48, 49, 50, 187, + 207, 207, 146, 170, 48, 49, 50, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 133, 125, 207, + 207, 26, 207, 207, 207, 207, 207, 207, 207, 45, + 46, 47, 94, 207, 207, 0, 0, 0, 0, 0, + 120, 207, 207, 27, 36, 37, 38, 207, 128, 207, + 22, 207, 207, 207, 207, 157, 158, 159, 207, 126, + 207, 150, 24, 160, 161, 162, 172, 154, 155, 156, + 207, 207, 207, 62, 152, 207, 207, 207, 39, 40, + 41, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 116, - 108, 187, 187, 26, 187, 187, 187, 187, 187, 187, - 45, 46, 47, 77, 187, 187, 0, 0, 0, 0, - 0, 103, 187, 187, 27, 36, 37, 38, 187, 111, - 187, 22, 187, 187, 187, 187, 140, 141, 142, 187, - 109, 187, 133, 24, 143, 144, 145, 155, 137, 138, - 139, 187, 187, 187, 62, 135, 187, 187, 39, 40, - 41, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 130, 187, 187, + 207, 207, 207, 207, 207, 207, 207, 147, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 129, 207, + 207, 169, 42, 43, 44, 207, 207, 30, 0, 0, + 0, 0, 177, 207, 207, 175, 207, 207, 207, 148, + 143, 180, 207, 207, 207, 207, 207, 207, 138, 207, + 207, 207, 95, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 207, 207, 207, 207, 153, 134, 207, 207, + 141, 35, 207, 207, 166, 68, 142, 93, 178, 136, + 207, 207, 207, 207, 207, 207, 207, 207, 0, 0, + 0, 0, 207, 207, 207, 137, 34, 207, 207, 207, - 187, 187, 187, 187, 187, 187, 187, 187, 112, 187, - 152, 42, 43, 44, 187, 187, 30, 0, 0, 0, - 0, 159, 187, 187, 157, 187, 187, 187, 131, 126, - 162, 187, 187, 187, 187, 187, 187, 121, 187, 187, - 78, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 187, 187, 187, 187, 136, 117, 187, 187, 124, 35, - 187, 187, 149, 68, 125, 76, 160, 119, 187, 187, - 187, 187, 187, 187, 187, 0, 0, 0, 0, 187, - 187, 187, 120, 34, 187, 187, 187, 187, 187, 187, - 163, 164, 165, 187, 187, 187, 187, 154, 187, 187, + 207, 207, 207, 181, 182, 183, 207, 207, 207, 207, + 207, 171, 207, 207, 207, 207, 207, 207, 207, 207, + 131, 207, 207, 207, 207, 207, 63, 207, 207, 64, + 207, 0, 0, 0, 0, 0, 207, 65, 28, 144, + 185, 186, 187, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 139, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 132, 189, 190, 191, 207, + 207, 151, 207, 140, 0, 0, 6, 0, 0, 0, + 11, 3, 21, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 184, 145, 66, 207, 207, 207, 207, 168, - 187, 187, 187, 187, 187, 187, 114, 187, 187, 187, - 187, 187, 63, 187, 64, 187, 0, 0, 0, 0, - 0, 187, 65, 28, 127, 167, 168, 169, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 122, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 115, - 171, 172, 173, 187, 187, 134, 123, 0, 0, 6, - 0, 0, 0, 11, 3, 21, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 166, 128, 66, 151, 187, - 158, 156, 186, 70, 71, 72, 187, 187, 187, 187, - 187, 187, 0, 0, 0, 0, 0, 0, 187, 187, + 207, 176, 173, 206, 70, 71, 72, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 0, 0, 0, + 0, 0, 0, 207, 207, 207, 188, 207, 207, 207, + 207, 207, 81, 82, 83, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 192, 87, + 88, 89, 207, 4, 0, 5, 0, 0, 0, 0, + 0, 207, 207, 207, 207, 207, 207, 207, 203, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 73, 207, 207, 207, 207, 207, 207, 0, 0, 0, + 207, 207, 204, 193, 207, 194, 207, 207, 207, 84, - 187, 170, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 174, 4, 0, - 5, 0, 0, 0, 0, 0, 187, 187, 187, 187, - 187, 187, 187, 183, 187, 187, 187, 187, 187, 187, - 73, 187, 187, 187, 0, 0, 0, 187, 187, 184, - 175, 187, 176, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 185, 0, 0, 177, 178, 181, 182, 69, - 187, 146, 187, 147, 161, 179, 180, 0, 0, 187, - 187, 187, 0, 0, 0, 74, 187, 75, 0, 0, - 0, 187, 0, 0, 0, 187, 0, 0, 7, 0, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 205, 207, 207, 90, 0, 0, 195, 196, 207, + 199, 207, 200, 207, 207, 69, 207, 207, 207, 163, + 207, 164, 179, 207, 197, 198, 207, 207, 0, 0, + 207, 207, 207, 207, 74, 207, 75, 207, 207, 207, + 207, 207, 0, 0, 0, 207, 207, 85, 86, 207, + 76, 207, 207, 77, 207, 91, 92, 0, 0, 0, + 207, 207, 207, 207, 207, 207, 0, 0, 0, 207, + 207, 207, 207, 207, 78, 0, 0, 7, 0, 0, + 201, 202, 207, 207, 207, 0, 8, 0, 0, 207, - 0, 187, 0, 8, 0, 0, 148, 0, 0, 0, - 0, 9, 0, 10, 0 + 207, 165, 0, 0, 79, 80, 0, 0, 9, 0, + 10, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -460,12 +462,12 @@ static yyconst flex_int32_t yy_ec[256] = 19, 20, 21, 21, 21, 22, 22, 23, 1, 24, 25, 26, 1, 1, 27, 28, 29, 30, 31, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 34, 35, 33, 33, 33, 33, 36, 33, 33, - 1, 1, 1, 37, 38, 1, 39, 40, 41, 42, + 33, 34, 35, 33, 36, 33, 33, 37, 33, 33, + 1, 1, 1, 38, 39, 1, 40, 41, 42, 43, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 33, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 1, 64, 1, 1, 1, 1, 1, 1, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 33, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 1, 65, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -482,317 +484,350 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[65] = +static yyconst flex_int32_t yy_meta[66] = { 0, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 5, 1, 1, 1, 1, 6, 6, 6, 6, - 5, 5, 7, 7, 7, 8, 1, 7, 6, 6, - 6, 6, 5, 5, 7, 7, 7, 7, 7, 7, + 5, 5, 7, 7, 7, 7, 8, 1, 7, 6, + 6, 6, 6, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 8, 7, 7, 1 + 7, 8, 7, 7, 1 } ; -static yyconst flex_int16_t yy_base[727] = +static yyconst flex_int16_t yy_base[824] = { 0, - 0, 63, 69, 0, 1083, 1082, 1084, 1087, 64, 1087, - 1058, 1057, 126, 1056, 123, 124, 122, 1055, 138, 186, - 121, 1054, 136, 0, 128, 122, 113, 134, 133, 133, - 162, 1025, 151, 172, 97, 128, 136, 1019, 156, 179, - 187, 193, 190, 211, 1030, 163, 254, 238, 1087, 189, - 1087, 1060, 249, 1087, 0, 1087, 1087, 249, 1087, 1087, - 1087, 1087, 1087, 1087, 1087, 1087, 1087, 230, 1087, 246, - 221, 284, 301, 1087, 0, 0, 1049, 1087, 1087, 1087, - 1048, 0, 1087, 1087, 1015, 1020, 1013, 1016, 1025, 1024, - 1010, 1013, 1025, 145, 1019, 1006, 1003, 1017, 1003, 1000, + 0, 64, 70, 0, 1185, 1184, 1186, 1189, 65, 1189, + 1160, 1159, 128, 1158, 125, 126, 124, 1157, 140, 189, + 123, 1156, 138, 0, 127, 124, 113, 135, 144, 161, + 176, 1126, 130, 187, 140, 143, 161, 1120, 182, 174, + 202, 199, 211, 212, 1131, 130, 263, 255, 1189, 189, + 1189, 1162, 256, 1189, 0, 1189, 1189, 215, 1189, 1189, + 1189, 1189, 1189, 1189, 1189, 1189, 1189, 248, 1189, 250, + 112, 302, 319, 1189, 1189, 0, 0, 1189, 1151, 1189, + 1189, 1189, 1150, 0, 1189, 1189, 1116, 1121, 1114, 1117, + 1126, 1125, 1111, 1114, 1126, 144, 1120, 1107, 1104, 1118, - 1000, 1006, 202, 233, 1000, 1011, 996, 1002, 1006, 1007, - 0, 998, 1009, 226, 1004, 984, 168, 988, 1002, 992, - 237, 985, 252, 998, 1000, 982, 978, 986, 983, 972, - 981, 204, 979, 985, 980, 983, 971, 974, 243, 240, - 980, 983, 970, 983, 261, 976, 1087, 1087, 327, 307, - 322, 1087, 961, 974, 965, 976, 328, 0, 318, 0, - 366, 1087, 310, 377, 1087, 327, 384, 0, 1087, 1087, - 971, 0, 962, 966, 976, 973, 956, 955, 955, 959, - 295, 970, 967, 967, 965, 962, 953, 960, 946, 944, - 957, 942, 959, 0, 956, 943, 951, 948, 952, 953, + 1104, 1101, 1101, 1107, 175, 191, 1101, 1112, 1097, 1103, + 1107, 1108, 0, 1099, 1110, 247, 1109, 1104, 1084, 230, + 1088, 1102, 1092, 241, 1085, 228, 1098, 1100, 1082, 1078, + 1086, 1083, 1072, 1081, 173, 1079, 1085, 1080, 1083, 1071, + 1074, 233, 240, 260, 1084, 1071, 1084, 239, 1077, 1189, + 1189, 307, 301, 323, 1189, 1062, 1075, 1066, 1077, 249, + 0, 368, 0, 379, 1189, 298, 390, 1189, 397, 404, + 291, 1189, 1189, 1072, 0, 1063, 1067, 1077, 1074, 270, + 1057, 1057, 1061, 291, 1072, 1069, 1069, 1067, 1064, 1055, + 1062, 1048, 1046, 1059, 1044, 1061, 0, 1058, 1045, 1053, - 946, 943, 931, 930, 944, 947, 944, 931, 938, 928, - 340, 934, 937, 927, 935, 923, 927, 918, 933, 923, - 914, 933, 916, 914, 925, 914, 909, 907, 921, 906, - 908, 905, 917, 916, 919, 900, 311, 909, 903, 913, - 891, 349, 910, 912, 900, 892, 896, 908, 891, 0, - 391, 401, 418, 1087, 430, 437, 1087, 886, 897, 0, - 894, 355, 0, 887, 885, 887, 882, 891, 879, 897, - 885, 406, 0, 0, 879, 890, 889, 889, 0, 873, - 423, 0, 0, 875, 442, 883, 884, 874, 868, 867, - 868, 867, 445, 863, 0, 0, 859, 858, 857, 859, + 1050, 1054, 1055, 1048, 1045, 1033, 1032, 1046, 1049, 1036, + 1045, 1032, 1039, 1029, 335, 1035, 1038, 1028, 1036, 1024, + 1028, 1019, 1034, 1024, 1015, 1034, 1017, 1015, 1026, 1015, + 1010, 1008, 1022, 1007, 1009, 1006, 1018, 1017, 1020, 1001, + 306, 1010, 1005, 1003, 1013, 991, 339, 1010, 1012, 1000, + 992, 996, 1008, 991, 0, 411, 421, 438, 1189, 451, + 458, 1189, 1189, 986, 997, 0, 994, 344, 0, 0, + 987, 985, 987, 982, 991, 979, 997, 985, 350, 0, + 0, 979, 990, 989, 989, 0, 973, 353, 0, 0, + 975, 357, 983, 984, 974, 968, 967, 968, 967, 967, - 860, 865, 859, 855, 869, 864, 863, 862, 853, 856, - 856, 848, 851, 846, 855, 860, 845, 858, 848, 0, - 0, 855, 851, 0, 842, 842, 848, 847, 448, 844, - 0, 0, 0, 0, 833, 846, 845, 844, 841, 829, - 454, 466, 841, 843, 0, 0, 0, 0, 829, 0, - 829, 0, 828, 829, 823, 834, 0, 0, 0, 824, - 0, 820, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 831, 461, 830, 0, 0, 828, 824, 0, 0, - 0, 813, 473, 476, 481, 818, 814, 820, 810, 808, - 822, 806, 806, 820, 808, 820, 815, 0, 813, 810, + 361, 962, 0, 0, 958, 957, 956, 958, 959, 964, + 958, 954, 968, 963, 962, 961, 952, 955, 955, 947, + 950, 945, 954, 959, 944, 957, 947, 0, 0, 954, + 950, 0, 941, 941, 947, 937, 945, 426, 942, 0, + 0, 0, 0, 931, 944, 943, 942, 939, 927, 465, + 475, 939, 941, 0, 0, 0, 0, 927, 0, 927, + 0, 926, 927, 921, 932, 0, 0, 0, 922, 0, + 918, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 929, 481, 928, 0, 0, 926, 922, 918, 0, 0, + 0, 910, 443, 486, 493, 915, 911, 917, 907, 905, - 814, 797, 799, 806, 812, 807, 806, 793, 0, 795, - 0, 0, 0, 0, 794, 798, 0, 792, 841, 791, - 794, 0, 782, 792, 0, 780, 780, 794, 0, 796, - 0, 485, 804, 803, 802, 773, 772, 0, 790, 789, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 773, 787, 773, 770, 0, 0, 776, 775, 0, 0, - 773, 765, 0, 0, 0, 0, 0, 0, 762, 774, - 488, 766, 773, 770, 764, 757, 506, 773, 758, 753, - 767, 765, 0, 0, 757, 776, 775, 774, 745, 744, - 335, 336, 0, 757, 760, 758, 746, 0, 756, 753, + 919, 903, 903, 917, 905, 917, 912, 0, 910, 907, + 911, 894, 896, 903, 909, 904, 903, 890, 0, 892, + 893, 0, 0, 0, 0, 890, 894, 0, 888, 938, + 887, 890, 0, 878, 888, 0, 876, 876, 890, 0, + 892, 0, 497, 901, 900, 899, 869, 868, 0, 886, + 885, 880, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 868, 882, 868, 865, 0, 0, 871, 870, + 0, 0, 868, 860, 0, 0, 0, 0, 0, 0, + 857, 869, 500, 861, 868, 867, 864, 858, 851, 519, + 867, 852, 847, 861, 859, 0, 0, 851, 871, 870, - 752, 741, 740, 739, 501, 748, 0, 760, 759, 758, - 729, 728, 0, 743, 0, 741, 736, 509, 530, 780, - 729, 737, 0, 0, 0, 752, 751, 0, 733, 736, - 720, 728, 718, 726, 727, 727, 726, 711, 724, 0, - 725, 713, 712, 708, 732, 731, 730, 701, 700, 0, - 730, 729, 0, 711, 714, 0, 0, 700, 537, 1087, - 558, 0, 564, 560, 1087, 0, 697, 696, 706, 706, - 693, 708, 691, 706, 701, 0, 0, 0, 0, 686, - 0, 0, 0, 707, 357, 707, 696, 699, 683, 682, - 692, 692, 682, 532, 587, 412, 690, 678, 676, 675, + 869, 839, 838, 495, 496, 0, 851, 854, 852, 840, + 836, 0, 849, 846, 845, 834, 833, 832, 515, 841, + 0, 854, 853, 852, 822, 821, 0, 836, 822, 0, + 833, 828, 543, 545, 873, 821, 829, 0, 0, 0, + 845, 844, 0, 825, 828, 812, 820, 810, 818, 819, + 819, 818, 803, 539, 816, 0, 817, 805, 804, 800, + 825, 824, 823, 793, 792, 0, 823, 822, 0, 803, + 806, 0, 552, 0, 792, 557, 1189, 580, 0, 590, + 499, 1189, 0, 789, 788, 798, 798, 785, 800, 783, + 798, 793, 0, 0, 0, 806, 805, 804, 774, 0, - 686, 0, 689, 685, 687, 683, 669, 676, 676, 678, - 674, 676, 674, 674, 661, 660, 671, 0, 1087, 534, - 1087, 598, 0, 608, 673, 655, 672, 671, 654, 646, - 654, 644, 652, 0, 645, 664, 661, 658, 655, 652, - 0, 648, 647, 630, 539, 618, 600, 584, 583, 0, - 0, 579, 0, 578, 594, 580, 564, 527, 506, 489, - 453, 447, 0, 452, 426, 0, 0, 0, 0, 0, - 391, 397, 376, 0, 0, 0, 0, 529, 380, 320, - 331, 296, 562, 273, 249, 0, 260, 0, 519, 521, - 192, 183, 169, 585, 589, 111, 586, 610, 1087, 590, + 774, 0, 0, 0, 559, 568, 797, 785, 788, 772, + 771, 781, 781, 794, 793, 792, 762, 767, 552, 613, + 363, 775, 763, 761, 760, 771, 0, 774, 770, 772, + 768, 754, 782, 781, 0, 766, 758, 749, 757, 747, + 758, 754, 756, 754, 754, 741, 740, 751, 0, 767, + 766, 0, 751, 1189, 391, 1189, 620, 0, 640, 750, + 732, 749, 748, 731, 723, 731, 721, 729, 0, 726, + 725, 736, 719, 722, 737, 720, 733, 734, 731, 728, + 736, 730, 729, 712, 711, 710, 721, 402, 705, 715, + 699, 698, 0, 725, 698, 723, 696, 700, 699, 0, - 541, 87, 621, 1087, 595, 588, 0, 23, 631, 632, - 633, 1087, 634, 1087, 1087, 648, 653, 658, 663, 665, - 667, 673, 680, 685, 690, 695 + 710, 713, 709, 711, 688, 702, 686, 680, 688, 671, + 662, 0, 640, 639, 0, 648, 641, 0, 0, 645, + 0, 644, 0, 650, 649, 0, 625, 633, 623, 650, + 630, 0, 0, 643, 0, 0, 642, 641, 582, 632, + 639, 638, 614, 613, 635, 608, 633, 607, 590, 607, + 586, 585, 611, 380, 526, 545, 544, 0, 0, 538, + 0, 504, 510, 0, 495, 0, 0, 550, 572, 483, + 470, 454, 462, 449, 445, 404, 419, 616, 619, 391, + 387, 404, 392, 290, 0, 617, 642, 1189, 644, 570, + 0, 0, 263, 258, 139, 645, 1189, 643, 618, 107, + + 77, 0, 23, 662, 0, 0, 663, 664, 1189, 665, + 1189, 1189, 697, 702, 707, 712, 714, 716, 722, 729, + 734, 739, 744 } ; -static yyconst flex_int16_t yy_def[727] = +static yyconst flex_int16_t yy_def[824] = { 0, - 715, 1, 715, 3, 716, 716, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715, 715, 715, 717, 715, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 718, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 719, 715, 720, - 19, 715, 715, 715, 721, 20, 715, 715, 715, 715, - 715, 717, 715, 715, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, + 812, 1, 812, 3, 813, 813, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 814, 812, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 815, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 816, 812, 817, + 19, 812, 812, 812, 812, 818, 20, 812, 812, 812, + 812, 812, 812, 814, 812, 812, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 819, 812, 815, 812, 812, 817, 812, 812, 812, 812, + 818, 812, 812, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 722, 715, 718, - 715, 715, 720, 715, 715, 715, 715, 721, 715, 715, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 812, 812, 812, 812, 819, 812, 812, 812, 812, 812, + 812, 812, 812, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 715, 715, 715, 715, 722, - 715, 715, 715, 715, 715, 715, 715, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 812, 812, 812, 812, 812, + 812, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 715, 715, 715, 715, - 715, 715, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 812, 812, + 812, 812, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 812, 812, + 812, 812, 814, 814, 814, 814, 814, 814, 814, 814, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 715, 715, 715, - 715, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 715, 715, 715, 715, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 812, 820, 812, 812, 812, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 812, 812, 812, 812, 821, 812, + 812, 812, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 715, 723, 715, 715, - 715, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 715, 715, 715, - 715, 724, 715, 715, 715, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 715, 725, 715, 724, 715, 715, 717, 717, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 812, 822, 812, + 821, 812, 812, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 812, 812, 812, 812, 823, 812, 812, + 812, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 823, 812, 812, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 715, 715, - 715, 715, 726, 715, 715, 715, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 726, 715, 715, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, - 717, 717, 717, 715, 715, 717, 717, 717, 717, 717, - 717, 717, 717, 717, 717, 717, 717, 715, 715, 717, - 717, 717, 715, 715, 715, 717, 717, 717, 715, 715, - 715, 717, 715, 715, 715, 717, 715, 715, 715, 715, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 812, 812, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 814, 812, 812, + 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 812, 812, 812, 814, 814, 814, 814, 814, + 814, 814, 814, 814, 814, 814, 814, 812, 812, 812, + 814, 814, 814, 814, 814, 814, 812, 812, 812, 814, + 814, 814, 814, 814, 814, 812, 812, 812, 812, 812, + 814, 814, 814, 814, 814, 812, 812, 812, 812, 814, - 715, 717, 715, 715, 715, 715, 717, 715, 715, 715, - 715, 715, 715, 715, 0, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715 + 814, 814, 812, 812, 814, 814, 812, 812, 812, 812, + 812, 0, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812 } ; -static yyconst flex_int16_t yy_nxt[1152] = +static yyconst flex_int16_t yy_nxt[1255] = { 0, 8, 9, 10, 9, 11, 8, 12, 13, 8, 8, 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 8, 21, 22, 23, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 25, 24, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 24, 24, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 24, 24, 24, 46, 47, 58, 710, 58, 48, 49, - 50, 51, 50, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 52, 49, 53, 53, 53, 53, 53, - 53, 54, 49, 49, 49, 55, 55, 55, 55, 55, + 24, 24, 24, 24, 24, 24, 24, 25, 24, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 24, 24, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 24, 24, 24, 46, 47, 58, 807, 58, 48, + 49, 50, 51, 50, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 52, 49, 53, 53, 53, 53, + 53, 53, 54, 49, 49, 49, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 49, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 49, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 49, 61, 64, 116, 66, 68, 68, 68, - 68, 68, 68, 68, 77, 78, 707, 65, 67, 117, - 62, 70, 83, 71, 71, 71, 71, 71, 71, 72, - 80, 81, 85, 702, 84, 88, 118, 89, 73, 74, - 119, 90, 91, 75, 120, 95, 92, 86, 87, 96, - 73, 74, 99, 93, 100, 97, 94, 147, 121, 108, - 157, 98, 157, 101, 123, 180, 181, 109, 75, 70, + 55, 55, 55, 55, 49, 61, 64, 806, 66, 68, + 68, 68, 68, 68, 68, 68, 79, 80, 812, 65, + 67, 85, 62, 70, 150, 71, 71, 71, 71, 71, + 71, 72, 82, 83, 86, 87, 90, 805, 91, 110, + 73, 74, 92, 812, 93, 75, 76, 111, 94, 119, + 88, 89, 121, 73, 74, 95, 122, 97, 96, 112, + 160, 98, 160, 120, 151, 183, 184, 99, 75, 802, - 102, 76, 76, 76, 76, 76, 76, 76, 103, 110, - 124, 104, 697, 125, 105, 111, 73, 74, 112, 209, - 106, 126, 113, 114, 696, 128, 148, 210, 73, 74, - 115, 127, 129, 130, 695, 135, 139, 131, 136, 151, - 152, 140, 227, 132, 133, 141, 134, 137, 142, 143, - 58, 190, 58, 144, 138, 149, 715, 58, 228, 150, - 161, 162, 191, 145, 159, 159, 159, 159, 159, 159, - 159, 192, 161, 162, 689, 202, 164, 165, 203, 204, - 153, 715, 205, 214, 206, 193, 237, 154, 164, 165, - 215, 155, 217, 235, 236, 238, 156, 70, 692, 72, + 123, 76, 70, 100, 77, 77, 77, 77, 77, 77, + 77, 101, 231, 102, 124, 104, 58, 129, 58, 73, + 74, 126, 103, 105, 78, 193, 106, 130, 232, 107, + 195, 113, 73, 74, 114, 108, 194, 127, 115, 116, + 128, 131, 138, 117, 196, 139, 118, 78, 132, 133, + 160, 146, 160, 134, 140, 147, 154, 155, 142, 135, + 136, 141, 137, 143, 152, 148, 58, 144, 153, 221, + 145, 162, 162, 162, 162, 162, 162, 162, 164, 165, + 167, 168, 213, 222, 239, 240, 248, 241, 218, 249, + 214, 164, 165, 167, 168, 219, 242, 205, 156, 243, - 72, 72, 72, 72, 72, 72, 218, 243, 151, 152, - 244, 691, 166, 166, 73, 74, 167, 167, 167, 167, - 167, 167, 167, 151, 152, 690, 73, 74, 149, 157, - 58, 157, 150, 159, 159, 159, 159, 159, 159, 159, - 253, 254, 167, 167, 167, 167, 167, 167, 167, 153, - 267, 268, 253, 254, 325, 688, 154, 297, 298, 299, - 155, 531, 533, 326, 153, 156, 331, 332, 333, 532, - 534, 154, 346, 347, 348, 155, 687, 251, 251, 686, - 156, 252, 252, 252, 252, 252, 252, 252, 255, 255, - 610, 611, 256, 256, 256, 256, 256, 256, 256, 167, + 206, 207, 154, 155, 208, 157, 209, 244, 152, 158, + 58, 801, 153, 269, 159, 70, 800, 72, 72, 72, + 72, 72, 72, 72, 154, 155, 263, 270, 258, 259, + 169, 169, 73, 74, 170, 170, 170, 170, 170, 170, + 170, 258, 259, 795, 156, 73, 74, 274, 275, 263, + 333, 157, 305, 306, 307, 158, 340, 341, 342, 334, + 159, 355, 356, 357, 576, 577, 156, 366, 367, 368, + 374, 375, 376, 157, 378, 379, 380, 158, 389, 390, + 391, 768, 159, 162, 162, 162, 162, 162, 162, 162, + 256, 256, 655, 656, 257, 257, 257, 257, 257, 257, - 167, 167, 167, 167, 167, 167, 252, 252, 252, 252, - 252, 252, 252, 559, 560, 257, 252, 252, 252, 252, - 252, 252, 252, 357, 358, 359, 685, 257, 682, 341, - 341, 681, 162, 342, 342, 342, 342, 342, 342, 342, - 365, 366, 367, 680, 162, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 369, - 370, 371, 379, 380, 381, 412, 413, 414, 165, 342, - 342, 342, 342, 342, 342, 342, 679, 433, 434, 435, - 165, 342, 342, 342, 342, 342, 342, 342, 436, 437, - 442, 443, 444, 445, 446, 447, 678, 254, 448, 449, + 257, 260, 260, 655, 656, 261, 261, 261, 261, 261, + 261, 261, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 257, 257, 257, 257, + 257, 257, 257, 769, 794, 262, 257, 257, 257, 257, + 257, 257, 257, 423, 424, 425, 793, 792, 262, 350, + 350, 791, 165, 351, 351, 351, 351, 351, 351, 351, + 454, 455, 456, 786, 785, 165, 261, 261, 261, 261, + 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, + 351, 351, 351, 351, 351, 351, 351, 784, 783, 168, + 351, 351, 351, 351, 351, 351, 351, 444, 445, 446, - 450, 486, 487, 488, 508, 509, 510, 477, 677, 254, - 559, 560, 489, 490, 676, 511, 512, 545, 546, 547, - 689, 518, 519, 519, 519, 519, 519, 519, 548, 549, - 683, 559, 560, 620, 621, 620, 621, 684, 559, 560, - 620, 621, 705, 675, 562, 563, 563, 563, 563, 563, - 563, 563, 594, 595, 595, 595, 595, 595, 595, 559, - 560, 564, 674, 683, 693, 559, 560, 623, 673, 562, - 684, 690, 694, 561, 561, 561, 561, 561, 561, 563, - 563, 563, 563, 563, 563, 563, 698, 703, 620, 621, - 700, 700, 623, 706, 699, 704, 705, 701, 701, 620, + 581, 782, 168, 457, 458, 459, 259, 781, 447, 448, + 460, 461, 462, 499, 500, 501, 522, 523, 524, 259, + 490, 546, 548, 780, 502, 503, 779, 525, 526, 547, + 549, 561, 562, 563, 533, 534, 534, 534, 534, 534, + 534, 622, 564, 565, 576, 577, 576, 577, 776, 775, + 774, 768, 623, 655, 656, 596, 597, 598, 576, 577, + 580, 580, 580, 580, 580, 580, 580, 599, 614, 615, + 616, 798, 619, 620, 620, 620, 620, 620, 620, 579, + 617, 576, 577, 753, 773, 638, 772, 771, 658, 770, + 754, 576, 577, 639, 640, 578, 578, 578, 578, 578, - 621, 597, 624, 624, 624, 624, 624, 624, 624, 620, - 621, 698, 598, 622, 622, 622, 622, 622, 622, 699, - 672, 671, 703, 624, 624, 624, 624, 624, 624, 624, - 704, 708, 711, 713, 711, 713, 670, 669, 668, 709, - 712, 714, 712, 714, 667, 666, 665, 706, 56, 56, - 56, 56, 56, 56, 56, 56, 82, 82, 82, 82, - 82, 160, 160, 160, 160, 160, 68, 68, 163, 163, - 168, 168, 168, 250, 250, 664, 250, 250, 250, 250, - 250, 561, 561, 561, 663, 662, 661, 561, 596, 596, - 596, 622, 622, 622, 660, 659, 658, 622, 645, 645, + 578, 641, 642, 769, 579, 580, 580, 580, 580, 580, + 580, 580, 753, 658, 655, 656, 777, 787, 796, 754, + 789, 655, 656, 799, 778, 788, 797, 790, 659, 659, + 659, 659, 659, 659, 659, 657, 657, 657, 657, 657, + 657, 655, 656, 787, 798, 789, 796, 767, 766, 765, + 764, 788, 790, 763, 797, 659, 659, 659, 659, 659, + 659, 659, 803, 808, 810, 808, 810, 762, 761, 760, + 804, 809, 811, 809, 811, 759, 758, 757, 756, 755, + 752, 751, 750, 749, 748, 747, 746, 745, 744, 743, + 742, 741, 740, 739, 738, 737, 799, 56, 56, 56, - 645, 657, 656, 655, 654, 653, 652, 651, 650, 649, - 648, 647, 646, 644, 643, 642, 641, 640, 639, 638, - 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, - 627, 626, 625, 619, 618, 617, 616, 615, 614, 613, - 612, 609, 608, 607, 606, 605, 604, 603, 602, 601, - 600, 599, 593, 592, 591, 590, 589, 588, 587, 586, - 585, 584, 583, 582, 581, 580, 579, 578, 577, 576, - 575, 574, 573, 572, 571, 570, 569, 568, 567, 566, - 565, 564, 558, 557, 556, 555, 554, 553, 552, 551, - 550, 544, 543, 542, 541, 540, 539, 538, 537, 536, + 56, 56, 56, 56, 56, 84, 84, 84, 84, 84, + 163, 163, 163, 163, 163, 68, 68, 166, 166, 171, + 171, 171, 255, 255, 736, 255, 255, 255, 255, 255, + 578, 578, 578, 735, 734, 733, 578, 621, 621, 621, + 657, 657, 657, 732, 731, 730, 657, 688, 688, 688, + 729, 728, 727, 726, 725, 724, 723, 722, 721, 720, + 719, 718, 717, 716, 715, 714, 713, 712, 711, 710, + 709, 708, 707, 706, 705, 704, 703, 702, 701, 700, + 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, + 689, 687, 686, 685, 684, 683, 682, 681, 680, 679, - 535, 530, 529, 528, 527, 526, 525, 524, 523, 522, - 521, 520, 517, 516, 515, 514, 513, 507, 506, 505, - 504, 503, 502, 501, 500, 499, 498, 497, 496, 495, - 494, 493, 492, 491, 485, 484, 483, 482, 481, 480, + 678, 677, 676, 675, 674, 673, 672, 671, 670, 669, + 668, 667, 666, 665, 664, 663, 662, 661, 660, 654, + 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, + 643, 637, 636, 635, 634, 633, 632, 631, 630, 629, + 628, 627, 626, 625, 624, 618, 613, 612, 611, 610, + 609, 608, 607, 606, 605, 604, 603, 602, 601, 600, + 595, 594, 593, 592, 591, 590, 589, 588, 587, 586, + 585, 584, 583, 582, 581, 575, 574, 573, 572, 571, + 570, 569, 568, 567, 566, 560, 559, 558, 557, 556, + 555, 554, 553, 552, 551, 550, 545, 544, 543, 542, + + 541, 540, 539, 538, 537, 536, 535, 532, 531, 530, + 529, 528, 527, 521, 520, 519, 518, 517, 516, 515, + 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, + 504, 498, 497, 496, 495, 494, 493, 492, 491, 490, + 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, - 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, - 459, 458, 457, 456, 455, 454, 453, 452, 451, 441, - 440, 439, 438, 432, 431, 430, 429, 428, 427, 426, - 425, 424, 423, 422, 421, 420, 419, 418, 417, 416, - 415, 411, 410, 409, 408, 407, 406, 405, 404, 403, + 469, 468, 467, 466, 465, 464, 463, 453, 452, 451, + 450, 449, 443, 442, 441, 440, 439, 438, 437, 436, + 435, 434, 433, 432, 431, 430, 429, 428, 427, 426, + 422, 421, 420, 419, 418, 417, 416, 415, 414, 413, + 412, 411, 410, 409, 408, 407, 406, 405, 404, 403, 402, 401, 400, 399, 398, 397, 396, 395, 394, 393, - 392, 391, 390, 389, 388, 387, 386, 385, 384, 383, - 382, 378, 377, 376, 375, 374, 373, 372, 368, 364, - 363, 362, 361, 360, 356, 355, 354, 353, 352, 351, - 350, 349, 345, 344, 343, 340, 339, 338, 337, 336, - 335, 334, 330, 329, 328, 327, 324, 323, 322, 321, + 392, 388, 387, 386, 385, 384, 383, 382, 381, 377, + 373, 372, 371, 370, 369, 365, 364, 363, 362, 361, + 360, 359, 358, 354, 353, 352, 349, 348, 347, 346, + 345, 344, 343, 339, 338, 337, 336, 335, 332, 331, + 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, - 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, - 300, 296, 295, 294, 293, 292, 291, 290, 289, 288, - 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, + 310, 309, 308, 304, 303, 302, 301, 300, 299, 298, + 297, 296, 295, 294, 293, 292, 291, 290, 289, 288, - 277, 276, 275, 274, 273, 272, 271, 270, 269, 266, - 265, 264, 263, 262, 261, 260, 259, 258, 249, 248, - 247, 246, 245, 242, 241, 240, 239, 234, 233, 232, - 231, 230, 229, 226, 225, 224, 223, 222, 221, 220, - 219, 216, 213, 212, 211, 208, 207, 201, 200, 199, - 198, 197, 196, 195, 194, 189, 188, 187, 186, 185, - 184, 183, 182, 179, 178, 177, 176, 175, 174, 173, - 172, 171, 170, 169, 158, 146, 122, 107, 79, 69, - 63, 60, 59, 715, 57, 57, 7, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, + 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, + 277, 276, 273, 272, 271, 268, 267, 266, 265, 264, + 254, 253, 252, 251, 250, 247, 246, 245, 238, 237, + 236, 235, 234, 233, 230, 229, 228, 227, 226, 225, + 224, 223, 220, 217, 216, 215, 212, 211, 210, 204, + 203, 202, 201, 200, 199, 198, 197, 192, 191, 190, + 189, 188, 187, 186, 185, 182, 181, 180, 179, 178, + 177, 176, 175, 174, 173, 172, 161, 149, 125, 109, + 81, 69, 63, 60, 59, 812, 57, 57, 7, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715 + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812 } ; -static yyconst flex_int16_t yy_chk[1152] = +static yyconst flex_int16_t yy_chk[1255] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -800,7 +835,7 @@ static yyconst flex_int16_t yy_chk[1152] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 9, 708, 9, 2, 3, + 1, 1, 1, 1, 1, 2, 9, 803, 9, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -808,119 +843,130 @@ static yyconst flex_int16_t yy_chk[1152] = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 13, 15, 35, 16, 17, 17, 17, - 17, 17, 17, 17, 21, 21, 702, 15, 16, 35, - 13, 19, 25, 19, 19, 19, 19, 19, 19, 19, - 23, 23, 26, 696, 25, 27, 36, 27, 19, 19, - 36, 27, 28, 19, 37, 29, 28, 26, 26, 29, - 19, 19, 30, 28, 30, 29, 28, 46, 37, 33, - 50, 29, 50, 30, 39, 94, 94, 33, 19, 20, + 3, 3, 3, 3, 3, 13, 15, 801, 16, 17, + 17, 17, 17, 17, 17, 17, 21, 21, 71, 15, + 16, 25, 13, 19, 46, 19, 19, 19, 19, 19, + 19, 19, 23, 23, 25, 26, 27, 800, 27, 33, + 19, 19, 27, 71, 28, 19, 19, 33, 28, 35, + 26, 26, 36, 19, 19, 28, 36, 29, 28, 33, + 50, 29, 50, 35, 46, 96, 96, 29, 19, 795, + + 37, 19, 20, 29, 20, 20, 20, 20, 20, 20, + 20, 30, 135, 30, 37, 31, 58, 40, 58, 20, + 20, 39, 30, 31, 20, 105, 31, 40, 135, 31, + 106, 34, 20, 20, 34, 31, 105, 39, 34, 34, + 39, 41, 42, 34, 106, 42, 34, 20, 41, 41, + 160, 44, 160, 41, 42, 44, 48, 48, 43, 41, + 41, 42, 41, 43, 47, 44, 47, 43, 47, 126, + 43, 53, 53, 53, 53, 53, 53, 53, 68, 68, + 70, 70, 120, 126, 142, 142, 148, 143, 124, 148, + 120, 68, 68, 70, 70, 124, 143, 116, 48, 144, - 31, 20, 20, 20, 20, 20, 20, 20, 31, 33, - 39, 31, 693, 39, 31, 34, 20, 20, 34, 117, - 31, 40, 34, 34, 692, 41, 46, 117, 20, 20, - 34, 40, 41, 41, 691, 42, 43, 41, 42, 48, - 48, 43, 132, 41, 41, 43, 41, 42, 43, 44, - 58, 103, 58, 44, 42, 47, 71, 47, 132, 47, - 68, 68, 103, 44, 53, 53, 53, 53, 53, 53, - 53, 104, 68, 68, 684, 114, 70, 70, 114, 114, - 48, 71, 114, 121, 114, 104, 140, 48, 70, 70, - 121, 48, 123, 139, 139, 140, 48, 72, 687, 72, + 116, 116, 153, 153, 116, 48, 116, 144, 152, 48, + 152, 794, 152, 180, 48, 72, 793, 72, 72, 72, + 72, 72, 72, 72, 154, 154, 171, 180, 166, 166, + 73, 73, 72, 72, 73, 73, 73, 73, 73, 73, + 73, 166, 166, 784, 153, 72, 72, 184, 184, 171, + 241, 153, 215, 215, 215, 153, 247, 247, 247, 241, + 153, 268, 268, 268, 621, 621, 154, 279, 279, 279, + 288, 288, 288, 154, 292, 292, 292, 154, 301, 301, + 301, 754, 154, 162, 162, 162, 162, 162, 162, 162, + 164, 164, 655, 655, 164, 164, 164, 164, 164, 164, - 72, 72, 72, 72, 72, 72, 123, 145, 150, 150, - 145, 685, 73, 73, 72, 72, 73, 73, 73, 73, - 73, 73, 73, 151, 151, 684, 72, 72, 149, 157, - 149, 157, 149, 159, 159, 159, 159, 159, 159, 159, - 163, 163, 166, 166, 166, 166, 166, 166, 166, 150, - 181, 181, 163, 163, 237, 682, 150, 211, 211, 211, - 150, 491, 492, 237, 151, 150, 242, 242, 242, 491, - 492, 151, 262, 262, 262, 151, 681, 161, 161, 680, - 151, 161, 161, 161, 161, 161, 161, 161, 164, 164, - 585, 585, 164, 164, 164, 164, 164, 164, 164, 167, + 164, 167, 167, 688, 688, 167, 167, 167, 167, 167, + 167, 167, 169, 169, 169, 169, 169, 169, 169, 170, + 170, 170, 170, 170, 170, 170, 256, 256, 256, 256, + 256, 256, 256, 754, 783, 170, 257, 257, 257, 257, + 257, 257, 257, 338, 338, 338, 782, 781, 170, 258, + 258, 780, 257, 258, 258, 258, 258, 258, 258, 258, + 393, 393, 393, 777, 776, 257, 260, 260, 260, 260, + 260, 260, 260, 261, 261, 261, 261, 261, 261, 261, + 350, 350, 350, 350, 350, 350, 350, 775, 774, 261, + 351, 351, 351, 351, 351, 351, 351, 382, 382, 382, - 167, 167, 167, 167, 167, 167, 251, 251, 251, 251, - 251, 251, 251, 596, 596, 167, 252, 252, 252, 252, - 252, 252, 252, 272, 272, 272, 679, 167, 673, 253, - 253, 672, 252, 253, 253, 253, 253, 253, 253, 253, - 281, 281, 281, 671, 252, 255, 255, 255, 255, 255, - 255, 255, 256, 256, 256, 256, 256, 256, 256, 285, - 285, 285, 293, 293, 293, 329, 329, 329, 256, 341, - 341, 341, 341, 341, 341, 341, 665, 373, 373, 373, - 256, 342, 342, 342, 342, 342, 342, 342, 373, 373, - 383, 383, 383, 384, 384, 384, 664, 342, 385, 385, + 581, 773, 261, 394, 394, 394, 351, 772, 382, 382, + 395, 395, 395, 443, 443, 443, 483, 483, 483, 351, + 490, 504, 505, 771, 443, 443, 770, 483, 483, 504, + 505, 519, 519, 519, 490, 490, 490, 490, 490, 490, + 490, 581, 519, 519, 533, 533, 534, 534, 765, 763, + 762, 768, 581, 619, 619, 554, 554, 554, 576, 576, + 534, 534, 534, 534, 534, 534, 534, 554, 573, 573, + 573, 790, 576, 576, 576, 576, 576, 576, 576, 533, + 573, 578, 578, 739, 760, 605, 757, 756, 619, 755, + 739, 580, 580, 605, 606, 578, 578, 578, 578, 578, - 385, 432, 432, 432, 471, 471, 471, 477, 662, 342, - 518, 518, 432, 432, 661, 471, 471, 505, 505, 505, - 689, 477, 477, 477, 477, 477, 477, 477, 505, 505, - 678, 519, 519, 594, 594, 620, 620, 678, 559, 559, - 645, 645, 701, 660, 518, 519, 519, 519, 519, 519, - 519, 519, 559, 559, 559, 559, 559, 559, 559, 561, - 561, 564, 659, 683, 690, 563, 563, 594, 658, 518, - 683, 689, 690, 561, 561, 561, 561, 561, 561, 563, - 563, 563, 563, 563, 563, 563, 694, 697, 595, 595, - 695, 700, 594, 701, 694, 697, 705, 695, 700, 622, + 578, 606, 606, 768, 533, 580, 580, 580, 580, 580, + 580, 580, 753, 619, 620, 620, 769, 778, 786, 753, + 779, 657, 657, 790, 769, 778, 786, 779, 620, 620, + 620, 620, 620, 620, 620, 657, 657, 657, 657, 657, + 657, 659, 659, 787, 798, 789, 796, 752, 751, 750, + 749, 787, 789, 748, 796, 659, 659, 659, 659, 659, + 659, 659, 799, 804, 807, 808, 810, 747, 746, 745, + 799, 804, 807, 808, 810, 744, 743, 742, 741, 740, + 738, 737, 734, 731, 730, 729, 728, 727, 725, 724, + 722, 720, 717, 716, 714, 713, 798, 813, 813, 813, - 622, 564, 595, 595, 595, 595, 595, 595, 595, 624, - 624, 698, 564, 622, 622, 622, 622, 622, 622, 698, - 657, 656, 703, 624, 624, 624, 624, 624, 624, 624, - 703, 706, 709, 710, 711, 713, 655, 654, 652, 706, - 709, 710, 711, 713, 649, 648, 647, 705, 716, 716, - 716, 716, 716, 716, 716, 716, 717, 717, 717, 717, - 717, 718, 718, 718, 718, 718, 719, 719, 720, 720, - 721, 721, 721, 722, 722, 646, 722, 722, 722, 722, - 722, 723, 723, 723, 644, 643, 642, 723, 724, 724, - 724, 725, 725, 725, 640, 639, 638, 725, 726, 726, + 813, 813, 813, 813, 813, 814, 814, 814, 814, 814, + 815, 815, 815, 815, 815, 816, 816, 817, 817, 818, + 818, 818, 819, 819, 711, 819, 819, 819, 819, 819, + 820, 820, 820, 710, 709, 708, 820, 821, 821, 821, + 822, 822, 822, 707, 706, 705, 822, 823, 823, 823, + 704, 703, 702, 701, 699, 698, 697, 696, 695, 694, + 692, 691, 690, 689, 687, 686, 685, 684, 683, 682, + 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, + 671, 670, 668, 667, 666, 665, 664, 663, 662, 661, + 660, 653, 651, 650, 648, 647, 646, 645, 644, 643, - 726, 637, 636, 635, 633, 632, 631, 630, 629, 628, - 627, 626, 625, 617, 616, 615, 614, 613, 612, 611, - 610, 609, 608, 607, 606, 605, 604, 603, 601, 600, - 599, 598, 597, 593, 592, 591, 590, 589, 588, 587, - 586, 584, 580, 575, 574, 573, 572, 571, 570, 569, - 568, 567, 558, 555, 554, 552, 551, 549, 548, 547, - 546, 545, 544, 543, 542, 541, 539, 538, 537, 536, - 535, 534, 533, 532, 531, 530, 529, 527, 526, 522, - 521, 520, 517, 516, 514, 512, 511, 510, 509, 508, - 506, 504, 503, 502, 501, 500, 499, 497, 496, 495, + 642, 641, 640, 639, 638, 637, 636, 634, 633, 632, + 631, 630, 629, 628, 626, 625, 624, 623, 622, 618, + 617, 616, 615, 614, 613, 612, 611, 610, 609, 608, + 607, 601, 599, 598, 597, 596, 592, 591, 590, 589, + 588, 587, 586, 585, 584, 575, 571, 570, 568, 567, + 565, 564, 563, 562, 561, 560, 559, 558, 557, 555, + 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, + 542, 541, 537, 536, 535, 532, 531, 529, 528, 526, + 525, 524, 523, 522, 520, 518, 517, 516, 515, 514, + 513, 511, 510, 509, 508, 507, 503, 502, 501, 500, - 494, 490, 489, 488, 487, 486, 485, 482, 481, 480, - 479, 478, 476, 475, 474, 473, 472, 470, 469, 462, - 461, 458, 457, 454, 453, 452, 451, 440, 439, 437, - 436, 435, 434, 433, 430, 428, 427, 426, 424, 423, - 421, 420, 419, 418, 416, 415, 410, 408, 407, 406, - 405, 404, 403, 402, 401, 400, 399, 397, 396, 395, - 394, 393, 392, 391, 390, 389, 388, 387, 386, 382, - 378, 377, 374, 372, 362, 360, 356, 355, 354, 353, - 351, 349, 344, 343, 340, 339, 338, 337, 336, 335, - 330, 328, 327, 326, 325, 323, 322, 319, 318, 317, + 499, 498, 495, 494, 493, 492, 491, 489, 488, 487, + 486, 485, 484, 482, 481, 474, 473, 470, 469, 466, + 465, 464, 463, 452, 451, 450, 448, 447, 446, 445, + 444, 441, 439, 438, 437, 435, 434, 432, 431, 430, + 429, 427, 426, 421, 420, 418, 417, 416, 415, 414, + 413, 412, 411, 410, 409, 407, 406, 405, 404, 403, + 402, 401, 400, 399, 398, 397, 396, 392, 388, 387, + 386, 383, 381, 371, 369, 365, 364, 363, 362, 360, + 358, 353, 352, 349, 348, 347, 346, 345, 344, 339, + 337, 336, 335, 334, 333, 331, 330, 327, 326, 325, - 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, - 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, - 294, 292, 291, 290, 289, 288, 287, 286, 284, 280, - 278, 277, 276, 275, 271, 270, 269, 268, 267, 266, - 265, 264, 261, 259, 258, 249, 248, 247, 246, 245, - 244, 243, 241, 240, 239, 238, 236, 235, 234, 233, - 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, - 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, - 212, 210, 209, 208, 207, 206, 205, 204, 203, 202, - 201, 200, 199, 198, 197, 196, 195, 193, 192, 191, + 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, + 314, 313, 312, 311, 310, 309, 308, 307, 306, 305, + 302, 300, 299, 298, 297, 296, 295, 294, 293, 291, + 287, 285, 284, 283, 282, 278, 277, 276, 275, 274, + 273, 272, 271, 267, 265, 264, 254, 253, 252, 251, + 250, 249, 248, 246, 245, 244, 243, 242, 240, 239, + 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, + 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, + 218, 217, 216, 214, 213, 212, 211, 210, 209, 208, + 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, - 190, 189, 188, 187, 186, 185, 184, 183, 182, 180, - 179, 178, 177, 176, 175, 174, 173, 171, 156, 155, - 154, 153, 146, 144, 143, 142, 141, 138, 137, 136, - 135, 134, 133, 131, 130, 129, 128, 127, 126, 125, - 124, 122, 120, 119, 118, 116, 115, 113, 112, 110, - 109, 108, 107, 106, 105, 102, 101, 100, 99, 98, - 97, 96, 95, 93, 92, 91, 90, 89, 88, 87, - 86, 85, 81, 77, 52, 45, 38, 32, 22, 18, - 14, 12, 11, 7, 6, 5, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, + 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, + 186, 185, 183, 182, 181, 179, 178, 177, 176, 174, + 159, 158, 157, 156, 149, 147, 146, 145, 141, 140, + 139, 138, 137, 136, 134, 133, 132, 131, 130, 129, + 128, 127, 125, 123, 122, 121, 119, 118, 117, 115, + 114, 112, 111, 110, 109, 108, 107, 104, 103, 102, + 101, 100, 99, 98, 97, 95, 94, 93, 92, 91, + 90, 89, 88, 87, 83, 79, 52, 45, 38, 32, + 22, 18, 14, 12, 11, 7, 6, 5, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, - 715 + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812 } ; /* The intent behind this definition is that it'll catch @@ -969,38 +1015,46 @@ static yyconst flex_int16_t yy_chk[1152] = #define YY_USER_INIT yylineno = 0; yycolumn = 0; -#define TOKEN_OR_IDENTIFIER(version, token) \ - do { \ - if (yyextra->language_version >= version) { \ - return token; \ - } else { \ - yylval->identifier = strdup(yytext); \ - return IDENTIFIER; \ - } \ - } while (0) - -/* Handle reserved words in GLSL ES (version 100) */ -#define TOKEN_OR_IDENTIFIER_ES(version, token) \ - do { \ - if (yyextra->es_shader) { \ - return token; \ - } else { \ - TOKEN_OR_IDENTIFIER(version, token); \ - } \ - } while (0) +#define IS_UINT (yytext[yyleng - 1] == 'u' || yytext[yyleng - 1] == 'U') -#define RESERVED_WORD(version, token) \ +/* A macro for handling reserved words and keywords across language versions. + * + * Certain words start out as identifiers, become reserved words in + * later language revisions, and finally become language keywords. + * + * For example, consider the following lexer rule: + * samplerBuffer KEYWORD(130, 140, SAMPLERBUFFER) + * + * This means that "samplerBuffer" will be treated as: + * - a keyword (SAMPLERBUFFER token) ...in GLSL >= 1.40 + * - a reserved word - error ...in GLSL >= 1.30 + * - an identifier ...in GLSL < 1.30 + */ +#define KEYWORD(reserved_version, allowed_version, token) \ do { \ - if (yyextra->language_version >= version) { \ + if (yyextra->language_version >= allowed_version) { \ return token; \ - } else { \ + } else if (yyextra->language_version >= reserved_version) { \ _mesa_glsl_error(yylloc, yyextra, \ "Illegal use of reserved word `%s'", yytext); \ return ERROR_TOK; \ + } else { \ + yylval->identifier = strdup(yytext); \ + return IDENTIFIER; \ } \ } while (0) -#line 1004 "glsl_lexer.cpp" +/* The ES macro can be used in KEYWORD checks: + * + * word KEYWORD(110 || ES, 400, TOKEN) + * ...means the word is reserved in GLSL ES 1.00, while + * + * word KEYWORD(110, 130 || ES, TOKEN) + * ...means the word is a legal keyword in GLSL ES 1.00. + */ +#define ES yyextra->es_shader + +#line 1058 "glsl_lexer.cpp" #define INITIAL 0 #define PP 1 @@ -1087,6 +1141,10 @@ int _mesa_glsl_get_lineno (yyscan_t yyscanner ); void _mesa_glsl_set_lineno (int line_number ,yyscan_t yyscanner ); +int _mesa_glsl_get_column (yyscan_t yyscanner ); + +void _mesa_glsl_set_column (int column_no ,yyscan_t yyscanner ); + YYSTYPE * _mesa_glsl_get_lval (yyscan_t yyscanner ); void _mesa_glsl_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); @@ -1127,12 +1185,7 @@ static int input (yyscan_t yyscanner ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1151,7 +1204,7 @@ static int input (yyscan_t yyscanner ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - size_t n; \ + unsigned n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -1239,10 +1292,10 @@ YY_DECL register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 86 "glsl_lexer.lpp" +#line 94 "glsl_lexer.lpp" -#line 1246 "glsl_lexer.cpp" +#line 1299 "glsl_lexer.cpp" yylval = yylval_param; @@ -1300,13 +1353,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 716 ) + if ( yy_current_state >= 813 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 715 ); + while ( yy_current_state != 812 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1328,7 +1381,7 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 88 "glsl_lexer.lpp" +#line 96 "glsl_lexer.lpp" ; YY_BREAK /* Preprocessor tokens. */ @@ -1337,17 +1390,17 @@ case 2: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 91 "glsl_lexer.lpp" +#line 99 "glsl_lexer.lpp" ; YY_BREAK case 3: YY_RULE_SETUP -#line 92 "glsl_lexer.lpp" +#line 100 "glsl_lexer.lpp" { BEGIN PP; return VERSION; } YY_BREAK case 4: YY_RULE_SETUP -#line 93 "glsl_lexer.lpp" +#line 101 "glsl_lexer.lpp" { BEGIN PP; return EXTENSION; } YY_BREAK case 5: @@ -1355,7 +1408,7 @@ case 5: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 94 "glsl_lexer.lpp" +#line 102 "glsl_lexer.lpp" { /* Eat characters until the first digit is * encountered @@ -1377,7 +1430,7 @@ case 6: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 109 "glsl_lexer.lpp" +#line 117 "glsl_lexer.lpp" { /* Eat characters until the first digit is * encountered @@ -1395,7 +1448,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 123 "glsl_lexer.lpp" +#line 131 "glsl_lexer.lpp" { BEGIN PP; return PRAGMA_DEBUG_ON; @@ -1403,7 +1456,7 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 127 "glsl_lexer.lpp" +#line 135 "glsl_lexer.lpp" { BEGIN PP; return PRAGMA_DEBUG_OFF; @@ -1411,7 +1464,7 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 131 "glsl_lexer.lpp" +#line 139 "glsl_lexer.lpp" { BEGIN PP; return PRAGMA_OPTIMIZE_ON; @@ -1419,7 +1472,7 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 135 "glsl_lexer.lpp" +#line 143 "glsl_lexer.lpp" { BEGIN PP; return PRAGMA_OPTIMIZE_OFF; @@ -1427,38 +1480,38 @@ YY_RULE_SETUP YY_BREAK case 11: YY_RULE_SETUP -#line 139 "glsl_lexer.lpp" +#line 147 "glsl_lexer.lpp" { BEGIN PRAGMA; } YY_BREAK case 12: /* rule 12 can match eol */ YY_RULE_SETUP -#line 141 "glsl_lexer.lpp" +#line 149 "glsl_lexer.lpp" { BEGIN 0; yylineno++; yycolumn = 0; } YY_BREAK case 13: YY_RULE_SETUP -#line 142 "glsl_lexer.lpp" +#line 150 "glsl_lexer.lpp" { } YY_BREAK case 14: YY_RULE_SETUP -#line 144 "glsl_lexer.lpp" +#line 152 "glsl_lexer.lpp" { } YY_BREAK case 15: YY_RULE_SETUP -#line 145 "glsl_lexer.lpp" +#line 153 "glsl_lexer.lpp" { } YY_BREAK case 16: YY_RULE_SETUP -#line 146 "glsl_lexer.lpp" +#line 154 "glsl_lexer.lpp" return COLON; YY_BREAK case 17: YY_RULE_SETUP -#line 147 "glsl_lexer.lpp" +#line 155 "glsl_lexer.lpp" { yylval->identifier = strdup(yytext); return IDENTIFIER; @@ -1466,7 +1519,7 @@ YY_RULE_SETUP YY_BREAK case 18: YY_RULE_SETUP -#line 151 "glsl_lexer.lpp" +#line 159 "glsl_lexer.lpp" { yylval->n = strtol(yytext, NULL, 10); return INTCONSTANT; @@ -1475,890 +1528,990 @@ YY_RULE_SETUP case 19: /* rule 19 can match eol */ YY_RULE_SETUP -#line 155 "glsl_lexer.lpp" +#line 163 "glsl_lexer.lpp" { BEGIN 0; yylineno++; yycolumn = 0; return EOL; } YY_BREAK case 20: /* rule 20 can match eol */ YY_RULE_SETUP -#line 157 "glsl_lexer.lpp" +#line 165 "glsl_lexer.lpp" { yylineno++; yycolumn = 0; } YY_BREAK case 21: YY_RULE_SETUP -#line 159 "glsl_lexer.lpp" +#line 167 "glsl_lexer.lpp" return ATTRIBUTE; YY_BREAK case 22: YY_RULE_SETUP -#line 160 "glsl_lexer.lpp" +#line 168 "glsl_lexer.lpp" return CONST_TOK; YY_BREAK case 23: YY_RULE_SETUP -#line 161 "glsl_lexer.lpp" +#line 169 "glsl_lexer.lpp" return BOOL_TOK; YY_BREAK case 24: YY_RULE_SETUP -#line 162 "glsl_lexer.lpp" +#line 170 "glsl_lexer.lpp" return FLOAT_TOK; YY_BREAK case 25: YY_RULE_SETUP -#line 163 "glsl_lexer.lpp" +#line 171 "glsl_lexer.lpp" return INT_TOK; YY_BREAK case 26: YY_RULE_SETUP -#line 164 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UINT_TOK); +#line 172 "glsl_lexer.lpp" +KEYWORD(130, 130, UINT_TOK); YY_BREAK case 27: YY_RULE_SETUP -#line 166 "glsl_lexer.lpp" +#line 174 "glsl_lexer.lpp" return BREAK; YY_BREAK case 28: YY_RULE_SETUP -#line 167 "glsl_lexer.lpp" +#line 175 "glsl_lexer.lpp" return CONTINUE; YY_BREAK case 29: YY_RULE_SETUP -#line 168 "glsl_lexer.lpp" +#line 176 "glsl_lexer.lpp" return DO; YY_BREAK case 30: YY_RULE_SETUP -#line 169 "glsl_lexer.lpp" +#line 177 "glsl_lexer.lpp" return WHILE; YY_BREAK case 31: YY_RULE_SETUP -#line 170 "glsl_lexer.lpp" +#line 178 "glsl_lexer.lpp" return ELSE; YY_BREAK case 32: YY_RULE_SETUP -#line 171 "glsl_lexer.lpp" +#line 179 "glsl_lexer.lpp" return FOR; YY_BREAK case 33: YY_RULE_SETUP -#line 172 "glsl_lexer.lpp" +#line 180 "glsl_lexer.lpp" return IF; YY_BREAK case 34: YY_RULE_SETUP -#line 173 "glsl_lexer.lpp" +#line 181 "glsl_lexer.lpp" return DISCARD; YY_BREAK case 35: YY_RULE_SETUP -#line 174 "glsl_lexer.lpp" +#line 182 "glsl_lexer.lpp" return RETURN; YY_BREAK case 36: YY_RULE_SETUP -#line 176 "glsl_lexer.lpp" +#line 184 "glsl_lexer.lpp" return BVEC2; YY_BREAK case 37: YY_RULE_SETUP -#line 177 "glsl_lexer.lpp" +#line 185 "glsl_lexer.lpp" return BVEC3; YY_BREAK case 38: YY_RULE_SETUP -#line 178 "glsl_lexer.lpp" +#line 186 "glsl_lexer.lpp" return BVEC4; YY_BREAK case 39: YY_RULE_SETUP -#line 179 "glsl_lexer.lpp" +#line 187 "glsl_lexer.lpp" return IVEC2; YY_BREAK case 40: YY_RULE_SETUP -#line 180 "glsl_lexer.lpp" +#line 188 "glsl_lexer.lpp" return IVEC3; YY_BREAK case 41: YY_RULE_SETUP -#line 181 "glsl_lexer.lpp" +#line 189 "glsl_lexer.lpp" return IVEC4; YY_BREAK case 42: YY_RULE_SETUP -#line 182 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UVEC2); +#line 190 "glsl_lexer.lpp" +KEYWORD(130, 130, UVEC2); YY_BREAK case 43: YY_RULE_SETUP -#line 183 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UVEC3); +#line 191 "glsl_lexer.lpp" +KEYWORD(130, 130, UVEC3); YY_BREAK case 44: YY_RULE_SETUP -#line 184 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UVEC4); +#line 192 "glsl_lexer.lpp" +KEYWORD(130, 130, UVEC4); YY_BREAK case 45: YY_RULE_SETUP -#line 185 "glsl_lexer.lpp" +#line 193 "glsl_lexer.lpp" return VEC2; YY_BREAK case 46: YY_RULE_SETUP -#line 186 "glsl_lexer.lpp" +#line 194 "glsl_lexer.lpp" return VEC3; YY_BREAK case 47: YY_RULE_SETUP -#line 187 "glsl_lexer.lpp" +#line 195 "glsl_lexer.lpp" return VEC4; YY_BREAK case 48: YY_RULE_SETUP -#line 188 "glsl_lexer.lpp" +#line 196 "glsl_lexer.lpp" return MAT2X2; YY_BREAK case 49: YY_RULE_SETUP -#line 189 "glsl_lexer.lpp" +#line 197 "glsl_lexer.lpp" return MAT3X3; YY_BREAK case 50: YY_RULE_SETUP -#line 190 "glsl_lexer.lpp" +#line 198 "glsl_lexer.lpp" return MAT4X4; YY_BREAK case 51: YY_RULE_SETUP -#line 191 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(120, MAT2X2); +#line 199 "glsl_lexer.lpp" +KEYWORD(120, 120, MAT2X2); YY_BREAK case 52: YY_RULE_SETUP -#line 192 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(120, MAT2X3); +#line 200 "glsl_lexer.lpp" +KEYWORD(120, 120, MAT2X3); YY_BREAK case 53: YY_RULE_SETUP -#line 193 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(120, MAT2X4); +#line 201 "glsl_lexer.lpp" +KEYWORD(120, 120, MAT2X4); YY_BREAK case 54: YY_RULE_SETUP -#line 194 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(120, MAT3X2); +#line 202 "glsl_lexer.lpp" +KEYWORD(120, 120, MAT3X2); YY_BREAK case 55: YY_RULE_SETUP -#line 195 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(120, MAT3X3); +#line 203 "glsl_lexer.lpp" +KEYWORD(120, 120, MAT3X3); YY_BREAK case 56: YY_RULE_SETUP -#line 196 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(120, MAT3X4); +#line 204 "glsl_lexer.lpp" +KEYWORD(120, 120, MAT3X4); YY_BREAK case 57: YY_RULE_SETUP -#line 197 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(120, MAT4X2); +#line 205 "glsl_lexer.lpp" +KEYWORD(120, 120, MAT4X2); YY_BREAK case 58: YY_RULE_SETUP -#line 198 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(120, MAT4X3); +#line 206 "glsl_lexer.lpp" +KEYWORD(120, 120, MAT4X3); YY_BREAK case 59: YY_RULE_SETUP -#line 199 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(120, MAT4X4); +#line 207 "glsl_lexer.lpp" +KEYWORD(120, 120, MAT4X4); YY_BREAK case 60: YY_RULE_SETUP -#line 201 "glsl_lexer.lpp" +#line 209 "glsl_lexer.lpp" return IN_TOK; YY_BREAK case 61: YY_RULE_SETUP -#line 202 "glsl_lexer.lpp" +#line 210 "glsl_lexer.lpp" return OUT_TOK; YY_BREAK case 62: YY_RULE_SETUP -#line 203 "glsl_lexer.lpp" +#line 211 "glsl_lexer.lpp" return INOUT_TOK; YY_BREAK case 63: YY_RULE_SETUP -#line 204 "glsl_lexer.lpp" +#line 212 "glsl_lexer.lpp" return UNIFORM; YY_BREAK case 64: YY_RULE_SETUP -#line 205 "glsl_lexer.lpp" +#line 213 "glsl_lexer.lpp" return VARYING; YY_BREAK case 65: YY_RULE_SETUP -#line 206 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(120, CENTROID); +#line 214 "glsl_lexer.lpp" +KEYWORD(120, 120, CENTROID); YY_BREAK case 66: YY_RULE_SETUP -#line 207 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER_ES(120, INVARIANT); +#line 215 "glsl_lexer.lpp" +KEYWORD(120 || ES, 120 || ES, INVARIANT); YY_BREAK case 67: YY_RULE_SETUP -#line 209 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER_ES(130, FLAT); +#line 216 "glsl_lexer.lpp" +KEYWORD(130 || ES, 130, FLAT); YY_BREAK case 68: YY_RULE_SETUP -#line 210 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, SMOOTH); +#line 217 "glsl_lexer.lpp" +KEYWORD(130, 130, SMOOTH); YY_BREAK case 69: YY_RULE_SETUP -#line 211 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, NOPERSPECTIVE); +#line 218 "glsl_lexer.lpp" +KEYWORD(130, 130, NOPERSPECTIVE); YY_BREAK case 70: YY_RULE_SETUP -#line 213 "glsl_lexer.lpp" +#line 220 "glsl_lexer.lpp" return SAMPLER1D; YY_BREAK case 71: YY_RULE_SETUP -#line 214 "glsl_lexer.lpp" +#line 221 "glsl_lexer.lpp" return SAMPLER2D; YY_BREAK case 72: YY_RULE_SETUP -#line 215 "glsl_lexer.lpp" +#line 222 "glsl_lexer.lpp" return SAMPLER3D; YY_BREAK case 73: YY_RULE_SETUP -#line 216 "glsl_lexer.lpp" +#line 223 "glsl_lexer.lpp" return SAMPLERCUBE; YY_BREAK case 74: YY_RULE_SETUP -#line 217 "glsl_lexer.lpp" -return SAMPLER1DSHADOW; +#line 224 "glsl_lexer.lpp" +KEYWORD(130, 130, SAMPLER1DARRAY); YY_BREAK case 75: YY_RULE_SETUP -#line 218 "glsl_lexer.lpp" -return SAMPLER2DSHADOW; +#line 225 "glsl_lexer.lpp" +KEYWORD(130, 130, SAMPLER2DARRAY); YY_BREAK case 76: YY_RULE_SETUP -#line 220 "glsl_lexer.lpp" -return STRUCT; +#line 226 "glsl_lexer.lpp" +return SAMPLER1DSHADOW; YY_BREAK case 77: YY_RULE_SETUP -#line 221 "glsl_lexer.lpp" -return VOID_TOK; +#line 227 "glsl_lexer.lpp" +return SAMPLER2DSHADOW; YY_BREAK case 78: YY_RULE_SETUP -#line 223 "glsl_lexer.lpp" -{ - if ((yyextra->language_version >= 140) - || yyextra->ARB_explicit_attrib_location_enable - || (yyextra->ARB_fragment_coord_conventions_enable)){ - return LAYOUT_TOK; - } else { - yylval->identifier = strdup(yytext); - return IDENTIFIER; - } - } +#line 228 "glsl_lexer.lpp" +KEYWORD(130, 130, SAMPLERCUBESHADOW); YY_BREAK case 79: YY_RULE_SETUP -#line 234 "glsl_lexer.lpp" -return INC_OP; +#line 229 "glsl_lexer.lpp" +KEYWORD(130, 130, SAMPLER1DARRAYSHADOW); YY_BREAK case 80: YY_RULE_SETUP -#line 235 "glsl_lexer.lpp" -return DEC_OP; +#line 230 "glsl_lexer.lpp" +KEYWORD(130, 130, SAMPLER2DARRAYSHADOW); YY_BREAK case 81: YY_RULE_SETUP -#line 236 "glsl_lexer.lpp" -return LE_OP; +#line 231 "glsl_lexer.lpp" +KEYWORD(130, 130, ISAMPLER1D); YY_BREAK case 82: YY_RULE_SETUP -#line 237 "glsl_lexer.lpp" -return GE_OP; +#line 232 "glsl_lexer.lpp" +KEYWORD(130, 130, ISAMPLER2D); YY_BREAK case 83: YY_RULE_SETUP -#line 238 "glsl_lexer.lpp" -return EQ_OP; +#line 233 "glsl_lexer.lpp" +KEYWORD(130, 130, ISAMPLER3D); YY_BREAK case 84: YY_RULE_SETUP -#line 239 "glsl_lexer.lpp" -return NE_OP; +#line 234 "glsl_lexer.lpp" +KEYWORD(130, 130, ISAMPLERCUBE); YY_BREAK case 85: YY_RULE_SETUP -#line 240 "glsl_lexer.lpp" -return AND_OP; +#line 235 "glsl_lexer.lpp" +KEYWORD(130, 130, ISAMPLER1DARRAY); YY_BREAK case 86: YY_RULE_SETUP -#line 241 "glsl_lexer.lpp" -return OR_OP; +#line 236 "glsl_lexer.lpp" +KEYWORD(130, 130, ISAMPLER2DARRAY); YY_BREAK case 87: YY_RULE_SETUP -#line 242 "glsl_lexer.lpp" -return XOR_OP; +#line 237 "glsl_lexer.lpp" +KEYWORD(130, 130, USAMPLER1D); YY_BREAK case 88: YY_RULE_SETUP -#line 243 "glsl_lexer.lpp" -return LEFT_OP; +#line 238 "glsl_lexer.lpp" +KEYWORD(130, 130, USAMPLER2D); YY_BREAK case 89: YY_RULE_SETUP -#line 244 "glsl_lexer.lpp" -return RIGHT_OP; +#line 239 "glsl_lexer.lpp" +KEYWORD(130, 130, USAMPLER3D); YY_BREAK case 90: YY_RULE_SETUP -#line 246 "glsl_lexer.lpp" -return MUL_ASSIGN; +#line 240 "glsl_lexer.lpp" +KEYWORD(130, 130, USAMPLERCUBE); YY_BREAK case 91: YY_RULE_SETUP -#line 247 "glsl_lexer.lpp" -return DIV_ASSIGN; +#line 241 "glsl_lexer.lpp" +KEYWORD(130, 130, USAMPLER1DARRAY); YY_BREAK case 92: YY_RULE_SETUP -#line 248 "glsl_lexer.lpp" -return ADD_ASSIGN; +#line 242 "glsl_lexer.lpp" +KEYWORD(130, 130, USAMPLER2DARRAY); YY_BREAK case 93: YY_RULE_SETUP -#line 249 "glsl_lexer.lpp" -return MOD_ASSIGN; +#line 245 "glsl_lexer.lpp" +return STRUCT; YY_BREAK case 94: YY_RULE_SETUP -#line 250 "glsl_lexer.lpp" -return LEFT_ASSIGN; +#line 246 "glsl_lexer.lpp" +return VOID_TOK; YY_BREAK case 95: YY_RULE_SETUP -#line 251 "glsl_lexer.lpp" -return RIGHT_ASSIGN; +#line 248 "glsl_lexer.lpp" +{ + if ((yyextra->language_version >= 140) + || yyextra->ARB_explicit_attrib_location_enable + || (yyextra->ARB_fragment_coord_conventions_enable)){ + return LAYOUT_TOK; + } else { + yylval->identifier = strdup(yytext); + return IDENTIFIER; + } + } YY_BREAK case 96: YY_RULE_SETUP -#line 252 "glsl_lexer.lpp" -return AND_ASSIGN; +#line 259 "glsl_lexer.lpp" +return INC_OP; YY_BREAK case 97: YY_RULE_SETUP -#line 253 "glsl_lexer.lpp" -return XOR_ASSIGN; +#line 260 "glsl_lexer.lpp" +return DEC_OP; YY_BREAK case 98: YY_RULE_SETUP -#line 254 "glsl_lexer.lpp" -return OR_ASSIGN; +#line 261 "glsl_lexer.lpp" +return LE_OP; YY_BREAK case 99: YY_RULE_SETUP -#line 255 "glsl_lexer.lpp" -return SUB_ASSIGN; +#line 262 "glsl_lexer.lpp" +return GE_OP; YY_BREAK case 100: YY_RULE_SETUP -#line 257 "glsl_lexer.lpp" -{ - yylval->n = strtol(yytext, NULL, 10); - return INTCONSTANT; - } +#line 263 "glsl_lexer.lpp" +return EQ_OP; YY_BREAK case 101: YY_RULE_SETUP -#line 261 "glsl_lexer.lpp" -{ - yylval->n = strtol(yytext + 2, NULL, 16); - return INTCONSTANT; - } +#line 264 "glsl_lexer.lpp" +return NE_OP; YY_BREAK case 102: YY_RULE_SETUP #line 265 "glsl_lexer.lpp" -{ - yylval->n = strtol(yytext, NULL, 8); - return INTCONSTANT; - } +return AND_OP; YY_BREAK case 103: YY_RULE_SETUP -#line 270 "glsl_lexer.lpp" -{ - yylval->real = strtod(yytext, NULL); - return FLOATCONSTANT; - } +#line 266 "glsl_lexer.lpp" +return OR_OP; YY_BREAK case 104: YY_RULE_SETUP -#line 274 "glsl_lexer.lpp" -{ - yylval->real = strtod(yytext, NULL); - return FLOATCONSTANT; - } +#line 267 "glsl_lexer.lpp" +return XOR_OP; YY_BREAK case 105: YY_RULE_SETUP -#line 278 "glsl_lexer.lpp" -{ - yylval->real = strtod(yytext, NULL); - return FLOATCONSTANT; - } +#line 268 "glsl_lexer.lpp" +return LEFT_OP; YY_BREAK case 106: YY_RULE_SETUP -#line 282 "glsl_lexer.lpp" -{ - yylval->real = strtod(yytext, NULL); - return FLOATCONSTANT; - } +#line 269 "glsl_lexer.lpp" +return RIGHT_OP; YY_BREAK case 107: YY_RULE_SETUP -#line 286 "glsl_lexer.lpp" -{ - yylval->real = strtod(yytext, NULL); - return FLOATCONSTANT; - } +#line 271 "glsl_lexer.lpp" +return MUL_ASSIGN; YY_BREAK case 108: YY_RULE_SETUP -#line 291 "glsl_lexer.lpp" -{ - yylval->n = 1; - return BOOLCONSTANT; - } +#line 272 "glsl_lexer.lpp" +return DIV_ASSIGN; YY_BREAK case 109: YY_RULE_SETUP -#line 295 "glsl_lexer.lpp" -{ - yylval->n = 0; - return BOOLCONSTANT; - } +#line 273 "glsl_lexer.lpp" +return ADD_ASSIGN; YY_BREAK -/* Reserved words in GLSL 1.10. */ case 110: YY_RULE_SETUP -#line 302 "glsl_lexer.lpp" -RESERVED_WORD(999, ASM); +#line 274 "glsl_lexer.lpp" +return MOD_ASSIGN; YY_BREAK case 111: YY_RULE_SETUP -#line 303 "glsl_lexer.lpp" -RESERVED_WORD(999, CLASS); +#line 275 "glsl_lexer.lpp" +return LEFT_ASSIGN; YY_BREAK case 112: YY_RULE_SETUP -#line 304 "glsl_lexer.lpp" -RESERVED_WORD(999, UNION); +#line 276 "glsl_lexer.lpp" +return RIGHT_ASSIGN; YY_BREAK case 113: YY_RULE_SETUP -#line 305 "glsl_lexer.lpp" -RESERVED_WORD(999, ENUM); +#line 277 "glsl_lexer.lpp" +return AND_ASSIGN; YY_BREAK case 114: YY_RULE_SETUP -#line 306 "glsl_lexer.lpp" -RESERVED_WORD(999, TYPEDEF); +#line 278 "glsl_lexer.lpp" +return XOR_ASSIGN; YY_BREAK case 115: YY_RULE_SETUP -#line 307 "glsl_lexer.lpp" -RESERVED_WORD(999, TEMPLATE); +#line 279 "glsl_lexer.lpp" +return OR_ASSIGN; YY_BREAK case 116: YY_RULE_SETUP -#line 308 "glsl_lexer.lpp" -RESERVED_WORD(999, THIS); +#line 280 "glsl_lexer.lpp" +return SUB_ASSIGN; YY_BREAK case 117: YY_RULE_SETUP -#line 309 "glsl_lexer.lpp" -RESERVED_WORD(999, PACKED_TOK); +#line 282 "glsl_lexer.lpp" +{ + yylval->n = strtol(yytext, NULL, 10); + return IS_UINT ? UINTCONSTANT : INTCONSTANT; + } YY_BREAK case 118: YY_RULE_SETUP -#line 310 "glsl_lexer.lpp" -RESERVED_WORD(999, GOTO); +#line 286 "glsl_lexer.lpp" +{ + yylval->n = strtol(yytext + 2, NULL, 16); + return IS_UINT ? UINTCONSTANT : INTCONSTANT; + } YY_BREAK case 119: YY_RULE_SETUP -#line 311 "glsl_lexer.lpp" -RESERVED_WORD(130, SWITCH); +#line 290 "glsl_lexer.lpp" +{ + yylval->n = strtol(yytext, NULL, 8); + return IS_UINT ? UINTCONSTANT : INTCONSTANT; + } YY_BREAK case 120: YY_RULE_SETUP -#line 312 "glsl_lexer.lpp" -RESERVED_WORD(130, DEFAULT); +#line 295 "glsl_lexer.lpp" +{ + yylval->real = strtod(yytext, NULL); + return FLOATCONSTANT; + } YY_BREAK case 121: YY_RULE_SETUP -#line 313 "glsl_lexer.lpp" -RESERVED_WORD(999, INLINE_TOK); +#line 299 "glsl_lexer.lpp" +{ + yylval->real = strtod(yytext, NULL); + return FLOATCONSTANT; + } YY_BREAK case 122: YY_RULE_SETUP -#line 314 "glsl_lexer.lpp" -RESERVED_WORD(999, NOINLINE); +#line 303 "glsl_lexer.lpp" +{ + yylval->real = strtod(yytext, NULL); + return FLOATCONSTANT; + } YY_BREAK case 123: YY_RULE_SETUP -#line 315 "glsl_lexer.lpp" -RESERVED_WORD(999, VOLATILE); +#line 307 "glsl_lexer.lpp" +{ + yylval->real = strtod(yytext, NULL); + return FLOATCONSTANT; + } YY_BREAK case 124: YY_RULE_SETUP -#line 316 "glsl_lexer.lpp" -RESERVED_WORD(999, PUBLIC_TOK); +#line 311 "glsl_lexer.lpp" +{ + yylval->real = strtod(yytext, NULL); + return FLOATCONSTANT; + } YY_BREAK case 125: YY_RULE_SETUP -#line 317 "glsl_lexer.lpp" -RESERVED_WORD(999, STATIC); +#line 316 "glsl_lexer.lpp" +{ + yylval->n = 1; + return BOOLCONSTANT; + } YY_BREAK case 126: YY_RULE_SETUP -#line 318 "glsl_lexer.lpp" -RESERVED_WORD(999, EXTERN); +#line 320 "glsl_lexer.lpp" +{ + yylval->n = 0; + return BOOLCONSTANT; + } YY_BREAK +/* Reserved words in GLSL 1.10. */ case 127: YY_RULE_SETUP -#line 319 "glsl_lexer.lpp" -RESERVED_WORD(999, EXTERNAL); +#line 327 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, ASM); YY_BREAK case 128: YY_RULE_SETUP -#line 320 "glsl_lexer.lpp" -RESERVED_WORD(999, INTERFACE); +#line 328 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, CLASS); YY_BREAK case 129: YY_RULE_SETUP -#line 321 "glsl_lexer.lpp" -RESERVED_WORD(999, LONG_TOK); +#line 329 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, UNION); YY_BREAK case 130: YY_RULE_SETUP -#line 322 "glsl_lexer.lpp" -RESERVED_WORD(999, SHORT_TOK); +#line 330 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, ENUM); YY_BREAK case 131: YY_RULE_SETUP -#line 323 "glsl_lexer.lpp" -RESERVED_WORD(999, DOUBLE_TOK); +#line 331 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, TYPEDEF); YY_BREAK case 132: YY_RULE_SETUP -#line 324 "glsl_lexer.lpp" -RESERVED_WORD(999, HALF); +#line 332 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, TEMPLATE); YY_BREAK case 133: YY_RULE_SETUP -#line 325 "glsl_lexer.lpp" -RESERVED_WORD(999, FIXED_TOK); +#line 333 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, THIS); YY_BREAK case 134: YY_RULE_SETUP -#line 326 "glsl_lexer.lpp" -RESERVED_WORD(999, UNSIGNED); +#line 334 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, PACKED_TOK); YY_BREAK case 135: YY_RULE_SETUP -#line 327 "glsl_lexer.lpp" -RESERVED_WORD(999, INPUT_TOK); +#line 335 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, GOTO); YY_BREAK case 136: YY_RULE_SETUP -#line 328 "glsl_lexer.lpp" -RESERVED_WORD(999, OUTPUT); +#line 336 "glsl_lexer.lpp" +KEYWORD(110 || ES, 130, SWITCH); YY_BREAK case 137: YY_RULE_SETUP -#line 329 "glsl_lexer.lpp" -RESERVED_WORD(999, HVEC2); +#line 337 "glsl_lexer.lpp" +KEYWORD(110 || ES, 130, DEFAULT); YY_BREAK case 138: YY_RULE_SETUP -#line 330 "glsl_lexer.lpp" -RESERVED_WORD(999, HVEC3); +#line 338 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, INLINE_TOK); YY_BREAK case 139: YY_RULE_SETUP -#line 331 "glsl_lexer.lpp" -RESERVED_WORD(999, HVEC4); +#line 339 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, NOINLINE); YY_BREAK case 140: YY_RULE_SETUP -#line 332 "glsl_lexer.lpp" -RESERVED_WORD(999, DVEC2); +#line 340 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, VOLATILE); YY_BREAK case 141: YY_RULE_SETUP -#line 333 "glsl_lexer.lpp" -RESERVED_WORD(999, DVEC3); +#line 341 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, PUBLIC_TOK); YY_BREAK case 142: YY_RULE_SETUP -#line 334 "glsl_lexer.lpp" -RESERVED_WORD(999, DVEC4); +#line 342 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, STATIC); YY_BREAK case 143: YY_RULE_SETUP -#line 335 "glsl_lexer.lpp" -RESERVED_WORD(999, FVEC2); +#line 343 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, EXTERN); YY_BREAK case 144: YY_RULE_SETUP -#line 336 "glsl_lexer.lpp" -RESERVED_WORD(999, FVEC3); +#line 344 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, EXTERNAL); YY_BREAK case 145: YY_RULE_SETUP -#line 337 "glsl_lexer.lpp" -RESERVED_WORD(999, FVEC4); +#line 345 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, INTERFACE); YY_BREAK case 146: YY_RULE_SETUP -#line 338 "glsl_lexer.lpp" -return SAMPLER2DRECT; +#line 346 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, LONG_TOK); YY_BREAK case 147: YY_RULE_SETUP -#line 339 "glsl_lexer.lpp" -RESERVED_WORD(999, SAMPLER3DRECT); +#line 347 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, SHORT_TOK); YY_BREAK case 148: YY_RULE_SETUP -#line 340 "glsl_lexer.lpp" -return SAMPLER2DRECTSHADOW; +#line 348 "glsl_lexer.lpp" +KEYWORD(110 || ES, 400, DOUBLE_TOK); YY_BREAK case 149: YY_RULE_SETUP -#line 341 "glsl_lexer.lpp" -RESERVED_WORD(999, SIZEOF); +#line 349 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, HALF); YY_BREAK case 150: YY_RULE_SETUP -#line 342 "glsl_lexer.lpp" -RESERVED_WORD(999, CAST); +#line 350 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, FIXED_TOK); YY_BREAK case 151: YY_RULE_SETUP -#line 343 "glsl_lexer.lpp" -RESERVED_WORD(999, NAMESPACE); +#line 351 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, UNSIGNED); YY_BREAK case 152: YY_RULE_SETUP -#line 344 "glsl_lexer.lpp" -RESERVED_WORD(999, USING); +#line 352 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, INPUT_TOK); YY_BREAK -/* Additional reserved words in GLSL 1.20. */ case 153: YY_RULE_SETUP -#line 347 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER_ES(120, LOWP); +#line 353 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, OUTPUT); YY_BREAK case 154: YY_RULE_SETUP -#line 348 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER_ES(120, MEDIUMP); +#line 354 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, HVEC2); YY_BREAK case 155: YY_RULE_SETUP -#line 349 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER_ES(120, HIGHP); +#line 355 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, HVEC3); YY_BREAK case 156: YY_RULE_SETUP -#line 350 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER_ES(120, PRECISION); +#line 356 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, HVEC4); YY_BREAK -/* Additional reserved words in GLSL 1.30. */ case 157: YY_RULE_SETUP -#line 353 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, COMMON); +#line 357 "glsl_lexer.lpp" +KEYWORD(110 || ES, 400, DVEC2); YY_BREAK case 158: YY_RULE_SETUP -#line 354 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, PARTITION); +#line 358 "glsl_lexer.lpp" +KEYWORD(110 || ES, 400, DVEC3); YY_BREAK case 159: YY_RULE_SETUP -#line 355 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, ACTIVE); +#line 359 "glsl_lexer.lpp" +KEYWORD(110 || ES, 400, DVEC4); YY_BREAK case 160: YY_RULE_SETUP -#line 356 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER_ES(130, SUPERP); +#line 360 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, FVEC2); YY_BREAK case 161: YY_RULE_SETUP -#line 357 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, SAMPLERBUFFER); +#line 361 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, FVEC3); YY_BREAK case 162: YY_RULE_SETUP -#line 358 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, FILTER); +#line 362 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, FVEC4); YY_BREAK case 163: YY_RULE_SETUP -#line 359 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IMAGE1D); +#line 363 "glsl_lexer.lpp" +return SAMPLER2DRECT; YY_BREAK case 164: YY_RULE_SETUP -#line 360 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IMAGE2D); +#line 364 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, SAMPLER3DRECT); YY_BREAK case 165: YY_RULE_SETUP -#line 361 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IMAGE3D); +#line 365 "glsl_lexer.lpp" +return SAMPLER2DRECTSHADOW; YY_BREAK case 166: YY_RULE_SETUP -#line 362 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IMAGECUBE); +#line 366 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, SIZEOF); YY_BREAK case 167: YY_RULE_SETUP -#line 363 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IIMAGE1D); +#line 367 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, CAST); YY_BREAK case 168: YY_RULE_SETUP -#line 364 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IIMAGE2D); +#line 368 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, NAMESPACE); YY_BREAK case 169: YY_RULE_SETUP -#line 365 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IIMAGE3D); +#line 369 "glsl_lexer.lpp" +KEYWORD(110 || ES, 999, USING); YY_BREAK +/* Additional reserved words in GLSL 1.20. */ case 170: YY_RULE_SETUP -#line 366 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IIMAGECUBE); +#line 372 "glsl_lexer.lpp" +KEYWORD(120, 130 || ES, LOWP); YY_BREAK case 171: YY_RULE_SETUP -#line 367 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UIMAGE1D); +#line 373 "glsl_lexer.lpp" +KEYWORD(120, 130 || ES, MEDIUMP); YY_BREAK case 172: YY_RULE_SETUP -#line 368 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UIMAGE2D); +#line 374 "glsl_lexer.lpp" +KEYWORD(120, 130 || ES, HIGHP); YY_BREAK case 173: YY_RULE_SETUP -#line 369 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UIMAGE3D); +#line 375 "glsl_lexer.lpp" +KEYWORD(120, 130 || ES, PRECISION); YY_BREAK +/* Additional reserved words in GLSL 1.30. */ case 174: YY_RULE_SETUP -#line 370 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UIMAGECUBE); +#line 378 "glsl_lexer.lpp" +KEYWORD(130, 130, CASE); YY_BREAK case 175: YY_RULE_SETUP -#line 371 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IMAGE1DARRAY); +#line 379 "glsl_lexer.lpp" +KEYWORD(130, 999, COMMON); YY_BREAK case 176: YY_RULE_SETUP -#line 372 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IMAGE2DARRAY); +#line 380 "glsl_lexer.lpp" +KEYWORD(130, 999, PARTITION); YY_BREAK case 177: YY_RULE_SETUP -#line 373 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IIMAGE1DARRAY); +#line 381 "glsl_lexer.lpp" +KEYWORD(130, 999, ACTIVE); YY_BREAK case 178: YY_RULE_SETUP -#line 374 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IIMAGE2DARRAY); +#line 382 "glsl_lexer.lpp" +KEYWORD(130 || ES, 999, SUPERP); YY_BREAK case 179: YY_RULE_SETUP -#line 375 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UIMAGE1DARRAY); +#line 383 "glsl_lexer.lpp" +KEYWORD(130, 140, SAMPLERBUFFER); YY_BREAK case 180: YY_RULE_SETUP -#line 376 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UIMAGE2DARRAY); +#line 384 "glsl_lexer.lpp" +KEYWORD(130, 999, FILTER); YY_BREAK case 181: YY_RULE_SETUP -#line 377 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IMAGE1DSHADOW); +#line 385 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGE1D); YY_BREAK case 182: YY_RULE_SETUP -#line 378 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IMAGE2DSHADOW); +#line 386 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGE2D); YY_BREAK case 183: YY_RULE_SETUP -#line 379 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IMAGEBUFFER); +#line 387 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGE3D); YY_BREAK case 184: YY_RULE_SETUP -#line 380 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, IIMAGEBUFFER); +#line 388 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGECUBE); YY_BREAK case 185: YY_RULE_SETUP -#line 381 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, UIMAGEBUFFER); +#line 389 "glsl_lexer.lpp" +KEYWORD(130, 999, IIMAGE1D); YY_BREAK case 186: YY_RULE_SETUP -#line 382 "glsl_lexer.lpp" -TOKEN_OR_IDENTIFIER(130, ROW_MAJOR); +#line 390 "glsl_lexer.lpp" +KEYWORD(130, 999, IIMAGE2D); YY_BREAK case 187: YY_RULE_SETUP -#line 384 "glsl_lexer.lpp" +#line 391 "glsl_lexer.lpp" +KEYWORD(130, 999, IIMAGE3D); + YY_BREAK +case 188: +YY_RULE_SETUP +#line 392 "glsl_lexer.lpp" +KEYWORD(130, 999, IIMAGECUBE); + YY_BREAK +case 189: +YY_RULE_SETUP +#line 393 "glsl_lexer.lpp" +KEYWORD(130, 999, UIMAGE1D); + YY_BREAK +case 190: +YY_RULE_SETUP +#line 394 "glsl_lexer.lpp" +KEYWORD(130, 999, UIMAGE2D); + YY_BREAK +case 191: +YY_RULE_SETUP +#line 395 "glsl_lexer.lpp" +KEYWORD(130, 999, UIMAGE3D); + YY_BREAK +case 192: +YY_RULE_SETUP +#line 396 "glsl_lexer.lpp" +KEYWORD(130, 999, UIMAGECUBE); + YY_BREAK +case 193: +YY_RULE_SETUP +#line 397 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGE1DARRAY); + YY_BREAK +case 194: +YY_RULE_SETUP +#line 398 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGE2DARRAY); + YY_BREAK +case 195: +YY_RULE_SETUP +#line 399 "glsl_lexer.lpp" +KEYWORD(130, 999, IIMAGE1DARRAY); + YY_BREAK +case 196: +YY_RULE_SETUP +#line 400 "glsl_lexer.lpp" +KEYWORD(130, 999, IIMAGE2DARRAY); + YY_BREAK +case 197: +YY_RULE_SETUP +#line 401 "glsl_lexer.lpp" +KEYWORD(130, 999, UIMAGE1DARRAY); + YY_BREAK +case 198: +YY_RULE_SETUP +#line 402 "glsl_lexer.lpp" +KEYWORD(130, 999, UIMAGE2DARRAY); + YY_BREAK +case 199: +YY_RULE_SETUP +#line 403 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGE1DSHADOW); + YY_BREAK +case 200: +YY_RULE_SETUP +#line 404 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGE2DSHADOW); + YY_BREAK +case 201: +YY_RULE_SETUP +#line 405 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGE1DARRAYSHADOW); + YY_BREAK +case 202: +YY_RULE_SETUP +#line 406 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGE2DARRAYSHADOW); + YY_BREAK +case 203: +YY_RULE_SETUP +#line 407 "glsl_lexer.lpp" +KEYWORD(130, 999, IMAGEBUFFER); + YY_BREAK +case 204: +YY_RULE_SETUP +#line 408 "glsl_lexer.lpp" +KEYWORD(130, 999, IIMAGEBUFFER); + YY_BREAK +case 205: +YY_RULE_SETUP +#line 409 "glsl_lexer.lpp" +KEYWORD(130, 999, UIMAGEBUFFER); + YY_BREAK +case 206: +YY_RULE_SETUP +#line 410 "glsl_lexer.lpp" +KEYWORD(130, 999, ROW_MAJOR); + YY_BREAK +case 207: +YY_RULE_SETUP +#line 412 "glsl_lexer.lpp" { struct _mesa_glsl_parse_state *state = yyextra; void *ctx = state; @@ -2366,17 +2519,17 @@ YY_RULE_SETUP return IDENTIFIER; } YY_BREAK -case 188: +case 208: YY_RULE_SETUP -#line 391 "glsl_lexer.lpp" +#line 419 "glsl_lexer.lpp" { return yytext[0]; } YY_BREAK -case 189: +case 209: YY_RULE_SETUP -#line 393 "glsl_lexer.lpp" +#line 421 "glsl_lexer.lpp" ECHO; YY_BREAK -#line 2380 "glsl_lexer.cpp" +#line 2533 "glsl_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(PP): case YY_STATE_EOF(PRAGMA): @@ -2674,7 +2827,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 716 ) + if ( yy_current_state >= 813 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2703,11 +2856,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 716 ) + if ( yy_current_state >= 813 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 715); + yy_is_jam = (yy_current_state == 812); return yy_is_jam ? 0 : yy_current_state; } @@ -3112,8 +3265,8 @@ YY_BUFFER_STATE _mesa_glsl__scan_string (yyconst char * yystr , yyscan_t yyscann /** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lex() will * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ @@ -3519,7 +3672,7 @@ void _mesa_glsl_free (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 393 "glsl_lexer.lpp" +#line 421 "glsl_lexer.lpp" diff --git a/src/glsl/glsl_lexer.lpp b/src/glsl/glsl_lexer.lpp index f690c4728b..7a3f1a67e6 100644 --- a/src/glsl/glsl_lexer.lpp +++ b/src/glsl/glsl_lexer.lpp @@ -36,36 +36,44 @@ #define YY_USER_INIT yylineno = 0; yycolumn = 0; -#define TOKEN_OR_IDENTIFIER(version, token) \ - do { \ - if (yyextra->language_version >= version) { \ - return token; \ - } else { \ - yylval->identifier = strdup(yytext); \ - return IDENTIFIER; \ - } \ - } while (0) - -/* Handle reserved words in GLSL ES (version 100) */ -#define TOKEN_OR_IDENTIFIER_ES(version, token) \ - do { \ - if (yyextra->es_shader) { \ - return token; \ - } else { \ - TOKEN_OR_IDENTIFIER(version, token); \ - } \ - } while (0) +#define IS_UINT (yytext[yyleng - 1] == 'u' || yytext[yyleng - 1] == 'U') -#define RESERVED_WORD(version, token) \ +/* A macro for handling reserved words and keywords across language versions. + * + * Certain words start out as identifiers, become reserved words in + * later language revisions, and finally become language keywords. + * + * For example, consider the following lexer rule: + * samplerBuffer KEYWORD(130, 140, SAMPLERBUFFER) + * + * This means that "samplerBuffer" will be treated as: + * - a keyword (SAMPLERBUFFER token) ...in GLSL >= 1.40 + * - a reserved word - error ...in GLSL >= 1.30 + * - an identifier ...in GLSL < 1.30 + */ +#define KEYWORD(reserved_version, allowed_version, token) \ do { \ - if (yyextra->language_version >= version) { \ + if (yyextra->language_version >= allowed_version) { \ return token; \ - } else { \ + } else if (yyextra->language_version >= reserved_version) { \ _mesa_glsl_error(yylloc, yyextra, \ "Illegal use of reserved word `%s'", yytext); \ return ERROR_TOK; \ + } else { \ + yylval->identifier = strdup(yytext); \ + return IDENTIFIER; \ } \ } while (0) + +/* The ES macro can be used in KEYWORD checks: + * + * word KEYWORD(110 || ES, 400, TOKEN) + * ...means the word is reserved in GLSL ES 1.00, while + * + * word KEYWORD(110, 130 || ES, TOKEN) + * ...means the word is a legal keyword in GLSL ES 1.00. + */ +#define ES yyextra->es_shader %} %option bison-bridge bison-locations reentrant noyywrap @@ -161,7 +169,7 @@ const return CONST_TOK; bool return BOOL_TOK; float return FLOAT_TOK; int return INT_TOK; -uint TOKEN_OR_IDENTIFIER(130, UINT_TOK); +uint KEYWORD(130, 130, UINT_TOK); break return BREAK; continue return CONTINUE; @@ -179,43 +187,60 @@ bvec4 return BVEC4; ivec2 return IVEC2; ivec3 return IVEC3; ivec4 return IVEC4; -uvec2 TOKEN_OR_IDENTIFIER(130, UVEC2); -uvec3 TOKEN_OR_IDENTIFIER(130, UVEC3); -uvec4 TOKEN_OR_IDENTIFIER(130, UVEC4); +uvec2 KEYWORD(130, 130, UVEC2); +uvec3 KEYWORD(130, 130, UVEC3); +uvec4 KEYWORD(130, 130, UVEC4); vec2 return VEC2; vec3 return VEC3; vec4 return VEC4; mat2 return MAT2X2; mat3 return MAT3X3; mat4 return MAT4X4; -mat2x2 TOKEN_OR_IDENTIFIER(120, MAT2X2); -mat2x3 TOKEN_OR_IDENTIFIER(120, MAT2X3); -mat2x4 TOKEN_OR_IDENTIFIER(120, MAT2X4); -mat3x2 TOKEN_OR_IDENTIFIER(120, MAT3X2); -mat3x3 TOKEN_OR_IDENTIFIER(120, MAT3X3); -mat3x4 TOKEN_OR_IDENTIFIER(120, MAT3X4); -mat4x2 TOKEN_OR_IDENTIFIER(120, MAT4X2); -mat4x3 TOKEN_OR_IDENTIFIER(120, MAT4X3); -mat4x4 TOKEN_OR_IDENTIFIER(120, MAT4X4); +mat2x2 KEYWORD(120, 120, MAT2X2); +mat2x3 KEYWORD(120, 120, MAT2X3); +mat2x4 KEYWORD(120, 120, MAT2X4); +mat3x2 KEYWORD(120, 120, MAT3X2); +mat3x3 KEYWORD(120, 120, MAT3X3); +mat3x4 KEYWORD(120, 120, MAT3X4); +mat4x2 KEYWORD(120, 120, MAT4X2); +mat4x3 KEYWORD(120, 120, MAT4X3); +mat4x4 KEYWORD(120, 120, MAT4X4); in return IN_TOK; out return OUT_TOK; inout return INOUT_TOK; uniform return UNIFORM; varying return VARYING; -centroid TOKEN_OR_IDENTIFIER(120, CENTROID); -invariant TOKEN_OR_IDENTIFIER_ES(120, INVARIANT); - -flat TOKEN_OR_IDENTIFIER_ES(130, FLAT); -smooth TOKEN_OR_IDENTIFIER(130, SMOOTH); -noperspective TOKEN_OR_IDENTIFIER(130, NOPERSPECTIVE); +centroid KEYWORD(120, 120, CENTROID); +invariant KEYWORD(120 || ES, 120 || ES, INVARIANT); +flat KEYWORD(130 || ES, 130, FLAT); +smooth KEYWORD(130, 130, SMOOTH); +noperspective KEYWORD(130, 130, NOPERSPECTIVE); sampler1D return SAMPLER1D; sampler2D return SAMPLER2D; sampler3D return SAMPLER3D; samplerCube return SAMPLERCUBE; +sampler1DArray KEYWORD(130, 130, SAMPLER1DARRAY); +sampler2DArray KEYWORD(130, 130, SAMPLER2DARRAY); sampler1DShadow return SAMPLER1DSHADOW; sampler2DShadow return SAMPLER2DSHADOW; +samplerCubeShadow KEYWORD(130, 130, SAMPLERCUBESHADOW); +sampler1DArrayShadow KEYWORD(130, 130, SAMPLER1DARRAYSHADOW); +sampler2DArrayShadow KEYWORD(130, 130, SAMPLER2DARRAYSHADOW); +isampler1D KEYWORD(130, 130, ISAMPLER1D); +isampler2D KEYWORD(130, 130, ISAMPLER2D); +isampler3D KEYWORD(130, 130, ISAMPLER3D); +isamplerCube KEYWORD(130, 130, ISAMPLERCUBE); +isampler1DArray KEYWORD(130, 130, ISAMPLER1DARRAY); +isampler2DArray KEYWORD(130, 130, ISAMPLER2DARRAY); +usampler1D KEYWORD(130, 130, USAMPLER1D); +usampler2D KEYWORD(130, 130, USAMPLER2D); +usampler3D KEYWORD(130, 130, USAMPLER3D); +usamplerCube KEYWORD(130, 130, USAMPLERCUBE); +usampler1DArray KEYWORD(130, 130, USAMPLER1DARRAY); +usampler2DArray KEYWORD(130, 130, USAMPLER2DARRAY); + struct return STRUCT; void return VOID_TOK; @@ -254,17 +279,17 @@ layout { \|= return OR_ASSIGN; -= return SUB_ASSIGN; -[1-9][0-9]* { +[1-9][0-9]*[uU]? { yylval->n = strtol(yytext, NULL, 10); - return INTCONSTANT; + return IS_UINT ? UINTCONSTANT : INTCONSTANT; } -0[xX][0-9a-fA-F]+ { +0[xX][0-9a-fA-F]+[uU]? { yylval->n = strtol(yytext + 2, NULL, 16); - return INTCONSTANT; + return IS_UINT ? UINTCONSTANT : INTCONSTANT; } -0[0-7]* { +0[0-7]*[uU]? { yylval->n = strtol(yytext, NULL, 8); - return INTCONSTANT; + return IS_UINT ? UINTCONSTANT : INTCONSTANT; } [0-9]+\.[0-9]+([eE][+-]?[0-9]+)?[fF]? { @@ -299,87 +324,90 @@ false { /* Reserved words in GLSL 1.10. */ -asm RESERVED_WORD(999, ASM); -class RESERVED_WORD(999, CLASS); -union RESERVED_WORD(999, UNION); -enum RESERVED_WORD(999, ENUM); -typedef RESERVED_WORD(999, TYPEDEF); -template RESERVED_WORD(999, TEMPLATE); -this RESERVED_WORD(999, THIS); -packed RESERVED_WORD(999, PACKED_TOK); -goto RESERVED_WORD(999, GOTO); -switch RESERVED_WORD(130, SWITCH); -default RESERVED_WORD(130, DEFAULT); -inline RESERVED_WORD(999, INLINE_TOK); -noinline RESERVED_WORD(999, NOINLINE); -volatile RESERVED_WORD(999, VOLATILE); -public RESERVED_WORD(999, PUBLIC_TOK); -static RESERVED_WORD(999, STATIC); -extern RESERVED_WORD(999, EXTERN); -external RESERVED_WORD(999, EXTERNAL); -interface RESERVED_WORD(999, INTERFACE); -long RESERVED_WORD(999, LONG_TOK); -short RESERVED_WORD(999, SHORT_TOK); -double RESERVED_WORD(999, DOUBLE_TOK); -half RESERVED_WORD(999, HALF); -fixed RESERVED_WORD(999, FIXED_TOK); -unsigned RESERVED_WORD(999, UNSIGNED); -input RESERVED_WORD(999, INPUT_TOK); -output RESERVED_WORD(999, OUTPUT); -hvec2 RESERVED_WORD(999, HVEC2); -hvec3 RESERVED_WORD(999, HVEC3); -hvec4 RESERVED_WORD(999, HVEC4); -dvec2 RESERVED_WORD(999, DVEC2); -dvec3 RESERVED_WORD(999, DVEC3); -dvec4 RESERVED_WORD(999, DVEC4); -fvec2 RESERVED_WORD(999, FVEC2); -fvec3 RESERVED_WORD(999, FVEC3); -fvec4 RESERVED_WORD(999, FVEC4); +asm KEYWORD(110 || ES, 999, ASM); +class KEYWORD(110 || ES, 999, CLASS); +union KEYWORD(110 || ES, 999, UNION); +enum KEYWORD(110 || ES, 999, ENUM); +typedef KEYWORD(110 || ES, 999, TYPEDEF); +template KEYWORD(110 || ES, 999, TEMPLATE); +this KEYWORD(110 || ES, 999, THIS); +packed KEYWORD(110 || ES, 999, PACKED_TOK); +goto KEYWORD(110 || ES, 999, GOTO); +switch KEYWORD(110 || ES, 130, SWITCH); +default KEYWORD(110 || ES, 130, DEFAULT); +inline KEYWORD(110 || ES, 999, INLINE_TOK); +noinline KEYWORD(110 || ES, 999, NOINLINE); +volatile KEYWORD(110 || ES, 999, VOLATILE); +public KEYWORD(110 || ES, 999, PUBLIC_TOK); +static KEYWORD(110 || ES, 999, STATIC); +extern KEYWORD(110 || ES, 999, EXTERN); +external KEYWORD(110 || ES, 999, EXTERNAL); +interface KEYWORD(110 || ES, 999, INTERFACE); +long KEYWORD(110 || ES, 999, LONG_TOK); +short KEYWORD(110 || ES, 999, SHORT_TOK); +double KEYWORD(110 || ES, 400, DOUBLE_TOK); +half KEYWORD(110 || ES, 999, HALF); +fixed KEYWORD(110 || ES, 999, FIXED_TOK); +unsigned KEYWORD(110 || ES, 999, UNSIGNED); +input KEYWORD(110 || ES, 999, INPUT_TOK); +output KEYWORD(110 || ES, 999, OUTPUT); +hvec2 KEYWORD(110 || ES, 999, HVEC2); +hvec3 KEYWORD(110 || ES, 999, HVEC3); +hvec4 KEYWORD(110 || ES, 999, HVEC4); +dvec2 KEYWORD(110 || ES, 400, DVEC2); +dvec3 KEYWORD(110 || ES, 400, DVEC3); +dvec4 KEYWORD(110 || ES, 400, DVEC4); +fvec2 KEYWORD(110 || ES, 999, FVEC2); +fvec3 KEYWORD(110 || ES, 999, FVEC3); +fvec4 KEYWORD(110 || ES, 999, FVEC4); sampler2DRect return SAMPLER2DRECT; -sampler3DRect RESERVED_WORD(999, SAMPLER3DRECT); +sampler3DRect KEYWORD(110 || ES, 999, SAMPLER3DRECT); sampler2DRectShadow return SAMPLER2DRECTSHADOW; -sizeof RESERVED_WORD(999, SIZEOF); -cast RESERVED_WORD(999, CAST); -namespace RESERVED_WORD(999, NAMESPACE); -using RESERVED_WORD(999, USING); +sizeof KEYWORD(110 || ES, 999, SIZEOF); +cast KEYWORD(110 || ES, 999, CAST); +namespace KEYWORD(110 || ES, 999, NAMESPACE); +using KEYWORD(110 || ES, 999, USING); /* Additional reserved words in GLSL 1.20. */ -lowp TOKEN_OR_IDENTIFIER_ES(120, LOWP); -mediump TOKEN_OR_IDENTIFIER_ES(120, MEDIUMP); -highp TOKEN_OR_IDENTIFIER_ES(120, HIGHP); -precision TOKEN_OR_IDENTIFIER_ES(120, PRECISION); +lowp KEYWORD(120, 130 || ES, LOWP); +mediump KEYWORD(120, 130 || ES, MEDIUMP); +highp KEYWORD(120, 130 || ES, HIGHP); +precision KEYWORD(120, 130 || ES, PRECISION); /* Additional reserved words in GLSL 1.30. */ -common TOKEN_OR_IDENTIFIER(130, COMMON); -partition TOKEN_OR_IDENTIFIER(130, PARTITION); -active TOKEN_OR_IDENTIFIER(130, ACTIVE); -superp TOKEN_OR_IDENTIFIER_ES(130, SUPERP); -samplerBuffer TOKEN_OR_IDENTIFIER(130, SAMPLERBUFFER); -filter TOKEN_OR_IDENTIFIER(130, FILTER); -image1D TOKEN_OR_IDENTIFIER(130, IMAGE1D); -image2D TOKEN_OR_IDENTIFIER(130, IMAGE2D); -image3D TOKEN_OR_IDENTIFIER(130, IMAGE3D); -imageCube TOKEN_OR_IDENTIFIER(130, IMAGECUBE); -iimage1D TOKEN_OR_IDENTIFIER(130, IIMAGE1D); -iimage2D TOKEN_OR_IDENTIFIER(130, IIMAGE2D); -iimage3D TOKEN_OR_IDENTIFIER(130, IIMAGE3D); -iimageCube TOKEN_OR_IDENTIFIER(130, IIMAGECUBE); -uimage1D TOKEN_OR_IDENTIFIER(130, UIMAGE1D); -uimage2D TOKEN_OR_IDENTIFIER(130, UIMAGE2D); -uimage3D TOKEN_OR_IDENTIFIER(130, UIMAGE3D); -uimageCube TOKEN_OR_IDENTIFIER(130, UIMAGECUBE); -image1DArray TOKEN_OR_IDENTIFIER(130, IMAGE1DARRAY); -image2DArray TOKEN_OR_IDENTIFIER(130, IMAGE2DARRAY); -iimage1DArray TOKEN_OR_IDENTIFIER(130, IIMAGE1DARRAY); -iimage2DArray TOKEN_OR_IDENTIFIER(130, IIMAGE2DARRAY); -uimage1DArray TOKEN_OR_IDENTIFIER(130, UIMAGE1DARRAY); -uimage2DArray TOKEN_OR_IDENTIFIER(130, UIMAGE2DARRAY); -image1DShadow TOKEN_OR_IDENTIFIER(130, IMAGE1DSHADOW); -image2DShadow TOKEN_OR_IDENTIFIER(130, IMAGE2DSHADOW); -imageBuffer TOKEN_OR_IDENTIFIER(130, IMAGEBUFFER); -iimageBuffer TOKEN_OR_IDENTIFIER(130, IIMAGEBUFFER); -uimageBuffer TOKEN_OR_IDENTIFIER(130, UIMAGEBUFFER); -row_major TOKEN_OR_IDENTIFIER(130, ROW_MAJOR); +case KEYWORD(130, 130, CASE); +common KEYWORD(130, 999, COMMON); +partition KEYWORD(130, 999, PARTITION); +active KEYWORD(130, 999, ACTIVE); +superp KEYWORD(130 || ES, 999, SUPERP); +samplerBuffer KEYWORD(130, 140, SAMPLERBUFFER); +filter KEYWORD(130, 999, FILTER); +image1D KEYWORD(130, 999, IMAGE1D); +image2D KEYWORD(130, 999, IMAGE2D); +image3D KEYWORD(130, 999, IMAGE3D); +imageCube KEYWORD(130, 999, IMAGECUBE); +iimage1D KEYWORD(130, 999, IIMAGE1D); +iimage2D KEYWORD(130, 999, IIMAGE2D); +iimage3D KEYWORD(130, 999, IIMAGE3D); +iimageCube KEYWORD(130, 999, IIMAGECUBE); +uimage1D KEYWORD(130, 999, UIMAGE1D); +uimage2D KEYWORD(130, 999, UIMAGE2D); +uimage3D KEYWORD(130, 999, UIMAGE3D); +uimageCube KEYWORD(130, 999, UIMAGECUBE); +image1DArray KEYWORD(130, 999, IMAGE1DARRAY); +image2DArray KEYWORD(130, 999, IMAGE2DARRAY); +iimage1DArray KEYWORD(130, 999, IIMAGE1DARRAY); +iimage2DArray KEYWORD(130, 999, IIMAGE2DARRAY); +uimage1DArray KEYWORD(130, 999, UIMAGE1DARRAY); +uimage2DArray KEYWORD(130, 999, UIMAGE2DARRAY); +image1DShadow KEYWORD(130, 999, IMAGE1DSHADOW); +image2DShadow KEYWORD(130, 999, IMAGE2DSHADOW); +image1DArrayShadow KEYWORD(130, 999, IMAGE1DARRAYSHADOW); +image2DArrayShadow KEYWORD(130, 999, IMAGE2DARRAYSHADOW); +imageBuffer KEYWORD(130, 999, IMAGEBUFFER); +iimageBuffer KEYWORD(130, 999, IIMAGEBUFFER); +uimageBuffer KEYWORD(130, 999, UIMAGEBUFFER); +row_major KEYWORD(130, 999, ROW_MAJOR); [_a-zA-Z][_a-zA-Z0-9]* { struct _mesa_glsl_parse_state *state = yyextra; diff --git a/src/glsl/glsl_parser.cpp b/src/glsl/glsl_parser.cpp index e6c8e8a0ec..23e439c7c5 100644 --- a/src/glsl/glsl_parser.cpp +++ b/src/glsl/glsl_parser.cpp @@ -327,7 +327,9 @@ IMAGEBUFFER = 442, IIMAGEBUFFER = 443, UIMAGEBUFFER = 444, - ROW_MAJOR = 445 + IMAGE1DARRAYSHADOW = 445, + IMAGE2DARRAYSHADOW = 446, + ROW_MAJOR = 447 }; #endif @@ -371,7 +373,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 375 "glsl_parser.cpp" +#line 377 "glsl_parser.cpp" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -396,7 +398,7 @@ typedef struct YYLTYPE /* Line 264 of yacc.c */ -#line 400 "glsl_parser.cpp" +#line 402 "glsl_parser.cpp" #ifdef short # undef short @@ -613,10 +615,10 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3692 +#define YYLAST 3718 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 215 +#define YYNTOKENS 217 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 87 /* YYNRULES -- Number of rules. */ @@ -626,7 +628,7 @@ union yyalloc /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 445 +#define YYMAXUTOK 447 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -637,16 +639,16 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 199, 2, 2, 2, 203, 206, 2, - 191, 192, 201, 197, 196, 198, 195, 202, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 210, 212, - 204, 211, 205, 209, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 201, 2, 2, 2, 205, 208, 2, + 193, 194, 203, 199, 198, 200, 197, 204, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 212, 214, + 206, 213, 207, 211, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 193, 2, 194, 207, 2, 2, 2, 2, 2, + 2, 195, 2, 196, 209, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 213, 208, 214, 200, 2, 2, 2, + 2, 2, 2, 215, 210, 216, 202, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -678,7 +680,7 @@ static const yytype_uint8 yytranslate[] = 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190 + 185, 186, 187, 188, 189, 190, 191, 192 }; #if YYDEBUG @@ -719,57 +721,57 @@ static const yytype_uint16 yyprhs[] = /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 216, 0, -1, -1, 218, 220, 217, 222, -1, -1, + 218, 0, -1, -1, 220, 222, 219, 224, -1, -1, 109, 78, 113, -1, 116, 113, -1, 117, 113, -1, - 118, 113, -1, 119, 113, -1, -1, 220, 221, -1, - 110, 76, 112, 76, 113, -1, 300, -1, 222, 300, - -1, 76, -1, 223, -1, 78, -1, 79, -1, 77, - -1, 80, -1, 191, 250, 192, -1, 224, -1, 225, - 193, 226, 194, -1, 227, -1, 225, 195, 76, -1, - 225, 84, -1, 225, 85, -1, 250, -1, 228, -1, - 229, -1, 225, 195, 229, -1, 231, 192, -1, 230, - 192, -1, 232, 74, -1, 232, -1, 232, 248, -1, - 231, 196, 248, -1, 233, 191, -1, 271, -1, 76, - -1, 81, -1, 225, -1, 84, 234, -1, 85, 234, - -1, 235, 234, -1, 197, -1, 198, -1, 199, -1, - 200, -1, 234, -1, 236, 201, 234, -1, 236, 202, - 234, -1, 236, 203, 234, -1, 236, -1, 237, 197, - 236, -1, 237, 198, 236, -1, 237, -1, 238, 82, - 237, -1, 238, 83, 237, -1, 238, -1, 239, 204, - 238, -1, 239, 205, 238, -1, 239, 86, 238, -1, - 239, 87, 238, -1, 239, -1, 240, 88, 239, -1, - 240, 89, 239, -1, 240, -1, 241, 206, 240, -1, - 241, -1, 242, 207, 241, -1, 242, -1, 243, 208, - 242, -1, 243, -1, 244, 90, 243, -1, 244, -1, - 245, 92, 244, -1, 245, -1, 246, 91, 245, -1, - 246, -1, 246, 209, 250, 210, 248, -1, 247, -1, - 234, 249, 248, -1, 211, -1, 93, -1, 94, -1, + 118, 113, -1, 119, 113, -1, -1, 222, 223, -1, + 110, 76, 112, 76, 113, -1, 302, -1, 224, 302, + -1, 76, -1, 225, -1, 78, -1, 79, -1, 77, + -1, 80, -1, 193, 252, 194, -1, 226, -1, 227, + 195, 228, 196, -1, 229, -1, 227, 197, 76, -1, + 227, 84, -1, 227, 85, -1, 252, -1, 230, -1, + 231, -1, 227, 197, 231, -1, 233, 194, -1, 232, + 194, -1, 234, 74, -1, 234, -1, 234, 250, -1, + 233, 198, 250, -1, 235, 193, -1, 273, -1, 76, + -1, 81, -1, 227, -1, 84, 236, -1, 85, 236, + -1, 237, 236, -1, 199, -1, 200, -1, 201, -1, + 202, -1, 236, -1, 238, 203, 236, -1, 238, 204, + 236, -1, 238, 205, 236, -1, 238, -1, 239, 199, + 238, -1, 239, 200, 238, -1, 239, -1, 240, 82, + 239, -1, 240, 83, 239, -1, 240, -1, 241, 206, + 240, -1, 241, 207, 240, -1, 241, 86, 240, -1, + 241, 87, 240, -1, 241, -1, 242, 88, 241, -1, + 242, 89, 241, -1, 242, -1, 243, 208, 242, -1, + 243, -1, 244, 209, 243, -1, 244, -1, 245, 210, + 244, -1, 245, -1, 246, 90, 245, -1, 246, -1, + 247, 92, 246, -1, 247, -1, 248, 91, 247, -1, + 248, -1, 248, 211, 252, 212, 250, -1, 249, -1, + 236, 251, 250, -1, 213, -1, 93, -1, 94, -1, 96, -1, 95, -1, 102, -1, 97, -1, 98, -1, - 99, -1, 100, -1, 101, -1, 248, -1, 250, 196, - 248, -1, 247, -1, 253, 212, -1, 261, 212, -1, - 108, 275, 272, 212, -1, 254, 192, -1, 256, -1, - 255, -1, 256, 258, -1, 255, 196, 258, -1, 263, - 76, 191, -1, 271, 76, -1, 271, 76, 193, 251, - 194, -1, 268, 259, 257, -1, 259, 257, -1, 268, - 259, 260, -1, 259, 260, -1, -1, 33, -1, 34, - -1, 35, -1, 271, -1, 262, -1, 261, 196, 76, - -1, 261, 196, 76, 193, 194, -1, 261, 196, 76, - 193, 251, 194, -1, 261, 196, 76, 193, 194, 211, - 281, -1, 261, 196, 76, 193, 251, 194, 211, 281, - -1, 261, 196, 76, 211, 281, -1, 263, -1, 263, - 76, -1, 263, 76, 193, 194, -1, 263, 76, 193, - 251, 194, -1, 263, 76, 193, 194, 211, 281, -1, - 263, 76, 193, 251, 194, 211, 281, -1, 263, 76, - 211, 281, -1, 103, 76, -1, 271, -1, 269, 271, - -1, 120, 191, 265, 192, -1, 266, -1, 265, 196, - 266, -1, 76, -1, 76, 211, 78, -1, 40, -1, - 39, -1, 38, -1, 4, -1, 270, -1, 264, -1, - 264, 270, -1, 267, -1, 267, 270, -1, 103, 270, - -1, 103, 267, 270, -1, 103, -1, 4, -1, 3, + 99, -1, 100, -1, 101, -1, 250, -1, 252, 198, + 250, -1, 249, -1, 255, 214, -1, 263, 214, -1, + 108, 277, 274, 214, -1, 256, 194, -1, 258, -1, + 257, -1, 258, 260, -1, 257, 198, 260, -1, 265, + 76, 193, -1, 273, 76, -1, 273, 76, 195, 253, + 196, -1, 270, 261, 259, -1, 261, 259, -1, 270, + 261, 262, -1, 261, 262, -1, -1, 33, -1, 34, + -1, 35, -1, 273, -1, 264, -1, 263, 198, 76, + -1, 263, 198, 76, 195, 196, -1, 263, 198, 76, + 195, 253, 196, -1, 263, 198, 76, 195, 196, 213, + 283, -1, 263, 198, 76, 195, 253, 196, 213, 283, + -1, 263, 198, 76, 213, 283, -1, 265, -1, 265, + 76, -1, 265, 76, 195, 196, -1, 265, 76, 195, + 253, 196, -1, 265, 76, 195, 196, 213, 283, -1, + 265, 76, 195, 253, 196, 213, 283, -1, 265, 76, + 213, 283, -1, 103, 76, -1, 273, -1, 271, 273, + -1, 120, 193, 267, 194, -1, 268, -1, 267, 198, + 268, -1, 76, -1, 76, 213, 78, -1, 40, -1, + 39, -1, 38, -1, 4, -1, 272, -1, 266, -1, + 266, 272, -1, 269, -1, 269, 272, -1, 103, 272, + -1, 103, 269, 272, -1, 103, -1, 4, -1, 3, -1, 37, -1, 32, 37, -1, 33, -1, 34, -1, - 32, 33, -1, 32, 34, -1, 36, -1, 272, -1, - 275, 272, -1, 273, -1, 273, 193, 194, -1, 273, - 193, 251, 194, -1, 274, -1, 276, -1, 76, -1, + 32, 33, -1, 32, 34, -1, 36, -1, 274, -1, + 277, 274, -1, 275, -1, 275, 195, 196, -1, 275, + 195, 253, 196, -1, 276, -1, 278, -1, 76, -1, 74, -1, 6, -1, 7, -1, 8, -1, 5, -1, 29, -1, 30, -1, 31, -1, 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, @@ -781,57 +783,57 @@ static const yytype_int16 yyrhs[] = 62, -1, 63, -1, 64, -1, 65, -1, 66, -1, 67, -1, 68, -1, 69, -1, 70, -1, 71, -1, 72, -1, 106, -1, 105, -1, 104, -1, 73, 76, - 213, 277, 214, -1, 73, 213, 277, 214, -1, 278, - -1, 277, 278, -1, 271, 279, 212, -1, 280, -1, - 279, 196, 280, -1, 76, -1, 76, 193, 251, 194, - -1, 248, -1, 252, -1, 285, -1, 284, -1, 282, - -1, 289, -1, 290, -1, 293, -1, 294, -1, 295, - -1, 299, -1, 213, 214, -1, 213, 288, 214, -1, - 287, -1, 284, -1, 213, 214, -1, 213, 288, 214, - -1, 283, -1, 288, 283, -1, 212, -1, 250, 212, - -1, 14, 191, 250, 192, 291, -1, 283, 12, 283, - -1, 283, -1, 250, -1, 263, 76, 211, 281, -1, - 17, 191, 250, 192, 285, -1, 18, 250, 210, -1, - 19, 210, -1, 75, 191, 292, 192, 286, -1, 11, - 283, 75, 191, 250, 192, 212, -1, 13, 191, 296, - 298, 192, 286, -1, 289, -1, 282, -1, 292, -1, - -1, 297, 212, -1, 297, 212, 250, -1, 10, 212, - -1, 9, 212, -1, 16, 212, -1, 16, 250, 212, - -1, 15, 212, -1, 301, -1, 252, -1, 219, -1, - 253, 287, -1 + 215, 279, 216, -1, 73, 215, 279, 216, -1, 280, + -1, 279, 280, -1, 273, 281, 214, -1, 282, -1, + 281, 198, 282, -1, 76, -1, 76, 195, 253, 196, + -1, 250, -1, 254, -1, 287, -1, 286, -1, 284, + -1, 291, -1, 292, -1, 295, -1, 296, -1, 297, + -1, 301, -1, 215, 216, -1, 215, 290, 216, -1, + 289, -1, 286, -1, 215, 216, -1, 215, 290, 216, + -1, 285, -1, 290, 285, -1, 214, -1, 252, 214, + -1, 14, 193, 252, 194, 293, -1, 285, 12, 285, + -1, 285, -1, 252, -1, 265, 76, 213, 283, -1, + 17, 193, 252, 194, 287, -1, 18, 252, 212, -1, + 19, 212, -1, 75, 193, 294, 194, 288, -1, 11, + 285, 75, 193, 252, 194, 214, -1, 13, 193, 298, + 300, 194, 288, -1, 291, -1, 284, -1, 294, -1, + -1, 299, 214, -1, 299, 214, 252, -1, 10, 214, + -1, 9, 214, -1, 16, 214, -1, 16, 252, 214, + -1, 15, 214, -1, 303, -1, 254, -1, 221, -1, + 255, 289, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 211, 211, 210, 217, 219, 239, 240, 241, 242, - 245, 247, 251, 260, 268, 279, 283, 290, 297, 304, - 311, 318, 325, 326, 332, 336, 343, 349, 358, 362, - 366, 367, 376, 377, 381, 382, 386, 392, 404, 408, - 414, 421, 432, 433, 439, 445, 455, 456, 457, 458, - 462, 463, 469, 475, 484, 485, 491, 500, 501, 507, - 516, 517, 523, 529, 535, 544, 545, 551, 560, 561, - 570, 571, 580, 581, 590, 591, 600, 601, 610, 611, - 620, 621, 630, 631, 640, 641, 642, 643, 644, 645, - 646, 647, 648, 649, 650, 654, 658, 674, 678, 682, - 686, 700, 704, 705, 709, 714, 722, 733, 743, 758, - 765, 770, 781, 794, 797, 802, 807, 816, 820, 821, - 830, 839, 848, 857, 866, 879, 890, 899, 908, 917, - 926, 935, 944, 958, 965, 976, 983, 984, 1003, 1032, - 1073, 1078, 1083, 1091, 1099, 1100, 1101, 1106, 1107, 1112, - 1117, 1123, 1131, 1136, 1141, 1146, 1152, 1157, 1162, 1167, - 1172, 1180, 1181, 1189, 1190, 1196, 1205, 1211, 1217, 1226, - 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, - 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, - 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, - 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, - 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, - 1280, 1291, 1302, 1316, 1322, 1331, 1336, 1344, 1359, 1364, - 1372, 1378, 1387, 1391, 1397, 1398, 1402, 1403, 1404, 1405, - 1406, 1407, 1408, 1412, 1418, 1427, 1428, 1432, 1438, 1447, - 1457, 1469, 1475, 1484, 1493, 1498, 1506, 1510, 1524, 1528, - 1529, 1533, 1540, 1547, 1557, 1558, 1562, 1564, 1570, 1575, - 1584, 1590, 1596, 1602, 1608, 1617, 1618, 1619, 1623 + 0, 212, 212, 211, 218, 220, 240, 241, 242, 243, + 246, 248, 252, 261, 269, 280, 284, 291, 298, 305, + 312, 319, 326, 327, 333, 337, 344, 350, 359, 363, + 367, 368, 377, 378, 382, 383, 387, 393, 405, 409, + 415, 422, 433, 434, 440, 446, 456, 457, 458, 459, + 463, 464, 470, 476, 485, 486, 492, 501, 502, 508, + 517, 518, 524, 530, 536, 545, 546, 552, 561, 562, + 571, 572, 581, 582, 591, 592, 601, 602, 611, 612, + 621, 622, 631, 632, 641, 642, 643, 644, 645, 646, + 647, 648, 649, 650, 651, 655, 659, 675, 679, 683, + 687, 701, 705, 706, 710, 715, 723, 734, 744, 759, + 766, 771, 782, 795, 798, 803, 808, 817, 821, 822, + 831, 840, 849, 858, 867, 880, 891, 900, 909, 918, + 927, 936, 945, 959, 966, 977, 984, 985, 1004, 1033, + 1074, 1079, 1084, 1092, 1100, 1101, 1102, 1107, 1108, 1113, + 1118, 1124, 1132, 1137, 1142, 1147, 1153, 1158, 1163, 1168, + 1173, 1181, 1182, 1190, 1191, 1197, 1206, 1212, 1218, 1227, + 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, + 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, + 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, + 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, + 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, + 1281, 1292, 1303, 1317, 1323, 1332, 1337, 1345, 1360, 1365, + 1373, 1379, 1388, 1392, 1398, 1399, 1403, 1404, 1405, 1406, + 1407, 1408, 1409, 1413, 1419, 1428, 1429, 1433, 1439, 1448, + 1458, 1470, 1476, 1485, 1494, 1499, 1507, 1511, 1525, 1529, + 1530, 1534, 1541, 1548, 1558, 1559, 1563, 1565, 1571, 1576, + 1585, 1591, 1597, 1603, 1609, 1618, 1619, 1620, 1624 }; #endif @@ -875,11 +877,11 @@ static const char *const yytname[] = "IIMAGE1DARRAY", "IIMAGE2DARRAY", "UIMAGE1D", "UIMAGE2D", "UIMAGE3D", "UIMAGECUBE", "UIMAGE1DARRAY", "UIMAGE2DARRAY", "IMAGE1DSHADOW", "IMAGE2DSHADOW", "IMAGEBUFFER", "IIMAGEBUFFER", "UIMAGEBUFFER", - "ROW_MAJOR", "'('", "')'", "'['", "']'", "'.'", "','", "'+'", "'-'", - "'!'", "'~'", "'*'", "'/'", "'%'", "'<'", "'>'", "'&'", "'^'", "'|'", - "'?'", "':'", "'='", "';'", "'{'", "'}'", "$accept", "translation_unit", - "$@1", "version_statement", "pragma_statement", - "extension_statement_list", "extension_statement", + "IMAGE1DARRAYSHADOW", "IMAGE2DARRAYSHADOW", "ROW_MAJOR", "'('", "')'", + "'['", "']'", "'.'", "','", "'+'", "'-'", "'!'", "'~'", "'*'", "'/'", + "'%'", "'<'", "'>'", "'&'", "'^'", "'|'", "'?'", "':'", "'='", "';'", + "'{'", "'}'", "$accept", "translation_unit", "$@1", "version_statement", + "pragma_statement", "extension_statement_list", "extension_statement", "external_declaration_list", "variable_identifier", "primary_expression", "postfix_expression", "integer_expression", "function_call", "function_call_or_method", "function_call_generic", @@ -938,43 +940,43 @@ static const yytype_uint16 yytoknum[] = 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 40, 41, 91, 93, 46, 44, 43, 45, 33, - 126, 42, 47, 37, 60, 62, 38, 94, 124, 63, - 58, 61, 59, 123, 125 + 445, 446, 447, 40, 41, 91, 93, 46, 44, 43, + 45, 33, 126, 42, 47, 37, 60, 62, 38, 94, + 124, 63, 58, 61, 59, 123, 125 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 215, 217, 216, 218, 218, 219, 219, 219, 219, - 220, 220, 221, 222, 222, 223, 224, 224, 224, 224, - 224, 224, 225, 225, 225, 225, 225, 225, 226, 227, - 228, 228, 229, 229, 230, 230, 231, 231, 232, 233, - 233, 233, 234, 234, 234, 234, 235, 235, 235, 235, - 236, 236, 236, 236, 237, 237, 237, 238, 238, 238, - 239, 239, 239, 239, 239, 240, 240, 240, 241, 241, - 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, - 247, 247, 248, 248, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 250, 250, 251, 252, 252, - 252, 253, 254, 254, 255, 255, 256, 257, 257, 258, - 258, 258, 258, 259, 259, 259, 259, 260, 261, 261, - 261, 261, 261, 261, 261, 262, 262, 262, 262, 262, - 262, 262, 262, 263, 263, 264, 265, 265, 266, 266, - 267, 267, 267, 268, 269, 269, 269, 269, 269, 269, - 269, 269, 270, 270, 270, 270, 270, 270, 270, 270, - 270, 271, 271, 272, 272, 272, 273, 273, 273, 274, - 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, - 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, - 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, - 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, - 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, - 275, 275, 275, 276, 276, 277, 277, 278, 279, 279, - 280, 280, 281, 282, 283, 283, 284, 284, 284, 284, - 284, 284, 284, 285, 285, 286, 286, 287, 287, 288, - 288, 289, 289, 290, 291, 291, 292, 292, 293, 294, - 294, 295, 295, 295, 296, 296, 297, 297, 298, 298, - 299, 299, 299, 299, 299, 300, 300, 300, 301 + 0, 217, 219, 218, 220, 220, 221, 221, 221, 221, + 222, 222, 223, 224, 224, 225, 226, 226, 226, 226, + 226, 226, 227, 227, 227, 227, 227, 227, 228, 229, + 230, 230, 231, 231, 232, 232, 233, 233, 234, 235, + 235, 235, 236, 236, 236, 236, 237, 237, 237, 237, + 238, 238, 238, 238, 239, 239, 239, 240, 240, 240, + 241, 241, 241, 241, 241, 242, 242, 242, 243, 243, + 244, 244, 245, 245, 246, 246, 247, 247, 248, 248, + 249, 249, 250, 250, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 252, 252, 253, 254, 254, + 254, 255, 256, 256, 257, 257, 258, 259, 259, 260, + 260, 260, 260, 261, 261, 261, 261, 262, 263, 263, + 263, 263, 263, 263, 263, 264, 264, 264, 264, 264, + 264, 264, 264, 265, 265, 266, 267, 267, 268, 268, + 269, 269, 269, 270, 271, 271, 271, 271, 271, 271, + 271, 271, 272, 272, 272, 272, 272, 272, 272, 272, + 272, 273, 273, 274, 274, 274, 275, 275, 275, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 277, 277, 277, 278, 278, 279, 279, 280, 281, 281, + 282, 282, 283, 284, 285, 285, 286, 286, 286, 286, + 286, 286, 286, 287, 287, 288, 288, 289, 289, 290, + 290, 291, 291, 292, 293, 293, 294, 294, 295, 296, + 296, 297, 297, 297, 298, 298, 299, 299, 300, 300, + 301, 301, 301, 301, 301, 302, 302, 302, 303 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1075,65 +1077,65 @@ static const yytype_int16 yydefgoto[] = /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -360 +#define YYPACT_NINF -350 static const yytype_int16 yypact[] = { - -54, -53, 37, -360, -26, -360, -5, -360, 73, 3276, - -360, 63, -360, -360, -360, -360, -360, -360, -360, -360, - -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, - 105, -360, -360, -360, -360, -360, -360, -360, -360, -360, - -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, - -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, - -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, - -69, -360, -360, 42, -360, -360, -360, -74, 65, 79, - 83, 85, 16, -360, -360, -360, 3276, -360, -99, 9, - 13, 5, -152, -360, 134, 17, 17, 3464, -360, -360, - -360, 18, -360, 3536, -360, -360, -360, 136, -360, -360, - -360, 0, 3464, -360, 17, -360, 3536, -360, -360, -360, - -360, 138, -360, -360, 387, -360, -360, 24, -360, -360, - -360, -360, -360, 3464, 149, 141, -360, -150, -360, -360, - -360, 2371, -360, 106, 3464, 144, 1760, -360, -360, 11, - 14, -144, -360, 12, 20, 1235, 30, 31, 22, 1992, - 38, 2914, 26, 46, -59, -360, -360, -360, -360, -360, - 2914, 2914, 2914, -360, -360, -360, -360, -360, 599, -360, - -360, -360, -70, -360, -360, -360, 36, -56, 3095, 47, - -30, 2914, -8, -113, 39, -76, 45, 34, 23, 35, - 154, 153, -79, -360, -360, -123, -360, 41, 55, -360, - -360, -360, -360, 811, -360, -360, -360, -360, -360, -360, - -360, -360, -360, 172, 3464, -164, -360, 2552, 2914, -360, - -360, -360, 56, -360, -360, 1876, 58, -110, -360, -360, - -360, -360, 171, -360, 138, -360, -360, 179, 1644, 2914, - -360, -360, -101, 2914, -90, -360, 2190, -360, -360, -51, - -360, 1023, -360, -360, 2914, 3392, -360, -360, 2914, 64, - -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, - -360, -360, -360, 2914, -360, 2914, 2914, 2914, 2914, 2914, - 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, - 2914, 2914, 2914, 2914, 2914, 2914, -360, -360, -360, 62, - -360, -360, 2733, 2914, 48, 66, -360, -360, -360, -360, - 2914, 144, -360, -360, -360, 67, -360, -360, 2190, -49, - -360, -22, -360, 238, 68, 187, 74, -360, -360, 71, - 68, 76, -360, -360, -360, -360, -360, -360, -8, -8, - -113, -113, 39, 39, 39, 39, -76, -76, 45, 34, - 23, 35, 154, 153, -84, -360, 2914, 57, 75, -360, - 2914, 69, 87, -360, 2914, -360, 70, 91, 1235, 72, - 78, 1446, -360, 2914, 90, 2914, 81, -360, 2914, -360, - -16, 2914, 1446, 267, -360, -360, 2914, -360, -360, -360, - -360, -360, -360, 2914, -360, 82, 68, -360, 1235, -360, - -360, -360, -360 + -78, -56, 54, -350, -52, -350, -37, -350, 8, 3302, + -350, -26, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + 88, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -66, -350, -350, 42, -350, -350, -350, 70, -4, 10, + 29, 34, -79, -350, -350, -350, 3302, -350, -19, -24, + -69, 5, -154, -350, 102, 16, 16, 3490, -350, -350, + -350, 18, -350, 3562, -350, -350, -350, 108, -350, -350, + -350, -8, 3490, -350, 16, -350, 3562, -350, -350, -350, + -350, 138, -350, -350, 387, -350, -350, 24, -350, -350, + -350, -350, -350, 3490, 147, 141, -350, -166, -350, -350, + -350, 2387, -350, 106, 3490, 144, 1772, -350, -350, 7, + 11, -87, -350, 14, 15, 1243, 30, 32, 20, 2004, + 37, 2936, 25, 39, -65, -350, -350, -350, -350, -350, + 2936, 2936, 2936, -350, -350, -350, -350, -350, 601, -350, + -350, -350, -59, -350, -350, -350, 28, -82, 3119, 43, + -30, 2936, -11, -2, 118, -74, 114, 35, 31, 36, + 148, 152, -77, -350, -350, -115, -350, 40, 52, -350, + -350, -350, -350, 815, -350, -350, -350, -350, -350, -350, + -350, -350, -350, 172, 3490, -180, -350, 2570, 2936, -350, + -350, -350, 53, -350, -350, 1888, 55, -113, -350, -350, + -350, -350, 173, -350, 138, -350, -350, 178, 1656, 2936, + -350, -350, -108, 2936, -161, -350, 2204, -350, -350, -68, + -350, 1029, -350, -350, 2936, 3418, -350, -350, 2936, 61, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, 2936, -350, 2936, 2936, 2936, 2936, 2936, + 2936, 2936, 2936, 2936, 2936, 2936, 2936, 2936, 2936, 2936, + 2936, 2936, 2936, 2936, 2936, 2936, -350, -350, -350, 63, + -350, -350, 2753, 2936, 46, 60, -350, -350, -350, -350, + 2936, 144, -350, -350, -350, 67, -350, -350, 2204, -55, + -350, -54, -350, 238, 65, 188, 71, -350, -350, 72, + 65, 73, -350, -350, -350, -350, -350, -350, -11, -11, + -2, -2, 118, 118, 118, 118, -74, -74, 114, 35, + 31, 36, 148, 152, -157, -350, 2936, 56, 83, -350, + 2936, 68, 84, -350, 2936, -350, 69, 90, 1243, 74, + 77, 1456, -350, 2936, 86, 2936, 79, -350, 2936, -350, + -53, 2936, 1456, 255, -350, -350, 2936, -350, -350, -350, + -350, -350, -350, 2936, -350, 80, 65, -350, 1243, -350, + -350, -350, -350 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, - -360, -360, -360, -360, 25, -360, -360, -360, -360, -135, - -360, -89, -88, -104, -91, -11, -6, -4, -3, -7, - -2, -360, -133, -97, -360, -156, -193, 4, 10, -360, - -360, -360, 80, 170, 166, 84, -360, -360, -229, -360, - -360, 59, -71, -360, -360, -72, -9, 1, -360, -360, - 225, -360, 161, -128, -360, -14, -287, 61, -151, -359, - -68, -82, 224, 135, 77, -360, -360, -13, -360, -360, - -360, -360, -360, -360, -360, 228, -360 + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, 22, -350, -350, -350, -350, -135, + -350, -83, -81, -104, -85, -13, -6, -5, -3, -1, + -7, -350, -133, -97, -350, -156, -193, 9, 12, -350, + -350, -350, 76, 170, 168, 81, -350, -350, -239, -350, + -350, 59, -71, -350, -350, -72, -9, 1, -350, -350, + 227, -350, 163, -139, -350, -12, -283, 62, -151, -349, + -67, -84, 223, 135, 66, -350, -350, -10, -350, -350, + -350, -350, -350, -350, -350, 229, -350 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1143,39 +1145,39 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -169 static const yytype_int16 yytable[] = { - 99, 115, 114, 252, 247, 254, 230, 111, 231, 128, - 292, 293, 303, 87, 262, 263, 259, -168, 240, 88, - 12, 13, 397, 138, 139, 4, 369, 335, 128, 312, - 74, 75, 76, 397, 315, 257, 258, 5, 129, 130, - 131, 226, 148, 227, 135, 12, 13, 313, 243, 30, - 31, 32, 244, 33, 34, 1, 284, 129, 130, 131, - 136, 228, 308, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 305, 30, 31, 32, 99, 33, 34, - 35, 36, 37, 387, 288, 289, 321, 7, 140, 306, - 87, 270, 230, 329, 231, 305, 88, 331, 402, 335, - 334, 404, 322, 145, 142, 8, 305, 240, 340, 409, - 308, 330, 305, 123, 124, 208, 410, 149, 113, 368, - 332, 290, 291, 264, 223, 265, 383, 372, 294, 295, - 304, 316, -40, 296, 297, 145, 267, 145, 108, 109, - 268, 337, 110, 378, 112, 305, 208, 305, 364, 11, + 99, 115, 114, 252, 247, 254, 230, 240, 231, 128, + 111, -168, 292, 293, 303, 312, 259, 335, 87, 12, + 13, 88, 4, 138, 139, 262, 263, 226, 128, 227, + 369, 1, 397, 313, 315, 257, 258, 305, 129, 130, + 131, 305, 148, 397, 135, 12, 13, 228, 30, 31, + 32, 332, 33, 34, 5, 383, 284, 129, 130, 131, + 136, 7, 308, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 8, 30, 31, 32, 99, 33, 34, + 35, 36, 37, 305, 11, 321, 107, 387, 140, 335, + 305, 270, 230, 329, 231, 87, 240, 331, 88, 306, + 334, 322, 402, 145, 142, 404, 330, 243, 340, 117, + 308, 244, 267, 409, 121, 208, 268, 149, 113, 368, + 410, 108, 109, 118, 223, 110, 337, 372, -40, 127, + 305, 316, 294, 295, 304, 145, 264, 145, 265, 378, + 379, 405, 119, 305, 305, 305, 208, 120, 364, 112, 345, 346, 347, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 208, - 379, 343, 334, 384, 305, 107, 405, 230, 117, 231, - 305, 282, 129, 130, 131, 230, 344, 231, 352, 353, - 354, 355, 118, 285, 286, 287, 119, -102, 120, 348, - 349, 126, 350, 351, 208, 356, 357, 121, 365, 127, - 137, 141, 143, 144, 150, 223, 316, 225, 390, 234, - 236, 248, 249, 241, 245, 242, 145, 393, 266, 253, - 299, 230, 246, 231, 250, 406, 255, 256, 271, 208, - 298, 12, 13, 300, 301, 302, -39, 208, 309, 323, - 318, 320, 208, 123, 325, 366, -34, 412, 374, 370, - 371, 115, 114, 380, 305, 382, 381, -40, 385, 386, - 30, 31, 32, 316, 33, 34, 35, 36, 37, 408, - 388, 389, 391, 392, 401, 178, 400, 358, 316, 396, - 342, 316, 403, 359, 411, 362, 360, 220, 361, 316, - 224, 363, 116, 324, 310, 235, 316, 373, 311, 326, - 407, 395, 125, 261, 122, 375, 0, 0, 0, 208, - 0, 0, 0, 0, 0, 327, 0, 0, 0, 0, + 126, 343, 334, 384, 74, 75, 76, 230, 137, 231, + 129, 130, 131, 282, 143, 230, 344, 231, 352, 353, + 354, 355, 285, 286, 287, 123, 124, 288, 289, -102, + 290, 291, 296, 297, 208, 348, 349, 144, 365, 350, + 351, 356, 357, 141, 150, 223, 316, 225, 390, 234, + 236, 241, 266, 248, 242, 249, 145, 393, 245, 246, + 253, 230, 256, 231, 250, 406, 271, 255, 301, 208, + 299, 12, 13, 298, 302, -39, 300, 208, 309, 318, + 320, 323, 208, 325, 123, -34, 371, 412, 366, 370, + 374, 115, 114, 305, 380, 381, -40, 408, 382, 385, + 30, 31, 32, 316, 33, 34, 35, 36, 37, 386, + 389, 388, 401, 391, 392, 358, 400, 342, 316, 178, + 396, 316, 403, 359, 411, 360, 363, 220, 361, 316, + 310, 362, 224, 324, 116, 311, 316, 235, 407, 373, + 326, 125, 395, 261, 327, 122, 0, 0, 375, 208, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1200,31 +1202,10 @@ static const yytype_int16 yytable[] = 0, 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, - 0, 0, 0, 0, 173, 174, 175, 176, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, - 178, 179, 12, 13, 14, 15, 16, 17, 153, 154, - 155, 0, 156, 157, 158, 159, 160, 161, 162, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 163, 164, 165, 166, 167, 168, - 169, 0, 0, 170, 171, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 73, 74, 75, 76, 0, 77, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 83, 0, 84, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 177, 178, 260, 12, 13, 14, 15, 16, 17, + 0, 177, 178, 179, 12, 13, 14, 15, 16, 17, 153, 154, 155, 0, 156, 157, 158, 159, 160, 161, 162, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, @@ -1243,30 +1224,9 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 172, 0, 0, 0, 0, 0, 173, 174, - 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 177, 178, 307, 12, 13, 14, 15, - 16, 17, 153, 154, 155, 0, 156, 157, 158, 159, - 160, 161, 162, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 0, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 163, 164, - 165, 166, 167, 168, 169, 0, 0, 170, 171, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 73, 74, 75, 76, - 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 83, 0, 84, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 177, 178, 338, 12, 13, + 0, 0, 0, 0, 0, 177, 178, 260, 12, 13, 14, 15, 16, 17, 153, 154, 155, 0, 156, 157, 158, 159, 160, 161, 162, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, @@ -1285,6 +1245,49 @@ static const yytype_int16 yytable[] = 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, + 0, 0, 0, 0, 173, 174, 175, 176, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, + 178, 307, 12, 13, 14, 15, 16, 17, 153, 154, + 155, 0, 156, 157, 158, 159, 160, 161, 162, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 163, 164, 165, 166, 167, 168, + 169, 0, 0, 170, 171, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 73, 74, 75, 76, 0, 77, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 83, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 172, 0, 0, 0, 0, 0, 173, 174, + 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 177, 178, 338, 12, 13, 14, 15, + 16, 17, 153, 154, 155, 0, 156, 157, 158, 159, + 160, 161, 162, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 0, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 163, 164, + 165, 166, 167, 168, 169, 0, 0, 170, 171, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 73, 74, 75, 76, + 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 83, 0, 84, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, 12, @@ -1306,114 +1309,115 @@ static const yytype_int16 yytable[] = 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, - 0, 0, 0, 173, 174, 175, 176, 12, 13, 14, - 15, 16, 17, 0, 0, 0, 0, 0, 177, 124, - 0, 0, 0, 0, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, - 164, 165, 166, 167, 168, 169, 0, 0, 170, 171, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 73, 74, 75, - 76, 0, 77, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 14, 15, 16, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 0, 0, 0, 0, 0, 0, 83, 0, - 84, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 172, 72, 0, 0, 0, - 0, 173, 174, 175, 176, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, - 0, 0, 0, 0, 74, 75, 76, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 14, 15, 16, 17, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 0, 0, - 0, 0, 0, 0, 83, 0, 84, 38, 39, 40, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, + 0, 0, 0, 0, 0, 173, 174, 175, 176, 12, + 13, 14, 15, 16, 17, 0, 0, 0, 0, 0, + 177, 124, 0, 0, 0, 0, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 0, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, - 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, + 71, 0, 164, 165, 166, 167, 168, 169, 0, 0, + 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, + 74, 75, 76, 0, 77, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 82, 14, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 0, 0, 0, 0, 0, 0, 83, 0, 84, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 0, 164, 165, - 166, 167, 168, 169, 0, 0, 170, 171, 0, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 72, 172, + 0, 0, 0, 0, 0, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 319, 0, 0, 0, 0, 0, 74, 75, 76, 0, + 177, 0, 0, 0, 0, 0, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 0, 0, 0, 0, 0, 0, 83, 0, 84, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 239, 0, + 0, 0, 74, 75, 76, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 0, 0, 0, 0, + 0, 0, 83, 0, 84, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, + 164, 165, 166, 167, 168, 169, 0, 0, 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 319, 0, 0, 0, 74, 75, + 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, + 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 172, 0, 0, 0, 0, 0, 173, - 174, 175, 176, 12, 13, 14, 15, 16, 17, 0, - 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 0, 164, 165, 166, 167, - 168, 169, 0, 0, 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 333, 74, 75, 76, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, + 0, 0, 0, 173, 174, 175, 176, 12, 13, 14, + 15, 16, 17, 0, 0, 0, 0, 0, 251, 0, + 0, 0, 0, 0, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, + 164, 165, 166, 167, 168, 169, 0, 0, 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 333, 74, 75, + 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 0, 84, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, + 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, - 0, 172, 0, 0, 0, 0, 0, 173, 174, 175, - 176, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 0, 164, 165, 166, - 167, 168, 169, 0, 0, 170, 171, 0, 0, 0, + 0, 0, 14, 15, 16, 17, 0, 172, 0, 0, + 0, 0, 0, 173, 174, 175, 176, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 0, 164, 165, 166, 167, 168, 169, 0, + 0, 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 74, 75, 76, 0, 0, + 0, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 83, 0, 84, 0, 0, + 0, 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, - 17, 0, 172, 0, 0, 229, 0, 0, 173, 174, - 175, 176, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 0, 164, 165, - 166, 167, 168, 169, 0, 0, 170, 171, 0, 0, + 0, 0, 0, 0, 0, 14, 15, 16, 17, 0, + 172, 0, 0, 229, 0, 0, 173, 174, 175, 176, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 0, 164, 165, 166, 167, + 168, 169, 0, 0, 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 74, 75, 76, 0, + 0, 0, 0, 0, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 83, 0, 84, 0, + 0, 0, 0, 0, 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, @@ -1434,122 +1438,122 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 15, 16, 17, 0, 172, 0, 0, 367, 0, 0, - 173, 174, 175, 176, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, - 164, 165, 166, 167, 168, 169, 0, 0, 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 74, 75, - 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 15, 16, 17, 0, 172, 0, 0, 367, + 0, 0, 173, 174, 175, 176, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 0, 164, 165, 166, 167, 168, 169, 0, 0, + 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, - 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 15, 16, 17, 0, 172, 0, 0, 0, 0, - 0, 173, 174, 175, 176, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 269, - 0, 164, 165, 166, 167, 168, 169, 0, 0, 170, - 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, - 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 14, 15, 16, 17, 0, 172, + 0, 0, 0, 0, 0, 173, 174, 175, 176, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 269, 0, 164, 165, 166, 167, 168, + 169, 0, 0, 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, - 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 13, 14, 15, 16, 17, 0, 172, 0, 0, 0, - 0, 0, 173, 174, 175, 176, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 0, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, - 74, 75, 76, 0, 77, 0, 0, 0, 0, 0, - 0, 0, 78, 79, 80, 81, 82, 14, 15, 16, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 83, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 13, 14, 15, 16, + 17, 0, 172, 0, 0, 0, 0, 0, 173, 174, + 175, 176, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 0, 72, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 73, 74, 75, 76, 0, + 77, 0, 0, 0, 0, 0, 0, 0, 78, 79, + 80, 81, 82, 14, 15, 16, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 0, 0, 0, 0, 0, 0, 83, 0, 84, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 0, 341, 14, 15, 16, 17, 169, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 74, 75, 76, 0, 0, 0, 0, 0, + 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 0, 72, 14, 15, 16, + 17, 0, 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 0, 0, 0, 0, 0, 0, - 83, 0, 84, 38, 39, 40, 41, 42, 43, 44, + 26, 27, 28, 29, 74, 75, 76, 0, 0, 0, + 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 0, 341, 14, - 15, 16, 17, 169, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 74, 75, 76, 0, - 0, 0, 0, 0, 0, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, - 72, 14, 15, 16, 17, 0, 83, 0, 84, 0, - 0, 0, 0, 0, 0, 0, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 74, 75, - 76, 0, 0, 0, 0, 0, 0, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 0, 72, 0, 0, 0, 0, 0, 83, 0, - 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 72, 0, + 0, 0, 0, 0, 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 0, 84 + 0, 0, 0, 0, 0, 0, 83, 0, 84 }; static const yytype_int16 yycheck[] = { - 9, 73, 73, 159, 155, 161, 141, 76, 141, 4, - 86, 87, 91, 9, 84, 85, 172, 76, 146, 9, - 3, 4, 381, 95, 96, 78, 313, 256, 4, 193, - 104, 105, 106, 392, 227, 170, 171, 0, 33, 34, - 35, 191, 114, 193, 196, 3, 4, 211, 192, 32, - 33, 34, 196, 36, 37, 109, 191, 33, 34, 35, - 212, 211, 213, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 196, 32, 33, 34, 86, 36, 37, - 38, 39, 40, 370, 197, 198, 196, 113, 97, 212, - 86, 188, 227, 249, 227, 196, 86, 253, 385, 328, - 256, 388, 212, 112, 103, 110, 196, 235, 264, 396, - 261, 212, 196, 212, 213, 124, 403, 116, 76, 312, - 210, 82, 83, 193, 133, 195, 210, 320, 204, 205, - 209, 228, 191, 88, 89, 144, 192, 146, 33, 34, - 196, 192, 37, 192, 213, 196, 155, 196, 304, 76, + 9, 73, 73, 159, 155, 161, 141, 146, 141, 4, + 76, 76, 86, 87, 91, 195, 172, 256, 9, 3, + 4, 9, 78, 95, 96, 84, 85, 193, 4, 195, + 313, 109, 381, 213, 227, 170, 171, 198, 33, 34, + 35, 198, 114, 392, 198, 3, 4, 213, 32, 33, + 34, 212, 36, 37, 0, 212, 191, 33, 34, 35, + 214, 113, 213, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 110, 32, 33, 34, 86, 36, 37, + 38, 39, 40, 198, 76, 198, 112, 370, 97, 328, + 198, 188, 227, 249, 227, 86, 235, 253, 86, 214, + 256, 214, 385, 112, 103, 388, 214, 194, 264, 113, + 261, 198, 194, 396, 193, 124, 198, 116, 76, 312, + 403, 33, 34, 113, 133, 37, 194, 320, 193, 198, + 198, 228, 206, 207, 211, 144, 195, 146, 197, 194, + 194, 194, 113, 198, 198, 198, 155, 113, 304, 215, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 178, - 192, 268, 328, 366, 196, 112, 192, 312, 113, 312, - 196, 211, 33, 34, 35, 320, 283, 320, 292, 293, - 294, 295, 113, 201, 202, 203, 113, 192, 113, 288, - 289, 192, 290, 291, 213, 296, 297, 191, 305, 196, - 76, 193, 76, 213, 76, 224, 313, 76, 374, 113, - 76, 191, 191, 212, 212, 211, 235, 378, 192, 191, - 207, 366, 212, 366, 212, 391, 210, 191, 191, 248, - 206, 3, 4, 208, 90, 92, 191, 256, 76, 78, - 194, 193, 261, 212, 75, 193, 192, 408, 191, 211, - 194, 333, 333, 76, 196, 194, 192, 191, 211, 194, - 32, 33, 34, 370, 36, 37, 38, 39, 40, 12, - 211, 194, 212, 192, 194, 213, 383, 298, 385, 211, - 265, 388, 211, 299, 212, 302, 300, 127, 301, 396, - 134, 303, 77, 244, 224, 144, 403, 321, 224, 248, - 392, 379, 88, 178, 86, 328, -1, -1, -1, 328, - -1, -1, -1, -1, -1, 248, -1, -1, -1, -1, + 194, 268, 328, 366, 104, 105, 106, 312, 76, 312, + 33, 34, 35, 213, 76, 320, 283, 320, 292, 293, + 294, 295, 203, 204, 205, 214, 215, 199, 200, 194, + 82, 83, 88, 89, 213, 288, 289, 215, 305, 290, + 291, 296, 297, 195, 76, 224, 313, 76, 374, 113, + 76, 214, 194, 193, 213, 193, 235, 378, 214, 214, + 193, 366, 193, 366, 214, 391, 193, 212, 90, 248, + 209, 3, 4, 208, 92, 193, 210, 256, 76, 196, + 195, 78, 261, 75, 214, 194, 196, 408, 195, 213, + 193, 333, 333, 198, 76, 194, 193, 12, 196, 213, + 32, 33, 34, 370, 36, 37, 38, 39, 40, 196, + 196, 213, 196, 214, 194, 298, 383, 265, 385, 215, + 213, 388, 213, 299, 214, 300, 303, 127, 301, 396, + 224, 302, 134, 244, 77, 224, 403, 144, 392, 321, + 248, 88, 379, 178, 248, 86, -1, -1, 328, 328, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1574,31 +1578,10 @@ static const yytype_int16 yycheck[] = -1, 154, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 191, -1, - -1, -1, -1, -1, 197, 198, 199, 200, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 212, - 213, 214, 3, 4, 5, 6, 7, 8, 9, 10, - 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, -1, -1, 84, 85, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 103, 104, 105, 106, -1, 108, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 120, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 154, -1, 156, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 191, -1, -1, -1, -1, -1, 197, 198, 199, 200, + 193, -1, -1, -1, -1, -1, 199, 200, 201, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 212, 213, 214, 3, 4, 5, 6, 7, 8, + -1, 214, 215, 216, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, @@ -1617,30 +1600,9 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 191, -1, -1, -1, -1, -1, 197, 198, - 199, 200, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 212, 213, 214, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, -1, -1, 84, 85, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 103, 104, 105, 106, - -1, 108, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 120, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 154, -1, 156, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 191, -1, -1, -1, -1, -1, - 197, 198, 199, 200, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 212, 213, 214, 3, 4, + -1, -1, -1, -1, 193, -1, -1, -1, -1, -1, + 199, 200, 201, 202, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 214, 215, 216, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, @@ -1659,9 +1621,52 @@ static const yytype_int16 yycheck[] = -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 191, -1, -1, -1, - -1, -1, 197, 198, 199, 200, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 212, 213, 3, + -1, -1, -1, -1, -1, -1, -1, -1, 193, -1, + -1, -1, -1, -1, 199, 200, 201, 202, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, + 215, 216, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, -1, -1, 84, 85, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 103, 104, 105, 106, -1, 108, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 120, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 154, -1, 156, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 193, -1, -1, -1, -1, -1, 199, 200, + 201, 202, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 214, 215, 216, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, -1, -1, 84, 85, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 103, 104, 105, 106, + -1, 108, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 120, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 154, -1, 156, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, + -1, -1, 199, 200, 201, 202, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 214, 215, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -1680,119 +1685,120 @@ static const yytype_int16 yycheck[] = 154, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 191, -1, -1, - -1, -1, -1, 197, 198, 199, 200, 3, 4, 5, - 6, 7, 8, -1, -1, -1, -1, -1, 212, 213, - -1, -1, -1, -1, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, - 76, 77, 78, 79, 80, 81, -1, -1, 84, 85, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, - 106, -1, 108, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 120, 5, 6, 7, 8, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, -1, -1, -1, -1, -1, -1, 154, -1, - 156, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 191, 76, -1, -1, -1, - -1, 197, 198, 199, 200, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 212, -1, -1, -1, - -1, -1, -1, -1, 104, 105, 106, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 5, 6, 7, 8, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, - -1, -1, -1, -1, 154, -1, 156, 41, 42, 43, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, + -1, -1, -1, -1, -1, 199, 200, 201, 202, 3, + 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, + 214, 215, -1, -1, -1, -1, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, -1, 76, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 214, -1, -1, -1, -1, -1, - 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 5, 6, 7, + 74, -1, 76, 77, 78, 79, 80, 81, -1, -1, + 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, + 104, 105, 106, -1, 108, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 120, 5, 6, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, 154, -1, 156, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, - 78, 79, 80, 81, -1, -1, 84, 85, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 193, + -1, -1, -1, -1, -1, 199, 200, 201, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, -1, -1, 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5, 6, 7, 8, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + -1, -1, -1, -1, -1, -1, 154, -1, 156, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, + -1, -1, 104, 105, 106, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, + 6, 7, 8, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, + -1, -1, 154, -1, 156, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, 81, -1, -1, 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 216, -1, -1, -1, 104, 105, + 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 154, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, + 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 191, -1, -1, -1, -1, -1, 197, - 198, 199, 200, 3, 4, 5, 6, 7, 8, -1, - -1, -1, -1, -1, 212, -1, -1, -1, -1, -1, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, - 80, 81, -1, -1, 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 103, 104, 105, 106, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 193, -1, -1, + -1, -1, -1, 199, 200, 201, 202, 3, 4, 5, + 6, 7, 8, -1, -1, -1, -1, -1, 214, -1, + -1, -1, -1, -1, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, 81, -1, -1, 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, + 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 154, -1, 156, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, + 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 5, 6, 7, 8, - -1, 191, -1, -1, -1, -1, -1, 197, 198, 199, - 200, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, - 79, 80, 81, -1, -1, 84, 85, -1, -1, -1, + -1, -1, 5, 6, 7, 8, -1, 193, -1, -1, + -1, -1, -1, 199, 200, 201, 202, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, -1, 76, 77, 78, 79, 80, 81, -1, + -1, 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 104, 105, 106, -1, -1, + -1, 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 154, -1, 156, -1, -1, + -1, 154, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 5, 6, 7, - 8, -1, 191, -1, -1, 194, -1, -1, 197, 198, - 199, 200, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, - 78, 79, 80, 81, -1, -1, 84, 85, -1, -1, + -1, -1, -1, -1, -1, 5, 6, 7, 8, -1, + 193, -1, -1, 196, -1, -1, 199, 200, 201, 202, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, 81, -1, -1, 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 104, 105, 106, -1, + -1, -1, -1, -1, 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 154, -1, 156, -1, + -1, -1, -1, -1, 154, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, - 7, 8, -1, 191, -1, -1, 194, -1, -1, 197, - 198, 199, 200, 20, 21, 22, 23, 24, 25, 26, + 7, 8, -1, 193, -1, -1, 196, -1, -1, 199, + 200, 201, 202, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, @@ -1808,133 +1814,133 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 154, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, - 6, 7, 8, -1, 191, -1, -1, 194, -1, -1, - 197, 198, 199, 200, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, - 76, 77, 78, 79, 80, 81, -1, -1, 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 104, 105, - 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5, 6, 7, 8, -1, 193, -1, -1, 196, + -1, -1, 199, 200, 201, 202, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, 81, -1, -1, + 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, - 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 5, 6, 7, 8, -1, 191, -1, -1, -1, -1, - -1, 197, 198, 199, 200, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - -1, 76, 77, 78, 79, 80, 81, -1, -1, 84, - 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, - 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, + 154, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5, 6, 7, 8, -1, 193, + -1, -1, -1, -1, -1, 199, 200, 201, 202, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, + 81, -1, -1, 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 154, - -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, -1, 191, -1, -1, -1, - -1, -1, 197, 198, 199, 200, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, - 104, 105, 106, -1, 108, -1, -1, -1, -1, -1, - -1, -1, 116, 117, 118, 119, 120, 5, 6, 7, - 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 154, -1, 156, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, + 8, -1, 193, -1, -1, -1, -1, -1, 199, 200, + 201, 202, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, 76, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 103, 104, 105, 106, -1, + 108, -1, -1, -1, -1, -1, -1, -1, 116, 117, + 118, 119, 120, 5, 6, 7, 8, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + -1, -1, -1, -1, -1, -1, 154, -1, 156, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 5, 6, 7, 8, 81, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 104, 105, 106, -1, -1, -1, -1, -1, + -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 5, 6, 7, + 8, -1, 154, -1, 156, -1, -1, -1, -1, -1, -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, - 154, -1, 156, 41, 42, 43, 44, 45, 46, 47, + 28, 29, 30, 31, 104, 105, 106, -1, -1, -1, + -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, -1, 76, 5, - 6, 7, 8, 81, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 104, 105, 106, -1, - -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, - 76, 5, 6, 7, 8, -1, 154, -1, 156, -1, - -1, -1, -1, -1, -1, -1, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 104, 105, - 106, -1, -1, -1, -1, -1, -1, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, -1, 76, -1, -1, -1, -1, -1, 154, -1, - 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, -1, + -1, -1, -1, -1, 154, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 154, -1, 156 + -1, -1, -1, -1, -1, -1, 154, -1, 156 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 109, 216, 218, 78, 0, 220, 113, 110, 217, - 221, 76, 3, 4, 5, 6, 7, 8, 20, 21, + 0, 109, 218, 220, 78, 0, 222, 113, 110, 219, + 223, 76, 3, 4, 5, 6, 7, 8, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 103, 104, 105, 106, 108, 116, 117, - 118, 119, 120, 154, 156, 219, 222, 252, 253, 254, - 255, 256, 261, 262, 263, 264, 267, 269, 270, 271, - 272, 273, 274, 275, 276, 300, 301, 112, 33, 34, - 37, 76, 213, 76, 267, 270, 275, 113, 113, 113, - 113, 191, 300, 212, 213, 287, 192, 196, 4, 33, - 34, 35, 258, 259, 268, 196, 212, 76, 270, 270, - 271, 193, 272, 76, 213, 271, 277, 278, 270, 272, - 76, 265, 266, 9, 10, 11, 13, 14, 15, 16, + 118, 119, 120, 154, 156, 221, 224, 254, 255, 256, + 257, 258, 263, 264, 265, 266, 269, 271, 272, 273, + 274, 275, 276, 277, 278, 302, 303, 112, 33, 34, + 37, 76, 215, 76, 269, 272, 277, 113, 113, 113, + 113, 193, 302, 214, 215, 289, 194, 198, 4, 33, + 34, 35, 260, 261, 270, 198, 214, 76, 272, 272, + 273, 195, 274, 76, 215, 273, 279, 280, 272, 274, + 76, 267, 268, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 75, 76, 77, 78, 79, 80, 81, - 84, 85, 191, 197, 198, 199, 200, 212, 213, 214, - 223, 224, 225, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 250, 252, 253, 271, 282, - 283, 284, 285, 288, 289, 290, 293, 294, 295, 299, - 258, 257, 260, 271, 259, 76, 191, 193, 211, 194, - 234, 247, 251, 271, 113, 277, 76, 279, 280, 214, - 278, 212, 211, 192, 196, 212, 212, 283, 191, 191, - 212, 212, 250, 191, 250, 210, 191, 234, 234, 250, - 214, 288, 84, 85, 193, 195, 192, 192, 196, 74, - 248, 191, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 211, 249, 234, 201, 202, 203, 197, 198, - 82, 83, 86, 87, 204, 205, 88, 89, 206, 207, - 208, 90, 92, 91, 209, 196, 212, 214, 283, 76, - 257, 260, 193, 211, 194, 251, 248, 281, 194, 214, - 193, 196, 212, 78, 266, 75, 282, 289, 296, 250, - 212, 250, 210, 103, 250, 263, 292, 192, 214, 226, - 250, 76, 229, 248, 248, 234, 234, 234, 236, 236, - 237, 237, 238, 238, 238, 238, 239, 239, 240, 241, - 242, 243, 244, 245, 250, 248, 193, 194, 251, 281, - 211, 194, 251, 280, 191, 292, 297, 298, 192, 192, - 76, 192, 194, 210, 251, 211, 194, 281, 211, 194, - 250, 212, 192, 283, 291, 285, 211, 284, 286, 287, - 248, 194, 281, 211, 281, 192, 250, 286, 12, 281, - 281, 212, 283 + 84, 85, 193, 199, 200, 201, 202, 214, 215, 216, + 225, 226, 227, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 252, 254, 255, 273, 284, + 285, 286, 287, 290, 291, 292, 295, 296, 297, 301, + 260, 259, 262, 273, 261, 76, 193, 195, 213, 196, + 236, 249, 253, 273, 113, 279, 76, 281, 282, 216, + 280, 214, 213, 194, 198, 214, 214, 285, 193, 193, + 214, 214, 252, 193, 252, 212, 193, 236, 236, 252, + 216, 290, 84, 85, 195, 197, 194, 194, 198, 74, + 250, 193, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 213, 251, 236, 203, 204, 205, 199, 200, + 82, 83, 86, 87, 206, 207, 88, 89, 208, 209, + 210, 90, 92, 91, 211, 198, 214, 216, 285, 76, + 259, 262, 195, 213, 196, 253, 250, 283, 196, 216, + 195, 198, 214, 78, 268, 75, 284, 291, 298, 252, + 214, 252, 212, 103, 252, 265, 294, 194, 216, 228, + 252, 76, 231, 250, 250, 236, 236, 236, 238, 238, + 239, 239, 240, 240, 240, 240, 241, 241, 242, 243, + 244, 245, 246, 247, 252, 250, 195, 196, 253, 283, + 213, 196, 253, 282, 193, 294, 299, 300, 194, 194, + 76, 194, 196, 212, 253, 213, 196, 283, 213, 196, + 252, 214, 194, 285, 293, 287, 213, 286, 288, 289, + 250, 196, 283, 213, 283, 194, 252, 288, 12, 283, + 283, 214, 285 }; #define yyerrok (yyerrstatus = 0) @@ -2625,7 +2631,7 @@ YYLTYPE yylloc; } /* Line 1251 of yacc.c */ -#line 2629 "glsl_parser.cpp" +#line 2635 "glsl_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -2813,7 +2819,7 @@ yyreduce: case 2: /* Line 1464 of yacc.c */ -#line 211 "glsl_parser.ypp" +#line 212 "glsl_parser.ypp" { _mesa_glsl_initialize_types(state); ;} @@ -2822,7 +2828,7 @@ yyreduce: case 5: /* Line 1464 of yacc.c */ -#line 220 "glsl_parser.ypp" +#line 221 "glsl_parser.ypp" { switch ((yyvsp[(2) - (3)].n)) { case 100: @@ -2844,7 +2850,7 @@ yyreduce: case 12: /* Line 1464 of yacc.c */ -#line 252 "glsl_parser.ypp" +#line 253 "glsl_parser.ypp" { if (!_mesa_glsl_process_extension((yyvsp[(2) - (5)].identifier), & (yylsp[(2) - (5)]), (yyvsp[(4) - (5)].identifier), & (yylsp[(4) - (5)]), state)) { YYERROR; @@ -2855,7 +2861,7 @@ yyreduce: case 13: /* Line 1464 of yacc.c */ -#line 261 "glsl_parser.ypp" +#line 262 "glsl_parser.ypp" { /* FINISHME: The NULL test is only required because 'precision' * FINISHME: statements are not yet supported. @@ -2868,7 +2874,7 @@ yyreduce: case 14: /* Line 1464 of yacc.c */ -#line 269 "glsl_parser.ypp" +#line 270 "glsl_parser.ypp" { /* FINISHME: The NULL test is only required because 'precision' * FINISHME: statements are not yet supported. @@ -2881,7 +2887,7 @@ yyreduce: case 16: /* Line 1464 of yacc.c */ -#line 284 "glsl_parser.ypp" +#line 285 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_identifier, NULL, NULL, NULL); @@ -2893,7 +2899,7 @@ yyreduce: case 17: /* Line 1464 of yacc.c */ -#line 291 "glsl_parser.ypp" +#line 292 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_int_constant, NULL, NULL, NULL); @@ -2905,7 +2911,7 @@ yyreduce: case 18: /* Line 1464 of yacc.c */ -#line 298 "glsl_parser.ypp" +#line 299 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_uint_constant, NULL, NULL, NULL); @@ -2917,7 +2923,7 @@ yyreduce: case 19: /* Line 1464 of yacc.c */ -#line 305 "glsl_parser.ypp" +#line 306 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_float_constant, NULL, NULL, NULL); @@ -2929,7 +2935,7 @@ yyreduce: case 20: /* Line 1464 of yacc.c */ -#line 312 "glsl_parser.ypp" +#line 313 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_bool_constant, NULL, NULL, NULL); @@ -2941,7 +2947,7 @@ yyreduce: case 21: /* Line 1464 of yacc.c */ -#line 319 "glsl_parser.ypp" +#line 320 "glsl_parser.ypp" { (yyval.expression) = (yyvsp[(2) - (3)].expression); ;} @@ -2950,7 +2956,7 @@ yyreduce: case 23: /* Line 1464 of yacc.c */ -#line 327 "glsl_parser.ypp" +#line 328 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_array_index, (yyvsp[(1) - (4)].expression), (yyvsp[(3) - (4)].expression), NULL); @@ -2961,7 +2967,7 @@ yyreduce: case 24: /* Line 1464 of yacc.c */ -#line 333 "glsl_parser.ypp" +#line 334 "glsl_parser.ypp" { (yyval.expression) = (yyvsp[(1) - (1)].expression); ;} @@ -2970,7 +2976,7 @@ yyreduce: case 25: /* Line 1464 of yacc.c */ -#line 337 "glsl_parser.ypp" +#line 338 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), NULL, NULL); @@ -2982,7 +2988,7 @@ yyreduce: case 26: /* Line 1464 of yacc.c */ -#line 344 "glsl_parser.ypp" +#line 345 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_post_inc, (yyvsp[(1) - (2)].expression), NULL, NULL); @@ -2993,7 +2999,7 @@ yyreduce: case 27: /* Line 1464 of yacc.c */ -#line 350 "glsl_parser.ypp" +#line 351 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_post_dec, (yyvsp[(1) - (2)].expression), NULL, NULL); @@ -3004,7 +3010,7 @@ yyreduce: case 31: /* Line 1464 of yacc.c */ -#line 368 "glsl_parser.ypp" +#line 369 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL); @@ -3015,7 +3021,7 @@ yyreduce: case 36: /* Line 1464 of yacc.c */ -#line 387 "glsl_parser.ypp" +#line 388 "glsl_parser.ypp" { (yyval.expression) = (yyvsp[(1) - (2)].expression); (yyval.expression)->set_location(yylloc); @@ -3026,7 +3032,7 @@ yyreduce: case 37: /* Line 1464 of yacc.c */ -#line 393 "glsl_parser.ypp" +#line 394 "glsl_parser.ypp" { (yyval.expression) = (yyvsp[(1) - (3)].expression); (yyval.expression)->set_location(yylloc); @@ -3037,7 +3043,7 @@ yyreduce: case 39: /* Line 1464 of yacc.c */ -#line 409 "glsl_parser.ypp" +#line 410 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_function_expression((yyvsp[(1) - (1)].type_specifier)); @@ -3048,7 +3054,7 @@ yyreduce: case 40: /* Line 1464 of yacc.c */ -#line 415 "glsl_parser.ypp" +#line 416 "glsl_parser.ypp" { void *ctx = state; ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier)); @@ -3060,7 +3066,7 @@ yyreduce: case 41: /* Line 1464 of yacc.c */ -#line 422 "glsl_parser.ypp" +#line 423 "glsl_parser.ypp" { void *ctx = state; ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier)); @@ -3072,7 +3078,7 @@ yyreduce: case 43: /* Line 1464 of yacc.c */ -#line 434 "glsl_parser.ypp" +#line 435 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_pre_inc, (yyvsp[(2) - (2)].expression), NULL, NULL); @@ -3083,7 +3089,7 @@ yyreduce: case 44: /* Line 1464 of yacc.c */ -#line 440 "glsl_parser.ypp" +#line 441 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_pre_dec, (yyvsp[(2) - (2)].expression), NULL, NULL); @@ -3094,7 +3100,7 @@ yyreduce: case 45: /* Line 1464 of yacc.c */ -#line 446 "glsl_parser.ypp" +#line 447 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression((yyvsp[(1) - (2)].n), (yyvsp[(2) - (2)].expression), NULL, NULL); @@ -3105,35 +3111,35 @@ yyreduce: case 46: /* Line 1464 of yacc.c */ -#line 455 "glsl_parser.ypp" +#line 456 "glsl_parser.ypp" { (yyval.n) = ast_plus; ;} break; case 47: /* Line 1464 of yacc.c */ -#line 456 "glsl_parser.ypp" +#line 457 "glsl_parser.ypp" { (yyval.n) = ast_neg; ;} break; case 48: /* Line 1464 of yacc.c */ -#line 457 "glsl_parser.ypp" +#line 458 "glsl_parser.ypp" { (yyval.n) = ast_logic_not; ;} break; case 49: /* Line 1464 of yacc.c */ -#line 458 "glsl_parser.ypp" +#line 459 "glsl_parser.ypp" { (yyval.n) = ast_bit_not; ;} break; case 51: /* Line 1464 of yacc.c */ -#line 464 "glsl_parser.ypp" +#line 465 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_mul, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3144,7 +3150,7 @@ yyreduce: case 52: /* Line 1464 of yacc.c */ -#line 470 "glsl_parser.ypp" +#line 471 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_div, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3155,7 +3161,7 @@ yyreduce: case 53: /* Line 1464 of yacc.c */ -#line 476 "glsl_parser.ypp" +#line 477 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_mod, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3166,7 +3172,7 @@ yyreduce: case 55: /* Line 1464 of yacc.c */ -#line 486 "glsl_parser.ypp" +#line 487 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_add, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3177,7 +3183,7 @@ yyreduce: case 56: /* Line 1464 of yacc.c */ -#line 492 "glsl_parser.ypp" +#line 493 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_sub, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3188,7 +3194,7 @@ yyreduce: case 58: /* Line 1464 of yacc.c */ -#line 502 "glsl_parser.ypp" +#line 503 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_lshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3199,7 +3205,7 @@ yyreduce: case 59: /* Line 1464 of yacc.c */ -#line 508 "glsl_parser.ypp" +#line 509 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_rshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3210,7 +3216,7 @@ yyreduce: case 61: /* Line 1464 of yacc.c */ -#line 518 "glsl_parser.ypp" +#line 519 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_less, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3221,7 +3227,7 @@ yyreduce: case 62: /* Line 1464 of yacc.c */ -#line 524 "glsl_parser.ypp" +#line 525 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_greater, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3232,7 +3238,7 @@ yyreduce: case 63: /* Line 1464 of yacc.c */ -#line 530 "glsl_parser.ypp" +#line 531 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_lequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3243,7 +3249,7 @@ yyreduce: case 64: /* Line 1464 of yacc.c */ -#line 536 "glsl_parser.ypp" +#line 537 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_gequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3254,7 +3260,7 @@ yyreduce: case 66: /* Line 1464 of yacc.c */ -#line 546 "glsl_parser.ypp" +#line 547 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_equal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3265,7 +3271,7 @@ yyreduce: case 67: /* Line 1464 of yacc.c */ -#line 552 "glsl_parser.ypp" +#line 553 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_nequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3276,7 +3282,7 @@ yyreduce: case 69: /* Line 1464 of yacc.c */ -#line 562 "glsl_parser.ypp" +#line 563 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3287,7 +3293,7 @@ yyreduce: case 71: /* Line 1464 of yacc.c */ -#line 572 "glsl_parser.ypp" +#line 573 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3298,7 +3304,7 @@ yyreduce: case 73: /* Line 1464 of yacc.c */ -#line 582 "glsl_parser.ypp" +#line 583 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3309,7 +3315,7 @@ yyreduce: case 75: /* Line 1464 of yacc.c */ -#line 592 "glsl_parser.ypp" +#line 593 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3320,7 +3326,7 @@ yyreduce: case 77: /* Line 1464 of yacc.c */ -#line 602 "glsl_parser.ypp" +#line 603 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3331,7 +3337,7 @@ yyreduce: case 79: /* Line 1464 of yacc.c */ -#line 612 "glsl_parser.ypp" +#line 613 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3342,7 +3348,7 @@ yyreduce: case 81: /* Line 1464 of yacc.c */ -#line 622 "glsl_parser.ypp" +#line 623 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_conditional, (yyvsp[(1) - (5)].expression), (yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].expression)); @@ -3353,7 +3359,7 @@ yyreduce: case 83: /* Line 1464 of yacc.c */ -#line 632 "glsl_parser.ypp" +#line 633 "glsl_parser.ypp" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression((yyvsp[(2) - (3)].n), (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL); @@ -3364,84 +3370,84 @@ yyreduce: case 84: /* Line 1464 of yacc.c */ -#line 640 "glsl_parser.ypp" +#line 641 "glsl_parser.ypp" { (yyval.n) = ast_assign; ;} break; case 85: /* Line 1464 of yacc.c */ -#line 641 "glsl_parser.ypp" +#line 642 "glsl_parser.ypp" { (yyval.n) = ast_mul_assign; ;} break; case 86: /* Line 1464 of yacc.c */ -#line 642 "glsl_parser.ypp" +#line 643 "glsl_parser.ypp" { (yyval.n) = ast_div_assign; ;} break; case 87: /* Line 1464 of yacc.c */ -#line 643 "glsl_parser.ypp" +#line 644 "glsl_parser.ypp" { (yyval.n) = ast_mod_assign; ;} break; case 88: /* Line 1464 of yacc.c */ -#line 644 "glsl_parser.ypp" +#line 645 "glsl_parser.ypp" { (yyval.n) = ast_add_assign; ;} break; case 89: /* Line 1464 of yacc.c */ -#line 645 "glsl_parser.ypp" +#line 646 "glsl_parser.ypp" { (yyval.n) = ast_sub_assign; ;} break; case 90: /* Line 1464 of yacc.c */ -#line 646 "glsl_parser.ypp" +#line 647 "glsl_parser.ypp" { (yyval.n) = ast_ls_assign; ;} break; case 91: /* Line 1464 of yacc.c */ -#line 647 "glsl_parser.ypp" +#line 648 "glsl_parser.ypp" { (yyval.n) = ast_rs_assign; ;} break; case 92: /* Line 1464 of yacc.c */ -#line 648 "glsl_parser.ypp" +#line 649 "glsl_parser.ypp" { (yyval.n) = ast_and_assign; ;} break; case 93: /* Line 1464 of yacc.c */ -#line 649 "glsl_parser.ypp" +#line 650 "glsl_parser.ypp" { (yyval.n) = ast_xor_assign; ;} break; case 94: /* Line 1464 of yacc.c */ -#line 650 "glsl_parser.ypp" +#line 651 "glsl_parser.ypp" { (yyval.n) = ast_or_assign; ;} break; case 95: /* Line 1464 of yacc.c */ -#line 655 "glsl_parser.ypp" +#line 656 "glsl_parser.ypp" { (yyval.expression) = (yyvsp[(1) - (1)].expression); ;} @@ -3450,7 +3456,7 @@ yyreduce: case 96: /* Line 1464 of yacc.c */ -#line 659 "glsl_parser.ypp" +#line 660 "glsl_parser.ypp" { void *ctx = state; if ((yyvsp[(1) - (3)].expression)->oper != ast_sequence) { @@ -3468,7 +3474,7 @@ yyreduce: case 98: /* Line 1464 of yacc.c */ -#line 679 "glsl_parser.ypp" +#line 680 "glsl_parser.ypp" { (yyval.node) = (yyvsp[(1) - (2)].function); ;} @@ -3477,7 +3483,7 @@ yyreduce: case 99: /* Line 1464 of yacc.c */ -#line 683 "glsl_parser.ypp" +#line 684 "glsl_parser.ypp" { (yyval.node) = (yyvsp[(1) - (2)].declarator_list); ;} @@ -3486,7 +3492,7 @@ yyreduce: case 100: /* Line 1464 of yacc.c */ -#line 687 "glsl_parser.ypp" +#line 688 "glsl_parser.ypp" { if (((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_float) && ((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_int)) { @@ -3502,7 +3508,7 @@ yyreduce: case 104: /* Line 1464 of yacc.c */ -#line 710 "glsl_parser.ypp" +#line 711 "glsl_parser.ypp" { (yyval.function) = (yyvsp[(1) - (2)].function); (yyval.function)->parameters.push_tail(& (yyvsp[(2) - (2)].parameter_declarator)->link); @@ -3512,7 +3518,7 @@ yyreduce: case 105: /* Line 1464 of yacc.c */ -#line 715 "glsl_parser.ypp" +#line 716 "glsl_parser.ypp" { (yyval.function) = (yyvsp[(1) - (3)].function); (yyval.function)->parameters.push_tail(& (yyvsp[(3) - (3)].parameter_declarator)->link); @@ -3522,7 +3528,7 @@ yyreduce: case 106: /* Line 1464 of yacc.c */ -#line 723 "glsl_parser.ypp" +#line 724 "glsl_parser.ypp" { void *ctx = state; (yyval.function) = new(ctx) ast_function(); @@ -3535,7 +3541,7 @@ yyreduce: case 107: /* Line 1464 of yacc.c */ -#line 734 "glsl_parser.ypp" +#line 735 "glsl_parser.ypp" { void *ctx = state; (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator(); @@ -3550,7 +3556,7 @@ yyreduce: case 108: /* Line 1464 of yacc.c */ -#line 744 "glsl_parser.ypp" +#line 745 "glsl_parser.ypp" { void *ctx = state; (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator(); @@ -3567,7 +3573,7 @@ yyreduce: case 109: /* Line 1464 of yacc.c */ -#line 759 "glsl_parser.ypp" +#line 760 "glsl_parser.ypp" { (yyvsp[(1) - (3)].type_qualifier).flags.i |= (yyvsp[(2) - (3)].type_qualifier).flags.i; @@ -3579,7 +3585,7 @@ yyreduce: case 110: /* Line 1464 of yacc.c */ -#line 766 "glsl_parser.ypp" +#line 767 "glsl_parser.ypp" { (yyval.parameter_declarator) = (yyvsp[(2) - (2)].parameter_declarator); (yyval.parameter_declarator)->type->qualifier = (yyvsp[(1) - (2)].type_qualifier); @@ -3589,7 +3595,7 @@ yyreduce: case 111: /* Line 1464 of yacc.c */ -#line 771 "glsl_parser.ypp" +#line 772 "glsl_parser.ypp" { void *ctx = state; (yyvsp[(1) - (3)].type_qualifier).flags.i |= (yyvsp[(2) - (3)].type_qualifier).flags.i; @@ -3605,7 +3611,7 @@ yyreduce: case 112: /* Line 1464 of yacc.c */ -#line 782 "glsl_parser.ypp" +#line 783 "glsl_parser.ypp" { void *ctx = state; (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator(); @@ -3619,7 +3625,7 @@ yyreduce: case 113: /* Line 1464 of yacc.c */ -#line 794 "glsl_parser.ypp" +#line 795 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); ;} @@ -3628,7 +3634,7 @@ yyreduce: case 114: /* Line 1464 of yacc.c */ -#line 798 "glsl_parser.ypp" +#line 799 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.in = 1; @@ -3638,7 +3644,7 @@ yyreduce: case 115: /* Line 1464 of yacc.c */ -#line 803 "glsl_parser.ypp" +#line 804 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.out = 1; @@ -3648,7 +3654,7 @@ yyreduce: case 116: /* Line 1464 of yacc.c */ -#line 808 "glsl_parser.ypp" +#line 809 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.in = 1; @@ -3659,7 +3665,7 @@ yyreduce: case 119: /* Line 1464 of yacc.c */ -#line 822 "glsl_parser.ypp" +#line 823 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (3)].identifier), false, NULL, NULL); @@ -3673,7 +3679,7 @@ yyreduce: case 120: /* Line 1464 of yacc.c */ -#line 831 "glsl_parser.ypp" +#line 832 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), true, NULL, NULL); @@ -3687,7 +3693,7 @@ yyreduce: case 121: /* Line 1464 of yacc.c */ -#line 840 "glsl_parser.ypp" +#line 841 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (6)].identifier), true, (yyvsp[(5) - (6)].expression), NULL); @@ -3701,7 +3707,7 @@ yyreduce: case 122: /* Line 1464 of yacc.c */ -#line 849 "glsl_parser.ypp" +#line 850 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (7)].identifier), true, NULL, (yyvsp[(7) - (7)].expression)); @@ -3715,7 +3721,7 @@ yyreduce: case 123: /* Line 1464 of yacc.c */ -#line 858 "glsl_parser.ypp" +#line 859 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (8)].identifier), true, (yyvsp[(5) - (8)].expression), (yyvsp[(8) - (8)].expression)); @@ -3729,7 +3735,7 @@ yyreduce: case 124: /* Line 1464 of yacc.c */ -#line 867 "glsl_parser.ypp" +#line 868 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), false, NULL, (yyvsp[(5) - (5)].expression)); @@ -3743,7 +3749,7 @@ yyreduce: case 125: /* Line 1464 of yacc.c */ -#line 880 "glsl_parser.ypp" +#line 881 "glsl_parser.ypp" { void *ctx = state; if ((yyvsp[(1) - (1)].fully_specified_type)->specifier->type_specifier != ast_struct) { @@ -3759,7 +3765,7 @@ yyreduce: case 126: /* Line 1464 of yacc.c */ -#line 891 "glsl_parser.ypp" +#line 892 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL); @@ -3773,7 +3779,7 @@ yyreduce: case 127: /* Line 1464 of yacc.c */ -#line 900 "glsl_parser.ypp" +#line 901 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), true, NULL, NULL); @@ -3787,7 +3793,7 @@ yyreduce: case 128: /* Line 1464 of yacc.c */ -#line 909 "glsl_parser.ypp" +#line 910 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (5)].identifier), true, (yyvsp[(4) - (5)].expression), NULL); @@ -3801,7 +3807,7 @@ yyreduce: case 129: /* Line 1464 of yacc.c */ -#line 918 "glsl_parser.ypp" +#line 919 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (6)].identifier), true, NULL, (yyvsp[(6) - (6)].expression)); @@ -3815,7 +3821,7 @@ yyreduce: case 130: /* Line 1464 of yacc.c */ -#line 927 "glsl_parser.ypp" +#line 928 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (7)].identifier), true, (yyvsp[(4) - (7)].expression), (yyvsp[(7) - (7)].expression)); @@ -3829,7 +3835,7 @@ yyreduce: case 131: /* Line 1464 of yacc.c */ -#line 936 "glsl_parser.ypp" +#line 937 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression)); @@ -3843,7 +3849,7 @@ yyreduce: case 132: /* Line 1464 of yacc.c */ -#line 945 "glsl_parser.ypp" +#line 946 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL); @@ -3859,7 +3865,7 @@ yyreduce: case 133: /* Line 1464 of yacc.c */ -#line 959 "glsl_parser.ypp" +#line 960 "glsl_parser.ypp" { void *ctx = state; (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type(); @@ -3871,7 +3877,7 @@ yyreduce: case 134: /* Line 1464 of yacc.c */ -#line 966 "glsl_parser.ypp" +#line 967 "glsl_parser.ypp" { void *ctx = state; (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type(); @@ -3884,7 +3890,7 @@ yyreduce: case 135: /* Line 1464 of yacc.c */ -#line 977 "glsl_parser.ypp" +#line 978 "glsl_parser.ypp" { (yyval.type_qualifier) = (yyvsp[(3) - (4)].type_qualifier); ;} @@ -3893,7 +3899,7 @@ yyreduce: case 137: /* Line 1464 of yacc.c */ -#line 985 "glsl_parser.ypp" +#line 986 "glsl_parser.ypp" { if (((yyvsp[(1) - (3)].type_qualifier).flags.i & (yyvsp[(3) - (3)].type_qualifier).flags.i) != 0) { _mesa_glsl_error(& (yylsp[(3) - (3)]), state, @@ -3914,7 +3920,7 @@ yyreduce: case 138: /* Line 1464 of yacc.c */ -#line 1004 "glsl_parser.ypp" +#line 1005 "glsl_parser.ypp" { bool got_one = false; @@ -3948,7 +3954,7 @@ yyreduce: case 139: /* Line 1464 of yacc.c */ -#line 1033 "glsl_parser.ypp" +#line 1034 "glsl_parser.ypp" { bool got_one = false; @@ -3991,7 +3997,7 @@ yyreduce: case 140: /* Line 1464 of yacc.c */ -#line 1074 "glsl_parser.ypp" +#line 1075 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.smooth = 1; @@ -4001,7 +4007,7 @@ yyreduce: case 141: /* Line 1464 of yacc.c */ -#line 1079 "glsl_parser.ypp" +#line 1080 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.flat = 1; @@ -4011,7 +4017,7 @@ yyreduce: case 142: /* Line 1464 of yacc.c */ -#line 1084 "glsl_parser.ypp" +#line 1085 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.noperspective = 1; @@ -4021,7 +4027,7 @@ yyreduce: case 143: /* Line 1464 of yacc.c */ -#line 1092 "glsl_parser.ypp" +#line 1093 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.constant = 1; @@ -4031,7 +4037,7 @@ yyreduce: case 146: /* Line 1464 of yacc.c */ -#line 1102 "glsl_parser.ypp" +#line 1103 "glsl_parser.ypp" { (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier); (yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i; @@ -4041,7 +4047,7 @@ yyreduce: case 148: /* Line 1464 of yacc.c */ -#line 1108 "glsl_parser.ypp" +#line 1109 "glsl_parser.ypp" { (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier); (yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i; @@ -4051,7 +4057,7 @@ yyreduce: case 149: /* Line 1464 of yacc.c */ -#line 1113 "glsl_parser.ypp" +#line 1114 "glsl_parser.ypp" { (yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier); (yyval.type_qualifier).flags.q.invariant = 1; @@ -4061,7 +4067,7 @@ yyreduce: case 150: /* Line 1464 of yacc.c */ -#line 1118 "glsl_parser.ypp" +#line 1119 "glsl_parser.ypp" { (yyval.type_qualifier) = (yyvsp[(2) - (3)].type_qualifier); (yyval.type_qualifier).flags.i |= (yyvsp[(3) - (3)].type_qualifier).flags.i; @@ -4072,7 +4078,7 @@ yyreduce: case 151: /* Line 1464 of yacc.c */ -#line 1124 "glsl_parser.ypp" +#line 1125 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.invariant = 1; @@ -4082,7 +4088,7 @@ yyreduce: case 152: /* Line 1464 of yacc.c */ -#line 1132 "glsl_parser.ypp" +#line 1133 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.constant = 1; @@ -4092,7 +4098,7 @@ yyreduce: case 153: /* Line 1464 of yacc.c */ -#line 1137 "glsl_parser.ypp" +#line 1138 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.attribute = 1; @@ -4102,7 +4108,7 @@ yyreduce: case 154: /* Line 1464 of yacc.c */ -#line 1142 "glsl_parser.ypp" +#line 1143 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.varying = 1; @@ -4112,7 +4118,7 @@ yyreduce: case 155: /* Line 1464 of yacc.c */ -#line 1147 "glsl_parser.ypp" +#line 1148 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.centroid = 1; @@ -4123,7 +4129,7 @@ yyreduce: case 156: /* Line 1464 of yacc.c */ -#line 1153 "glsl_parser.ypp" +#line 1154 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.in = 1; @@ -4133,7 +4139,7 @@ yyreduce: case 157: /* Line 1464 of yacc.c */ -#line 1158 "glsl_parser.ypp" +#line 1159 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.out = 1; @@ -4143,7 +4149,7 @@ yyreduce: case 158: /* Line 1464 of yacc.c */ -#line 1163 "glsl_parser.ypp" +#line 1164 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.in = 1; @@ -4153,7 +4159,7 @@ yyreduce: case 159: /* Line 1464 of yacc.c */ -#line 1168 "glsl_parser.ypp" +#line 1169 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.out = 1; @@ -4163,7 +4169,7 @@ yyreduce: case 160: /* Line 1464 of yacc.c */ -#line 1173 "glsl_parser.ypp" +#line 1174 "glsl_parser.ypp" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.uniform = 1; @@ -4173,7 +4179,7 @@ yyreduce: case 162: /* Line 1464 of yacc.c */ -#line 1182 "glsl_parser.ypp" +#line 1183 "glsl_parser.ypp" { (yyval.type_specifier) = (yyvsp[(2) - (2)].type_specifier); (yyval.type_specifier)->precision = (yyvsp[(1) - (2)].n); @@ -4183,7 +4189,7 @@ yyreduce: case 164: /* Line 1464 of yacc.c */ -#line 1191 "glsl_parser.ypp" +#line 1192 "glsl_parser.ypp" { (yyval.type_specifier) = (yyvsp[(1) - (3)].type_specifier); (yyval.type_specifier)->is_array = true; @@ -4194,7 +4200,7 @@ yyreduce: case 165: /* Line 1464 of yacc.c */ -#line 1197 "glsl_parser.ypp" +#line 1198 "glsl_parser.ypp" { (yyval.type_specifier) = (yyvsp[(1) - (4)].type_specifier); (yyval.type_specifier)->is_array = true; @@ -4205,7 +4211,7 @@ yyreduce: case 166: /* Line 1464 of yacc.c */ -#line 1206 "glsl_parser.ypp" +#line 1207 "glsl_parser.ypp" { void *ctx = state; (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].n)); @@ -4216,7 +4222,7 @@ yyreduce: case 167: /* Line 1464 of yacc.c */ -#line 1212 "glsl_parser.ypp" +#line 1213 "glsl_parser.ypp" { void *ctx = state; (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].struct_specifier)); @@ -4227,7 +4233,7 @@ yyreduce: case 168: /* Line 1464 of yacc.c */ -#line 1218 "glsl_parser.ypp" +#line 1219 "glsl_parser.ypp" { void *ctx = state; (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier)); @@ -4238,364 +4244,364 @@ yyreduce: case 169: /* Line 1464 of yacc.c */ -#line 1226 "glsl_parser.ypp" +#line 1227 "glsl_parser.ypp" { (yyval.n) = ast_void; ;} break; case 170: /* Line 1464 of yacc.c */ -#line 1227 "glsl_parser.ypp" +#line 1228 "glsl_parser.ypp" { (yyval.n) = ast_float; ;} break; case 171: /* Line 1464 of yacc.c */ -#line 1228 "glsl_parser.ypp" +#line 1229 "glsl_parser.ypp" { (yyval.n) = ast_int; ;} break; case 172: /* Line 1464 of yacc.c */ -#line 1229 "glsl_parser.ypp" +#line 1230 "glsl_parser.ypp" { (yyval.n) = ast_uint; ;} break; case 173: /* Line 1464 of yacc.c */ -#line 1230 "glsl_parser.ypp" +#line 1231 "glsl_parser.ypp" { (yyval.n) = ast_bool; ;} break; case 174: /* Line 1464 of yacc.c */ -#line 1231 "glsl_parser.ypp" +#line 1232 "glsl_parser.ypp" { (yyval.n) = ast_vec2; ;} break; case 175: /* Line 1464 of yacc.c */ -#line 1232 "glsl_parser.ypp" +#line 1233 "glsl_parser.ypp" { (yyval.n) = ast_vec3; ;} break; case 176: /* Line 1464 of yacc.c */ -#line 1233 "glsl_parser.ypp" +#line 1234 "glsl_parser.ypp" { (yyval.n) = ast_vec4; ;} break; case 177: /* Line 1464 of yacc.c */ -#line 1234 "glsl_parser.ypp" +#line 1235 "glsl_parser.ypp" { (yyval.n) = ast_bvec2; ;} break; case 178: /* Line 1464 of yacc.c */ -#line 1235 "glsl_parser.ypp" +#line 1236 "glsl_parser.ypp" { (yyval.n) = ast_bvec3; ;} break; case 179: /* Line 1464 of yacc.c */ -#line 1236 "glsl_parser.ypp" +#line 1237 "glsl_parser.ypp" { (yyval.n) = ast_bvec4; ;} break; case 180: /* Line 1464 of yacc.c */ -#line 1237 "glsl_parser.ypp" +#line 1238 "glsl_parser.ypp" { (yyval.n) = ast_ivec2; ;} break; case 181: /* Line 1464 of yacc.c */ -#line 1238 "glsl_parser.ypp" +#line 1239 "glsl_parser.ypp" { (yyval.n) = ast_ivec3; ;} break; case 182: /* Line 1464 of yacc.c */ -#line 1239 "glsl_parser.ypp" +#line 1240 "glsl_parser.ypp" { (yyval.n) = ast_ivec4; ;} break; case 183: /* Line 1464 of yacc.c */ -#line 1240 "glsl_parser.ypp" +#line 1241 "glsl_parser.ypp" { (yyval.n) = ast_uvec2; ;} break; case 184: /* Line 1464 of yacc.c */ -#line 1241 "glsl_parser.ypp" +#line 1242 "glsl_parser.ypp" { (yyval.n) = ast_uvec3; ;} break; case 185: /* Line 1464 of yacc.c */ -#line 1242 "glsl_parser.ypp" +#line 1243 "glsl_parser.ypp" { (yyval.n) = ast_uvec4; ;} break; case 186: /* Line 1464 of yacc.c */ -#line 1243 "glsl_parser.ypp" +#line 1244 "glsl_parser.ypp" { (yyval.n) = ast_mat2; ;} break; case 187: /* Line 1464 of yacc.c */ -#line 1244 "glsl_parser.ypp" +#line 1245 "glsl_parser.ypp" { (yyval.n) = ast_mat2x3; ;} break; case 188: /* Line 1464 of yacc.c */ -#line 1245 "glsl_parser.ypp" +#line 1246 "glsl_parser.ypp" { (yyval.n) = ast_mat2x4; ;} break; case 189: /* Line 1464 of yacc.c */ -#line 1246 "glsl_parser.ypp" +#line 1247 "glsl_parser.ypp" { (yyval.n) = ast_mat3x2; ;} break; case 190: /* Line 1464 of yacc.c */ -#line 1247 "glsl_parser.ypp" +#line 1248 "glsl_parser.ypp" { (yyval.n) = ast_mat3; ;} break; case 191: /* Line 1464 of yacc.c */ -#line 1248 "glsl_parser.ypp" +#line 1249 "glsl_parser.ypp" { (yyval.n) = ast_mat3x4; ;} break; case 192: /* Line 1464 of yacc.c */ -#line 1249 "glsl_parser.ypp" +#line 1250 "glsl_parser.ypp" { (yyval.n) = ast_mat4x2; ;} break; case 193: /* Line 1464 of yacc.c */ -#line 1250 "glsl_parser.ypp" +#line 1251 "glsl_parser.ypp" { (yyval.n) = ast_mat4x3; ;} break; case 194: /* Line 1464 of yacc.c */ -#line 1251 "glsl_parser.ypp" +#line 1252 "glsl_parser.ypp" { (yyval.n) = ast_mat4; ;} break; case 195: /* Line 1464 of yacc.c */ -#line 1252 "glsl_parser.ypp" +#line 1253 "glsl_parser.ypp" { (yyval.n) = ast_sampler1d; ;} break; case 196: /* Line 1464 of yacc.c */ -#line 1253 "glsl_parser.ypp" +#line 1254 "glsl_parser.ypp" { (yyval.n) = ast_sampler2d; ;} break; case 197: /* Line 1464 of yacc.c */ -#line 1254 "glsl_parser.ypp" +#line 1255 "glsl_parser.ypp" { (yyval.n) = ast_sampler2drect; ;} break; case 198: /* Line 1464 of yacc.c */ -#line 1255 "glsl_parser.ypp" +#line 1256 "glsl_parser.ypp" { (yyval.n) = ast_sampler3d; ;} break; case 199: /* Line 1464 of yacc.c */ -#line 1256 "glsl_parser.ypp" +#line 1257 "glsl_parser.ypp" { (yyval.n) = ast_samplercube; ;} break; case 200: /* Line 1464 of yacc.c */ -#line 1257 "glsl_parser.ypp" +#line 1258 "glsl_parser.ypp" { (yyval.n) = ast_sampler1dshadow; ;} break; case 201: /* Line 1464 of yacc.c */ -#line 1258 "glsl_parser.ypp" +#line 1259 "glsl_parser.ypp" { (yyval.n) = ast_sampler2dshadow; ;} break; case 202: /* Line 1464 of yacc.c */ -#line 1259 "glsl_parser.ypp" +#line 1260 "glsl_parser.ypp" { (yyval.n) = ast_sampler2drectshadow; ;} break; case 203: /* Line 1464 of yacc.c */ -#line 1260 "glsl_parser.ypp" +#line 1261 "glsl_parser.ypp" { (yyval.n) = ast_samplercubeshadow; ;} break; case 204: /* Line 1464 of yacc.c */ -#line 1261 "glsl_parser.ypp" +#line 1262 "glsl_parser.ypp" { (yyval.n) = ast_sampler1darray; ;} break; case 205: /* Line 1464 of yacc.c */ -#line 1262 "glsl_parser.ypp" +#line 1263 "glsl_parser.ypp" { (yyval.n) = ast_sampler2darray; ;} break; case 206: /* Line 1464 of yacc.c */ -#line 1263 "glsl_parser.ypp" +#line 1264 "glsl_parser.ypp" { (yyval.n) = ast_sampler1darrayshadow; ;} break; case 207: /* Line 1464 of yacc.c */ -#line 1264 "glsl_parser.ypp" +#line 1265 "glsl_parser.ypp" { (yyval.n) = ast_sampler2darrayshadow; ;} break; case 208: /* Line 1464 of yacc.c */ -#line 1265 "glsl_parser.ypp" +#line 1266 "glsl_parser.ypp" { (yyval.n) = ast_isampler1d; ;} break; case 209: /* Line 1464 of yacc.c */ -#line 1266 "glsl_parser.ypp" +#line 1267 "glsl_parser.ypp" { (yyval.n) = ast_isampler2d; ;} break; case 210: /* Line 1464 of yacc.c */ -#line 1267 "glsl_parser.ypp" +#line 1268 "glsl_parser.ypp" { (yyval.n) = ast_isampler3d; ;} break; case 211: /* Line 1464 of yacc.c */ -#line 1268 "glsl_parser.ypp" +#line 1269 "glsl_parser.ypp" { (yyval.n) = ast_isamplercube; ;} break; case 212: /* Line 1464 of yacc.c */ -#line 1269 "glsl_parser.ypp" +#line 1270 "glsl_parser.ypp" { (yyval.n) = ast_isampler1darray; ;} break; case 213: /* Line 1464 of yacc.c */ -#line 1270 "glsl_parser.ypp" +#line 1271 "glsl_parser.ypp" { (yyval.n) = ast_isampler2darray; ;} break; case 214: /* Line 1464 of yacc.c */ -#line 1271 "glsl_parser.ypp" +#line 1272 "glsl_parser.ypp" { (yyval.n) = ast_usampler1d; ;} break; case 215: /* Line 1464 of yacc.c */ -#line 1272 "glsl_parser.ypp" +#line 1273 "glsl_parser.ypp" { (yyval.n) = ast_usampler2d; ;} break; case 216: /* Line 1464 of yacc.c */ -#line 1273 "glsl_parser.ypp" +#line 1274 "glsl_parser.ypp" { (yyval.n) = ast_usampler3d; ;} break; case 217: /* Line 1464 of yacc.c */ -#line 1274 "glsl_parser.ypp" +#line 1275 "glsl_parser.ypp" { (yyval.n) = ast_usamplercube; ;} break; case 218: /* Line 1464 of yacc.c */ -#line 1275 "glsl_parser.ypp" +#line 1276 "glsl_parser.ypp" { (yyval.n) = ast_usampler1darray; ;} break; case 219: /* Line 1464 of yacc.c */ -#line 1276 "glsl_parser.ypp" +#line 1277 "glsl_parser.ypp" { (yyval.n) = ast_usampler2darray; ;} break; case 220: /* Line 1464 of yacc.c */ -#line 1280 "glsl_parser.ypp" +#line 1281 "glsl_parser.ypp" { if (!state->es_shader && state->language_version < 130) _mesa_glsl_error(& (yylsp[(1) - (1)]), state, @@ -4612,7 +4618,7 @@ yyreduce: case 221: /* Line 1464 of yacc.c */ -#line 1291 "glsl_parser.ypp" +#line 1292 "glsl_parser.ypp" { if (!state->es_shader && state->language_version < 130) _mesa_glsl_error(& (yylsp[(1) - (1)]), state, @@ -4629,7 +4635,7 @@ yyreduce: case 222: /* Line 1464 of yacc.c */ -#line 1302 "glsl_parser.ypp" +#line 1303 "glsl_parser.ypp" { if (!state->es_shader && state->language_version < 130) _mesa_glsl_error(& (yylsp[(1) - (1)]), state, @@ -4646,7 +4652,7 @@ yyreduce: case 223: /* Line 1464 of yacc.c */ -#line 1317 "glsl_parser.ypp" +#line 1318 "glsl_parser.ypp" { void *ctx = state; (yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[(2) - (5)].identifier), (yyvsp[(4) - (5)].node)); @@ -4657,7 +4663,7 @@ yyreduce: case 224: /* Line 1464 of yacc.c */ -#line 1323 "glsl_parser.ypp" +#line 1324 "glsl_parser.ypp" { void *ctx = state; (yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[(3) - (4)].node)); @@ -4668,7 +4674,7 @@ yyreduce: case 225: /* Line 1464 of yacc.c */ -#line 1332 "glsl_parser.ypp" +#line 1333 "glsl_parser.ypp" { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].declarator_list); (yyvsp[(1) - (1)].declarator_list)->link.self_link(); @@ -4678,7 +4684,7 @@ yyreduce: case 226: /* Line 1464 of yacc.c */ -#line 1337 "glsl_parser.ypp" +#line 1338 "glsl_parser.ypp" { (yyval.node) = (ast_node *) (yyvsp[(1) - (2)].node); (yyval.node)->link.insert_before(& (yyvsp[(2) - (2)].declarator_list)->link); @@ -4688,7 +4694,7 @@ yyreduce: case 227: /* Line 1464 of yacc.c */ -#line 1345 "glsl_parser.ypp" +#line 1346 "glsl_parser.ypp" { void *ctx = state; ast_fully_specified_type *type = new(ctx) ast_fully_specified_type(); @@ -4705,7 +4711,7 @@ yyreduce: case 228: /* Line 1464 of yacc.c */ -#line 1360 "glsl_parser.ypp" +#line 1361 "glsl_parser.ypp" { (yyval.declaration) = (yyvsp[(1) - (1)].declaration); (yyvsp[(1) - (1)].declaration)->link.self_link(); @@ -4715,7 +4721,7 @@ yyreduce: case 229: /* Line 1464 of yacc.c */ -#line 1365 "glsl_parser.ypp" +#line 1366 "glsl_parser.ypp" { (yyval.declaration) = (yyvsp[(1) - (3)].declaration); (yyval.declaration)->link.insert_before(& (yyvsp[(3) - (3)].declaration)->link); @@ -4725,7 +4731,7 @@ yyreduce: case 230: /* Line 1464 of yacc.c */ -#line 1373 "glsl_parser.ypp" +#line 1374 "glsl_parser.ypp" { void *ctx = state; (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (1)].identifier), false, NULL, NULL); @@ -4736,7 +4742,7 @@ yyreduce: case 231: /* Line 1464 of yacc.c */ -#line 1379 "glsl_parser.ypp" +#line 1380 "glsl_parser.ypp" { void *ctx = state; (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (4)].identifier), true, (yyvsp[(3) - (4)].expression), NULL); @@ -4747,28 +4753,28 @@ yyreduce: case 234: /* Line 1464 of yacc.c */ -#line 1397 "glsl_parser.ypp" +#line 1398 "glsl_parser.ypp" { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;} break; case 239: /* Line 1464 of yacc.c */ -#line 1405 "glsl_parser.ypp" +#line 1406 "glsl_parser.ypp" { (yyval.node) = NULL; ;} break; case 240: /* Line 1464 of yacc.c */ -#line 1406 "glsl_parser.ypp" +#line 1407 "glsl_parser.ypp" { (yyval.node) = NULL; ;} break; case 243: /* Line 1464 of yacc.c */ -#line 1413 "glsl_parser.ypp" +#line 1414 "glsl_parser.ypp" { void *ctx = state; (yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL); @@ -4779,7 +4785,7 @@ yyreduce: case 244: /* Line 1464 of yacc.c */ -#line 1419 "glsl_parser.ypp" +#line 1420 "glsl_parser.ypp" { void *ctx = state; (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(2) - (3)].node)); @@ -4790,14 +4796,14 @@ yyreduce: case 245: /* Line 1464 of yacc.c */ -#line 1427 "glsl_parser.ypp" +#line 1428 "glsl_parser.ypp" { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;} break; case 247: /* Line 1464 of yacc.c */ -#line 1433 "glsl_parser.ypp" +#line 1434 "glsl_parser.ypp" { void *ctx = state; (yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL); @@ -4808,7 +4814,7 @@ yyreduce: case 248: /* Line 1464 of yacc.c */ -#line 1439 "glsl_parser.ypp" +#line 1440 "glsl_parser.ypp" { void *ctx = state; (yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[(2) - (3)].node)); @@ -4819,7 +4825,7 @@ yyreduce: case 249: /* Line 1464 of yacc.c */ -#line 1448 "glsl_parser.ypp" +#line 1449 "glsl_parser.ypp" { if ((yyvsp[(1) - (1)].node) == NULL) { _mesa_glsl_error(& (yylsp[(1) - (1)]), state, "<nil> statement\n"); @@ -4834,7 +4840,7 @@ yyreduce: case 250: /* Line 1464 of yacc.c */ -#line 1458 "glsl_parser.ypp" +#line 1459 "glsl_parser.ypp" { if ((yyvsp[(2) - (2)].node) == NULL) { _mesa_glsl_error(& (yylsp[(2) - (2)]), state, "<nil> statement\n"); @@ -4848,7 +4854,7 @@ yyreduce: case 251: /* Line 1464 of yacc.c */ -#line 1470 "glsl_parser.ypp" +#line 1471 "glsl_parser.ypp" { void *ctx = state; (yyval.node) = new(ctx) ast_expression_statement(NULL); @@ -4859,7 +4865,7 @@ yyreduce: case 252: /* Line 1464 of yacc.c */ -#line 1476 "glsl_parser.ypp" +#line 1477 "glsl_parser.ypp" { void *ctx = state; (yyval.node) = new(ctx) ast_expression_statement((yyvsp[(1) - (2)].expression)); @@ -4870,7 +4876,7 @@ yyreduce: case 253: /* Line 1464 of yacc.c */ -#line 1485 "glsl_parser.ypp" +#line 1486 "glsl_parser.ypp" { (yyval.node) = new(state) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].selection_rest_statement).then_statement, (yyvsp[(5) - (5)].selection_rest_statement).else_statement); @@ -4881,7 +4887,7 @@ yyreduce: case 254: /* Line 1464 of yacc.c */ -#line 1494 "glsl_parser.ypp" +#line 1495 "glsl_parser.ypp" { (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (3)].node); (yyval.selection_rest_statement).else_statement = (yyvsp[(3) - (3)].node); @@ -4891,7 +4897,7 @@ yyreduce: case 255: /* Line 1464 of yacc.c */ -#line 1499 "glsl_parser.ypp" +#line 1500 "glsl_parser.ypp" { (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (1)].node); (yyval.selection_rest_statement).else_statement = NULL; @@ -4901,7 +4907,7 @@ yyreduce: case 256: /* Line 1464 of yacc.c */ -#line 1507 "glsl_parser.ypp" +#line 1508 "glsl_parser.ypp" { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].expression); ;} @@ -4910,7 +4916,7 @@ yyreduce: case 257: /* Line 1464 of yacc.c */ -#line 1511 "glsl_parser.ypp" +#line 1512 "glsl_parser.ypp" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression)); @@ -4926,7 +4932,7 @@ yyreduce: case 261: /* Line 1464 of yacc.c */ -#line 1534 "glsl_parser.ypp" +#line 1535 "glsl_parser.ypp" { void *ctx = state; (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while, @@ -4938,7 +4944,7 @@ yyreduce: case 262: /* Line 1464 of yacc.c */ -#line 1541 "glsl_parser.ypp" +#line 1542 "glsl_parser.ypp" { void *ctx = state; (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while, @@ -4950,7 +4956,7 @@ yyreduce: case 263: /* Line 1464 of yacc.c */ -#line 1548 "glsl_parser.ypp" +#line 1549 "glsl_parser.ypp" { void *ctx = state; (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for, @@ -4962,7 +4968,7 @@ yyreduce: case 267: /* Line 1464 of yacc.c */ -#line 1564 "glsl_parser.ypp" +#line 1565 "glsl_parser.ypp" { (yyval.node) = NULL; ;} @@ -4971,7 +4977,7 @@ yyreduce: case 268: /* Line 1464 of yacc.c */ -#line 1571 "glsl_parser.ypp" +#line 1572 "glsl_parser.ypp" { (yyval.for_rest_statement).cond = (yyvsp[(1) - (2)].node); (yyval.for_rest_statement).rest = NULL; @@ -4981,7 +4987,7 @@ yyreduce: case 269: /* Line 1464 of yacc.c */ -#line 1576 "glsl_parser.ypp" +#line 1577 "glsl_parser.ypp" { (yyval.for_rest_statement).cond = (yyvsp[(1) - (3)].node); (yyval.for_rest_statement).rest = (yyvsp[(3) - (3)].expression); @@ -4991,7 +4997,7 @@ yyreduce: case 270: /* Line 1464 of yacc.c */ -#line 1585 "glsl_parser.ypp" +#line 1586 "glsl_parser.ypp" { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL); @@ -5002,7 +5008,7 @@ yyreduce: case 271: /* Line 1464 of yacc.c */ -#line 1591 "glsl_parser.ypp" +#line 1592 "glsl_parser.ypp" { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL); @@ -5013,7 +5019,7 @@ yyreduce: case 272: /* Line 1464 of yacc.c */ -#line 1597 "glsl_parser.ypp" +#line 1598 "glsl_parser.ypp" { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL); @@ -5024,7 +5030,7 @@ yyreduce: case 273: /* Line 1464 of yacc.c */ -#line 1603 "glsl_parser.ypp" +#line 1604 "glsl_parser.ypp" { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[(2) - (3)].expression)); @@ -5035,7 +5041,7 @@ yyreduce: case 274: /* Line 1464 of yacc.c */ -#line 1609 "glsl_parser.ypp" +#line 1610 "glsl_parser.ypp" { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL); @@ -5046,28 +5052,28 @@ yyreduce: case 275: /* Line 1464 of yacc.c */ -#line 1617 "glsl_parser.ypp" +#line 1618 "glsl_parser.ypp" { (yyval.node) = (yyvsp[(1) - (1)].function_definition); ;} break; case 276: /* Line 1464 of yacc.c */ -#line 1618 "glsl_parser.ypp" +#line 1619 "glsl_parser.ypp" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 277: /* Line 1464 of yacc.c */ -#line 1619 "glsl_parser.ypp" +#line 1620 "glsl_parser.ypp" { (yyval.node) = NULL; ;} break; case 278: /* Line 1464 of yacc.c */ -#line 1624 "glsl_parser.ypp" +#line 1625 "glsl_parser.ypp" { void *ctx = state; (yyval.function_definition) = new(ctx) ast_function_definition(); @@ -5080,7 +5086,7 @@ yyreduce: /* Line 1464 of yacc.c */ -#line 5084 "glsl_parser.cpp" +#line 5090 "glsl_parser.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); diff --git a/src/glsl/glsl_parser.h b/src/glsl/glsl_parser.h index 1101d4977c..83aa56f7cb 100644 --- a/src/glsl/glsl_parser.h +++ b/src/glsl/glsl_parser.h @@ -225,7 +225,9 @@ IMAGEBUFFER = 442, IIMAGEBUFFER = 443, UIMAGEBUFFER = 444, - ROW_MAJOR = 445 + IMAGE1DARRAYSHADOW = 445, + IMAGE2DARRAYSHADOW = 446, + ROW_MAJOR = 447 }; #endif @@ -269,7 +271,7 @@ typedef union YYSTYPE /* Line 1685 of yacc.c */ -#line 273 "glsl_parser.h" +#line 275 "glsl_parser.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/glsl/glsl_parser.ypp b/src/glsl/glsl_parser.ypp index 3813d7a4e2..6d7d148eb0 100644 --- a/src/glsl/glsl_parser.ypp +++ b/src/glsl/glsl_parser.ypp @@ -126,6 +126,7 @@ %token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGECUBE IIMAGE1DARRAY IIMAGE2DARRAY %token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGECUBE UIMAGE1DARRAY UIMAGE2DARRAY %token IMAGE1DSHADOW IMAGE2DSHADOW IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER +%token IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW %token ROW_MAJOR %type <identifier> variable_identifier diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp index b2c378dd85..302cfbc566 100644 --- a/src/glsl/glsl_parser_extras.cpp +++ b/src/glsl/glsl_parser_extras.cpp @@ -708,7 +708,7 @@ do_common_optimization(exec_list *ir, bool linked, unsigned max_unroll_iteration { GLboolean progress = GL_FALSE; - progress = do_sub_to_add_neg(ir) || progress; + progress = lower_instructions(ir, SUB_TO_ADD_NEG) || progress; if (linked) { progress = do_function_inlining(ir) || progress; diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp index 82eb470605..8c33cfa20d 100644 --- a/src/glsl/glsl_types.cpp +++ b/src/glsl/glsl_types.cpp @@ -46,7 +46,7 @@ glsl_type::init_talloc_type_ctx(void) } glsl_type::glsl_type(GLenum gl_type, - unsigned base_type, unsigned vector_elements, + glsl_base_type base_type, unsigned vector_elements, unsigned matrix_columns, const char *name) : gl_type(gl_type), base_type(base_type), diff --git a/src/glsl/glsl_types.h b/src/glsl/glsl_types.h index dccab0a60d..d62d493c8e 100644 --- a/src/glsl/glsl_types.h +++ b/src/glsl/glsl_types.h @@ -43,16 +43,17 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state); extern "C" void _mesa_glsl_release_types(void); -#define GLSL_TYPE_UINT 0 -#define GLSL_TYPE_INT 1 -#define GLSL_TYPE_FLOAT 2 -#define GLSL_TYPE_BOOL 3 -#define GLSL_TYPE_SAMPLER 4 -#define GLSL_TYPE_STRUCT 5 -#define GLSL_TYPE_ARRAY 6 -#define GLSL_TYPE_FUNCTION 7 -#define GLSL_TYPE_VOID 8 -#define GLSL_TYPE_ERROR 9 +enum glsl_base_type { + GLSL_TYPE_UINT = 0, + GLSL_TYPE_INT, + GLSL_TYPE_FLOAT, + GLSL_TYPE_BOOL, + GLSL_TYPE_SAMPLER, + GLSL_TYPE_STRUCT, + GLSL_TYPE_ARRAY, + GLSL_TYPE_VOID, + GLSL_TYPE_ERROR +}; enum glsl_sampler_dim { GLSL_SAMPLER_DIM_1D = 0, @@ -66,7 +67,7 @@ enum glsl_sampler_dim { struct glsl_type { GLenum gl_type; - unsigned base_type:4; + glsl_base_type base_type; unsigned sampler_dimensionality:3; unsigned sampler_shadow:1; @@ -123,11 +124,6 @@ struct glsl_type { * For \c GLSL_TYPE_ARRAY, this is the length of the array. For * \c GLSL_TYPE_STRUCT, it is the number of elements in the structure and * the number of values pointed to by \c fields.structure (below). - * - * For \c GLSL_TYPE_FUNCTION, it is the number of parameters to the - * function. The return value from a function is implicitly the first - * parameter. The types of the parameters are stored in - * \c fields.parameters (below). */ unsigned length; @@ -399,7 +395,7 @@ private: /** Constructor for vector and matrix types */ glsl_type(GLenum gl_type, - unsigned base_type, unsigned vector_elements, + glsl_base_type base_type, unsigned vector_elements, unsigned matrix_columns, const char *name); /** Constructor for sampler types */ diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp index 87e78eee05..2abb95394f 100644 --- a/src/glsl/ir.cpp +++ b/src/glsl/ir.cpp @@ -31,6 +31,21 @@ ir_rvalue::ir_rvalue() this->type = glsl_type::error_type; } +bool ir_rvalue::is_zero() const +{ + return false; +} + +bool ir_rvalue::is_one() const +{ + return false; +} + +bool ir_rvalue::is_negative_one() const +{ + return false; +} + /** * Modify the swizzle make to move one component to another * @@ -177,91 +192,61 @@ ir_assignment::ir_assignment(ir_rvalue *lhs, ir_rvalue *rhs, ir_expression::ir_expression(int op, const struct glsl_type *type, + ir_rvalue *op0) +{ + assert(get_num_operands(ir_expression_operation(op)) == 1); + this->ir_type = ir_type_expression; + this->type = type; + this->operation = ir_expression_operation(op); + this->operands[0] = op0; + this->operands[1] = NULL; + this->operands[2] = NULL; + this->operands[3] = NULL; +} + +ir_expression::ir_expression(int op, const struct glsl_type *type, ir_rvalue *op0, ir_rvalue *op1) { + assert(((op1 == NULL) && (get_num_operands(ir_expression_operation(op)) == 1)) + || (get_num_operands(ir_expression_operation(op)) == 2)); + this->ir_type = ir_type_expression; + this->type = type; + this->operation = ir_expression_operation(op); + this->operands[0] = op0; + this->operands[1] = op1; + this->operands[2] = NULL; + this->operands[3] = NULL; +} + +ir_expression::ir_expression(int op, const struct glsl_type *type, + ir_rvalue *op0, ir_rvalue *op1, + ir_rvalue *op2, ir_rvalue *op3) +{ this->ir_type = ir_type_expression; this->type = type; this->operation = ir_expression_operation(op); this->operands[0] = op0; this->operands[1] = op1; + this->operands[2] = op2; + this->operands[3] = op3; } unsigned int ir_expression::get_num_operands(ir_expression_operation op) { -/* Update ir_print_visitor.cpp when updating this list. */ - const int num_operands[] = { - 1, /* ir_unop_bit_not */ - 1, /* ir_unop_logic_not */ - 1, /* ir_unop_neg */ - 1, /* ir_unop_abs */ - 1, /* ir_unop_sign */ - 1, /* ir_unop_rcp */ - 1, /* ir_unop_rsq */ - 1, /* ir_unop_sqrt */ - 1, /* ir_unop_exp */ - 1, /* ir_unop_log */ - 1, /* ir_unop_exp2 */ - 1, /* ir_unop_log2 */ - 1, /* ir_unop_f2i */ - 1, /* ir_unop_i2f */ - 1, /* ir_unop_f2b */ - 1, /* ir_unop_b2f */ - 1, /* ir_unop_i2b */ - 1, /* ir_unop_b2i */ - 1, /* ir_unop_u2f */ - 1, /* ir_unop_any */ - - 1, /* ir_unop_trunc */ - 1, /* ir_unop_ceil */ - 1, /* ir_unop_floor */ - 1, /* ir_unop_fract */ - 1, /* ir_unop_round_even */ - - 1, /* ir_unop_sin */ - 1, /* ir_unop_cos */ - - 1, /* ir_unop_dFdx */ - 1, /* ir_unop_dFdy */ - - 1, /* ir_unop_noise */ + assert(op <= ir_last_opcode); - 2, /* ir_binop_add */ - 2, /* ir_binop_sub */ - 2, /* ir_binop_mul */ - 2, /* ir_binop_div */ - 2, /* ir_binop_mod */ + if (op <= ir_last_unop) + return 1; - 2, /* ir_binop_less */ - 2, /* ir_binop_greater */ - 2, /* ir_binop_lequal */ - 2, /* ir_binop_gequal */ - 2, /* ir_binop_equal */ - 2, /* ir_binop_nequal */ - 2, /* ir_binop_all_equal */ - 2, /* ir_binop_any_nequal */ + if (op <= ir_last_binop) + return 2; - 2, /* ir_binop_lshift */ - 2, /* ir_binop_rshift */ - 2, /* ir_binop_bit_and */ - 2, /* ir_binop_bit_xor */ - 2, /* ir_binop_bit_or */ - - 2, /* ir_binop_logic_and */ - 2, /* ir_binop_logic_xor */ - 2, /* ir_binop_logic_or */ - - 2, /* ir_binop_dot */ - 2, /* ir_binop_cross */ - 2, /* ir_binop_min */ - 2, /* ir_binop_max */ - - 2, /* ir_binop_pow */ - }; + if (op == ir_quadop_vector) + return 4; - assert(sizeof(num_operands) / sizeof(num_operands[0]) == ir_binop_pow + 1); - - return num_operands[op]; + assert(false); + return 0; } static const char *const operator_strs[] = { @@ -292,6 +277,8 @@ static const char *const operator_strs[] = { "round_even", "sin", "cos", + "sin_reduced", + "cos_reduced", "dFdx", "dFdy", "noise", @@ -317,16 +304,16 @@ static const char *const operator_strs[] = { "^^", "||", "dot", - "cross", "min", "max", "pow", + "vector", }; const char *ir_expression::operator_string(ir_expression_operation op) { assert((unsigned int) op < Elements(operator_strs)); - assert(Elements(operator_strs) == (ir_binop_pow + 1)); + assert(Elements(operator_strs) == (ir_quadop_vector + 1)); return operator_strs[op]; } @@ -742,6 +729,115 @@ ir_constant::has_value(const ir_constant *c) const return true; } +bool +ir_constant::is_zero() const +{ + if (!this->type->is_scalar() && !this->type->is_vector()) + return false; + + for (unsigned c = 0; c < this->type->vector_elements; c++) { + switch (this->type->base_type) { + case GLSL_TYPE_FLOAT: + if (this->value.f[c] != 0.0) + return false; + break; + case GLSL_TYPE_INT: + if (this->value.i[c] != 0) + return false; + break; + case GLSL_TYPE_UINT: + if (this->value.u[c] != 0) + return false; + break; + case GLSL_TYPE_BOOL: + if (this->value.b[c] != false) + return false; + break; + default: + /* The only other base types are structures, arrays, and samplers. + * Samplers cannot be constants, and the others should have been + * filtered out above. + */ + assert(!"Should not get here."); + return false; + } + } + + return true; +} + +bool +ir_constant::is_one() const +{ + if (!this->type->is_scalar() && !this->type->is_vector()) + return false; + + for (unsigned c = 0; c < this->type->vector_elements; c++) { + switch (this->type->base_type) { + case GLSL_TYPE_FLOAT: + if (this->value.f[c] != 1.0) + return false; + break; + case GLSL_TYPE_INT: + if (this->value.i[c] != 1) + return false; + break; + case GLSL_TYPE_UINT: + if (this->value.u[c] != 1) + return false; + break; + case GLSL_TYPE_BOOL: + if (this->value.b[c] != true) + return false; + break; + default: + /* The only other base types are structures, arrays, and samplers. + * Samplers cannot be constants, and the others should have been + * filtered out above. + */ + assert(!"Should not get here."); + return false; + } + } + + return true; +} + +bool +ir_constant::is_negative_one() const +{ + if (!this->type->is_scalar() && !this->type->is_vector()) + return false; + + if (this->type->is_boolean()) + return false; + + for (unsigned c = 0; c < this->type->vector_elements; c++) { + switch (this->type->base_type) { + case GLSL_TYPE_FLOAT: + if (this->value.f[c] != -1.0) + return false; + break; + case GLSL_TYPE_INT: + if (this->value.i[c] != -1) + return false; + break; + case GLSL_TYPE_UINT: + if (int(this->value.u[c]) != -1) + return false; + break; + default: + /* The only other base types are structures, arrays, samplers, and + * booleans. Samplers cannot be constants, and the others should + * have been filtered out above. + */ + assert(!"Should not get here."); + return false; + } + } + + return true; +} ir_loop::ir_loop() { @@ -1239,3 +1335,59 @@ reparent_ir(exec_list *list, void *mem_ctx) visit_tree((ir_instruction *) node, steal_memory, mem_ctx); } } + + +static ir_rvalue * +try_min_one(ir_rvalue *ir) +{ + ir_expression *expr = ir->as_expression(); + + if (!expr || expr->operation != ir_binop_min) + return NULL; + + if (expr->operands[0]->is_one()) + return expr->operands[1]; + + if (expr->operands[1]->is_one()) + return expr->operands[0]; + + return NULL; +} + +static ir_rvalue * +try_max_zero(ir_rvalue *ir) +{ + ir_expression *expr = ir->as_expression(); + + if (!expr || expr->operation != ir_binop_max) + return NULL; + + if (expr->operands[0]->is_zero()) + return expr->operands[1]; + + if (expr->operands[1]->is_zero()) + return expr->operands[0]; + + return NULL; +} + +ir_rvalue * +ir_rvalue::as_rvalue_to_saturate() +{ + ir_expression *expr = this->as_expression(); + + if (!expr) + return NULL; + + ir_rvalue *max_zero = try_max_zero(expr); + if (max_zero) { + return try_min_one(max_zero); + } else { + ir_rvalue *min_one = try_min_one(expr); + if (min_one) { + return try_max_zero(min_one); + } + } + + return NULL; +} diff --git a/src/glsl/ir.h b/src/glsl/ir.h index 06198e4f3f..850033b185 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -33,14 +33,11 @@ extern "C" { #include <talloc.h> } +#include "glsl_types.h" #include "list.h" #include "ir_visitor.h" #include "ir_hierarchical_visitor.h" -#ifndef ARRAY_SIZE -#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) -#endif - /** * \defgroup IR Intermediate representation nodes * @@ -147,6 +144,8 @@ public: return this; } + ir_rvalue *as_rvalue_to_saturate(); + virtual bool is_lvalue() { return false; @@ -175,6 +174,42 @@ public: return NULL; } + /** + * Determine if an r-value has the value zero + * + * The base implementation of this function always returns \c false. The + * \c ir_constant class over-rides this function to return \c true \b only + * for vector and scalar types that have all elements set to the value + * zero (or \c false for booleans). + * + * \sa ir_constant::has_value, ir_rvalue::is_one, ir_rvalue::is_negative_one + */ + virtual bool is_zero() const; + + /** + * Determine if an r-value has the value one + * + * The base implementation of this function always returns \c false. The + * \c ir_constant class over-rides this function to return \c true \b only + * for vector and scalar types that have all elements set to the value + * one (or \c true for booleans). + * + * \sa ir_constant::has_value, ir_rvalue::is_zero, ir_rvalue::is_negative_one + */ + virtual bool is_one() const; + + /** + * Determine if an r-value has the value negative one + * + * The base implementation of this function always returns \c false. The + * \c ir_constant class over-rides this function to return \c true \b only + * for vector and scalar types that have all elements set to the value + * negative one. For boolean times, the result is always \c false. + * + * \sa ir_constant::has_value, ir_rvalue::is_zero, ir_rvalue::is_one + */ + virtual bool is_negative_one() const; + protected: ir_rvalue(); }; @@ -709,6 +744,8 @@ enum ir_expression_operation { /*@{*/ ir_unop_sin, ir_unop_cos, + ir_unop_sin_reduced, /**< Reduced range sin. [-pi, pi] */ + ir_unop_cos_reduced, /**< Reduced range cos. [-pi, pi] */ /*@}*/ /** @@ -721,6 +758,11 @@ enum ir_expression_operation { ir_unop_noise, + /** + * A sentinel marking the last of the unary operations. + */ + ir_last_unop = ir_unop_noise, + ir_binop_add, ir_binop_sub, ir_binop_mul, @@ -775,18 +817,43 @@ enum ir_expression_operation { ir_binop_logic_or, ir_binop_dot, - ir_binop_cross, ir_binop_min, ir_binop_max, - ir_binop_pow + ir_binop_pow, + + /** + * A sentinel marking the last of the binary operations. + */ + ir_last_binop = ir_binop_pow, + + ir_quadop_vector, + + /** + * A sentinel marking the last of all operations. + */ + ir_last_opcode = ir_last_binop }; class ir_expression : public ir_rvalue { public: + /** + * Constructor for unary operation expressions + */ + ir_expression(int op, const struct glsl_type *type, ir_rvalue *); + + /** + * Constructor for binary operation expressions + */ ir_expression(int op, const struct glsl_type *type, ir_rvalue *, ir_rvalue *); + /** + * Constructor for quad operator expressions + */ + ir_expression(int op, const struct glsl_type *type, + ir_rvalue *, ir_rvalue *, ir_rvalue *, ir_rvalue *); + virtual ir_expression *as_expression() { return this; @@ -812,7 +879,8 @@ public: */ unsigned int get_num_operands() const { - return get_num_operands(operation); + return (this->operation == ir_quadop_vector) + ? this->type->vector_elements : get_num_operands(operation); } /** @@ -839,7 +907,7 @@ public: virtual ir_visitor_status accept(ir_hierarchical_visitor *); ir_expression_operation operation; - ir_rvalue *operands[2]; + ir_rvalue *operands[4]; }; @@ -1445,9 +1513,16 @@ public: /** * Determine whether a constant has the same value as another constant + * + * \sa ir_constant::is_zero, ir_constant::is_one, + * ir_constant::is_negative_one */ bool has_value(const ir_constant *) const; + virtual bool is_zero() const; + virtual bool is_one() const; + virtual bool is_negative_one() const; + /** * Value of the constant. * diff --git a/src/glsl/ir_clone.cpp b/src/glsl/ir_clone.cpp index a3cc8dbc97..325f606615 100644 --- a/src/glsl/ir_clone.cpp +++ b/src/glsl/ir_clone.cpp @@ -22,6 +22,7 @@ */ #include <string.h> +#include "main/compiler.h" #include "ir.h" #include "glsl_types.h" extern "C" { @@ -160,14 +161,15 @@ ir_call::clone(void *mem_ctx, struct hash_table *ht) const ir_expression * ir_expression::clone(void *mem_ctx, struct hash_table *ht) const { - ir_rvalue *op[2] = {NULL, NULL}; + ir_rvalue *op[Elements(this->operands)] = { NULL, }; unsigned int i; for (i = 0; i < get_num_operands(); i++) { op[i] = this->operands[i]->clone(mem_ctx, ht); } - return new(mem_ctx) ir_expression(this->operation, this->type, op[0], op[1]); + return new(mem_ctx) ir_expression(this->operation, this->type, + op[0], op[1], op[2], op[3]); } ir_dereference_variable * diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp index 048c020c83..4fd6d09a3a 100644 --- a/src/glsl/ir_constant_expression.cpp +++ b/src/glsl/ir_constant_expression.cpp @@ -54,7 +54,10 @@ dot(ir_constant *op0, ir_constant *op1) ir_constant * ir_expression::constant_expression_value() { - ir_constant *op[2] = { NULL, NULL }; + if (this->type->is_error()) + return NULL; + + ir_constant *op[Elements(this->operands)] = { NULL, }; ir_constant_data data; memset(&data, 0, sizeof(data)); @@ -124,31 +127,31 @@ ir_expression::constant_expression_value() case ir_unop_f2i: assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); for (unsigned c = 0; c < op[0]->type->components(); c++) { - data.i[c] = op[0]->value.f[c]; + data.i[c] = (int) op[0]->value.f[c]; } break; case ir_unop_i2f: assert(op[0]->type->base_type == GLSL_TYPE_INT); for (unsigned c = 0; c < op[0]->type->components(); c++) { - data.f[c] = op[0]->value.i[c]; + data.f[c] = (float) op[0]->value.i[c]; } break; case ir_unop_u2f: assert(op[0]->type->base_type == GLSL_TYPE_UINT); for (unsigned c = 0; c < op[0]->type->components(); c++) { - data.f[c] = op[0]->value.u[c]; + data.f[c] = (float) op[0]->value.u[c]; } break; case ir_unop_b2f: assert(op[0]->type->base_type == GLSL_TYPE_BOOL); for (unsigned c = 0; c < op[0]->type->components(); c++) { - data.f[c] = op[0]->value.b[c] ? 1.0 : 0.0; + data.f[c] = op[0]->value.b[c] ? 1.0F : 0.0F; } break; case ir_unop_f2b: assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); for (unsigned c = 0; c < op[0]->type->components(); c++) { - data.b[c] = bool(op[0]->value.f[c]); + data.b[c] = op[0]->value.f[c] != 0.0F ? true : false; } break; case ir_unop_b2i: @@ -160,7 +163,7 @@ ir_expression::constant_expression_value() case ir_unop_i2b: assert(op[0]->type->is_integer()); for (unsigned c = 0; c < op[0]->type->components(); c++) { - data.b[c] = bool(op[0]->value.u[c]); + data.b[c] = op[0]->value.u[c] ? true : false; } break; @@ -213,6 +216,7 @@ ir_expression::constant_expression_value() break; case ir_unop_sin: + case ir_unop_sin_reduced: assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); for (unsigned c = 0; c < op[0]->type->components(); c++) { data.f[c] = sinf(op[0]->value.f[c]); @@ -220,6 +224,7 @@ ir_expression::constant_expression_value() break; case ir_unop_cos: + case ir_unop_cos_reduced: assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); for (unsigned c = 0; c < op[0]->type->components(); c++) { data.f[c] = cosf(op[0]->value.f[c]); @@ -230,7 +235,7 @@ ir_expression::constant_expression_value() for (unsigned c = 0; c < op[0]->type->components(); c++) { switch (this->type->base_type) { case GLSL_TYPE_UINT: - data.u[c] = -op[0]->value.u[c]; + data.u[c] = -((int) op[0]->value.u[c]); break; case GLSL_TYPE_INT: data.i[c] = -op[0]->value.i[c]; @@ -296,7 +301,7 @@ ir_expression::constant_expression_value() break; case GLSL_TYPE_FLOAT: if (op[0]->value.f[c] != 0.0) - data.f[c] = 1.0 / op[0]->value.f[c]; + data.f[c] = 1.0F / op[0]->value.f[c]; break; default: assert(0); @@ -307,7 +312,7 @@ ir_expression::constant_expression_value() case ir_unop_rsq: assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); for (unsigned c = 0; c < op[0]->type->components(); c++) { - data.f[c] = 1.0 / sqrtf(op[0]->value.f[c]); + data.f[c] = 1.0F / sqrtf(op[0]->value.f[c]); } break; @@ -409,17 +414,6 @@ ir_expression::constant_expression_value() } break; - case ir_binop_cross: - assert(op[0]->type == glsl_type::vec3_type); - assert(op[1]->type == glsl_type::vec3_type); - data.f[0] = (op[0]->value.f[1] * op[1]->value.f[2] - - op[1]->value.f[1] * op[0]->value.f[2]); - data.f[1] = (op[0]->value.f[2] * op[1]->value.f[0] - - op[1]->value.f[2] * op[0]->value.f[0]); - data.f[2] = (op[0]->value.f[0] * op[1]->value.f[1] - - op[1]->value.f[0] * op[0]->value.f[1]); - break; - case ir_binop_add: assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar); for (unsigned c = 0, c0 = 0, c1 = 0; @@ -578,63 +572,75 @@ ir_expression::constant_expression_value() break; case ir_binop_less: - switch (op[0]->type->base_type) { - case GLSL_TYPE_UINT: - data.b[0] = op[0]->value.u[0] < op[1]->value.u[0]; - break; - case GLSL_TYPE_INT: - data.b[0] = op[0]->value.i[0] < op[1]->value.i[0]; - break; - case GLSL_TYPE_FLOAT: - data.b[0] = op[0]->value.f[0] < op[1]->value.f[0]; - break; - default: - assert(0); + assert(op[0]->type == op[1]->type); + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.b[0] = op[0]->value.u[0] < op[1]->value.u[0]; + break; + case GLSL_TYPE_INT: + data.b[0] = op[0]->value.i[0] < op[1]->value.i[0]; + break; + case GLSL_TYPE_FLOAT: + data.b[0] = op[0]->value.f[0] < op[1]->value.f[0]; + break; + default: + assert(0); + } } break; case ir_binop_greater: - switch (op[0]->type->base_type) { - case GLSL_TYPE_UINT: - data.b[0] = op[0]->value.u[0] > op[1]->value.u[0]; - break; - case GLSL_TYPE_INT: - data.b[0] = op[0]->value.i[0] > op[1]->value.i[0]; - break; - case GLSL_TYPE_FLOAT: - data.b[0] = op[0]->value.f[0] > op[1]->value.f[0]; - break; - default: - assert(0); + assert(op[0]->type == op[1]->type); + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.b[c] = op[0]->value.u[c] > op[1]->value.u[c]; + break; + case GLSL_TYPE_INT: + data.b[c] = op[0]->value.i[c] > op[1]->value.i[c]; + break; + case GLSL_TYPE_FLOAT: + data.b[c] = op[0]->value.f[c] > op[1]->value.f[c]; + break; + default: + assert(0); + } } break; case ir_binop_lequal: - switch (op[0]->type->base_type) { - case GLSL_TYPE_UINT: - data.b[0] = op[0]->value.u[0] <= op[1]->value.u[0]; - break; - case GLSL_TYPE_INT: - data.b[0] = op[0]->value.i[0] <= op[1]->value.i[0]; - break; - case GLSL_TYPE_FLOAT: - data.b[0] = op[0]->value.f[0] <= op[1]->value.f[0]; - break; - default: - assert(0); + assert(op[0]->type == op[1]->type); + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.b[0] = op[0]->value.u[0] <= op[1]->value.u[0]; + break; + case GLSL_TYPE_INT: + data.b[0] = op[0]->value.i[0] <= op[1]->value.i[0]; + break; + case GLSL_TYPE_FLOAT: + data.b[0] = op[0]->value.f[0] <= op[1]->value.f[0]; + break; + default: + assert(0); + } } break; case ir_binop_gequal: - switch (op[0]->type->base_type) { - case GLSL_TYPE_UINT: - data.b[0] = op[0]->value.u[0] >= op[1]->value.u[0]; - break; - case GLSL_TYPE_INT: - data.b[0] = op[0]->value.i[0] >= op[1]->value.i[0]; - break; - case GLSL_TYPE_FLOAT: - data.b[0] = op[0]->value.f[0] >= op[1]->value.f[0]; - break; - default: - assert(0); + assert(op[0]->type == op[1]->type); + for (unsigned c = 0; c < op[0]->type->components(); c++) { + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.b[0] = op[0]->value.u[0] >= op[1]->value.u[0]; + break; + case GLSL_TYPE_INT: + data.b[0] = op[0]->value.i[0] >= op[1]->value.i[0]; + break; + case GLSL_TYPE_FLOAT: + data.b[0] = op[0]->value.f[0] >= op[1]->value.f[0]; + break; + default: + assert(0); + } } break; case ir_binop_equal: @@ -782,6 +788,24 @@ ir_expression::constant_expression_value() } break; + case ir_quadop_vector: + for (unsigned c = 0; c < this->type->vector_elements; c++) { + switch (this->type->base_type) { + case GLSL_TYPE_INT: + data.i[c] = op[c]->value.i[0]; + break; + case GLSL_TYPE_UINT: + data.u[c] = op[c]->value.u[0]; + break; + case GLSL_TYPE_FLOAT: + data.f[c] = op[c]->value.f[0]; + break; + default: + assert(0); + } + } + break; + default: /* FINISHME: Should handle all expression types. */ return NULL; @@ -987,10 +1011,18 @@ ir_call::constant_expression_value() assert(op[0]->type->is_float()); for (unsigned c = 0; c < op[0]->type->components(); c++) data.f[c] = acosf(op[0]->value.f[c]); + } else if (strcmp(callee, "acosh") == 0) { + assert(op[0]->type->is_float()); + for (unsigned c = 0; c < op[0]->type->components(); c++) + data.f[c] = acoshf(op[0]->value.f[c]); } else if (strcmp(callee, "asin") == 0) { assert(op[0]->type->is_float()); for (unsigned c = 0; c < op[0]->type->components(); c++) data.f[c] = asinf(op[0]->value.f[c]); + } else if (strcmp(callee, "asinh") == 0) { + assert(op[0]->type->is_float()); + for (unsigned c = 0; c < op[0]->type->components(); c++) + data.f[c] = asinhf(op[0]->value.f[c]); } else if (strcmp(callee, "atan") == 0) { assert(op[0]->type->is_float()); if (num_parameters == 2) { @@ -1001,6 +1033,10 @@ ir_call::constant_expression_value() for (unsigned c = 0; c < op[0]->type->components(); c++) data.f[c] = atanf(op[0]->value.f[c]); } + } else if (strcmp(callee, "atanh") == 0) { + assert(op[0]->type->is_float()); + for (unsigned c = 0; c < op[0]->type->components(); c++) + data.f[c] = atanhf(op[0]->value.f[c]); } else if (strcmp(callee, "dFdx") == 0 || strcmp(callee, "dFdy") == 0) { return ir_constant::zero(mem_ctx, this->type); } else if (strcmp(callee, "ceil") == 0) { @@ -1037,11 +1073,18 @@ ir_call::constant_expression_value() for (unsigned c = 0; c < op[0]->type->components(); c++) data.f[c] = coshf(op[0]->value.f[c]); } else if (strcmp(callee, "cross") == 0) { - expr = new(mem_ctx) ir_expression(ir_binop_cross, type, op[0], op[1]); + assert(op[0]->type == glsl_type::vec3_type); + assert(op[1]->type == glsl_type::vec3_type); + data.f[0] = (op[0]->value.f[1] * op[1]->value.f[2] - + op[1]->value.f[1] * op[0]->value.f[2]); + data.f[1] = (op[0]->value.f[2] * op[1]->value.f[0] - + op[1]->value.f[2] * op[0]->value.f[0]); + data.f[2] = (op[0]->value.f[0] * op[1]->value.f[1] - + op[1]->value.f[0] * op[0]->value.f[1]); } else if (strcmp(callee, "degrees") == 0) { assert(op[0]->type->is_float()); for (unsigned c = 0; c < op[0]->type->components(); c++) - data.f[c] = 180.0/M_PI * op[0]->value.f[c]; + data.f[c] = 180.0F / M_PI * op[0]->value.f[c]; } else if (strcmp(callee, "distance") == 0) { assert(op[0]->type->is_float() && op[1]->type->is_float()); float length_squared = 0.0; @@ -1232,7 +1275,7 @@ ir_call::constant_expression_value() } else if (strcmp(callee, "radians") == 0) { assert(op[0]->type->is_float()); for (unsigned c = 0; c < op[0]->type->components(); c++) - data.f[c] = M_PI/180.0 * op[0]->value.f[c]; + data.f[c] = M_PI / 180.0F * op[0]->value.f[c]; } else if (strcmp(callee, "reflect") == 0) { assert(op[0]->type->is_float()); float dot_NI = dot(op[1], op[0]); @@ -1241,7 +1284,7 @@ ir_call::constant_expression_value() } else if (strcmp(callee, "refract") == 0) { const float eta = op[2]->value.f[0]; const float dot_NI = dot(op[1], op[0]); - const float k = 1.0 - eta * eta * (1.0 - dot_NI * dot_NI); + const float k = 1.0F - eta * eta * (1.0F - dot_NI * dot_NI); if (k < 0.0) { return ir_constant::zero(mem_ctx, this->type); } else { @@ -1281,7 +1324,7 @@ ir_call::constant_expression_value() /* op[0] (edge) may be either a scalar or a vector */ const unsigned c0_inc = op[0]->type->is_scalar() ? 0 : 1; for (unsigned c = 0, c0 = 0; c < type->components(); c0 += c0_inc, c++) - data.f[c] = (op[1]->value.f[c] < op[0]->value.f[c0]) ? 0.0 : 1.0; + data.f[c] = (op[1]->value.f[c] < op[0]->value.f[c0]) ? 0.0F : 1.0F; } else if (strcmp(callee, "tan") == 0) { assert(op[0]->type->is_float()); for (unsigned c = 0; c < op[0]->type->components(); c++) diff --git a/src/glsl/ir_div_to_mul_rcp.cpp b/src/glsl/ir_div_to_mul_rcp.cpp deleted file mode 100644 index 640d5d64f9..0000000000 --- a/src/glsl/ir_div_to_mul_rcp.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright © 2010 Intel Corporation - * - * 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 (including the next - * paragraph) 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 - * THE AUTHORS OR COPYRIGHT HOLDERS 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. - */ - -/** - * \file ir_div_to_mul_rcp.cpp - * - * Breaks an ir_unop_div expression down to op0 * (rcp(op1)). - * - * Many GPUs don't have a divide instruction (945 and 965 included), - * but they do have an RCP instruction to compute an approximate - * reciprocal. By breaking the operation down, constant reciprocals - * can get constant folded. - */ - -#include "ir.h" -#include "glsl_types.h" - -class ir_div_to_mul_rcp_visitor : public ir_hierarchical_visitor { -public: - ir_div_to_mul_rcp_visitor() - { - this->made_progress = false; - } - - ir_visitor_status visit_leave(ir_expression *); - - bool made_progress; -}; - -bool -do_div_to_mul_rcp(exec_list *instructions) -{ - ir_div_to_mul_rcp_visitor v; - - visit_list_elements(&v, instructions); - return v.made_progress; -} - -ir_visitor_status -ir_div_to_mul_rcp_visitor::visit_leave(ir_expression *ir) -{ - if (ir->operation != ir_binop_div) - return visit_continue; - - if (ir->operands[1]->type->base_type != GLSL_TYPE_INT && - ir->operands[1]->type->base_type != GLSL_TYPE_UINT) { - /* New expression for the 1.0 / op1 */ - ir_rvalue *expr; - expr = new(ir) ir_expression(ir_unop_rcp, - ir->operands[1]->type, - ir->operands[1], - NULL); - - /* op0 / op1 -> op0 * (1.0 / op1) */ - ir->operation = ir_binop_mul; - ir->operands[1] = expr; - } else { - /* Be careful with integer division -- we need to do it as a - * float and re-truncate, since rcp(n > 1) of an integer would - * just be 0. - */ - ir_rvalue *op0, *op1; - const struct glsl_type *vec_type; - - vec_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, - ir->operands[1]->type->vector_elements, - ir->operands[1]->type->matrix_columns); - - if (ir->operands[1]->type->base_type == GLSL_TYPE_INT) - op1 = new(ir) ir_expression(ir_unop_i2f, vec_type, ir->operands[1], NULL); - else - op1 = new(ir) ir_expression(ir_unop_u2f, vec_type, ir->operands[1], NULL); - - op1 = new(ir) ir_expression(ir_unop_rcp, op1->type, op1, NULL); - - vec_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, - ir->operands[0]->type->vector_elements, - ir->operands[0]->type->matrix_columns); - - if (ir->operands[0]->type->base_type == GLSL_TYPE_INT) - op0 = new(ir) ir_expression(ir_unop_i2f, vec_type, ir->operands[0], NULL); - else - op0 = new(ir) ir_expression(ir_unop_u2f, vec_type, ir->operands[0], NULL); - - op0 = new(ir) ir_expression(ir_binop_mul, vec_type, op0, op1); - - ir->operation = ir_unop_f2i; - ir->operands[0] = op0; - ir->operands[1] = NULL; - } - - this->made_progress = true; - - return visit_continue; -} diff --git a/src/glsl/ir_explog_to_explog2.cpp b/src/glsl/ir_explog_to_explog2.cpp deleted file mode 100644 index 78694a2029..0000000000 --- a/src/glsl/ir_explog_to_explog2.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright © 2010 Intel Corporation - * - * 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 (including the next - * paragraph) 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 - * THE AUTHORS OR COPYRIGHT HOLDERS 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. - */ - -/** - * \file ir_explog_to_explog2.cpp - * - * Many GPUs don't have a base e log or exponent instruction, but they - * do have base 2 versions, so this pass converts exp and log to exp2 - * and log2 operations. - */ - -#include "main/core.h" /* for log2f on MSVC */ -#include "ir.h" -#include "glsl_types.h" - -class ir_explog_to_explog2_visitor : public ir_hierarchical_visitor { -public: - ir_explog_to_explog2_visitor() - { - this->progress = false; - } - - ir_visitor_status visit_leave(ir_expression *); - - bool progress; -}; - -bool -do_explog_to_explog2(exec_list *instructions) -{ - ir_explog_to_explog2_visitor v; - - visit_list_elements(&v, instructions); - return v.progress; -} - -ir_visitor_status -ir_explog_to_explog2_visitor::visit_leave(ir_expression *ir) -{ - if (ir->operation == ir_unop_exp) { - void *mem_ctx = talloc_parent(ir); - ir_constant *log2_e = new(mem_ctx) ir_constant(log2f(M_E)); - - ir->operation = ir_unop_exp2; - ir->operands[0] = new(mem_ctx) ir_expression(ir_binop_mul, - ir->operands[0]->type, - ir->operands[0], - log2_e); - this->progress = true; - } - - if (ir->operation == ir_unop_log) { - void *mem_ctx = talloc_parent(ir); - - ir->operation = ir_binop_mul; - ir->operands[0] = new(mem_ctx) ir_expression(ir_unop_log2, - ir->operands[0]->type, - ir->operands[0], - NULL); - ir->operands[1] = new(mem_ctx) ir_constant(1.0f / log2f(M_E)); - this->progress = true; - } - - return visit_continue; -} diff --git a/src/glsl/ir_function.cpp b/src/glsl/ir_function.cpp index dfdec144b2..8db70119ec 100644 --- a/src/glsl/ir_function.cpp +++ b/src/glsl/ir_function.cpp @@ -70,7 +70,6 @@ type_compare(const glsl_type *a, const glsl_type *b) */ return (type_compare(a->fields.array, b->fields.array) == 0) ? 0 : -1; - case GLSL_TYPE_FUNCTION: case GLSL_TYPE_VOID: case GLSL_TYPE_ERROR: default: diff --git a/src/glsl/ir_mod_to_fract.cpp b/src/glsl/ir_mod_to_fract.cpp deleted file mode 100644 index c82a1f64fd..0000000000 --- a/src/glsl/ir_mod_to_fract.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright © 2010 Intel Corporation - * - * 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 (including the next - * paragraph) 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 - * THE AUTHORS OR COPYRIGHT HOLDERS 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. - */ - -/** - * \file ir_mod_to_fract.cpp - * - * Breaks an ir_unop_mod expression down to (op1 * fract(op0 / op1)) - * - * Many GPUs don't have a MOD instruction (945 and 965 included), and - * if we have to break it down like this anyway, it gives an - * opportunity to do things like constant fold the (1.0 / op1) easily. - */ - -#include "ir.h" - -class ir_mod_to_fract_visitor : public ir_hierarchical_visitor { -public: - ir_mod_to_fract_visitor() - { - this->made_progress = false; - } - - ir_visitor_status visit_leave(ir_expression *); - - bool made_progress; -}; - -bool -do_mod_to_fract(exec_list *instructions) -{ - ir_mod_to_fract_visitor v; - - visit_list_elements(&v, instructions); - return v.made_progress; -} - -ir_visitor_status -ir_mod_to_fract_visitor::visit_leave(ir_expression *ir) -{ - if (ir->operation != ir_binop_mod) - return visit_continue; - - ir_variable *temp = new(ir) ir_variable(ir->operands[1]->type, "mod_b", - ir_var_temporary); - this->base_ir->insert_before(temp); - - ir_assignment *assign; - ir_rvalue *expr; - - assign = new(ir) ir_assignment(new(ir) ir_dereference_variable(temp), - ir->operands[1], NULL); - this->base_ir->insert_before(assign); - - expr = new(ir) ir_expression(ir_binop_div, - ir->operands[0]->type, - ir->operands[0], - new(ir) ir_dereference_variable(temp)); - - expr = new(ir) ir_expression(ir_unop_fract, - ir->operands[0]->type, - expr, - NULL); - - ir->operation = ir_binop_mul; - ir->operands[0] = new(ir) ir_dereference_variable(temp); - ir->operands[1] = expr; - this->made_progress = true; - - return visit_continue; -} diff --git a/src/glsl/ir_optimization.h b/src/glsl/ir_optimization.h index ffdc66b9f7..fa497a4555 100644 --- a/src/glsl/ir_optimization.h +++ b/src/glsl/ir_optimization.h @@ -28,6 +28,13 @@ * Prototypes for optimization passes to be called by the compiler and drivers. */ +/* Operations for lower_instructions() */ +#define SUB_TO_ADD_NEG 0x01 +#define DIV_TO_MUL_RCP 0x02 +#define EXP_TO_EXP2 0x04 +#define LOG_TO_LOG2 0x08 +#define MOD_TO_FRACT 0x10 + bool do_common_optimization(exec_list *ir, bool linked, unsigned max_unroll_iterations); bool do_algebraic(exec_list *instructions); @@ -40,8 +47,6 @@ bool do_dead_code(exec_list *instructions); bool do_dead_code_local(exec_list *instructions); bool do_dead_code_unlinked(exec_list *instructions); bool do_dead_functions(exec_list *instructions); -bool do_div_to_mul_rcp(exec_list *instructions); -bool do_explog_to_explog2(exec_list *instructions); bool do_function_inlining(exec_list *instructions); bool do_lower_jumps(exec_list *instructions, bool pull_out_jumps = true, bool lower_sub_return = true, bool lower_main_return = false, bool lower_continue = false, bool lower_break = false); bool do_lower_texture_projection(exec_list *instructions); @@ -56,7 +61,9 @@ bool do_swizzle_swizzle(exec_list *instructions); bool do_tree_grafting(exec_list *instructions); bool do_vec_index_to_cond_assign(exec_list *instructions); bool do_vec_index_to_swizzle(exec_list *instructions); +bool lower_instructions(exec_list *instructions, unsigned what_to_lower); bool lower_noise(exec_list *instructions); bool lower_variable_index_to_cond_assign(exec_list *instructions, bool lower_input, bool lower_output, bool lower_temp, bool lower_uniform); +bool lower_quadop_vector(exec_list *instructions, bool dont_lower_swz); bool optimize_redundant_jumps(exec_list *instructions); diff --git a/src/glsl/ir_print_visitor.cpp b/src/glsl/ir_print_visitor.cpp index 5c19db1326..e5067bfdad 100644 --- a/src/glsl/ir_print_visitor.cpp +++ b/src/glsl/ir_print_visitor.cpp @@ -182,11 +182,10 @@ void ir_print_visitor::visit(ir_expression *ir) printf(" %s ", ir->operator_string()); - if (ir->operands[0]) - ir->operands[0]->accept(this); + for (unsigned i = 0; i < ir->get_num_operands(); i++) { + ir->operands[i]->accept(this); + } - if (ir->operands[1]) - ir->operands[1]->accept(this); printf(") "); } diff --git a/src/glsl/ir_reader.cpp b/src/glsl/ir_reader.cpp index a9cbf8ea94..7a22a945ec 100644 --- a/src/glsl/ir_reader.cpp +++ b/src/glsl/ir_reader.cpp @@ -64,9 +64,12 @@ static ir_texture *read_texture(_mesa_glsl_parse_state *, s_list *); static ir_dereference *read_dereference(_mesa_glsl_parse_state *, s_expression *); -static ir_dereference *read_var_ref(_mesa_glsl_parse_state *, s_list *); -static ir_dereference *read_array_ref(_mesa_glsl_parse_state *, s_list *); -static ir_dereference *read_record_ref(_mesa_glsl_parse_state *, s_list *); +static ir_dereference_variable * +read_var_ref(_mesa_glsl_parse_state *, s_list *); +static ir_dereference_array * +read_array_ref(_mesa_glsl_parse_state *, s_list *); +static ir_dereference_record * +read_record_ref(_mesa_glsl_parse_state *, s_list *); void _mesa_glsl_read_ir(_mesa_glsl_parse_state *state, exec_list *instructions, @@ -260,7 +263,7 @@ read_function_sig(_mesa_glsl_parse_state *st, ir_function *f, s_list *list, return; s_list *paramlist = SX_AS_LIST(type_expr->next); - s_list *body_list = SX_AS_LIST(paramlist->next); + s_list *body_list = SX_AS_LIST(type_expr->next->next); if (paramlist == NULL || body_list == NULL) { ir_read_error(st, list, "Expected (signature <type> (parameters ...) " "(<instruction> ...))"); @@ -674,7 +677,7 @@ read_call(_mesa_glsl_parse_state *st, s_list *list) } s_symbol *name = SX_AS_SYMBOL(list->subexpressions.head->next); - s_list *params = SX_AS_LIST(name->next); + s_list *params = SX_AS_LIST(list->subexpressions.head->next->next); if (name == NULL || params == NULL) { ir_read_error(st, list, "expected (call <name> (<param> ...))"); return NULL; @@ -796,12 +799,6 @@ read_swizzle(_mesa_glsl_parse_state *st, s_list *list) } s_expression *sub = (s_expression*) swiz->next; - if (sub == NULL) { - ir_read_error(st, list, "expected rvalue: (swizzle %s <rvalue>)", - swiz->value()); - return NULL; - } - ir_rvalue *rvalue = read_rvalue(st, sub); if (rvalue == NULL) return NULL; @@ -930,7 +927,7 @@ read_dereference(_mesa_glsl_parse_state *st, s_expression *expr) return NULL; } -static ir_dereference * +static ir_dereference_variable * read_var_ref(_mesa_glsl_parse_state *st, s_list *list) { void *ctx = st; @@ -953,7 +950,7 @@ read_var_ref(_mesa_glsl_parse_state *st, s_list *list) return new(ctx) ir_dereference_variable(var); } -static ir_dereference * +static ir_dereference_array * read_array_ref(_mesa_glsl_parse_state *st, s_list *list) { void *ctx = st; @@ -974,7 +971,7 @@ read_array_ref(_mesa_glsl_parse_state *st, s_list *list) return new(ctx) ir_dereference_array(subject, idx); } -static ir_dereference * +static ir_dereference_record * read_record_ref(_mesa_glsl_parse_state *st, s_list *list) { void *ctx = st; @@ -1053,8 +1050,8 @@ read_texture(_mesa_glsl_parse_state *st, s_list *list) return NULL; } s_int *offset_x = SX_AS_INT(offset_list->subexpressions.head); - s_int *offset_y = SX_AS_INT(offset_x->next); - s_int *offset_z = SX_AS_INT(offset_y->next); + s_int *offset_y = SX_AS_INT(offset_list->subexpressions.head->next); + s_int *offset_z = SX_AS_INT(offset_list->subexpressions.head->next->next); if (offset_x == NULL || offset_y == NULL || offset_z == NULL) { ir_read_error(st, offset_list, "expected (<int> <int> <int>)"); return NULL; diff --git a/src/glsl/ir_sub_to_add_neg.cpp b/src/glsl/ir_sub_to_add_neg.cpp deleted file mode 100644 index 7ed8c1495e..0000000000 --- a/src/glsl/ir_sub_to_add_neg.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright © 2010 Intel Corporation - * - * 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 (including the next - * paragraph) 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 - * THE AUTHORS OR COPYRIGHT HOLDERS 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. - */ - -/** - * \file ir_sub_to_add_neg.cpp - * - * Breaks an ir_binop_sub expression down to add(op0, neg(op1)) - * - * This simplifies expression reassociation, and for many backends - * there is no subtract operation separate from adding the negation. - * For backends with native subtract operations, they will probably - * want to recognize add(op0, neg(op1)) or the other way around to - * produce a subtract anyway. - */ - -#include "ir.h" - -class ir_sub_to_add_neg_visitor : public ir_hierarchical_visitor { -public: - ir_sub_to_add_neg_visitor() - { - this->progress = false; - } - - ir_visitor_status visit_leave(ir_expression *); - - bool progress; -}; - -bool -do_sub_to_add_neg(exec_list *instructions) -{ - ir_sub_to_add_neg_visitor v; - - visit_list_elements(&v, instructions); - return v.progress; -} - -ir_visitor_status -ir_sub_to_add_neg_visitor::visit_leave(ir_expression *ir) -{ - if (ir->operation != ir_binop_sub) - return visit_continue; - - void *mem_ctx = talloc_parent(ir); - - ir->operation = ir_binop_add; - ir->operands[1] = new(mem_ctx) ir_expression(ir_unop_neg, - ir->operands[1]->type, - ir->operands[1], - NULL); - - this->progress = true; - - return visit_continue; -} diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp index d22789f990..5b055f64d3 100644 --- a/src/glsl/ir_validate.cpp +++ b/src/glsl/ir_validate.cpp @@ -273,6 +273,8 @@ ir_validate::visit_leave(ir_expression *ir) case ir_unop_fract: case ir_unop_sin: case ir_unop_cos: + case ir_unop_sin_reduced: + case ir_unop_cos_reduced: case ir_unop_dFdx: case ir_unop_dFdy: assert(ir->operands[0]->type->base_type == GLSL_TYPE_FLOAT); @@ -373,11 +375,50 @@ ir_validate::visit_leave(ir_expression *ir) assert(ir->operands[0]->type == ir->operands[1]->type); break; - case ir_binop_cross: - assert(ir->operands[0]->type == glsl_type::vec3_type); - assert(ir->operands[1]->type == glsl_type::vec3_type); - assert(ir->type == glsl_type::vec3_type); - break; + case ir_quadop_vector: + /* The vector operator collects some number of scalars and generates a + * vector from them. + * + * - All of the operands must be scalar. + * - Number of operands must matche the size of the resulting vector. + * - Base type of the operands must match the base type of the result. + */ + assert(ir->type->is_vector()); + switch (ir->type->vector_elements) { + case 2: + assert(ir->operands[0]->type->is_scalar()); + assert(ir->operands[0]->type->base_type == ir->type->base_type); + assert(ir->operands[1]->type->is_scalar()); + assert(ir->operands[1]->type->base_type == ir->type->base_type); + assert(ir->operands[2] == NULL); + assert(ir->operands[3] == NULL); + break; + case 3: + assert(ir->operands[0]->type->is_scalar()); + assert(ir->operands[0]->type->base_type == ir->type->base_type); + assert(ir->operands[1]->type->is_scalar()); + assert(ir->operands[1]->type->base_type == ir->type->base_type); + assert(ir->operands[2]->type->is_scalar()); + assert(ir->operands[2]->type->base_type == ir->type->base_type); + assert(ir->operands[3] == NULL); + break; + case 4: + assert(ir->operands[0]->type->is_scalar()); + assert(ir->operands[0]->type->base_type == ir->type->base_type); + assert(ir->operands[1]->type->is_scalar()); + assert(ir->operands[1]->type->base_type == ir->type->base_type); + assert(ir->operands[2]->type->is_scalar()); + assert(ir->operands[2]->type->base_type == ir->type->base_type); + assert(ir->operands[3]->type->is_scalar()); + assert(ir->operands[3]->type->base_type == ir->type->base_type); + break; + default: + /* The is_vector assertion above should prevent execution from ever + * getting here. + */ + assert(!"Should not get here."); + break; + } } return visit_continue; diff --git a/src/glsl/loop_analysis.cpp b/src/glsl/loop_analysis.cpp index 91e34da0ee..ff7adf00a2 100644 --- a/src/glsl/loop_analysis.cpp +++ b/src/glsl/loop_analysis.cpp @@ -44,6 +44,7 @@ loop_state::loop_state() loop_state::~loop_state() { hash_table_dtor(this->ht); + talloc_free(this->mem_ctx); } diff --git a/src/glsl/loop_controls.cpp b/src/glsl/loop_controls.cpp index 2ef3d30525..b528810f40 100644 --- a/src/glsl/loop_controls.cpp +++ b/src/glsl/loop_controls.cpp @@ -85,6 +85,9 @@ int calculate_iterations(ir_rvalue *from, ir_rvalue *to, ir_rvalue *increment, enum ir_expression_operation op) { + if (from == NULL || to == NULL || increment == NULL) + return -1; + void *mem_ctx = talloc_init("%s", __func__); ir_expression *const sub = diff --git a/src/glsl/ir_if_to_cond_assign.cpp b/src/glsl/lower_if_to_cond_assign.cpp index 0b87413941..cf48cfb8d6 100644 --- a/src/glsl/ir_if_to_cond_assign.cpp +++ b/src/glsl/lower_if_to_cond_assign.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_if_to_cond_assign.cpp + * \file lower_if_to_cond_assign.cpp * * This attempts to flatten all if statements to conditional * assignments for GPUs that don't do control flow. diff --git a/src/glsl/lower_instructions.cpp b/src/glsl/lower_instructions.cpp new file mode 100644 index 0000000000..d460ba1a97 --- /dev/null +++ b/src/glsl/lower_instructions.cpp @@ -0,0 +1,262 @@ +/* + * Copyright © 2010 Intel Corporation + * + * 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 (including the next + * paragraph) 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 + * THE AUTHORS OR COPYRIGHT HOLDERS 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. + */ + +/** + * \file lower_instructions.cpp + * + * Many GPUs lack native instructions for certain expression operations, and + * must replace them with some other expression tree. This pass lowers some + * of the most common cases, allowing the lowering code to be implemented once + * rather than in each driver backend. + * + * Currently supported transformations: + * - SUB_TO_ADD_NEG + * - DIV_TO_MUL_RCP + * - EXP_TO_EXP2 + * - LOG_TO_LOG2 + * - MOD_TO_FRACT + * + * SUB_TO_ADD_NEG: + * --------------- + * Breaks an ir_binop_sub expression down to add(op0, neg(op1)) + * + * This simplifies expression reassociation, and for many backends + * there is no subtract operation separate from adding the negation. + * For backends with native subtract operations, they will probably + * want to recognize add(op0, neg(op1)) or the other way around to + * produce a subtract anyway. + * + * DIV_TO_MUL_RCP: + * --------------- + * Breaks an ir_unop_div expression down to op0 * (rcp(op1)). + * + * Many GPUs don't have a divide instruction (945 and 965 included), + * but they do have an RCP instruction to compute an approximate + * reciprocal. By breaking the operation down, constant reciprocals + * can get constant folded. + * + * EXP_TO_EXP2 and LOG_TO_LOG2: + * ---------------------------- + * Many GPUs don't have a base e log or exponent instruction, but they + * do have base 2 versions, so this pass converts exp and log to exp2 + * and log2 operations. + * + * MOD_TO_FRACT: + * ------------- + * Breaks an ir_unop_mod expression down to (op1 * fract(op0 / op1)) + * + * Many GPUs don't have a MOD instruction (945 and 965 included), and + * if we have to break it down like this anyway, it gives an + * opportunity to do things like constant fold the (1.0 / op1) easily. + */ + +#include "main/core.h" /* for M_E */ +#include "glsl_types.h" +#include "ir.h" +#include "ir_optimization.h" + +class lower_instructions_visitor : public ir_hierarchical_visitor { +public: + lower_instructions_visitor(unsigned lower) + : progress(false), lower(lower) { } + + ir_visitor_status visit_leave(ir_expression *); + + bool progress; + +private: + unsigned lower; /** Bitfield of which operations to lower */ + + void sub_to_add_neg(ir_expression *); + void div_to_mul_rcp(ir_expression *); + void mod_to_fract(ir_expression *); + void exp_to_exp2(ir_expression *); + void log_to_log2(ir_expression *); +}; + +/** + * Determine if a particular type of lowering should occur + */ +#define lowering(x) (this->lower & x) + +bool +lower_instructions(exec_list *instructions, unsigned what_to_lower) +{ + lower_instructions_visitor v(what_to_lower); + + visit_list_elements(&v, instructions); + return v.progress; +} + +void +lower_instructions_visitor::sub_to_add_neg(ir_expression *ir) +{ + ir->operation = ir_binop_add; + ir->operands[1] = new(ir) ir_expression(ir_unop_neg, ir->operands[1]->type, + ir->operands[1], NULL); + this->progress = true; +} + +void +lower_instructions_visitor::div_to_mul_rcp(ir_expression *ir) +{ + if (!ir->operands[1]->type->is_integer()) { + /* New expression for the 1.0 / op1 */ + ir_rvalue *expr; + expr = new(ir) ir_expression(ir_unop_rcp, + ir->operands[1]->type, + ir->operands[1], + NULL); + + /* op0 / op1 -> op0 * (1.0 / op1) */ + ir->operation = ir_binop_mul; + ir->operands[1] = expr; + } else { + /* Be careful with integer division -- we need to do it as a + * float and re-truncate, since rcp(n > 1) of an integer would + * just be 0. + */ + ir_rvalue *op0, *op1; + const struct glsl_type *vec_type; + + vec_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, + ir->operands[1]->type->vector_elements, + ir->operands[1]->type->matrix_columns); + + if (ir->operands[1]->type->base_type == GLSL_TYPE_INT) + op1 = new(ir) ir_expression(ir_unop_i2f, vec_type, ir->operands[1], NULL); + else + op1 = new(ir) ir_expression(ir_unop_u2f, vec_type, ir->operands[1], NULL); + + op1 = new(ir) ir_expression(ir_unop_rcp, op1->type, op1, NULL); + + vec_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, + ir->operands[0]->type->vector_elements, + ir->operands[0]->type->matrix_columns); + + if (ir->operands[0]->type->base_type == GLSL_TYPE_INT) + op0 = new(ir) ir_expression(ir_unop_i2f, vec_type, ir->operands[0], NULL); + else + op0 = new(ir) ir_expression(ir_unop_u2f, vec_type, ir->operands[0], NULL); + + op0 = new(ir) ir_expression(ir_binop_mul, vec_type, op0, op1); + + ir->operation = ir_unop_f2i; + ir->operands[0] = op0; + ir->operands[1] = NULL; + } + + this->progress = true; +} + +void +lower_instructions_visitor::exp_to_exp2(ir_expression *ir) +{ + ir_constant *log2_e = new(ir) ir_constant(log2f(M_E)); + + ir->operation = ir_unop_exp2; + ir->operands[0] = new(ir) ir_expression(ir_binop_mul, ir->operands[0]->type, + ir->operands[0], log2_e); + this->progress = true; +} + +void +lower_instructions_visitor::log_to_log2(ir_expression *ir) +{ + ir->operation = ir_binop_mul; + ir->operands[0] = new(ir) ir_expression(ir_unop_log2, ir->operands[0]->type, + ir->operands[0], NULL); + ir->operands[1] = new(ir) ir_constant(1.0f / log2f(M_E)); + this->progress = true; +} + +void +lower_instructions_visitor::mod_to_fract(ir_expression *ir) +{ + ir_variable *temp = new(ir) ir_variable(ir->operands[1]->type, "mod_b", + ir_var_temporary); + this->base_ir->insert_before(temp); + + ir_assignment *const assign = + new(ir) ir_assignment(new(ir) ir_dereference_variable(temp), + ir->operands[1], NULL); + + this->base_ir->insert_before(assign); + + ir_expression *const div_expr = + new(ir) ir_expression(ir_binop_div, ir->operands[0]->type, + ir->operands[0], + new(ir) ir_dereference_variable(temp)); + + /* Don't generate new IR that would need to be lowered in an additional + * pass. + */ + if (lowering(DIV_TO_MUL_RCP)) + div_to_mul_rcp(div_expr); + + ir_rvalue *expr = new(ir) ir_expression(ir_unop_fract, + ir->operands[0]->type, + div_expr, + NULL); + + ir->operation = ir_binop_mul; + ir->operands[0] = new(ir) ir_dereference_variable(temp); + ir->operands[1] = expr; + this->progress = true; +} + +ir_visitor_status +lower_instructions_visitor::visit_leave(ir_expression *ir) +{ + switch (ir->operation) { + case ir_binop_sub: + if (lowering(SUB_TO_ADD_NEG)) + sub_to_add_neg(ir); + break; + + case ir_binop_div: + if (lowering(DIV_TO_MUL_RCP)) + div_to_mul_rcp(ir); + break; + + case ir_unop_exp: + if (lowering(EXP_TO_EXP2)) + exp_to_exp2(ir); + break; + + case ir_unop_log: + if (lowering(LOG_TO_LOG2)) + log_to_log2(ir); + break; + + case ir_binop_mod: + if (lowering(MOD_TO_FRACT)) + mod_to_fract(ir); + break; + + default: + return visit_continue; + } + + return visit_continue; +} diff --git a/src/glsl/ir_lower_jumps.cpp b/src/glsl/lower_jumps.cpp index b69cc1ec31..e1e7a5b007 100644 --- a/src/glsl/ir_lower_jumps.cpp +++ b/src/glsl/lower_jumps.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_lower_jumps.cpp + * \file lower_jumps.cpp */ #include "glsl_types.h" diff --git a/src/glsl/ir_mat_op_to_vec.cpp b/src/glsl/lower_mat_op_to_vec.cpp index 244fe48928..7065fdec35 100644 --- a/src/glsl/ir_mat_op_to_vec.cpp +++ b/src/glsl/lower_mat_op_to_vec.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_mat_op_to_vec.cpp + * \file lower_mat_op_to_vec.cpp * * Breaks matrix operation expressions down to a series of vector operations. * @@ -366,6 +366,8 @@ ir_mat_op_to_vec_visitor::visit_leave(ir_assignment *orig_assign) if (!has_matrix_operand(orig_expr, matrix_columns)) return visit_continue; + assert(orig_expr->get_num_operands() <= 2); + mem_ctx = talloc_parent(orig_assign); ir_dereference_variable *lhs_deref = diff --git a/src/glsl/ir_vec_index_to_cond_assign.cpp b/src/glsl/lower_vec_index_to_cond_assign.cpp index cd8dedf2fe..f8011a16e5 100644 --- a/src/glsl/ir_vec_index_to_cond_assign.cpp +++ b/src/glsl/lower_vec_index_to_cond_assign.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_vec_index_to_cond_assign.cpp + * \file lower_vec_index_to_cond_assign.cpp * * Turns indexing into vector types to a series of conditional moves * of each channel's swizzle into a temporary. diff --git a/src/glsl/ir_vec_index_to_swizzle.cpp b/src/glsl/lower_vec_index_to_swizzle.cpp index 969dc8f94a..9ae43c0db1 100644 --- a/src/glsl/ir_vec_index_to_swizzle.cpp +++ b/src/glsl/lower_vec_index_to_swizzle.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_vec_index_to_swizzle.cpp + * \file lower_vec_index_to_swizzle.cpp * * Turns constant indexing into vector types to swizzles. This will * let other swizzle-aware optimization passes catch these constructs, diff --git a/src/glsl/lower_vector.cpp b/src/glsl/lower_vector.cpp new file mode 100644 index 0000000000..93c37638bb --- /dev/null +++ b/src/glsl/lower_vector.cpp @@ -0,0 +1,224 @@ +/* + * Copyright © 2010 Intel Corporation + * + * 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 (including the next + * paragraph) 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 + * THE AUTHORS OR COPYRIGHT HOLDERS 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. + */ + +/** + * \file lower_vector.cpp + * IR lowering pass to remove some types of ir_quadop_vector + * + * \author Ian Romanick <ian.d.romanick@intel.com> + */ + +#include "ir.h" +#include "ir_rvalue_visitor.h" + +class lower_vector_visitor : public ir_rvalue_visitor { +public: + lower_vector_visitor() : progress(false) + { + /* empty */ + } + + void handle_rvalue(ir_rvalue **rvalue); + + /** + * Should SWZ-like expressions be lowered? + */ + bool dont_lower_swz; + + bool progress; +}; + +/** + * Determine if an IR expression tree looks like an extended swizzle + * + * Extended swizzles consist of access of a single vector source (with possible + * per component negation) and the constants -1, 0, or 1. + */ +bool +is_extended_swizzle(ir_expression *ir) +{ + /* Track any variables that are accessed by this expression. + */ + ir_variable *var = NULL; + + assert(ir->operation == ir_quadop_vector); + + for (unsigned i = 0; i < ir->type->vector_elements; i++) { + ir_rvalue *op = ir->operands[i]; + + while (op != NULL) { + switch (op->ir_type) { + case ir_type_constant: { + const ir_constant *const c = op->as_constant(); + + if (!c->is_one() && !c->is_zero() && !c->is_negative_one()) + return false; + + op = NULL; + break; + } + + case ir_type_dereference_variable: { + ir_dereference_variable *const d = (ir_dereference_variable *) op; + + if ((var != NULL) && (var != d->var)) + return false; + + var = d->var; + op = NULL; + break; + } + + case ir_type_expression: { + ir_expression *const ex = (ir_expression *) op; + + if (ex->operation != ir_unop_neg) + return false; + + op = ex->operands[0]; + break; + } + + case ir_type_swizzle: + op = ((ir_swizzle *) op)->val; + break; + + default: + return false; + } + } + } + + return true; +} + +void +lower_vector_visitor::handle_rvalue(ir_rvalue **rvalue) +{ + if (!*rvalue) + return; + + ir_expression *expr = (*rvalue)->as_expression(); + if ((expr == NULL) || (expr->operation != ir_quadop_vector)) + return; + + if (this->dont_lower_swz && is_extended_swizzle(expr)) + return; + + /* FINISHME: Is this the right thing to use for the talloc context? + */ + void *const mem_ctx = expr; + + assert(expr->type->vector_elements == expr->get_num_operands()); + + /* Generate a temporary with the same type as the ir_quadop_operation. + */ + ir_variable *const temp = + new(mem_ctx) ir_variable(expr->type, "vecop_tmp", ir_var_temporary); + + this->base_ir->insert_before(temp); + + /* Counter of the number of components collected so far. + */ + unsigned assigned; + + /* Write-mask in the destination that receives counted by 'assigned'. + */ + unsigned write_mask; + + + /* Generate upto four assignments to that variable. Try to group component + * assignments together: + * + * - All constant components can be assigned at once. + * - All assigments of components from a single variable with the same + * unary operator can be assigned at once. + */ + ir_constant_data d = { { 0 } }; + + assigned = 0; + write_mask = 0; + for (unsigned i = 0; i < expr->type->vector_elements; i++) { + const ir_constant *const c = expr->operands[i]->as_constant(); + + if (c == NULL) + continue; + + switch (expr->type->base_type) { + case GLSL_TYPE_UINT: d.u[assigned] = c->value.u[0]; break; + case GLSL_TYPE_INT: d.i[assigned] = c->value.i[0]; break; + case GLSL_TYPE_FLOAT: d.f[assigned] = c->value.f[0]; break; + case GLSL_TYPE_BOOL: d.b[assigned] = c->value.b[0]; break; + default: assert(!"Should not get here."); break; + } + + write_mask |= (1U << i); + assigned++; + } + + assert((write_mask == 0) == (assigned == 0)); + + /* If there were constant values, generate an assignment. + */ + if (assigned > 0) { + ir_constant *const c = + new(mem_ctx) ir_constant(glsl_type::get_instance(expr->type->base_type, + assigned, 0), + &d); + ir_dereference *const lhs = new(mem_ctx) ir_dereference_variable(temp); + ir_assignment *const assign = + new(mem_ctx) ir_assignment(lhs, c, NULL, write_mask); + + this->base_ir->insert_before(assign); + } + + /* FINISHME: This should try to coalesce assignments. + */ + for (unsigned i = 0; i < expr->type->vector_elements; i++) { + if (expr->operands[i]->ir_type == ir_type_constant) + continue; + + ir_dereference *const lhs = new(mem_ctx) ir_dereference_variable(temp); + ir_assignment *const assign = + new(mem_ctx) ir_assignment(lhs, expr->operands[i], NULL, (1U << i)); + + this->base_ir->insert_before(assign); + assigned++; + } + + assert(assigned == expr->type->vector_elements); + + *rvalue = new(mem_ctx) ir_dereference_variable(temp); + this->progress = true; +} + +bool +lower_quadop_vector(exec_list *instructions, bool dont_lower_swz) +{ + lower_vector_visitor v; + + v.dont_lower_swz = dont_lower_swz; + visit_list_elements(&v, instructions); + + return v.progress; +} diff --git a/src/glsl/main.cpp b/src/glsl/main.cpp index 08a44c96e5..3302851264 100644 --- a/src/glsl/main.cpp +++ b/src/glsl/main.cpp @@ -146,15 +146,6 @@ load_text_file(void *ctx, const char *file_name) return text; } - -void -usage_fail(const char *name) -{ - printf("%s <filename.frag|filename.vert>\n", name); - exit(EXIT_FAILURE); -} - - int glsl_es = 0; int dump_ast = 0; int dump_hir = 0; @@ -170,6 +161,25 @@ const struct option compiler_opts[] = { { NULL, 0, NULL, 0 } }; +/** + * \brief Print proper usage and exit with failure. + */ +void +usage_fail(const char *name) +{ + + const char *header = + "usage: %s [options] <file.vert | file.geom | file.frag>\n" + "\n" + "Possible options are:\n"; + printf(header, name, name); + for (const struct option *o = compiler_opts; o->name != 0; ++o) { + printf(" --%s\n", o->name); + } + exit(EXIT_FAILURE); +} + + void compile_shader(struct gl_context *ctx, struct gl_shader *shader) { diff --git a/src/glsl/ir_algebraic.cpp b/src/glsl/opt_algebraic.cpp index 2ed66db476..3c9af85f31 100644 --- a/src/glsl/ir_algebraic.cpp +++ b/src/glsl/opt_algebraic.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_algebraic.cpp + * \file opt_algebraic.cpp * * Takes advantage of association, commutivity, and other algebraic * properties to simplify expressions. @@ -68,80 +68,16 @@ public: bool progress; }; -static bool +static inline bool is_vec_zero(ir_constant *ir) { - int c; - - if (!ir) - return false; - if (!ir->type->is_scalar() && - !ir->type->is_vector()) - return false; - - for (c = 0; c < ir->type->vector_elements; c++) { - switch (ir->type->base_type) { - case GLSL_TYPE_FLOAT: - if (ir->value.f[c] != 0.0) - return false; - break; - case GLSL_TYPE_INT: - if (ir->value.i[c] != 0) - return false; - break; - case GLSL_TYPE_UINT: - if (ir->value.u[c] != 0) - return false; - break; - case GLSL_TYPE_BOOL: - if (ir->value.b[c] != false) - return false; - break; - default: - assert(!"bad base type"); - return false; - } - } - - return true; + return (ir == NULL) ? false : ir->is_zero(); } -static bool +static inline bool is_vec_one(ir_constant *ir) { - int c; - - if (!ir) - return false; - if (!ir->type->is_scalar() && - !ir->type->is_vector()) - return false; - - for (c = 0; c < ir->type->vector_elements; c++) { - switch (ir->type->base_type) { - case GLSL_TYPE_FLOAT: - if (ir->value.f[c] != 1.0) - return false; - break; - case GLSL_TYPE_INT: - if (ir->value.i[c] != 1) - return false; - break; - case GLSL_TYPE_UINT: - if (ir->value.u[c] != 1) - return false; - break; - case GLSL_TYPE_BOOL: - if (ir->value.b[c] != true) - return false; - break; - default: - assert(!"bad base type"); - return false; - } - } - - return true; + return (ir == NULL) ? false : ir->is_one(); } static void @@ -245,6 +181,7 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) ir_expression *temp; unsigned int i; + assert(ir->get_num_operands() <= 2); for (i = 0; i < ir->get_num_operands(); i++) { if (ir->operands[i]->type->is_matrix()) return ir; @@ -457,7 +394,7 @@ ir_algebraic_visitor::handle_rvalue(ir_rvalue **rvalue) return; ir_expression *expr = (*rvalue)->as_expression(); - if (!expr) + if (!expr || expr->operation == ir_quadop_vector) return; *rvalue = handle_expression(expr); diff --git a/src/glsl/ir_constant_folding.cpp b/src/glsl/opt_constant_folding.cpp index 554c54fae3..d69ca75fe0 100644 --- a/src/glsl/ir_constant_folding.cpp +++ b/src/glsl/opt_constant_folding.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_constant_folding.cpp + * \file opt_constant_folding.cpp * Replace constant-valued expressions with references to constant values. */ diff --git a/src/glsl/ir_constant_propagation.cpp b/src/glsl/opt_constant_propagation.cpp index 5d875b7be0..6719fc8186 100644 --- a/src/glsl/ir_constant_propagation.cpp +++ b/src/glsl/opt_constant_propagation.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_constant_propagation.cpp + * \file opt_constant_propagation.cpp * * Tracks assignments of constants to channels of variables, and * usage of those constant channels with direct usage of the constants. diff --git a/src/glsl/ir_constant_variable.cpp b/src/glsl/opt_constant_variable.cpp index 1fb73e765e..8068d0c143 100644 --- a/src/glsl/ir_constant_variable.cpp +++ b/src/glsl/opt_constant_variable.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_constant_variable.cpp + * \file opt_constant_variable.cpp * * Marks variables assigned a single constant value over the course * of the program as constant. diff --git a/src/glsl/ir_copy_propagation.cpp b/src/glsl/opt_copy_propagation.cpp index 0fe8fa6c41..8d07fefbfd 100644 --- a/src/glsl/ir_copy_propagation.cpp +++ b/src/glsl/opt_copy_propagation.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_copy_propagation.cpp + * \file opt_copy_propagation.cpp * * Moves usage of recently-copied variables to the previous copy of * the variable. diff --git a/src/glsl/ir_dead_code.cpp b/src/glsl/opt_dead_code.cpp index 5cf5e99add..cb500d2d10 100644 --- a/src/glsl/ir_dead_code.cpp +++ b/src/glsl/opt_dead_code.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_dead_code.cpp + * \file opt_dead_code.cpp * * Eliminates dead assignments and variable declarations from the code. */ diff --git a/src/glsl/ir_dead_code_local.cpp b/src/glsl/opt_dead_code_local.cpp index 4bbedf0ff9..5689e7d20d 100644 --- a/src/glsl/ir_dead_code_local.cpp +++ b/src/glsl/opt_dead_code_local.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_dead_code_local.cpp + * \file opt_dead_code_local.cpp * * Eliminates local dead assignments from the code. * diff --git a/src/glsl/ir_dead_functions.cpp b/src/glsl/opt_dead_functions.cpp index 26554441d3..cf91cb6d36 100644 --- a/src/glsl/ir_dead_functions.cpp +++ b/src/glsl/opt_dead_functions.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_dead_functions.cpp + * \file opt_dead_functions.cpp * * Eliminates unused functions from the linked program. */ @@ -125,6 +125,7 @@ do_dead_functions(exec_list *instructions) if (!entry->used) { entry->signature->remove(); + delete entry->signature; progress = true; } delete(entry); @@ -143,6 +144,7 @@ do_dead_functions(exec_list *instructions) * symbol table should be OK. */ func->remove(); + delete func; progress = true; } } diff --git a/src/glsl/ir_function_inlining.cpp b/src/glsl/opt_function_inlining.cpp index 147c1824c1..169fd82688 100644 --- a/src/glsl/ir_function_inlining.cpp +++ b/src/glsl/opt_function_inlining.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_function_inlining.cpp + * \file opt_function_inlining.cpp * * Replaces calls to functions with the body of the function. */ diff --git a/src/glsl/ir_if_simplification.cpp b/src/glsl/opt_if_simplification.cpp index 021615ebd1..618bacfecf 100644 --- a/src/glsl/ir_if_simplification.cpp +++ b/src/glsl/opt_if_simplification.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_if_simplification.cpp + * \file opt_if_simplification.cpp * * Moves constant branches of if statements out to the surrounding * instruction stream. diff --git a/src/glsl/ir_noop_swizzle.cpp b/src/glsl/opt_noop_swizzle.cpp index 0403dfa4e9..0a906aaf1d 100644 --- a/src/glsl/ir_noop_swizzle.cpp +++ b/src/glsl/opt_noop_swizzle.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_noop_swizzle.cpp + * \file opt_noop_swizzle.cpp * * If a swizzle doesn't change the order or count of components, then * remove the swizzle so that other optimization passes see the value diff --git a/src/glsl/ir_structure_splitting.cpp b/src/glsl/opt_structure_splitting.cpp index ff3ec936eb..d6191002c2 100644 --- a/src/glsl/ir_structure_splitting.cpp +++ b/src/glsl/opt_structure_splitting.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_structure_splitting.cpp + * \file opt_structure_splitting.cpp * * If a structure is only ever referenced by its components, then * split those components out to individual variables so they can be diff --git a/src/glsl/ir_swizzle_swizzle.cpp b/src/glsl/opt_swizzle_swizzle.cpp index 0ffb4fa313..bc442fa869 100644 --- a/src/glsl/ir_swizzle_swizzle.cpp +++ b/src/glsl/opt_swizzle_swizzle.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_swizzle_swizzle.cpp + * \file opt_swizzle_swizzle.cpp * * Eliminates the second swizzle in a swizzle chain. */ diff --git a/src/glsl/ir_tree_grafting.cpp b/src/glsl/opt_tree_grafting.cpp index 9b569b8284..9917c045b1 100644 --- a/src/glsl/ir_tree_grafting.cpp +++ b/src/glsl/opt_tree_grafting.cpp @@ -22,7 +22,7 @@ */ /** - * \file ir_tree_grafting.cpp + * \file opt_tree_grafting.cpp * * Takes assignments to variables that are dereferenced only once and * pastes the RHS expression into where the variable is dereferenced. diff --git a/src/glsl/s_expression.cpp b/src/glsl/s_expression.cpp index 4458c48d6b..4c8829fea9 100644 --- a/src/glsl/s_expression.cpp +++ b/src/glsl/s_expression.cpp @@ -133,7 +133,8 @@ void s_list::print() foreach_iter(exec_list_iterator, it, this->subexpressions) { s_expression *expr = (s_expression*) it.get(); expr->print(); - printf(" "); + if (!expr->next->is_tail_sentinel()) + printf(" "); } printf(")"); } diff --git a/src/glut/glx/SConscript b/src/glut/glx/SConscript index 29d2cc0149..9363b5ca5c 100644 --- a/src/glut/glx/SConscript +++ b/src/glut/glx/SConscript @@ -78,7 +78,6 @@ if env['platform'] == 'windows': 'glut.def', ] else: - env.Tool('x11') env.PrependUnique(LIBS = [ 'GLU', 'GL', diff --git a/src/glx/indirect.c b/src/glx/indirect.c index 2b09c1c3b5..49938a167a 100644 --- a/src/glx/indirect.c +++ b/src/glx/indirect.c @@ -30,7 +30,6 @@ #include "indirect.h" #include "glxclient.h" #include "indirect_size.h" -#include "glapidispatch.h" #include "glapi.h" #include "glthread.h" #include <GL/glxproto.h> @@ -5200,7 +5199,7 @@ glDeleteTexturesEXT(GLsizei n, const GLuint * textures) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_DeleteTextures(GET_DISPATCH(), (n, textures)); + GET_DISPATCH()->DeleteTextures(n, textures); } else #endif { @@ -5271,7 +5270,7 @@ glGenTexturesEXT(GLsizei n, GLuint * textures) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GenTextures(GET_DISPATCH(), (n, textures)); + GET_DISPATCH()->GenTextures(n, textures); } else #endif { @@ -5336,7 +5335,7 @@ glIsTextureEXT(GLuint texture) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - return CALL_IsTexture(GET_DISPATCH(), (texture)); + return GET_DISPATCH()->IsTexture(texture); } else #endif { @@ -5652,7 +5651,7 @@ glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid * table) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetColorTable(GET_DISPATCH(), (target, format, type, table)); + GET_DISPATCH()->GetColorTable(target, format, type, table); } else #endif { @@ -5728,8 +5727,7 @@ glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat * params) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetColorTableParameterfv(GET_DISPATCH(), - (target, pname, params)); + GET_DISPATCH()->GetColorTableParameterfv(target, pname, params); } else #endif { @@ -5801,8 +5799,7 @@ glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint * params) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetColorTableParameteriv(GET_DISPATCH(), - (target, pname, params)); + GET_DISPATCH()->GetColorTableParameteriv(target, pname, params); } else #endif { @@ -6127,8 +6124,7 @@ gl_dispatch_stub_356(GLenum target, GLenum format, GLenum type, #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetConvolutionFilter(GET_DISPATCH(), - (target, format, type, image)); + GET_DISPATCH()->GetConvolutionFilter(target, format, type, image); } else #endif { @@ -6205,8 +6201,7 @@ gl_dispatch_stub_357(GLenum target, GLenum pname, GLfloat * params) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetConvolutionParameterfv(GET_DISPATCH(), - (target, pname, params)); + GET_DISPATCH()->GetConvolutionParameterfv(target, pname, params); } else #endif { @@ -6278,8 +6273,7 @@ gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetConvolutionParameteriv(GET_DISPATCH(), - (target, pname, params)); + GET_DISPATCH()->GetConvolutionParameteriv(target, pname, params); } else #endif { @@ -6358,8 +6352,7 @@ gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format, #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetHistogram(GET_DISPATCH(), - (target, reset, format, type, values)); + GET_DISPATCH()->GetHistogram(target, reset, format, type, values); } else #endif { @@ -6435,7 +6428,7 @@ gl_dispatch_stub_362(GLenum target, GLenum pname, GLfloat * params) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetHistogramParameterfv(GET_DISPATCH(), (target, pname, params)); + GET_DISPATCH()->GetHistogramParameterfv(target, pname, params); } else #endif { @@ -6506,7 +6499,7 @@ gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetHistogramParameteriv(GET_DISPATCH(), (target, pname, params)); + GET_DISPATCH()->GetHistogramParameteriv(target, pname, params); } else #endif { @@ -6581,7 +6574,7 @@ gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format, #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetMinmax(GET_DISPATCH(), (target, reset, format, type, values)); + GET_DISPATCH()->GetMinmax(target, reset, format, type, values); } else #endif { @@ -6655,7 +6648,7 @@ gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetMinmaxParameterfv(GET_DISPATCH(), (target, pname, params)); + GET_DISPATCH()->GetMinmaxParameterfv(target, pname, params); } else #endif { @@ -6723,7 +6716,7 @@ gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params) #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetMinmaxParameteriv(GET_DISPATCH(), (target, pname, params)); + GET_DISPATCH()->GetMinmaxParameteriv(target, pname, params); } else #endif { @@ -9268,7 +9261,7 @@ __indirect_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, #define X_GLrop_ProgramParameters4dvNV 4187 void -__indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, +__indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLsizei num, const GLdouble * params) { struct glx_context *const gc = __glXGetCurrentContext(); @@ -9292,7 +9285,7 @@ __indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, #define X_GLrop_ProgramParameters4fvNV 4186 void -__indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint num, +__indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLsizei num, const GLfloat * params) { struct glx_context *const gc = __glXGetCurrentContext(); diff --git a/src/glx/indirect.h b/src/glx/indirect.h index 282de75c40..f3222077bf 100644 --- a/src/glx/indirect.h +++ b/src/glx/indirect.h @@ -440,6 +440,7 @@ extern HIDDEN void __indirect_glGetConvolutionParameteriv(GLenum target, GLenum extern HIDDEN void gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params); extern HIDDEN void __indirect_glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span); extern HIDDEN void gl_dispatch_stub_359(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span); +#define gl_dispatch_stub_GetSeparableFilterEXT gl_dispatch_stub_359 extern HIDDEN void __indirect_glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column); extern HIDDEN void __indirect_glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); extern HIDDEN void gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); @@ -640,8 +641,8 @@ extern HIDDEN void __indirect_glGetVertexAttribfvNV(GLuint index, GLenum pname, extern HIDDEN void __indirect_glGetVertexAttribivNV(GLuint index, GLenum pname, GLint * params); extern HIDDEN GLboolean __indirect_glIsProgramNV(GLuint program); extern HIDDEN void __indirect_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte * program); -extern HIDDEN void __indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, const GLdouble * params); -extern HIDDEN void __indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint num, const GLfloat * params); +extern HIDDEN void __indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLsizei num, const GLdouble * params); +extern HIDDEN void __indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLsizei num, const GLfloat * params); extern HIDDEN void __indirect_glRequestResidentProgramsNV(GLsizei n, const GLuint * ids); extern HIDDEN void __indirect_glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform); extern HIDDEN void __indirect_glVertexAttrib1dNV(GLuint index, GLdouble x); diff --git a/src/glx/single2.c b/src/glx/single2.c index 318d18e555..66281fa9c9 100644 --- a/src/glx/single2.c +++ b/src/glx/single2.c @@ -36,7 +36,6 @@ #include "indirect.h" #include "indirect_vertex_array.h" #include "glapitable.h" -#include "glapidispatch.h" #include "glapi.h" #ifdef USE_XCB #include <xcb/xcb.h> @@ -944,8 +943,7 @@ glAreTexturesResidentEXT(GLsizei n, const GLuint * textures, struct glx_context *const gc = __glXGetCurrentContext(); if (gc->isDirect) { - return CALL_AreTexturesResident(GET_DISPATCH(), - (n, textures, residences)); + return GET_DISPATCH()->AreTexturesResident(n, textures, residences); } else { struct glx_context *const gc = __glXGetCurrentContext(); diff --git a/src/glx/singlepix.c b/src/glx/singlepix.c index b61f26b2f3..d8a71664d0 100644 --- a/src/glx/singlepix.c +++ b/src/glx/singlepix.c @@ -31,10 +31,8 @@ #include "packsingle.h" #include "indirect.h" #include "glapitable.h" -#include "glapidispatch.h" #include "glapi.h" #include "glthread.h" -#include "glapioffsets.h" #include <GL/glxproto.h> void @@ -110,19 +108,17 @@ __indirect_glGetSeparableFilter(GLenum target, GLenum format, GLenum type, } -#define CONCAT(a,b) a ## b -#define NAME(o) CONCAT(gl_dispatch_stub_, o) - -void NAME(_gloffset_GetSeparableFilter) (GLenum target, GLenum format, - GLenum type, GLvoid * row, - GLvoid * column, GLvoid * span) +/* it is defined to gl_dispatch_stub_NNN in indirect.h */ +void gl_dispatch_stub_GetSeparableFilterEXT (GLenum target, GLenum format, + GLenum type, GLvoid * row, + GLvoid * column, GLvoid * span) { struct glx_context *const gc = __glXGetCurrentContext(); #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) if (gc->isDirect) { - CALL_GetSeparableFilter(GET_DISPATCH(), - (target, format, type, row, column, span)); + GET_DISPATCH()->GetSeparableFilter(target, format, type, + row, column, span); return; } else diff --git a/src/mapi/glapi/SConscript b/src/mapi/glapi/SConscript index 40db237fcb..77a5f9bd2e 100644 --- a/src/mapi/glapi/SConscript +++ b/src/mapi/glapi/SConscript @@ -6,77 +6,78 @@ Import('*') if env['platform'] != 'winddk': - env = env.Clone() - - env.Append(CPPDEFINES = [ - 'MAPI_GLAPI_CURRENT', - ]) + env = env.Clone() + + env.Append(CPPDEFINES = [ + 'MAPI_GLAPI_CURRENT', + ]) - if env['platform'] == 'windows': - env.Append(CPPDEFINES = [ - '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers - 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers - 'WIN32_THREADS', # use Win32 thread API - ]) + if env['platform'] == 'windows': + env.Append(CPPDEFINES = [ + '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers + 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers + 'WIN32_THREADS', # use Win32 thread API + ]) - env.Append(CPPPATH = [ - '#/src/mapi', - '#/src/mesa', - ]) - - glapi_sources = [ - 'glapi_dispatch.c', - 'glapi_entrypoint.c', - 'glapi_getproc.c', - 'glapi_nop.c', - 'glthread.c', - ] - - mapi_sources = [ - 'u_current.c', - 'u_execmem.c', - 'u_thread.c', - ] - for s in mapi_sources: - o = env.SharedObject(s[:-2], '../mapi/' + s) - glapi_sources.append(o) + env.Append(CPPPATH = [ + '#/src/mapi', + '#/src/mesa', + ]) + + glapi_sources = [ + 'glapi_dispatch.c', + 'glapi_entrypoint.c', + 'glapi_getproc.c', + 'glapi_nop.c', + 'glthread.c', + ] + + mapi_sources = [ + 'u_current.c', + 'u_execmem.c', + 'u_thread.c', + ] + for s in mapi_sources: + o = env.SharedObject(s[:-2], '../mapi/' + s) + glapi_sources.append(o) - # - # Assembly sources - # - if gcc and env['machine'] == 'x86': - env.Append(CPPDEFINES = [ - 'USE_X86_ASM', - 'USE_MMX_ASM', - 'USE_3DNOW_ASM', - 'USE_SSE_ASM', - ]) - glapi_sources += [ - 'glapi_x86.S', - ] - elif gcc and env['machine'] == 'x86_64': - env.Append(CPPDEFINES = [ - 'USE_X86_64_ASM', - ]) - glapi_sources += [ - 'glapi_x86-64.S' - ] - elif gcc and env['machine'] == 'ppc': - env.Append(CPPDEFINES = [ - 'USE_PPC_ASM', - 'USE_VMX_ASM', - ]) - glapi_sources += [ - ] - elif gcc and env['machine'] == 'sparc': - glapi_sources += [ - 'glapi_sparc.S' - ] - else: - pass - - glapi = env.ConvenienceLibrary( - target = 'glapi', - source = glapi_sources, - ) - Export('glapi') + # + # Assembly sources + # + if env['gcc'] and env['platform'] != 'windows': + if env['machine'] == 'x86': + env.Append(CPPDEFINES = [ + 'USE_X86_ASM', + 'USE_MMX_ASM', + 'USE_3DNOW_ASM', + 'USE_SSE_ASM', + ]) + glapi_sources += [ + 'glapi_x86.S', + ] + elif env['machine'] == 'x86_64': + env.Append(CPPDEFINES = [ + 'USE_X86_64_ASM', + ]) + glapi_sources += [ + 'glapi_x86-64.S' + ] + elif env['machine'] == 'ppc': + env.Append(CPPDEFINES = [ + 'USE_PPC_ASM', + 'USE_VMX_ASM', + ]) + glapi_sources += [ + ] + elif env['machine'] == 'sparc': + glapi_sources += [ + 'glapi_sparc.S' + ] + else: + pass + + glapi = env.ConvenienceLibrary( + target = 'glapi', + source = glapi_sources, + ) + Export('glapi') diff --git a/src/mapi/glapi/gen-es/Makefile b/src/mapi/glapi/gen-es/Makefile index bda8e9ef72..837579248f 100644 --- a/src/mapi/glapi/gen-es/Makefile +++ b/src/mapi/glapi/gen-es/Makefile @@ -3,14 +3,13 @@ GLAPI = ../gen include $(TOP)/configs/current OUTPUTS := \ - glapi/glapidispatch.h \ - glapi/glapioffsets.h \ glapi/glapitable.h \ glapi/glapitemp.h \ glapi/glprocs.h \ glapi/glapi_sparc.S \ glapi/glapi_x86-64.S \ glapi/glapi_x86.S \ + main/glapidispatch.h \ main/remap_helper.h COMMON = gl_XML.py glX_XML.py license.py typeexpr.py @@ -47,9 +46,6 @@ endef %/glapidispatch.h: $(GLAPI)/gl_table.py $(COMMON) $(call gen-glapi,-c -m remap_table) -%/glapioffsets.h: $(GLAPI)/gl_offsets.py $(COMMON) - $(call gen-glapi,-c) - %/glapitable.h: $(GLAPI)/gl_table.py $(COMMON) $(call gen-glapi,-c) diff --git a/src/mapi/glapi/gen/ARB_draw_instanced.xml b/src/mapi/glapi/gen/ARB_draw_instanced.xml index 5741a588c9..57bb776ac2 100644 --- a/src/mapi/glapi/gen/ARB_draw_instanced.xml +++ b/src/mapi/glapi/gen/ARB_draw_instanced.xml @@ -6,36 +6,16 @@ <OpenGLAPI> -<category name="3.1"> - - <function name="DrawArraysInstanced" offset="assign"> - <param name="mode" type="GLenum"/> - <param name="first" type="GLint"/> - <param name="count" type="GLsizei"/> - <param name="primcount" type="GLsizei"/> - </function> - - <function name="DrawElementsInstanced" offset="assign"> - <param name="mode" type="GLenum"/> - <param name="count" type="GLsizei"/> - <param name="type" type="GLenum"/> - <param name="indices" type="const GLvoid *"/> - <param name="primcount" type="GLsizei"/> - </function> - -</category> - - <category name="GL_ARB_draw_instanced" number="44"> - <function name="DrawArraysInstancedARB" alias="DrawArraysInstanced"> + <function name="DrawArraysInstancedARB" offset="assign"> <param name="mode" type="GLenum"/> <param name="first" type="GLint"/> <param name="count" type="GLsizei"/> <param name="primcount" type="GLsizei"/> </function> - <function name="DrawElementsInstancedARB" alias="DrawElementsInstanced"> + <function name="DrawElementsInstancedARB" offset="assign"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> @@ -48,14 +28,14 @@ <category name="GL_EXT_draw_instanced" number="327"> - <function name="DrawArraysInstancedEXT" alias="DrawArraysInstanced"> + <function name="DrawArraysInstancedEXT" alias="DrawArraysInstancedARB"> <param name="mode" type="GLenum"/> <param name="first" type="GLint"/> <param name="count" type="GLsizei"/> <param name="primcount" type="GLsizei"/> </function> - <function name="DrawElementsInstancedEXT" alias="DrawElementsInstanced"> + <function name="DrawElementsInstancedEXT" alias="DrawElementsInstancedARB"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> diff --git a/src/mapi/glapi/gen/EXT_gpu_shader4.xml b/src/mapi/glapi/gen/EXT_gpu_shader4.xml new file mode 100644 index 0000000000..7a8944ea3b --- /dev/null +++ b/src/mapi/glapi/gen/EXT_gpu_shader4.xml @@ -0,0 +1,244 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<OpenGLAPI> + +<category name="GL_EXT_gpu_shader4" number="326"> + + <enum name="VERTEX_ATTRIB_ARRAY_INTEGER_EXT" value="0x88FD"/> + <enum name="SAMPLER_1D_ARRAY_EXT" value="0x8DC0"/> + <enum name="SAMPLER_2D_ARRAY_EXT" value="0x8DC1"/> + <enum name="SAMPLER_BUFFER_EXT" value="0x8DC2"/> + <enum name="SAMPLER_1D_ARRAY_SHADOW_EXT" value="0x8DC3"/> + <enum name="SAMPLER_2D_ARRAY_SHADOW_EXT" value="0x8DC4"/> + <enum name="SAMPLER_CUBE_SHADOW_EXT" value="0x8DC5"/> + <enum name="UNSIGNED_INT_VEC2_EXT" value="0x8DC6"/> + <enum name="UNSIGNED_INT_VEC3_EXT" value="0x8DC7"/> + <enum name="UNSIGNED_INT_VEC4_EXT" value="0x8DC8"/> + <enum name="INT_SAMPLER_1D_EXT" value="0x8DC9"/> + <enum name="INT_SAMPLER_2D_EXT" value="0x8DCA"/> + <enum name="INT_SAMPLER_3D_EXT" value="0x8DCB"/> + <enum name="INT_SAMPLER_CUBE_EXT" value="0x8DCC"/> + <enum name="INT_SAMPLER_2D_RECT_EXT" value="0x8DCD"/> + <enum name="INT_SAMPLER_1D_ARRAY_EXT" value="0x8DCE"/> + <enum name="INT_SAMPLER_2D_ARRAY_EXT" value="0x8DCF"/> + <enum name="INT_SAMPLER_BUFFER_EXT" value="0x8DD0"/> + <enum name="UNSIGNED_INT_SAMPLER_1D_EXT" value="0x8DD1"/> + <enum name="UNSIGNED_INT_SAMPLER_2D_EXT" value="0x8DD2"/> + <enum name="UNSIGNED_INT_SAMPLER_3D_EXT" value="0x8DD3"/> + <enum name="UNSIGNED_INT_SAMPLER_CUBE_EXT" value="0x8DD4"/> + <enum name="UNSIGNED_INT_SAMPLER_2D_RECT_EXT" value="0x8DD5"/> + <enum name="UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT" value="0x8DD6"/> + <enum name="UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT" value="0x8DD7"/> + <enum name="UNSIGNED_INT_SAMPLER_BUFFER_EXT" value="0x8DD8"/> + <enum name="MIN_PROGRAM_TEXEL_OFFSET_EXT" value="0x8904"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_PROGRAM_TEXEL_OFFSET_EXT" value="0x8905"> + <size name="Get" mode="get"/> + </enum> + + + <function name="VertexAttribI1iEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLint"/> + </function> + + <function name="VertexAttribI2iEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + </function> + + <function name="VertexAttribI3iEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="z" type="GLint"/> + </function> + + <function name="VertexAttribI4iEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="z" type="GLint"/> + <param name="w" type="GLint"/> + </function> + + <function name="VertexAttribI1uiEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLuint"/> + </function> + + <function name="VertexAttribI2uiEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLuint"/> + <param name="y" type="GLuint"/> + </function> + + <function name="VertexAttribI3uiEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLuint"/> + <param name="y" type="GLuint"/> + <param name="z" type="GLuint"/> + </function> + + <function name="VertexAttribI4uiEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLuint"/> + <param name="y" type="GLuint"/> + <param name="z" type="GLuint"/> + <param name="w" type="GLuint"/> + </function> + + <function name="VertexAttribI1ivEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLint *"/> + </function> + + <function name="VertexAttribI2ivEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLint *"/> + </function> + + <function name="VertexAttribI3ivEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLint *"/> + </function> + + <function name="VertexAttribI4ivEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLint *"/> + </function> + + <function name="VertexAttribI1uivEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLuint *"/> + </function> + + <function name="VertexAttribI2uivEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLuint *"/> + </function> + + <function name="VertexAttribI3uivEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLuint *"/> + </function> + + <function name="VertexAttribI4uivEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLuint *"/> + </function> + + <function name="VertexAttribI4bvEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLbyte *"/> + </function> + + <function name="VertexAttribI4svEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLshort *"/> + </function> + + <function name="VertexAttribI4ubvEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLubyte *"/> + </function> + + <function name="VertexAttribI4usvEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLushort *"/> + </function> + + <function name="VertexAttribIPointerEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + </function> + + <function name="GetVertexAttribIivEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *"/> + </function> + + <function name="GetVertexAttribIuivEXT" offset="assign"> + <param name="index" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLuint *"/> + </function> + + <function name="Uniform1uiEXT" offset="assign"> + <param name="location" type="GLint"/> + <param name="x" type="GLuint"/> + </function> + + <function name="Uniform2uiEXT" offset="assign"> + <param name="location" type="GLint"/> + <param name="x" type="GLuint"/> + <param name="y" type="GLuint"/> + </function> + + <function name="Uniform3uiEXT" offset="assign"> + <param name="location" type="GLint"/> + <param name="x" type="GLuint"/> + <param name="y" type="GLuint"/> + <param name="z" type="GLuint"/> + </function> + + <function name="Uniform4uiEXT" offset="assign"> + <param name="location" type="GLint"/> + <param name="x" type="GLuint"/> + <param name="y" type="GLuint"/> + <param name="z" type="GLuint"/> + <param name="w" type="GLuint"/> + </function> + + <function name="Uniform1uivEXT" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLuint *"/> + </function> + + <function name="Uniform2uivEXT" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLuint *"/> + </function> + + <function name="Uniform3uivEXT" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLuint *"/> + </function> + + <function name="Uniform4uivEXT" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLuint *"/> + </function> + + <function name="GetUniformuivEXT" offset="assign"> + <param name="program" type="GLuint"/> + <param name="location" type="GLint"/> + <param name="params" type="GLuint *"/> + </function> + + <function name="BindFragDataLocationEXT" offset="assign"> + <param name="program" type="GLuint"/> + <param name="colorNumber" type="GLuint"/> + <param name="name" type="const GLchar *"/> + </function> + + <function name="GetFragDataLocationEXT" offset="assign"> + <return type="GLint"/> + <param name="program" type="GLuint"/> + <param name="name" type="const GLchar *"/> + </function> + +</category> + +</OpenGLAPI> diff --git a/src/mapi/glapi/gen/EXT_separate_shader_objects.xml b/src/mapi/glapi/gen/EXT_separate_shader_objects.xml new file mode 100644 index 0000000000..6ec56157c0 --- /dev/null +++ b/src/mapi/glapi/gen/EXT_separate_shader_objects.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<!-- Note: no GLX protocol info yet. --> + +<OpenGLAPI> +<category name="GL_EXT_separate_shader_objects" number="377"> + <!-- Alias of CURRENT_PROGRAM --> + <enum name="ACTIVE_PROGRAM_EXT" value="0x8B8D"/> + + <function name="UseShaderProgramEXT" offset="assign"> + <param name="type" type="GLenum"/> + <param name="program" type="GLuint"/> + </function> + + <function name="ActiveProgramEXT" offset="assign"> + <param name="program" type="GLuint"/> + </function> + + <function name="CreateShaderProgramEXT" offset="assign"> + <param name="type" type="GLenum"/> + <param name="string" type="const GLchar *"/> + <return type="GLuint"/> + </function> +</category> +</OpenGLAPI> diff --git a/src/mapi/glapi/gen/EXT_texture_integer.xml b/src/mapi/glapi/gen/EXT_texture_integer.xml new file mode 100644 index 0000000000..7e5a8cbebe --- /dev/null +++ b/src/mapi/glapi/gen/EXT_texture_integer.xml @@ -0,0 +1,98 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<OpenGLAPI> + +<category name="GL_EXT_texture_integer" number="343"> + + <enum name="RGBA_INTEGER_MODE_EXT" value="0x8D9E"> + <size name="Get" mode="get"/> + </enum> + <enum name="RGBA32UI_EXT" value="0x8D70"/> + <enum name="RGB32UI_EXT" value="0x8D71"/> + <enum name="ALPHA32UI_EXT" value="0x8D72"/> + <enum name="INTENSITY32UI_EXT" value="0x8D73"/> + <enum name="LUMINANCE32UI_EXT" value="0x8D74"/> + <enum name="LUMINANCE_ALPHA32UI_EXT" value="0x8D75"/> + <enum name="RGBA16UI_EXT" value="0x8D76"/> + <enum name="RGB16UI_EXT" value="0x8D77"/> + <enum name="ALPHA16UI_EXT" value="0x8D78"/> + <enum name="INTENSITY16UI_EXT" value="0x8D79"/> + <enum name="LUMINANCE16UI_EXT" value="0x8D7A"/> + <enum name="LUMINANCE_ALPHA16UI_EXT" value="0x8D7B"/> + <enum name="RGBA8UI_EXT" value="0x8D7C"/> + <enum name="RGB8UI_EXT" value="0x8D7D"/> + <enum name="ALPHA8UI_EXT" value="0x8D7E"/> + <enum name="INTENSITY8UI_EXT" value="0x8D7F"/> + <enum name="LUMINANCE8UI_EXT" value="0x8D80"/> + <enum name="LUMINANCE_ALPHA8UI_EXT" value="0x8D81"/> + <enum name="RGBA32I_EXT" value="0x8D82"/> + <enum name="RGB32I_EXT" value="0x8D83"/> + <enum name="ALPHA32I_EXT" value="0x8D84"/> + <enum name="INTENSITY32I_EXT" value="0x8D85"/> + <enum name="LUMINANCE32I_EXT" value="0x8D86"/> + <enum name="LUMINANCE_ALPHA32I_EXT" value="0x8D87"/> + <enum name="RGBA16I_EXT" value="0x8D88"/> + <enum name="RGB16I_EXT" value="0x8D89"/> + <enum name="ALPHA16I_EXT" value="0x8D8A"/> + <enum name="INTENSITY16I_EXT" value="0x8D8B"/> + <enum name="LUMINANCE16I_EXT" value="0x8D8C"/> + <enum name="LUMINANCE_ALPHA16I_EXT" value="0x8D8D"/> + <enum name="RGBA8I_EXT" value="0x8D8E"/> + <enum name="RGB8I_EXT" value="0x8D8F"/> + <enum name="ALPHA8I_EXT" value="0x8D90"/> + <enum name="INTENSITY8I_EXT" value="0x8D91"/> + <enum name="LUMINANCE8I_EXT" value="0x8D92"/> + <enum name="LUMINANCE_ALPHA8I_EXT" value="0x8D93"/> + <enum name="RED_INTEGER_EXT" value="0x8D94"/> + <enum name="GREEN_INTEGER_EXT" value="0x8D95"/> + <enum name="BLUE_INTEGER_EXT" value="0x8D96"/> + <enum name="ALPHA_INTEGER_EXT" value="0x8D97"/> + <enum name="RGB_INTEGER_EXT" value="0x8D98"/> + <enum name="RGBA_INTEGER_EXT" value="0x8D99"/> + <enum name="BGR_INTEGER_EXT" value="0x8D9A"/> + <enum name="BGRA_INTEGER_EXT" value="0x8D9B"/> + <enum name="LUMINANCE_INTEGER_EXT" value="0x8D9C"/> + <enum name="LUMINANCE_ALPHA_INTEGER_EXT" value="0x8D9D"/> + + <function name="ClearColorIiEXT" offset="assign"> + <param name="r" type="GLint"/> + <param name="g" type="GLint"/> + <param name="b" type="GLint"/> + <param name="a" type="GLint"/> + </function> + + <function name="ClearColorIuiEXT" offset="assign"> + <param name="r" type="GLuint"/> + <param name="g" type="GLuint"/> + <param name="b" type="GLuint"/> + <param name="a" type="GLuint"/> + </function> + + <function name="TexParameterIivEXT" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *"/> + </function> + + <function name="TexParameterIuivEXT" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLuint *"/> + </function> + + <function name="GetTexParameterIivEXT" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *"/> + </function> + + <function name="GetTexParameterIuivEXT" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLuint *"/> + </function> + +</category> + +</OpenGLAPI> diff --git a/src/mapi/glapi/gen/EXT_transform_feedback.xml b/src/mapi/glapi/gen/EXT_transform_feedback.xml index 06deafce4e..051f1e0cc9 100644 --- a/src/mapi/glapi/gen/EXT_transform_feedback.xml +++ b/src/mapi/glapi/gen/EXT_transform_feedback.xml @@ -75,51 +75,6 @@ </category> -<!-- Note: these 3.0 entrypoints might get moved to a new file --> - -<category name="3.0"> - - <function name="BindBufferRange" alias="BindBufferRangeEXT"> - <param name="target" type="GLenum"/> - <param name="index" type="GLuint"/> - <param name="buffer" type="GLuint"/> - <param name="offset" type="GLintptr"/> - <param name="size" type="GLsizeiptr"/> - </function> - - <function name="BindBufferBase" alias="BindBufferBaseEXT"> - <param name="target" type="GLenum"/> - <param name="index" type="GLuint"/> - <param name="buffer" type="GLuint"/> - </function> - - <function name="BeginTransformFeedback" alias="BeginTransformFeedbackEXT"> - <param name="mode" type="GLenum"/> - </function> - - <function name="EndTransformFeedback" alias="EndTransformFeedbackEXT"> - </function> - - <function name="TransformFeedbackVaryings" alias="TransformFeedbackVaryingsEXT"> - <param name="program" type="GLuint"/> - <param name="count" type="GLsizei"/> - <param name="varyings" type="const char **"/> - <param name="bufferMode" type="GLenum"/> - </function> - - <function name="GetTransformFeedbackVarying" alias="GetTransformFeedbackVaryingEXT"> - <param name="program" type="GLuint"/> - <param name="index" type="GLuint"/> - <param name="bufSize" type="GLsizei"/> - <param name="length" type="GLsizei *"/> - <param name="size" type="GLsizei *"/> - <param name="type" type="GLenum *"/> - <param name="name" type="GLchar *"/> - </function> - -</category> - - <category name="GL_ARB_transform_feedback2" number="93"> <enum name="TRANSFORM_FEEDBACK" value="0x8E22"/> diff --git a/src/mapi/glapi/gen/GL3.xml b/src/mapi/glapi/gen/GL3x.xml index 0d8d935f0a..8d15c94970 100644 --- a/src/mapi/glapi/gen/GL3.xml +++ b/src/mapi/glapi/gen/GL3x.xml @@ -3,7 +3,6 @@ <!-- Note: no GLX protocol info yet. --> - <OpenGLAPI> <category name="3.0"> @@ -111,6 +110,8 @@ <enum name="BUFFER_MAP_LENGTH" value="0x9120"/> <enum name="BUFFER_MAP_OFFSET" value="0x9121"/> + <!-- These functions are unique to GL3 --> + <function name="ClearBufferiv" offset="assign"> <param name="buffer" type="GLenum"/> <param name="drawbuffer" type="GLint"/> @@ -142,62 +143,71 @@ <return type="const GLubyte *"/> </function> - <function name="IsEnabledi" offset="assign"> - <param name="cap" type="GLenum"/> - <param name="index" type="GLuint"/> - <return type="GLboolean"/> - </function> - - <function name="GetFragDataLocation" offset="assign"> - <param name="program" type="GLuint"/> - <param name="name" type="const GLchar *"/> - <return type="GLint"/> + <function name="ClampColor" offset="assign"> + <param name="target" type="GLenum"/> + <param name="clamp" type="GLenum"/> </function> - <function name="BindFragDataLocation" offset="assign"> - <param name="program" type="GLuint"/> - <param name="color" type="GLuint"/> - <param name="name" type="const GLchar *"/> - </function> + <!-- These functions alias ones form GL_ARB_draw_buffers2 --> - <function name="ColorMaski" offset="assign"> - <param name="index" type="GLuint"/> + <function name="ColorMaski" alias="ColorMaskIndexedEXT"> + <param name="buf" type="GLuint"/> <param name="r" type="GLboolean"/> <param name="g" type="GLboolean"/> <param name="b" type="GLboolean"/> <param name="a" type="GLboolean"/> </function> - <function name="GetBooleani_v" offset="assign"> - <param name="cap" type="GLenum"/> + <function name="GetBooleani_v" alias="GetBooleanIndexedvEXT"> + <param name="value" type="GLenum"/> <param name="index" type="GLuint"/> - <param name="value" type="GLboolean *"/> + <param name="data" type="GLboolean *"/> </function> - <function name="GetIntegeri_v" offset="assign"> - <param name="cap" type="GLenum"/> + <function name="GetIntegeri_v" alias="GetIntegerIndexedvEXT"> + <param name="value" type="GLenum"/> <param name="index" type="GLuint"/> - <param name="value" type="GLint *"/> + <param name="data" type="GLint *"/> </function> - <function name="Enablei" offset="assign"> - <param name="cap" type="GLenum"/> + <function name="Enablei" alias="EnableIndexedEXT"> + <param name="target" type="GLenum"/> <param name="index" type="GLuint"/> </function> - <function name="Disablei" offset="assign"> - <param name="cap" type="GLenum"/> + <function name="Disablei" alias="DisableIndexedEXT"> + <param name="target" type="GLenum"/> <param name="index" type="GLuint"/> </function> - <function name="BeginTransformFeedback" offset="assign"> + <function name="IsEnabledi" alias="IsEnabledIndexedEXT"> + <param name="target" type="GLenum"/> + <param name="index" type="GLuint"/> + <return type="GLboolean"/> + </function> + + <!-- These functions alias ones form GL_EXT_transform_feedback --> + + <function name="GetFragDataLocation" alias="GetFragDataLocationEXT"> + <param name="program" type="GLuint"/> + <param name="name" type="const GLchar *"/> + <return type="GLint"/> + </function> + + <function name="BindFragDataLocation" alias="BindFragDataLocationEXT"> + <param name="program" type="GLuint"/> + <param name="colorNumber" type="GLuint"/> + <param name="name" type="const GLchar *"/> + </function> + + <function name="BeginTransformFeedback" alias="BeginTransformFeedbackEXT"> <param name="mode" type="GLenum"/> </function> - <function name="EndTransformFeedback" offset="assign"> + <function name="EndTransformFeedback" alias="EndTransformFeedbackEXT"> </function> - <function name="BindBufferRange" offset="assign"> + <function name="BindBufferRange" alias="BindBufferRangeEXT"> <param name="target" type="GLenum"/> <param name="index" type="GLuint"/> <param name="buffer" type="GLuint"/> @@ -205,20 +215,20 @@ <param name="size" type="GLsizeiptr"/> </function> - <function name="BindBufferBase" offset="assign"> + <function name="BindBufferBase" alias="BindBufferBaseEXT"> <param name="target" type="GLenum"/> <param name="index" type="GLuint"/> <param name="buffer" type="GLuint"/> </function> - <function name="TransformFeedbackVaryings" offset="assign"> + <function name="TransformFeedbackVaryings" alias="TransformFeedbackVaryingsEXT"> <param name="program" type="GLuint"/> <param name="count" type="GLsizei"/> <param name="varyings" type="const GLchar* *"/> <param name="bufferMode" type="GLenum"/> </function> - <function name="GetTransformFeedbackVarying" offset="assign"> + <function name="GetTransformFeedbackVarying" alias="GetTransformFeedbackVaryingEXT"> <param name="program" type="GLuint"/> <param name="index" type="GLuint"/> <param name="bufSize" type="GLsizei"/> @@ -228,20 +238,19 @@ <param name="name" type="GLchar *"/> </function> - <function name="ClampColor" offset="assign"> - <param name="target" type="GLenum"/> - <param name="clamp" type="GLenum"/> - </function> + <!-- These functions alias ones from GL_NV_conditional_render --> - <function name="BeginConditionalRender" offset="assign"> - <param name="id" type="GLuint"/> + <function name="BeginConditionalRender" alias="BeginConditionalRenderNV"> + <param name="query" type="GLuint"/> <param name="mode" type="GLenum"/> </function> - <function name="EndConditionalRender" offset="assign"> + <function name="EndConditionalRender" alias="EndConditionalRenderNV"> </function> - <function name="VertexAttribIPointer" offset="assign"> + <!-- These functions alias ones from GL_EXT_gpu_shader4 --> + + <function name="VertexAttribIPointer" alias="VertexAttribIPointerEXT"> <param name="index" type="GLuint"/> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> @@ -249,37 +258,37 @@ <param name="pointer" type="const GLvoid *"/> </function> - <function name="GetVertexAttribIiv" offset="assign"> + <function name="GetVertexAttribIiv" alias="GetVertexAttribIivEXT"> <param name="index" type="GLuint"/> <param name="pname" type="GLenum"/> <param name="params" type="GLint *"/> </function> - <function name="GetVertexAttribIuiv" offset="assign"> + <function name="GetVertexAttribIuiv" alias="GetVertexAttribIuivEXT"> <param name="index" type="GLuint"/> <param name="pname" type="GLenum"/> <param name="params" type="GLuint *"/> </function> - <function name="VertexAttribI1i" offset="assign"> + <function name="VertexAttribI1i" alias="VertexAttribI1iEXT"> <param name="index" type="GLuint"/> <param name="x" type="GLint"/> </function> - <function name="VertexAttribI2i" offset="assign"> + <function name="VertexAttribI2i" alias="VertexAttribI2iEXT"> <param name="index" type="GLuint"/> <param name="x" type="GLint"/> <param name="y" type="GLint"/> </function> - <function name="VertexAttribI3i" offset="assign"> + <function name="VertexAttribI3i" alias="VertexAttribI3iEXT"> <param name="index" type="GLuint"/> <param name="x" type="GLint"/> <param name="y" type="GLint"/> <param name="z" type="GLint"/> </function> - <function name="VertexAttribI4i" offset="assign"> + <function name="VertexAttribI4i" alias="VertexAttribI4iEXT"> <param name="index" type="GLuint"/> <param name="x" type="GLint"/> <param name="y" type="GLint"/> @@ -287,25 +296,25 @@ <param name="w" type="GLint"/> </function> - <function name="VertexAttribI1ui" offset="assign"> + <function name="VertexAttribI1ui" alias="VertexAttribI1uiEXT"> <param name="index" type="GLuint"/> <param name="x" type="GLuint"/> </function> - <function name="VertexAttribI2ui" offset="assign"> + <function name="VertexAttribI2ui" alias="VertexAttribI2uiEXT"> <param name="index" type="GLuint"/> <param name="x" type="GLuint"/> <param name="y" type="GLuint"/> </function> - <function name="VertexAttribI3ui" offset="assign"> + <function name="VertexAttribI3ui" alias="VertexAttribI3uiEXT"> <param name="index" type="GLuint"/> <param name="x" type="GLuint"/> <param name="y" type="GLuint"/> <param name="z" type="GLuint"/> </function> - <function name="VertexAttribI4ui" offset="assign"> + <function name="VertexAttribI4ui" alias="VertexAttribI4uiEXT"> <param name="index" type="GLuint"/> <param name="x" type="GLuint"/> <param name="y" type="GLuint"/> @@ -313,91 +322,91 @@ <param name="w" type="GLuint"/> </function> - <function name="VertexAttribI1iv" offset="assign"> + <function name="VertexAttribI1iv" alias="VertexAttribI1ivEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLint *"/> </function> - <function name="VertexAttribI2iv" offset="assign"> + <function name="VertexAttribI2iv" alias="VertexAttribI2ivEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLint *"/> </function> - <function name="VertexAttribI3iv" offset="assign"> + <function name="VertexAttribI3iv" alias="VertexAttribI3ivEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLint *"/> </function> - <function name="VertexAttribI4iv" offset="assign"> + <function name="VertexAttribI4iv" alias="VertexAttribI4ivEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLint *"/> </function> - <function name="VertexAttribI1uiv" offset="assign"> + <function name="VertexAttribI1uiv" alias="VertexAttribI1uivEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLuint *"/> </function> - <function name="VertexAttribI2uiv" offset="assign"> + <function name="VertexAttribI2uiv" alias="VertexAttribI2uivEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLuint *"/> </function> - <function name="VertexAttribI3uiv" offset="assign"> + <function name="VertexAttribI3uiv" alias="VertexAttribI3uivEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLuint *"/> </function> - <function name="VertexAttribI4uiv" offset="assign"> + <function name="VertexAttribI4uiv" alias="VertexAttribI4uivEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLuint *"/> </function> - <function name="VertexAttribI4bv" offset="assign"> + <function name="VertexAttribI4bv" alias="VertexAttribI4bvEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLbyte *"/> </function> - <function name="VertexAttribI4sv" offset="assign"> + <function name="VertexAttribI4sv" alias="VertexAttribI4svEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLshort *"/> </function> - <function name="VertexAttribI4ubv" offset="assign"> + <function name="VertexAttribI4ubv" alias="VertexAttribI4ubvEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLubyte *"/> </function> - <function name="VertexAttribI4usv" offset="assign"> + <function name="VertexAttribI4usv" alias="VertexAttribI4usvEXT"> <param name="index" type="GLuint"/> <param name="v" type="const GLushort *"/> </function> - <function name="GetUniformuiv" offset="assign"> + <function name="GetUniformuiv" alias="GetUniformuivEXT"> <param name="program" type="GLuint"/> <param name="location" type="GLint"/> <param name="params" type="GLuint *"/> </function> - <function name="Uniform1ui" offset="assign"> - <param name="locatoin" type="GLint"/> + <function name="Uniform1ui" alias="Uniform1uiEXT"> + <param name="location" type="GLint"/> <param name="x" type="GLuint"/> </function> - <function name="Uniform2ui" offset="assign"> + <function name="Uniform2ui" alias="Uniform2uiEXT"> <param name="location" type="GLint"/> <param name="x" type="GLuint"/> <param name="y" type="GLuint"/> </function> - <function name="Uniform3ui" offset="assign"> + <function name="Uniform3ui" alias="Uniform3uiEXT"> <param name="location" type="GLint"/> <param name="x" type="GLuint"/> <param name="y" type="GLuint"/> <param name="z" type="GLuint"/> </function> - <function name="Uniform4ui" offset="assign"> + <function name="Uniform4ui" alias="Uniform4uiEXT"> <param name="location" type="GLint"/> <param name="x" type="GLuint"/> <param name="y" type="GLuint"/> @@ -405,52 +414,54 @@ <param name="w" type="GLuint"/> </function> - <function name="Uniform1uiv" offset="assign"> + <function name="Uniform1uiv" alias="Uniform1uivEXT"> <param name="location" type="GLint"/> <param name="count" type="GLsizei"/> <param name="value" type="const GLuint *"/> </function> - <function name="Uniform2uiv" offset="assign"> + <function name="Uniform2uiv" alias="Uniform2uivEXT"> <param name="location" type="GLint"/> <param name="count" type="GLsizei"/> <param name="value" type="const GLuint *"/> </function> - <function name="Uniform3uiv" offset="assign"> + <function name="Uniform3uiv" alias="Uniform3uivEXT"> <param name="location" type="GLint"/> <param name="count" type="GLsizei"/> <param name="value" type="const GLuint *"/> </function> - <function name="Uniform4uiv" offset="assign"> + <function name="Uniform4uiv" alias="Uniform4uivEXT"> <param name="location" type="GLint"/> <param name="count" type="GLsizei"/> <param name="value" type="const GLuint *"/> </function> - <function name="TexParameterIiv" offset="assign"> + <!-- These functions alias ones from GL_EXT_texture_integer --> + + <function name="TexParameterIiv" alias="TexParameterIivEXT"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="value" type="const GLint *"/> + <param name="params" type="const GLint *"/> </function> - <function name="TexParameterIuiv" offset="assign"> + <function name="TexParameterIuiv" alias="TexParameterIuivEXT"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="value" type="const GLuint *"/> + <param name="params" type="const GLuint *"/> </function> - <function name="GetTexParameterIiv" offset="assign"> + <function name="GetTexParameterIiv" alias="GetTexParameterIivEXT"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="value" type="GLint *"/> + <param name="params" type="GLint *"/> </function> - <function name="GetTexParameterIuiv" offset="assign"> + <function name="GetTexParameterIuiv" alias="GetTexParameterIuivEXT"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="value" type="GLuint *"/> + <param name="params" type="GLuint *"/> </function> </category> @@ -490,14 +501,14 @@ <enum name="PRIMITIVE_RESTART" value="0x8F9D"/> <enum name="PRIMITIVE_RESTART_INDEX" value="0x8F9E"/> - <function name="DrawArraysInstanced" offset="assign"> + <function name="DrawArraysInstanced" alias="DrawArraysInstancedARB"> <param name="mode" type="GLenum"/> <param name="first" type="GLint"/> <param name="count" type="GLsizei"/> <param name="primcount" type="GLsizei"/> </function> - <function name="DrawElementsInstanced" offset="assign"> + <function name="DrawElementsInstanced" alias="DrawElementsInstancedARB"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> @@ -511,7 +522,7 @@ <param name="buffer" type="GLuint"/> </function> - <function name="glPrimitiveRestartIndex" offset="assign"> + <function name="PrimitiveRestartIndex" alias="PrimitiveRestartIndexNV"> <param name="index" type="GLuint"/> </function> @@ -555,12 +566,6 @@ <param name="params" type="GLint64 *"/> </function> - <function name="ProgramParameteri" offset="assign"> - <param name="program" type="GLuint"/> - <param name="pname" type="GLenum"/> - <param name="value" type="GLint"/> - </function> - <function name="FramebufferTexture" offset="assign"> <param name="target" type="GLenum"/> <param name="attachment" type="GLenum"/> @@ -568,12 +573,15 @@ <param name="level" type="GLint"/> </function> - <function name="FramebufferTextureFace" offset="assign"> - <param name="target" type="GLenum"/> - <param name="attachment" type="GLenum"/> - <param name="texture" type="GLuint"/> - <param name="level" type="GLint"/> - <param name="face" type="GLenum"/> +</category> + + +<category name="3.3"> + <!-- There are other new functions and tokens defined by other extensions --> + + <function name="VertexAttribDivisor" offset="assign"> + <param name="index" type="GLuint"/> + <param name="divisor" type="GLuint"/> </function> </category> diff --git a/src/mapi/glapi/gen/Makefile b/src/mapi/glapi/gen/Makefile index 657056bece..5a9b6ac4a8 100644 --- a/src/mapi/glapi/gen/Makefile +++ b/src/mapi/glapi/gen/Makefile @@ -14,9 +14,7 @@ MESA_GLX_DIR = $(TOP)/src/glx MESA_GLAPI_OUTPUTS = \ $(MESA_GLAPI_DIR)/glprocs.h \ $(MESA_GLAPI_DIR)/glapitemp.h \ - $(MESA_GLAPI_DIR)/glapioffsets.h \ - $(MESA_GLAPI_DIR)/glapitable.h \ - $(MESA_GLAPI_DIR)/glapidispatch.h + $(MESA_GLAPI_DIR)/glapitable.h MESA_GLAPI_ASM_OUTPUTS = \ $(MESA_GLAPI_DIR)/glapi_x86.S \ @@ -27,6 +25,7 @@ MESA_OUTPUTS = \ $(MESA_GLAPI_OUTPUTS) \ $(MESA_GLAPI_ASM_OUTPUTS) \ $(MESA_DIR)/main/enums.c \ + $(MESA_DIR)/main/glapidispatch.h \ $(MESA_DIR)/main/remap_helper.h \ $(MESA_GLX_DIR)/indirect.c \ $(MESA_GLX_DIR)/indirect.h \ @@ -85,13 +84,18 @@ API_XML = \ APPLE_vertex_array_object.xml \ EXT_draw_buffers2.xml \ EXT_framebuffer_object.xml \ + EXT_gpu_shader4.xml \ EXT_packed_depth_stencil.xml \ EXT_provoking_vertex.xml \ + EXT_separate_shader_objects.xml \ EXT_texture_array.xml \ + EXT_texture_integer.xml \ EXT_transform_feedback.xml \ NV_conditional_render.xml \ NV_primitive_restart.xml \ - OES_EGL_image.xml + OES_EGL_image.xml \ + GL3x.xml + COMMON = $(API_XML) gl_XML.py glX_XML.py license.py typeexpr.py @@ -131,15 +135,9 @@ $(MESA_GLAPI_DIR)/glprocs.h: gl_procs.py $(COMMON) $(MESA_GLAPI_DIR)/glapitemp.h: gl_apitemp.py $(COMMON) $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -$(MESA_GLAPI_DIR)/glapioffsets.h: gl_offsets.py $(COMMON) - $(PYTHON2) $(PYTHON_FLAGS) $< > $@ - $(MESA_GLAPI_DIR)/glapitable.h: gl_table.py $(COMMON) $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -$(MESA_GLAPI_DIR)/glapidispatch.h: gl_table.py $(COMMON) - $(PYTHON2) $(PYTHON_FLAGS) $< -m remap_table > $@ - ###################################################################### $(MESA_GLAPI_DIR)/glapi_x86.S: gl_x86_asm.py $(COMMON) @@ -158,6 +156,9 @@ $(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON) $(ES_API) -f $(MESA_GLAPI_DIR)/gen-es/es1_API.xml \ -f $(MESA_GLAPI_DIR)/gen-es/es2_API.xml > $@ +$(MESA_DIR)/main/glapidispatch.h: gl_table.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< -m remap_table > $@ + $(MESA_DIR)/main/remap_helper.h: remap_helper.py $(COMMON) $(PYTHON2) $(PYTHON_FLAGS) $< > $@ diff --git a/src/mapi/glapi/gen/glX_proto_send.py b/src/mapi/glapi/gen/glX_proto_send.py index bd41c9e667..17ebad0176 100644 --- a/src/mapi/glapi/gen/glX_proto_send.py +++ b/src/mapi/glapi/gen/glX_proto_send.py @@ -166,7 +166,6 @@ class PrintGlxProtoStubs(glX_proto_common.glx_print_proto): print '#include "indirect.h"' print '#include "glxclient.h"' print '#include "indirect_size.h"' - print '#include "glapidispatch.h"' print '#include "glapi.h"' print '#include "glthread.h"' print '#include <GL/glxproto.h>' @@ -375,7 +374,7 @@ const GLuint __glXDefaultPixelStore[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 1 }; print '' print '#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)' print ' if (gc->isDirect) {' - print ' %sCALL_%s(GET_DISPATCH(), (%s));' % (ret_string, func.name, func.get_called_parameter_string()) + print ' %sGET_DISPATCH()->%s(%s);' % (ret_string, func.name, func.get_called_parameter_string()) print ' } else' print '#endif' print ' {' @@ -994,6 +993,9 @@ extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupVendorRequest( asdf = func.static_glx_name(n) if asdf not in func.static_entry_points: print 'extern HIDDEN %s gl%s(%s);' % (func.return_type, asdf, params) + # give it a easy-to-remember name + if func.client_handcode: + print '#define gl_dispatch_stub_%s gl%s' % (n, asdf) else: print 'GLAPI %s GLAPIENTRY gl%s(%s);' % (func.return_type, asdf, params) diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index d1139aa06e..2004647954 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -11383,7 +11383,7 @@ <function name="ProgramParameters4dvNV" offset="assign"> <param name="target" type="GLenum"/> <param name="index" type="GLuint"/> - <param name="num" type="GLuint" counter="true"/> + <param name="num" type="GLsizei" counter="true"/> <param name="params" type="const GLdouble *" count="num" count_scale="4"/> <glx rop="4187"/> </function> @@ -11391,7 +11391,7 @@ <function name="ProgramParameters4fvNV" offset="assign"> <param name="target" type="GLenum"/> <param name="index" type="GLuint"/> - <param name="num" type="GLuint" counter="true"/> + <param name="num" type="GLsizei" counter="true"/> <param name="params" type="const GLfloat *" count="num" count_scale="4"/> <glx rop="4186"/> </function> @@ -12318,6 +12318,9 @@ </function> </category> +<xi:include href="EXT_separate_shader_objects.xml" + xmlns:xi="http://www.w3.org/2001/XInclude"/> + <!-- Unnumbered extensions sorted by name. --> <category name="GL_ATI_blend_equation_separate"> @@ -12513,4 +12516,10 @@ <xi:include href="OES_EGL_image.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="EXT_texture_integer.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<xi:include href="EXT_gpu_shader4.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="GL3x.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + + </OpenGLAPI> diff --git a/src/mapi/glapi/gen/gl_SPARC_asm.py b/src/mapi/glapi/gen/gl_SPARC_asm.py index 33e752df38..400e684da0 100644 --- a/src/mapi/glapi/gen/gl_SPARC_asm.py +++ b/src/mapi/glapi/gen/gl_SPARC_asm.py @@ -39,8 +39,6 @@ class PrintGenericStubs(gl_XML.gl_print_base): def printRealHeader(self): - print '#include "glapi/glapioffsets.h"' - print '' print '#ifdef __arch64__' print '#define GL_OFF(N)\t((N) * 8)' print '#define GL_LL\t\tldx' @@ -223,7 +221,7 @@ class PrintGenericStubs(gl_XML.gl_print_base): for f in api.functionIterateByOffset(): name = f.dispatch_name() - print '\tGL_STUB(gl%s, _gloffset_%s)' % (name, f.name) + print '\tGL_STUB(gl%s, %d)' % (name, f.offset) if not f.is_static_entry_point(f.name): print '\tHIDDEN(gl%s)' % (name) diff --git a/src/mapi/glapi/gen/gl_procs.py b/src/mapi/glapi/gen/gl_procs.py index 5de61fbdfe..a9ba48297a 100644 --- a/src/mapi/glapi/gen/gl_procs.py +++ b/src/mapi/glapi/gen/gl_procs.py @@ -96,7 +96,7 @@ typedef struct { for func in api.functionIterateByOffset(): name = func.dispatch_name() self.printFunctionString(func.name) - table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.name)) + table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.offset)) # The length of the function's name, plus 2 for "gl", # plus 1 for the NUL. @@ -112,9 +112,9 @@ typedef struct { if func.has_different_protocol(n): alt_name = "gl" + func.static_glx_name(n) - table.append((base_offset, "gl" + name, alt_name, alt_name, func.name)) + table.append((base_offset, "gl" + name, alt_name, alt_name, func.offset)) else: - table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.name)) + table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.offset)) base_offset += len(n) + 3 @@ -170,7 +170,7 @@ typedef struct { print 'static const glprocs_table_t static_functions[] = {' for info in table: - print ' NAME_FUNC_OFFSET(%5u, %s, %s, %s, _gloffset_%s),' % info + print ' NAME_FUNC_OFFSET(%5u, %s, %s, %s, %d),' % info print ' NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)' print '};' diff --git a/src/mapi/glapi/gen/gl_table.py b/src/mapi/glapi/gen/gl_table.py index 3bd7569e92..c7cb5a40a1 100644 --- a/src/mapi/glapi/gen/gl_table.py +++ b/src/mapi/glapi/gen/gl_table.py @@ -124,52 +124,54 @@ class PrintRemapTable(gl_XML.gl_print_base): functions.append( [f, count] ) count += 1 else: - abi_functions.append( f ) + abi_functions.append( [f, -1] ) if self.es: # remember functions with aliases if len(f.entry_points) > 1: alias_functions.append(f) + print '/* total number of offsets below */' + print '#define _gloffset_COUNT %d' % (len(abi_functions + functions)) + print '' - for f in abi_functions: - print '#define CALL_%s(disp, parameters) (*((disp)->%s)) parameters' % (f.name, f.name) - print '#define GET_%s(disp) ((disp)->%s)' % (f.name, f.name) - print '#define SET_%s(disp, fn) ((disp)->%s = fn)' % (f.name, f.name) - + for f, index in abi_functions: + print '#define _gloffset_%s %d' % (f.name, f.offset) print '' print '#if !defined(_GLAPI_USE_REMAP_TABLE)' print '' - for [f, index] in functions: - print '#define CALL_%s(disp, parameters) (*((disp)->%s)) parameters' % (f.name, f.name) - print '#define GET_%s(disp) ((disp)->%s)' % (f.name, f.name) - print '#define SET_%s(disp, fn) ((disp)->%s = fn)' % (f.name, f.name) + for f, index in functions: + print '#define _gloffset_%s %d' % (f.name, f.offset) print '' - print '#else' + print '#else /* !_GLAPI_USE_REMAP_TABLE */' print '' + print '#define driDispatchRemapTable_size %u' % (count) print 'extern int driDispatchRemapTable[ driDispatchRemapTable_size ];' print '' - for [f, index] in functions: + for f, index in functions: print '#define %s_remap_index %u' % (f.name, index) print '' - for [f, index] in functions: - arg_string = gl_XML.create_parameter_string( f.parameters, 0 ) - cast = '%s (GLAPIENTRYP)(%s)' % (f.return_type, arg_string) + for f, index in functions: + print '#define _gloffset_%s driDispatchRemapTable[%s_remap_index]' % (f.name, f.name) - print '#define CALL_%s(disp, parameters) CALL_by_offset(disp, (%s), driDispatchRemapTable[%s_remap_index], parameters)' % (f.name, cast, f.name) - print '#define GET_%s(disp) GET_by_offset(disp, driDispatchRemapTable[%s_remap_index])' % (f.name, f.name) - print '#define SET_%s(disp, fn) SET_by_offset(disp, driDispatchRemapTable[%s_remap_index], fn)' % (f.name, f.name) + print '' + print '#endif /* _GLAPI_USE_REMAP_TABLE */' + print '' + for f, index in abi_functions + functions: + arg_string = gl_XML.create_parameter_string( f.parameters, 0 ) + cast = '%s (GLAPIENTRYP)(%s)' % (f.return_type, arg_string) - print '' - print '#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */' + print '#define CALL_%s(disp, parameters) CALL_by_offset(disp, (%s), _gloffset_%s, parameters)' % (f.name, cast, f.name) + print '#define GET_%s(disp) GET_by_offset(disp, _gloffset_%s)' % (f.name, f.name) + print '#define SET_%s(disp, fn) SET_by_offset(disp, _gloffset_%s, fn)' % (f.name, f.name) if alias_functions: print '' diff --git a/src/mapi/glapi/gen/gl_x86_asm.py b/src/mapi/glapi/gen/gl_x86_asm.py index 10dfa1ddb3..3b1d035f04 100644 --- a/src/mapi/glapi/gen/gl_x86_asm.py +++ b/src/mapi/glapi/gen/gl_x86_asm.py @@ -54,7 +54,6 @@ class PrintGenericStubs(gl_XML.gl_print_base): def printRealHeader(self): print '#include "x86/assyntax.h"' - print '#include "glapi/glapioffsets.h"' print '' print '#if defined(STDCALL_API)' print '# if defined(USE_MGL_NAMESPACE)' @@ -215,7 +214,7 @@ class PrintGenericStubs(gl_XML.gl_print_base): stack = self.get_stack_size(f) alt = "%s@%u" % (name, stack) - print '\tGL_STUB(%s, _gloffset_%s, %s)' % (name, f.name, alt) + print '\tGL_STUB(%s, %d, %s)' % (name, f.offset, alt) if not f.is_static_entry_point(f.name): print '\tHIDDEN(GL_PREFIX(%s, %s))' % (name, alt) @@ -230,7 +229,7 @@ class PrintGenericStubs(gl_XML.gl_print_base): if f.is_static_entry_point(n): if n != f.name: alt2 = "%s@%u" % (n, stack) - text = '\tGL_STUB_ALIAS(%s, _gloffset_%s, %s, %s, %s)' % (n, f.name, alt2, name, alt) + text = '\tGL_STUB_ALIAS(%s, %d, %s, %s, %s)' % (n, f.offset, alt2, name, alt) if f.has_different_protocol(n): print '#ifndef GLX_INDIRECT_RENDERING' diff --git a/src/mapi/glapi/glapi_dispatch.c b/src/mapi/glapi/glapi_dispatch.c index 7421a36d35..989f4a3fc3 100644 --- a/src/mapi/glapi/glapi_dispatch.c +++ b/src/mapi/glapi/glapi_dispatch.c @@ -39,7 +39,6 @@ #include "glapi/glapi_priv.h" #include "glapi/glapitable.h" -#include "glapi/glapidispatch.h" #if !(defined(USE_X86_ASM) || defined(USE_X86_64_ASM) || defined(USE_SPARC_ASM)) @@ -63,19 +62,19 @@ #define F stdout #define DISPATCH(FUNC, ARGS, MESSAGE) \ fprintf MESSAGE; \ - CALL_ ## FUNC(GET_DISPATCH(), ARGS); + GET_DISPATCH()->FUNC ARGS #define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \ fprintf MESSAGE; \ - return CALL_ ## FUNC(GET_DISPATCH(), ARGS); + return GET_DISPATCH()->FUNC ARGS #else #define DISPATCH(FUNC, ARGS, MESSAGE) \ - CALL_ ## FUNC(GET_DISPATCH(), ARGS); + GET_DISPATCH()->FUNC ARGS #define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \ - return CALL_ ## FUNC(GET_DISPATCH(), ARGS); + return GET_DISPATCH()->FUNC ARGS #endif /* logging */ diff --git a/src/mapi/glapi/glapi_getproc.c b/src/mapi/glapi/glapi_getproc.c index dc4905b64e..47a01176d5 100644 --- a/src/mapi/glapi/glapi_getproc.c +++ b/src/mapi/glapi/glapi_getproc.c @@ -32,7 +32,9 @@ #include "glapi/glapi_priv.h" #include "glapi/glapitable.h" -#include "glapi/glapioffsets.h" + + +#define FIRST_DYNAMIC_OFFSET (sizeof(struct _glapi_table) / sizeof(void *)) /********************************************************************** @@ -382,7 +384,7 @@ int _glapi_add_dispatch( const char * const * function_names, const char * parameter_signature ) { - static int next_dynamic_offset = _gloffset_FIRST_DYNAMIC; + static int next_dynamic_offset = FIRST_DYNAMIC_OFFSET; const char * const real_sig = (parameter_signature != NULL) ? parameter_signature : ""; struct _glapi_function * entry[8]; @@ -576,15 +578,6 @@ _glapi_get_proc_name(GLuint offset) */ -/* - * The dispatch table size (number of entries) is the size of the - * _glapi_table struct plus the number of dynamic entries we can add. - * The extra slots can be filled in by DRI drivers that register new extension - * functions. - */ -#define DISPATCH_TABLE_SIZE (sizeof(struct _glapi_table) / sizeof(void *) + MAX_EXTENSION_FUNCS) - - /** * Return size of dispatch table struct as number of functions (or * slots). @@ -592,7 +585,13 @@ _glapi_get_proc_name(GLuint offset) GLuint _glapi_get_dispatch_table_size(void) { - return DISPATCH_TABLE_SIZE; + /* + * The dispatch table size (number of entries) is the size of the + * _glapi_table struct plus the number of dynamic entries we can add. + * The extra slots can be filled in by DRI drivers that register new + * extension functions. + */ + return FIRST_DYNAMIC_OFFSET + MAX_EXTENSION_FUNCS; } @@ -628,56 +627,48 @@ _glapi_check_table(const struct _glapi_table *table) GLuint BeginOffset = _glapi_get_proc_offset("glBegin"); char *BeginFunc = (char*) &table->Begin; GLuint offset = (BeginFunc - (char *) table) / sizeof(void *); - assert(BeginOffset == _gloffset_Begin); assert(BeginOffset == offset); } { GLuint viewportOffset = _glapi_get_proc_offset("glViewport"); char *viewportFunc = (char*) &table->Viewport; GLuint offset = (viewportFunc - (char *) table) / sizeof(void *); - assert(viewportOffset == _gloffset_Viewport); assert(viewportOffset == offset); } { GLuint VertexPointerOffset = _glapi_get_proc_offset("glVertexPointer"); char *VertexPointerFunc = (char*) &table->VertexPointer; GLuint offset = (VertexPointerFunc - (char *) table) / sizeof(void *); - assert(VertexPointerOffset == _gloffset_VertexPointer); assert(VertexPointerOffset == offset); } { GLuint ResetMinMaxOffset = _glapi_get_proc_offset("glResetMinmax"); char *ResetMinMaxFunc = (char*) &table->ResetMinmax; GLuint offset = (ResetMinMaxFunc - (char *) table) / sizeof(void *); - assert(ResetMinMaxOffset == _gloffset_ResetMinmax); assert(ResetMinMaxOffset == offset); } { GLuint blendColorOffset = _glapi_get_proc_offset("glBlendColor"); char *blendColorFunc = (char*) &table->BlendColor; GLuint offset = (blendColorFunc - (char *) table) / sizeof(void *); - assert(blendColorOffset == _gloffset_BlendColor); assert(blendColorOffset == offset); } { GLuint secondaryColor3fOffset = _glapi_get_proc_offset("glSecondaryColor3fEXT"); char *secondaryColor3fFunc = (char*) &table->SecondaryColor3fEXT; GLuint offset = (secondaryColor3fFunc - (char *) table) / sizeof(void *); - assert(secondaryColor3fOffset == _gloffset_SecondaryColor3fEXT); assert(secondaryColor3fOffset == offset); } { GLuint pointParameterivOffset = _glapi_get_proc_offset("glPointParameterivNV"); char *pointParameterivFunc = (char*) &table->PointParameterivNV; GLuint offset = (pointParameterivFunc - (char *) table) / sizeof(void *); - assert(pointParameterivOffset == _gloffset_PointParameterivNV); assert(pointParameterivOffset == offset); } { GLuint setFenceOffset = _glapi_get_proc_offset("glSetFenceNV"); char *setFenceFunc = (char*) &table->SetFenceNV; GLuint offset = (setFenceFunc - (char *) table) / sizeof(void *); - assert(setFenceOffset == _gloffset_SetFenceNV); assert(setFenceOffset == offset); } #else diff --git a/src/mapi/glapi/glapi_sparc.S b/src/mapi/glapi/glapi_sparc.S index 8fb631ec14..969769a310 100644 --- a/src/mapi/glapi/glapi_sparc.S +++ b/src/mapi/glapi/glapi_sparc.S @@ -26,8 +26,6 @@ * SOFTWARE. */ -#include "glapi/glapioffsets.h" - #ifdef __arch64__ #define GL_OFF(N) ((N) * 8) #define GL_LL ldx @@ -197,868 +195,922 @@ fn: ba __glapi_sparc_nothread_stub; \ HIDDEN(gl_dispatch_functions_start) gl_dispatch_functions_start: - GL_STUB(glNewList, _gloffset_NewList) - GL_STUB(glEndList, _gloffset_EndList) - GL_STUB(glCallList, _gloffset_CallList) - GL_STUB(glCallLists, _gloffset_CallLists) - GL_STUB(glDeleteLists, _gloffset_DeleteLists) - GL_STUB(glGenLists, _gloffset_GenLists) - GL_STUB(glListBase, _gloffset_ListBase) - GL_STUB(glBegin, _gloffset_Begin) - GL_STUB(glBitmap, _gloffset_Bitmap) - GL_STUB(glColor3b, _gloffset_Color3b) - GL_STUB(glColor3bv, _gloffset_Color3bv) - GL_STUB(glColor3d, _gloffset_Color3d) - GL_STUB(glColor3dv, _gloffset_Color3dv) - GL_STUB(glColor3f, _gloffset_Color3f) - GL_STUB(glColor3fv, _gloffset_Color3fv) - GL_STUB(glColor3i, _gloffset_Color3i) - GL_STUB(glColor3iv, _gloffset_Color3iv) - GL_STUB(glColor3s, _gloffset_Color3s) - GL_STUB(glColor3sv, _gloffset_Color3sv) - GL_STUB(glColor3ub, _gloffset_Color3ub) - GL_STUB(glColor3ubv, _gloffset_Color3ubv) - GL_STUB(glColor3ui, _gloffset_Color3ui) - GL_STUB(glColor3uiv, _gloffset_Color3uiv) - GL_STUB(glColor3us, _gloffset_Color3us) - GL_STUB(glColor3usv, _gloffset_Color3usv) - GL_STUB(glColor4b, _gloffset_Color4b) - GL_STUB(glColor4bv, _gloffset_Color4bv) - GL_STUB(glColor4d, _gloffset_Color4d) - GL_STUB(glColor4dv, _gloffset_Color4dv) - GL_STUB(glColor4f, _gloffset_Color4f) - GL_STUB(glColor4fv, _gloffset_Color4fv) - GL_STUB(glColor4i, _gloffset_Color4i) - GL_STUB(glColor4iv, _gloffset_Color4iv) - GL_STUB(glColor4s, _gloffset_Color4s) - GL_STUB(glColor4sv, _gloffset_Color4sv) - GL_STUB(glColor4ub, _gloffset_Color4ub) - GL_STUB(glColor4ubv, _gloffset_Color4ubv) - GL_STUB(glColor4ui, _gloffset_Color4ui) - GL_STUB(glColor4uiv, _gloffset_Color4uiv) - GL_STUB(glColor4us, _gloffset_Color4us) - GL_STUB(glColor4usv, _gloffset_Color4usv) - GL_STUB(glEdgeFlag, _gloffset_EdgeFlag) - GL_STUB(glEdgeFlagv, _gloffset_EdgeFlagv) - GL_STUB(glEnd, _gloffset_End) - GL_STUB(glIndexd, _gloffset_Indexd) - GL_STUB(glIndexdv, _gloffset_Indexdv) - GL_STUB(glIndexf, _gloffset_Indexf) - GL_STUB(glIndexfv, _gloffset_Indexfv) - GL_STUB(glIndexi, _gloffset_Indexi) - GL_STUB(glIndexiv, _gloffset_Indexiv) - GL_STUB(glIndexs, _gloffset_Indexs) - GL_STUB(glIndexsv, _gloffset_Indexsv) - GL_STUB(glNormal3b, _gloffset_Normal3b) - GL_STUB(glNormal3bv, _gloffset_Normal3bv) - GL_STUB(glNormal3d, _gloffset_Normal3d) - GL_STUB(glNormal3dv, _gloffset_Normal3dv) - GL_STUB(glNormal3f, _gloffset_Normal3f) - GL_STUB(glNormal3fv, _gloffset_Normal3fv) - GL_STUB(glNormal3i, _gloffset_Normal3i) - GL_STUB(glNormal3iv, _gloffset_Normal3iv) - GL_STUB(glNormal3s, _gloffset_Normal3s) - GL_STUB(glNormal3sv, _gloffset_Normal3sv) - GL_STUB(glRasterPos2d, _gloffset_RasterPos2d) - GL_STUB(glRasterPos2dv, _gloffset_RasterPos2dv) - GL_STUB(glRasterPos2f, _gloffset_RasterPos2f) - GL_STUB(glRasterPos2fv, _gloffset_RasterPos2fv) - GL_STUB(glRasterPos2i, _gloffset_RasterPos2i) - GL_STUB(glRasterPos2iv, _gloffset_RasterPos2iv) - GL_STUB(glRasterPos2s, _gloffset_RasterPos2s) - GL_STUB(glRasterPos2sv, _gloffset_RasterPos2sv) - GL_STUB(glRasterPos3d, _gloffset_RasterPos3d) - GL_STUB(glRasterPos3dv, _gloffset_RasterPos3dv) - GL_STUB(glRasterPos3f, _gloffset_RasterPos3f) - GL_STUB(glRasterPos3fv, _gloffset_RasterPos3fv) - GL_STUB(glRasterPos3i, _gloffset_RasterPos3i) - GL_STUB(glRasterPos3iv, _gloffset_RasterPos3iv) - GL_STUB(glRasterPos3s, _gloffset_RasterPos3s) - GL_STUB(glRasterPos3sv, _gloffset_RasterPos3sv) - GL_STUB(glRasterPos4d, _gloffset_RasterPos4d) - GL_STUB(glRasterPos4dv, _gloffset_RasterPos4dv) - GL_STUB(glRasterPos4f, _gloffset_RasterPos4f) - GL_STUB(glRasterPos4fv, _gloffset_RasterPos4fv) - GL_STUB(glRasterPos4i, _gloffset_RasterPos4i) - GL_STUB(glRasterPos4iv, _gloffset_RasterPos4iv) - GL_STUB(glRasterPos4s, _gloffset_RasterPos4s) - GL_STUB(glRasterPos4sv, _gloffset_RasterPos4sv) - GL_STUB(glRectd, _gloffset_Rectd) - GL_STUB(glRectdv, _gloffset_Rectdv) - GL_STUB(glRectf, _gloffset_Rectf) - GL_STUB(glRectfv, _gloffset_Rectfv) - GL_STUB(glRecti, _gloffset_Recti) - GL_STUB(glRectiv, _gloffset_Rectiv) - GL_STUB(glRects, _gloffset_Rects) - GL_STUB(glRectsv, _gloffset_Rectsv) - GL_STUB(glTexCoord1d, _gloffset_TexCoord1d) - GL_STUB(glTexCoord1dv, _gloffset_TexCoord1dv) - GL_STUB(glTexCoord1f, _gloffset_TexCoord1f) - GL_STUB(glTexCoord1fv, _gloffset_TexCoord1fv) - GL_STUB(glTexCoord1i, _gloffset_TexCoord1i) - GL_STUB(glTexCoord1iv, _gloffset_TexCoord1iv) - GL_STUB(glTexCoord1s, _gloffset_TexCoord1s) - GL_STUB(glTexCoord1sv, _gloffset_TexCoord1sv) - GL_STUB(glTexCoord2d, _gloffset_TexCoord2d) - GL_STUB(glTexCoord2dv, _gloffset_TexCoord2dv) - GL_STUB(glTexCoord2f, _gloffset_TexCoord2f) - GL_STUB(glTexCoord2fv, _gloffset_TexCoord2fv) - GL_STUB(glTexCoord2i, _gloffset_TexCoord2i) - GL_STUB(glTexCoord2iv, _gloffset_TexCoord2iv) - GL_STUB(glTexCoord2s, _gloffset_TexCoord2s) - GL_STUB(glTexCoord2sv, _gloffset_TexCoord2sv) - GL_STUB(glTexCoord3d, _gloffset_TexCoord3d) - GL_STUB(glTexCoord3dv, _gloffset_TexCoord3dv) - GL_STUB(glTexCoord3f, _gloffset_TexCoord3f) - GL_STUB(glTexCoord3fv, _gloffset_TexCoord3fv) - GL_STUB(glTexCoord3i, _gloffset_TexCoord3i) - GL_STUB(glTexCoord3iv, _gloffset_TexCoord3iv) - GL_STUB(glTexCoord3s, _gloffset_TexCoord3s) - GL_STUB(glTexCoord3sv, _gloffset_TexCoord3sv) - GL_STUB(glTexCoord4d, _gloffset_TexCoord4d) - GL_STUB(glTexCoord4dv, _gloffset_TexCoord4dv) - GL_STUB(glTexCoord4f, _gloffset_TexCoord4f) - GL_STUB(glTexCoord4fv, _gloffset_TexCoord4fv) - GL_STUB(glTexCoord4i, _gloffset_TexCoord4i) - GL_STUB(glTexCoord4iv, _gloffset_TexCoord4iv) - GL_STUB(glTexCoord4s, _gloffset_TexCoord4s) - GL_STUB(glTexCoord4sv, _gloffset_TexCoord4sv) - GL_STUB(glVertex2d, _gloffset_Vertex2d) - GL_STUB(glVertex2dv, _gloffset_Vertex2dv) - GL_STUB(glVertex2f, _gloffset_Vertex2f) - GL_STUB(glVertex2fv, _gloffset_Vertex2fv) - GL_STUB(glVertex2i, _gloffset_Vertex2i) - GL_STUB(glVertex2iv, _gloffset_Vertex2iv) - GL_STUB(glVertex2s, _gloffset_Vertex2s) - GL_STUB(glVertex2sv, _gloffset_Vertex2sv) - GL_STUB(glVertex3d, _gloffset_Vertex3d) - GL_STUB(glVertex3dv, _gloffset_Vertex3dv) - GL_STUB(glVertex3f, _gloffset_Vertex3f) - GL_STUB(glVertex3fv, _gloffset_Vertex3fv) - GL_STUB(glVertex3i, _gloffset_Vertex3i) - GL_STUB(glVertex3iv, _gloffset_Vertex3iv) - GL_STUB(glVertex3s, _gloffset_Vertex3s) - GL_STUB(glVertex3sv, _gloffset_Vertex3sv) - GL_STUB(glVertex4d, _gloffset_Vertex4d) - GL_STUB(glVertex4dv, _gloffset_Vertex4dv) - GL_STUB(glVertex4f, _gloffset_Vertex4f) - GL_STUB(glVertex4fv, _gloffset_Vertex4fv) - GL_STUB(glVertex4i, _gloffset_Vertex4i) - GL_STUB(glVertex4iv, _gloffset_Vertex4iv) - GL_STUB(glVertex4s, _gloffset_Vertex4s) - GL_STUB(glVertex4sv, _gloffset_Vertex4sv) - GL_STUB(glClipPlane, _gloffset_ClipPlane) - GL_STUB(glColorMaterial, _gloffset_ColorMaterial) - GL_STUB(glCullFace, _gloffset_CullFace) - GL_STUB(glFogf, _gloffset_Fogf) - GL_STUB(glFogfv, _gloffset_Fogfv) - GL_STUB(glFogi, _gloffset_Fogi) - GL_STUB(glFogiv, _gloffset_Fogiv) - GL_STUB(glFrontFace, _gloffset_FrontFace) - GL_STUB(glHint, _gloffset_Hint) - GL_STUB(glLightf, _gloffset_Lightf) - GL_STUB(glLightfv, _gloffset_Lightfv) - GL_STUB(glLighti, _gloffset_Lighti) - GL_STUB(glLightiv, _gloffset_Lightiv) - GL_STUB(glLightModelf, _gloffset_LightModelf) - GL_STUB(glLightModelfv, _gloffset_LightModelfv) - GL_STUB(glLightModeli, _gloffset_LightModeli) - GL_STUB(glLightModeliv, _gloffset_LightModeliv) - GL_STUB(glLineStipple, _gloffset_LineStipple) - GL_STUB(glLineWidth, _gloffset_LineWidth) - GL_STUB(glMaterialf, _gloffset_Materialf) - GL_STUB(glMaterialfv, _gloffset_Materialfv) - GL_STUB(glMateriali, _gloffset_Materiali) - GL_STUB(glMaterialiv, _gloffset_Materialiv) - GL_STUB(glPointSize, _gloffset_PointSize) - GL_STUB(glPolygonMode, _gloffset_PolygonMode) - GL_STUB(glPolygonStipple, _gloffset_PolygonStipple) - GL_STUB(glScissor, _gloffset_Scissor) - GL_STUB(glShadeModel, _gloffset_ShadeModel) - GL_STUB(glTexParameterf, _gloffset_TexParameterf) - GL_STUB(glTexParameterfv, _gloffset_TexParameterfv) - GL_STUB(glTexParameteri, _gloffset_TexParameteri) - GL_STUB(glTexParameteriv, _gloffset_TexParameteriv) - GL_STUB(glTexImage1D, _gloffset_TexImage1D) - GL_STUB(glTexImage2D, _gloffset_TexImage2D) - GL_STUB(glTexEnvf, _gloffset_TexEnvf) - GL_STUB(glTexEnvfv, _gloffset_TexEnvfv) - GL_STUB(glTexEnvi, _gloffset_TexEnvi) - GL_STUB(glTexEnviv, _gloffset_TexEnviv) - GL_STUB(glTexGend, _gloffset_TexGend) - GL_STUB(glTexGendv, _gloffset_TexGendv) - GL_STUB(glTexGenf, _gloffset_TexGenf) - GL_STUB(glTexGenfv, _gloffset_TexGenfv) - GL_STUB(glTexGeni, _gloffset_TexGeni) - GL_STUB(glTexGeniv, _gloffset_TexGeniv) - GL_STUB(glFeedbackBuffer, _gloffset_FeedbackBuffer) - GL_STUB(glSelectBuffer, _gloffset_SelectBuffer) - GL_STUB(glRenderMode, _gloffset_RenderMode) - GL_STUB(glInitNames, _gloffset_InitNames) - GL_STUB(glLoadName, _gloffset_LoadName) - GL_STUB(glPassThrough, _gloffset_PassThrough) - GL_STUB(glPopName, _gloffset_PopName) - GL_STUB(glPushName, _gloffset_PushName) - GL_STUB(glDrawBuffer, _gloffset_DrawBuffer) - GL_STUB(glClear, _gloffset_Clear) - GL_STUB(glClearAccum, _gloffset_ClearAccum) - GL_STUB(glClearIndex, _gloffset_ClearIndex) - GL_STUB(glClearColor, _gloffset_ClearColor) - GL_STUB(glClearStencil, _gloffset_ClearStencil) - GL_STUB(glClearDepth, _gloffset_ClearDepth) - GL_STUB(glStencilMask, _gloffset_StencilMask) - GL_STUB(glColorMask, _gloffset_ColorMask) - GL_STUB(glDepthMask, _gloffset_DepthMask) - GL_STUB(glIndexMask, _gloffset_IndexMask) - GL_STUB(glAccum, _gloffset_Accum) - GL_STUB(glDisable, _gloffset_Disable) - GL_STUB(glEnable, _gloffset_Enable) - GL_STUB(glFinish, _gloffset_Finish) - GL_STUB(glFlush, _gloffset_Flush) - GL_STUB(glPopAttrib, _gloffset_PopAttrib) - GL_STUB(glPushAttrib, _gloffset_PushAttrib) - GL_STUB(glMap1d, _gloffset_Map1d) - GL_STUB(glMap1f, _gloffset_Map1f) - GL_STUB(glMap2d, _gloffset_Map2d) - GL_STUB(glMap2f, _gloffset_Map2f) - GL_STUB(glMapGrid1d, _gloffset_MapGrid1d) - GL_STUB(glMapGrid1f, _gloffset_MapGrid1f) - GL_STUB(glMapGrid2d, _gloffset_MapGrid2d) - GL_STUB(glMapGrid2f, _gloffset_MapGrid2f) - GL_STUB(glEvalCoord1d, _gloffset_EvalCoord1d) - GL_STUB(glEvalCoord1dv, _gloffset_EvalCoord1dv) - GL_STUB(glEvalCoord1f, _gloffset_EvalCoord1f) - GL_STUB(glEvalCoord1fv, _gloffset_EvalCoord1fv) - GL_STUB(glEvalCoord2d, _gloffset_EvalCoord2d) - GL_STUB(glEvalCoord2dv, _gloffset_EvalCoord2dv) - GL_STUB(glEvalCoord2f, _gloffset_EvalCoord2f) - GL_STUB(glEvalCoord2fv, _gloffset_EvalCoord2fv) - GL_STUB(glEvalMesh1, _gloffset_EvalMesh1) - GL_STUB(glEvalPoint1, _gloffset_EvalPoint1) - GL_STUB(glEvalMesh2, _gloffset_EvalMesh2) - GL_STUB(glEvalPoint2, _gloffset_EvalPoint2) - GL_STUB(glAlphaFunc, _gloffset_AlphaFunc) - GL_STUB(glBlendFunc, _gloffset_BlendFunc) - GL_STUB(glLogicOp, _gloffset_LogicOp) - GL_STUB(glStencilFunc, _gloffset_StencilFunc) - GL_STUB(glStencilOp, _gloffset_StencilOp) - GL_STUB(glDepthFunc, _gloffset_DepthFunc) - GL_STUB(glPixelZoom, _gloffset_PixelZoom) - GL_STUB(glPixelTransferf, _gloffset_PixelTransferf) - GL_STUB(glPixelTransferi, _gloffset_PixelTransferi) - GL_STUB(glPixelStoref, _gloffset_PixelStoref) - GL_STUB(glPixelStorei, _gloffset_PixelStorei) - GL_STUB(glPixelMapfv, _gloffset_PixelMapfv) - GL_STUB(glPixelMapuiv, _gloffset_PixelMapuiv) - GL_STUB(glPixelMapusv, _gloffset_PixelMapusv) - GL_STUB(glReadBuffer, _gloffset_ReadBuffer) - GL_STUB(glCopyPixels, _gloffset_CopyPixels) - GL_STUB(glReadPixels, _gloffset_ReadPixels) - GL_STUB(glDrawPixels, _gloffset_DrawPixels) - GL_STUB(glGetBooleanv, _gloffset_GetBooleanv) - GL_STUB(glGetClipPlane, _gloffset_GetClipPlane) - GL_STUB(glGetDoublev, _gloffset_GetDoublev) - GL_STUB(glGetError, _gloffset_GetError) - GL_STUB(glGetFloatv, _gloffset_GetFloatv) - GL_STUB(glGetIntegerv, _gloffset_GetIntegerv) - GL_STUB(glGetLightfv, _gloffset_GetLightfv) - GL_STUB(glGetLightiv, _gloffset_GetLightiv) - GL_STUB(glGetMapdv, _gloffset_GetMapdv) - GL_STUB(glGetMapfv, _gloffset_GetMapfv) - GL_STUB(glGetMapiv, _gloffset_GetMapiv) - GL_STUB(glGetMaterialfv, _gloffset_GetMaterialfv) - GL_STUB(glGetMaterialiv, _gloffset_GetMaterialiv) - GL_STUB(glGetPixelMapfv, _gloffset_GetPixelMapfv) - GL_STUB(glGetPixelMapuiv, _gloffset_GetPixelMapuiv) - GL_STUB(glGetPixelMapusv, _gloffset_GetPixelMapusv) - GL_STUB(glGetPolygonStipple, _gloffset_GetPolygonStipple) - GL_STUB(glGetString, _gloffset_GetString) - GL_STUB(glGetTexEnvfv, _gloffset_GetTexEnvfv) - GL_STUB(glGetTexEnviv, _gloffset_GetTexEnviv) - GL_STUB(glGetTexGendv, _gloffset_GetTexGendv) - GL_STUB(glGetTexGenfv, _gloffset_GetTexGenfv) - GL_STUB(glGetTexGeniv, _gloffset_GetTexGeniv) - GL_STUB(glGetTexImage, _gloffset_GetTexImage) - GL_STUB(glGetTexParameterfv, _gloffset_GetTexParameterfv) - GL_STUB(glGetTexParameteriv, _gloffset_GetTexParameteriv) - GL_STUB(glGetTexLevelParameterfv, _gloffset_GetTexLevelParameterfv) - GL_STUB(glGetTexLevelParameteriv, _gloffset_GetTexLevelParameteriv) - GL_STUB(glIsEnabled, _gloffset_IsEnabled) - GL_STUB(glIsList, _gloffset_IsList) - GL_STUB(glDepthRange, _gloffset_DepthRange) - GL_STUB(glFrustum, _gloffset_Frustum) - GL_STUB(glLoadIdentity, _gloffset_LoadIdentity) - GL_STUB(glLoadMatrixf, _gloffset_LoadMatrixf) - GL_STUB(glLoadMatrixd, _gloffset_LoadMatrixd) - GL_STUB(glMatrixMode, _gloffset_MatrixMode) - GL_STUB(glMultMatrixf, _gloffset_MultMatrixf) - GL_STUB(glMultMatrixd, _gloffset_MultMatrixd) - GL_STUB(glOrtho, _gloffset_Ortho) - GL_STUB(glPopMatrix, _gloffset_PopMatrix) - GL_STUB(glPushMatrix, _gloffset_PushMatrix) - GL_STUB(glRotated, _gloffset_Rotated) - GL_STUB(glRotatef, _gloffset_Rotatef) - GL_STUB(glScaled, _gloffset_Scaled) - GL_STUB(glScalef, _gloffset_Scalef) - GL_STUB(glTranslated, _gloffset_Translated) - GL_STUB(glTranslatef, _gloffset_Translatef) - GL_STUB(glViewport, _gloffset_Viewport) - GL_STUB(glArrayElement, _gloffset_ArrayElement) - GL_STUB(glBindTexture, _gloffset_BindTexture) - GL_STUB(glColorPointer, _gloffset_ColorPointer) - GL_STUB(glDisableClientState, _gloffset_DisableClientState) - GL_STUB(glDrawArrays, _gloffset_DrawArrays) - GL_STUB(glDrawElements, _gloffset_DrawElements) - GL_STUB(glEdgeFlagPointer, _gloffset_EdgeFlagPointer) - GL_STUB(glEnableClientState, _gloffset_EnableClientState) - GL_STUB(glIndexPointer, _gloffset_IndexPointer) - GL_STUB(glIndexub, _gloffset_Indexub) - GL_STUB(glIndexubv, _gloffset_Indexubv) - GL_STUB(glInterleavedArrays, _gloffset_InterleavedArrays) - GL_STUB(glNormalPointer, _gloffset_NormalPointer) - GL_STUB(glPolygonOffset, _gloffset_PolygonOffset) - GL_STUB(glTexCoordPointer, _gloffset_TexCoordPointer) - GL_STUB(glVertexPointer, _gloffset_VertexPointer) - GL_STUB(glAreTexturesResident, _gloffset_AreTexturesResident) - GL_STUB(glCopyTexImage1D, _gloffset_CopyTexImage1D) - GL_STUB(glCopyTexImage2D, _gloffset_CopyTexImage2D) - GL_STUB(glCopyTexSubImage1D, _gloffset_CopyTexSubImage1D) - GL_STUB(glCopyTexSubImage2D, _gloffset_CopyTexSubImage2D) - GL_STUB(glDeleteTextures, _gloffset_DeleteTextures) - GL_STUB(glGenTextures, _gloffset_GenTextures) - GL_STUB(glGetPointerv, _gloffset_GetPointerv) - GL_STUB(glIsTexture, _gloffset_IsTexture) - GL_STUB(glPrioritizeTextures, _gloffset_PrioritizeTextures) - GL_STUB(glTexSubImage1D, _gloffset_TexSubImage1D) - GL_STUB(glTexSubImage2D, _gloffset_TexSubImage2D) - GL_STUB(glPopClientAttrib, _gloffset_PopClientAttrib) - GL_STUB(glPushClientAttrib, _gloffset_PushClientAttrib) - GL_STUB(glBlendColor, _gloffset_BlendColor) - GL_STUB(glBlendEquation, _gloffset_BlendEquation) - GL_STUB(glDrawRangeElements, _gloffset_DrawRangeElements) - GL_STUB(glColorTable, _gloffset_ColorTable) - GL_STUB(glColorTableParameterfv, _gloffset_ColorTableParameterfv) - GL_STUB(glColorTableParameteriv, _gloffset_ColorTableParameteriv) - GL_STUB(glCopyColorTable, _gloffset_CopyColorTable) - GL_STUB(glGetColorTable, _gloffset_GetColorTable) - GL_STUB(glGetColorTableParameterfv, _gloffset_GetColorTableParameterfv) - GL_STUB(glGetColorTableParameteriv, _gloffset_GetColorTableParameteriv) - GL_STUB(glColorSubTable, _gloffset_ColorSubTable) - GL_STUB(glCopyColorSubTable, _gloffset_CopyColorSubTable) - GL_STUB(glConvolutionFilter1D, _gloffset_ConvolutionFilter1D) - GL_STUB(glConvolutionFilter2D, _gloffset_ConvolutionFilter2D) - GL_STUB(glConvolutionParameterf, _gloffset_ConvolutionParameterf) - GL_STUB(glConvolutionParameterfv, _gloffset_ConvolutionParameterfv) - GL_STUB(glConvolutionParameteri, _gloffset_ConvolutionParameteri) - GL_STUB(glConvolutionParameteriv, _gloffset_ConvolutionParameteriv) - GL_STUB(glCopyConvolutionFilter1D, _gloffset_CopyConvolutionFilter1D) - GL_STUB(glCopyConvolutionFilter2D, _gloffset_CopyConvolutionFilter2D) - GL_STUB(glGetConvolutionFilter, _gloffset_GetConvolutionFilter) - GL_STUB(glGetConvolutionParameterfv, _gloffset_GetConvolutionParameterfv) - GL_STUB(glGetConvolutionParameteriv, _gloffset_GetConvolutionParameteriv) - GL_STUB(glGetSeparableFilter, _gloffset_GetSeparableFilter) - GL_STUB(glSeparableFilter2D, _gloffset_SeparableFilter2D) - GL_STUB(glGetHistogram, _gloffset_GetHistogram) - GL_STUB(glGetHistogramParameterfv, _gloffset_GetHistogramParameterfv) - GL_STUB(glGetHistogramParameteriv, _gloffset_GetHistogramParameteriv) - GL_STUB(glGetMinmax, _gloffset_GetMinmax) - GL_STUB(glGetMinmaxParameterfv, _gloffset_GetMinmaxParameterfv) - GL_STUB(glGetMinmaxParameteriv, _gloffset_GetMinmaxParameteriv) - GL_STUB(glHistogram, _gloffset_Histogram) - GL_STUB(glMinmax, _gloffset_Minmax) - GL_STUB(glResetHistogram, _gloffset_ResetHistogram) - GL_STUB(glResetMinmax, _gloffset_ResetMinmax) - GL_STUB(glTexImage3D, _gloffset_TexImage3D) - GL_STUB(glTexSubImage3D, _gloffset_TexSubImage3D) - GL_STUB(glCopyTexSubImage3D, _gloffset_CopyTexSubImage3D) - GL_STUB(glActiveTextureARB, _gloffset_ActiveTextureARB) - GL_STUB(glClientActiveTextureARB, _gloffset_ClientActiveTextureARB) - GL_STUB(glMultiTexCoord1dARB, _gloffset_MultiTexCoord1dARB) - GL_STUB(glMultiTexCoord1dvARB, _gloffset_MultiTexCoord1dvARB) - GL_STUB(glMultiTexCoord1fARB, _gloffset_MultiTexCoord1fARB) - GL_STUB(glMultiTexCoord1fvARB, _gloffset_MultiTexCoord1fvARB) - GL_STUB(glMultiTexCoord1iARB, _gloffset_MultiTexCoord1iARB) - GL_STUB(glMultiTexCoord1ivARB, _gloffset_MultiTexCoord1ivARB) - GL_STUB(glMultiTexCoord1sARB, _gloffset_MultiTexCoord1sARB) - GL_STUB(glMultiTexCoord1svARB, _gloffset_MultiTexCoord1svARB) - GL_STUB(glMultiTexCoord2dARB, _gloffset_MultiTexCoord2dARB) - GL_STUB(glMultiTexCoord2dvARB, _gloffset_MultiTexCoord2dvARB) - GL_STUB(glMultiTexCoord2fARB, _gloffset_MultiTexCoord2fARB) - GL_STUB(glMultiTexCoord2fvARB, _gloffset_MultiTexCoord2fvARB) - GL_STUB(glMultiTexCoord2iARB, _gloffset_MultiTexCoord2iARB) - GL_STUB(glMultiTexCoord2ivARB, _gloffset_MultiTexCoord2ivARB) - GL_STUB(glMultiTexCoord2sARB, _gloffset_MultiTexCoord2sARB) - GL_STUB(glMultiTexCoord2svARB, _gloffset_MultiTexCoord2svARB) - GL_STUB(glMultiTexCoord3dARB, _gloffset_MultiTexCoord3dARB) - GL_STUB(glMultiTexCoord3dvARB, _gloffset_MultiTexCoord3dvARB) - GL_STUB(glMultiTexCoord3fARB, _gloffset_MultiTexCoord3fARB) - GL_STUB(glMultiTexCoord3fvARB, _gloffset_MultiTexCoord3fvARB) - GL_STUB(glMultiTexCoord3iARB, _gloffset_MultiTexCoord3iARB) - GL_STUB(glMultiTexCoord3ivARB, _gloffset_MultiTexCoord3ivARB) - GL_STUB(glMultiTexCoord3sARB, _gloffset_MultiTexCoord3sARB) - GL_STUB(glMultiTexCoord3svARB, _gloffset_MultiTexCoord3svARB) - GL_STUB(glMultiTexCoord4dARB, _gloffset_MultiTexCoord4dARB) - GL_STUB(glMultiTexCoord4dvARB, _gloffset_MultiTexCoord4dvARB) - GL_STUB(glMultiTexCoord4fARB, _gloffset_MultiTexCoord4fARB) - GL_STUB(glMultiTexCoord4fvARB, _gloffset_MultiTexCoord4fvARB) - GL_STUB(glMultiTexCoord4iARB, _gloffset_MultiTexCoord4iARB) - GL_STUB(glMultiTexCoord4ivARB, _gloffset_MultiTexCoord4ivARB) - GL_STUB(glMultiTexCoord4sARB, _gloffset_MultiTexCoord4sARB) - GL_STUB(glMultiTexCoord4svARB, _gloffset_MultiTexCoord4svARB) - GL_STUB(glAttachShader, _gloffset_AttachShader) - GL_STUB(glCreateProgram, _gloffset_CreateProgram) - GL_STUB(glCreateShader, _gloffset_CreateShader) - GL_STUB(glDeleteProgram, _gloffset_DeleteProgram) - GL_STUB(glDeleteShader, _gloffset_DeleteShader) - GL_STUB(glDetachShader, _gloffset_DetachShader) - GL_STUB(glGetAttachedShaders, _gloffset_GetAttachedShaders) - GL_STUB(glGetProgramInfoLog, _gloffset_GetProgramInfoLog) - GL_STUB(glGetProgramiv, _gloffset_GetProgramiv) - GL_STUB(glGetShaderInfoLog, _gloffset_GetShaderInfoLog) - GL_STUB(glGetShaderiv, _gloffset_GetShaderiv) - GL_STUB(glIsProgram, _gloffset_IsProgram) - GL_STUB(glIsShader, _gloffset_IsShader) - GL_STUB(glStencilFuncSeparate, _gloffset_StencilFuncSeparate) - GL_STUB(glStencilMaskSeparate, _gloffset_StencilMaskSeparate) - GL_STUB(glStencilOpSeparate, _gloffset_StencilOpSeparate) - GL_STUB(glUniformMatrix2x3fv, _gloffset_UniformMatrix2x3fv) - GL_STUB(glUniformMatrix2x4fv, _gloffset_UniformMatrix2x4fv) - GL_STUB(glUniformMatrix3x2fv, _gloffset_UniformMatrix3x2fv) - GL_STUB(glUniformMatrix3x4fv, _gloffset_UniformMatrix3x4fv) - GL_STUB(glUniformMatrix4x2fv, _gloffset_UniformMatrix4x2fv) - GL_STUB(glUniformMatrix4x3fv, _gloffset_UniformMatrix4x3fv) - GL_STUB(glDrawArraysInstanced, _gloffset_DrawArraysInstanced) - GL_STUB(glDrawElementsInstanced, _gloffset_DrawElementsInstanced) - GL_STUB(glLoadTransposeMatrixdARB, _gloffset_LoadTransposeMatrixdARB) - GL_STUB(glLoadTransposeMatrixfARB, _gloffset_LoadTransposeMatrixfARB) - GL_STUB(glMultTransposeMatrixdARB, _gloffset_MultTransposeMatrixdARB) - GL_STUB(glMultTransposeMatrixfARB, _gloffset_MultTransposeMatrixfARB) - GL_STUB(glSampleCoverageARB, _gloffset_SampleCoverageARB) - GL_STUB(glCompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB) - GL_STUB(glCompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB) - GL_STUB(glCompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB) - GL_STUB(glCompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB) - GL_STUB(glCompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB) - GL_STUB(glCompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB) - GL_STUB(glGetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB) - GL_STUB(glDisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB) - GL_STUB(glEnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB) - GL_STUB(glGetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB) - GL_STUB(glGetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB) - GL_STUB(glGetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB) - GL_STUB(glGetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB) - GL_STUB(glGetProgramStringARB, _gloffset_GetProgramStringARB) - GL_STUB(glGetProgramivARB, _gloffset_GetProgramivARB) - GL_STUB(glGetVertexAttribdvARB, _gloffset_GetVertexAttribdvARB) - GL_STUB(glGetVertexAttribfvARB, _gloffset_GetVertexAttribfvARB) - GL_STUB(glGetVertexAttribivARB, _gloffset_GetVertexAttribivARB) - GL_STUB(glProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB) - GL_STUB(glProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB) - GL_STUB(glProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB) - GL_STUB(glProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB) - GL_STUB(glProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB) - GL_STUB(glProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB) - GL_STUB(glProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB) - GL_STUB(glProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB) - GL_STUB(glProgramStringARB, _gloffset_ProgramStringARB) - GL_STUB(glVertexAttrib1dARB, _gloffset_VertexAttrib1dARB) - GL_STUB(glVertexAttrib1dvARB, _gloffset_VertexAttrib1dvARB) - GL_STUB(glVertexAttrib1fARB, _gloffset_VertexAttrib1fARB) - GL_STUB(glVertexAttrib1fvARB, _gloffset_VertexAttrib1fvARB) - GL_STUB(glVertexAttrib1sARB, _gloffset_VertexAttrib1sARB) - GL_STUB(glVertexAttrib1svARB, _gloffset_VertexAttrib1svARB) - GL_STUB(glVertexAttrib2dARB, _gloffset_VertexAttrib2dARB) - GL_STUB(glVertexAttrib2dvARB, _gloffset_VertexAttrib2dvARB) - GL_STUB(glVertexAttrib2fARB, _gloffset_VertexAttrib2fARB) - GL_STUB(glVertexAttrib2fvARB, _gloffset_VertexAttrib2fvARB) - GL_STUB(glVertexAttrib2sARB, _gloffset_VertexAttrib2sARB) - GL_STUB(glVertexAttrib2svARB, _gloffset_VertexAttrib2svARB) - GL_STUB(glVertexAttrib3dARB, _gloffset_VertexAttrib3dARB) - GL_STUB(glVertexAttrib3dvARB, _gloffset_VertexAttrib3dvARB) - GL_STUB(glVertexAttrib3fARB, _gloffset_VertexAttrib3fARB) - GL_STUB(glVertexAttrib3fvARB, _gloffset_VertexAttrib3fvARB) - GL_STUB(glVertexAttrib3sARB, _gloffset_VertexAttrib3sARB) - GL_STUB(glVertexAttrib3svARB, _gloffset_VertexAttrib3svARB) - GL_STUB(glVertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB) - GL_STUB(glVertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB) - GL_STUB(glVertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB) - GL_STUB(glVertexAttrib4NubARB, _gloffset_VertexAttrib4NubARB) - GL_STUB(glVertexAttrib4NubvARB, _gloffset_VertexAttrib4NubvARB) - GL_STUB(glVertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB) - GL_STUB(glVertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB) - GL_STUB(glVertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB) - GL_STUB(glVertexAttrib4dARB, _gloffset_VertexAttrib4dARB) - GL_STUB(glVertexAttrib4dvARB, _gloffset_VertexAttrib4dvARB) - GL_STUB(glVertexAttrib4fARB, _gloffset_VertexAttrib4fARB) - GL_STUB(glVertexAttrib4fvARB, _gloffset_VertexAttrib4fvARB) - GL_STUB(glVertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB) - GL_STUB(glVertexAttrib4sARB, _gloffset_VertexAttrib4sARB) - GL_STUB(glVertexAttrib4svARB, _gloffset_VertexAttrib4svARB) - GL_STUB(glVertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB) - GL_STUB(glVertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB) - GL_STUB(glVertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB) - GL_STUB(glVertexAttribPointerARB, _gloffset_VertexAttribPointerARB) - GL_STUB(glBindBufferARB, _gloffset_BindBufferARB) - GL_STUB(glBufferDataARB, _gloffset_BufferDataARB) - GL_STUB(glBufferSubDataARB, _gloffset_BufferSubDataARB) - GL_STUB(glDeleteBuffersARB, _gloffset_DeleteBuffersARB) - GL_STUB(glGenBuffersARB, _gloffset_GenBuffersARB) - GL_STUB(glGetBufferParameterivARB, _gloffset_GetBufferParameterivARB) - GL_STUB(glGetBufferPointervARB, _gloffset_GetBufferPointervARB) - GL_STUB(glGetBufferSubDataARB, _gloffset_GetBufferSubDataARB) - GL_STUB(glIsBufferARB, _gloffset_IsBufferARB) - GL_STUB(glMapBufferARB, _gloffset_MapBufferARB) - GL_STUB(glUnmapBufferARB, _gloffset_UnmapBufferARB) - GL_STUB(glBeginQueryARB, _gloffset_BeginQueryARB) - GL_STUB(glDeleteQueriesARB, _gloffset_DeleteQueriesARB) - GL_STUB(glEndQueryARB, _gloffset_EndQueryARB) - GL_STUB(glGenQueriesARB, _gloffset_GenQueriesARB) - GL_STUB(glGetQueryObjectivARB, _gloffset_GetQueryObjectivARB) - GL_STUB(glGetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB) - GL_STUB(glGetQueryivARB, _gloffset_GetQueryivARB) - GL_STUB(glIsQueryARB, _gloffset_IsQueryARB) - GL_STUB(glAttachObjectARB, _gloffset_AttachObjectARB) - GL_STUB(glCompileShaderARB, _gloffset_CompileShaderARB) - GL_STUB(glCreateProgramObjectARB, _gloffset_CreateProgramObjectARB) - GL_STUB(glCreateShaderObjectARB, _gloffset_CreateShaderObjectARB) - GL_STUB(glDeleteObjectARB, _gloffset_DeleteObjectARB) - GL_STUB(glDetachObjectARB, _gloffset_DetachObjectARB) - GL_STUB(glGetActiveUniformARB, _gloffset_GetActiveUniformARB) - GL_STUB(glGetAttachedObjectsARB, _gloffset_GetAttachedObjectsARB) - GL_STUB(glGetHandleARB, _gloffset_GetHandleARB) - GL_STUB(glGetInfoLogARB, _gloffset_GetInfoLogARB) - GL_STUB(glGetObjectParameterfvARB, _gloffset_GetObjectParameterfvARB) - GL_STUB(glGetObjectParameterivARB, _gloffset_GetObjectParameterivARB) - GL_STUB(glGetShaderSourceARB, _gloffset_GetShaderSourceARB) - GL_STUB(glGetUniformLocationARB, _gloffset_GetUniformLocationARB) - GL_STUB(glGetUniformfvARB, _gloffset_GetUniformfvARB) - GL_STUB(glGetUniformivARB, _gloffset_GetUniformivARB) - GL_STUB(glLinkProgramARB, _gloffset_LinkProgramARB) - GL_STUB(glShaderSourceARB, _gloffset_ShaderSourceARB) - GL_STUB(glUniform1fARB, _gloffset_Uniform1fARB) - GL_STUB(glUniform1fvARB, _gloffset_Uniform1fvARB) - GL_STUB(glUniform1iARB, _gloffset_Uniform1iARB) - GL_STUB(glUniform1ivARB, _gloffset_Uniform1ivARB) - GL_STUB(glUniform2fARB, _gloffset_Uniform2fARB) - GL_STUB(glUniform2fvARB, _gloffset_Uniform2fvARB) - GL_STUB(glUniform2iARB, _gloffset_Uniform2iARB) - GL_STUB(glUniform2ivARB, _gloffset_Uniform2ivARB) - GL_STUB(glUniform3fARB, _gloffset_Uniform3fARB) - GL_STUB(glUniform3fvARB, _gloffset_Uniform3fvARB) - GL_STUB(glUniform3iARB, _gloffset_Uniform3iARB) - GL_STUB(glUniform3ivARB, _gloffset_Uniform3ivARB) - GL_STUB(glUniform4fARB, _gloffset_Uniform4fARB) - GL_STUB(glUniform4fvARB, _gloffset_Uniform4fvARB) - GL_STUB(glUniform4iARB, _gloffset_Uniform4iARB) - GL_STUB(glUniform4ivARB, _gloffset_Uniform4ivARB) - GL_STUB(glUniformMatrix2fvARB, _gloffset_UniformMatrix2fvARB) - GL_STUB(glUniformMatrix3fvARB, _gloffset_UniformMatrix3fvARB) - GL_STUB(glUniformMatrix4fvARB, _gloffset_UniformMatrix4fvARB) - GL_STUB(glUseProgramObjectARB, _gloffset_UseProgramObjectARB) - GL_STUB(glValidateProgramARB, _gloffset_ValidateProgramARB) - GL_STUB(glBindAttribLocationARB, _gloffset_BindAttribLocationARB) - GL_STUB(glGetActiveAttribARB, _gloffset_GetActiveAttribARB) - GL_STUB(glGetAttribLocationARB, _gloffset_GetAttribLocationARB) - GL_STUB(glDrawBuffersARB, _gloffset_DrawBuffersARB) - GL_STUB(glRenderbufferStorageMultisample, _gloffset_RenderbufferStorageMultisample) - GL_STUB(glFramebufferTextureARB, _gloffset_FramebufferTextureARB) - GL_STUB(glFramebufferTextureFaceARB, _gloffset_FramebufferTextureFaceARB) - GL_STUB(glProgramParameteriARB, _gloffset_ProgramParameteriARB) - GL_STUB(glFlushMappedBufferRange, _gloffset_FlushMappedBufferRange) - GL_STUB(glMapBufferRange, _gloffset_MapBufferRange) - GL_STUB(glBindVertexArray, _gloffset_BindVertexArray) - GL_STUB(glGenVertexArrays, _gloffset_GenVertexArrays) - GL_STUB(glCopyBufferSubData, _gloffset_CopyBufferSubData) - GL_STUB(glClientWaitSync, _gloffset_ClientWaitSync) - GL_STUB(glDeleteSync, _gloffset_DeleteSync) - GL_STUB(glFenceSync, _gloffset_FenceSync) - GL_STUB(glGetInteger64v, _gloffset_GetInteger64v) - GL_STUB(glGetSynciv, _gloffset_GetSynciv) - GL_STUB(glIsSync, _gloffset_IsSync) - GL_STUB(glWaitSync, _gloffset_WaitSync) - GL_STUB(glDrawElementsBaseVertex, _gloffset_DrawElementsBaseVertex) - GL_STUB(glDrawRangeElementsBaseVertex, _gloffset_DrawRangeElementsBaseVertex) - GL_STUB(glMultiDrawElementsBaseVertex, _gloffset_MultiDrawElementsBaseVertex) - GL_STUB(glBindTransformFeedback, _gloffset_BindTransformFeedback) - GL_STUB(glDeleteTransformFeedbacks, _gloffset_DeleteTransformFeedbacks) - GL_STUB(glDrawTransformFeedback, _gloffset_DrawTransformFeedback) - GL_STUB(glGenTransformFeedbacks, _gloffset_GenTransformFeedbacks) - GL_STUB(glIsTransformFeedback, _gloffset_IsTransformFeedback) - GL_STUB(glPauseTransformFeedback, _gloffset_PauseTransformFeedback) - GL_STUB(glResumeTransformFeedback, _gloffset_ResumeTransformFeedback) - GL_STUB(glPolygonOffsetEXT, _gloffset_PolygonOffsetEXT) - GL_STUB(gl_dispatch_stub_590, _gloffset_GetPixelTexGenParameterfvSGIS) - HIDDEN(gl_dispatch_stub_590) - GL_STUB(gl_dispatch_stub_591, _gloffset_GetPixelTexGenParameterivSGIS) - HIDDEN(gl_dispatch_stub_591) - GL_STUB(gl_dispatch_stub_592, _gloffset_PixelTexGenParameterfSGIS) - HIDDEN(gl_dispatch_stub_592) - GL_STUB(gl_dispatch_stub_593, _gloffset_PixelTexGenParameterfvSGIS) - HIDDEN(gl_dispatch_stub_593) - GL_STUB(gl_dispatch_stub_594, _gloffset_PixelTexGenParameteriSGIS) - HIDDEN(gl_dispatch_stub_594) - GL_STUB(gl_dispatch_stub_595, _gloffset_PixelTexGenParameterivSGIS) - HIDDEN(gl_dispatch_stub_595) - GL_STUB(gl_dispatch_stub_596, _gloffset_SampleMaskSGIS) - HIDDEN(gl_dispatch_stub_596) - GL_STUB(gl_dispatch_stub_597, _gloffset_SamplePatternSGIS) - HIDDEN(gl_dispatch_stub_597) - GL_STUB(glColorPointerEXT, _gloffset_ColorPointerEXT) - GL_STUB(glEdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT) - GL_STUB(glIndexPointerEXT, _gloffset_IndexPointerEXT) - GL_STUB(glNormalPointerEXT, _gloffset_NormalPointerEXT) - GL_STUB(glTexCoordPointerEXT, _gloffset_TexCoordPointerEXT) - GL_STUB(glVertexPointerEXT, _gloffset_VertexPointerEXT) - GL_STUB(glPointParameterfEXT, _gloffset_PointParameterfEXT) - GL_STUB(glPointParameterfvEXT, _gloffset_PointParameterfvEXT) - GL_STUB(glLockArraysEXT, _gloffset_LockArraysEXT) - GL_STUB(glUnlockArraysEXT, _gloffset_UnlockArraysEXT) - GL_STUB(glSecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT) - GL_STUB(glSecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT) - GL_STUB(glSecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT) - GL_STUB(glSecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT) - GL_STUB(glSecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT) - GL_STUB(glSecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT) - GL_STUB(glSecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT) - GL_STUB(glSecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT) - GL_STUB(glSecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT) - GL_STUB(glSecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT) - GL_STUB(glSecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT) - GL_STUB(glSecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT) - GL_STUB(glSecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT) - GL_STUB(glSecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT) - GL_STUB(glSecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT) - GL_STUB(glSecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT) - GL_STUB(glSecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT) - GL_STUB(glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT) - GL_STUB(glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT) - GL_STUB(glFogCoordPointerEXT, _gloffset_FogCoordPointerEXT) - GL_STUB(glFogCoorddEXT, _gloffset_FogCoorddEXT) - GL_STUB(glFogCoorddvEXT, _gloffset_FogCoorddvEXT) - GL_STUB(glFogCoordfEXT, _gloffset_FogCoordfEXT) - GL_STUB(glFogCoordfvEXT, _gloffset_FogCoordfvEXT) - GL_STUB(gl_dispatch_stub_632, _gloffset_PixelTexGenSGIX) - HIDDEN(gl_dispatch_stub_632) - GL_STUB(glBlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT) - GL_STUB(glFlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV) - GL_STUB(glVertexArrayRangeNV, _gloffset_VertexArrayRangeNV) - GL_STUB(glCombinerInputNV, _gloffset_CombinerInputNV) - GL_STUB(glCombinerOutputNV, _gloffset_CombinerOutputNV) - GL_STUB(glCombinerParameterfNV, _gloffset_CombinerParameterfNV) - GL_STUB(glCombinerParameterfvNV, _gloffset_CombinerParameterfvNV) - GL_STUB(glCombinerParameteriNV, _gloffset_CombinerParameteriNV) - GL_STUB(glCombinerParameterivNV, _gloffset_CombinerParameterivNV) - GL_STUB(glFinalCombinerInputNV, _gloffset_FinalCombinerInputNV) - GL_STUB(glGetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV) - GL_STUB(glGetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV) - GL_STUB(glGetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV) - GL_STUB(glGetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV) - GL_STUB(glGetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV) - GL_STUB(glGetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV) - GL_STUB(glResizeBuffersMESA, _gloffset_ResizeBuffersMESA) - GL_STUB(glWindowPos2dMESA, _gloffset_WindowPos2dMESA) - GL_STUB(glWindowPos2dvMESA, _gloffset_WindowPos2dvMESA) - GL_STUB(glWindowPos2fMESA, _gloffset_WindowPos2fMESA) - GL_STUB(glWindowPos2fvMESA, _gloffset_WindowPos2fvMESA) - GL_STUB(glWindowPos2iMESA, _gloffset_WindowPos2iMESA) - GL_STUB(glWindowPos2ivMESA, _gloffset_WindowPos2ivMESA) - GL_STUB(glWindowPos2sMESA, _gloffset_WindowPos2sMESA) - GL_STUB(glWindowPos2svMESA, _gloffset_WindowPos2svMESA) - GL_STUB(glWindowPos3dMESA, _gloffset_WindowPos3dMESA) - GL_STUB(glWindowPos3dvMESA, _gloffset_WindowPos3dvMESA) - GL_STUB(glWindowPos3fMESA, _gloffset_WindowPos3fMESA) - GL_STUB(glWindowPos3fvMESA, _gloffset_WindowPos3fvMESA) - GL_STUB(glWindowPos3iMESA, _gloffset_WindowPos3iMESA) - GL_STUB(glWindowPos3ivMESA, _gloffset_WindowPos3ivMESA) - GL_STUB(glWindowPos3sMESA, _gloffset_WindowPos3sMESA) - GL_STUB(glWindowPos3svMESA, _gloffset_WindowPos3svMESA) - GL_STUB(glWindowPos4dMESA, _gloffset_WindowPos4dMESA) - GL_STUB(glWindowPos4dvMESA, _gloffset_WindowPos4dvMESA) - GL_STUB(glWindowPos4fMESA, _gloffset_WindowPos4fMESA) - GL_STUB(glWindowPos4fvMESA, _gloffset_WindowPos4fvMESA) - GL_STUB(glWindowPos4iMESA, _gloffset_WindowPos4iMESA) - GL_STUB(glWindowPos4ivMESA, _gloffset_WindowPos4ivMESA) - GL_STUB(glWindowPos4sMESA, _gloffset_WindowPos4sMESA) - GL_STUB(glWindowPos4svMESA, _gloffset_WindowPos4svMESA) - GL_STUB(gl_dispatch_stub_674, _gloffset_MultiModeDrawArraysIBM) - HIDDEN(gl_dispatch_stub_674) - GL_STUB(gl_dispatch_stub_675, _gloffset_MultiModeDrawElementsIBM) - HIDDEN(gl_dispatch_stub_675) - GL_STUB(gl_dispatch_stub_676, _gloffset_DeleteFencesNV) - HIDDEN(gl_dispatch_stub_676) - GL_STUB(gl_dispatch_stub_677, _gloffset_FinishFenceNV) - HIDDEN(gl_dispatch_stub_677) - GL_STUB(gl_dispatch_stub_678, _gloffset_GenFencesNV) - HIDDEN(gl_dispatch_stub_678) - GL_STUB(gl_dispatch_stub_679, _gloffset_GetFenceivNV) - HIDDEN(gl_dispatch_stub_679) - GL_STUB(gl_dispatch_stub_680, _gloffset_IsFenceNV) - HIDDEN(gl_dispatch_stub_680) - GL_STUB(gl_dispatch_stub_681, _gloffset_SetFenceNV) - HIDDEN(gl_dispatch_stub_681) - GL_STUB(gl_dispatch_stub_682, _gloffset_TestFenceNV) - HIDDEN(gl_dispatch_stub_682) - GL_STUB(glAreProgramsResidentNV, _gloffset_AreProgramsResidentNV) - GL_STUB(glBindProgramNV, _gloffset_BindProgramNV) - GL_STUB(glDeleteProgramsNV, _gloffset_DeleteProgramsNV) - GL_STUB(glExecuteProgramNV, _gloffset_ExecuteProgramNV) - GL_STUB(glGenProgramsNV, _gloffset_GenProgramsNV) - GL_STUB(glGetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV) - GL_STUB(glGetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV) - GL_STUB(glGetProgramStringNV, _gloffset_GetProgramStringNV) - GL_STUB(glGetProgramivNV, _gloffset_GetProgramivNV) - GL_STUB(glGetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV) - GL_STUB(glGetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV) - GL_STUB(glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV) - GL_STUB(glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV) - GL_STUB(glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV) - GL_STUB(glIsProgramNV, _gloffset_IsProgramNV) - GL_STUB(glLoadProgramNV, _gloffset_LoadProgramNV) - GL_STUB(glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV) - GL_STUB(glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV) - GL_STUB(glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV) - GL_STUB(glTrackMatrixNV, _gloffset_TrackMatrixNV) - GL_STUB(glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV) - GL_STUB(glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV) - GL_STUB(glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV) - GL_STUB(glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV) - GL_STUB(glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV) - GL_STUB(glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV) - GL_STUB(glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV) - GL_STUB(glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV) - GL_STUB(glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV) - GL_STUB(glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV) - GL_STUB(glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV) - GL_STUB(glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV) - GL_STUB(glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV) - GL_STUB(glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV) - GL_STUB(glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV) - GL_STUB(glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV) - GL_STUB(glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV) - GL_STUB(glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV) - GL_STUB(glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV) - GL_STUB(glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV) - GL_STUB(glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV) - GL_STUB(glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV) - GL_STUB(glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV) - GL_STUB(glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV) - GL_STUB(glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV) - GL_STUB(glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV) - GL_STUB(glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV) - GL_STUB(glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV) - GL_STUB(glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV) - GL_STUB(glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV) - GL_STUB(glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV) - GL_STUB(glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV) - GL_STUB(glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV) - GL_STUB(glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV) - GL_STUB(glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV) - GL_STUB(glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV) - GL_STUB(glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV) - GL_STUB(glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV) - GL_STUB(glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV) - GL_STUB(glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV) - GL_STUB(glGetTexBumpParameterfvATI, _gloffset_GetTexBumpParameterfvATI) - GL_STUB(glGetTexBumpParameterivATI, _gloffset_GetTexBumpParameterivATI) - GL_STUB(glTexBumpParameterfvATI, _gloffset_TexBumpParameterfvATI) - GL_STUB(glTexBumpParameterivATI, _gloffset_TexBumpParameterivATI) - GL_STUB(glAlphaFragmentOp1ATI, _gloffset_AlphaFragmentOp1ATI) - GL_STUB(glAlphaFragmentOp2ATI, _gloffset_AlphaFragmentOp2ATI) - GL_STUB(glAlphaFragmentOp3ATI, _gloffset_AlphaFragmentOp3ATI) - GL_STUB(glBeginFragmentShaderATI, _gloffset_BeginFragmentShaderATI) - GL_STUB(glBindFragmentShaderATI, _gloffset_BindFragmentShaderATI) - GL_STUB(glColorFragmentOp1ATI, _gloffset_ColorFragmentOp1ATI) - GL_STUB(glColorFragmentOp2ATI, _gloffset_ColorFragmentOp2ATI) - GL_STUB(glColorFragmentOp3ATI, _gloffset_ColorFragmentOp3ATI) - GL_STUB(glDeleteFragmentShaderATI, _gloffset_DeleteFragmentShaderATI) - GL_STUB(glEndFragmentShaderATI, _gloffset_EndFragmentShaderATI) - GL_STUB(glGenFragmentShadersATI, _gloffset_GenFragmentShadersATI) - GL_STUB(glPassTexCoordATI, _gloffset_PassTexCoordATI) - GL_STUB(glSampleMapATI, _gloffset_SampleMapATI) - GL_STUB(glSetFragmentShaderConstantATI, _gloffset_SetFragmentShaderConstantATI) - GL_STUB(glPointParameteriNV, _gloffset_PointParameteriNV) - GL_STUB(glPointParameterivNV, _gloffset_PointParameterivNV) - GL_STUB(gl_dispatch_stub_763, _gloffset_ActiveStencilFaceEXT) - HIDDEN(gl_dispatch_stub_763) - GL_STUB(gl_dispatch_stub_764, _gloffset_BindVertexArrayAPPLE) - HIDDEN(gl_dispatch_stub_764) - GL_STUB(gl_dispatch_stub_765, _gloffset_DeleteVertexArraysAPPLE) - HIDDEN(gl_dispatch_stub_765) - GL_STUB(gl_dispatch_stub_766, _gloffset_GenVertexArraysAPPLE) - HIDDEN(gl_dispatch_stub_766) - GL_STUB(gl_dispatch_stub_767, _gloffset_IsVertexArrayAPPLE) - HIDDEN(gl_dispatch_stub_767) - GL_STUB(glGetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV) - GL_STUB(glGetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV) - GL_STUB(glProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV) - GL_STUB(glProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV) - GL_STUB(glProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV) - GL_STUB(glProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV) - GL_STUB(glPrimitiveRestartIndexNV, _gloffset_PrimitiveRestartIndexNV) - GL_STUB(glPrimitiveRestartNV, _gloffset_PrimitiveRestartNV) - GL_STUB(gl_dispatch_stub_776, _gloffset_DepthBoundsEXT) + GL_STUB(glNewList, 0) + GL_STUB(glEndList, 1) + GL_STUB(glCallList, 2) + GL_STUB(glCallLists, 3) + GL_STUB(glDeleteLists, 4) + GL_STUB(glGenLists, 5) + GL_STUB(glListBase, 6) + GL_STUB(glBegin, 7) + GL_STUB(glBitmap, 8) + GL_STUB(glColor3b, 9) + GL_STUB(glColor3bv, 10) + GL_STUB(glColor3d, 11) + GL_STUB(glColor3dv, 12) + GL_STUB(glColor3f, 13) + GL_STUB(glColor3fv, 14) + GL_STUB(glColor3i, 15) + GL_STUB(glColor3iv, 16) + GL_STUB(glColor3s, 17) + GL_STUB(glColor3sv, 18) + GL_STUB(glColor3ub, 19) + GL_STUB(glColor3ubv, 20) + GL_STUB(glColor3ui, 21) + GL_STUB(glColor3uiv, 22) + GL_STUB(glColor3us, 23) + GL_STUB(glColor3usv, 24) + GL_STUB(glColor4b, 25) + GL_STUB(glColor4bv, 26) + GL_STUB(glColor4d, 27) + GL_STUB(glColor4dv, 28) + GL_STUB(glColor4f, 29) + GL_STUB(glColor4fv, 30) + GL_STUB(glColor4i, 31) + GL_STUB(glColor4iv, 32) + GL_STUB(glColor4s, 33) + GL_STUB(glColor4sv, 34) + GL_STUB(glColor4ub, 35) + GL_STUB(glColor4ubv, 36) + GL_STUB(glColor4ui, 37) + GL_STUB(glColor4uiv, 38) + GL_STUB(glColor4us, 39) + GL_STUB(glColor4usv, 40) + GL_STUB(glEdgeFlag, 41) + GL_STUB(glEdgeFlagv, 42) + GL_STUB(glEnd, 43) + GL_STUB(glIndexd, 44) + GL_STUB(glIndexdv, 45) + GL_STUB(glIndexf, 46) + GL_STUB(glIndexfv, 47) + GL_STUB(glIndexi, 48) + GL_STUB(glIndexiv, 49) + GL_STUB(glIndexs, 50) + GL_STUB(glIndexsv, 51) + GL_STUB(glNormal3b, 52) + GL_STUB(glNormal3bv, 53) + GL_STUB(glNormal3d, 54) + GL_STUB(glNormal3dv, 55) + GL_STUB(glNormal3f, 56) + GL_STUB(glNormal3fv, 57) + GL_STUB(glNormal3i, 58) + GL_STUB(glNormal3iv, 59) + GL_STUB(glNormal3s, 60) + GL_STUB(glNormal3sv, 61) + GL_STUB(glRasterPos2d, 62) + GL_STUB(glRasterPos2dv, 63) + GL_STUB(glRasterPos2f, 64) + GL_STUB(glRasterPos2fv, 65) + GL_STUB(glRasterPos2i, 66) + GL_STUB(glRasterPos2iv, 67) + GL_STUB(glRasterPos2s, 68) + GL_STUB(glRasterPos2sv, 69) + GL_STUB(glRasterPos3d, 70) + GL_STUB(glRasterPos3dv, 71) + GL_STUB(glRasterPos3f, 72) + GL_STUB(glRasterPos3fv, 73) + GL_STUB(glRasterPos3i, 74) + GL_STUB(glRasterPos3iv, 75) + GL_STUB(glRasterPos3s, 76) + GL_STUB(glRasterPos3sv, 77) + GL_STUB(glRasterPos4d, 78) + GL_STUB(glRasterPos4dv, 79) + GL_STUB(glRasterPos4f, 80) + GL_STUB(glRasterPos4fv, 81) + GL_STUB(glRasterPos4i, 82) + GL_STUB(glRasterPos4iv, 83) + GL_STUB(glRasterPos4s, 84) + GL_STUB(glRasterPos4sv, 85) + GL_STUB(glRectd, 86) + GL_STUB(glRectdv, 87) + GL_STUB(glRectf, 88) + GL_STUB(glRectfv, 89) + GL_STUB(glRecti, 90) + GL_STUB(glRectiv, 91) + GL_STUB(glRects, 92) + GL_STUB(glRectsv, 93) + GL_STUB(glTexCoord1d, 94) + GL_STUB(glTexCoord1dv, 95) + GL_STUB(glTexCoord1f, 96) + GL_STUB(glTexCoord1fv, 97) + GL_STUB(glTexCoord1i, 98) + GL_STUB(glTexCoord1iv, 99) + GL_STUB(glTexCoord1s, 100) + GL_STUB(glTexCoord1sv, 101) + GL_STUB(glTexCoord2d, 102) + GL_STUB(glTexCoord2dv, 103) + GL_STUB(glTexCoord2f, 104) + GL_STUB(glTexCoord2fv, 105) + GL_STUB(glTexCoord2i, 106) + GL_STUB(glTexCoord2iv, 107) + GL_STUB(glTexCoord2s, 108) + GL_STUB(glTexCoord2sv, 109) + GL_STUB(glTexCoord3d, 110) + GL_STUB(glTexCoord3dv, 111) + GL_STUB(glTexCoord3f, 112) + GL_STUB(glTexCoord3fv, 113) + GL_STUB(glTexCoord3i, 114) + GL_STUB(glTexCoord3iv, 115) + GL_STUB(glTexCoord3s, 116) + GL_STUB(glTexCoord3sv, 117) + GL_STUB(glTexCoord4d, 118) + GL_STUB(glTexCoord4dv, 119) + GL_STUB(glTexCoord4f, 120) + GL_STUB(glTexCoord4fv, 121) + GL_STUB(glTexCoord4i, 122) + GL_STUB(glTexCoord4iv, 123) + GL_STUB(glTexCoord4s, 124) + GL_STUB(glTexCoord4sv, 125) + GL_STUB(glVertex2d, 126) + GL_STUB(glVertex2dv, 127) + GL_STUB(glVertex2f, 128) + GL_STUB(glVertex2fv, 129) + GL_STUB(glVertex2i, 130) + GL_STUB(glVertex2iv, 131) + GL_STUB(glVertex2s, 132) + GL_STUB(glVertex2sv, 133) + GL_STUB(glVertex3d, 134) + GL_STUB(glVertex3dv, 135) + GL_STUB(glVertex3f, 136) + GL_STUB(glVertex3fv, 137) + GL_STUB(glVertex3i, 138) + GL_STUB(glVertex3iv, 139) + GL_STUB(glVertex3s, 140) + GL_STUB(glVertex3sv, 141) + GL_STUB(glVertex4d, 142) + GL_STUB(glVertex4dv, 143) + GL_STUB(glVertex4f, 144) + GL_STUB(glVertex4fv, 145) + GL_STUB(glVertex4i, 146) + GL_STUB(glVertex4iv, 147) + GL_STUB(glVertex4s, 148) + GL_STUB(glVertex4sv, 149) + GL_STUB(glClipPlane, 150) + GL_STUB(glColorMaterial, 151) + GL_STUB(glCullFace, 152) + GL_STUB(glFogf, 153) + GL_STUB(glFogfv, 154) + GL_STUB(glFogi, 155) + GL_STUB(glFogiv, 156) + GL_STUB(glFrontFace, 157) + GL_STUB(glHint, 158) + GL_STUB(glLightf, 159) + GL_STUB(glLightfv, 160) + GL_STUB(glLighti, 161) + GL_STUB(glLightiv, 162) + GL_STUB(glLightModelf, 163) + GL_STUB(glLightModelfv, 164) + GL_STUB(glLightModeli, 165) + GL_STUB(glLightModeliv, 166) + GL_STUB(glLineStipple, 167) + GL_STUB(glLineWidth, 168) + GL_STUB(glMaterialf, 169) + GL_STUB(glMaterialfv, 170) + GL_STUB(glMateriali, 171) + GL_STUB(glMaterialiv, 172) + GL_STUB(glPointSize, 173) + GL_STUB(glPolygonMode, 174) + GL_STUB(glPolygonStipple, 175) + GL_STUB(glScissor, 176) + GL_STUB(glShadeModel, 177) + GL_STUB(glTexParameterf, 178) + GL_STUB(glTexParameterfv, 179) + GL_STUB(glTexParameteri, 180) + GL_STUB(glTexParameteriv, 181) + GL_STUB(glTexImage1D, 182) + GL_STUB(glTexImage2D, 183) + GL_STUB(glTexEnvf, 184) + GL_STUB(glTexEnvfv, 185) + GL_STUB(glTexEnvi, 186) + GL_STUB(glTexEnviv, 187) + GL_STUB(glTexGend, 188) + GL_STUB(glTexGendv, 189) + GL_STUB(glTexGenf, 190) + GL_STUB(glTexGenfv, 191) + GL_STUB(glTexGeni, 192) + GL_STUB(glTexGeniv, 193) + GL_STUB(glFeedbackBuffer, 194) + GL_STUB(glSelectBuffer, 195) + GL_STUB(glRenderMode, 196) + GL_STUB(glInitNames, 197) + GL_STUB(glLoadName, 198) + GL_STUB(glPassThrough, 199) + GL_STUB(glPopName, 200) + GL_STUB(glPushName, 201) + GL_STUB(glDrawBuffer, 202) + GL_STUB(glClear, 203) + GL_STUB(glClearAccum, 204) + GL_STUB(glClearIndex, 205) + GL_STUB(glClearColor, 206) + GL_STUB(glClearStencil, 207) + GL_STUB(glClearDepth, 208) + GL_STUB(glStencilMask, 209) + GL_STUB(glColorMask, 210) + GL_STUB(glDepthMask, 211) + GL_STUB(glIndexMask, 212) + GL_STUB(glAccum, 213) + GL_STUB(glDisable, 214) + GL_STUB(glEnable, 215) + GL_STUB(glFinish, 216) + GL_STUB(glFlush, 217) + GL_STUB(glPopAttrib, 218) + GL_STUB(glPushAttrib, 219) + GL_STUB(glMap1d, 220) + GL_STUB(glMap1f, 221) + GL_STUB(glMap2d, 222) + GL_STUB(glMap2f, 223) + GL_STUB(glMapGrid1d, 224) + GL_STUB(glMapGrid1f, 225) + GL_STUB(glMapGrid2d, 226) + GL_STUB(glMapGrid2f, 227) + GL_STUB(glEvalCoord1d, 228) + GL_STUB(glEvalCoord1dv, 229) + GL_STUB(glEvalCoord1f, 230) + GL_STUB(glEvalCoord1fv, 231) + GL_STUB(glEvalCoord2d, 232) + GL_STUB(glEvalCoord2dv, 233) + GL_STUB(glEvalCoord2f, 234) + GL_STUB(glEvalCoord2fv, 235) + GL_STUB(glEvalMesh1, 236) + GL_STUB(glEvalPoint1, 237) + GL_STUB(glEvalMesh2, 238) + GL_STUB(glEvalPoint2, 239) + GL_STUB(glAlphaFunc, 240) + GL_STUB(glBlendFunc, 241) + GL_STUB(glLogicOp, 242) + GL_STUB(glStencilFunc, 243) + GL_STUB(glStencilOp, 244) + GL_STUB(glDepthFunc, 245) + GL_STUB(glPixelZoom, 246) + GL_STUB(glPixelTransferf, 247) + GL_STUB(glPixelTransferi, 248) + GL_STUB(glPixelStoref, 249) + GL_STUB(glPixelStorei, 250) + GL_STUB(glPixelMapfv, 251) + GL_STUB(glPixelMapuiv, 252) + GL_STUB(glPixelMapusv, 253) + GL_STUB(glReadBuffer, 254) + GL_STUB(glCopyPixels, 255) + GL_STUB(glReadPixels, 256) + GL_STUB(glDrawPixels, 257) + GL_STUB(glGetBooleanv, 258) + GL_STUB(glGetClipPlane, 259) + GL_STUB(glGetDoublev, 260) + GL_STUB(glGetError, 261) + GL_STUB(glGetFloatv, 262) + GL_STUB(glGetIntegerv, 263) + GL_STUB(glGetLightfv, 264) + GL_STUB(glGetLightiv, 265) + GL_STUB(glGetMapdv, 266) + GL_STUB(glGetMapfv, 267) + GL_STUB(glGetMapiv, 268) + GL_STUB(glGetMaterialfv, 269) + GL_STUB(glGetMaterialiv, 270) + GL_STUB(glGetPixelMapfv, 271) + GL_STUB(glGetPixelMapuiv, 272) + GL_STUB(glGetPixelMapusv, 273) + GL_STUB(glGetPolygonStipple, 274) + GL_STUB(glGetString, 275) + GL_STUB(glGetTexEnvfv, 276) + GL_STUB(glGetTexEnviv, 277) + GL_STUB(glGetTexGendv, 278) + GL_STUB(glGetTexGenfv, 279) + GL_STUB(glGetTexGeniv, 280) + GL_STUB(glGetTexImage, 281) + GL_STUB(glGetTexParameterfv, 282) + GL_STUB(glGetTexParameteriv, 283) + GL_STUB(glGetTexLevelParameterfv, 284) + GL_STUB(glGetTexLevelParameteriv, 285) + GL_STUB(glIsEnabled, 286) + GL_STUB(glIsList, 287) + GL_STUB(glDepthRange, 288) + GL_STUB(glFrustum, 289) + GL_STUB(glLoadIdentity, 290) + GL_STUB(glLoadMatrixf, 291) + GL_STUB(glLoadMatrixd, 292) + GL_STUB(glMatrixMode, 293) + GL_STUB(glMultMatrixf, 294) + GL_STUB(glMultMatrixd, 295) + GL_STUB(glOrtho, 296) + GL_STUB(glPopMatrix, 297) + GL_STUB(glPushMatrix, 298) + GL_STUB(glRotated, 299) + GL_STUB(glRotatef, 300) + GL_STUB(glScaled, 301) + GL_STUB(glScalef, 302) + GL_STUB(glTranslated, 303) + GL_STUB(glTranslatef, 304) + GL_STUB(glViewport, 305) + GL_STUB(glArrayElement, 306) + GL_STUB(glBindTexture, 307) + GL_STUB(glColorPointer, 308) + GL_STUB(glDisableClientState, 309) + GL_STUB(glDrawArrays, 310) + GL_STUB(glDrawElements, 311) + GL_STUB(glEdgeFlagPointer, 312) + GL_STUB(glEnableClientState, 313) + GL_STUB(glIndexPointer, 314) + GL_STUB(glIndexub, 315) + GL_STUB(glIndexubv, 316) + GL_STUB(glInterleavedArrays, 317) + GL_STUB(glNormalPointer, 318) + GL_STUB(glPolygonOffset, 319) + GL_STUB(glTexCoordPointer, 320) + GL_STUB(glVertexPointer, 321) + GL_STUB(glAreTexturesResident, 322) + GL_STUB(glCopyTexImage1D, 323) + GL_STUB(glCopyTexImage2D, 324) + GL_STUB(glCopyTexSubImage1D, 325) + GL_STUB(glCopyTexSubImage2D, 326) + GL_STUB(glDeleteTextures, 327) + GL_STUB(glGenTextures, 328) + GL_STUB(glGetPointerv, 329) + GL_STUB(glIsTexture, 330) + GL_STUB(glPrioritizeTextures, 331) + GL_STUB(glTexSubImage1D, 332) + GL_STUB(glTexSubImage2D, 333) + GL_STUB(glPopClientAttrib, 334) + GL_STUB(glPushClientAttrib, 335) + GL_STUB(glBlendColor, 336) + GL_STUB(glBlendEquation, 337) + GL_STUB(glDrawRangeElements, 338) + GL_STUB(glColorTable, 339) + GL_STUB(glColorTableParameterfv, 340) + GL_STUB(glColorTableParameteriv, 341) + GL_STUB(glCopyColorTable, 342) + GL_STUB(glGetColorTable, 343) + GL_STUB(glGetColorTableParameterfv, 344) + GL_STUB(glGetColorTableParameteriv, 345) + GL_STUB(glColorSubTable, 346) + GL_STUB(glCopyColorSubTable, 347) + GL_STUB(glConvolutionFilter1D, 348) + GL_STUB(glConvolutionFilter2D, 349) + GL_STUB(glConvolutionParameterf, 350) + GL_STUB(glConvolutionParameterfv, 351) + GL_STUB(glConvolutionParameteri, 352) + GL_STUB(glConvolutionParameteriv, 353) + GL_STUB(glCopyConvolutionFilter1D, 354) + GL_STUB(glCopyConvolutionFilter2D, 355) + GL_STUB(glGetConvolutionFilter, 356) + GL_STUB(glGetConvolutionParameterfv, 357) + GL_STUB(glGetConvolutionParameteriv, 358) + GL_STUB(glGetSeparableFilter, 359) + GL_STUB(glSeparableFilter2D, 360) + GL_STUB(glGetHistogram, 361) + GL_STUB(glGetHistogramParameterfv, 362) + GL_STUB(glGetHistogramParameteriv, 363) + GL_STUB(glGetMinmax, 364) + GL_STUB(glGetMinmaxParameterfv, 365) + GL_STUB(glGetMinmaxParameteriv, 366) + GL_STUB(glHistogram, 367) + GL_STUB(glMinmax, 368) + GL_STUB(glResetHistogram, 369) + GL_STUB(glResetMinmax, 370) + GL_STUB(glTexImage3D, 371) + GL_STUB(glTexSubImage3D, 372) + GL_STUB(glCopyTexSubImage3D, 373) + GL_STUB(glActiveTextureARB, 374) + GL_STUB(glClientActiveTextureARB, 375) + GL_STUB(glMultiTexCoord1dARB, 376) + GL_STUB(glMultiTexCoord1dvARB, 377) + GL_STUB(glMultiTexCoord1fARB, 378) + GL_STUB(glMultiTexCoord1fvARB, 379) + GL_STUB(glMultiTexCoord1iARB, 380) + GL_STUB(glMultiTexCoord1ivARB, 381) + GL_STUB(glMultiTexCoord1sARB, 382) + GL_STUB(glMultiTexCoord1svARB, 383) + GL_STUB(glMultiTexCoord2dARB, 384) + GL_STUB(glMultiTexCoord2dvARB, 385) + GL_STUB(glMultiTexCoord2fARB, 386) + GL_STUB(glMultiTexCoord2fvARB, 387) + GL_STUB(glMultiTexCoord2iARB, 388) + GL_STUB(glMultiTexCoord2ivARB, 389) + GL_STUB(glMultiTexCoord2sARB, 390) + GL_STUB(glMultiTexCoord2svARB, 391) + GL_STUB(glMultiTexCoord3dARB, 392) + GL_STUB(glMultiTexCoord3dvARB, 393) + GL_STUB(glMultiTexCoord3fARB, 394) + GL_STUB(glMultiTexCoord3fvARB, 395) + GL_STUB(glMultiTexCoord3iARB, 396) + GL_STUB(glMultiTexCoord3ivARB, 397) + GL_STUB(glMultiTexCoord3sARB, 398) + GL_STUB(glMultiTexCoord3svARB, 399) + GL_STUB(glMultiTexCoord4dARB, 400) + GL_STUB(glMultiTexCoord4dvARB, 401) + GL_STUB(glMultiTexCoord4fARB, 402) + GL_STUB(glMultiTexCoord4fvARB, 403) + GL_STUB(glMultiTexCoord4iARB, 404) + GL_STUB(glMultiTexCoord4ivARB, 405) + GL_STUB(glMultiTexCoord4sARB, 406) + GL_STUB(glMultiTexCoord4svARB, 407) + GL_STUB(glAttachShader, 408) + GL_STUB(glCreateProgram, 409) + GL_STUB(glCreateShader, 410) + GL_STUB(glDeleteProgram, 411) + GL_STUB(glDeleteShader, 412) + GL_STUB(glDetachShader, 413) + GL_STUB(glGetAttachedShaders, 414) + GL_STUB(glGetProgramInfoLog, 415) + GL_STUB(glGetProgramiv, 416) + GL_STUB(glGetShaderInfoLog, 417) + GL_STUB(glGetShaderiv, 418) + GL_STUB(glIsProgram, 419) + GL_STUB(glIsShader, 420) + GL_STUB(glStencilFuncSeparate, 421) + GL_STUB(glStencilMaskSeparate, 422) + GL_STUB(glStencilOpSeparate, 423) + GL_STUB(glUniformMatrix2x3fv, 424) + GL_STUB(glUniformMatrix2x4fv, 425) + GL_STUB(glUniformMatrix3x2fv, 426) + GL_STUB(glUniformMatrix3x4fv, 427) + GL_STUB(glUniformMatrix4x2fv, 428) + GL_STUB(glUniformMatrix4x3fv, 429) + GL_STUB(glClampColor, 430) + GL_STUB(glClearBufferfi, 431) + GL_STUB(glClearBufferfv, 432) + GL_STUB(glClearBufferiv, 433) + GL_STUB(glClearBufferuiv, 434) + GL_STUB(glGetStringi, 435) + GL_STUB(glTexBuffer, 436) + GL_STUB(glFramebufferTexture, 437) + GL_STUB(glGetBufferParameteri64v, 438) + GL_STUB(glGetInteger64i_v, 439) + GL_STUB(glVertexAttribDivisor, 440) + GL_STUB(glLoadTransposeMatrixdARB, 441) + GL_STUB(glLoadTransposeMatrixfARB, 442) + GL_STUB(glMultTransposeMatrixdARB, 443) + GL_STUB(glMultTransposeMatrixfARB, 444) + GL_STUB(glSampleCoverageARB, 445) + GL_STUB(glCompressedTexImage1DARB, 446) + GL_STUB(glCompressedTexImage2DARB, 447) + GL_STUB(glCompressedTexImage3DARB, 448) + GL_STUB(glCompressedTexSubImage1DARB, 449) + GL_STUB(glCompressedTexSubImage2DARB, 450) + GL_STUB(glCompressedTexSubImage3DARB, 451) + GL_STUB(glGetCompressedTexImageARB, 452) + GL_STUB(glDisableVertexAttribArrayARB, 453) + GL_STUB(glEnableVertexAttribArrayARB, 454) + GL_STUB(glGetProgramEnvParameterdvARB, 455) + GL_STUB(glGetProgramEnvParameterfvARB, 456) + GL_STUB(glGetProgramLocalParameterdvARB, 457) + GL_STUB(glGetProgramLocalParameterfvARB, 458) + GL_STUB(glGetProgramStringARB, 459) + GL_STUB(glGetProgramivARB, 460) + GL_STUB(glGetVertexAttribdvARB, 461) + GL_STUB(glGetVertexAttribfvARB, 462) + GL_STUB(glGetVertexAttribivARB, 463) + GL_STUB(glProgramEnvParameter4dARB, 464) + GL_STUB(glProgramEnvParameter4dvARB, 465) + GL_STUB(glProgramEnvParameter4fARB, 466) + GL_STUB(glProgramEnvParameter4fvARB, 467) + GL_STUB(glProgramLocalParameter4dARB, 468) + GL_STUB(glProgramLocalParameter4dvARB, 469) + GL_STUB(glProgramLocalParameter4fARB, 470) + GL_STUB(glProgramLocalParameter4fvARB, 471) + GL_STUB(glProgramStringARB, 472) + GL_STUB(glVertexAttrib1dARB, 473) + GL_STUB(glVertexAttrib1dvARB, 474) + GL_STUB(glVertexAttrib1fARB, 475) + GL_STUB(glVertexAttrib1fvARB, 476) + GL_STUB(glVertexAttrib1sARB, 477) + GL_STUB(glVertexAttrib1svARB, 478) + GL_STUB(glVertexAttrib2dARB, 479) + GL_STUB(glVertexAttrib2dvARB, 480) + GL_STUB(glVertexAttrib2fARB, 481) + GL_STUB(glVertexAttrib2fvARB, 482) + GL_STUB(glVertexAttrib2sARB, 483) + GL_STUB(glVertexAttrib2svARB, 484) + GL_STUB(glVertexAttrib3dARB, 485) + GL_STUB(glVertexAttrib3dvARB, 486) + GL_STUB(glVertexAttrib3fARB, 487) + GL_STUB(glVertexAttrib3fvARB, 488) + GL_STUB(glVertexAttrib3sARB, 489) + GL_STUB(glVertexAttrib3svARB, 490) + GL_STUB(glVertexAttrib4NbvARB, 491) + GL_STUB(glVertexAttrib4NivARB, 492) + GL_STUB(glVertexAttrib4NsvARB, 493) + GL_STUB(glVertexAttrib4NubARB, 494) + GL_STUB(glVertexAttrib4NubvARB, 495) + GL_STUB(glVertexAttrib4NuivARB, 496) + GL_STUB(glVertexAttrib4NusvARB, 497) + GL_STUB(glVertexAttrib4bvARB, 498) + GL_STUB(glVertexAttrib4dARB, 499) + GL_STUB(glVertexAttrib4dvARB, 500) + GL_STUB(glVertexAttrib4fARB, 501) + GL_STUB(glVertexAttrib4fvARB, 502) + GL_STUB(glVertexAttrib4ivARB, 503) + GL_STUB(glVertexAttrib4sARB, 504) + GL_STUB(glVertexAttrib4svARB, 505) + GL_STUB(glVertexAttrib4ubvARB, 506) + GL_STUB(glVertexAttrib4uivARB, 507) + GL_STUB(glVertexAttrib4usvARB, 508) + GL_STUB(glVertexAttribPointerARB, 509) + GL_STUB(glBindBufferARB, 510) + GL_STUB(glBufferDataARB, 511) + GL_STUB(glBufferSubDataARB, 512) + GL_STUB(glDeleteBuffersARB, 513) + GL_STUB(glGenBuffersARB, 514) + GL_STUB(glGetBufferParameterivARB, 515) + GL_STUB(glGetBufferPointervARB, 516) + GL_STUB(glGetBufferSubDataARB, 517) + GL_STUB(glIsBufferARB, 518) + GL_STUB(glMapBufferARB, 519) + GL_STUB(glUnmapBufferARB, 520) + GL_STUB(glBeginQueryARB, 521) + GL_STUB(glDeleteQueriesARB, 522) + GL_STUB(glEndQueryARB, 523) + GL_STUB(glGenQueriesARB, 524) + GL_STUB(glGetQueryObjectivARB, 525) + GL_STUB(glGetQueryObjectuivARB, 526) + GL_STUB(glGetQueryivARB, 527) + GL_STUB(glIsQueryARB, 528) + GL_STUB(glAttachObjectARB, 529) + GL_STUB(glCompileShaderARB, 530) + GL_STUB(glCreateProgramObjectARB, 531) + GL_STUB(glCreateShaderObjectARB, 532) + GL_STUB(glDeleteObjectARB, 533) + GL_STUB(glDetachObjectARB, 534) + GL_STUB(glGetActiveUniformARB, 535) + GL_STUB(glGetAttachedObjectsARB, 536) + GL_STUB(glGetHandleARB, 537) + GL_STUB(glGetInfoLogARB, 538) + GL_STUB(glGetObjectParameterfvARB, 539) + GL_STUB(glGetObjectParameterivARB, 540) + GL_STUB(glGetShaderSourceARB, 541) + GL_STUB(glGetUniformLocationARB, 542) + GL_STUB(glGetUniformfvARB, 543) + GL_STUB(glGetUniformivARB, 544) + GL_STUB(glLinkProgramARB, 545) + GL_STUB(glShaderSourceARB, 546) + GL_STUB(glUniform1fARB, 547) + GL_STUB(glUniform1fvARB, 548) + GL_STUB(glUniform1iARB, 549) + GL_STUB(glUniform1ivARB, 550) + GL_STUB(glUniform2fARB, 551) + GL_STUB(glUniform2fvARB, 552) + GL_STUB(glUniform2iARB, 553) + GL_STUB(glUniform2ivARB, 554) + GL_STUB(glUniform3fARB, 555) + GL_STUB(glUniform3fvARB, 556) + GL_STUB(glUniform3iARB, 557) + GL_STUB(glUniform3ivARB, 558) + GL_STUB(glUniform4fARB, 559) + GL_STUB(glUniform4fvARB, 560) + GL_STUB(glUniform4iARB, 561) + GL_STUB(glUniform4ivARB, 562) + GL_STUB(glUniformMatrix2fvARB, 563) + GL_STUB(glUniformMatrix3fvARB, 564) + GL_STUB(glUniformMatrix4fvARB, 565) + GL_STUB(glUseProgramObjectARB, 566) + GL_STUB(glValidateProgramARB, 567) + GL_STUB(glBindAttribLocationARB, 568) + GL_STUB(glGetActiveAttribARB, 569) + GL_STUB(glGetAttribLocationARB, 570) + GL_STUB(glDrawBuffersARB, 571) + GL_STUB(glDrawArraysInstancedARB, 572) + GL_STUB(glDrawElementsInstancedARB, 573) + GL_STUB(glRenderbufferStorageMultisample, 574) + GL_STUB(glFramebufferTextureARB, 575) + GL_STUB(glFramebufferTextureFaceARB, 576) + GL_STUB(glProgramParameteriARB, 577) + GL_STUB(glFlushMappedBufferRange, 578) + GL_STUB(glMapBufferRange, 579) + GL_STUB(glBindVertexArray, 580) + GL_STUB(glGenVertexArrays, 581) + GL_STUB(glCopyBufferSubData, 582) + GL_STUB(glClientWaitSync, 583) + GL_STUB(glDeleteSync, 584) + GL_STUB(glFenceSync, 585) + GL_STUB(glGetInteger64v, 586) + GL_STUB(glGetSynciv, 587) + GL_STUB(glIsSync, 588) + GL_STUB(glWaitSync, 589) + GL_STUB(glDrawElementsBaseVertex, 590) + GL_STUB(glDrawRangeElementsBaseVertex, 591) + GL_STUB(glMultiDrawElementsBaseVertex, 592) + GL_STUB(glBindTransformFeedback, 593) + GL_STUB(glDeleteTransformFeedbacks, 594) + GL_STUB(glDrawTransformFeedback, 595) + GL_STUB(glGenTransformFeedbacks, 596) + GL_STUB(glIsTransformFeedback, 597) + GL_STUB(glPauseTransformFeedback, 598) + GL_STUB(glResumeTransformFeedback, 599) + GL_STUB(glPolygonOffsetEXT, 600) + GL_STUB(gl_dispatch_stub_601, 601) + HIDDEN(gl_dispatch_stub_601) + GL_STUB(gl_dispatch_stub_602, 602) + HIDDEN(gl_dispatch_stub_602) + GL_STUB(gl_dispatch_stub_603, 603) + HIDDEN(gl_dispatch_stub_603) + GL_STUB(gl_dispatch_stub_604, 604) + HIDDEN(gl_dispatch_stub_604) + GL_STUB(gl_dispatch_stub_605, 605) + HIDDEN(gl_dispatch_stub_605) + GL_STUB(gl_dispatch_stub_606, 606) + HIDDEN(gl_dispatch_stub_606) + GL_STUB(gl_dispatch_stub_607, 607) + HIDDEN(gl_dispatch_stub_607) + GL_STUB(gl_dispatch_stub_608, 608) + HIDDEN(gl_dispatch_stub_608) + GL_STUB(glColorPointerEXT, 609) + GL_STUB(glEdgeFlagPointerEXT, 610) + GL_STUB(glIndexPointerEXT, 611) + GL_STUB(glNormalPointerEXT, 612) + GL_STUB(glTexCoordPointerEXT, 613) + GL_STUB(glVertexPointerEXT, 614) + GL_STUB(glPointParameterfEXT, 615) + GL_STUB(glPointParameterfvEXT, 616) + GL_STUB(glLockArraysEXT, 617) + GL_STUB(glUnlockArraysEXT, 618) + GL_STUB(glSecondaryColor3bEXT, 619) + GL_STUB(glSecondaryColor3bvEXT, 620) + GL_STUB(glSecondaryColor3dEXT, 621) + GL_STUB(glSecondaryColor3dvEXT, 622) + GL_STUB(glSecondaryColor3fEXT, 623) + GL_STUB(glSecondaryColor3fvEXT, 624) + GL_STUB(glSecondaryColor3iEXT, 625) + GL_STUB(glSecondaryColor3ivEXT, 626) + GL_STUB(glSecondaryColor3sEXT, 627) + GL_STUB(glSecondaryColor3svEXT, 628) + GL_STUB(glSecondaryColor3ubEXT, 629) + GL_STUB(glSecondaryColor3ubvEXT, 630) + GL_STUB(glSecondaryColor3uiEXT, 631) + GL_STUB(glSecondaryColor3uivEXT, 632) + GL_STUB(glSecondaryColor3usEXT, 633) + GL_STUB(glSecondaryColor3usvEXT, 634) + GL_STUB(glSecondaryColorPointerEXT, 635) + GL_STUB(glMultiDrawArraysEXT, 636) + GL_STUB(glMultiDrawElementsEXT, 637) + GL_STUB(glFogCoordPointerEXT, 638) + GL_STUB(glFogCoorddEXT, 639) + GL_STUB(glFogCoorddvEXT, 640) + GL_STUB(glFogCoordfEXT, 641) + GL_STUB(glFogCoordfvEXT, 642) + GL_STUB(gl_dispatch_stub_643, 643) + HIDDEN(gl_dispatch_stub_643) + GL_STUB(glBlendFuncSeparateEXT, 644) + GL_STUB(glFlushVertexArrayRangeNV, 645) + GL_STUB(glVertexArrayRangeNV, 646) + GL_STUB(glCombinerInputNV, 647) + GL_STUB(glCombinerOutputNV, 648) + GL_STUB(glCombinerParameterfNV, 649) + GL_STUB(glCombinerParameterfvNV, 650) + GL_STUB(glCombinerParameteriNV, 651) + GL_STUB(glCombinerParameterivNV, 652) + GL_STUB(glFinalCombinerInputNV, 653) + GL_STUB(glGetCombinerInputParameterfvNV, 654) + GL_STUB(glGetCombinerInputParameterivNV, 655) + GL_STUB(glGetCombinerOutputParameterfvNV, 656) + GL_STUB(glGetCombinerOutputParameterivNV, 657) + GL_STUB(glGetFinalCombinerInputParameterfvNV, 658) + GL_STUB(glGetFinalCombinerInputParameterivNV, 659) + GL_STUB(glResizeBuffersMESA, 660) + GL_STUB(glWindowPos2dMESA, 661) + GL_STUB(glWindowPos2dvMESA, 662) + GL_STUB(glWindowPos2fMESA, 663) + GL_STUB(glWindowPos2fvMESA, 664) + GL_STUB(glWindowPos2iMESA, 665) + GL_STUB(glWindowPos2ivMESA, 666) + GL_STUB(glWindowPos2sMESA, 667) + GL_STUB(glWindowPos2svMESA, 668) + GL_STUB(glWindowPos3dMESA, 669) + GL_STUB(glWindowPos3dvMESA, 670) + GL_STUB(glWindowPos3fMESA, 671) + GL_STUB(glWindowPos3fvMESA, 672) + GL_STUB(glWindowPos3iMESA, 673) + GL_STUB(glWindowPos3ivMESA, 674) + GL_STUB(glWindowPos3sMESA, 675) + GL_STUB(glWindowPos3svMESA, 676) + GL_STUB(glWindowPos4dMESA, 677) + GL_STUB(glWindowPos4dvMESA, 678) + GL_STUB(glWindowPos4fMESA, 679) + GL_STUB(glWindowPos4fvMESA, 680) + GL_STUB(glWindowPos4iMESA, 681) + GL_STUB(glWindowPos4ivMESA, 682) + GL_STUB(glWindowPos4sMESA, 683) + GL_STUB(glWindowPos4svMESA, 684) + GL_STUB(gl_dispatch_stub_685, 685) + HIDDEN(gl_dispatch_stub_685) + GL_STUB(gl_dispatch_stub_686, 686) + HIDDEN(gl_dispatch_stub_686) + GL_STUB(gl_dispatch_stub_687, 687) + HIDDEN(gl_dispatch_stub_687) + GL_STUB(gl_dispatch_stub_688, 688) + HIDDEN(gl_dispatch_stub_688) + GL_STUB(gl_dispatch_stub_689, 689) + HIDDEN(gl_dispatch_stub_689) + GL_STUB(gl_dispatch_stub_690, 690) + HIDDEN(gl_dispatch_stub_690) + GL_STUB(gl_dispatch_stub_691, 691) + HIDDEN(gl_dispatch_stub_691) + GL_STUB(gl_dispatch_stub_692, 692) + HIDDEN(gl_dispatch_stub_692) + GL_STUB(gl_dispatch_stub_693, 693) + HIDDEN(gl_dispatch_stub_693) + GL_STUB(glAreProgramsResidentNV, 694) + GL_STUB(glBindProgramNV, 695) + GL_STUB(glDeleteProgramsNV, 696) + GL_STUB(glExecuteProgramNV, 697) + GL_STUB(glGenProgramsNV, 698) + GL_STUB(glGetProgramParameterdvNV, 699) + GL_STUB(glGetProgramParameterfvNV, 700) + GL_STUB(glGetProgramStringNV, 701) + GL_STUB(glGetProgramivNV, 702) + GL_STUB(glGetTrackMatrixivNV, 703) + GL_STUB(glGetVertexAttribPointervNV, 704) + GL_STUB(glGetVertexAttribdvNV, 705) + GL_STUB(glGetVertexAttribfvNV, 706) + GL_STUB(glGetVertexAttribivNV, 707) + GL_STUB(glIsProgramNV, 708) + GL_STUB(glLoadProgramNV, 709) + GL_STUB(glProgramParameters4dvNV, 710) + GL_STUB(glProgramParameters4fvNV, 711) + GL_STUB(glRequestResidentProgramsNV, 712) + GL_STUB(glTrackMatrixNV, 713) + GL_STUB(glVertexAttrib1dNV, 714) + GL_STUB(glVertexAttrib1dvNV, 715) + GL_STUB(glVertexAttrib1fNV, 716) + GL_STUB(glVertexAttrib1fvNV, 717) + GL_STUB(glVertexAttrib1sNV, 718) + GL_STUB(glVertexAttrib1svNV, 719) + GL_STUB(glVertexAttrib2dNV, 720) + GL_STUB(glVertexAttrib2dvNV, 721) + GL_STUB(glVertexAttrib2fNV, 722) + GL_STUB(glVertexAttrib2fvNV, 723) + GL_STUB(glVertexAttrib2sNV, 724) + GL_STUB(glVertexAttrib2svNV, 725) + GL_STUB(glVertexAttrib3dNV, 726) + GL_STUB(glVertexAttrib3dvNV, 727) + GL_STUB(glVertexAttrib3fNV, 728) + GL_STUB(glVertexAttrib3fvNV, 729) + GL_STUB(glVertexAttrib3sNV, 730) + GL_STUB(glVertexAttrib3svNV, 731) + GL_STUB(glVertexAttrib4dNV, 732) + GL_STUB(glVertexAttrib4dvNV, 733) + GL_STUB(glVertexAttrib4fNV, 734) + GL_STUB(glVertexAttrib4fvNV, 735) + GL_STUB(glVertexAttrib4sNV, 736) + GL_STUB(glVertexAttrib4svNV, 737) + GL_STUB(glVertexAttrib4ubNV, 738) + GL_STUB(glVertexAttrib4ubvNV, 739) + GL_STUB(glVertexAttribPointerNV, 740) + GL_STUB(glVertexAttribs1dvNV, 741) + GL_STUB(glVertexAttribs1fvNV, 742) + GL_STUB(glVertexAttribs1svNV, 743) + GL_STUB(glVertexAttribs2dvNV, 744) + GL_STUB(glVertexAttribs2fvNV, 745) + GL_STUB(glVertexAttribs2svNV, 746) + GL_STUB(glVertexAttribs3dvNV, 747) + GL_STUB(glVertexAttribs3fvNV, 748) + GL_STUB(glVertexAttribs3svNV, 749) + GL_STUB(glVertexAttribs4dvNV, 750) + GL_STUB(glVertexAttribs4fvNV, 751) + GL_STUB(glVertexAttribs4svNV, 752) + GL_STUB(glVertexAttribs4ubvNV, 753) + GL_STUB(glGetTexBumpParameterfvATI, 754) + GL_STUB(glGetTexBumpParameterivATI, 755) + GL_STUB(glTexBumpParameterfvATI, 756) + GL_STUB(glTexBumpParameterivATI, 757) + GL_STUB(glAlphaFragmentOp1ATI, 758) + GL_STUB(glAlphaFragmentOp2ATI, 759) + GL_STUB(glAlphaFragmentOp3ATI, 760) + GL_STUB(glBeginFragmentShaderATI, 761) + GL_STUB(glBindFragmentShaderATI, 762) + GL_STUB(glColorFragmentOp1ATI, 763) + GL_STUB(glColorFragmentOp2ATI, 764) + GL_STUB(glColorFragmentOp3ATI, 765) + GL_STUB(glDeleteFragmentShaderATI, 766) + GL_STUB(glEndFragmentShaderATI, 767) + GL_STUB(glGenFragmentShadersATI, 768) + GL_STUB(glPassTexCoordATI, 769) + GL_STUB(glSampleMapATI, 770) + GL_STUB(glSetFragmentShaderConstantATI, 771) + GL_STUB(glPointParameteriNV, 772) + GL_STUB(glPointParameterivNV, 773) + GL_STUB(gl_dispatch_stub_774, 774) + HIDDEN(gl_dispatch_stub_774) + GL_STUB(gl_dispatch_stub_775, 775) + HIDDEN(gl_dispatch_stub_775) + GL_STUB(gl_dispatch_stub_776, 776) HIDDEN(gl_dispatch_stub_776) - GL_STUB(gl_dispatch_stub_777, _gloffset_BlendEquationSeparateEXT) + GL_STUB(gl_dispatch_stub_777, 777) HIDDEN(gl_dispatch_stub_777) - GL_STUB(glBindFramebufferEXT, _gloffset_BindFramebufferEXT) - GL_STUB(glBindRenderbufferEXT, _gloffset_BindRenderbufferEXT) - GL_STUB(glCheckFramebufferStatusEXT, _gloffset_CheckFramebufferStatusEXT) - GL_STUB(glDeleteFramebuffersEXT, _gloffset_DeleteFramebuffersEXT) - GL_STUB(glDeleteRenderbuffersEXT, _gloffset_DeleteRenderbuffersEXT) - GL_STUB(glFramebufferRenderbufferEXT, _gloffset_FramebufferRenderbufferEXT) - GL_STUB(glFramebufferTexture1DEXT, _gloffset_FramebufferTexture1DEXT) - GL_STUB(glFramebufferTexture2DEXT, _gloffset_FramebufferTexture2DEXT) - GL_STUB(glFramebufferTexture3DEXT, _gloffset_FramebufferTexture3DEXT) - GL_STUB(glGenFramebuffersEXT, _gloffset_GenFramebuffersEXT) - GL_STUB(glGenRenderbuffersEXT, _gloffset_GenRenderbuffersEXT) - GL_STUB(glGenerateMipmapEXT, _gloffset_GenerateMipmapEXT) - GL_STUB(glGetFramebufferAttachmentParameterivEXT, _gloffset_GetFramebufferAttachmentParameterivEXT) - GL_STUB(glGetRenderbufferParameterivEXT, _gloffset_GetRenderbufferParameterivEXT) - GL_STUB(glIsFramebufferEXT, _gloffset_IsFramebufferEXT) - GL_STUB(glIsRenderbufferEXT, _gloffset_IsRenderbufferEXT) - GL_STUB(glRenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT) - GL_STUB(gl_dispatch_stub_795, _gloffset_BlitFramebufferEXT) - HIDDEN(gl_dispatch_stub_795) - GL_STUB(gl_dispatch_stub_796, _gloffset_BufferParameteriAPPLE) - HIDDEN(gl_dispatch_stub_796) - GL_STUB(gl_dispatch_stub_797, _gloffset_FlushMappedBufferRangeAPPLE) - HIDDEN(gl_dispatch_stub_797) - GL_STUB(glFramebufferTextureLayerEXT, _gloffset_FramebufferTextureLayerEXT) - GL_STUB(glColorMaskIndexedEXT, _gloffset_ColorMaskIndexedEXT) - GL_STUB(glDisableIndexedEXT, _gloffset_DisableIndexedEXT) - GL_STUB(glEnableIndexedEXT, _gloffset_EnableIndexedEXT) - GL_STUB(glGetBooleanIndexedvEXT, _gloffset_GetBooleanIndexedvEXT) - GL_STUB(glGetIntegerIndexedvEXT, _gloffset_GetIntegerIndexedvEXT) - GL_STUB(glIsEnabledIndexedEXT, _gloffset_IsEnabledIndexedEXT) - GL_STUB(glBeginConditionalRenderNV, _gloffset_BeginConditionalRenderNV) - GL_STUB(glEndConditionalRenderNV, _gloffset_EndConditionalRenderNV) - GL_STUB(glBeginTransformFeedbackEXT, _gloffset_BeginTransformFeedbackEXT) - GL_STUB(glBindBufferBaseEXT, _gloffset_BindBufferBaseEXT) - GL_STUB(glBindBufferOffsetEXT, _gloffset_BindBufferOffsetEXT) - GL_STUB(glBindBufferRangeEXT, _gloffset_BindBufferRangeEXT) - GL_STUB(glEndTransformFeedbackEXT, _gloffset_EndTransformFeedbackEXT) - GL_STUB(glGetTransformFeedbackVaryingEXT, _gloffset_GetTransformFeedbackVaryingEXT) - GL_STUB(glTransformFeedbackVaryingsEXT, _gloffset_TransformFeedbackVaryingsEXT) - GL_STUB(glProvokingVertexEXT, _gloffset_ProvokingVertexEXT) - GL_STUB(gl_dispatch_stub_815, _gloffset_GetTexParameterPointervAPPLE) - HIDDEN(gl_dispatch_stub_815) - GL_STUB(gl_dispatch_stub_816, _gloffset_TextureRangeAPPLE) - HIDDEN(gl_dispatch_stub_816) - GL_STUB(glGetObjectParameterivAPPLE, _gloffset_GetObjectParameterivAPPLE) - GL_STUB(glObjectPurgeableAPPLE, _gloffset_ObjectPurgeableAPPLE) - GL_STUB(glObjectUnpurgeableAPPLE, _gloffset_ObjectUnpurgeableAPPLE) - GL_STUB(gl_dispatch_stub_820, _gloffset_StencilFuncSeparateATI) - HIDDEN(gl_dispatch_stub_820) - GL_STUB(gl_dispatch_stub_821, _gloffset_ProgramEnvParameters4fvEXT) - HIDDEN(gl_dispatch_stub_821) - GL_STUB(gl_dispatch_stub_822, _gloffset_ProgramLocalParameters4fvEXT) - HIDDEN(gl_dispatch_stub_822) - GL_STUB(gl_dispatch_stub_823, _gloffset_GetQueryObjecti64vEXT) - HIDDEN(gl_dispatch_stub_823) - GL_STUB(gl_dispatch_stub_824, _gloffset_GetQueryObjectui64vEXT) - HIDDEN(gl_dispatch_stub_824) - GL_STUB(glEGLImageTargetRenderbufferStorageOES, _gloffset_EGLImageTargetRenderbufferStorageOES) - GL_STUB(glEGLImageTargetTexture2DOES, _gloffset_EGLImageTargetTexture2DOES) + GL_STUB(gl_dispatch_stub_778, 778) + HIDDEN(gl_dispatch_stub_778) + GL_STUB(glGetProgramNamedParameterdvNV, 779) + GL_STUB(glGetProgramNamedParameterfvNV, 780) + GL_STUB(glProgramNamedParameter4dNV, 781) + GL_STUB(glProgramNamedParameter4dvNV, 782) + GL_STUB(glProgramNamedParameter4fNV, 783) + GL_STUB(glProgramNamedParameter4fvNV, 784) + GL_STUB(glPrimitiveRestartIndexNV, 785) + GL_STUB(glPrimitiveRestartNV, 786) + GL_STUB(gl_dispatch_stub_787, 787) + HIDDEN(gl_dispatch_stub_787) + GL_STUB(gl_dispatch_stub_788, 788) + HIDDEN(gl_dispatch_stub_788) + GL_STUB(glBindFramebufferEXT, 789) + GL_STUB(glBindRenderbufferEXT, 790) + GL_STUB(glCheckFramebufferStatusEXT, 791) + GL_STUB(glDeleteFramebuffersEXT, 792) + GL_STUB(glDeleteRenderbuffersEXT, 793) + GL_STUB(glFramebufferRenderbufferEXT, 794) + GL_STUB(glFramebufferTexture1DEXT, 795) + GL_STUB(glFramebufferTexture2DEXT, 796) + GL_STUB(glFramebufferTexture3DEXT, 797) + GL_STUB(glGenFramebuffersEXT, 798) + GL_STUB(glGenRenderbuffersEXT, 799) + GL_STUB(glGenerateMipmapEXT, 800) + GL_STUB(glGetFramebufferAttachmentParameterivEXT, 801) + GL_STUB(glGetRenderbufferParameterivEXT, 802) + GL_STUB(glIsFramebufferEXT, 803) + GL_STUB(glIsRenderbufferEXT, 804) + GL_STUB(glRenderbufferStorageEXT, 805) + GL_STUB(gl_dispatch_stub_806, 806) + HIDDEN(gl_dispatch_stub_806) + GL_STUB(gl_dispatch_stub_807, 807) + HIDDEN(gl_dispatch_stub_807) + GL_STUB(gl_dispatch_stub_808, 808) + HIDDEN(gl_dispatch_stub_808) + GL_STUB(glBindFragDataLocationEXT, 809) + GL_STUB(glGetFragDataLocationEXT, 810) + GL_STUB(glGetUniformuivEXT, 811) + GL_STUB(glGetVertexAttribIivEXT, 812) + GL_STUB(glGetVertexAttribIuivEXT, 813) + GL_STUB(glUniform1uiEXT, 814) + GL_STUB(glUniform1uivEXT, 815) + GL_STUB(glUniform2uiEXT, 816) + GL_STUB(glUniform2uivEXT, 817) + GL_STUB(glUniform3uiEXT, 818) + GL_STUB(glUniform3uivEXT, 819) + GL_STUB(glUniform4uiEXT, 820) + GL_STUB(glUniform4uivEXT, 821) + GL_STUB(glVertexAttribI1iEXT, 822) + GL_STUB(glVertexAttribI1ivEXT, 823) + GL_STUB(glVertexAttribI1uiEXT, 824) + GL_STUB(glVertexAttribI1uivEXT, 825) + GL_STUB(glVertexAttribI2iEXT, 826) + GL_STUB(glVertexAttribI2ivEXT, 827) + GL_STUB(glVertexAttribI2uiEXT, 828) + GL_STUB(glVertexAttribI2uivEXT, 829) + GL_STUB(glVertexAttribI3iEXT, 830) + GL_STUB(glVertexAttribI3ivEXT, 831) + GL_STUB(glVertexAttribI3uiEXT, 832) + GL_STUB(glVertexAttribI3uivEXT, 833) + GL_STUB(glVertexAttribI4bvEXT, 834) + GL_STUB(glVertexAttribI4iEXT, 835) + GL_STUB(glVertexAttribI4ivEXT, 836) + GL_STUB(glVertexAttribI4svEXT, 837) + GL_STUB(glVertexAttribI4ubvEXT, 838) + GL_STUB(glVertexAttribI4uiEXT, 839) + GL_STUB(glVertexAttribI4uivEXT, 840) + GL_STUB(glVertexAttribI4usvEXT, 841) + GL_STUB(glVertexAttribIPointerEXT, 842) + GL_STUB(glFramebufferTextureLayerEXT, 843) + GL_STUB(glColorMaskIndexedEXT, 844) + GL_STUB(glDisableIndexedEXT, 845) + GL_STUB(glEnableIndexedEXT, 846) + GL_STUB(glGetBooleanIndexedvEXT, 847) + GL_STUB(glGetIntegerIndexedvEXT, 848) + GL_STUB(glIsEnabledIndexedEXT, 849) + GL_STUB(glClearColorIiEXT, 850) + GL_STUB(glClearColorIuiEXT, 851) + GL_STUB(glGetTexParameterIivEXT, 852) + GL_STUB(glGetTexParameterIuivEXT, 853) + GL_STUB(glTexParameterIivEXT, 854) + GL_STUB(glTexParameterIuivEXT, 855) + GL_STUB(glBeginConditionalRenderNV, 856) + GL_STUB(glEndConditionalRenderNV, 857) + GL_STUB(glBeginTransformFeedbackEXT, 858) + GL_STUB(glBindBufferBaseEXT, 859) + GL_STUB(glBindBufferOffsetEXT, 860) + GL_STUB(glBindBufferRangeEXT, 861) + GL_STUB(glEndTransformFeedbackEXT, 862) + GL_STUB(glGetTransformFeedbackVaryingEXT, 863) + GL_STUB(glTransformFeedbackVaryingsEXT, 864) + GL_STUB(glProvokingVertexEXT, 865) + GL_STUB(gl_dispatch_stub_866, 866) + HIDDEN(gl_dispatch_stub_866) + GL_STUB(gl_dispatch_stub_867, 867) + HIDDEN(gl_dispatch_stub_867) + GL_STUB(glGetObjectParameterivAPPLE, 868) + GL_STUB(glObjectPurgeableAPPLE, 869) + GL_STUB(glObjectUnpurgeableAPPLE, 870) + GL_STUB(glActiveProgramEXT, 871) + GL_STUB(glCreateShaderProgramEXT, 872) + GL_STUB(glUseShaderProgramEXT, 873) + GL_STUB(gl_dispatch_stub_874, 874) + HIDDEN(gl_dispatch_stub_874) + GL_STUB(gl_dispatch_stub_875, 875) + HIDDEN(gl_dispatch_stub_875) + GL_STUB(gl_dispatch_stub_876, 876) + HIDDEN(gl_dispatch_stub_876) + GL_STUB(gl_dispatch_stub_877, 877) + HIDDEN(gl_dispatch_stub_877) + GL_STUB(gl_dispatch_stub_878, 878) + HIDDEN(gl_dispatch_stub_878) + GL_STUB(glEGLImageTargetRenderbufferStorageOES, 879) + GL_STUB(glEGLImageTargetTexture2DOES, 880) GL_STUB_ALIAS(glArrayElementEXT, glArrayElement) GL_STUB_ALIAS(glBindTextureEXT, glBindTexture) GL_STUB_ALIAS(glDrawArraysEXT, glDrawArrays) @@ -1191,10 +1243,6 @@ gl_dispatch_functions_start: GL_STUB_ALIAS(glMultiTexCoord4s, glMultiTexCoord4sARB) GL_STUB_ALIAS(glMultiTexCoord4sv, glMultiTexCoord4svARB) GL_STUB_ALIAS(glStencilOpSeparateATI, glStencilOpSeparate) - GL_STUB_ALIAS(glDrawArraysInstancedARB, glDrawArraysInstanced) - GL_STUB_ALIAS(glDrawArraysInstancedEXT, glDrawArraysInstanced) - GL_STUB_ALIAS(glDrawElementsInstancedARB, glDrawElementsInstanced) - GL_STUB_ALIAS(glDrawElementsInstancedEXT, glDrawElementsInstanced) GL_STUB_ALIAS(glLoadTransposeMatrixd, glLoadTransposeMatrixdARB) GL_STUB_ALIAS(glLoadTransposeMatrixf, glLoadTransposeMatrixfARB) GL_STUB_ALIAS(glMultTransposeMatrixd, glMultTransposeMatrixdARB) @@ -1306,6 +1354,10 @@ gl_dispatch_functions_start: GL_STUB_ALIAS(glGetAttribLocation, glGetAttribLocationARB) GL_STUB_ALIAS(glDrawBuffers, glDrawBuffersARB) GL_STUB_ALIAS(glDrawBuffersATI, glDrawBuffersARB) + GL_STUB_ALIAS(glDrawArraysInstancedEXT, glDrawArraysInstancedARB) + GL_STUB_ALIAS(glDrawArraysInstanced, glDrawArraysInstancedARB) + GL_STUB_ALIAS(glDrawElementsInstancedEXT, glDrawElementsInstancedARB) + GL_STUB_ALIAS(glDrawElementsInstanced, glDrawElementsInstancedARB) GL_STUB_ALIAS(glRenderbufferStorageMultisampleEXT, glRenderbufferStorageMultisample) GL_STUB_ALIAS(glPointParameterf, glPointParameterfEXT) GL_STUB_ALIAS(glPointParameterfARB, glPointParameterfEXT) @@ -1379,6 +1431,7 @@ gl_dispatch_functions_start: GL_STUB_ALIAS(glIsProgramARB, glIsProgramNV) GL_STUB_ALIAS(glPointParameteri, glPointParameteriNV) GL_STUB_ALIAS(glPointParameteriv, glPointParameterivNV) + GL_STUB_ALIAS(glPrimitiveRestartIndex, glPrimitiveRestartIndexNV) GL_STUB_ALIAS(glBindFramebuffer, glBindFramebufferEXT) GL_STUB_ALIAS(glBindRenderbuffer, glBindRenderbufferEXT) GL_STUB_ALIAS(glCheckFramebufferStatus, glCheckFramebufferStatusEXT) @@ -1396,7 +1449,53 @@ gl_dispatch_functions_start: GL_STUB_ALIAS(glIsFramebuffer, glIsFramebufferEXT) GL_STUB_ALIAS(glIsRenderbuffer, glIsRenderbufferEXT) GL_STUB_ALIAS(glRenderbufferStorage, glRenderbufferStorageEXT) + GL_STUB_ALIAS(glBindFragDataLocation, glBindFragDataLocationEXT) + GL_STUB_ALIAS(glGetFragDataLocation, glGetFragDataLocationEXT) + GL_STUB_ALIAS(glGetUniformuiv, glGetUniformuivEXT) + GL_STUB_ALIAS(glGetVertexAttribIiv, glGetVertexAttribIivEXT) + GL_STUB_ALIAS(glGetVertexAttribIuiv, glGetVertexAttribIuivEXT) + GL_STUB_ALIAS(glUniform1ui, glUniform1uiEXT) + GL_STUB_ALIAS(glUniform1uiv, glUniform1uivEXT) + GL_STUB_ALIAS(glUniform2ui, glUniform2uiEXT) + GL_STUB_ALIAS(glUniform2uiv, glUniform2uivEXT) + GL_STUB_ALIAS(glUniform3ui, glUniform3uiEXT) + GL_STUB_ALIAS(glUniform3uiv, glUniform3uivEXT) + GL_STUB_ALIAS(glUniform4ui, glUniform4uiEXT) + GL_STUB_ALIAS(glUniform4uiv, glUniform4uivEXT) + GL_STUB_ALIAS(glVertexAttribI1i, glVertexAttribI1iEXT) + GL_STUB_ALIAS(glVertexAttribI1iv, glVertexAttribI1ivEXT) + GL_STUB_ALIAS(glVertexAttribI1ui, glVertexAttribI1uiEXT) + GL_STUB_ALIAS(glVertexAttribI1uiv, glVertexAttribI1uivEXT) + GL_STUB_ALIAS(glVertexAttribI2i, glVertexAttribI2iEXT) + GL_STUB_ALIAS(glVertexAttribI2iv, glVertexAttribI2ivEXT) + GL_STUB_ALIAS(glVertexAttribI2ui, glVertexAttribI2uiEXT) + GL_STUB_ALIAS(glVertexAttribI2uiv, glVertexAttribI2uivEXT) + GL_STUB_ALIAS(glVertexAttribI3i, glVertexAttribI3iEXT) + GL_STUB_ALIAS(glVertexAttribI3iv, glVertexAttribI3ivEXT) + GL_STUB_ALIAS(glVertexAttribI3ui, glVertexAttribI3uiEXT) + GL_STUB_ALIAS(glVertexAttribI3uiv, glVertexAttribI3uivEXT) + GL_STUB_ALIAS(glVertexAttribI4bv, glVertexAttribI4bvEXT) + GL_STUB_ALIAS(glVertexAttribI4i, glVertexAttribI4iEXT) + GL_STUB_ALIAS(glVertexAttribI4iv, glVertexAttribI4ivEXT) + GL_STUB_ALIAS(glVertexAttribI4sv, glVertexAttribI4svEXT) + GL_STUB_ALIAS(glVertexAttribI4ubv, glVertexAttribI4ubvEXT) + GL_STUB_ALIAS(glVertexAttribI4ui, glVertexAttribI4uiEXT) + GL_STUB_ALIAS(glVertexAttribI4uiv, glVertexAttribI4uivEXT) + GL_STUB_ALIAS(glVertexAttribI4usv, glVertexAttribI4usvEXT) + GL_STUB_ALIAS(glVertexAttribIPointer, glVertexAttribIPointerEXT) GL_STUB_ALIAS(glFramebufferTextureLayer, glFramebufferTextureLayerEXT) + GL_STUB_ALIAS(glColorMaski, glColorMaskIndexedEXT) + GL_STUB_ALIAS(glDisablei, glDisableIndexedEXT) + GL_STUB_ALIAS(glEnablei, glEnableIndexedEXT) + GL_STUB_ALIAS(glGetBooleani_v, glGetBooleanIndexedvEXT) + GL_STUB_ALIAS(glGetIntegeri_v, glGetIntegerIndexedvEXT) + GL_STUB_ALIAS(glIsEnabledi, glIsEnabledIndexedEXT) + GL_STUB_ALIAS(glGetTexParameterIiv, glGetTexParameterIivEXT) + GL_STUB_ALIAS(glGetTexParameterIuiv, glGetTexParameterIuivEXT) + GL_STUB_ALIAS(glTexParameterIiv, glTexParameterIivEXT) + GL_STUB_ALIAS(glTexParameterIuiv, glTexParameterIuivEXT) + GL_STUB_ALIAS(glBeginConditionalRender, glBeginConditionalRenderNV) + GL_STUB_ALIAS(glEndConditionalRender, glEndConditionalRenderNV) GL_STUB_ALIAS(glBeginTransformFeedback, glBeginTransformFeedbackEXT) GL_STUB_ALIAS(glBindBufferBase, glBindBufferBaseEXT) GL_STUB_ALIAS(glBindBufferRange, glBindBufferRangeEXT) diff --git a/src/mapi/glapi/glapi_x86-64.S b/src/mapi/glapi/glapi_x86-64.S index 5598f441ee..ce0cf680b1 100644 --- a/src/mapi/glapi/glapi_x86-64.S +++ b/src/mapi/glapi/glapi_x86-64.S @@ -16001,9 +16001,9 @@ GL_PREFIX(UniformMatrix4x3fv): .size GL_PREFIX(UniformMatrix4x3fv), .-GL_PREFIX(UniformMatrix4x3fv) .p2align 4,,15 - .globl GL_PREFIX(DrawArraysInstanced) - .type GL_PREFIX(DrawArraysInstanced), @function -GL_PREFIX(DrawArraysInstanced): + .globl GL_PREFIX(ClampColor) + .type GL_PREFIX(ClampColor), @function +GL_PREFIX(ClampColor): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT movq 3440(%rax), %r11 @@ -16011,13 +16011,9 @@ GL_PREFIX(DrawArraysInstanced): #elif defined(PTHREADS) pushq %rdi pushq %rsi - pushq %rdx - pushq %rcx pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - popq %rcx - popq %rdx popq %rsi popq %rdi movq 3440(%rax), %r11 @@ -16031,64 +16027,401 @@ GL_PREFIX(DrawArraysInstanced): 1: pushq %rdi pushq %rsi - pushq %rdx - pushq %rcx pushq %rbp call _glapi_get_dispatch popq %rbp - popq %rcx - popq %rdx popq %rsi popq %rdi movq 3440(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(DrawArraysInstanced), .-GL_PREFIX(DrawArraysInstanced) + .size GL_PREFIX(ClampColor), .-GL_PREFIX(ClampColor) .p2align 4,,15 - .globl GL_PREFIX(DrawElementsInstanced) - .type GL_PREFIX(DrawElementsInstanced), @function -GL_PREFIX(DrawElementsInstanced): + .globl GL_PREFIX(ClearBufferfi) + .type GL_PREFIX(ClearBufferfi), @function +GL_PREFIX(ClearBufferfi): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT movq 3448(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) + subq $40, %rsp + movq %rdi, (%rsp) + movq %rsi, 8(%rsp) + movq %xmm0, 16(%rsp) + movq %rdx, 24(%rsp) + call _x86_64_get_dispatch@PLT + movq 24(%rsp), %rdx + movq 16(%rsp), %xmm0 + movq 8(%rsp), %rsi + movq (%rsp), %rdi + addq $40, %rsp + movq 3448(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 3448(%rax), %r11 + jmp *%r11 +1: + subq $40, %rsp + movq %rdi, (%rsp) + movq %rsi, 8(%rsp) + movq %xmm0, 16(%rsp) + movq %rdx, 24(%rsp) + call _glapi_get_dispatch + movq 24(%rsp), %rdx + movq 16(%rsp), %xmm0 + movq 8(%rsp), %rsi + movq (%rsp), %rdi + addq $40, %rsp + movq 3448(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(ClearBufferfi), .-GL_PREFIX(ClearBufferfi) + + .p2align 4,,15 + .globl GL_PREFIX(ClearBufferfv) + .type GL_PREFIX(ClearBufferfv), @function +GL_PREFIX(ClearBufferfv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 3456(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 3456(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 3456(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 3456(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(ClearBufferfv), .-GL_PREFIX(ClearBufferfv) + + .p2align 4,,15 + .globl GL_PREFIX(ClearBufferiv) + .type GL_PREFIX(ClearBufferiv), @function +GL_PREFIX(ClearBufferiv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 3464(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 3464(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 3464(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 3464(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(ClearBufferiv), .-GL_PREFIX(ClearBufferiv) + + .p2align 4,,15 + .globl GL_PREFIX(ClearBufferuiv) + .type GL_PREFIX(ClearBufferuiv), @function +GL_PREFIX(ClearBufferuiv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 3472(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 3472(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 3472(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 3472(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(ClearBufferuiv), .-GL_PREFIX(ClearBufferuiv) + + .p2align 4,,15 + .globl GL_PREFIX(GetStringi) + .type GL_PREFIX(GetStringi), @function +GL_PREFIX(GetStringi): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 3480(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 3480(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 3480(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 3480(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetStringi), .-GL_PREFIX(GetStringi) + + .p2align 4,,15 + .globl GL_PREFIX(TexBuffer) + .type GL_PREFIX(TexBuffer), @function +GL_PREFIX(TexBuffer): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 3488(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 3488(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 3488(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 3488(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(TexBuffer), .-GL_PREFIX(TexBuffer) + + .p2align 4,,15 + .globl GL_PREFIX(FramebufferTexture) + .type GL_PREFIX(FramebufferTexture), @function +GL_PREFIX(FramebufferTexture): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 3496(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) pushq %rdi pushq %rsi pushq %rdx pushq %rcx - pushq %r8 + pushq %rbp call _x86_64_get_dispatch@PLT - popq %r8 + popq %rbp popq %rcx popq %rdx popq %rsi popq %rdi - movq 3448(%rax), %r11 + movq 3496(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3448(%rax), %r11 + movq 3496(%rax), %r11 jmp *%r11 1: pushq %rdi pushq %rsi pushq %rdx pushq %rcx - pushq %r8 + pushq %rbp call _glapi_get_dispatch - popq %r8 + popq %rbp popq %rcx popq %rdx popq %rsi popq %rdi - movq 3448(%rax), %r11 + movq 3496(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(FramebufferTexture), .-GL_PREFIX(FramebufferTexture) + + .p2align 4,,15 + .globl GL_PREFIX(GetBufferParameteri64v) + .type GL_PREFIX(GetBufferParameteri64v), @function +GL_PREFIX(GetBufferParameteri64v): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 3504(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 3504(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 3504(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 3504(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetBufferParameteri64v), .-GL_PREFIX(GetBufferParameteri64v) + + .p2align 4,,15 + .globl GL_PREFIX(GetInteger64i_v) + .type GL_PREFIX(GetInteger64i_v), @function +GL_PREFIX(GetInteger64i_v): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 3512(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 3512(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 3512(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 3512(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(DrawElementsInstanced), .-GL_PREFIX(DrawElementsInstanced) + .size GL_PREFIX(GetInteger64i_v), .-GL_PREFIX(GetInteger64i_v) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribDivisor) + .type GL_PREFIX(VertexAttribDivisor), @function +GL_PREFIX(VertexAttribDivisor): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 3520(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 3520(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 3520(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 3520(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribDivisor), .-GL_PREFIX(VertexAttribDivisor) .p2align 4,,15 .globl GL_PREFIX(LoadTransposeMatrixdARB) @@ -16096,25 +16429,25 @@ GL_PREFIX(DrawElementsInstanced): GL_PREFIX(LoadTransposeMatrixdARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3456(%rax), %r11 + movq 3528(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 3456(%rax), %r11 + movq 3528(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3456(%rax), %r11 + movq 3528(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 3456(%rax), %r11 + movq 3528(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(LoadTransposeMatrixdARB), .-GL_PREFIX(LoadTransposeMatrixdARB) @@ -16125,25 +16458,25 @@ GL_PREFIX(LoadTransposeMatrixdARB): GL_PREFIX(LoadTransposeMatrixfARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3464(%rax), %r11 + movq 3536(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 3464(%rax), %r11 + movq 3536(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3464(%rax), %r11 + movq 3536(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 3464(%rax), %r11 + movq 3536(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(LoadTransposeMatrixfARB), .-GL_PREFIX(LoadTransposeMatrixfARB) @@ -16154,25 +16487,25 @@ GL_PREFIX(LoadTransposeMatrixfARB): GL_PREFIX(MultTransposeMatrixdARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3472(%rax), %r11 + movq 3544(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 3472(%rax), %r11 + movq 3544(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3472(%rax), %r11 + movq 3544(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 3472(%rax), %r11 + movq 3544(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MultTransposeMatrixdARB), .-GL_PREFIX(MultTransposeMatrixdARB) @@ -16183,25 +16516,25 @@ GL_PREFIX(MultTransposeMatrixdARB): GL_PREFIX(MultTransposeMatrixfARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3480(%rax), %r11 + movq 3552(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 3480(%rax), %r11 + movq 3552(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3480(%rax), %r11 + movq 3552(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 3480(%rax), %r11 + movq 3552(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MultTransposeMatrixfARB), .-GL_PREFIX(MultTransposeMatrixfARB) @@ -16212,7 +16545,7 @@ GL_PREFIX(MultTransposeMatrixfARB): GL_PREFIX(SampleCoverageARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3488(%rax), %r11 + movq 3560(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16222,13 +16555,13 @@ GL_PREFIX(SampleCoverageARB): popq %rbp popq %rsi popq %rdi - movq 3488(%rax), %r11 + movq 3560(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3488(%rax), %r11 + movq 3560(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16238,7 +16571,7 @@ GL_PREFIX(SampleCoverageARB): popq %rbp popq %rsi popq %rdi - movq 3488(%rax), %r11 + movq 3560(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SampleCoverageARB), .-GL_PREFIX(SampleCoverageARB) @@ -16249,7 +16582,7 @@ GL_PREFIX(SampleCoverageARB): GL_PREFIX(CompressedTexImage1DARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3496(%rax), %r11 + movq 3568(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16267,13 +16600,13 @@ GL_PREFIX(CompressedTexImage1DARB): popq %rdx popq %rsi popq %rdi - movq 3496(%rax), %r11 + movq 3568(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3496(%rax), %r11 + movq 3568(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16291,7 +16624,7 @@ GL_PREFIX(CompressedTexImage1DARB): popq %rdx popq %rsi popq %rdi - movq 3496(%rax), %r11 + movq 3568(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CompressedTexImage1DARB), .-GL_PREFIX(CompressedTexImage1DARB) @@ -16302,7 +16635,7 @@ GL_PREFIX(CompressedTexImage1DARB): GL_PREFIX(CompressedTexImage2DARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3504(%rax), %r11 + movq 3576(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16320,13 +16653,13 @@ GL_PREFIX(CompressedTexImage2DARB): popq %rdx popq %rsi popq %rdi - movq 3504(%rax), %r11 + movq 3576(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3504(%rax), %r11 + movq 3576(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16344,7 +16677,7 @@ GL_PREFIX(CompressedTexImage2DARB): popq %rdx popq %rsi popq %rdi - movq 3504(%rax), %r11 + movq 3576(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CompressedTexImage2DARB), .-GL_PREFIX(CompressedTexImage2DARB) @@ -16355,7 +16688,7 @@ GL_PREFIX(CompressedTexImage2DARB): GL_PREFIX(CompressedTexImage3DARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3512(%rax), %r11 + movq 3584(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16373,13 +16706,13 @@ GL_PREFIX(CompressedTexImage3DARB): popq %rdx popq %rsi popq %rdi - movq 3512(%rax), %r11 + movq 3584(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3512(%rax), %r11 + movq 3584(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16397,7 +16730,7 @@ GL_PREFIX(CompressedTexImage3DARB): popq %rdx popq %rsi popq %rdi - movq 3512(%rax), %r11 + movq 3584(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CompressedTexImage3DARB), .-GL_PREFIX(CompressedTexImage3DARB) @@ -16408,7 +16741,7 @@ GL_PREFIX(CompressedTexImage3DARB): GL_PREFIX(CompressedTexSubImage1DARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3520(%rax), %r11 + movq 3592(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16426,13 +16759,13 @@ GL_PREFIX(CompressedTexSubImage1DARB): popq %rdx popq %rsi popq %rdi - movq 3520(%rax), %r11 + movq 3592(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3520(%rax), %r11 + movq 3592(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16450,7 +16783,7 @@ GL_PREFIX(CompressedTexSubImage1DARB): popq %rdx popq %rsi popq %rdi - movq 3520(%rax), %r11 + movq 3592(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CompressedTexSubImage1DARB), .-GL_PREFIX(CompressedTexSubImage1DARB) @@ -16461,7 +16794,7 @@ GL_PREFIX(CompressedTexSubImage1DARB): GL_PREFIX(CompressedTexSubImage2DARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3528(%rax), %r11 + movq 3600(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16479,13 +16812,13 @@ GL_PREFIX(CompressedTexSubImage2DARB): popq %rdx popq %rsi popq %rdi - movq 3528(%rax), %r11 + movq 3600(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3528(%rax), %r11 + movq 3600(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16503,7 +16836,7 @@ GL_PREFIX(CompressedTexSubImage2DARB): popq %rdx popq %rsi popq %rdi - movq 3528(%rax), %r11 + movq 3600(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CompressedTexSubImage2DARB), .-GL_PREFIX(CompressedTexSubImage2DARB) @@ -16514,7 +16847,7 @@ GL_PREFIX(CompressedTexSubImage2DARB): GL_PREFIX(CompressedTexSubImage3DARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3536(%rax), %r11 + movq 3608(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16532,13 +16865,13 @@ GL_PREFIX(CompressedTexSubImage3DARB): popq %rdx popq %rsi popq %rdi - movq 3536(%rax), %r11 + movq 3608(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3536(%rax), %r11 + movq 3608(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16556,7 +16889,7 @@ GL_PREFIX(CompressedTexSubImage3DARB): popq %rdx popq %rsi popq %rdi - movq 3536(%rax), %r11 + movq 3608(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CompressedTexSubImage3DARB), .-GL_PREFIX(CompressedTexSubImage3DARB) @@ -16567,7 +16900,7 @@ GL_PREFIX(CompressedTexSubImage3DARB): GL_PREFIX(GetCompressedTexImageARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3544(%rax), %r11 + movq 3616(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16577,13 +16910,13 @@ GL_PREFIX(GetCompressedTexImageARB): popq %rdx popq %rsi popq %rdi - movq 3544(%rax), %r11 + movq 3616(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3544(%rax), %r11 + movq 3616(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16593,7 +16926,7 @@ GL_PREFIX(GetCompressedTexImageARB): popq %rdx popq %rsi popq %rdi - movq 3544(%rax), %r11 + movq 3616(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetCompressedTexImageARB), .-GL_PREFIX(GetCompressedTexImageARB) @@ -16604,25 +16937,25 @@ GL_PREFIX(GetCompressedTexImageARB): GL_PREFIX(DisableVertexAttribArrayARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3552(%rax), %r11 + movq 3624(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 3552(%rax), %r11 + movq 3624(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3552(%rax), %r11 + movq 3624(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 3552(%rax), %r11 + movq 3624(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DisableVertexAttribArrayARB), .-GL_PREFIX(DisableVertexAttribArrayARB) @@ -16633,25 +16966,25 @@ GL_PREFIX(DisableVertexAttribArrayARB): GL_PREFIX(EnableVertexAttribArrayARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3560(%rax), %r11 + movq 3632(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 3560(%rax), %r11 + movq 3632(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3560(%rax), %r11 + movq 3632(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 3560(%rax), %r11 + movq 3632(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EnableVertexAttribArrayARB), .-GL_PREFIX(EnableVertexAttribArrayARB) @@ -16662,7 +16995,7 @@ GL_PREFIX(EnableVertexAttribArrayARB): GL_PREFIX(GetProgramEnvParameterdvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3568(%rax), %r11 + movq 3640(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16672,13 +17005,13 @@ GL_PREFIX(GetProgramEnvParameterdvARB): popq %rdx popq %rsi popq %rdi - movq 3568(%rax), %r11 + movq 3640(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3568(%rax), %r11 + movq 3640(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16688,7 +17021,7 @@ GL_PREFIX(GetProgramEnvParameterdvARB): popq %rdx popq %rsi popq %rdi - movq 3568(%rax), %r11 + movq 3640(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramEnvParameterdvARB), .-GL_PREFIX(GetProgramEnvParameterdvARB) @@ -16699,7 +17032,7 @@ GL_PREFIX(GetProgramEnvParameterdvARB): GL_PREFIX(GetProgramEnvParameterfvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3576(%rax), %r11 + movq 3648(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16709,13 +17042,13 @@ GL_PREFIX(GetProgramEnvParameterfvARB): popq %rdx popq %rsi popq %rdi - movq 3576(%rax), %r11 + movq 3648(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3576(%rax), %r11 + movq 3648(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16725,7 +17058,7 @@ GL_PREFIX(GetProgramEnvParameterfvARB): popq %rdx popq %rsi popq %rdi - movq 3576(%rax), %r11 + movq 3648(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramEnvParameterfvARB), .-GL_PREFIX(GetProgramEnvParameterfvARB) @@ -16736,7 +17069,7 @@ GL_PREFIX(GetProgramEnvParameterfvARB): GL_PREFIX(GetProgramLocalParameterdvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3584(%rax), %r11 + movq 3656(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16746,13 +17079,13 @@ GL_PREFIX(GetProgramLocalParameterdvARB): popq %rdx popq %rsi popq %rdi - movq 3584(%rax), %r11 + movq 3656(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3584(%rax), %r11 + movq 3656(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16762,7 +17095,7 @@ GL_PREFIX(GetProgramLocalParameterdvARB): popq %rdx popq %rsi popq %rdi - movq 3584(%rax), %r11 + movq 3656(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramLocalParameterdvARB), .-GL_PREFIX(GetProgramLocalParameterdvARB) @@ -16773,7 +17106,7 @@ GL_PREFIX(GetProgramLocalParameterdvARB): GL_PREFIX(GetProgramLocalParameterfvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3592(%rax), %r11 + movq 3664(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16783,13 +17116,13 @@ GL_PREFIX(GetProgramLocalParameterfvARB): popq %rdx popq %rsi popq %rdi - movq 3592(%rax), %r11 + movq 3664(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3592(%rax), %r11 + movq 3664(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16799,7 +17132,7 @@ GL_PREFIX(GetProgramLocalParameterfvARB): popq %rdx popq %rsi popq %rdi - movq 3592(%rax), %r11 + movq 3664(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramLocalParameterfvARB), .-GL_PREFIX(GetProgramLocalParameterfvARB) @@ -16810,7 +17143,7 @@ GL_PREFIX(GetProgramLocalParameterfvARB): GL_PREFIX(GetProgramStringARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3600(%rax), %r11 + movq 3672(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16820,13 +17153,13 @@ GL_PREFIX(GetProgramStringARB): popq %rdx popq %rsi popq %rdi - movq 3600(%rax), %r11 + movq 3672(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3600(%rax), %r11 + movq 3672(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16836,7 +17169,7 @@ GL_PREFIX(GetProgramStringARB): popq %rdx popq %rsi popq %rdi - movq 3600(%rax), %r11 + movq 3672(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramStringARB), .-GL_PREFIX(GetProgramStringARB) @@ -16847,7 +17180,7 @@ GL_PREFIX(GetProgramStringARB): GL_PREFIX(GetProgramivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3608(%rax), %r11 + movq 3680(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16857,13 +17190,13 @@ GL_PREFIX(GetProgramivARB): popq %rdx popq %rsi popq %rdi - movq 3608(%rax), %r11 + movq 3680(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3608(%rax), %r11 + movq 3680(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16873,7 +17206,7 @@ GL_PREFIX(GetProgramivARB): popq %rdx popq %rsi popq %rdi - movq 3608(%rax), %r11 + movq 3680(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramivARB), .-GL_PREFIX(GetProgramivARB) @@ -16884,7 +17217,7 @@ GL_PREFIX(GetProgramivARB): GL_PREFIX(GetVertexAttribdvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3616(%rax), %r11 + movq 3688(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16894,13 +17227,13 @@ GL_PREFIX(GetVertexAttribdvARB): popq %rdx popq %rsi popq %rdi - movq 3616(%rax), %r11 + movq 3688(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3616(%rax), %r11 + movq 3688(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16910,7 +17243,7 @@ GL_PREFIX(GetVertexAttribdvARB): popq %rdx popq %rsi popq %rdi - movq 3616(%rax), %r11 + movq 3688(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribdvARB), .-GL_PREFIX(GetVertexAttribdvARB) @@ -16921,7 +17254,7 @@ GL_PREFIX(GetVertexAttribdvARB): GL_PREFIX(GetVertexAttribfvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3624(%rax), %r11 + movq 3696(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16931,13 +17264,13 @@ GL_PREFIX(GetVertexAttribfvARB): popq %rdx popq %rsi popq %rdi - movq 3624(%rax), %r11 + movq 3696(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3624(%rax), %r11 + movq 3696(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16947,7 +17280,7 @@ GL_PREFIX(GetVertexAttribfvARB): popq %rdx popq %rsi popq %rdi - movq 3624(%rax), %r11 + movq 3696(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribfvARB), .-GL_PREFIX(GetVertexAttribfvARB) @@ -16958,7 +17291,7 @@ GL_PREFIX(GetVertexAttribfvARB): GL_PREFIX(GetVertexAttribivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3632(%rax), %r11 + movq 3704(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -16968,13 +17301,13 @@ GL_PREFIX(GetVertexAttribivARB): popq %rdx popq %rsi popq %rdi - movq 3632(%rax), %r11 + movq 3704(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3632(%rax), %r11 + movq 3704(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -16984,7 +17317,7 @@ GL_PREFIX(GetVertexAttribivARB): popq %rdx popq %rsi popq %rdi - movq 3632(%rax), %r11 + movq 3704(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribivARB), .-GL_PREFIX(GetVertexAttribivARB) @@ -16995,7 +17328,7 @@ GL_PREFIX(GetVertexAttribivARB): GL_PREFIX(ProgramEnvParameter4dARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3640(%rax), %r11 + movq 3712(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $56, %rsp @@ -17013,13 +17346,13 @@ GL_PREFIX(ProgramEnvParameter4dARB): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 3640(%rax), %r11 + movq 3712(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3640(%rax), %r11 + movq 3712(%rax), %r11 jmp *%r11 1: subq $56, %rsp @@ -17037,7 +17370,7 @@ GL_PREFIX(ProgramEnvParameter4dARB): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 3640(%rax), %r11 + movq 3712(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramEnvParameter4dARB), .-GL_PREFIX(ProgramEnvParameter4dARB) @@ -17048,7 +17381,7 @@ GL_PREFIX(ProgramEnvParameter4dARB): GL_PREFIX(ProgramEnvParameter4dvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3648(%rax), %r11 + movq 3720(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17058,13 +17391,13 @@ GL_PREFIX(ProgramEnvParameter4dvARB): popq %rdx popq %rsi popq %rdi - movq 3648(%rax), %r11 + movq 3720(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3648(%rax), %r11 + movq 3720(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17074,7 +17407,7 @@ GL_PREFIX(ProgramEnvParameter4dvARB): popq %rdx popq %rsi popq %rdi - movq 3648(%rax), %r11 + movq 3720(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramEnvParameter4dvARB), .-GL_PREFIX(ProgramEnvParameter4dvARB) @@ -17085,7 +17418,7 @@ GL_PREFIX(ProgramEnvParameter4dvARB): GL_PREFIX(ProgramEnvParameter4fARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3656(%rax), %r11 + movq 3728(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $56, %rsp @@ -17103,13 +17436,13 @@ GL_PREFIX(ProgramEnvParameter4fARB): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 3656(%rax), %r11 + movq 3728(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3656(%rax), %r11 + movq 3728(%rax), %r11 jmp *%r11 1: subq $56, %rsp @@ -17127,7 +17460,7 @@ GL_PREFIX(ProgramEnvParameter4fARB): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 3656(%rax), %r11 + movq 3728(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramEnvParameter4fARB), .-GL_PREFIX(ProgramEnvParameter4fARB) @@ -17138,7 +17471,7 @@ GL_PREFIX(ProgramEnvParameter4fARB): GL_PREFIX(ProgramEnvParameter4fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3664(%rax), %r11 + movq 3736(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17148,13 +17481,13 @@ GL_PREFIX(ProgramEnvParameter4fvARB): popq %rdx popq %rsi popq %rdi - movq 3664(%rax), %r11 + movq 3736(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3664(%rax), %r11 + movq 3736(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17164,7 +17497,7 @@ GL_PREFIX(ProgramEnvParameter4fvARB): popq %rdx popq %rsi popq %rdi - movq 3664(%rax), %r11 + movq 3736(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramEnvParameter4fvARB), .-GL_PREFIX(ProgramEnvParameter4fvARB) @@ -17175,7 +17508,7 @@ GL_PREFIX(ProgramEnvParameter4fvARB): GL_PREFIX(ProgramLocalParameter4dARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3672(%rax), %r11 + movq 3744(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $56, %rsp @@ -17193,13 +17526,13 @@ GL_PREFIX(ProgramLocalParameter4dARB): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 3672(%rax), %r11 + movq 3744(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3672(%rax), %r11 + movq 3744(%rax), %r11 jmp *%r11 1: subq $56, %rsp @@ -17217,7 +17550,7 @@ GL_PREFIX(ProgramLocalParameter4dARB): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 3672(%rax), %r11 + movq 3744(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramLocalParameter4dARB), .-GL_PREFIX(ProgramLocalParameter4dARB) @@ -17228,7 +17561,7 @@ GL_PREFIX(ProgramLocalParameter4dARB): GL_PREFIX(ProgramLocalParameter4dvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3680(%rax), %r11 + movq 3752(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17238,13 +17571,13 @@ GL_PREFIX(ProgramLocalParameter4dvARB): popq %rdx popq %rsi popq %rdi - movq 3680(%rax), %r11 + movq 3752(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3680(%rax), %r11 + movq 3752(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17254,7 +17587,7 @@ GL_PREFIX(ProgramLocalParameter4dvARB): popq %rdx popq %rsi popq %rdi - movq 3680(%rax), %r11 + movq 3752(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramLocalParameter4dvARB), .-GL_PREFIX(ProgramLocalParameter4dvARB) @@ -17265,7 +17598,7 @@ GL_PREFIX(ProgramLocalParameter4dvARB): GL_PREFIX(ProgramLocalParameter4fARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3688(%rax), %r11 + movq 3760(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $56, %rsp @@ -17283,13 +17616,13 @@ GL_PREFIX(ProgramLocalParameter4fARB): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 3688(%rax), %r11 + movq 3760(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3688(%rax), %r11 + movq 3760(%rax), %r11 jmp *%r11 1: subq $56, %rsp @@ -17307,7 +17640,7 @@ GL_PREFIX(ProgramLocalParameter4fARB): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 3688(%rax), %r11 + movq 3760(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramLocalParameter4fARB), .-GL_PREFIX(ProgramLocalParameter4fARB) @@ -17318,7 +17651,7 @@ GL_PREFIX(ProgramLocalParameter4fARB): GL_PREFIX(ProgramLocalParameter4fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3696(%rax), %r11 + movq 3768(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17328,13 +17661,13 @@ GL_PREFIX(ProgramLocalParameter4fvARB): popq %rdx popq %rsi popq %rdi - movq 3696(%rax), %r11 + movq 3768(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3696(%rax), %r11 + movq 3768(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17344,7 +17677,7 @@ GL_PREFIX(ProgramLocalParameter4fvARB): popq %rdx popq %rsi popq %rdi - movq 3696(%rax), %r11 + movq 3768(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramLocalParameter4fvARB), .-GL_PREFIX(ProgramLocalParameter4fvARB) @@ -17355,7 +17688,7 @@ GL_PREFIX(ProgramLocalParameter4fvARB): GL_PREFIX(ProgramStringARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3704(%rax), %r11 + movq 3776(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17369,13 +17702,13 @@ GL_PREFIX(ProgramStringARB): popq %rdx popq %rsi popq %rdi - movq 3704(%rax), %r11 + movq 3776(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3704(%rax), %r11 + movq 3776(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17389,7 +17722,7 @@ GL_PREFIX(ProgramStringARB): popq %rdx popq %rsi popq %rdi - movq 3704(%rax), %r11 + movq 3776(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramStringARB), .-GL_PREFIX(ProgramStringARB) @@ -17400,7 +17733,7 @@ GL_PREFIX(ProgramStringARB): GL_PREFIX(VertexAttrib1dARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3712(%rax), %r11 + movq 3784(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -17410,13 +17743,13 @@ GL_PREFIX(VertexAttrib1dARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 3712(%rax), %r11 + movq 3784(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3712(%rax), %r11 + movq 3784(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -17426,7 +17759,7 @@ GL_PREFIX(VertexAttrib1dARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 3712(%rax), %r11 + movq 3784(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1dARB), .-GL_PREFIX(VertexAttrib1dARB) @@ -17437,7 +17770,7 @@ GL_PREFIX(VertexAttrib1dARB): GL_PREFIX(VertexAttrib1dvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3720(%rax), %r11 + movq 3792(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17447,13 +17780,13 @@ GL_PREFIX(VertexAttrib1dvARB): popq %rbp popq %rsi popq %rdi - movq 3720(%rax), %r11 + movq 3792(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3720(%rax), %r11 + movq 3792(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17463,7 +17796,7 @@ GL_PREFIX(VertexAttrib1dvARB): popq %rbp popq %rsi popq %rdi - movq 3720(%rax), %r11 + movq 3792(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1dvARB), .-GL_PREFIX(VertexAttrib1dvARB) @@ -17474,7 +17807,7 @@ GL_PREFIX(VertexAttrib1dvARB): GL_PREFIX(VertexAttrib1fARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3728(%rax), %r11 + movq 3800(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -17484,13 +17817,13 @@ GL_PREFIX(VertexAttrib1fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 3728(%rax), %r11 + movq 3800(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3728(%rax), %r11 + movq 3800(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -17500,7 +17833,7 @@ GL_PREFIX(VertexAttrib1fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 3728(%rax), %r11 + movq 3800(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1fARB), .-GL_PREFIX(VertexAttrib1fARB) @@ -17511,7 +17844,7 @@ GL_PREFIX(VertexAttrib1fARB): GL_PREFIX(VertexAttrib1fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3736(%rax), %r11 + movq 3808(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17521,13 +17854,13 @@ GL_PREFIX(VertexAttrib1fvARB): popq %rbp popq %rsi popq %rdi - movq 3736(%rax), %r11 + movq 3808(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3736(%rax), %r11 + movq 3808(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17537,7 +17870,7 @@ GL_PREFIX(VertexAttrib1fvARB): popq %rbp popq %rsi popq %rdi - movq 3736(%rax), %r11 + movq 3808(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1fvARB), .-GL_PREFIX(VertexAttrib1fvARB) @@ -17548,7 +17881,7 @@ GL_PREFIX(VertexAttrib1fvARB): GL_PREFIX(VertexAttrib1sARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3744(%rax), %r11 + movq 3816(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17558,13 +17891,13 @@ GL_PREFIX(VertexAttrib1sARB): popq %rbp popq %rsi popq %rdi - movq 3744(%rax), %r11 + movq 3816(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3744(%rax), %r11 + movq 3816(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17574,7 +17907,7 @@ GL_PREFIX(VertexAttrib1sARB): popq %rbp popq %rsi popq %rdi - movq 3744(%rax), %r11 + movq 3816(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1sARB), .-GL_PREFIX(VertexAttrib1sARB) @@ -17585,7 +17918,7 @@ GL_PREFIX(VertexAttrib1sARB): GL_PREFIX(VertexAttrib1svARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3752(%rax), %r11 + movq 3824(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17595,13 +17928,13 @@ GL_PREFIX(VertexAttrib1svARB): popq %rbp popq %rsi popq %rdi - movq 3752(%rax), %r11 + movq 3824(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3752(%rax), %r11 + movq 3824(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17611,7 +17944,7 @@ GL_PREFIX(VertexAttrib1svARB): popq %rbp popq %rsi popq %rdi - movq 3752(%rax), %r11 + movq 3824(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1svARB), .-GL_PREFIX(VertexAttrib1svARB) @@ -17622,7 +17955,7 @@ GL_PREFIX(VertexAttrib1svARB): GL_PREFIX(VertexAttrib2dARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3760(%rax), %r11 + movq 3832(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -17634,13 +17967,13 @@ GL_PREFIX(VertexAttrib2dARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 3760(%rax), %r11 + movq 3832(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3760(%rax), %r11 + movq 3832(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -17652,7 +17985,7 @@ GL_PREFIX(VertexAttrib2dARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 3760(%rax), %r11 + movq 3832(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2dARB), .-GL_PREFIX(VertexAttrib2dARB) @@ -17663,7 +17996,7 @@ GL_PREFIX(VertexAttrib2dARB): GL_PREFIX(VertexAttrib2dvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3768(%rax), %r11 + movq 3840(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17673,13 +18006,13 @@ GL_PREFIX(VertexAttrib2dvARB): popq %rbp popq %rsi popq %rdi - movq 3768(%rax), %r11 + movq 3840(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3768(%rax), %r11 + movq 3840(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17689,7 +18022,7 @@ GL_PREFIX(VertexAttrib2dvARB): popq %rbp popq %rsi popq %rdi - movq 3768(%rax), %r11 + movq 3840(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2dvARB), .-GL_PREFIX(VertexAttrib2dvARB) @@ -17700,7 +18033,7 @@ GL_PREFIX(VertexAttrib2dvARB): GL_PREFIX(VertexAttrib2fARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3776(%rax), %r11 + movq 3848(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -17712,13 +18045,13 @@ GL_PREFIX(VertexAttrib2fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 3776(%rax), %r11 + movq 3848(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3776(%rax), %r11 + movq 3848(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -17730,7 +18063,7 @@ GL_PREFIX(VertexAttrib2fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 3776(%rax), %r11 + movq 3848(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2fARB), .-GL_PREFIX(VertexAttrib2fARB) @@ -17741,7 +18074,7 @@ GL_PREFIX(VertexAttrib2fARB): GL_PREFIX(VertexAttrib2fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3784(%rax), %r11 + movq 3856(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17751,13 +18084,13 @@ GL_PREFIX(VertexAttrib2fvARB): popq %rbp popq %rsi popq %rdi - movq 3784(%rax), %r11 + movq 3856(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3784(%rax), %r11 + movq 3856(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17767,7 +18100,7 @@ GL_PREFIX(VertexAttrib2fvARB): popq %rbp popq %rsi popq %rdi - movq 3784(%rax), %r11 + movq 3856(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2fvARB), .-GL_PREFIX(VertexAttrib2fvARB) @@ -17778,7 +18111,7 @@ GL_PREFIX(VertexAttrib2fvARB): GL_PREFIX(VertexAttrib2sARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3792(%rax), %r11 + movq 3864(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17788,13 +18121,13 @@ GL_PREFIX(VertexAttrib2sARB): popq %rdx popq %rsi popq %rdi - movq 3792(%rax), %r11 + movq 3864(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3792(%rax), %r11 + movq 3864(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17804,7 +18137,7 @@ GL_PREFIX(VertexAttrib2sARB): popq %rdx popq %rsi popq %rdi - movq 3792(%rax), %r11 + movq 3864(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2sARB), .-GL_PREFIX(VertexAttrib2sARB) @@ -17815,7 +18148,7 @@ GL_PREFIX(VertexAttrib2sARB): GL_PREFIX(VertexAttrib2svARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3800(%rax), %r11 + movq 3872(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17825,13 +18158,13 @@ GL_PREFIX(VertexAttrib2svARB): popq %rbp popq %rsi popq %rdi - movq 3800(%rax), %r11 + movq 3872(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3800(%rax), %r11 + movq 3872(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17841,7 +18174,7 @@ GL_PREFIX(VertexAttrib2svARB): popq %rbp popq %rsi popq %rdi - movq 3800(%rax), %r11 + movq 3872(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2svARB), .-GL_PREFIX(VertexAttrib2svARB) @@ -17852,7 +18185,7 @@ GL_PREFIX(VertexAttrib2svARB): GL_PREFIX(VertexAttrib3dARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3808(%rax), %r11 + movq 3880(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -17866,13 +18199,13 @@ GL_PREFIX(VertexAttrib3dARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 3808(%rax), %r11 + movq 3880(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3808(%rax), %r11 + movq 3880(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -17886,7 +18219,7 @@ GL_PREFIX(VertexAttrib3dARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 3808(%rax), %r11 + movq 3880(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3dARB), .-GL_PREFIX(VertexAttrib3dARB) @@ -17897,7 +18230,7 @@ GL_PREFIX(VertexAttrib3dARB): GL_PREFIX(VertexAttrib3dvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3816(%rax), %r11 + movq 3888(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17907,13 +18240,13 @@ GL_PREFIX(VertexAttrib3dvARB): popq %rbp popq %rsi popq %rdi - movq 3816(%rax), %r11 + movq 3888(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3816(%rax), %r11 + movq 3888(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -17923,7 +18256,7 @@ GL_PREFIX(VertexAttrib3dvARB): popq %rbp popq %rsi popq %rdi - movq 3816(%rax), %r11 + movq 3888(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3dvARB), .-GL_PREFIX(VertexAttrib3dvARB) @@ -17934,7 +18267,7 @@ GL_PREFIX(VertexAttrib3dvARB): GL_PREFIX(VertexAttrib3fARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3824(%rax), %r11 + movq 3896(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -17948,13 +18281,13 @@ GL_PREFIX(VertexAttrib3fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 3824(%rax), %r11 + movq 3896(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3824(%rax), %r11 + movq 3896(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -17968,7 +18301,7 @@ GL_PREFIX(VertexAttrib3fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 3824(%rax), %r11 + movq 3896(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3fARB), .-GL_PREFIX(VertexAttrib3fARB) @@ -17979,7 +18312,7 @@ GL_PREFIX(VertexAttrib3fARB): GL_PREFIX(VertexAttrib3fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3832(%rax), %r11 + movq 3904(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -17989,13 +18322,13 @@ GL_PREFIX(VertexAttrib3fvARB): popq %rbp popq %rsi popq %rdi - movq 3832(%rax), %r11 + movq 3904(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3832(%rax), %r11 + movq 3904(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18005,7 +18338,7 @@ GL_PREFIX(VertexAttrib3fvARB): popq %rbp popq %rsi popq %rdi - movq 3832(%rax), %r11 + movq 3904(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3fvARB), .-GL_PREFIX(VertexAttrib3fvARB) @@ -18016,7 +18349,7 @@ GL_PREFIX(VertexAttrib3fvARB): GL_PREFIX(VertexAttrib3sARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3840(%rax), %r11 + movq 3912(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18030,13 +18363,13 @@ GL_PREFIX(VertexAttrib3sARB): popq %rdx popq %rsi popq %rdi - movq 3840(%rax), %r11 + movq 3912(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3840(%rax), %r11 + movq 3912(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18050,7 +18383,7 @@ GL_PREFIX(VertexAttrib3sARB): popq %rdx popq %rsi popq %rdi - movq 3840(%rax), %r11 + movq 3912(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3sARB), .-GL_PREFIX(VertexAttrib3sARB) @@ -18061,7 +18394,7 @@ GL_PREFIX(VertexAttrib3sARB): GL_PREFIX(VertexAttrib3svARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3848(%rax), %r11 + movq 3920(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18071,13 +18404,13 @@ GL_PREFIX(VertexAttrib3svARB): popq %rbp popq %rsi popq %rdi - movq 3848(%rax), %r11 + movq 3920(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3848(%rax), %r11 + movq 3920(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18087,7 +18420,7 @@ GL_PREFIX(VertexAttrib3svARB): popq %rbp popq %rsi popq %rdi - movq 3848(%rax), %r11 + movq 3920(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3svARB), .-GL_PREFIX(VertexAttrib3svARB) @@ -18098,7 +18431,7 @@ GL_PREFIX(VertexAttrib3svARB): GL_PREFIX(VertexAttrib4NbvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3856(%rax), %r11 + movq 3928(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18108,13 +18441,13 @@ GL_PREFIX(VertexAttrib4NbvARB): popq %rbp popq %rsi popq %rdi - movq 3856(%rax), %r11 + movq 3928(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3856(%rax), %r11 + movq 3928(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18124,7 +18457,7 @@ GL_PREFIX(VertexAttrib4NbvARB): popq %rbp popq %rsi popq %rdi - movq 3856(%rax), %r11 + movq 3928(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4NbvARB), .-GL_PREFIX(VertexAttrib4NbvARB) @@ -18135,7 +18468,7 @@ GL_PREFIX(VertexAttrib4NbvARB): GL_PREFIX(VertexAttrib4NivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3864(%rax), %r11 + movq 3936(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18145,13 +18478,13 @@ GL_PREFIX(VertexAttrib4NivARB): popq %rbp popq %rsi popq %rdi - movq 3864(%rax), %r11 + movq 3936(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3864(%rax), %r11 + movq 3936(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18161,7 +18494,7 @@ GL_PREFIX(VertexAttrib4NivARB): popq %rbp popq %rsi popq %rdi - movq 3864(%rax), %r11 + movq 3936(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4NivARB), .-GL_PREFIX(VertexAttrib4NivARB) @@ -18172,7 +18505,7 @@ GL_PREFIX(VertexAttrib4NivARB): GL_PREFIX(VertexAttrib4NsvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3872(%rax), %r11 + movq 3944(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18182,13 +18515,13 @@ GL_PREFIX(VertexAttrib4NsvARB): popq %rbp popq %rsi popq %rdi - movq 3872(%rax), %r11 + movq 3944(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3872(%rax), %r11 + movq 3944(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18198,7 +18531,7 @@ GL_PREFIX(VertexAttrib4NsvARB): popq %rbp popq %rsi popq %rdi - movq 3872(%rax), %r11 + movq 3944(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4NsvARB), .-GL_PREFIX(VertexAttrib4NsvARB) @@ -18209,7 +18542,7 @@ GL_PREFIX(VertexAttrib4NsvARB): GL_PREFIX(VertexAttrib4NubARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3880(%rax), %r11 + movq 3952(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18223,13 +18556,13 @@ GL_PREFIX(VertexAttrib4NubARB): popq %rdx popq %rsi popq %rdi - movq 3880(%rax), %r11 + movq 3952(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3880(%rax), %r11 + movq 3952(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18243,7 +18576,7 @@ GL_PREFIX(VertexAttrib4NubARB): popq %rdx popq %rsi popq %rdi - movq 3880(%rax), %r11 + movq 3952(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4NubARB), .-GL_PREFIX(VertexAttrib4NubARB) @@ -18254,7 +18587,7 @@ GL_PREFIX(VertexAttrib4NubARB): GL_PREFIX(VertexAttrib4NubvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3888(%rax), %r11 + movq 3960(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18264,13 +18597,13 @@ GL_PREFIX(VertexAttrib4NubvARB): popq %rbp popq %rsi popq %rdi - movq 3888(%rax), %r11 + movq 3960(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3888(%rax), %r11 + movq 3960(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18280,7 +18613,7 @@ GL_PREFIX(VertexAttrib4NubvARB): popq %rbp popq %rsi popq %rdi - movq 3888(%rax), %r11 + movq 3960(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4NubvARB), .-GL_PREFIX(VertexAttrib4NubvARB) @@ -18291,7 +18624,7 @@ GL_PREFIX(VertexAttrib4NubvARB): GL_PREFIX(VertexAttrib4NuivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3896(%rax), %r11 + movq 3968(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18301,13 +18634,13 @@ GL_PREFIX(VertexAttrib4NuivARB): popq %rbp popq %rsi popq %rdi - movq 3896(%rax), %r11 + movq 3968(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3896(%rax), %r11 + movq 3968(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18317,7 +18650,7 @@ GL_PREFIX(VertexAttrib4NuivARB): popq %rbp popq %rsi popq %rdi - movq 3896(%rax), %r11 + movq 3968(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4NuivARB), .-GL_PREFIX(VertexAttrib4NuivARB) @@ -18328,7 +18661,7 @@ GL_PREFIX(VertexAttrib4NuivARB): GL_PREFIX(VertexAttrib4NusvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3904(%rax), %r11 + movq 3976(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18338,13 +18671,13 @@ GL_PREFIX(VertexAttrib4NusvARB): popq %rbp popq %rsi popq %rdi - movq 3904(%rax), %r11 + movq 3976(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3904(%rax), %r11 + movq 3976(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18354,7 +18687,7 @@ GL_PREFIX(VertexAttrib4NusvARB): popq %rbp popq %rsi popq %rdi - movq 3904(%rax), %r11 + movq 3976(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4NusvARB), .-GL_PREFIX(VertexAttrib4NusvARB) @@ -18365,7 +18698,7 @@ GL_PREFIX(VertexAttrib4NusvARB): GL_PREFIX(VertexAttrib4bvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3912(%rax), %r11 + movq 3984(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18375,13 +18708,13 @@ GL_PREFIX(VertexAttrib4bvARB): popq %rbp popq %rsi popq %rdi - movq 3912(%rax), %r11 + movq 3984(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3912(%rax), %r11 + movq 3984(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18391,7 +18724,7 @@ GL_PREFIX(VertexAttrib4bvARB): popq %rbp popq %rsi popq %rdi - movq 3912(%rax), %r11 + movq 3984(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4bvARB), .-GL_PREFIX(VertexAttrib4bvARB) @@ -18402,7 +18735,7 @@ GL_PREFIX(VertexAttrib4bvARB): GL_PREFIX(VertexAttrib4dARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3920(%rax), %r11 + movq 3992(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -18418,13 +18751,13 @@ GL_PREFIX(VertexAttrib4dARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 3920(%rax), %r11 + movq 3992(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3920(%rax), %r11 + movq 3992(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -18440,7 +18773,7 @@ GL_PREFIX(VertexAttrib4dARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 3920(%rax), %r11 + movq 3992(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4dARB), .-GL_PREFIX(VertexAttrib4dARB) @@ -18451,7 +18784,7 @@ GL_PREFIX(VertexAttrib4dARB): GL_PREFIX(VertexAttrib4dvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3928(%rax), %r11 + movq 4000(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18461,13 +18794,13 @@ GL_PREFIX(VertexAttrib4dvARB): popq %rbp popq %rsi popq %rdi - movq 3928(%rax), %r11 + movq 4000(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3928(%rax), %r11 + movq 4000(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18477,7 +18810,7 @@ GL_PREFIX(VertexAttrib4dvARB): popq %rbp popq %rsi popq %rdi - movq 3928(%rax), %r11 + movq 4000(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4dvARB), .-GL_PREFIX(VertexAttrib4dvARB) @@ -18488,7 +18821,7 @@ GL_PREFIX(VertexAttrib4dvARB): GL_PREFIX(VertexAttrib4fARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3936(%rax), %r11 + movq 4008(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -18504,13 +18837,13 @@ GL_PREFIX(VertexAttrib4fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 3936(%rax), %r11 + movq 4008(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3936(%rax), %r11 + movq 4008(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -18526,7 +18859,7 @@ GL_PREFIX(VertexAttrib4fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 3936(%rax), %r11 + movq 4008(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4fARB), .-GL_PREFIX(VertexAttrib4fARB) @@ -18537,7 +18870,7 @@ GL_PREFIX(VertexAttrib4fARB): GL_PREFIX(VertexAttrib4fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3944(%rax), %r11 + movq 4016(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18547,13 +18880,13 @@ GL_PREFIX(VertexAttrib4fvARB): popq %rbp popq %rsi popq %rdi - movq 3944(%rax), %r11 + movq 4016(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3944(%rax), %r11 + movq 4016(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18563,7 +18896,7 @@ GL_PREFIX(VertexAttrib4fvARB): popq %rbp popq %rsi popq %rdi - movq 3944(%rax), %r11 + movq 4016(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4fvARB), .-GL_PREFIX(VertexAttrib4fvARB) @@ -18574,7 +18907,7 @@ GL_PREFIX(VertexAttrib4fvARB): GL_PREFIX(VertexAttrib4ivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3952(%rax), %r11 + movq 4024(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18584,13 +18917,13 @@ GL_PREFIX(VertexAttrib4ivARB): popq %rbp popq %rsi popq %rdi - movq 3952(%rax), %r11 + movq 4024(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3952(%rax), %r11 + movq 4024(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18600,7 +18933,7 @@ GL_PREFIX(VertexAttrib4ivARB): popq %rbp popq %rsi popq %rdi - movq 3952(%rax), %r11 + movq 4024(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4ivARB), .-GL_PREFIX(VertexAttrib4ivARB) @@ -18611,7 +18944,7 @@ GL_PREFIX(VertexAttrib4ivARB): GL_PREFIX(VertexAttrib4sARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3960(%rax), %r11 + movq 4032(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18625,13 +18958,13 @@ GL_PREFIX(VertexAttrib4sARB): popq %rdx popq %rsi popq %rdi - movq 3960(%rax), %r11 + movq 4032(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3960(%rax), %r11 + movq 4032(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18645,7 +18978,7 @@ GL_PREFIX(VertexAttrib4sARB): popq %rdx popq %rsi popq %rdi - movq 3960(%rax), %r11 + movq 4032(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4sARB), .-GL_PREFIX(VertexAttrib4sARB) @@ -18656,7 +18989,7 @@ GL_PREFIX(VertexAttrib4sARB): GL_PREFIX(VertexAttrib4svARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3968(%rax), %r11 + movq 4040(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18666,13 +18999,13 @@ GL_PREFIX(VertexAttrib4svARB): popq %rbp popq %rsi popq %rdi - movq 3968(%rax), %r11 + movq 4040(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3968(%rax), %r11 + movq 4040(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18682,7 +19015,7 @@ GL_PREFIX(VertexAttrib4svARB): popq %rbp popq %rsi popq %rdi - movq 3968(%rax), %r11 + movq 4040(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4svARB), .-GL_PREFIX(VertexAttrib4svARB) @@ -18693,7 +19026,7 @@ GL_PREFIX(VertexAttrib4svARB): GL_PREFIX(VertexAttrib4ubvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3976(%rax), %r11 + movq 4048(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18703,13 +19036,13 @@ GL_PREFIX(VertexAttrib4ubvARB): popq %rbp popq %rsi popq %rdi - movq 3976(%rax), %r11 + movq 4048(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3976(%rax), %r11 + movq 4048(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18719,7 +19052,7 @@ GL_PREFIX(VertexAttrib4ubvARB): popq %rbp popq %rsi popq %rdi - movq 3976(%rax), %r11 + movq 4048(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4ubvARB), .-GL_PREFIX(VertexAttrib4ubvARB) @@ -18730,7 +19063,7 @@ GL_PREFIX(VertexAttrib4ubvARB): GL_PREFIX(VertexAttrib4uivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3984(%rax), %r11 + movq 4056(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18740,13 +19073,13 @@ GL_PREFIX(VertexAttrib4uivARB): popq %rbp popq %rsi popq %rdi - movq 3984(%rax), %r11 + movq 4056(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3984(%rax), %r11 + movq 4056(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18756,7 +19089,7 @@ GL_PREFIX(VertexAttrib4uivARB): popq %rbp popq %rsi popq %rdi - movq 3984(%rax), %r11 + movq 4056(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4uivARB), .-GL_PREFIX(VertexAttrib4uivARB) @@ -18767,7 +19100,7 @@ GL_PREFIX(VertexAttrib4uivARB): GL_PREFIX(VertexAttrib4usvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 3992(%rax), %r11 + movq 4064(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18777,13 +19110,13 @@ GL_PREFIX(VertexAttrib4usvARB): popq %rbp popq %rsi popq %rdi - movq 3992(%rax), %r11 + movq 4064(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 3992(%rax), %r11 + movq 4064(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18793,7 +19126,7 @@ GL_PREFIX(VertexAttrib4usvARB): popq %rbp popq %rsi popq %rdi - movq 3992(%rax), %r11 + movq 4064(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4usvARB), .-GL_PREFIX(VertexAttrib4usvARB) @@ -18804,7 +19137,7 @@ GL_PREFIX(VertexAttrib4usvARB): GL_PREFIX(VertexAttribPointerARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4000(%rax), %r11 + movq 4072(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18822,13 +19155,13 @@ GL_PREFIX(VertexAttribPointerARB): popq %rdx popq %rsi popq %rdi - movq 4000(%rax), %r11 + movq 4072(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4000(%rax), %r11 + movq 4072(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18846,7 +19179,7 @@ GL_PREFIX(VertexAttribPointerARB): popq %rdx popq %rsi popq %rdi - movq 4000(%rax), %r11 + movq 4072(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribPointerARB), .-GL_PREFIX(VertexAttribPointerARB) @@ -18857,7 +19190,7 @@ GL_PREFIX(VertexAttribPointerARB): GL_PREFIX(BindBufferARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4008(%rax), %r11 + movq 4080(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18867,13 +19200,13 @@ GL_PREFIX(BindBufferARB): popq %rbp popq %rsi popq %rdi - movq 4008(%rax), %r11 + movq 4080(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4008(%rax), %r11 + movq 4080(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18883,7 +19216,7 @@ GL_PREFIX(BindBufferARB): popq %rbp popq %rsi popq %rdi - movq 4008(%rax), %r11 + movq 4080(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindBufferARB), .-GL_PREFIX(BindBufferARB) @@ -18894,7 +19227,7 @@ GL_PREFIX(BindBufferARB): GL_PREFIX(BufferDataARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4016(%rax), %r11 + movq 4088(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18908,13 +19241,13 @@ GL_PREFIX(BufferDataARB): popq %rdx popq %rsi popq %rdi - movq 4016(%rax), %r11 + movq 4088(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4016(%rax), %r11 + movq 4088(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18928,7 +19261,7 @@ GL_PREFIX(BufferDataARB): popq %rdx popq %rsi popq %rdi - movq 4016(%rax), %r11 + movq 4088(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BufferDataARB), .-GL_PREFIX(BufferDataARB) @@ -18939,7 +19272,7 @@ GL_PREFIX(BufferDataARB): GL_PREFIX(BufferSubDataARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4024(%rax), %r11 + movq 4096(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18953,13 +19286,13 @@ GL_PREFIX(BufferSubDataARB): popq %rdx popq %rsi popq %rdi - movq 4024(%rax), %r11 + movq 4096(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4024(%rax), %r11 + movq 4096(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -18973,7 +19306,7 @@ GL_PREFIX(BufferSubDataARB): popq %rdx popq %rsi popq %rdi - movq 4024(%rax), %r11 + movq 4096(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BufferSubDataARB), .-GL_PREFIX(BufferSubDataARB) @@ -18984,7 +19317,7 @@ GL_PREFIX(BufferSubDataARB): GL_PREFIX(DeleteBuffersARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4032(%rax), %r11 + movq 4104(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -18994,13 +19327,13 @@ GL_PREFIX(DeleteBuffersARB): popq %rbp popq %rsi popq %rdi - movq 4032(%rax), %r11 + movq 4104(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4032(%rax), %r11 + movq 4104(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19010,7 +19343,7 @@ GL_PREFIX(DeleteBuffersARB): popq %rbp popq %rsi popq %rdi - movq 4032(%rax), %r11 + movq 4104(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteBuffersARB), .-GL_PREFIX(DeleteBuffersARB) @@ -19021,7 +19354,7 @@ GL_PREFIX(DeleteBuffersARB): GL_PREFIX(GenBuffersARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4040(%rax), %r11 + movq 4112(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19031,13 +19364,13 @@ GL_PREFIX(GenBuffersARB): popq %rbp popq %rsi popq %rdi - movq 4040(%rax), %r11 + movq 4112(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4040(%rax), %r11 + movq 4112(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19047,7 +19380,7 @@ GL_PREFIX(GenBuffersARB): popq %rbp popq %rsi popq %rdi - movq 4040(%rax), %r11 + movq 4112(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenBuffersARB), .-GL_PREFIX(GenBuffersARB) @@ -19058,7 +19391,7 @@ GL_PREFIX(GenBuffersARB): GL_PREFIX(GetBufferParameterivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4048(%rax), %r11 + movq 4120(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19068,13 +19401,13 @@ GL_PREFIX(GetBufferParameterivARB): popq %rdx popq %rsi popq %rdi - movq 4048(%rax), %r11 + movq 4120(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4048(%rax), %r11 + movq 4120(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19084,7 +19417,7 @@ GL_PREFIX(GetBufferParameterivARB): popq %rdx popq %rsi popq %rdi - movq 4048(%rax), %r11 + movq 4120(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetBufferParameterivARB), .-GL_PREFIX(GetBufferParameterivARB) @@ -19095,7 +19428,7 @@ GL_PREFIX(GetBufferParameterivARB): GL_PREFIX(GetBufferPointervARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4056(%rax), %r11 + movq 4128(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19105,13 +19438,13 @@ GL_PREFIX(GetBufferPointervARB): popq %rdx popq %rsi popq %rdi - movq 4056(%rax), %r11 + movq 4128(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4056(%rax), %r11 + movq 4128(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19121,7 +19454,7 @@ GL_PREFIX(GetBufferPointervARB): popq %rdx popq %rsi popq %rdi - movq 4056(%rax), %r11 + movq 4128(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetBufferPointervARB), .-GL_PREFIX(GetBufferPointervARB) @@ -19132,7 +19465,7 @@ GL_PREFIX(GetBufferPointervARB): GL_PREFIX(GetBufferSubDataARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4064(%rax), %r11 + movq 4136(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19146,13 +19479,13 @@ GL_PREFIX(GetBufferSubDataARB): popq %rdx popq %rsi popq %rdi - movq 4064(%rax), %r11 + movq 4136(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4064(%rax), %r11 + movq 4136(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19166,7 +19499,7 @@ GL_PREFIX(GetBufferSubDataARB): popq %rdx popq %rsi popq %rdi - movq 4064(%rax), %r11 + movq 4136(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetBufferSubDataARB), .-GL_PREFIX(GetBufferSubDataARB) @@ -19177,25 +19510,25 @@ GL_PREFIX(GetBufferSubDataARB): GL_PREFIX(IsBufferARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4072(%rax), %r11 + movq 4144(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4072(%rax), %r11 + movq 4144(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4072(%rax), %r11 + movq 4144(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4072(%rax), %r11 + movq 4144(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsBufferARB), .-GL_PREFIX(IsBufferARB) @@ -19206,7 +19539,7 @@ GL_PREFIX(IsBufferARB): GL_PREFIX(MapBufferARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4080(%rax), %r11 + movq 4152(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19216,13 +19549,13 @@ GL_PREFIX(MapBufferARB): popq %rbp popq %rsi popq %rdi - movq 4080(%rax), %r11 + movq 4152(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4080(%rax), %r11 + movq 4152(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19232,7 +19565,7 @@ GL_PREFIX(MapBufferARB): popq %rbp popq %rsi popq %rdi - movq 4080(%rax), %r11 + movq 4152(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MapBufferARB), .-GL_PREFIX(MapBufferARB) @@ -19243,25 +19576,25 @@ GL_PREFIX(MapBufferARB): GL_PREFIX(UnmapBufferARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4088(%rax), %r11 + movq 4160(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4088(%rax), %r11 + movq 4160(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4088(%rax), %r11 + movq 4160(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4088(%rax), %r11 + movq 4160(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(UnmapBufferARB), .-GL_PREFIX(UnmapBufferARB) @@ -19272,7 +19605,7 @@ GL_PREFIX(UnmapBufferARB): GL_PREFIX(BeginQueryARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4096(%rax), %r11 + movq 4168(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19282,13 +19615,13 @@ GL_PREFIX(BeginQueryARB): popq %rbp popq %rsi popq %rdi - movq 4096(%rax), %r11 + movq 4168(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4096(%rax), %r11 + movq 4168(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19298,7 +19631,7 @@ GL_PREFIX(BeginQueryARB): popq %rbp popq %rsi popq %rdi - movq 4096(%rax), %r11 + movq 4168(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BeginQueryARB), .-GL_PREFIX(BeginQueryARB) @@ -19309,7 +19642,7 @@ GL_PREFIX(BeginQueryARB): GL_PREFIX(DeleteQueriesARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4104(%rax), %r11 + movq 4176(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19319,13 +19652,13 @@ GL_PREFIX(DeleteQueriesARB): popq %rbp popq %rsi popq %rdi - movq 4104(%rax), %r11 + movq 4176(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4104(%rax), %r11 + movq 4176(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19335,7 +19668,7 @@ GL_PREFIX(DeleteQueriesARB): popq %rbp popq %rsi popq %rdi - movq 4104(%rax), %r11 + movq 4176(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteQueriesARB), .-GL_PREFIX(DeleteQueriesARB) @@ -19346,25 +19679,25 @@ GL_PREFIX(DeleteQueriesARB): GL_PREFIX(EndQueryARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4112(%rax), %r11 + movq 4184(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4112(%rax), %r11 + movq 4184(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4112(%rax), %r11 + movq 4184(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4112(%rax), %r11 + movq 4184(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EndQueryARB), .-GL_PREFIX(EndQueryARB) @@ -19375,7 +19708,7 @@ GL_PREFIX(EndQueryARB): GL_PREFIX(GenQueriesARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4120(%rax), %r11 + movq 4192(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19385,13 +19718,13 @@ GL_PREFIX(GenQueriesARB): popq %rbp popq %rsi popq %rdi - movq 4120(%rax), %r11 + movq 4192(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4120(%rax), %r11 + movq 4192(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19401,7 +19734,7 @@ GL_PREFIX(GenQueriesARB): popq %rbp popq %rsi popq %rdi - movq 4120(%rax), %r11 + movq 4192(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenQueriesARB), .-GL_PREFIX(GenQueriesARB) @@ -19412,7 +19745,7 @@ GL_PREFIX(GenQueriesARB): GL_PREFIX(GetQueryObjectivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4128(%rax), %r11 + movq 4200(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19422,13 +19755,13 @@ GL_PREFIX(GetQueryObjectivARB): popq %rdx popq %rsi popq %rdi - movq 4128(%rax), %r11 + movq 4200(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4128(%rax), %r11 + movq 4200(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19438,7 +19771,7 @@ GL_PREFIX(GetQueryObjectivARB): popq %rdx popq %rsi popq %rdi - movq 4128(%rax), %r11 + movq 4200(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetQueryObjectivARB), .-GL_PREFIX(GetQueryObjectivARB) @@ -19449,7 +19782,7 @@ GL_PREFIX(GetQueryObjectivARB): GL_PREFIX(GetQueryObjectuivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4136(%rax), %r11 + movq 4208(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19459,13 +19792,13 @@ GL_PREFIX(GetQueryObjectuivARB): popq %rdx popq %rsi popq %rdi - movq 4136(%rax), %r11 + movq 4208(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4136(%rax), %r11 + movq 4208(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19475,7 +19808,7 @@ GL_PREFIX(GetQueryObjectuivARB): popq %rdx popq %rsi popq %rdi - movq 4136(%rax), %r11 + movq 4208(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetQueryObjectuivARB), .-GL_PREFIX(GetQueryObjectuivARB) @@ -19486,7 +19819,7 @@ GL_PREFIX(GetQueryObjectuivARB): GL_PREFIX(GetQueryivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4144(%rax), %r11 + movq 4216(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19496,13 +19829,13 @@ GL_PREFIX(GetQueryivARB): popq %rdx popq %rsi popq %rdi - movq 4144(%rax), %r11 + movq 4216(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4144(%rax), %r11 + movq 4216(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19512,7 +19845,7 @@ GL_PREFIX(GetQueryivARB): popq %rdx popq %rsi popq %rdi - movq 4144(%rax), %r11 + movq 4216(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetQueryivARB), .-GL_PREFIX(GetQueryivARB) @@ -19523,25 +19856,25 @@ GL_PREFIX(GetQueryivARB): GL_PREFIX(IsQueryARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4152(%rax), %r11 + movq 4224(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4152(%rax), %r11 + movq 4224(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4152(%rax), %r11 + movq 4224(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4152(%rax), %r11 + movq 4224(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsQueryARB), .-GL_PREFIX(IsQueryARB) @@ -19552,7 +19885,7 @@ GL_PREFIX(IsQueryARB): GL_PREFIX(AttachObjectARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4160(%rax), %r11 + movq 4232(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19562,13 +19895,13 @@ GL_PREFIX(AttachObjectARB): popq %rbp popq %rsi popq %rdi - movq 4160(%rax), %r11 + movq 4232(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4160(%rax), %r11 + movq 4232(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19578,7 +19911,7 @@ GL_PREFIX(AttachObjectARB): popq %rbp popq %rsi popq %rdi - movq 4160(%rax), %r11 + movq 4232(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(AttachObjectARB), .-GL_PREFIX(AttachObjectARB) @@ -19589,25 +19922,25 @@ GL_PREFIX(AttachObjectARB): GL_PREFIX(CompileShaderARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4168(%rax), %r11 + movq 4240(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4168(%rax), %r11 + movq 4240(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4168(%rax), %r11 + movq 4240(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4168(%rax), %r11 + movq 4240(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CompileShaderARB), .-GL_PREFIX(CompileShaderARB) @@ -19618,25 +19951,25 @@ GL_PREFIX(CompileShaderARB): GL_PREFIX(CreateProgramObjectARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4176(%rax), %r11 + movq 4248(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 4176(%rax), %r11 + movq 4248(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4176(%rax), %r11 + movq 4248(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 4176(%rax), %r11 + movq 4248(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CreateProgramObjectARB), .-GL_PREFIX(CreateProgramObjectARB) @@ -19647,25 +19980,25 @@ GL_PREFIX(CreateProgramObjectARB): GL_PREFIX(CreateShaderObjectARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4184(%rax), %r11 + movq 4256(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4184(%rax), %r11 + movq 4256(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4184(%rax), %r11 + movq 4256(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4184(%rax), %r11 + movq 4256(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CreateShaderObjectARB), .-GL_PREFIX(CreateShaderObjectARB) @@ -19676,25 +20009,25 @@ GL_PREFIX(CreateShaderObjectARB): GL_PREFIX(DeleteObjectARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4192(%rax), %r11 + movq 4264(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4192(%rax), %r11 + movq 4264(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4192(%rax), %r11 + movq 4264(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4192(%rax), %r11 + movq 4264(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteObjectARB), .-GL_PREFIX(DeleteObjectARB) @@ -19705,7 +20038,7 @@ GL_PREFIX(DeleteObjectARB): GL_PREFIX(DetachObjectARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4200(%rax), %r11 + movq 4272(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19715,13 +20048,13 @@ GL_PREFIX(DetachObjectARB): popq %rbp popq %rsi popq %rdi - movq 4200(%rax), %r11 + movq 4272(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4200(%rax), %r11 + movq 4272(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19731,7 +20064,7 @@ GL_PREFIX(DetachObjectARB): popq %rbp popq %rsi popq %rdi - movq 4200(%rax), %r11 + movq 4272(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DetachObjectARB), .-GL_PREFIX(DetachObjectARB) @@ -19742,7 +20075,7 @@ GL_PREFIX(DetachObjectARB): GL_PREFIX(GetActiveUniformARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4208(%rax), %r11 + movq 4280(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19760,13 +20093,13 @@ GL_PREFIX(GetActiveUniformARB): popq %rdx popq %rsi popq %rdi - movq 4208(%rax), %r11 + movq 4280(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4208(%rax), %r11 + movq 4280(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19784,7 +20117,7 @@ GL_PREFIX(GetActiveUniformARB): popq %rdx popq %rsi popq %rdi - movq 4208(%rax), %r11 + movq 4280(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetActiveUniformARB), .-GL_PREFIX(GetActiveUniformARB) @@ -19795,7 +20128,7 @@ GL_PREFIX(GetActiveUniformARB): GL_PREFIX(GetAttachedObjectsARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4216(%rax), %r11 + movq 4288(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19809,13 +20142,13 @@ GL_PREFIX(GetAttachedObjectsARB): popq %rdx popq %rsi popq %rdi - movq 4216(%rax), %r11 + movq 4288(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4216(%rax), %r11 + movq 4288(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19829,7 +20162,7 @@ GL_PREFIX(GetAttachedObjectsARB): popq %rdx popq %rsi popq %rdi - movq 4216(%rax), %r11 + movq 4288(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetAttachedObjectsARB), .-GL_PREFIX(GetAttachedObjectsARB) @@ -19840,25 +20173,25 @@ GL_PREFIX(GetAttachedObjectsARB): GL_PREFIX(GetHandleARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4224(%rax), %r11 + movq 4296(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4224(%rax), %r11 + movq 4296(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4224(%rax), %r11 + movq 4296(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4224(%rax), %r11 + movq 4296(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetHandleARB), .-GL_PREFIX(GetHandleARB) @@ -19869,7 +20202,7 @@ GL_PREFIX(GetHandleARB): GL_PREFIX(GetInfoLogARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4232(%rax), %r11 + movq 4304(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19883,13 +20216,13 @@ GL_PREFIX(GetInfoLogARB): popq %rdx popq %rsi popq %rdi - movq 4232(%rax), %r11 + movq 4304(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4232(%rax), %r11 + movq 4304(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19903,7 +20236,7 @@ GL_PREFIX(GetInfoLogARB): popq %rdx popq %rsi popq %rdi - movq 4232(%rax), %r11 + movq 4304(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetInfoLogARB), .-GL_PREFIX(GetInfoLogARB) @@ -19914,7 +20247,7 @@ GL_PREFIX(GetInfoLogARB): GL_PREFIX(GetObjectParameterfvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4240(%rax), %r11 + movq 4312(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19924,13 +20257,13 @@ GL_PREFIX(GetObjectParameterfvARB): popq %rdx popq %rsi popq %rdi - movq 4240(%rax), %r11 + movq 4312(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4240(%rax), %r11 + movq 4312(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19940,7 +20273,7 @@ GL_PREFIX(GetObjectParameterfvARB): popq %rdx popq %rsi popq %rdi - movq 4240(%rax), %r11 + movq 4312(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetObjectParameterfvARB), .-GL_PREFIX(GetObjectParameterfvARB) @@ -19951,7 +20284,7 @@ GL_PREFIX(GetObjectParameterfvARB): GL_PREFIX(GetObjectParameterivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4248(%rax), %r11 + movq 4320(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -19961,13 +20294,13 @@ GL_PREFIX(GetObjectParameterivARB): popq %rdx popq %rsi popq %rdi - movq 4248(%rax), %r11 + movq 4320(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4248(%rax), %r11 + movq 4320(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -19977,7 +20310,7 @@ GL_PREFIX(GetObjectParameterivARB): popq %rdx popq %rsi popq %rdi - movq 4248(%rax), %r11 + movq 4320(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetObjectParameterivARB), .-GL_PREFIX(GetObjectParameterivARB) @@ -19988,7 +20321,7 @@ GL_PREFIX(GetObjectParameterivARB): GL_PREFIX(GetShaderSourceARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4256(%rax), %r11 + movq 4328(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20002,13 +20335,13 @@ GL_PREFIX(GetShaderSourceARB): popq %rdx popq %rsi popq %rdi - movq 4256(%rax), %r11 + movq 4328(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4256(%rax), %r11 + movq 4328(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20022,7 +20355,7 @@ GL_PREFIX(GetShaderSourceARB): popq %rdx popq %rsi popq %rdi - movq 4256(%rax), %r11 + movq 4328(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetShaderSourceARB), .-GL_PREFIX(GetShaderSourceARB) @@ -20033,7 +20366,7 @@ GL_PREFIX(GetShaderSourceARB): GL_PREFIX(GetUniformLocationARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4264(%rax), %r11 + movq 4336(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20043,13 +20376,13 @@ GL_PREFIX(GetUniformLocationARB): popq %rbp popq %rsi popq %rdi - movq 4264(%rax), %r11 + movq 4336(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4264(%rax), %r11 + movq 4336(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20059,7 +20392,7 @@ GL_PREFIX(GetUniformLocationARB): popq %rbp popq %rsi popq %rdi - movq 4264(%rax), %r11 + movq 4336(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetUniformLocationARB), .-GL_PREFIX(GetUniformLocationARB) @@ -20070,7 +20403,7 @@ GL_PREFIX(GetUniformLocationARB): GL_PREFIX(GetUniformfvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4272(%rax), %r11 + movq 4344(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20080,13 +20413,13 @@ GL_PREFIX(GetUniformfvARB): popq %rdx popq %rsi popq %rdi - movq 4272(%rax), %r11 + movq 4344(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4272(%rax), %r11 + movq 4344(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20096,7 +20429,7 @@ GL_PREFIX(GetUniformfvARB): popq %rdx popq %rsi popq %rdi - movq 4272(%rax), %r11 + movq 4344(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetUniformfvARB), .-GL_PREFIX(GetUniformfvARB) @@ -20107,7 +20440,7 @@ GL_PREFIX(GetUniformfvARB): GL_PREFIX(GetUniformivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4280(%rax), %r11 + movq 4352(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20117,13 +20450,13 @@ GL_PREFIX(GetUniformivARB): popq %rdx popq %rsi popq %rdi - movq 4280(%rax), %r11 + movq 4352(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4280(%rax), %r11 + movq 4352(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20133,7 +20466,7 @@ GL_PREFIX(GetUniformivARB): popq %rdx popq %rsi popq %rdi - movq 4280(%rax), %r11 + movq 4352(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetUniformivARB), .-GL_PREFIX(GetUniformivARB) @@ -20144,25 +20477,25 @@ GL_PREFIX(GetUniformivARB): GL_PREFIX(LinkProgramARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4288(%rax), %r11 + movq 4360(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4288(%rax), %r11 + movq 4360(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4288(%rax), %r11 + movq 4360(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4288(%rax), %r11 + movq 4360(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(LinkProgramARB), .-GL_PREFIX(LinkProgramARB) @@ -20173,7 +20506,7 @@ GL_PREFIX(LinkProgramARB): GL_PREFIX(ShaderSourceARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4296(%rax), %r11 + movq 4368(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20187,13 +20520,13 @@ GL_PREFIX(ShaderSourceARB): popq %rdx popq %rsi popq %rdi - movq 4296(%rax), %r11 + movq 4368(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4296(%rax), %r11 + movq 4368(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20207,7 +20540,7 @@ GL_PREFIX(ShaderSourceARB): popq %rdx popq %rsi popq %rdi - movq 4296(%rax), %r11 + movq 4368(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ShaderSourceARB), .-GL_PREFIX(ShaderSourceARB) @@ -20218,7 +20551,7 @@ GL_PREFIX(ShaderSourceARB): GL_PREFIX(Uniform1fARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4304(%rax), %r11 + movq 4376(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -20228,13 +20561,13 @@ GL_PREFIX(Uniform1fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 4304(%rax), %r11 + movq 4376(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4304(%rax), %r11 + movq 4376(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -20244,7 +20577,7 @@ GL_PREFIX(Uniform1fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 4304(%rax), %r11 + movq 4376(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform1fARB), .-GL_PREFIX(Uniform1fARB) @@ -20255,7 +20588,7 @@ GL_PREFIX(Uniform1fARB): GL_PREFIX(Uniform1fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4312(%rax), %r11 + movq 4384(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20265,13 +20598,13 @@ GL_PREFIX(Uniform1fvARB): popq %rdx popq %rsi popq %rdi - movq 4312(%rax), %r11 + movq 4384(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4312(%rax), %r11 + movq 4384(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20281,7 +20614,7 @@ GL_PREFIX(Uniform1fvARB): popq %rdx popq %rsi popq %rdi - movq 4312(%rax), %r11 + movq 4384(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform1fvARB), .-GL_PREFIX(Uniform1fvARB) @@ -20292,7 +20625,7 @@ GL_PREFIX(Uniform1fvARB): GL_PREFIX(Uniform1iARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4320(%rax), %r11 + movq 4392(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20302,13 +20635,13 @@ GL_PREFIX(Uniform1iARB): popq %rbp popq %rsi popq %rdi - movq 4320(%rax), %r11 + movq 4392(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4320(%rax), %r11 + movq 4392(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20318,7 +20651,7 @@ GL_PREFIX(Uniform1iARB): popq %rbp popq %rsi popq %rdi - movq 4320(%rax), %r11 + movq 4392(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform1iARB), .-GL_PREFIX(Uniform1iARB) @@ -20329,7 +20662,7 @@ GL_PREFIX(Uniform1iARB): GL_PREFIX(Uniform1ivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4328(%rax), %r11 + movq 4400(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20339,13 +20672,13 @@ GL_PREFIX(Uniform1ivARB): popq %rdx popq %rsi popq %rdi - movq 4328(%rax), %r11 + movq 4400(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4328(%rax), %r11 + movq 4400(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20355,7 +20688,7 @@ GL_PREFIX(Uniform1ivARB): popq %rdx popq %rsi popq %rdi - movq 4328(%rax), %r11 + movq 4400(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform1ivARB), .-GL_PREFIX(Uniform1ivARB) @@ -20366,7 +20699,7 @@ GL_PREFIX(Uniform1ivARB): GL_PREFIX(Uniform2fARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4336(%rax), %r11 + movq 4408(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -20378,13 +20711,13 @@ GL_PREFIX(Uniform2fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 4336(%rax), %r11 + movq 4408(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4336(%rax), %r11 + movq 4408(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -20396,7 +20729,7 @@ GL_PREFIX(Uniform2fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 4336(%rax), %r11 + movq 4408(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform2fARB), .-GL_PREFIX(Uniform2fARB) @@ -20407,7 +20740,7 @@ GL_PREFIX(Uniform2fARB): GL_PREFIX(Uniform2fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4344(%rax), %r11 + movq 4416(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20417,13 +20750,13 @@ GL_PREFIX(Uniform2fvARB): popq %rdx popq %rsi popq %rdi - movq 4344(%rax), %r11 + movq 4416(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4344(%rax), %r11 + movq 4416(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20433,7 +20766,7 @@ GL_PREFIX(Uniform2fvARB): popq %rdx popq %rsi popq %rdi - movq 4344(%rax), %r11 + movq 4416(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform2fvARB), .-GL_PREFIX(Uniform2fvARB) @@ -20444,7 +20777,7 @@ GL_PREFIX(Uniform2fvARB): GL_PREFIX(Uniform2iARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4352(%rax), %r11 + movq 4424(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20454,13 +20787,13 @@ GL_PREFIX(Uniform2iARB): popq %rdx popq %rsi popq %rdi - movq 4352(%rax), %r11 + movq 4424(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4352(%rax), %r11 + movq 4424(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20470,7 +20803,7 @@ GL_PREFIX(Uniform2iARB): popq %rdx popq %rsi popq %rdi - movq 4352(%rax), %r11 + movq 4424(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform2iARB), .-GL_PREFIX(Uniform2iARB) @@ -20481,7 +20814,7 @@ GL_PREFIX(Uniform2iARB): GL_PREFIX(Uniform2ivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4360(%rax), %r11 + movq 4432(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20491,13 +20824,13 @@ GL_PREFIX(Uniform2ivARB): popq %rdx popq %rsi popq %rdi - movq 4360(%rax), %r11 + movq 4432(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4360(%rax), %r11 + movq 4432(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20507,7 +20840,7 @@ GL_PREFIX(Uniform2ivARB): popq %rdx popq %rsi popq %rdi - movq 4360(%rax), %r11 + movq 4432(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform2ivARB), .-GL_PREFIX(Uniform2ivARB) @@ -20518,7 +20851,7 @@ GL_PREFIX(Uniform2ivARB): GL_PREFIX(Uniform3fARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4368(%rax), %r11 + movq 4440(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -20532,13 +20865,13 @@ GL_PREFIX(Uniform3fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 4368(%rax), %r11 + movq 4440(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4368(%rax), %r11 + movq 4440(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -20552,7 +20885,7 @@ GL_PREFIX(Uniform3fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 4368(%rax), %r11 + movq 4440(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform3fARB), .-GL_PREFIX(Uniform3fARB) @@ -20563,7 +20896,7 @@ GL_PREFIX(Uniform3fARB): GL_PREFIX(Uniform3fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4376(%rax), %r11 + movq 4448(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20573,13 +20906,13 @@ GL_PREFIX(Uniform3fvARB): popq %rdx popq %rsi popq %rdi - movq 4376(%rax), %r11 + movq 4448(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4376(%rax), %r11 + movq 4448(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20589,7 +20922,7 @@ GL_PREFIX(Uniform3fvARB): popq %rdx popq %rsi popq %rdi - movq 4376(%rax), %r11 + movq 4448(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform3fvARB), .-GL_PREFIX(Uniform3fvARB) @@ -20600,7 +20933,7 @@ GL_PREFIX(Uniform3fvARB): GL_PREFIX(Uniform3iARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4384(%rax), %r11 + movq 4456(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20614,13 +20947,13 @@ GL_PREFIX(Uniform3iARB): popq %rdx popq %rsi popq %rdi - movq 4384(%rax), %r11 + movq 4456(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4384(%rax), %r11 + movq 4456(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20634,7 +20967,7 @@ GL_PREFIX(Uniform3iARB): popq %rdx popq %rsi popq %rdi - movq 4384(%rax), %r11 + movq 4456(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform3iARB), .-GL_PREFIX(Uniform3iARB) @@ -20645,7 +20978,7 @@ GL_PREFIX(Uniform3iARB): GL_PREFIX(Uniform3ivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4392(%rax), %r11 + movq 4464(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20655,13 +20988,13 @@ GL_PREFIX(Uniform3ivARB): popq %rdx popq %rsi popq %rdi - movq 4392(%rax), %r11 + movq 4464(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4392(%rax), %r11 + movq 4464(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20671,7 +21004,7 @@ GL_PREFIX(Uniform3ivARB): popq %rdx popq %rsi popq %rdi - movq 4392(%rax), %r11 + movq 4464(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform3ivARB), .-GL_PREFIX(Uniform3ivARB) @@ -20682,7 +21015,7 @@ GL_PREFIX(Uniform3ivARB): GL_PREFIX(Uniform4fARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4400(%rax), %r11 + movq 4472(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -20698,13 +21031,13 @@ GL_PREFIX(Uniform4fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 4400(%rax), %r11 + movq 4472(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4400(%rax), %r11 + movq 4472(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -20720,7 +21053,7 @@ GL_PREFIX(Uniform4fARB): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 4400(%rax), %r11 + movq 4472(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform4fARB), .-GL_PREFIX(Uniform4fARB) @@ -20731,7 +21064,7 @@ GL_PREFIX(Uniform4fARB): GL_PREFIX(Uniform4fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4408(%rax), %r11 + movq 4480(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20741,13 +21074,13 @@ GL_PREFIX(Uniform4fvARB): popq %rdx popq %rsi popq %rdi - movq 4408(%rax), %r11 + movq 4480(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4408(%rax), %r11 + movq 4480(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20757,7 +21090,7 @@ GL_PREFIX(Uniform4fvARB): popq %rdx popq %rsi popq %rdi - movq 4408(%rax), %r11 + movq 4480(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform4fvARB), .-GL_PREFIX(Uniform4fvARB) @@ -20768,7 +21101,7 @@ GL_PREFIX(Uniform4fvARB): GL_PREFIX(Uniform4iARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4416(%rax), %r11 + movq 4488(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20782,13 +21115,13 @@ GL_PREFIX(Uniform4iARB): popq %rdx popq %rsi popq %rdi - movq 4416(%rax), %r11 + movq 4488(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4416(%rax), %r11 + movq 4488(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20802,7 +21135,7 @@ GL_PREFIX(Uniform4iARB): popq %rdx popq %rsi popq %rdi - movq 4416(%rax), %r11 + movq 4488(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform4iARB), .-GL_PREFIX(Uniform4iARB) @@ -20813,7 +21146,7 @@ GL_PREFIX(Uniform4iARB): GL_PREFIX(Uniform4ivARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4424(%rax), %r11 + movq 4496(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20823,13 +21156,13 @@ GL_PREFIX(Uniform4ivARB): popq %rdx popq %rsi popq %rdi - movq 4424(%rax), %r11 + movq 4496(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4424(%rax), %r11 + movq 4496(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20839,7 +21172,7 @@ GL_PREFIX(Uniform4ivARB): popq %rdx popq %rsi popq %rdi - movq 4424(%rax), %r11 + movq 4496(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform4ivARB), .-GL_PREFIX(Uniform4ivARB) @@ -20850,7 +21183,7 @@ GL_PREFIX(Uniform4ivARB): GL_PREFIX(UniformMatrix2fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4432(%rax), %r11 + movq 4504(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20864,13 +21197,13 @@ GL_PREFIX(UniformMatrix2fvARB): popq %rdx popq %rsi popq %rdi - movq 4432(%rax), %r11 + movq 4504(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4432(%rax), %r11 + movq 4504(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20884,7 +21217,7 @@ GL_PREFIX(UniformMatrix2fvARB): popq %rdx popq %rsi popq %rdi - movq 4432(%rax), %r11 + movq 4504(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(UniformMatrix2fvARB), .-GL_PREFIX(UniformMatrix2fvARB) @@ -20895,7 +21228,7 @@ GL_PREFIX(UniformMatrix2fvARB): GL_PREFIX(UniformMatrix3fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4440(%rax), %r11 + movq 4512(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20909,13 +21242,13 @@ GL_PREFIX(UniformMatrix3fvARB): popq %rdx popq %rsi popq %rdi - movq 4440(%rax), %r11 + movq 4512(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4440(%rax), %r11 + movq 4512(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20929,7 +21262,7 @@ GL_PREFIX(UniformMatrix3fvARB): popq %rdx popq %rsi popq %rdi - movq 4440(%rax), %r11 + movq 4512(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(UniformMatrix3fvARB), .-GL_PREFIX(UniformMatrix3fvARB) @@ -20940,7 +21273,7 @@ GL_PREFIX(UniformMatrix3fvARB): GL_PREFIX(UniformMatrix4fvARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4448(%rax), %r11 + movq 4520(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -20954,13 +21287,13 @@ GL_PREFIX(UniformMatrix4fvARB): popq %rdx popq %rsi popq %rdi - movq 4448(%rax), %r11 + movq 4520(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4448(%rax), %r11 + movq 4520(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -20974,7 +21307,7 @@ GL_PREFIX(UniformMatrix4fvARB): popq %rdx popq %rsi popq %rdi - movq 4448(%rax), %r11 + movq 4520(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(UniformMatrix4fvARB), .-GL_PREFIX(UniformMatrix4fvARB) @@ -20985,25 +21318,25 @@ GL_PREFIX(UniformMatrix4fvARB): GL_PREFIX(UseProgramObjectARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4456(%rax), %r11 + movq 4528(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4456(%rax), %r11 + movq 4528(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4456(%rax), %r11 + movq 4528(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4456(%rax), %r11 + movq 4528(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(UseProgramObjectARB), .-GL_PREFIX(UseProgramObjectARB) @@ -21014,25 +21347,25 @@ GL_PREFIX(UseProgramObjectARB): GL_PREFIX(ValidateProgramARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4464(%rax), %r11 + movq 4536(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4464(%rax), %r11 + movq 4536(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4464(%rax), %r11 + movq 4536(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4464(%rax), %r11 + movq 4536(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ValidateProgramARB), .-GL_PREFIX(ValidateProgramARB) @@ -21043,7 +21376,7 @@ GL_PREFIX(ValidateProgramARB): GL_PREFIX(BindAttribLocationARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4472(%rax), %r11 + movq 4544(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21053,13 +21386,13 @@ GL_PREFIX(BindAttribLocationARB): popq %rdx popq %rsi popq %rdi - movq 4472(%rax), %r11 + movq 4544(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4472(%rax), %r11 + movq 4544(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21069,7 +21402,7 @@ GL_PREFIX(BindAttribLocationARB): popq %rdx popq %rsi popq %rdi - movq 4472(%rax), %r11 + movq 4544(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindAttribLocationARB), .-GL_PREFIX(BindAttribLocationARB) @@ -21080,7 +21413,7 @@ GL_PREFIX(BindAttribLocationARB): GL_PREFIX(GetActiveAttribARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4480(%rax), %r11 + movq 4552(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21098,13 +21431,13 @@ GL_PREFIX(GetActiveAttribARB): popq %rdx popq %rsi popq %rdi - movq 4480(%rax), %r11 + movq 4552(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4480(%rax), %r11 + movq 4552(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21122,7 +21455,7 @@ GL_PREFIX(GetActiveAttribARB): popq %rdx popq %rsi popq %rdi - movq 4480(%rax), %r11 + movq 4552(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetActiveAttribARB), .-GL_PREFIX(GetActiveAttribARB) @@ -21133,7 +21466,7 @@ GL_PREFIX(GetActiveAttribARB): GL_PREFIX(GetAttribLocationARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4488(%rax), %r11 + movq 4560(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21143,13 +21476,13 @@ GL_PREFIX(GetAttribLocationARB): popq %rbp popq %rsi popq %rdi - movq 4488(%rax), %r11 + movq 4560(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4488(%rax), %r11 + movq 4560(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21159,7 +21492,7 @@ GL_PREFIX(GetAttribLocationARB): popq %rbp popq %rsi popq %rdi - movq 4488(%rax), %r11 + movq 4560(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetAttribLocationARB), .-GL_PREFIX(GetAttribLocationARB) @@ -21170,7 +21503,7 @@ GL_PREFIX(GetAttribLocationARB): GL_PREFIX(DrawBuffersARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4496(%rax), %r11 + movq 4568(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21180,13 +21513,13 @@ GL_PREFIX(DrawBuffersARB): popq %rbp popq %rsi popq %rdi - movq 4496(%rax), %r11 + movq 4568(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4496(%rax), %r11 + movq 4568(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21196,18 +21529,108 @@ GL_PREFIX(DrawBuffersARB): popq %rbp popq %rsi popq %rdi - movq 4496(%rax), %r11 + movq 4568(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DrawBuffersARB), .-GL_PREFIX(DrawBuffersARB) .p2align 4,,15 + .globl GL_PREFIX(DrawArraysInstancedARB) + .type GL_PREFIX(DrawArraysInstancedARB), @function +GL_PREFIX(DrawArraysInstancedARB): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4576(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 4576(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4576(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 4576(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(DrawArraysInstancedARB), .-GL_PREFIX(DrawArraysInstancedARB) + + .p2align 4,,15 + .globl GL_PREFIX(DrawElementsInstancedARB) + .type GL_PREFIX(DrawElementsInstancedARB), @function +GL_PREFIX(DrawElementsInstancedARB): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4584(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %r8 + call _x86_64_get_dispatch@PLT + popq %r8 + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 4584(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4584(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %r8 + call _glapi_get_dispatch + popq %r8 + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 4584(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(DrawElementsInstancedARB), .-GL_PREFIX(DrawElementsInstancedARB) + + .p2align 4,,15 .globl GL_PREFIX(RenderbufferStorageMultisample) .type GL_PREFIX(RenderbufferStorageMultisample), @function GL_PREFIX(RenderbufferStorageMultisample): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4504(%rax), %r11 + movq 4592(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21221,13 +21644,13 @@ GL_PREFIX(RenderbufferStorageMultisample): popq %rdx popq %rsi popq %rdi - movq 4504(%rax), %r11 + movq 4592(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4504(%rax), %r11 + movq 4592(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21241,7 +21664,7 @@ GL_PREFIX(RenderbufferStorageMultisample): popq %rdx popq %rsi popq %rdi - movq 4504(%rax), %r11 + movq 4592(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(RenderbufferStorageMultisample), .-GL_PREFIX(RenderbufferStorageMultisample) @@ -21252,7 +21675,7 @@ GL_PREFIX(RenderbufferStorageMultisample): GL_PREFIX(FramebufferTextureARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4512(%rax), %r11 + movq 4600(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21266,13 +21689,13 @@ GL_PREFIX(FramebufferTextureARB): popq %rdx popq %rsi popq %rdi - movq 4512(%rax), %r11 + movq 4600(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4512(%rax), %r11 + movq 4600(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21286,7 +21709,7 @@ GL_PREFIX(FramebufferTextureARB): popq %rdx popq %rsi popq %rdi - movq 4512(%rax), %r11 + movq 4600(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTextureARB), .-GL_PREFIX(FramebufferTextureARB) @@ -21297,7 +21720,7 @@ GL_PREFIX(FramebufferTextureARB): GL_PREFIX(FramebufferTextureFaceARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4520(%rax), %r11 + movq 4608(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21311,13 +21734,13 @@ GL_PREFIX(FramebufferTextureFaceARB): popq %rdx popq %rsi popq %rdi - movq 4520(%rax), %r11 + movq 4608(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4520(%rax), %r11 + movq 4608(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21331,7 +21754,7 @@ GL_PREFIX(FramebufferTextureFaceARB): popq %rdx popq %rsi popq %rdi - movq 4520(%rax), %r11 + movq 4608(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTextureFaceARB), .-GL_PREFIX(FramebufferTextureFaceARB) @@ -21342,7 +21765,7 @@ GL_PREFIX(FramebufferTextureFaceARB): GL_PREFIX(ProgramParameteriARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4528(%rax), %r11 + movq 4616(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21352,13 +21775,13 @@ GL_PREFIX(ProgramParameteriARB): popq %rdx popq %rsi popq %rdi - movq 4528(%rax), %r11 + movq 4616(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4528(%rax), %r11 + movq 4616(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21368,7 +21791,7 @@ GL_PREFIX(ProgramParameteriARB): popq %rdx popq %rsi popq %rdi - movq 4528(%rax), %r11 + movq 4616(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramParameteriARB), .-GL_PREFIX(ProgramParameteriARB) @@ -21379,7 +21802,7 @@ GL_PREFIX(ProgramParameteriARB): GL_PREFIX(FlushMappedBufferRange): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4536(%rax), %r11 + movq 4624(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21389,13 +21812,13 @@ GL_PREFIX(FlushMappedBufferRange): popq %rdx popq %rsi popq %rdi - movq 4536(%rax), %r11 + movq 4624(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4536(%rax), %r11 + movq 4624(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21405,7 +21828,7 @@ GL_PREFIX(FlushMappedBufferRange): popq %rdx popq %rsi popq %rdi - movq 4536(%rax), %r11 + movq 4624(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FlushMappedBufferRange), .-GL_PREFIX(FlushMappedBufferRange) @@ -21416,7 +21839,7 @@ GL_PREFIX(FlushMappedBufferRange): GL_PREFIX(MapBufferRange): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4544(%rax), %r11 + movq 4632(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21430,13 +21853,13 @@ GL_PREFIX(MapBufferRange): popq %rdx popq %rsi popq %rdi - movq 4544(%rax), %r11 + movq 4632(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4544(%rax), %r11 + movq 4632(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21450,7 +21873,7 @@ GL_PREFIX(MapBufferRange): popq %rdx popq %rsi popq %rdi - movq 4544(%rax), %r11 + movq 4632(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MapBufferRange), .-GL_PREFIX(MapBufferRange) @@ -21461,25 +21884,25 @@ GL_PREFIX(MapBufferRange): GL_PREFIX(BindVertexArray): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4552(%rax), %r11 + movq 4640(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4552(%rax), %r11 + movq 4640(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4552(%rax), %r11 + movq 4640(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4552(%rax), %r11 + movq 4640(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindVertexArray), .-GL_PREFIX(BindVertexArray) @@ -21490,7 +21913,7 @@ GL_PREFIX(BindVertexArray): GL_PREFIX(GenVertexArrays): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4560(%rax), %r11 + movq 4648(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21500,13 +21923,13 @@ GL_PREFIX(GenVertexArrays): popq %rbp popq %rsi popq %rdi - movq 4560(%rax), %r11 + movq 4648(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4560(%rax), %r11 + movq 4648(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21516,7 +21939,7 @@ GL_PREFIX(GenVertexArrays): popq %rbp popq %rsi popq %rdi - movq 4560(%rax), %r11 + movq 4648(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenVertexArrays), .-GL_PREFIX(GenVertexArrays) @@ -21527,7 +21950,7 @@ GL_PREFIX(GenVertexArrays): GL_PREFIX(CopyBufferSubData): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4568(%rax), %r11 + movq 4656(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21541,13 +21964,13 @@ GL_PREFIX(CopyBufferSubData): popq %rdx popq %rsi popq %rdi - movq 4568(%rax), %r11 + movq 4656(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4568(%rax), %r11 + movq 4656(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21561,7 +21984,7 @@ GL_PREFIX(CopyBufferSubData): popq %rdx popq %rsi popq %rdi - movq 4568(%rax), %r11 + movq 4656(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CopyBufferSubData), .-GL_PREFIX(CopyBufferSubData) @@ -21572,7 +21995,7 @@ GL_PREFIX(CopyBufferSubData): GL_PREFIX(ClientWaitSync): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4576(%rax), %r11 + movq 4664(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21582,13 +22005,13 @@ GL_PREFIX(ClientWaitSync): popq %rdx popq %rsi popq %rdi - movq 4576(%rax), %r11 + movq 4664(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4576(%rax), %r11 + movq 4664(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21598,7 +22021,7 @@ GL_PREFIX(ClientWaitSync): popq %rdx popq %rsi popq %rdi - movq 4576(%rax), %r11 + movq 4664(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ClientWaitSync), .-GL_PREFIX(ClientWaitSync) @@ -21609,25 +22032,25 @@ GL_PREFIX(ClientWaitSync): GL_PREFIX(DeleteSync): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4584(%rax), %r11 + movq 4672(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4584(%rax), %r11 + movq 4672(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4584(%rax), %r11 + movq 4672(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4584(%rax), %r11 + movq 4672(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteSync), .-GL_PREFIX(DeleteSync) @@ -21638,7 +22061,7 @@ GL_PREFIX(DeleteSync): GL_PREFIX(FenceSync): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4592(%rax), %r11 + movq 4680(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21648,13 +22071,13 @@ GL_PREFIX(FenceSync): popq %rbp popq %rsi popq %rdi - movq 4592(%rax), %r11 + movq 4680(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4592(%rax), %r11 + movq 4680(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21664,7 +22087,7 @@ GL_PREFIX(FenceSync): popq %rbp popq %rsi popq %rdi - movq 4592(%rax), %r11 + movq 4680(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FenceSync), .-GL_PREFIX(FenceSync) @@ -21675,7 +22098,7 @@ GL_PREFIX(FenceSync): GL_PREFIX(GetInteger64v): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4600(%rax), %r11 + movq 4688(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21685,13 +22108,13 @@ GL_PREFIX(GetInteger64v): popq %rbp popq %rsi popq %rdi - movq 4600(%rax), %r11 + movq 4688(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4600(%rax), %r11 + movq 4688(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21701,7 +22124,7 @@ GL_PREFIX(GetInteger64v): popq %rbp popq %rsi popq %rdi - movq 4600(%rax), %r11 + movq 4688(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetInteger64v), .-GL_PREFIX(GetInteger64v) @@ -21712,7 +22135,7 @@ GL_PREFIX(GetInteger64v): GL_PREFIX(GetSynciv): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4608(%rax), %r11 + movq 4696(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21726,13 +22149,13 @@ GL_PREFIX(GetSynciv): popq %rdx popq %rsi popq %rdi - movq 4608(%rax), %r11 + movq 4696(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4608(%rax), %r11 + movq 4696(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21746,7 +22169,7 @@ GL_PREFIX(GetSynciv): popq %rdx popq %rsi popq %rdi - movq 4608(%rax), %r11 + movq 4696(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetSynciv), .-GL_PREFIX(GetSynciv) @@ -21757,25 +22180,25 @@ GL_PREFIX(GetSynciv): GL_PREFIX(IsSync): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4616(%rax), %r11 + movq 4704(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4616(%rax), %r11 + movq 4704(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4616(%rax), %r11 + movq 4704(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4616(%rax), %r11 + movq 4704(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsSync), .-GL_PREFIX(IsSync) @@ -21786,7 +22209,7 @@ GL_PREFIX(IsSync): GL_PREFIX(WaitSync): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4624(%rax), %r11 + movq 4712(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21796,13 +22219,13 @@ GL_PREFIX(WaitSync): popq %rdx popq %rsi popq %rdi - movq 4624(%rax), %r11 + movq 4712(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4624(%rax), %r11 + movq 4712(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21812,7 +22235,7 @@ GL_PREFIX(WaitSync): popq %rdx popq %rsi popq %rdi - movq 4624(%rax), %r11 + movq 4712(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WaitSync), .-GL_PREFIX(WaitSync) @@ -21823,7 +22246,7 @@ GL_PREFIX(WaitSync): GL_PREFIX(DrawElementsBaseVertex): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4632(%rax), %r11 + movq 4720(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21837,13 +22260,13 @@ GL_PREFIX(DrawElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4632(%rax), %r11 + movq 4720(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4632(%rax), %r11 + movq 4720(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21857,7 +22280,7 @@ GL_PREFIX(DrawElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4632(%rax), %r11 + movq 4720(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DrawElementsBaseVertex), .-GL_PREFIX(DrawElementsBaseVertex) @@ -21868,7 +22291,7 @@ GL_PREFIX(DrawElementsBaseVertex): GL_PREFIX(DrawRangeElementsBaseVertex): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4640(%rax), %r11 + movq 4728(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21886,13 +22309,13 @@ GL_PREFIX(DrawRangeElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4640(%rax), %r11 + movq 4728(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4640(%rax), %r11 + movq 4728(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21910,7 +22333,7 @@ GL_PREFIX(DrawRangeElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4640(%rax), %r11 + movq 4728(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DrawRangeElementsBaseVertex), .-GL_PREFIX(DrawRangeElementsBaseVertex) @@ -21921,7 +22344,7 @@ GL_PREFIX(DrawRangeElementsBaseVertex): GL_PREFIX(MultiDrawElementsBaseVertex): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4648(%rax), %r11 + movq 4736(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21939,13 +22362,13 @@ GL_PREFIX(MultiDrawElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4648(%rax), %r11 + movq 4736(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4648(%rax), %r11 + movq 4736(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21963,7 +22386,7 @@ GL_PREFIX(MultiDrawElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4648(%rax), %r11 + movq 4736(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MultiDrawElementsBaseVertex), .-GL_PREFIX(MultiDrawElementsBaseVertex) @@ -21974,7 +22397,7 @@ GL_PREFIX(MultiDrawElementsBaseVertex): GL_PREFIX(BindTransformFeedback): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4656(%rax), %r11 + movq 4744(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21984,13 +22407,13 @@ GL_PREFIX(BindTransformFeedback): popq %rbp popq %rsi popq %rdi - movq 4656(%rax), %r11 + movq 4744(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4656(%rax), %r11 + movq 4744(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22000,7 +22423,7 @@ GL_PREFIX(BindTransformFeedback): popq %rbp popq %rsi popq %rdi - movq 4656(%rax), %r11 + movq 4744(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindTransformFeedback), .-GL_PREFIX(BindTransformFeedback) @@ -22011,7 +22434,7 @@ GL_PREFIX(BindTransformFeedback): GL_PREFIX(DeleteTransformFeedbacks): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4664(%rax), %r11 + movq 4752(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22021,13 +22444,13 @@ GL_PREFIX(DeleteTransformFeedbacks): popq %rbp popq %rsi popq %rdi - movq 4664(%rax), %r11 + movq 4752(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4664(%rax), %r11 + movq 4752(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22037,7 +22460,7 @@ GL_PREFIX(DeleteTransformFeedbacks): popq %rbp popq %rsi popq %rdi - movq 4664(%rax), %r11 + movq 4752(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteTransformFeedbacks), .-GL_PREFIX(DeleteTransformFeedbacks) @@ -22048,7 +22471,7 @@ GL_PREFIX(DeleteTransformFeedbacks): GL_PREFIX(DrawTransformFeedback): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4672(%rax), %r11 + movq 4760(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22058,13 +22481,13 @@ GL_PREFIX(DrawTransformFeedback): popq %rbp popq %rsi popq %rdi - movq 4672(%rax), %r11 + movq 4760(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4672(%rax), %r11 + movq 4760(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22074,7 +22497,7 @@ GL_PREFIX(DrawTransformFeedback): popq %rbp popq %rsi popq %rdi - movq 4672(%rax), %r11 + movq 4760(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DrawTransformFeedback), .-GL_PREFIX(DrawTransformFeedback) @@ -22085,7 +22508,7 @@ GL_PREFIX(DrawTransformFeedback): GL_PREFIX(GenTransformFeedbacks): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4680(%rax), %r11 + movq 4768(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22095,13 +22518,13 @@ GL_PREFIX(GenTransformFeedbacks): popq %rbp popq %rsi popq %rdi - movq 4680(%rax), %r11 + movq 4768(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4680(%rax), %r11 + movq 4768(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22111,7 +22534,7 @@ GL_PREFIX(GenTransformFeedbacks): popq %rbp popq %rsi popq %rdi - movq 4680(%rax), %r11 + movq 4768(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenTransformFeedbacks), .-GL_PREFIX(GenTransformFeedbacks) @@ -22122,25 +22545,25 @@ GL_PREFIX(GenTransformFeedbacks): GL_PREFIX(IsTransformFeedback): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4688(%rax), %r11 + movq 4776(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4688(%rax), %r11 + movq 4776(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4688(%rax), %r11 + movq 4776(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4688(%rax), %r11 + movq 4776(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsTransformFeedback), .-GL_PREFIX(IsTransformFeedback) @@ -22151,25 +22574,25 @@ GL_PREFIX(IsTransformFeedback): GL_PREFIX(PauseTransformFeedback): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4696(%rax), %r11 + movq 4784(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 4696(%rax), %r11 + movq 4784(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4696(%rax), %r11 + movq 4784(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 4696(%rax), %r11 + movq 4784(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PauseTransformFeedback), .-GL_PREFIX(PauseTransformFeedback) @@ -22180,25 +22603,25 @@ GL_PREFIX(PauseTransformFeedback): GL_PREFIX(ResumeTransformFeedback): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4704(%rax), %r11 + movq 4792(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 4704(%rax), %r11 + movq 4792(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4704(%rax), %r11 + movq 4792(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 4704(%rax), %r11 + movq 4792(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ResumeTransformFeedback), .-GL_PREFIX(ResumeTransformFeedback) @@ -22209,7 +22632,7 @@ GL_PREFIX(ResumeTransformFeedback): GL_PREFIX(PolygonOffsetEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4712(%rax), %r11 + movq 4800(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -22219,13 +22642,13 @@ GL_PREFIX(PolygonOffsetEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 4712(%rax), %r11 + movq 4800(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4712(%rax), %r11 + movq 4800(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -22235,19 +22658,19 @@ GL_PREFIX(PolygonOffsetEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 4712(%rax), %r11 + movq 4800(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PolygonOffsetEXT), .-GL_PREFIX(PolygonOffsetEXT) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_590) - .type GL_PREFIX(_dispatch_stub_590), @function - HIDDEN(GL_PREFIX(_dispatch_stub_590)) -GL_PREFIX(_dispatch_stub_590): + .globl GL_PREFIX(_dispatch_stub_601) + .type GL_PREFIX(_dispatch_stub_601), @function + HIDDEN(GL_PREFIX(_dispatch_stub_601)) +GL_PREFIX(_dispatch_stub_601): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4720(%rax), %r11 + movq 4808(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22257,13 +22680,13 @@ GL_PREFIX(_dispatch_stub_590): popq %rbp popq %rsi popq %rdi - movq 4720(%rax), %r11 + movq 4808(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4720(%rax), %r11 + movq 4808(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22273,19 +22696,19 @@ GL_PREFIX(_dispatch_stub_590): popq %rbp popq %rsi popq %rdi - movq 4720(%rax), %r11 + movq 4808(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_590), .-GL_PREFIX(_dispatch_stub_590) + .size GL_PREFIX(_dispatch_stub_601), .-GL_PREFIX(_dispatch_stub_601) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_591) - .type GL_PREFIX(_dispatch_stub_591), @function - HIDDEN(GL_PREFIX(_dispatch_stub_591)) -GL_PREFIX(_dispatch_stub_591): + .globl GL_PREFIX(_dispatch_stub_602) + .type GL_PREFIX(_dispatch_stub_602), @function + HIDDEN(GL_PREFIX(_dispatch_stub_602)) +GL_PREFIX(_dispatch_stub_602): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4728(%rax), %r11 + movq 4816(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22295,13 +22718,13 @@ GL_PREFIX(_dispatch_stub_591): popq %rbp popq %rsi popq %rdi - movq 4728(%rax), %r11 + movq 4816(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4728(%rax), %r11 + movq 4816(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22311,19 +22734,19 @@ GL_PREFIX(_dispatch_stub_591): popq %rbp popq %rsi popq %rdi - movq 4728(%rax), %r11 + movq 4816(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_591), .-GL_PREFIX(_dispatch_stub_591) + .size GL_PREFIX(_dispatch_stub_602), .-GL_PREFIX(_dispatch_stub_602) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_592) - .type GL_PREFIX(_dispatch_stub_592), @function - HIDDEN(GL_PREFIX(_dispatch_stub_592)) -GL_PREFIX(_dispatch_stub_592): + .globl GL_PREFIX(_dispatch_stub_603) + .type GL_PREFIX(_dispatch_stub_603), @function + HIDDEN(GL_PREFIX(_dispatch_stub_603)) +GL_PREFIX(_dispatch_stub_603): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4736(%rax), %r11 + movq 4824(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -22333,13 +22756,13 @@ GL_PREFIX(_dispatch_stub_592): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 4736(%rax), %r11 + movq 4824(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4736(%rax), %r11 + movq 4824(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -22349,19 +22772,19 @@ GL_PREFIX(_dispatch_stub_592): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 4736(%rax), %r11 + movq 4824(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_592), .-GL_PREFIX(_dispatch_stub_592) + .size GL_PREFIX(_dispatch_stub_603), .-GL_PREFIX(_dispatch_stub_603) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_593) - .type GL_PREFIX(_dispatch_stub_593), @function - HIDDEN(GL_PREFIX(_dispatch_stub_593)) -GL_PREFIX(_dispatch_stub_593): + .globl GL_PREFIX(_dispatch_stub_604) + .type GL_PREFIX(_dispatch_stub_604), @function + HIDDEN(GL_PREFIX(_dispatch_stub_604)) +GL_PREFIX(_dispatch_stub_604): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4744(%rax), %r11 + movq 4832(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22371,13 +22794,13 @@ GL_PREFIX(_dispatch_stub_593): popq %rbp popq %rsi popq %rdi - movq 4744(%rax), %r11 + movq 4832(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4744(%rax), %r11 + movq 4832(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22387,19 +22810,19 @@ GL_PREFIX(_dispatch_stub_593): popq %rbp popq %rsi popq %rdi - movq 4744(%rax), %r11 + movq 4832(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_593), .-GL_PREFIX(_dispatch_stub_593) + .size GL_PREFIX(_dispatch_stub_604), .-GL_PREFIX(_dispatch_stub_604) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_594) - .type GL_PREFIX(_dispatch_stub_594), @function - HIDDEN(GL_PREFIX(_dispatch_stub_594)) -GL_PREFIX(_dispatch_stub_594): + .globl GL_PREFIX(_dispatch_stub_605) + .type GL_PREFIX(_dispatch_stub_605), @function + HIDDEN(GL_PREFIX(_dispatch_stub_605)) +GL_PREFIX(_dispatch_stub_605): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4752(%rax), %r11 + movq 4840(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22409,13 +22832,13 @@ GL_PREFIX(_dispatch_stub_594): popq %rbp popq %rsi popq %rdi - movq 4752(%rax), %r11 + movq 4840(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4752(%rax), %r11 + movq 4840(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22425,19 +22848,19 @@ GL_PREFIX(_dispatch_stub_594): popq %rbp popq %rsi popq %rdi - movq 4752(%rax), %r11 + movq 4840(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_594), .-GL_PREFIX(_dispatch_stub_594) + .size GL_PREFIX(_dispatch_stub_605), .-GL_PREFIX(_dispatch_stub_605) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_595) - .type GL_PREFIX(_dispatch_stub_595), @function - HIDDEN(GL_PREFIX(_dispatch_stub_595)) -GL_PREFIX(_dispatch_stub_595): + .globl GL_PREFIX(_dispatch_stub_606) + .type GL_PREFIX(_dispatch_stub_606), @function + HIDDEN(GL_PREFIX(_dispatch_stub_606)) +GL_PREFIX(_dispatch_stub_606): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4760(%rax), %r11 + movq 4848(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22447,13 +22870,13 @@ GL_PREFIX(_dispatch_stub_595): popq %rbp popq %rsi popq %rdi - movq 4760(%rax), %r11 + movq 4848(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4760(%rax), %r11 + movq 4848(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22463,19 +22886,19 @@ GL_PREFIX(_dispatch_stub_595): popq %rbp popq %rsi popq %rdi - movq 4760(%rax), %r11 + movq 4848(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_595), .-GL_PREFIX(_dispatch_stub_595) + .size GL_PREFIX(_dispatch_stub_606), .-GL_PREFIX(_dispatch_stub_606) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_596) - .type GL_PREFIX(_dispatch_stub_596), @function - HIDDEN(GL_PREFIX(_dispatch_stub_596)) -GL_PREFIX(_dispatch_stub_596): + .globl GL_PREFIX(_dispatch_stub_607) + .type GL_PREFIX(_dispatch_stub_607), @function + HIDDEN(GL_PREFIX(_dispatch_stub_607)) +GL_PREFIX(_dispatch_stub_607): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4768(%rax), %r11 + movq 4856(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22485,13 +22908,13 @@ GL_PREFIX(_dispatch_stub_596): popq %rbp popq %rsi popq %rdi - movq 4768(%rax), %r11 + movq 4856(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4768(%rax), %r11 + movq 4856(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22501,40 +22924,40 @@ GL_PREFIX(_dispatch_stub_596): popq %rbp popq %rsi popq %rdi - movq 4768(%rax), %r11 + movq 4856(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_596), .-GL_PREFIX(_dispatch_stub_596) + .size GL_PREFIX(_dispatch_stub_607), .-GL_PREFIX(_dispatch_stub_607) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_597) - .type GL_PREFIX(_dispatch_stub_597), @function - HIDDEN(GL_PREFIX(_dispatch_stub_597)) -GL_PREFIX(_dispatch_stub_597): + .globl GL_PREFIX(_dispatch_stub_608) + .type GL_PREFIX(_dispatch_stub_608), @function + HIDDEN(GL_PREFIX(_dispatch_stub_608)) +GL_PREFIX(_dispatch_stub_608): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4776(%rax), %r11 + movq 4864(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4776(%rax), %r11 + movq 4864(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4776(%rax), %r11 + movq 4864(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4776(%rax), %r11 + movq 4864(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_597), .-GL_PREFIX(_dispatch_stub_597) + .size GL_PREFIX(_dispatch_stub_608), .-GL_PREFIX(_dispatch_stub_608) .p2align 4,,15 .globl GL_PREFIX(ColorPointerEXT) @@ -22542,7 +22965,7 @@ GL_PREFIX(_dispatch_stub_597): GL_PREFIX(ColorPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4784(%rax), %r11 + movq 4872(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22556,13 +22979,13 @@ GL_PREFIX(ColorPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4784(%rax), %r11 + movq 4872(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4784(%rax), %r11 + movq 4872(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22576,7 +22999,7 @@ GL_PREFIX(ColorPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4784(%rax), %r11 + movq 4872(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ColorPointerEXT), .-GL_PREFIX(ColorPointerEXT) @@ -22587,7 +23010,7 @@ GL_PREFIX(ColorPointerEXT): GL_PREFIX(EdgeFlagPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4792(%rax), %r11 + movq 4880(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22597,13 +23020,13 @@ GL_PREFIX(EdgeFlagPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4792(%rax), %r11 + movq 4880(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4792(%rax), %r11 + movq 4880(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22613,7 +23036,7 @@ GL_PREFIX(EdgeFlagPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4792(%rax), %r11 + movq 4880(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EdgeFlagPointerEXT), .-GL_PREFIX(EdgeFlagPointerEXT) @@ -22624,7 +23047,7 @@ GL_PREFIX(EdgeFlagPointerEXT): GL_PREFIX(IndexPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4800(%rax), %r11 + movq 4888(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22638,13 +23061,13 @@ GL_PREFIX(IndexPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4800(%rax), %r11 + movq 4888(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4800(%rax), %r11 + movq 4888(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22658,7 +23081,7 @@ GL_PREFIX(IndexPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4800(%rax), %r11 + movq 4888(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IndexPointerEXT), .-GL_PREFIX(IndexPointerEXT) @@ -22669,7 +23092,7 @@ GL_PREFIX(IndexPointerEXT): GL_PREFIX(NormalPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4808(%rax), %r11 + movq 4896(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22683,13 +23106,13 @@ GL_PREFIX(NormalPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4808(%rax), %r11 + movq 4896(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4808(%rax), %r11 + movq 4896(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22703,7 +23126,7 @@ GL_PREFIX(NormalPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4808(%rax), %r11 + movq 4896(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(NormalPointerEXT), .-GL_PREFIX(NormalPointerEXT) @@ -22714,7 +23137,7 @@ GL_PREFIX(NormalPointerEXT): GL_PREFIX(TexCoordPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4816(%rax), %r11 + movq 4904(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22728,13 +23151,13 @@ GL_PREFIX(TexCoordPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4816(%rax), %r11 + movq 4904(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4816(%rax), %r11 + movq 4904(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22748,7 +23171,7 @@ GL_PREFIX(TexCoordPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4816(%rax), %r11 + movq 4904(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TexCoordPointerEXT), .-GL_PREFIX(TexCoordPointerEXT) @@ -22759,7 +23182,7 @@ GL_PREFIX(TexCoordPointerEXT): GL_PREFIX(VertexPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4824(%rax), %r11 + movq 4912(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22773,13 +23196,13 @@ GL_PREFIX(VertexPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4824(%rax), %r11 + movq 4912(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4824(%rax), %r11 + movq 4912(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22793,7 +23216,7 @@ GL_PREFIX(VertexPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4824(%rax), %r11 + movq 4912(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexPointerEXT), .-GL_PREFIX(VertexPointerEXT) @@ -22804,7 +23227,7 @@ GL_PREFIX(VertexPointerEXT): GL_PREFIX(PointParameterfEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4832(%rax), %r11 + movq 4920(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -22814,13 +23237,13 @@ GL_PREFIX(PointParameterfEXT): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 4832(%rax), %r11 + movq 4920(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4832(%rax), %r11 + movq 4920(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -22830,7 +23253,7 @@ GL_PREFIX(PointParameterfEXT): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 4832(%rax), %r11 + movq 4920(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PointParameterfEXT), .-GL_PREFIX(PointParameterfEXT) @@ -22841,7 +23264,7 @@ GL_PREFIX(PointParameterfEXT): GL_PREFIX(PointParameterfvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4840(%rax), %r11 + movq 4928(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22851,13 +23274,13 @@ GL_PREFIX(PointParameterfvEXT): popq %rbp popq %rsi popq %rdi - movq 4840(%rax), %r11 + movq 4928(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4840(%rax), %r11 + movq 4928(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22867,7 +23290,7 @@ GL_PREFIX(PointParameterfvEXT): popq %rbp popq %rsi popq %rdi - movq 4840(%rax), %r11 + movq 4928(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PointParameterfvEXT), .-GL_PREFIX(PointParameterfvEXT) @@ -22878,7 +23301,7 @@ GL_PREFIX(PointParameterfvEXT): GL_PREFIX(LockArraysEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4848(%rax), %r11 + movq 4936(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22888,13 +23311,13 @@ GL_PREFIX(LockArraysEXT): popq %rbp popq %rsi popq %rdi - movq 4848(%rax), %r11 + movq 4936(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4848(%rax), %r11 + movq 4936(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22904,7 +23327,7 @@ GL_PREFIX(LockArraysEXT): popq %rbp popq %rsi popq %rdi - movq 4848(%rax), %r11 + movq 4936(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(LockArraysEXT), .-GL_PREFIX(LockArraysEXT) @@ -22915,25 +23338,25 @@ GL_PREFIX(LockArraysEXT): GL_PREFIX(UnlockArraysEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4856(%rax), %r11 + movq 4944(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 4856(%rax), %r11 + movq 4944(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4856(%rax), %r11 + movq 4944(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 4856(%rax), %r11 + movq 4944(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(UnlockArraysEXT), .-GL_PREFIX(UnlockArraysEXT) @@ -22944,7 +23367,7 @@ GL_PREFIX(UnlockArraysEXT): GL_PREFIX(SecondaryColor3bEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4864(%rax), %r11 + movq 4952(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22954,13 +23377,13 @@ GL_PREFIX(SecondaryColor3bEXT): popq %rdx popq %rsi popq %rdi - movq 4864(%rax), %r11 + movq 4952(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4864(%rax), %r11 + movq 4952(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22970,7 +23393,7 @@ GL_PREFIX(SecondaryColor3bEXT): popq %rdx popq %rsi popq %rdi - movq 4864(%rax), %r11 + movq 4952(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3bEXT), .-GL_PREFIX(SecondaryColor3bEXT) @@ -22981,25 +23404,25 @@ GL_PREFIX(SecondaryColor3bEXT): GL_PREFIX(SecondaryColor3bvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4872(%rax), %r11 + movq 4960(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4872(%rax), %r11 + movq 4960(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4872(%rax), %r11 + movq 4960(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4872(%rax), %r11 + movq 4960(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3bvEXT), .-GL_PREFIX(SecondaryColor3bvEXT) @@ -23010,7 +23433,7 @@ GL_PREFIX(SecondaryColor3bvEXT): GL_PREFIX(SecondaryColor3dEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4880(%rax), %r11 + movq 4968(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -23022,13 +23445,13 @@ GL_PREFIX(SecondaryColor3dEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 4880(%rax), %r11 + movq 4968(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4880(%rax), %r11 + movq 4968(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -23040,7 +23463,7 @@ GL_PREFIX(SecondaryColor3dEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 4880(%rax), %r11 + movq 4968(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3dEXT), .-GL_PREFIX(SecondaryColor3dEXT) @@ -23051,25 +23474,25 @@ GL_PREFIX(SecondaryColor3dEXT): GL_PREFIX(SecondaryColor3dvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4888(%rax), %r11 + movq 4976(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4888(%rax), %r11 + movq 4976(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4888(%rax), %r11 + movq 4976(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4888(%rax), %r11 + movq 4976(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3dvEXT), .-GL_PREFIX(SecondaryColor3dvEXT) @@ -23080,7 +23503,7 @@ GL_PREFIX(SecondaryColor3dvEXT): GL_PREFIX(SecondaryColor3fEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4896(%rax), %r11 + movq 4984(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -23092,13 +23515,13 @@ GL_PREFIX(SecondaryColor3fEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 4896(%rax), %r11 + movq 4984(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4896(%rax), %r11 + movq 4984(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -23110,7 +23533,7 @@ GL_PREFIX(SecondaryColor3fEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 4896(%rax), %r11 + movq 4984(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3fEXT), .-GL_PREFIX(SecondaryColor3fEXT) @@ -23121,25 +23544,25 @@ GL_PREFIX(SecondaryColor3fEXT): GL_PREFIX(SecondaryColor3fvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4904(%rax), %r11 + movq 4992(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4904(%rax), %r11 + movq 4992(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4904(%rax), %r11 + movq 4992(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4904(%rax), %r11 + movq 4992(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3fvEXT), .-GL_PREFIX(SecondaryColor3fvEXT) @@ -23150,7 +23573,7 @@ GL_PREFIX(SecondaryColor3fvEXT): GL_PREFIX(SecondaryColor3iEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4912(%rax), %r11 + movq 5000(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23160,13 +23583,13 @@ GL_PREFIX(SecondaryColor3iEXT): popq %rdx popq %rsi popq %rdi - movq 4912(%rax), %r11 + movq 5000(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4912(%rax), %r11 + movq 5000(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23176,7 +23599,7 @@ GL_PREFIX(SecondaryColor3iEXT): popq %rdx popq %rsi popq %rdi - movq 4912(%rax), %r11 + movq 5000(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3iEXT), .-GL_PREFIX(SecondaryColor3iEXT) @@ -23187,25 +23610,25 @@ GL_PREFIX(SecondaryColor3iEXT): GL_PREFIX(SecondaryColor3ivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4920(%rax), %r11 + movq 5008(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4920(%rax), %r11 + movq 5008(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4920(%rax), %r11 + movq 5008(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4920(%rax), %r11 + movq 5008(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3ivEXT), .-GL_PREFIX(SecondaryColor3ivEXT) @@ -23216,7 +23639,7 @@ GL_PREFIX(SecondaryColor3ivEXT): GL_PREFIX(SecondaryColor3sEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4928(%rax), %r11 + movq 5016(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23226,13 +23649,13 @@ GL_PREFIX(SecondaryColor3sEXT): popq %rdx popq %rsi popq %rdi - movq 4928(%rax), %r11 + movq 5016(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4928(%rax), %r11 + movq 5016(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23242,7 +23665,7 @@ GL_PREFIX(SecondaryColor3sEXT): popq %rdx popq %rsi popq %rdi - movq 4928(%rax), %r11 + movq 5016(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3sEXT), .-GL_PREFIX(SecondaryColor3sEXT) @@ -23253,25 +23676,25 @@ GL_PREFIX(SecondaryColor3sEXT): GL_PREFIX(SecondaryColor3svEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4936(%rax), %r11 + movq 5024(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4936(%rax), %r11 + movq 5024(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4936(%rax), %r11 + movq 5024(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4936(%rax), %r11 + movq 5024(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3svEXT), .-GL_PREFIX(SecondaryColor3svEXT) @@ -23282,7 +23705,7 @@ GL_PREFIX(SecondaryColor3svEXT): GL_PREFIX(SecondaryColor3ubEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4944(%rax), %r11 + movq 5032(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23292,13 +23715,13 @@ GL_PREFIX(SecondaryColor3ubEXT): popq %rdx popq %rsi popq %rdi - movq 4944(%rax), %r11 + movq 5032(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4944(%rax), %r11 + movq 5032(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23308,7 +23731,7 @@ GL_PREFIX(SecondaryColor3ubEXT): popq %rdx popq %rsi popq %rdi - movq 4944(%rax), %r11 + movq 5032(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3ubEXT), .-GL_PREFIX(SecondaryColor3ubEXT) @@ -23319,25 +23742,25 @@ GL_PREFIX(SecondaryColor3ubEXT): GL_PREFIX(SecondaryColor3ubvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4952(%rax), %r11 + movq 5040(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4952(%rax), %r11 + movq 5040(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4952(%rax), %r11 + movq 5040(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4952(%rax), %r11 + movq 5040(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3ubvEXT), .-GL_PREFIX(SecondaryColor3ubvEXT) @@ -23348,7 +23771,7 @@ GL_PREFIX(SecondaryColor3ubvEXT): GL_PREFIX(SecondaryColor3uiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4960(%rax), %r11 + movq 5048(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23358,13 +23781,13 @@ GL_PREFIX(SecondaryColor3uiEXT): popq %rdx popq %rsi popq %rdi - movq 4960(%rax), %r11 + movq 5048(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4960(%rax), %r11 + movq 5048(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23374,7 +23797,7 @@ GL_PREFIX(SecondaryColor3uiEXT): popq %rdx popq %rsi popq %rdi - movq 4960(%rax), %r11 + movq 5048(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3uiEXT), .-GL_PREFIX(SecondaryColor3uiEXT) @@ -23385,25 +23808,25 @@ GL_PREFIX(SecondaryColor3uiEXT): GL_PREFIX(SecondaryColor3uivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4968(%rax), %r11 + movq 5056(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4968(%rax), %r11 + movq 5056(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4968(%rax), %r11 + movq 5056(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4968(%rax), %r11 + movq 5056(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3uivEXT), .-GL_PREFIX(SecondaryColor3uivEXT) @@ -23414,7 +23837,7 @@ GL_PREFIX(SecondaryColor3uivEXT): GL_PREFIX(SecondaryColor3usEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4976(%rax), %r11 + movq 5064(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23424,13 +23847,13 @@ GL_PREFIX(SecondaryColor3usEXT): popq %rdx popq %rsi popq %rdi - movq 4976(%rax), %r11 + movq 5064(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4976(%rax), %r11 + movq 5064(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23440,7 +23863,7 @@ GL_PREFIX(SecondaryColor3usEXT): popq %rdx popq %rsi popq %rdi - movq 4976(%rax), %r11 + movq 5064(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3usEXT), .-GL_PREFIX(SecondaryColor3usEXT) @@ -23451,25 +23874,25 @@ GL_PREFIX(SecondaryColor3usEXT): GL_PREFIX(SecondaryColor3usvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4984(%rax), %r11 + movq 5072(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4984(%rax), %r11 + movq 5072(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4984(%rax), %r11 + movq 5072(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4984(%rax), %r11 + movq 5072(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3usvEXT), .-GL_PREFIX(SecondaryColor3usvEXT) @@ -23480,7 +23903,7 @@ GL_PREFIX(SecondaryColor3usvEXT): GL_PREFIX(SecondaryColorPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4992(%rax), %r11 + movq 5080(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23494,13 +23917,13 @@ GL_PREFIX(SecondaryColorPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4992(%rax), %r11 + movq 5080(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4992(%rax), %r11 + movq 5080(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23514,7 +23937,7 @@ GL_PREFIX(SecondaryColorPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4992(%rax), %r11 + movq 5080(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColorPointerEXT), .-GL_PREFIX(SecondaryColorPointerEXT) @@ -23525,7 +23948,7 @@ GL_PREFIX(SecondaryColorPointerEXT): GL_PREFIX(MultiDrawArraysEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5000(%rax), %r11 + movq 5088(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23539,13 +23962,13 @@ GL_PREFIX(MultiDrawArraysEXT): popq %rdx popq %rsi popq %rdi - movq 5000(%rax), %r11 + movq 5088(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5000(%rax), %r11 + movq 5088(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23559,7 +23982,7 @@ GL_PREFIX(MultiDrawArraysEXT): popq %rdx popq %rsi popq %rdi - movq 5000(%rax), %r11 + movq 5088(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MultiDrawArraysEXT), .-GL_PREFIX(MultiDrawArraysEXT) @@ -23570,7 +23993,7 @@ GL_PREFIX(MultiDrawArraysEXT): GL_PREFIX(MultiDrawElementsEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5008(%rax), %r11 + movq 5096(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23584,13 +24007,13 @@ GL_PREFIX(MultiDrawElementsEXT): popq %rdx popq %rsi popq %rdi - movq 5008(%rax), %r11 + movq 5096(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5008(%rax), %r11 + movq 5096(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23604,7 +24027,7 @@ GL_PREFIX(MultiDrawElementsEXT): popq %rdx popq %rsi popq %rdi - movq 5008(%rax), %r11 + movq 5096(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MultiDrawElementsEXT), .-GL_PREFIX(MultiDrawElementsEXT) @@ -23615,7 +24038,7 @@ GL_PREFIX(MultiDrawElementsEXT): GL_PREFIX(FogCoordPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5016(%rax), %r11 + movq 5104(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23625,13 +24048,13 @@ GL_PREFIX(FogCoordPointerEXT): popq %rdx popq %rsi popq %rdi - movq 5016(%rax), %r11 + movq 5104(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5016(%rax), %r11 + movq 5104(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23641,7 +24064,7 @@ GL_PREFIX(FogCoordPointerEXT): popq %rdx popq %rsi popq %rdi - movq 5016(%rax), %r11 + movq 5104(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FogCoordPointerEXT), .-GL_PREFIX(FogCoordPointerEXT) @@ -23652,7 +24075,7 @@ GL_PREFIX(FogCoordPointerEXT): GL_PREFIX(FogCoorddEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5024(%rax), %r11 + movq 5112(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $8, %rsp @@ -23660,13 +24083,13 @@ GL_PREFIX(FogCoorddEXT): call _x86_64_get_dispatch@PLT movq (%rsp), %xmm0 addq $8, %rsp - movq 5024(%rax), %r11 + movq 5112(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5024(%rax), %r11 + movq 5112(%rax), %r11 jmp *%r11 1: subq $8, %rsp @@ -23674,7 +24097,7 @@ GL_PREFIX(FogCoorddEXT): call _glapi_get_dispatch movq (%rsp), %xmm0 addq $8, %rsp - movq 5024(%rax), %r11 + movq 5112(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FogCoorddEXT), .-GL_PREFIX(FogCoorddEXT) @@ -23685,25 +24108,25 @@ GL_PREFIX(FogCoorddEXT): GL_PREFIX(FogCoorddvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5032(%rax), %r11 + movq 5120(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5032(%rax), %r11 + movq 5120(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5032(%rax), %r11 + movq 5120(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5032(%rax), %r11 + movq 5120(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FogCoorddvEXT), .-GL_PREFIX(FogCoorddvEXT) @@ -23714,7 +24137,7 @@ GL_PREFIX(FogCoorddvEXT): GL_PREFIX(FogCoordfEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5040(%rax), %r11 + movq 5128(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $8, %rsp @@ -23722,13 +24145,13 @@ GL_PREFIX(FogCoordfEXT): call _x86_64_get_dispatch@PLT movq (%rsp), %xmm0 addq $8, %rsp - movq 5040(%rax), %r11 + movq 5128(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5040(%rax), %r11 + movq 5128(%rax), %r11 jmp *%r11 1: subq $8, %rsp @@ -23736,7 +24159,7 @@ GL_PREFIX(FogCoordfEXT): call _glapi_get_dispatch movq (%rsp), %xmm0 addq $8, %rsp - movq 5040(%rax), %r11 + movq 5128(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FogCoordfEXT), .-GL_PREFIX(FogCoordfEXT) @@ -23747,58 +24170,58 @@ GL_PREFIX(FogCoordfEXT): GL_PREFIX(FogCoordfvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5048(%rax), %r11 + movq 5136(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5048(%rax), %r11 + movq 5136(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5048(%rax), %r11 + movq 5136(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5048(%rax), %r11 + movq 5136(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FogCoordfvEXT), .-GL_PREFIX(FogCoordfvEXT) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_632) - .type GL_PREFIX(_dispatch_stub_632), @function - HIDDEN(GL_PREFIX(_dispatch_stub_632)) -GL_PREFIX(_dispatch_stub_632): + .globl GL_PREFIX(_dispatch_stub_643) + .type GL_PREFIX(_dispatch_stub_643), @function + HIDDEN(GL_PREFIX(_dispatch_stub_643)) +GL_PREFIX(_dispatch_stub_643): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5056(%rax), %r11 + movq 5144(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5056(%rax), %r11 + movq 5144(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5056(%rax), %r11 + movq 5144(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5056(%rax), %r11 + movq 5144(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_632), .-GL_PREFIX(_dispatch_stub_632) + .size GL_PREFIX(_dispatch_stub_643), .-GL_PREFIX(_dispatch_stub_643) .p2align 4,,15 .globl GL_PREFIX(BlendFuncSeparateEXT) @@ -23806,7 +24229,7 @@ GL_PREFIX(_dispatch_stub_632): GL_PREFIX(BlendFuncSeparateEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5064(%rax), %r11 + movq 5152(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23820,13 +24243,13 @@ GL_PREFIX(BlendFuncSeparateEXT): popq %rdx popq %rsi popq %rdi - movq 5064(%rax), %r11 + movq 5152(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5064(%rax), %r11 + movq 5152(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23840,7 +24263,7 @@ GL_PREFIX(BlendFuncSeparateEXT): popq %rdx popq %rsi popq %rdi - movq 5064(%rax), %r11 + movq 5152(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BlendFuncSeparateEXT), .-GL_PREFIX(BlendFuncSeparateEXT) @@ -23851,25 +24274,25 @@ GL_PREFIX(BlendFuncSeparateEXT): GL_PREFIX(FlushVertexArrayRangeNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5072(%rax), %r11 + movq 5160(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 5072(%rax), %r11 + movq 5160(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5072(%rax), %r11 + movq 5160(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 5072(%rax), %r11 + movq 5160(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FlushVertexArrayRangeNV), .-GL_PREFIX(FlushVertexArrayRangeNV) @@ -23880,7 +24303,7 @@ GL_PREFIX(FlushVertexArrayRangeNV): GL_PREFIX(VertexArrayRangeNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5080(%rax), %r11 + movq 5168(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23890,13 +24313,13 @@ GL_PREFIX(VertexArrayRangeNV): popq %rbp popq %rsi popq %rdi - movq 5080(%rax), %r11 + movq 5168(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5080(%rax), %r11 + movq 5168(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23906,7 +24329,7 @@ GL_PREFIX(VertexArrayRangeNV): popq %rbp popq %rsi popq %rdi - movq 5080(%rax), %r11 + movq 5168(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexArrayRangeNV), .-GL_PREFIX(VertexArrayRangeNV) @@ -23917,7 +24340,7 @@ GL_PREFIX(VertexArrayRangeNV): GL_PREFIX(CombinerInputNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5088(%rax), %r11 + movq 5176(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23935,13 +24358,13 @@ GL_PREFIX(CombinerInputNV): popq %rdx popq %rsi popq %rdi - movq 5088(%rax), %r11 + movq 5176(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5088(%rax), %r11 + movq 5176(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23959,7 +24382,7 @@ GL_PREFIX(CombinerInputNV): popq %rdx popq %rsi popq %rdi - movq 5088(%rax), %r11 + movq 5176(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerInputNV), .-GL_PREFIX(CombinerInputNV) @@ -23970,7 +24393,7 @@ GL_PREFIX(CombinerInputNV): GL_PREFIX(CombinerOutputNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5096(%rax), %r11 + movq 5184(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23988,13 +24411,13 @@ GL_PREFIX(CombinerOutputNV): popq %rdx popq %rsi popq %rdi - movq 5096(%rax), %r11 + movq 5184(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5096(%rax), %r11 + movq 5184(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24012,7 +24435,7 @@ GL_PREFIX(CombinerOutputNV): popq %rdx popq %rsi popq %rdi - movq 5096(%rax), %r11 + movq 5184(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerOutputNV), .-GL_PREFIX(CombinerOutputNV) @@ -24023,7 +24446,7 @@ GL_PREFIX(CombinerOutputNV): GL_PREFIX(CombinerParameterfNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5104(%rax), %r11 + movq 5192(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -24033,13 +24456,13 @@ GL_PREFIX(CombinerParameterfNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5104(%rax), %r11 + movq 5192(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5104(%rax), %r11 + movq 5192(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -24049,7 +24472,7 @@ GL_PREFIX(CombinerParameterfNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5104(%rax), %r11 + movq 5192(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerParameterfNV), .-GL_PREFIX(CombinerParameterfNV) @@ -24060,7 +24483,7 @@ GL_PREFIX(CombinerParameterfNV): GL_PREFIX(CombinerParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5112(%rax), %r11 + movq 5200(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24070,13 +24493,13 @@ GL_PREFIX(CombinerParameterfvNV): popq %rbp popq %rsi popq %rdi - movq 5112(%rax), %r11 + movq 5200(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5112(%rax), %r11 + movq 5200(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24086,7 +24509,7 @@ GL_PREFIX(CombinerParameterfvNV): popq %rbp popq %rsi popq %rdi - movq 5112(%rax), %r11 + movq 5200(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerParameterfvNV), .-GL_PREFIX(CombinerParameterfvNV) @@ -24097,7 +24520,7 @@ GL_PREFIX(CombinerParameterfvNV): GL_PREFIX(CombinerParameteriNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5120(%rax), %r11 + movq 5208(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24107,13 +24530,13 @@ GL_PREFIX(CombinerParameteriNV): popq %rbp popq %rsi popq %rdi - movq 5120(%rax), %r11 + movq 5208(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5120(%rax), %r11 + movq 5208(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24123,7 +24546,7 @@ GL_PREFIX(CombinerParameteriNV): popq %rbp popq %rsi popq %rdi - movq 5120(%rax), %r11 + movq 5208(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerParameteriNV), .-GL_PREFIX(CombinerParameteriNV) @@ -24134,7 +24557,7 @@ GL_PREFIX(CombinerParameteriNV): GL_PREFIX(CombinerParameterivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5128(%rax), %r11 + movq 5216(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24144,13 +24567,13 @@ GL_PREFIX(CombinerParameterivNV): popq %rbp popq %rsi popq %rdi - movq 5128(%rax), %r11 + movq 5216(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5128(%rax), %r11 + movq 5216(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24160,7 +24583,7 @@ GL_PREFIX(CombinerParameterivNV): popq %rbp popq %rsi popq %rdi - movq 5128(%rax), %r11 + movq 5216(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerParameterivNV), .-GL_PREFIX(CombinerParameterivNV) @@ -24171,7 +24594,7 @@ GL_PREFIX(CombinerParameterivNV): GL_PREFIX(FinalCombinerInputNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5136(%rax), %r11 + movq 5224(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24185,13 +24608,13 @@ GL_PREFIX(FinalCombinerInputNV): popq %rdx popq %rsi popq %rdi - movq 5136(%rax), %r11 + movq 5224(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5136(%rax), %r11 + movq 5224(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24205,7 +24628,7 @@ GL_PREFIX(FinalCombinerInputNV): popq %rdx popq %rsi popq %rdi - movq 5136(%rax), %r11 + movq 5224(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FinalCombinerInputNV), .-GL_PREFIX(FinalCombinerInputNV) @@ -24216,7 +24639,7 @@ GL_PREFIX(FinalCombinerInputNV): GL_PREFIX(GetCombinerInputParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5144(%rax), %r11 + movq 5232(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24230,13 +24653,13 @@ GL_PREFIX(GetCombinerInputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5144(%rax), %r11 + movq 5232(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5144(%rax), %r11 + movq 5232(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24250,7 +24673,7 @@ GL_PREFIX(GetCombinerInputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5144(%rax), %r11 + movq 5232(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetCombinerInputParameterfvNV), .-GL_PREFIX(GetCombinerInputParameterfvNV) @@ -24261,7 +24684,7 @@ GL_PREFIX(GetCombinerInputParameterfvNV): GL_PREFIX(GetCombinerInputParameterivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5152(%rax), %r11 + movq 5240(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24275,13 +24698,13 @@ GL_PREFIX(GetCombinerInputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5152(%rax), %r11 + movq 5240(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5152(%rax), %r11 + movq 5240(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24295,7 +24718,7 @@ GL_PREFIX(GetCombinerInputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5152(%rax), %r11 + movq 5240(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetCombinerInputParameterivNV), .-GL_PREFIX(GetCombinerInputParameterivNV) @@ -24306,7 +24729,7 @@ GL_PREFIX(GetCombinerInputParameterivNV): GL_PREFIX(GetCombinerOutputParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5160(%rax), %r11 + movq 5248(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24320,13 +24743,13 @@ GL_PREFIX(GetCombinerOutputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5160(%rax), %r11 + movq 5248(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5160(%rax), %r11 + movq 5248(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24340,7 +24763,7 @@ GL_PREFIX(GetCombinerOutputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5160(%rax), %r11 + movq 5248(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetCombinerOutputParameterfvNV), .-GL_PREFIX(GetCombinerOutputParameterfvNV) @@ -24351,7 +24774,7 @@ GL_PREFIX(GetCombinerOutputParameterfvNV): GL_PREFIX(GetCombinerOutputParameterivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5168(%rax), %r11 + movq 5256(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24365,13 +24788,13 @@ GL_PREFIX(GetCombinerOutputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5168(%rax), %r11 + movq 5256(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5168(%rax), %r11 + movq 5256(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24385,7 +24808,7 @@ GL_PREFIX(GetCombinerOutputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5168(%rax), %r11 + movq 5256(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetCombinerOutputParameterivNV), .-GL_PREFIX(GetCombinerOutputParameterivNV) @@ -24396,7 +24819,7 @@ GL_PREFIX(GetCombinerOutputParameterivNV): GL_PREFIX(GetFinalCombinerInputParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5176(%rax), %r11 + movq 5264(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24406,13 +24829,13 @@ GL_PREFIX(GetFinalCombinerInputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5176(%rax), %r11 + movq 5264(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5176(%rax), %r11 + movq 5264(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24422,7 +24845,7 @@ GL_PREFIX(GetFinalCombinerInputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5176(%rax), %r11 + movq 5264(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetFinalCombinerInputParameterfvNV), .-GL_PREFIX(GetFinalCombinerInputParameterfvNV) @@ -24433,7 +24856,7 @@ GL_PREFIX(GetFinalCombinerInputParameterfvNV): GL_PREFIX(GetFinalCombinerInputParameterivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5184(%rax), %r11 + movq 5272(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24443,13 +24866,13 @@ GL_PREFIX(GetFinalCombinerInputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5184(%rax), %r11 + movq 5272(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5184(%rax), %r11 + movq 5272(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24459,7 +24882,7 @@ GL_PREFIX(GetFinalCombinerInputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5184(%rax), %r11 + movq 5272(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetFinalCombinerInputParameterivNV), .-GL_PREFIX(GetFinalCombinerInputParameterivNV) @@ -24470,25 +24893,25 @@ GL_PREFIX(GetFinalCombinerInputParameterivNV): GL_PREFIX(ResizeBuffersMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5192(%rax), %r11 + movq 5280(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 5192(%rax), %r11 + movq 5280(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5192(%rax), %r11 + movq 5280(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 5192(%rax), %r11 + movq 5280(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ResizeBuffersMESA), .-GL_PREFIX(ResizeBuffersMESA) @@ -24499,7 +24922,7 @@ GL_PREFIX(ResizeBuffersMESA): GL_PREFIX(WindowPos2dMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5200(%rax), %r11 + movq 5288(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -24509,13 +24932,13 @@ GL_PREFIX(WindowPos2dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5200(%rax), %r11 + movq 5288(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5200(%rax), %r11 + movq 5288(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -24525,7 +24948,7 @@ GL_PREFIX(WindowPos2dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5200(%rax), %r11 + movq 5288(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2dMESA), .-GL_PREFIX(WindowPos2dMESA) @@ -24536,25 +24959,25 @@ GL_PREFIX(WindowPos2dMESA): GL_PREFIX(WindowPos2dvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5208(%rax), %r11 + movq 5296(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5208(%rax), %r11 + movq 5296(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5208(%rax), %r11 + movq 5296(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5208(%rax), %r11 + movq 5296(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2dvMESA), .-GL_PREFIX(WindowPos2dvMESA) @@ -24565,7 +24988,7 @@ GL_PREFIX(WindowPos2dvMESA): GL_PREFIX(WindowPos2fMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5216(%rax), %r11 + movq 5304(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -24575,13 +24998,13 @@ GL_PREFIX(WindowPos2fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5216(%rax), %r11 + movq 5304(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5216(%rax), %r11 + movq 5304(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -24591,7 +25014,7 @@ GL_PREFIX(WindowPos2fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5216(%rax), %r11 + movq 5304(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2fMESA), .-GL_PREFIX(WindowPos2fMESA) @@ -24602,25 +25025,25 @@ GL_PREFIX(WindowPos2fMESA): GL_PREFIX(WindowPos2fvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5224(%rax), %r11 + movq 5312(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5224(%rax), %r11 + movq 5312(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5224(%rax), %r11 + movq 5312(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5224(%rax), %r11 + movq 5312(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2fvMESA), .-GL_PREFIX(WindowPos2fvMESA) @@ -24631,7 +25054,7 @@ GL_PREFIX(WindowPos2fvMESA): GL_PREFIX(WindowPos2iMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5232(%rax), %r11 + movq 5320(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24641,13 +25064,13 @@ GL_PREFIX(WindowPos2iMESA): popq %rbp popq %rsi popq %rdi - movq 5232(%rax), %r11 + movq 5320(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5232(%rax), %r11 + movq 5320(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24657,7 +25080,7 @@ GL_PREFIX(WindowPos2iMESA): popq %rbp popq %rsi popq %rdi - movq 5232(%rax), %r11 + movq 5320(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2iMESA), .-GL_PREFIX(WindowPos2iMESA) @@ -24668,25 +25091,25 @@ GL_PREFIX(WindowPos2iMESA): GL_PREFIX(WindowPos2ivMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5240(%rax), %r11 + movq 5328(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5240(%rax), %r11 + movq 5328(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5240(%rax), %r11 + movq 5328(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5240(%rax), %r11 + movq 5328(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2ivMESA), .-GL_PREFIX(WindowPos2ivMESA) @@ -24697,7 +25120,7 @@ GL_PREFIX(WindowPos2ivMESA): GL_PREFIX(WindowPos2sMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5248(%rax), %r11 + movq 5336(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24707,13 +25130,13 @@ GL_PREFIX(WindowPos2sMESA): popq %rbp popq %rsi popq %rdi - movq 5248(%rax), %r11 + movq 5336(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5248(%rax), %r11 + movq 5336(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24723,7 +25146,7 @@ GL_PREFIX(WindowPos2sMESA): popq %rbp popq %rsi popq %rdi - movq 5248(%rax), %r11 + movq 5336(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2sMESA), .-GL_PREFIX(WindowPos2sMESA) @@ -24734,25 +25157,25 @@ GL_PREFIX(WindowPos2sMESA): GL_PREFIX(WindowPos2svMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5256(%rax), %r11 + movq 5344(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5256(%rax), %r11 + movq 5344(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5256(%rax), %r11 + movq 5344(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5256(%rax), %r11 + movq 5344(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2svMESA), .-GL_PREFIX(WindowPos2svMESA) @@ -24763,7 +25186,7 @@ GL_PREFIX(WindowPos2svMESA): GL_PREFIX(WindowPos3dMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5264(%rax), %r11 + movq 5352(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -24775,13 +25198,13 @@ GL_PREFIX(WindowPos3dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5264(%rax), %r11 + movq 5352(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5264(%rax), %r11 + movq 5352(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -24793,7 +25216,7 @@ GL_PREFIX(WindowPos3dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5264(%rax), %r11 + movq 5352(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3dMESA), .-GL_PREFIX(WindowPos3dMESA) @@ -24804,25 +25227,25 @@ GL_PREFIX(WindowPos3dMESA): GL_PREFIX(WindowPos3dvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5272(%rax), %r11 + movq 5360(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5272(%rax), %r11 + movq 5360(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5272(%rax), %r11 + movq 5360(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5272(%rax), %r11 + movq 5360(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3dvMESA), .-GL_PREFIX(WindowPos3dvMESA) @@ -24833,7 +25256,7 @@ GL_PREFIX(WindowPos3dvMESA): GL_PREFIX(WindowPos3fMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5280(%rax), %r11 + movq 5368(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -24845,13 +25268,13 @@ GL_PREFIX(WindowPos3fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5280(%rax), %r11 + movq 5368(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5280(%rax), %r11 + movq 5368(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -24863,7 +25286,7 @@ GL_PREFIX(WindowPos3fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5280(%rax), %r11 + movq 5368(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3fMESA), .-GL_PREFIX(WindowPos3fMESA) @@ -24874,25 +25297,25 @@ GL_PREFIX(WindowPos3fMESA): GL_PREFIX(WindowPos3fvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5288(%rax), %r11 + movq 5376(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5288(%rax), %r11 + movq 5376(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5288(%rax), %r11 + movq 5376(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5288(%rax), %r11 + movq 5376(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3fvMESA), .-GL_PREFIX(WindowPos3fvMESA) @@ -24903,7 +25326,7 @@ GL_PREFIX(WindowPos3fvMESA): GL_PREFIX(WindowPos3iMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5296(%rax), %r11 + movq 5384(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24913,13 +25336,13 @@ GL_PREFIX(WindowPos3iMESA): popq %rdx popq %rsi popq %rdi - movq 5296(%rax), %r11 + movq 5384(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5296(%rax), %r11 + movq 5384(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24929,7 +25352,7 @@ GL_PREFIX(WindowPos3iMESA): popq %rdx popq %rsi popq %rdi - movq 5296(%rax), %r11 + movq 5384(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3iMESA), .-GL_PREFIX(WindowPos3iMESA) @@ -24940,25 +25363,25 @@ GL_PREFIX(WindowPos3iMESA): GL_PREFIX(WindowPos3ivMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5304(%rax), %r11 + movq 5392(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5304(%rax), %r11 + movq 5392(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5304(%rax), %r11 + movq 5392(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5304(%rax), %r11 + movq 5392(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3ivMESA), .-GL_PREFIX(WindowPos3ivMESA) @@ -24969,7 +25392,7 @@ GL_PREFIX(WindowPos3ivMESA): GL_PREFIX(WindowPos3sMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5312(%rax), %r11 + movq 5400(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24979,13 +25402,13 @@ GL_PREFIX(WindowPos3sMESA): popq %rdx popq %rsi popq %rdi - movq 5312(%rax), %r11 + movq 5400(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5312(%rax), %r11 + movq 5400(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24995,7 +25418,7 @@ GL_PREFIX(WindowPos3sMESA): popq %rdx popq %rsi popq %rdi - movq 5312(%rax), %r11 + movq 5400(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3sMESA), .-GL_PREFIX(WindowPos3sMESA) @@ -25006,25 +25429,25 @@ GL_PREFIX(WindowPos3sMESA): GL_PREFIX(WindowPos3svMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5320(%rax), %r11 + movq 5408(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5320(%rax), %r11 + movq 5408(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5320(%rax), %r11 + movq 5408(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5320(%rax), %r11 + movq 5408(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3svMESA), .-GL_PREFIX(WindowPos3svMESA) @@ -25035,7 +25458,7 @@ GL_PREFIX(WindowPos3svMESA): GL_PREFIX(WindowPos4dMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5328(%rax), %r11 + movq 5416(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -25049,13 +25472,13 @@ GL_PREFIX(WindowPos4dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $40, %rsp - movq 5328(%rax), %r11 + movq 5416(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5328(%rax), %r11 + movq 5416(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -25069,7 +25492,7 @@ GL_PREFIX(WindowPos4dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $40, %rsp - movq 5328(%rax), %r11 + movq 5416(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4dMESA), .-GL_PREFIX(WindowPos4dMESA) @@ -25080,25 +25503,25 @@ GL_PREFIX(WindowPos4dMESA): GL_PREFIX(WindowPos4dvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5336(%rax), %r11 + movq 5424(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5336(%rax), %r11 + movq 5424(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5336(%rax), %r11 + movq 5424(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5336(%rax), %r11 + movq 5424(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4dvMESA), .-GL_PREFIX(WindowPos4dvMESA) @@ -25109,7 +25532,7 @@ GL_PREFIX(WindowPos4dvMESA): GL_PREFIX(WindowPos4fMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5344(%rax), %r11 + movq 5432(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -25123,13 +25546,13 @@ GL_PREFIX(WindowPos4fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $40, %rsp - movq 5344(%rax), %r11 + movq 5432(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5344(%rax), %r11 + movq 5432(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -25143,7 +25566,7 @@ GL_PREFIX(WindowPos4fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $40, %rsp - movq 5344(%rax), %r11 + movq 5432(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4fMESA), .-GL_PREFIX(WindowPos4fMESA) @@ -25154,25 +25577,25 @@ GL_PREFIX(WindowPos4fMESA): GL_PREFIX(WindowPos4fvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5352(%rax), %r11 + movq 5440(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5352(%rax), %r11 + movq 5440(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5352(%rax), %r11 + movq 5440(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5352(%rax), %r11 + movq 5440(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4fvMESA), .-GL_PREFIX(WindowPos4fvMESA) @@ -25183,7 +25606,7 @@ GL_PREFIX(WindowPos4fvMESA): GL_PREFIX(WindowPos4iMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5360(%rax), %r11 + movq 5448(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25197,13 +25620,13 @@ GL_PREFIX(WindowPos4iMESA): popq %rdx popq %rsi popq %rdi - movq 5360(%rax), %r11 + movq 5448(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5360(%rax), %r11 + movq 5448(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25217,7 +25640,7 @@ GL_PREFIX(WindowPos4iMESA): popq %rdx popq %rsi popq %rdi - movq 5360(%rax), %r11 + movq 5448(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4iMESA), .-GL_PREFIX(WindowPos4iMESA) @@ -25228,25 +25651,25 @@ GL_PREFIX(WindowPos4iMESA): GL_PREFIX(WindowPos4ivMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5368(%rax), %r11 + movq 5456(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5368(%rax), %r11 + movq 5456(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5368(%rax), %r11 + movq 5456(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5368(%rax), %r11 + movq 5456(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4ivMESA), .-GL_PREFIX(WindowPos4ivMESA) @@ -25257,7 +25680,7 @@ GL_PREFIX(WindowPos4ivMESA): GL_PREFIX(WindowPos4sMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5376(%rax), %r11 + movq 5464(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25271,13 +25694,13 @@ GL_PREFIX(WindowPos4sMESA): popq %rdx popq %rsi popq %rdi - movq 5376(%rax), %r11 + movq 5464(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5376(%rax), %r11 + movq 5464(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25291,7 +25714,7 @@ GL_PREFIX(WindowPos4sMESA): popq %rdx popq %rsi popq %rdi - movq 5376(%rax), %r11 + movq 5464(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4sMESA), .-GL_PREFIX(WindowPos4sMESA) @@ -25302,37 +25725,37 @@ GL_PREFIX(WindowPos4sMESA): GL_PREFIX(WindowPos4svMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5384(%rax), %r11 + movq 5472(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5384(%rax), %r11 + movq 5472(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5384(%rax), %r11 + movq 5472(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5384(%rax), %r11 + movq 5472(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4svMESA), .-GL_PREFIX(WindowPos4svMESA) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_674) - .type GL_PREFIX(_dispatch_stub_674), @function - HIDDEN(GL_PREFIX(_dispatch_stub_674)) -GL_PREFIX(_dispatch_stub_674): + .globl GL_PREFIX(_dispatch_stub_685) + .type GL_PREFIX(_dispatch_stub_685), @function + HIDDEN(GL_PREFIX(_dispatch_stub_685)) +GL_PREFIX(_dispatch_stub_685): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5392(%rax), %r11 + movq 5480(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25346,13 +25769,13 @@ GL_PREFIX(_dispatch_stub_674): popq %rdx popq %rsi popq %rdi - movq 5392(%rax), %r11 + movq 5480(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5392(%rax), %r11 + movq 5480(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25366,19 +25789,19 @@ GL_PREFIX(_dispatch_stub_674): popq %rdx popq %rsi popq %rdi - movq 5392(%rax), %r11 + movq 5480(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_674), .-GL_PREFIX(_dispatch_stub_674) + .size GL_PREFIX(_dispatch_stub_685), .-GL_PREFIX(_dispatch_stub_685) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_675) - .type GL_PREFIX(_dispatch_stub_675), @function - HIDDEN(GL_PREFIX(_dispatch_stub_675)) -GL_PREFIX(_dispatch_stub_675): + .globl GL_PREFIX(_dispatch_stub_686) + .type GL_PREFIX(_dispatch_stub_686), @function + HIDDEN(GL_PREFIX(_dispatch_stub_686)) +GL_PREFIX(_dispatch_stub_686): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5400(%rax), %r11 + movq 5488(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25396,13 +25819,13 @@ GL_PREFIX(_dispatch_stub_675): popq %rdx popq %rsi popq %rdi - movq 5400(%rax), %r11 + movq 5488(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5400(%rax), %r11 + movq 5488(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25420,19 +25843,19 @@ GL_PREFIX(_dispatch_stub_675): popq %rdx popq %rsi popq %rdi - movq 5400(%rax), %r11 + movq 5488(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_675), .-GL_PREFIX(_dispatch_stub_675) + .size GL_PREFIX(_dispatch_stub_686), .-GL_PREFIX(_dispatch_stub_686) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_676) - .type GL_PREFIX(_dispatch_stub_676), @function - HIDDEN(GL_PREFIX(_dispatch_stub_676)) -GL_PREFIX(_dispatch_stub_676): + .globl GL_PREFIX(_dispatch_stub_687) + .type GL_PREFIX(_dispatch_stub_687), @function + HIDDEN(GL_PREFIX(_dispatch_stub_687)) +GL_PREFIX(_dispatch_stub_687): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5408(%rax), %r11 + movq 5496(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25442,13 +25865,13 @@ GL_PREFIX(_dispatch_stub_676): popq %rbp popq %rsi popq %rdi - movq 5408(%rax), %r11 + movq 5496(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5408(%rax), %r11 + movq 5496(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25458,49 +25881,49 @@ GL_PREFIX(_dispatch_stub_676): popq %rbp popq %rsi popq %rdi - movq 5408(%rax), %r11 + movq 5496(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_676), .-GL_PREFIX(_dispatch_stub_676) + .size GL_PREFIX(_dispatch_stub_687), .-GL_PREFIX(_dispatch_stub_687) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_677) - .type GL_PREFIX(_dispatch_stub_677), @function - HIDDEN(GL_PREFIX(_dispatch_stub_677)) -GL_PREFIX(_dispatch_stub_677): + .globl GL_PREFIX(_dispatch_stub_688) + .type GL_PREFIX(_dispatch_stub_688), @function + HIDDEN(GL_PREFIX(_dispatch_stub_688)) +GL_PREFIX(_dispatch_stub_688): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5416(%rax), %r11 + movq 5504(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5416(%rax), %r11 + movq 5504(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5416(%rax), %r11 + movq 5504(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5416(%rax), %r11 + movq 5504(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_677), .-GL_PREFIX(_dispatch_stub_677) + .size GL_PREFIX(_dispatch_stub_688), .-GL_PREFIX(_dispatch_stub_688) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_678) - .type GL_PREFIX(_dispatch_stub_678), @function - HIDDEN(GL_PREFIX(_dispatch_stub_678)) -GL_PREFIX(_dispatch_stub_678): + .globl GL_PREFIX(_dispatch_stub_689) + .type GL_PREFIX(_dispatch_stub_689), @function + HIDDEN(GL_PREFIX(_dispatch_stub_689)) +GL_PREFIX(_dispatch_stub_689): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5424(%rax), %r11 + movq 5512(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25510,13 +25933,13 @@ GL_PREFIX(_dispatch_stub_678): popq %rbp popq %rsi popq %rdi - movq 5424(%rax), %r11 + movq 5512(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5424(%rax), %r11 + movq 5512(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25526,19 +25949,19 @@ GL_PREFIX(_dispatch_stub_678): popq %rbp popq %rsi popq %rdi - movq 5424(%rax), %r11 + movq 5512(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_678), .-GL_PREFIX(_dispatch_stub_678) + .size GL_PREFIX(_dispatch_stub_689), .-GL_PREFIX(_dispatch_stub_689) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_679) - .type GL_PREFIX(_dispatch_stub_679), @function - HIDDEN(GL_PREFIX(_dispatch_stub_679)) -GL_PREFIX(_dispatch_stub_679): + .globl GL_PREFIX(_dispatch_stub_690) + .type GL_PREFIX(_dispatch_stub_690), @function + HIDDEN(GL_PREFIX(_dispatch_stub_690)) +GL_PREFIX(_dispatch_stub_690): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5432(%rax), %r11 + movq 5520(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25548,13 +25971,13 @@ GL_PREFIX(_dispatch_stub_679): popq %rdx popq %rsi popq %rdi - movq 5432(%rax), %r11 + movq 5520(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5432(%rax), %r11 + movq 5520(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25564,49 +25987,49 @@ GL_PREFIX(_dispatch_stub_679): popq %rdx popq %rsi popq %rdi - movq 5432(%rax), %r11 + movq 5520(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_679), .-GL_PREFIX(_dispatch_stub_679) + .size GL_PREFIX(_dispatch_stub_690), .-GL_PREFIX(_dispatch_stub_690) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_680) - .type GL_PREFIX(_dispatch_stub_680), @function - HIDDEN(GL_PREFIX(_dispatch_stub_680)) -GL_PREFIX(_dispatch_stub_680): + .globl GL_PREFIX(_dispatch_stub_691) + .type GL_PREFIX(_dispatch_stub_691), @function + HIDDEN(GL_PREFIX(_dispatch_stub_691)) +GL_PREFIX(_dispatch_stub_691): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5440(%rax), %r11 + movq 5528(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5440(%rax), %r11 + movq 5528(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5440(%rax), %r11 + movq 5528(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5440(%rax), %r11 + movq 5528(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_680), .-GL_PREFIX(_dispatch_stub_680) + .size GL_PREFIX(_dispatch_stub_691), .-GL_PREFIX(_dispatch_stub_691) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_681) - .type GL_PREFIX(_dispatch_stub_681), @function - HIDDEN(GL_PREFIX(_dispatch_stub_681)) -GL_PREFIX(_dispatch_stub_681): + .globl GL_PREFIX(_dispatch_stub_692) + .type GL_PREFIX(_dispatch_stub_692), @function + HIDDEN(GL_PREFIX(_dispatch_stub_692)) +GL_PREFIX(_dispatch_stub_692): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5448(%rax), %r11 + movq 5536(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25616,13 +26039,13 @@ GL_PREFIX(_dispatch_stub_681): popq %rbp popq %rsi popq %rdi - movq 5448(%rax), %r11 + movq 5536(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5448(%rax), %r11 + movq 5536(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25632,40 +26055,40 @@ GL_PREFIX(_dispatch_stub_681): popq %rbp popq %rsi popq %rdi - movq 5448(%rax), %r11 + movq 5536(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_681), .-GL_PREFIX(_dispatch_stub_681) + .size GL_PREFIX(_dispatch_stub_692), .-GL_PREFIX(_dispatch_stub_692) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_682) - .type GL_PREFIX(_dispatch_stub_682), @function - HIDDEN(GL_PREFIX(_dispatch_stub_682)) -GL_PREFIX(_dispatch_stub_682): + .globl GL_PREFIX(_dispatch_stub_693) + .type GL_PREFIX(_dispatch_stub_693), @function + HIDDEN(GL_PREFIX(_dispatch_stub_693)) +GL_PREFIX(_dispatch_stub_693): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5456(%rax), %r11 + movq 5544(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5456(%rax), %r11 + movq 5544(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5456(%rax), %r11 + movq 5544(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5456(%rax), %r11 + movq 5544(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_682), .-GL_PREFIX(_dispatch_stub_682) + .size GL_PREFIX(_dispatch_stub_693), .-GL_PREFIX(_dispatch_stub_693) .p2align 4,,15 .globl GL_PREFIX(AreProgramsResidentNV) @@ -25673,7 +26096,7 @@ GL_PREFIX(_dispatch_stub_682): GL_PREFIX(AreProgramsResidentNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5464(%rax), %r11 + movq 5552(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25683,13 +26106,13 @@ GL_PREFIX(AreProgramsResidentNV): popq %rdx popq %rsi popq %rdi - movq 5464(%rax), %r11 + movq 5552(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5464(%rax), %r11 + movq 5552(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25699,7 +26122,7 @@ GL_PREFIX(AreProgramsResidentNV): popq %rdx popq %rsi popq %rdi - movq 5464(%rax), %r11 + movq 5552(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(AreProgramsResidentNV), .-GL_PREFIX(AreProgramsResidentNV) @@ -25710,7 +26133,7 @@ GL_PREFIX(AreProgramsResidentNV): GL_PREFIX(BindProgramNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5472(%rax), %r11 + movq 5560(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25720,13 +26143,13 @@ GL_PREFIX(BindProgramNV): popq %rbp popq %rsi popq %rdi - movq 5472(%rax), %r11 + movq 5560(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5472(%rax), %r11 + movq 5560(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25736,7 +26159,7 @@ GL_PREFIX(BindProgramNV): popq %rbp popq %rsi popq %rdi - movq 5472(%rax), %r11 + movq 5560(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindProgramNV), .-GL_PREFIX(BindProgramNV) @@ -25747,7 +26170,7 @@ GL_PREFIX(BindProgramNV): GL_PREFIX(DeleteProgramsNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5480(%rax), %r11 + movq 5568(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25757,13 +26180,13 @@ GL_PREFIX(DeleteProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5480(%rax), %r11 + movq 5568(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5480(%rax), %r11 + movq 5568(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25773,7 +26196,7 @@ GL_PREFIX(DeleteProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5480(%rax), %r11 + movq 5568(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteProgramsNV), .-GL_PREFIX(DeleteProgramsNV) @@ -25784,7 +26207,7 @@ GL_PREFIX(DeleteProgramsNV): GL_PREFIX(ExecuteProgramNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5488(%rax), %r11 + movq 5576(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25794,13 +26217,13 @@ GL_PREFIX(ExecuteProgramNV): popq %rdx popq %rsi popq %rdi - movq 5488(%rax), %r11 + movq 5576(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5488(%rax), %r11 + movq 5576(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25810,7 +26233,7 @@ GL_PREFIX(ExecuteProgramNV): popq %rdx popq %rsi popq %rdi - movq 5488(%rax), %r11 + movq 5576(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ExecuteProgramNV), .-GL_PREFIX(ExecuteProgramNV) @@ -25821,7 +26244,7 @@ GL_PREFIX(ExecuteProgramNV): GL_PREFIX(GenProgramsNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5496(%rax), %r11 + movq 5584(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25831,13 +26254,13 @@ GL_PREFIX(GenProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5496(%rax), %r11 + movq 5584(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5496(%rax), %r11 + movq 5584(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25847,7 +26270,7 @@ GL_PREFIX(GenProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5496(%rax), %r11 + movq 5584(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenProgramsNV), .-GL_PREFIX(GenProgramsNV) @@ -25858,7 +26281,7 @@ GL_PREFIX(GenProgramsNV): GL_PREFIX(GetProgramParameterdvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5504(%rax), %r11 + movq 5592(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25872,13 +26295,13 @@ GL_PREFIX(GetProgramParameterdvNV): popq %rdx popq %rsi popq %rdi - movq 5504(%rax), %r11 + movq 5592(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5504(%rax), %r11 + movq 5592(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25892,7 +26315,7 @@ GL_PREFIX(GetProgramParameterdvNV): popq %rdx popq %rsi popq %rdi - movq 5504(%rax), %r11 + movq 5592(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramParameterdvNV), .-GL_PREFIX(GetProgramParameterdvNV) @@ -25903,7 +26326,7 @@ GL_PREFIX(GetProgramParameterdvNV): GL_PREFIX(GetProgramParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5512(%rax), %r11 + movq 5600(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25917,13 +26340,13 @@ GL_PREFIX(GetProgramParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5512(%rax), %r11 + movq 5600(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5512(%rax), %r11 + movq 5600(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25937,7 +26360,7 @@ GL_PREFIX(GetProgramParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5512(%rax), %r11 + movq 5600(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramParameterfvNV), .-GL_PREFIX(GetProgramParameterfvNV) @@ -25948,7 +26371,7 @@ GL_PREFIX(GetProgramParameterfvNV): GL_PREFIX(GetProgramStringNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5520(%rax), %r11 + movq 5608(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25958,13 +26381,13 @@ GL_PREFIX(GetProgramStringNV): popq %rdx popq %rsi popq %rdi - movq 5520(%rax), %r11 + movq 5608(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5520(%rax), %r11 + movq 5608(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25974,7 +26397,7 @@ GL_PREFIX(GetProgramStringNV): popq %rdx popq %rsi popq %rdi - movq 5520(%rax), %r11 + movq 5608(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramStringNV), .-GL_PREFIX(GetProgramStringNV) @@ -25985,7 +26408,7 @@ GL_PREFIX(GetProgramStringNV): GL_PREFIX(GetProgramivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5528(%rax), %r11 + movq 5616(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25995,13 +26418,13 @@ GL_PREFIX(GetProgramivNV): popq %rdx popq %rsi popq %rdi - movq 5528(%rax), %r11 + movq 5616(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5528(%rax), %r11 + movq 5616(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26011,7 +26434,7 @@ GL_PREFIX(GetProgramivNV): popq %rdx popq %rsi popq %rdi - movq 5528(%rax), %r11 + movq 5616(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramivNV), .-GL_PREFIX(GetProgramivNV) @@ -26022,7 +26445,7 @@ GL_PREFIX(GetProgramivNV): GL_PREFIX(GetTrackMatrixivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5536(%rax), %r11 + movq 5624(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26036,13 +26459,13 @@ GL_PREFIX(GetTrackMatrixivNV): popq %rdx popq %rsi popq %rdi - movq 5536(%rax), %r11 + movq 5624(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5536(%rax), %r11 + movq 5624(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26056,7 +26479,7 @@ GL_PREFIX(GetTrackMatrixivNV): popq %rdx popq %rsi popq %rdi - movq 5536(%rax), %r11 + movq 5624(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetTrackMatrixivNV), .-GL_PREFIX(GetTrackMatrixivNV) @@ -26067,7 +26490,7 @@ GL_PREFIX(GetTrackMatrixivNV): GL_PREFIX(GetVertexAttribPointervNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5544(%rax), %r11 + movq 5632(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26077,13 +26500,13 @@ GL_PREFIX(GetVertexAttribPointervNV): popq %rdx popq %rsi popq %rdi - movq 5544(%rax), %r11 + movq 5632(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5544(%rax), %r11 + movq 5632(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26093,7 +26516,7 @@ GL_PREFIX(GetVertexAttribPointervNV): popq %rdx popq %rsi popq %rdi - movq 5544(%rax), %r11 + movq 5632(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribPointervNV), .-GL_PREFIX(GetVertexAttribPointervNV) @@ -26104,7 +26527,7 @@ GL_PREFIX(GetVertexAttribPointervNV): GL_PREFIX(GetVertexAttribdvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5552(%rax), %r11 + movq 5640(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26114,13 +26537,13 @@ GL_PREFIX(GetVertexAttribdvNV): popq %rdx popq %rsi popq %rdi - movq 5552(%rax), %r11 + movq 5640(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5552(%rax), %r11 + movq 5640(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26130,7 +26553,7 @@ GL_PREFIX(GetVertexAttribdvNV): popq %rdx popq %rsi popq %rdi - movq 5552(%rax), %r11 + movq 5640(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribdvNV), .-GL_PREFIX(GetVertexAttribdvNV) @@ -26141,7 +26564,7 @@ GL_PREFIX(GetVertexAttribdvNV): GL_PREFIX(GetVertexAttribfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5560(%rax), %r11 + movq 5648(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26151,13 +26574,13 @@ GL_PREFIX(GetVertexAttribfvNV): popq %rdx popq %rsi popq %rdi - movq 5560(%rax), %r11 + movq 5648(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5560(%rax), %r11 + movq 5648(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26167,7 +26590,7 @@ GL_PREFIX(GetVertexAttribfvNV): popq %rdx popq %rsi popq %rdi - movq 5560(%rax), %r11 + movq 5648(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribfvNV), .-GL_PREFIX(GetVertexAttribfvNV) @@ -26178,7 +26601,7 @@ GL_PREFIX(GetVertexAttribfvNV): GL_PREFIX(GetVertexAttribivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5568(%rax), %r11 + movq 5656(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26188,13 +26611,13 @@ GL_PREFIX(GetVertexAttribivNV): popq %rdx popq %rsi popq %rdi - movq 5568(%rax), %r11 + movq 5656(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5568(%rax), %r11 + movq 5656(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26204,7 +26627,7 @@ GL_PREFIX(GetVertexAttribivNV): popq %rdx popq %rsi popq %rdi - movq 5568(%rax), %r11 + movq 5656(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribivNV), .-GL_PREFIX(GetVertexAttribivNV) @@ -26215,25 +26638,25 @@ GL_PREFIX(GetVertexAttribivNV): GL_PREFIX(IsProgramNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5576(%rax), %r11 + movq 5664(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5576(%rax), %r11 + movq 5664(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5576(%rax), %r11 + movq 5664(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5576(%rax), %r11 + movq 5664(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsProgramNV), .-GL_PREFIX(IsProgramNV) @@ -26244,7 +26667,7 @@ GL_PREFIX(IsProgramNV): GL_PREFIX(LoadProgramNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5584(%rax), %r11 + movq 5672(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26258,13 +26681,13 @@ GL_PREFIX(LoadProgramNV): popq %rdx popq %rsi popq %rdi - movq 5584(%rax), %r11 + movq 5672(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5584(%rax), %r11 + movq 5672(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26278,7 +26701,7 @@ GL_PREFIX(LoadProgramNV): popq %rdx popq %rsi popq %rdi - movq 5584(%rax), %r11 + movq 5672(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(LoadProgramNV), .-GL_PREFIX(LoadProgramNV) @@ -26289,7 +26712,7 @@ GL_PREFIX(LoadProgramNV): GL_PREFIX(ProgramParameters4dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5592(%rax), %r11 + movq 5680(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26303,13 +26726,13 @@ GL_PREFIX(ProgramParameters4dvNV): popq %rdx popq %rsi popq %rdi - movq 5592(%rax), %r11 + movq 5680(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5592(%rax), %r11 + movq 5680(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26323,7 +26746,7 @@ GL_PREFIX(ProgramParameters4dvNV): popq %rdx popq %rsi popq %rdi - movq 5592(%rax), %r11 + movq 5680(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramParameters4dvNV), .-GL_PREFIX(ProgramParameters4dvNV) @@ -26334,7 +26757,7 @@ GL_PREFIX(ProgramParameters4dvNV): GL_PREFIX(ProgramParameters4fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5600(%rax), %r11 + movq 5688(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26348,13 +26771,13 @@ GL_PREFIX(ProgramParameters4fvNV): popq %rdx popq %rsi popq %rdi - movq 5600(%rax), %r11 + movq 5688(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5600(%rax), %r11 + movq 5688(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26368,7 +26791,7 @@ GL_PREFIX(ProgramParameters4fvNV): popq %rdx popq %rsi popq %rdi - movq 5600(%rax), %r11 + movq 5688(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramParameters4fvNV), .-GL_PREFIX(ProgramParameters4fvNV) @@ -26379,7 +26802,7 @@ GL_PREFIX(ProgramParameters4fvNV): GL_PREFIX(RequestResidentProgramsNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5608(%rax), %r11 + movq 5696(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26389,13 +26812,13 @@ GL_PREFIX(RequestResidentProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5608(%rax), %r11 + movq 5696(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5608(%rax), %r11 + movq 5696(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26405,7 +26828,7 @@ GL_PREFIX(RequestResidentProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5608(%rax), %r11 + movq 5696(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(RequestResidentProgramsNV), .-GL_PREFIX(RequestResidentProgramsNV) @@ -26416,7 +26839,7 @@ GL_PREFIX(RequestResidentProgramsNV): GL_PREFIX(TrackMatrixNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5616(%rax), %r11 + movq 5704(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26430,13 +26853,13 @@ GL_PREFIX(TrackMatrixNV): popq %rdx popq %rsi popq %rdi - movq 5616(%rax), %r11 + movq 5704(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5616(%rax), %r11 + movq 5704(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26450,7 +26873,7 @@ GL_PREFIX(TrackMatrixNV): popq %rdx popq %rsi popq %rdi - movq 5616(%rax), %r11 + movq 5704(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TrackMatrixNV), .-GL_PREFIX(TrackMatrixNV) @@ -26461,7 +26884,7 @@ GL_PREFIX(TrackMatrixNV): GL_PREFIX(VertexAttrib1dNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5624(%rax), %r11 + movq 5712(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -26471,13 +26894,13 @@ GL_PREFIX(VertexAttrib1dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5624(%rax), %r11 + movq 5712(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5624(%rax), %r11 + movq 5712(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -26487,7 +26910,7 @@ GL_PREFIX(VertexAttrib1dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5624(%rax), %r11 + movq 5712(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1dNV), .-GL_PREFIX(VertexAttrib1dNV) @@ -26498,7 +26921,7 @@ GL_PREFIX(VertexAttrib1dNV): GL_PREFIX(VertexAttrib1dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5632(%rax), %r11 + movq 5720(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26508,13 +26931,13 @@ GL_PREFIX(VertexAttrib1dvNV): popq %rbp popq %rsi popq %rdi - movq 5632(%rax), %r11 + movq 5720(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5632(%rax), %r11 + movq 5720(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26524,7 +26947,7 @@ GL_PREFIX(VertexAttrib1dvNV): popq %rbp popq %rsi popq %rdi - movq 5632(%rax), %r11 + movq 5720(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1dvNV), .-GL_PREFIX(VertexAttrib1dvNV) @@ -26535,7 +26958,7 @@ GL_PREFIX(VertexAttrib1dvNV): GL_PREFIX(VertexAttrib1fNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5640(%rax), %r11 + movq 5728(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -26545,13 +26968,13 @@ GL_PREFIX(VertexAttrib1fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5640(%rax), %r11 + movq 5728(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5640(%rax), %r11 + movq 5728(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -26561,7 +26984,7 @@ GL_PREFIX(VertexAttrib1fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5640(%rax), %r11 + movq 5728(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1fNV), .-GL_PREFIX(VertexAttrib1fNV) @@ -26572,7 +26995,7 @@ GL_PREFIX(VertexAttrib1fNV): GL_PREFIX(VertexAttrib1fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5648(%rax), %r11 + movq 5736(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26582,13 +27005,13 @@ GL_PREFIX(VertexAttrib1fvNV): popq %rbp popq %rsi popq %rdi - movq 5648(%rax), %r11 + movq 5736(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5648(%rax), %r11 + movq 5736(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26598,7 +27021,7 @@ GL_PREFIX(VertexAttrib1fvNV): popq %rbp popq %rsi popq %rdi - movq 5648(%rax), %r11 + movq 5736(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1fvNV), .-GL_PREFIX(VertexAttrib1fvNV) @@ -26609,7 +27032,7 @@ GL_PREFIX(VertexAttrib1fvNV): GL_PREFIX(VertexAttrib1sNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5656(%rax), %r11 + movq 5744(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26619,13 +27042,13 @@ GL_PREFIX(VertexAttrib1sNV): popq %rbp popq %rsi popq %rdi - movq 5656(%rax), %r11 + movq 5744(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5656(%rax), %r11 + movq 5744(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26635,7 +27058,7 @@ GL_PREFIX(VertexAttrib1sNV): popq %rbp popq %rsi popq %rdi - movq 5656(%rax), %r11 + movq 5744(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1sNV), .-GL_PREFIX(VertexAttrib1sNV) @@ -26646,7 +27069,7 @@ GL_PREFIX(VertexAttrib1sNV): GL_PREFIX(VertexAttrib1svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5664(%rax), %r11 + movq 5752(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26656,13 +27079,13 @@ GL_PREFIX(VertexAttrib1svNV): popq %rbp popq %rsi popq %rdi - movq 5664(%rax), %r11 + movq 5752(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5664(%rax), %r11 + movq 5752(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26672,7 +27095,7 @@ GL_PREFIX(VertexAttrib1svNV): popq %rbp popq %rsi popq %rdi - movq 5664(%rax), %r11 + movq 5752(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1svNV), .-GL_PREFIX(VertexAttrib1svNV) @@ -26683,7 +27106,7 @@ GL_PREFIX(VertexAttrib1svNV): GL_PREFIX(VertexAttrib2dNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5672(%rax), %r11 + movq 5760(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -26695,13 +27118,13 @@ GL_PREFIX(VertexAttrib2dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5672(%rax), %r11 + movq 5760(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5672(%rax), %r11 + movq 5760(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -26713,7 +27136,7 @@ GL_PREFIX(VertexAttrib2dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5672(%rax), %r11 + movq 5760(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2dNV), .-GL_PREFIX(VertexAttrib2dNV) @@ -26724,7 +27147,7 @@ GL_PREFIX(VertexAttrib2dNV): GL_PREFIX(VertexAttrib2dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5680(%rax), %r11 + movq 5768(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26734,13 +27157,13 @@ GL_PREFIX(VertexAttrib2dvNV): popq %rbp popq %rsi popq %rdi - movq 5680(%rax), %r11 + movq 5768(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5680(%rax), %r11 + movq 5768(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26750,7 +27173,7 @@ GL_PREFIX(VertexAttrib2dvNV): popq %rbp popq %rsi popq %rdi - movq 5680(%rax), %r11 + movq 5768(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2dvNV), .-GL_PREFIX(VertexAttrib2dvNV) @@ -26761,7 +27184,7 @@ GL_PREFIX(VertexAttrib2dvNV): GL_PREFIX(VertexAttrib2fNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5688(%rax), %r11 + movq 5776(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -26773,13 +27196,13 @@ GL_PREFIX(VertexAttrib2fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5688(%rax), %r11 + movq 5776(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5688(%rax), %r11 + movq 5776(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -26791,7 +27214,7 @@ GL_PREFIX(VertexAttrib2fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5688(%rax), %r11 + movq 5776(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2fNV), .-GL_PREFIX(VertexAttrib2fNV) @@ -26802,7 +27225,7 @@ GL_PREFIX(VertexAttrib2fNV): GL_PREFIX(VertexAttrib2fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5696(%rax), %r11 + movq 5784(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26812,13 +27235,13 @@ GL_PREFIX(VertexAttrib2fvNV): popq %rbp popq %rsi popq %rdi - movq 5696(%rax), %r11 + movq 5784(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5696(%rax), %r11 + movq 5784(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26828,7 +27251,7 @@ GL_PREFIX(VertexAttrib2fvNV): popq %rbp popq %rsi popq %rdi - movq 5696(%rax), %r11 + movq 5784(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2fvNV), .-GL_PREFIX(VertexAttrib2fvNV) @@ -26839,7 +27262,7 @@ GL_PREFIX(VertexAttrib2fvNV): GL_PREFIX(VertexAttrib2sNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5704(%rax), %r11 + movq 5792(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26849,13 +27272,13 @@ GL_PREFIX(VertexAttrib2sNV): popq %rdx popq %rsi popq %rdi - movq 5704(%rax), %r11 + movq 5792(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5704(%rax), %r11 + movq 5792(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26865,7 +27288,7 @@ GL_PREFIX(VertexAttrib2sNV): popq %rdx popq %rsi popq %rdi - movq 5704(%rax), %r11 + movq 5792(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2sNV), .-GL_PREFIX(VertexAttrib2sNV) @@ -26876,7 +27299,7 @@ GL_PREFIX(VertexAttrib2sNV): GL_PREFIX(VertexAttrib2svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5712(%rax), %r11 + movq 5800(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26886,13 +27309,13 @@ GL_PREFIX(VertexAttrib2svNV): popq %rbp popq %rsi popq %rdi - movq 5712(%rax), %r11 + movq 5800(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5712(%rax), %r11 + movq 5800(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26902,7 +27325,7 @@ GL_PREFIX(VertexAttrib2svNV): popq %rbp popq %rsi popq %rdi - movq 5712(%rax), %r11 + movq 5800(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2svNV), .-GL_PREFIX(VertexAttrib2svNV) @@ -26913,7 +27336,7 @@ GL_PREFIX(VertexAttrib2svNV): GL_PREFIX(VertexAttrib3dNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5720(%rax), %r11 + movq 5808(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -26927,13 +27350,13 @@ GL_PREFIX(VertexAttrib3dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5720(%rax), %r11 + movq 5808(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5720(%rax), %r11 + movq 5808(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -26947,7 +27370,7 @@ GL_PREFIX(VertexAttrib3dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5720(%rax), %r11 + movq 5808(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3dNV), .-GL_PREFIX(VertexAttrib3dNV) @@ -26958,7 +27381,7 @@ GL_PREFIX(VertexAttrib3dNV): GL_PREFIX(VertexAttrib3dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5728(%rax), %r11 + movq 5816(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26968,13 +27391,13 @@ GL_PREFIX(VertexAttrib3dvNV): popq %rbp popq %rsi popq %rdi - movq 5728(%rax), %r11 + movq 5816(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5728(%rax), %r11 + movq 5816(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26984,7 +27407,7 @@ GL_PREFIX(VertexAttrib3dvNV): popq %rbp popq %rsi popq %rdi - movq 5728(%rax), %r11 + movq 5816(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3dvNV), .-GL_PREFIX(VertexAttrib3dvNV) @@ -26995,7 +27418,7 @@ GL_PREFIX(VertexAttrib3dvNV): GL_PREFIX(VertexAttrib3fNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5736(%rax), %r11 + movq 5824(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -27009,13 +27432,13 @@ GL_PREFIX(VertexAttrib3fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5736(%rax), %r11 + movq 5824(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5736(%rax), %r11 + movq 5824(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -27029,7 +27452,7 @@ GL_PREFIX(VertexAttrib3fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5736(%rax), %r11 + movq 5824(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3fNV), .-GL_PREFIX(VertexAttrib3fNV) @@ -27040,7 +27463,7 @@ GL_PREFIX(VertexAttrib3fNV): GL_PREFIX(VertexAttrib3fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5744(%rax), %r11 + movq 5832(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27050,13 +27473,13 @@ GL_PREFIX(VertexAttrib3fvNV): popq %rbp popq %rsi popq %rdi - movq 5744(%rax), %r11 + movq 5832(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5744(%rax), %r11 + movq 5832(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27066,7 +27489,7 @@ GL_PREFIX(VertexAttrib3fvNV): popq %rbp popq %rsi popq %rdi - movq 5744(%rax), %r11 + movq 5832(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3fvNV), .-GL_PREFIX(VertexAttrib3fvNV) @@ -27077,7 +27500,7 @@ GL_PREFIX(VertexAttrib3fvNV): GL_PREFIX(VertexAttrib3sNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5752(%rax), %r11 + movq 5840(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27091,13 +27514,13 @@ GL_PREFIX(VertexAttrib3sNV): popq %rdx popq %rsi popq %rdi - movq 5752(%rax), %r11 + movq 5840(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5752(%rax), %r11 + movq 5840(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27111,7 +27534,7 @@ GL_PREFIX(VertexAttrib3sNV): popq %rdx popq %rsi popq %rdi - movq 5752(%rax), %r11 + movq 5840(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3sNV), .-GL_PREFIX(VertexAttrib3sNV) @@ -27122,7 +27545,7 @@ GL_PREFIX(VertexAttrib3sNV): GL_PREFIX(VertexAttrib3svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5760(%rax), %r11 + movq 5848(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27132,13 +27555,13 @@ GL_PREFIX(VertexAttrib3svNV): popq %rbp popq %rsi popq %rdi - movq 5760(%rax), %r11 + movq 5848(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5760(%rax), %r11 + movq 5848(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27148,7 +27571,7 @@ GL_PREFIX(VertexAttrib3svNV): popq %rbp popq %rsi popq %rdi - movq 5760(%rax), %r11 + movq 5848(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3svNV), .-GL_PREFIX(VertexAttrib3svNV) @@ -27159,7 +27582,7 @@ GL_PREFIX(VertexAttrib3svNV): GL_PREFIX(VertexAttrib4dNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5768(%rax), %r11 + movq 5856(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -27175,13 +27598,13 @@ GL_PREFIX(VertexAttrib4dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5768(%rax), %r11 + movq 5856(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5768(%rax), %r11 + movq 5856(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -27197,7 +27620,7 @@ GL_PREFIX(VertexAttrib4dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5768(%rax), %r11 + movq 5856(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4dNV), .-GL_PREFIX(VertexAttrib4dNV) @@ -27208,7 +27631,7 @@ GL_PREFIX(VertexAttrib4dNV): GL_PREFIX(VertexAttrib4dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5776(%rax), %r11 + movq 5864(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27218,13 +27641,13 @@ GL_PREFIX(VertexAttrib4dvNV): popq %rbp popq %rsi popq %rdi - movq 5776(%rax), %r11 + movq 5864(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5776(%rax), %r11 + movq 5864(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27234,7 +27657,7 @@ GL_PREFIX(VertexAttrib4dvNV): popq %rbp popq %rsi popq %rdi - movq 5776(%rax), %r11 + movq 5864(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4dvNV), .-GL_PREFIX(VertexAttrib4dvNV) @@ -27245,7 +27668,7 @@ GL_PREFIX(VertexAttrib4dvNV): GL_PREFIX(VertexAttrib4fNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5784(%rax), %r11 + movq 5872(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -27261,13 +27684,13 @@ GL_PREFIX(VertexAttrib4fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5784(%rax), %r11 + movq 5872(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5784(%rax), %r11 + movq 5872(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -27283,7 +27706,7 @@ GL_PREFIX(VertexAttrib4fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5784(%rax), %r11 + movq 5872(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4fNV), .-GL_PREFIX(VertexAttrib4fNV) @@ -27294,7 +27717,7 @@ GL_PREFIX(VertexAttrib4fNV): GL_PREFIX(VertexAttrib4fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5792(%rax), %r11 + movq 5880(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27304,13 +27727,13 @@ GL_PREFIX(VertexAttrib4fvNV): popq %rbp popq %rsi popq %rdi - movq 5792(%rax), %r11 + movq 5880(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5792(%rax), %r11 + movq 5880(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27320,7 +27743,7 @@ GL_PREFIX(VertexAttrib4fvNV): popq %rbp popq %rsi popq %rdi - movq 5792(%rax), %r11 + movq 5880(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4fvNV), .-GL_PREFIX(VertexAttrib4fvNV) @@ -27331,7 +27754,7 @@ GL_PREFIX(VertexAttrib4fvNV): GL_PREFIX(VertexAttrib4sNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5800(%rax), %r11 + movq 5888(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27345,13 +27768,13 @@ GL_PREFIX(VertexAttrib4sNV): popq %rdx popq %rsi popq %rdi - movq 5800(%rax), %r11 + movq 5888(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5800(%rax), %r11 + movq 5888(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27365,7 +27788,7 @@ GL_PREFIX(VertexAttrib4sNV): popq %rdx popq %rsi popq %rdi - movq 5800(%rax), %r11 + movq 5888(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4sNV), .-GL_PREFIX(VertexAttrib4sNV) @@ -27376,7 +27799,7 @@ GL_PREFIX(VertexAttrib4sNV): GL_PREFIX(VertexAttrib4svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5808(%rax), %r11 + movq 5896(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27386,13 +27809,13 @@ GL_PREFIX(VertexAttrib4svNV): popq %rbp popq %rsi popq %rdi - movq 5808(%rax), %r11 + movq 5896(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5808(%rax), %r11 + movq 5896(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27402,7 +27825,7 @@ GL_PREFIX(VertexAttrib4svNV): popq %rbp popq %rsi popq %rdi - movq 5808(%rax), %r11 + movq 5896(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4svNV), .-GL_PREFIX(VertexAttrib4svNV) @@ -27413,7 +27836,7 @@ GL_PREFIX(VertexAttrib4svNV): GL_PREFIX(VertexAttrib4ubNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5816(%rax), %r11 + movq 5904(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27427,13 +27850,13 @@ GL_PREFIX(VertexAttrib4ubNV): popq %rdx popq %rsi popq %rdi - movq 5816(%rax), %r11 + movq 5904(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5816(%rax), %r11 + movq 5904(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27447,7 +27870,7 @@ GL_PREFIX(VertexAttrib4ubNV): popq %rdx popq %rsi popq %rdi - movq 5816(%rax), %r11 + movq 5904(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4ubNV), .-GL_PREFIX(VertexAttrib4ubNV) @@ -27458,7 +27881,7 @@ GL_PREFIX(VertexAttrib4ubNV): GL_PREFIX(VertexAttrib4ubvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5824(%rax), %r11 + movq 5912(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27468,13 +27891,13 @@ GL_PREFIX(VertexAttrib4ubvNV): popq %rbp popq %rsi popq %rdi - movq 5824(%rax), %r11 + movq 5912(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5824(%rax), %r11 + movq 5912(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27484,7 +27907,7 @@ GL_PREFIX(VertexAttrib4ubvNV): popq %rbp popq %rsi popq %rdi - movq 5824(%rax), %r11 + movq 5912(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4ubvNV), .-GL_PREFIX(VertexAttrib4ubvNV) @@ -27495,7 +27918,7 @@ GL_PREFIX(VertexAttrib4ubvNV): GL_PREFIX(VertexAttribPointerNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5832(%rax), %r11 + movq 5920(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27509,13 +27932,13 @@ GL_PREFIX(VertexAttribPointerNV): popq %rdx popq %rsi popq %rdi - movq 5832(%rax), %r11 + movq 5920(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5832(%rax), %r11 + movq 5920(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27529,7 +27952,7 @@ GL_PREFIX(VertexAttribPointerNV): popq %rdx popq %rsi popq %rdi - movq 5832(%rax), %r11 + movq 5920(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribPointerNV), .-GL_PREFIX(VertexAttribPointerNV) @@ -27540,7 +27963,7 @@ GL_PREFIX(VertexAttribPointerNV): GL_PREFIX(VertexAttribs1dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5840(%rax), %r11 + movq 5928(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27550,13 +27973,13 @@ GL_PREFIX(VertexAttribs1dvNV): popq %rdx popq %rsi popq %rdi - movq 5840(%rax), %r11 + movq 5928(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5840(%rax), %r11 + movq 5928(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27566,7 +27989,7 @@ GL_PREFIX(VertexAttribs1dvNV): popq %rdx popq %rsi popq %rdi - movq 5840(%rax), %r11 + movq 5928(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs1dvNV), .-GL_PREFIX(VertexAttribs1dvNV) @@ -27577,7 +28000,7 @@ GL_PREFIX(VertexAttribs1dvNV): GL_PREFIX(VertexAttribs1fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5848(%rax), %r11 + movq 5936(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27587,13 +28010,13 @@ GL_PREFIX(VertexAttribs1fvNV): popq %rdx popq %rsi popq %rdi - movq 5848(%rax), %r11 + movq 5936(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5848(%rax), %r11 + movq 5936(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27603,7 +28026,7 @@ GL_PREFIX(VertexAttribs1fvNV): popq %rdx popq %rsi popq %rdi - movq 5848(%rax), %r11 + movq 5936(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs1fvNV), .-GL_PREFIX(VertexAttribs1fvNV) @@ -27614,7 +28037,7 @@ GL_PREFIX(VertexAttribs1fvNV): GL_PREFIX(VertexAttribs1svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5856(%rax), %r11 + movq 5944(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27624,13 +28047,13 @@ GL_PREFIX(VertexAttribs1svNV): popq %rdx popq %rsi popq %rdi - movq 5856(%rax), %r11 + movq 5944(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5856(%rax), %r11 + movq 5944(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27640,7 +28063,7 @@ GL_PREFIX(VertexAttribs1svNV): popq %rdx popq %rsi popq %rdi - movq 5856(%rax), %r11 + movq 5944(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs1svNV), .-GL_PREFIX(VertexAttribs1svNV) @@ -27651,7 +28074,7 @@ GL_PREFIX(VertexAttribs1svNV): GL_PREFIX(VertexAttribs2dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5864(%rax), %r11 + movq 5952(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27661,13 +28084,13 @@ GL_PREFIX(VertexAttribs2dvNV): popq %rdx popq %rsi popq %rdi - movq 5864(%rax), %r11 + movq 5952(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5864(%rax), %r11 + movq 5952(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27677,7 +28100,7 @@ GL_PREFIX(VertexAttribs2dvNV): popq %rdx popq %rsi popq %rdi - movq 5864(%rax), %r11 + movq 5952(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs2dvNV), .-GL_PREFIX(VertexAttribs2dvNV) @@ -27688,7 +28111,7 @@ GL_PREFIX(VertexAttribs2dvNV): GL_PREFIX(VertexAttribs2fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5872(%rax), %r11 + movq 5960(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27698,13 +28121,13 @@ GL_PREFIX(VertexAttribs2fvNV): popq %rdx popq %rsi popq %rdi - movq 5872(%rax), %r11 + movq 5960(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5872(%rax), %r11 + movq 5960(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27714,7 +28137,7 @@ GL_PREFIX(VertexAttribs2fvNV): popq %rdx popq %rsi popq %rdi - movq 5872(%rax), %r11 + movq 5960(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs2fvNV), .-GL_PREFIX(VertexAttribs2fvNV) @@ -27725,7 +28148,7 @@ GL_PREFIX(VertexAttribs2fvNV): GL_PREFIX(VertexAttribs2svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5880(%rax), %r11 + movq 5968(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27735,13 +28158,13 @@ GL_PREFIX(VertexAttribs2svNV): popq %rdx popq %rsi popq %rdi - movq 5880(%rax), %r11 + movq 5968(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5880(%rax), %r11 + movq 5968(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27751,7 +28174,7 @@ GL_PREFIX(VertexAttribs2svNV): popq %rdx popq %rsi popq %rdi - movq 5880(%rax), %r11 + movq 5968(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs2svNV), .-GL_PREFIX(VertexAttribs2svNV) @@ -27762,7 +28185,7 @@ GL_PREFIX(VertexAttribs2svNV): GL_PREFIX(VertexAttribs3dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5888(%rax), %r11 + movq 5976(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27772,13 +28195,13 @@ GL_PREFIX(VertexAttribs3dvNV): popq %rdx popq %rsi popq %rdi - movq 5888(%rax), %r11 + movq 5976(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5888(%rax), %r11 + movq 5976(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27788,7 +28211,7 @@ GL_PREFIX(VertexAttribs3dvNV): popq %rdx popq %rsi popq %rdi - movq 5888(%rax), %r11 + movq 5976(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs3dvNV), .-GL_PREFIX(VertexAttribs3dvNV) @@ -27799,7 +28222,7 @@ GL_PREFIX(VertexAttribs3dvNV): GL_PREFIX(VertexAttribs3fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5896(%rax), %r11 + movq 5984(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27809,13 +28232,13 @@ GL_PREFIX(VertexAttribs3fvNV): popq %rdx popq %rsi popq %rdi - movq 5896(%rax), %r11 + movq 5984(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5896(%rax), %r11 + movq 5984(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27825,7 +28248,7 @@ GL_PREFIX(VertexAttribs3fvNV): popq %rdx popq %rsi popq %rdi - movq 5896(%rax), %r11 + movq 5984(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs3fvNV), .-GL_PREFIX(VertexAttribs3fvNV) @@ -27836,7 +28259,7 @@ GL_PREFIX(VertexAttribs3fvNV): GL_PREFIX(VertexAttribs3svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5904(%rax), %r11 + movq 5992(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27846,13 +28269,13 @@ GL_PREFIX(VertexAttribs3svNV): popq %rdx popq %rsi popq %rdi - movq 5904(%rax), %r11 + movq 5992(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5904(%rax), %r11 + movq 5992(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27862,7 +28285,7 @@ GL_PREFIX(VertexAttribs3svNV): popq %rdx popq %rsi popq %rdi - movq 5904(%rax), %r11 + movq 5992(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs3svNV), .-GL_PREFIX(VertexAttribs3svNV) @@ -27873,7 +28296,7 @@ GL_PREFIX(VertexAttribs3svNV): GL_PREFIX(VertexAttribs4dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5912(%rax), %r11 + movq 6000(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27883,13 +28306,13 @@ GL_PREFIX(VertexAttribs4dvNV): popq %rdx popq %rsi popq %rdi - movq 5912(%rax), %r11 + movq 6000(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5912(%rax), %r11 + movq 6000(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27899,7 +28322,7 @@ GL_PREFIX(VertexAttribs4dvNV): popq %rdx popq %rsi popq %rdi - movq 5912(%rax), %r11 + movq 6000(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs4dvNV), .-GL_PREFIX(VertexAttribs4dvNV) @@ -27910,7 +28333,7 @@ GL_PREFIX(VertexAttribs4dvNV): GL_PREFIX(VertexAttribs4fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5920(%rax), %r11 + movq 6008(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27920,13 +28343,13 @@ GL_PREFIX(VertexAttribs4fvNV): popq %rdx popq %rsi popq %rdi - movq 5920(%rax), %r11 + movq 6008(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5920(%rax), %r11 + movq 6008(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27936,7 +28359,7 @@ GL_PREFIX(VertexAttribs4fvNV): popq %rdx popq %rsi popq %rdi - movq 5920(%rax), %r11 + movq 6008(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs4fvNV), .-GL_PREFIX(VertexAttribs4fvNV) @@ -27947,7 +28370,7 @@ GL_PREFIX(VertexAttribs4fvNV): GL_PREFIX(VertexAttribs4svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5928(%rax), %r11 + movq 6016(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27957,13 +28380,13 @@ GL_PREFIX(VertexAttribs4svNV): popq %rdx popq %rsi popq %rdi - movq 5928(%rax), %r11 + movq 6016(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5928(%rax), %r11 + movq 6016(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27973,7 +28396,7 @@ GL_PREFIX(VertexAttribs4svNV): popq %rdx popq %rsi popq %rdi - movq 5928(%rax), %r11 + movq 6016(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs4svNV), .-GL_PREFIX(VertexAttribs4svNV) @@ -27984,7 +28407,7 @@ GL_PREFIX(VertexAttribs4svNV): GL_PREFIX(VertexAttribs4ubvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5936(%rax), %r11 + movq 6024(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27994,13 +28417,13 @@ GL_PREFIX(VertexAttribs4ubvNV): popq %rdx popq %rsi popq %rdi - movq 5936(%rax), %r11 + movq 6024(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5936(%rax), %r11 + movq 6024(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28010,7 +28433,7 @@ GL_PREFIX(VertexAttribs4ubvNV): popq %rdx popq %rsi popq %rdi - movq 5936(%rax), %r11 + movq 6024(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs4ubvNV), .-GL_PREFIX(VertexAttribs4ubvNV) @@ -28021,7 +28444,7 @@ GL_PREFIX(VertexAttribs4ubvNV): GL_PREFIX(GetTexBumpParameterfvATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5944(%rax), %r11 + movq 6032(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28031,13 +28454,13 @@ GL_PREFIX(GetTexBumpParameterfvATI): popq %rbp popq %rsi popq %rdi - movq 5944(%rax), %r11 + movq 6032(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5944(%rax), %r11 + movq 6032(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28047,7 +28470,7 @@ GL_PREFIX(GetTexBumpParameterfvATI): popq %rbp popq %rsi popq %rdi - movq 5944(%rax), %r11 + movq 6032(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetTexBumpParameterfvATI), .-GL_PREFIX(GetTexBumpParameterfvATI) @@ -28058,7 +28481,7 @@ GL_PREFIX(GetTexBumpParameterfvATI): GL_PREFIX(GetTexBumpParameterivATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5952(%rax), %r11 + movq 6040(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28068,13 +28491,13 @@ GL_PREFIX(GetTexBumpParameterivATI): popq %rbp popq %rsi popq %rdi - movq 5952(%rax), %r11 + movq 6040(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5952(%rax), %r11 + movq 6040(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28084,7 +28507,7 @@ GL_PREFIX(GetTexBumpParameterivATI): popq %rbp popq %rsi popq %rdi - movq 5952(%rax), %r11 + movq 6040(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetTexBumpParameterivATI), .-GL_PREFIX(GetTexBumpParameterivATI) @@ -28095,7 +28518,7 @@ GL_PREFIX(GetTexBumpParameterivATI): GL_PREFIX(TexBumpParameterfvATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5960(%rax), %r11 + movq 6048(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28105,13 +28528,13 @@ GL_PREFIX(TexBumpParameterfvATI): popq %rbp popq %rsi popq %rdi - movq 5960(%rax), %r11 + movq 6048(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5960(%rax), %r11 + movq 6048(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28121,7 +28544,7 @@ GL_PREFIX(TexBumpParameterfvATI): popq %rbp popq %rsi popq %rdi - movq 5960(%rax), %r11 + movq 6048(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TexBumpParameterfvATI), .-GL_PREFIX(TexBumpParameterfvATI) @@ -28132,7 +28555,7 @@ GL_PREFIX(TexBumpParameterfvATI): GL_PREFIX(TexBumpParameterivATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5968(%rax), %r11 + movq 6056(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28142,13 +28565,13 @@ GL_PREFIX(TexBumpParameterivATI): popq %rbp popq %rsi popq %rdi - movq 5968(%rax), %r11 + movq 6056(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5968(%rax), %r11 + movq 6056(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28158,7 +28581,7 @@ GL_PREFIX(TexBumpParameterivATI): popq %rbp popq %rsi popq %rdi - movq 5968(%rax), %r11 + movq 6056(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TexBumpParameterivATI), .-GL_PREFIX(TexBumpParameterivATI) @@ -28169,7 +28592,7 @@ GL_PREFIX(TexBumpParameterivATI): GL_PREFIX(AlphaFragmentOp1ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5976(%rax), %r11 + movq 6064(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28187,13 +28610,13 @@ GL_PREFIX(AlphaFragmentOp1ATI): popq %rdx popq %rsi popq %rdi - movq 5976(%rax), %r11 + movq 6064(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5976(%rax), %r11 + movq 6064(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28211,7 +28634,7 @@ GL_PREFIX(AlphaFragmentOp1ATI): popq %rdx popq %rsi popq %rdi - movq 5976(%rax), %r11 + movq 6064(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(AlphaFragmentOp1ATI), .-GL_PREFIX(AlphaFragmentOp1ATI) @@ -28222,7 +28645,7 @@ GL_PREFIX(AlphaFragmentOp1ATI): GL_PREFIX(AlphaFragmentOp2ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5984(%rax), %r11 + movq 6072(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28240,13 +28663,13 @@ GL_PREFIX(AlphaFragmentOp2ATI): popq %rdx popq %rsi popq %rdi - movq 5984(%rax), %r11 + movq 6072(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5984(%rax), %r11 + movq 6072(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28264,7 +28687,7 @@ GL_PREFIX(AlphaFragmentOp2ATI): popq %rdx popq %rsi popq %rdi - movq 5984(%rax), %r11 + movq 6072(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(AlphaFragmentOp2ATI), .-GL_PREFIX(AlphaFragmentOp2ATI) @@ -28275,7 +28698,7 @@ GL_PREFIX(AlphaFragmentOp2ATI): GL_PREFIX(AlphaFragmentOp3ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5992(%rax), %r11 + movq 6080(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28293,13 +28716,13 @@ GL_PREFIX(AlphaFragmentOp3ATI): popq %rdx popq %rsi popq %rdi - movq 5992(%rax), %r11 + movq 6080(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5992(%rax), %r11 + movq 6080(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28317,7 +28740,7 @@ GL_PREFIX(AlphaFragmentOp3ATI): popq %rdx popq %rsi popq %rdi - movq 5992(%rax), %r11 + movq 6080(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(AlphaFragmentOp3ATI), .-GL_PREFIX(AlphaFragmentOp3ATI) @@ -28328,25 +28751,25 @@ GL_PREFIX(AlphaFragmentOp3ATI): GL_PREFIX(BeginFragmentShaderATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6000(%rax), %r11 + movq 6088(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 6000(%rax), %r11 + movq 6088(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6000(%rax), %r11 + movq 6088(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 6000(%rax), %r11 + movq 6088(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BeginFragmentShaderATI), .-GL_PREFIX(BeginFragmentShaderATI) @@ -28357,25 +28780,25 @@ GL_PREFIX(BeginFragmentShaderATI): GL_PREFIX(BindFragmentShaderATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6008(%rax), %r11 + movq 6096(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6008(%rax), %r11 + movq 6096(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6008(%rax), %r11 + movq 6096(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6008(%rax), %r11 + movq 6096(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindFragmentShaderATI), .-GL_PREFIX(BindFragmentShaderATI) @@ -28386,7 +28809,7 @@ GL_PREFIX(BindFragmentShaderATI): GL_PREFIX(ColorFragmentOp1ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6016(%rax), %r11 + movq 6104(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28404,13 +28827,13 @@ GL_PREFIX(ColorFragmentOp1ATI): popq %rdx popq %rsi popq %rdi - movq 6016(%rax), %r11 + movq 6104(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6016(%rax), %r11 + movq 6104(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28428,7 +28851,7 @@ GL_PREFIX(ColorFragmentOp1ATI): popq %rdx popq %rsi popq %rdi - movq 6016(%rax), %r11 + movq 6104(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ColorFragmentOp1ATI), .-GL_PREFIX(ColorFragmentOp1ATI) @@ -28439,7 +28862,7 @@ GL_PREFIX(ColorFragmentOp1ATI): GL_PREFIX(ColorFragmentOp2ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6024(%rax), %r11 + movq 6112(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28457,13 +28880,13 @@ GL_PREFIX(ColorFragmentOp2ATI): popq %rdx popq %rsi popq %rdi - movq 6024(%rax), %r11 + movq 6112(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6024(%rax), %r11 + movq 6112(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28481,7 +28904,7 @@ GL_PREFIX(ColorFragmentOp2ATI): popq %rdx popq %rsi popq %rdi - movq 6024(%rax), %r11 + movq 6112(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ColorFragmentOp2ATI), .-GL_PREFIX(ColorFragmentOp2ATI) @@ -28492,7 +28915,7 @@ GL_PREFIX(ColorFragmentOp2ATI): GL_PREFIX(ColorFragmentOp3ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6032(%rax), %r11 + movq 6120(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28510,13 +28933,13 @@ GL_PREFIX(ColorFragmentOp3ATI): popq %rdx popq %rsi popq %rdi - movq 6032(%rax), %r11 + movq 6120(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6032(%rax), %r11 + movq 6120(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28534,7 +28957,7 @@ GL_PREFIX(ColorFragmentOp3ATI): popq %rdx popq %rsi popq %rdi - movq 6032(%rax), %r11 + movq 6120(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ColorFragmentOp3ATI), .-GL_PREFIX(ColorFragmentOp3ATI) @@ -28545,25 +28968,25 @@ GL_PREFIX(ColorFragmentOp3ATI): GL_PREFIX(DeleteFragmentShaderATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6040(%rax), %r11 + movq 6128(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6040(%rax), %r11 + movq 6128(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6040(%rax), %r11 + movq 6128(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6040(%rax), %r11 + movq 6128(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteFragmentShaderATI), .-GL_PREFIX(DeleteFragmentShaderATI) @@ -28574,25 +28997,25 @@ GL_PREFIX(DeleteFragmentShaderATI): GL_PREFIX(EndFragmentShaderATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6048(%rax), %r11 + movq 6136(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 6048(%rax), %r11 + movq 6136(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6048(%rax), %r11 + movq 6136(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 6048(%rax), %r11 + movq 6136(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EndFragmentShaderATI), .-GL_PREFIX(EndFragmentShaderATI) @@ -28603,25 +29026,25 @@ GL_PREFIX(EndFragmentShaderATI): GL_PREFIX(GenFragmentShadersATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6056(%rax), %r11 + movq 6144(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6056(%rax), %r11 + movq 6144(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6056(%rax), %r11 + movq 6144(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6056(%rax), %r11 + movq 6144(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenFragmentShadersATI), .-GL_PREFIX(GenFragmentShadersATI) @@ -28632,7 +29055,7 @@ GL_PREFIX(GenFragmentShadersATI): GL_PREFIX(PassTexCoordATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6064(%rax), %r11 + movq 6152(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28642,13 +29065,13 @@ GL_PREFIX(PassTexCoordATI): popq %rdx popq %rsi popq %rdi - movq 6064(%rax), %r11 + movq 6152(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6064(%rax), %r11 + movq 6152(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28658,7 +29081,7 @@ GL_PREFIX(PassTexCoordATI): popq %rdx popq %rsi popq %rdi - movq 6064(%rax), %r11 + movq 6152(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PassTexCoordATI), .-GL_PREFIX(PassTexCoordATI) @@ -28669,7 +29092,7 @@ GL_PREFIX(PassTexCoordATI): GL_PREFIX(SampleMapATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6072(%rax), %r11 + movq 6160(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28679,13 +29102,13 @@ GL_PREFIX(SampleMapATI): popq %rdx popq %rsi popq %rdi - movq 6072(%rax), %r11 + movq 6160(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6072(%rax), %r11 + movq 6160(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28695,7 +29118,7 @@ GL_PREFIX(SampleMapATI): popq %rdx popq %rsi popq %rdi - movq 6072(%rax), %r11 + movq 6160(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SampleMapATI), .-GL_PREFIX(SampleMapATI) @@ -28706,7 +29129,7 @@ GL_PREFIX(SampleMapATI): GL_PREFIX(SetFragmentShaderConstantATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6080(%rax), %r11 + movq 6168(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28716,13 +29139,13 @@ GL_PREFIX(SetFragmentShaderConstantATI): popq %rbp popq %rsi popq %rdi - movq 6080(%rax), %r11 + movq 6168(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6080(%rax), %r11 + movq 6168(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28732,7 +29155,7 @@ GL_PREFIX(SetFragmentShaderConstantATI): popq %rbp popq %rsi popq %rdi - movq 6080(%rax), %r11 + movq 6168(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SetFragmentShaderConstantATI), .-GL_PREFIX(SetFragmentShaderConstantATI) @@ -28743,7 +29166,7 @@ GL_PREFIX(SetFragmentShaderConstantATI): GL_PREFIX(PointParameteriNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6088(%rax), %r11 + movq 6176(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28753,13 +29176,13 @@ GL_PREFIX(PointParameteriNV): popq %rbp popq %rsi popq %rdi - movq 6088(%rax), %r11 + movq 6176(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6088(%rax), %r11 + movq 6176(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28769,7 +29192,7 @@ GL_PREFIX(PointParameteriNV): popq %rbp popq %rsi popq %rdi - movq 6088(%rax), %r11 + movq 6176(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PointParameteriNV), .-GL_PREFIX(PointParameteriNV) @@ -28780,7 +29203,7 @@ GL_PREFIX(PointParameteriNV): GL_PREFIX(PointParameterivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6096(%rax), %r11 + movq 6184(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28790,13 +29213,13 @@ GL_PREFIX(PointParameterivNV): popq %rbp popq %rsi popq %rdi - movq 6096(%rax), %r11 + movq 6184(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6096(%rax), %r11 + movq 6184(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28806,79 +29229,79 @@ GL_PREFIX(PointParameterivNV): popq %rbp popq %rsi popq %rdi - movq 6096(%rax), %r11 + movq 6184(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PointParameterivNV), .-GL_PREFIX(PointParameterivNV) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_763) - .type GL_PREFIX(_dispatch_stub_763), @function - HIDDEN(GL_PREFIX(_dispatch_stub_763)) -GL_PREFIX(_dispatch_stub_763): + .globl GL_PREFIX(_dispatch_stub_774) + .type GL_PREFIX(_dispatch_stub_774), @function + HIDDEN(GL_PREFIX(_dispatch_stub_774)) +GL_PREFIX(_dispatch_stub_774): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6104(%rax), %r11 + movq 6192(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6104(%rax), %r11 + movq 6192(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6104(%rax), %r11 + movq 6192(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6104(%rax), %r11 + movq 6192(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_763), .-GL_PREFIX(_dispatch_stub_763) + .size GL_PREFIX(_dispatch_stub_774), .-GL_PREFIX(_dispatch_stub_774) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_764) - .type GL_PREFIX(_dispatch_stub_764), @function - HIDDEN(GL_PREFIX(_dispatch_stub_764)) -GL_PREFIX(_dispatch_stub_764): + .globl GL_PREFIX(_dispatch_stub_775) + .type GL_PREFIX(_dispatch_stub_775), @function + HIDDEN(GL_PREFIX(_dispatch_stub_775)) +GL_PREFIX(_dispatch_stub_775): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6112(%rax), %r11 + movq 6200(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6112(%rax), %r11 + movq 6200(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6112(%rax), %r11 + movq 6200(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6112(%rax), %r11 + movq 6200(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_764), .-GL_PREFIX(_dispatch_stub_764) + .size GL_PREFIX(_dispatch_stub_775), .-GL_PREFIX(_dispatch_stub_775) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_765) - .type GL_PREFIX(_dispatch_stub_765), @function - HIDDEN(GL_PREFIX(_dispatch_stub_765)) -GL_PREFIX(_dispatch_stub_765): + .globl GL_PREFIX(_dispatch_stub_776) + .type GL_PREFIX(_dispatch_stub_776), @function + HIDDEN(GL_PREFIX(_dispatch_stub_776)) +GL_PREFIX(_dispatch_stub_776): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6120(%rax), %r11 + movq 6208(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28888,13 +29311,13 @@ GL_PREFIX(_dispatch_stub_765): popq %rbp popq %rsi popq %rdi - movq 6120(%rax), %r11 + movq 6208(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6120(%rax), %r11 + movq 6208(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28904,19 +29327,19 @@ GL_PREFIX(_dispatch_stub_765): popq %rbp popq %rsi popq %rdi - movq 6120(%rax), %r11 + movq 6208(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_765), .-GL_PREFIX(_dispatch_stub_765) + .size GL_PREFIX(_dispatch_stub_776), .-GL_PREFIX(_dispatch_stub_776) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_766) - .type GL_PREFIX(_dispatch_stub_766), @function - HIDDEN(GL_PREFIX(_dispatch_stub_766)) -GL_PREFIX(_dispatch_stub_766): + .globl GL_PREFIX(_dispatch_stub_777) + .type GL_PREFIX(_dispatch_stub_777), @function + HIDDEN(GL_PREFIX(_dispatch_stub_777)) +GL_PREFIX(_dispatch_stub_777): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6128(%rax), %r11 + movq 6216(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28926,13 +29349,13 @@ GL_PREFIX(_dispatch_stub_766): popq %rbp popq %rsi popq %rdi - movq 6128(%rax), %r11 + movq 6216(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6128(%rax), %r11 + movq 6216(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28942,40 +29365,40 @@ GL_PREFIX(_dispatch_stub_766): popq %rbp popq %rsi popq %rdi - movq 6128(%rax), %r11 + movq 6216(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_766), .-GL_PREFIX(_dispatch_stub_766) + .size GL_PREFIX(_dispatch_stub_777), .-GL_PREFIX(_dispatch_stub_777) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_767) - .type GL_PREFIX(_dispatch_stub_767), @function - HIDDEN(GL_PREFIX(_dispatch_stub_767)) -GL_PREFIX(_dispatch_stub_767): + .globl GL_PREFIX(_dispatch_stub_778) + .type GL_PREFIX(_dispatch_stub_778), @function + HIDDEN(GL_PREFIX(_dispatch_stub_778)) +GL_PREFIX(_dispatch_stub_778): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6136(%rax), %r11 + movq 6224(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6136(%rax), %r11 + movq 6224(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6136(%rax), %r11 + movq 6224(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6136(%rax), %r11 + movq 6224(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_767), .-GL_PREFIX(_dispatch_stub_767) + .size GL_PREFIX(_dispatch_stub_778), .-GL_PREFIX(_dispatch_stub_778) .p2align 4,,15 .globl GL_PREFIX(GetProgramNamedParameterdvNV) @@ -28983,7 +29406,7 @@ GL_PREFIX(_dispatch_stub_767): GL_PREFIX(GetProgramNamedParameterdvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6144(%rax), %r11 + movq 6232(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28997,13 +29420,13 @@ GL_PREFIX(GetProgramNamedParameterdvNV): popq %rdx popq %rsi popq %rdi - movq 6144(%rax), %r11 + movq 6232(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6144(%rax), %r11 + movq 6232(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29017,7 +29440,7 @@ GL_PREFIX(GetProgramNamedParameterdvNV): popq %rdx popq %rsi popq %rdi - movq 6144(%rax), %r11 + movq 6232(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramNamedParameterdvNV), .-GL_PREFIX(GetProgramNamedParameterdvNV) @@ -29028,7 +29451,7 @@ GL_PREFIX(GetProgramNamedParameterdvNV): GL_PREFIX(GetProgramNamedParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6152(%rax), %r11 + movq 6240(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29042,13 +29465,13 @@ GL_PREFIX(GetProgramNamedParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 6152(%rax), %r11 + movq 6240(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6152(%rax), %r11 + movq 6240(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29062,7 +29485,7 @@ GL_PREFIX(GetProgramNamedParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 6152(%rax), %r11 + movq 6240(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramNamedParameterfvNV), .-GL_PREFIX(GetProgramNamedParameterfvNV) @@ -29073,7 +29496,7 @@ GL_PREFIX(GetProgramNamedParameterfvNV): GL_PREFIX(ProgramNamedParameter4dNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6160(%rax), %r11 + movq 6248(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $56, %rsp @@ -29093,13 +29516,13 @@ GL_PREFIX(ProgramNamedParameter4dNV): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 6160(%rax), %r11 + movq 6248(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6160(%rax), %r11 + movq 6248(%rax), %r11 jmp *%r11 1: subq $56, %rsp @@ -29119,7 +29542,7 @@ GL_PREFIX(ProgramNamedParameter4dNV): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 6160(%rax), %r11 + movq 6248(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramNamedParameter4dNV), .-GL_PREFIX(ProgramNamedParameter4dNV) @@ -29130,7 +29553,7 @@ GL_PREFIX(ProgramNamedParameter4dNV): GL_PREFIX(ProgramNamedParameter4dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6168(%rax), %r11 + movq 6256(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29144,13 +29567,13 @@ GL_PREFIX(ProgramNamedParameter4dvNV): popq %rdx popq %rsi popq %rdi - movq 6168(%rax), %r11 + movq 6256(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6168(%rax), %r11 + movq 6256(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29164,7 +29587,7 @@ GL_PREFIX(ProgramNamedParameter4dvNV): popq %rdx popq %rsi popq %rdi - movq 6168(%rax), %r11 + movq 6256(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramNamedParameter4dvNV), .-GL_PREFIX(ProgramNamedParameter4dvNV) @@ -29175,7 +29598,7 @@ GL_PREFIX(ProgramNamedParameter4dvNV): GL_PREFIX(ProgramNamedParameter4fNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6176(%rax), %r11 + movq 6264(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $56, %rsp @@ -29195,13 +29618,13 @@ GL_PREFIX(ProgramNamedParameter4fNV): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 6176(%rax), %r11 + movq 6264(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6176(%rax), %r11 + movq 6264(%rax), %r11 jmp *%r11 1: subq $56, %rsp @@ -29221,7 +29644,7 @@ GL_PREFIX(ProgramNamedParameter4fNV): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 6176(%rax), %r11 + movq 6264(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramNamedParameter4fNV), .-GL_PREFIX(ProgramNamedParameter4fNV) @@ -29232,7 +29655,7 @@ GL_PREFIX(ProgramNamedParameter4fNV): GL_PREFIX(ProgramNamedParameter4fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6184(%rax), %r11 + movq 6272(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29246,13 +29669,13 @@ GL_PREFIX(ProgramNamedParameter4fvNV): popq %rdx popq %rsi popq %rdi - movq 6184(%rax), %r11 + movq 6272(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6184(%rax), %r11 + movq 6272(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29266,7 +29689,7 @@ GL_PREFIX(ProgramNamedParameter4fvNV): popq %rdx popq %rsi popq %rdi - movq 6184(%rax), %r11 + movq 6272(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramNamedParameter4fvNV), .-GL_PREFIX(ProgramNamedParameter4fvNV) @@ -29277,25 +29700,25 @@ GL_PREFIX(ProgramNamedParameter4fvNV): GL_PREFIX(PrimitiveRestartIndexNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6192(%rax), %r11 + movq 6280(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6192(%rax), %r11 + movq 6280(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6192(%rax), %r11 + movq 6280(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6192(%rax), %r11 + movq 6280(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PrimitiveRestartIndexNV), .-GL_PREFIX(PrimitiveRestartIndexNV) @@ -29306,37 +29729,37 @@ GL_PREFIX(PrimitiveRestartIndexNV): GL_PREFIX(PrimitiveRestartNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6200(%rax), %r11 + movq 6288(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 6200(%rax), %r11 + movq 6288(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6200(%rax), %r11 + movq 6288(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 6200(%rax), %r11 + movq 6288(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PrimitiveRestartNV), .-GL_PREFIX(PrimitiveRestartNV) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_776) - .type GL_PREFIX(_dispatch_stub_776), @function - HIDDEN(GL_PREFIX(_dispatch_stub_776)) -GL_PREFIX(_dispatch_stub_776): + .globl GL_PREFIX(_dispatch_stub_787) + .type GL_PREFIX(_dispatch_stub_787), @function + HIDDEN(GL_PREFIX(_dispatch_stub_787)) +GL_PREFIX(_dispatch_stub_787): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6208(%rax), %r11 + movq 6296(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29346,13 +29769,13 @@ GL_PREFIX(_dispatch_stub_776): popq %rbp popq %rsi popq %rdi - movq 6208(%rax), %r11 + movq 6296(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6208(%rax), %r11 + movq 6296(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29362,19 +29785,19 @@ GL_PREFIX(_dispatch_stub_776): popq %rbp popq %rsi popq %rdi - movq 6208(%rax), %r11 + movq 6296(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_776), .-GL_PREFIX(_dispatch_stub_776) + .size GL_PREFIX(_dispatch_stub_787), .-GL_PREFIX(_dispatch_stub_787) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_777) - .type GL_PREFIX(_dispatch_stub_777), @function - HIDDEN(GL_PREFIX(_dispatch_stub_777)) -GL_PREFIX(_dispatch_stub_777): + .globl GL_PREFIX(_dispatch_stub_788) + .type GL_PREFIX(_dispatch_stub_788), @function + HIDDEN(GL_PREFIX(_dispatch_stub_788)) +GL_PREFIX(_dispatch_stub_788): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6216(%rax), %r11 + movq 6304(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29384,13 +29807,13 @@ GL_PREFIX(_dispatch_stub_777): popq %rbp popq %rsi popq %rdi - movq 6216(%rax), %r11 + movq 6304(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6216(%rax), %r11 + movq 6304(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29400,10 +29823,10 @@ GL_PREFIX(_dispatch_stub_777): popq %rbp popq %rsi popq %rdi - movq 6216(%rax), %r11 + movq 6304(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_777), .-GL_PREFIX(_dispatch_stub_777) + .size GL_PREFIX(_dispatch_stub_788), .-GL_PREFIX(_dispatch_stub_788) .p2align 4,,15 .globl GL_PREFIX(BindFramebufferEXT) @@ -29411,7 +29834,7 @@ GL_PREFIX(_dispatch_stub_777): GL_PREFIX(BindFramebufferEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6224(%rax), %r11 + movq 6312(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29421,13 +29844,13 @@ GL_PREFIX(BindFramebufferEXT): popq %rbp popq %rsi popq %rdi - movq 6224(%rax), %r11 + movq 6312(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6224(%rax), %r11 + movq 6312(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29437,7 +29860,7 @@ GL_PREFIX(BindFramebufferEXT): popq %rbp popq %rsi popq %rdi - movq 6224(%rax), %r11 + movq 6312(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindFramebufferEXT), .-GL_PREFIX(BindFramebufferEXT) @@ -29448,7 +29871,7 @@ GL_PREFIX(BindFramebufferEXT): GL_PREFIX(BindRenderbufferEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6232(%rax), %r11 + movq 6320(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29458,13 +29881,13 @@ GL_PREFIX(BindRenderbufferEXT): popq %rbp popq %rsi popq %rdi - movq 6232(%rax), %r11 + movq 6320(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6232(%rax), %r11 + movq 6320(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29474,7 +29897,7 @@ GL_PREFIX(BindRenderbufferEXT): popq %rbp popq %rsi popq %rdi - movq 6232(%rax), %r11 + movq 6320(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindRenderbufferEXT), .-GL_PREFIX(BindRenderbufferEXT) @@ -29485,25 +29908,25 @@ GL_PREFIX(BindRenderbufferEXT): GL_PREFIX(CheckFramebufferStatusEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6240(%rax), %r11 + movq 6328(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6240(%rax), %r11 + movq 6328(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6240(%rax), %r11 + movq 6328(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6240(%rax), %r11 + movq 6328(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CheckFramebufferStatusEXT), .-GL_PREFIX(CheckFramebufferStatusEXT) @@ -29514,7 +29937,7 @@ GL_PREFIX(CheckFramebufferStatusEXT): GL_PREFIX(DeleteFramebuffersEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6248(%rax), %r11 + movq 6336(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29524,13 +29947,13 @@ GL_PREFIX(DeleteFramebuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6248(%rax), %r11 + movq 6336(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6248(%rax), %r11 + movq 6336(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29540,7 +29963,7 @@ GL_PREFIX(DeleteFramebuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6248(%rax), %r11 + movq 6336(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteFramebuffersEXT), .-GL_PREFIX(DeleteFramebuffersEXT) @@ -29551,7 +29974,7 @@ GL_PREFIX(DeleteFramebuffersEXT): GL_PREFIX(DeleteRenderbuffersEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6256(%rax), %r11 + movq 6344(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29561,13 +29984,13 @@ GL_PREFIX(DeleteRenderbuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6256(%rax), %r11 + movq 6344(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6256(%rax), %r11 + movq 6344(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29577,7 +30000,7 @@ GL_PREFIX(DeleteRenderbuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6256(%rax), %r11 + movq 6344(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteRenderbuffersEXT), .-GL_PREFIX(DeleteRenderbuffersEXT) @@ -29588,7 +30011,7 @@ GL_PREFIX(DeleteRenderbuffersEXT): GL_PREFIX(FramebufferRenderbufferEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6264(%rax), %r11 + movq 6352(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29602,13 +30025,13 @@ GL_PREFIX(FramebufferRenderbufferEXT): popq %rdx popq %rsi popq %rdi - movq 6264(%rax), %r11 + movq 6352(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6264(%rax), %r11 + movq 6352(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29622,7 +30045,7 @@ GL_PREFIX(FramebufferRenderbufferEXT): popq %rdx popq %rsi popq %rdi - movq 6264(%rax), %r11 + movq 6352(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferRenderbufferEXT), .-GL_PREFIX(FramebufferRenderbufferEXT) @@ -29633,7 +30056,7 @@ GL_PREFIX(FramebufferRenderbufferEXT): GL_PREFIX(FramebufferTexture1DEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6272(%rax), %r11 + movq 6360(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29647,13 +30070,13 @@ GL_PREFIX(FramebufferTexture1DEXT): popq %rdx popq %rsi popq %rdi - movq 6272(%rax), %r11 + movq 6360(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6272(%rax), %r11 + movq 6360(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29667,7 +30090,7 @@ GL_PREFIX(FramebufferTexture1DEXT): popq %rdx popq %rsi popq %rdi - movq 6272(%rax), %r11 + movq 6360(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTexture1DEXT), .-GL_PREFIX(FramebufferTexture1DEXT) @@ -29678,7 +30101,7 @@ GL_PREFIX(FramebufferTexture1DEXT): GL_PREFIX(FramebufferTexture2DEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6280(%rax), %r11 + movq 6368(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29692,13 +30115,13 @@ GL_PREFIX(FramebufferTexture2DEXT): popq %rdx popq %rsi popq %rdi - movq 6280(%rax), %r11 + movq 6368(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6280(%rax), %r11 + movq 6368(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29712,7 +30135,7 @@ GL_PREFIX(FramebufferTexture2DEXT): popq %rdx popq %rsi popq %rdi - movq 6280(%rax), %r11 + movq 6368(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTexture2DEXT), .-GL_PREFIX(FramebufferTexture2DEXT) @@ -29723,7 +30146,7 @@ GL_PREFIX(FramebufferTexture2DEXT): GL_PREFIX(FramebufferTexture3DEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6288(%rax), %r11 + movq 6376(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29741,13 +30164,13 @@ GL_PREFIX(FramebufferTexture3DEXT): popq %rdx popq %rsi popq %rdi - movq 6288(%rax), %r11 + movq 6376(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6288(%rax), %r11 + movq 6376(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29765,7 +30188,7 @@ GL_PREFIX(FramebufferTexture3DEXT): popq %rdx popq %rsi popq %rdi - movq 6288(%rax), %r11 + movq 6376(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTexture3DEXT), .-GL_PREFIX(FramebufferTexture3DEXT) @@ -29776,7 +30199,7 @@ GL_PREFIX(FramebufferTexture3DEXT): GL_PREFIX(GenFramebuffersEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6296(%rax), %r11 + movq 6384(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29786,13 +30209,13 @@ GL_PREFIX(GenFramebuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6296(%rax), %r11 + movq 6384(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6296(%rax), %r11 + movq 6384(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29802,7 +30225,7 @@ GL_PREFIX(GenFramebuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6296(%rax), %r11 + movq 6384(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenFramebuffersEXT), .-GL_PREFIX(GenFramebuffersEXT) @@ -29813,7 +30236,7 @@ GL_PREFIX(GenFramebuffersEXT): GL_PREFIX(GenRenderbuffersEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6304(%rax), %r11 + movq 6392(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29823,13 +30246,13 @@ GL_PREFIX(GenRenderbuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6304(%rax), %r11 + movq 6392(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6304(%rax), %r11 + movq 6392(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29839,7 +30262,7 @@ GL_PREFIX(GenRenderbuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6304(%rax), %r11 + movq 6392(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenRenderbuffersEXT), .-GL_PREFIX(GenRenderbuffersEXT) @@ -29850,25 +30273,25 @@ GL_PREFIX(GenRenderbuffersEXT): GL_PREFIX(GenerateMipmapEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6312(%rax), %r11 + movq 6400(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6312(%rax), %r11 + movq 6400(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6312(%rax), %r11 + movq 6400(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6312(%rax), %r11 + movq 6400(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenerateMipmapEXT), .-GL_PREFIX(GenerateMipmapEXT) @@ -29879,7 +30302,7 @@ GL_PREFIX(GenerateMipmapEXT): GL_PREFIX(GetFramebufferAttachmentParameterivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6320(%rax), %r11 + movq 6408(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29893,13 +30316,13 @@ GL_PREFIX(GetFramebufferAttachmentParameterivEXT): popq %rdx popq %rsi popq %rdi - movq 6320(%rax), %r11 + movq 6408(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6320(%rax), %r11 + movq 6408(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29913,7 +30336,7 @@ GL_PREFIX(GetFramebufferAttachmentParameterivEXT): popq %rdx popq %rsi popq %rdi - movq 6320(%rax), %r11 + movq 6408(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetFramebufferAttachmentParameterivEXT), .-GL_PREFIX(GetFramebufferAttachmentParameterivEXT) @@ -29924,7 +30347,7 @@ GL_PREFIX(GetFramebufferAttachmentParameterivEXT): GL_PREFIX(GetRenderbufferParameterivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6328(%rax), %r11 + movq 6416(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29934,13 +30357,13 @@ GL_PREFIX(GetRenderbufferParameterivEXT): popq %rdx popq %rsi popq %rdi - movq 6328(%rax), %r11 + movq 6416(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6328(%rax), %r11 + movq 6416(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29950,7 +30373,7 @@ GL_PREFIX(GetRenderbufferParameterivEXT): popq %rdx popq %rsi popq %rdi - movq 6328(%rax), %r11 + movq 6416(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetRenderbufferParameterivEXT), .-GL_PREFIX(GetRenderbufferParameterivEXT) @@ -29961,25 +30384,25 @@ GL_PREFIX(GetRenderbufferParameterivEXT): GL_PREFIX(IsFramebufferEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6336(%rax), %r11 + movq 6424(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6336(%rax), %r11 + movq 6424(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6336(%rax), %r11 + movq 6424(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6336(%rax), %r11 + movq 6424(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsFramebufferEXT), .-GL_PREFIX(IsFramebufferEXT) @@ -29990,25 +30413,25 @@ GL_PREFIX(IsFramebufferEXT): GL_PREFIX(IsRenderbufferEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6344(%rax), %r11 + movq 6432(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6344(%rax), %r11 + movq 6432(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6344(%rax), %r11 + movq 6432(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6344(%rax), %r11 + movq 6432(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsRenderbufferEXT), .-GL_PREFIX(IsRenderbufferEXT) @@ -30019,7 +30442,7 @@ GL_PREFIX(IsRenderbufferEXT): GL_PREFIX(RenderbufferStorageEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6352(%rax), %r11 + movq 6440(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30033,13 +30456,13 @@ GL_PREFIX(RenderbufferStorageEXT): popq %rdx popq %rsi popq %rdi - movq 6352(%rax), %r11 + movq 6440(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6352(%rax), %r11 + movq 6440(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30053,19 +30476,19 @@ GL_PREFIX(RenderbufferStorageEXT): popq %rdx popq %rsi popq %rdi - movq 6352(%rax), %r11 + movq 6440(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(RenderbufferStorageEXT), .-GL_PREFIX(RenderbufferStorageEXT) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_795) - .type GL_PREFIX(_dispatch_stub_795), @function - HIDDEN(GL_PREFIX(_dispatch_stub_795)) -GL_PREFIX(_dispatch_stub_795): + .globl GL_PREFIX(_dispatch_stub_806) + .type GL_PREFIX(_dispatch_stub_806), @function + HIDDEN(GL_PREFIX(_dispatch_stub_806)) +GL_PREFIX(_dispatch_stub_806): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6360(%rax), %r11 + movq 6448(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30083,13 +30506,13 @@ GL_PREFIX(_dispatch_stub_795): popq %rdx popq %rsi popq %rdi - movq 6360(%rax), %r11 + movq 6448(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6360(%rax), %r11 + movq 6448(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30107,19 +30530,19 @@ GL_PREFIX(_dispatch_stub_795): popq %rdx popq %rsi popq %rdi - movq 6360(%rax), %r11 + movq 6448(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_795), .-GL_PREFIX(_dispatch_stub_795) + .size GL_PREFIX(_dispatch_stub_806), .-GL_PREFIX(_dispatch_stub_806) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_796) - .type GL_PREFIX(_dispatch_stub_796), @function - HIDDEN(GL_PREFIX(_dispatch_stub_796)) -GL_PREFIX(_dispatch_stub_796): + .globl GL_PREFIX(_dispatch_stub_807) + .type GL_PREFIX(_dispatch_stub_807), @function + HIDDEN(GL_PREFIX(_dispatch_stub_807)) +GL_PREFIX(_dispatch_stub_807): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6368(%rax), %r11 + movq 6456(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30129,13 +30552,13 @@ GL_PREFIX(_dispatch_stub_796): popq %rdx popq %rsi popq %rdi - movq 6368(%rax), %r11 + movq 6456(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6368(%rax), %r11 + movq 6456(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30145,19 +30568,19 @@ GL_PREFIX(_dispatch_stub_796): popq %rdx popq %rsi popq %rdi - movq 6368(%rax), %r11 + movq 6456(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_796), .-GL_PREFIX(_dispatch_stub_796) + .size GL_PREFIX(_dispatch_stub_807), .-GL_PREFIX(_dispatch_stub_807) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_797) - .type GL_PREFIX(_dispatch_stub_797), @function - HIDDEN(GL_PREFIX(_dispatch_stub_797)) -GL_PREFIX(_dispatch_stub_797): + .globl GL_PREFIX(_dispatch_stub_808) + .type GL_PREFIX(_dispatch_stub_808), @function + HIDDEN(GL_PREFIX(_dispatch_stub_808)) +GL_PREFIX(_dispatch_stub_808): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6376(%rax), %r11 + movq 6464(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30167,13 +30590,13 @@ GL_PREFIX(_dispatch_stub_797): popq %rdx popq %rsi popq %rdi - movq 6376(%rax), %r11 + movq 6464(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6376(%rax), %r11 + movq 6464(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30183,10 +30606,1324 @@ GL_PREFIX(_dispatch_stub_797): popq %rdx popq %rsi popq %rdi - movq 6376(%rax), %r11 + movq 6464(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(_dispatch_stub_808), .-GL_PREFIX(_dispatch_stub_808) + + .p2align 4,,15 + .globl GL_PREFIX(BindFragDataLocationEXT) + .type GL_PREFIX(BindFragDataLocationEXT), @function +GL_PREFIX(BindFragDataLocationEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6472(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6472(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6472(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6472(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(BindFragDataLocationEXT), .-GL_PREFIX(BindFragDataLocationEXT) + + .p2align 4,,15 + .globl GL_PREFIX(GetFragDataLocationEXT) + .type GL_PREFIX(GetFragDataLocationEXT), @function +GL_PREFIX(GetFragDataLocationEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6480(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6480(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6480(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6480(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetFragDataLocationEXT), .-GL_PREFIX(GetFragDataLocationEXT) + + .p2align 4,,15 + .globl GL_PREFIX(GetUniformuivEXT) + .type GL_PREFIX(GetUniformuivEXT), @function +GL_PREFIX(GetUniformuivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6488(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6488(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6488(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6488(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetUniformuivEXT), .-GL_PREFIX(GetUniformuivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(GetVertexAttribIivEXT) + .type GL_PREFIX(GetVertexAttribIivEXT), @function +GL_PREFIX(GetVertexAttribIivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6496(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6496(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6496(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6496(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetVertexAttribIivEXT), .-GL_PREFIX(GetVertexAttribIivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(GetVertexAttribIuivEXT) + .type GL_PREFIX(GetVertexAttribIuivEXT), @function +GL_PREFIX(GetVertexAttribIuivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6504(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6504(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6504(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6504(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetVertexAttribIuivEXT), .-GL_PREFIX(GetVertexAttribIuivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(Uniform1uiEXT) + .type GL_PREFIX(Uniform1uiEXT), @function +GL_PREFIX(Uniform1uiEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6512(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6512(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6512(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6512(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(Uniform1uiEXT), .-GL_PREFIX(Uniform1uiEXT) + + .p2align 4,,15 + .globl GL_PREFIX(Uniform1uivEXT) + .type GL_PREFIX(Uniform1uivEXT), @function +GL_PREFIX(Uniform1uivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6520(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6520(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6520(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6520(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(Uniform1uivEXT), .-GL_PREFIX(Uniform1uivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(Uniform2uiEXT) + .type GL_PREFIX(Uniform2uiEXT), @function +GL_PREFIX(Uniform2uiEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6528(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6528(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6528(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6528(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(Uniform2uiEXT), .-GL_PREFIX(Uniform2uiEXT) + + .p2align 4,,15 + .globl GL_PREFIX(Uniform2uivEXT) + .type GL_PREFIX(Uniform2uivEXT), @function +GL_PREFIX(Uniform2uivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6536(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6536(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6536(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6536(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(Uniform2uivEXT), .-GL_PREFIX(Uniform2uivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(Uniform3uiEXT) + .type GL_PREFIX(Uniform3uiEXT), @function +GL_PREFIX(Uniform3uiEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6544(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6544(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6544(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6544(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(Uniform3uiEXT), .-GL_PREFIX(Uniform3uiEXT) + + .p2align 4,,15 + .globl GL_PREFIX(Uniform3uivEXT) + .type GL_PREFIX(Uniform3uivEXT), @function +GL_PREFIX(Uniform3uivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6552(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6552(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6552(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6552(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(Uniform3uivEXT), .-GL_PREFIX(Uniform3uivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(Uniform4uiEXT) + .type GL_PREFIX(Uniform4uiEXT), @function +GL_PREFIX(Uniform4uiEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6560(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %r8 + call _x86_64_get_dispatch@PLT + popq %r8 + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6560(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6560(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %r8 + call _glapi_get_dispatch + popq %r8 + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6560(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(Uniform4uiEXT), .-GL_PREFIX(Uniform4uiEXT) + + .p2align 4,,15 + .globl GL_PREFIX(Uniform4uivEXT) + .type GL_PREFIX(Uniform4uivEXT), @function +GL_PREFIX(Uniform4uivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6568(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6568(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6568(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6568(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(Uniform4uivEXT), .-GL_PREFIX(Uniform4uivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI1iEXT) + .type GL_PREFIX(VertexAttribI1iEXT), @function +GL_PREFIX(VertexAttribI1iEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6576(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6576(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6576(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6576(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI1iEXT), .-GL_PREFIX(VertexAttribI1iEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI1ivEXT) + .type GL_PREFIX(VertexAttribI1ivEXT), @function +GL_PREFIX(VertexAttribI1ivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6584(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6584(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6584(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6584(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI1ivEXT), .-GL_PREFIX(VertexAttribI1ivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI1uiEXT) + .type GL_PREFIX(VertexAttribI1uiEXT), @function +GL_PREFIX(VertexAttribI1uiEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6592(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6592(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6592(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6592(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI1uiEXT), .-GL_PREFIX(VertexAttribI1uiEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI1uivEXT) + .type GL_PREFIX(VertexAttribI1uivEXT), @function +GL_PREFIX(VertexAttribI1uivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6600(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6600(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6600(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6600(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_797), .-GL_PREFIX(_dispatch_stub_797) + .size GL_PREFIX(VertexAttribI1uivEXT), .-GL_PREFIX(VertexAttribI1uivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI2iEXT) + .type GL_PREFIX(VertexAttribI2iEXT), @function +GL_PREFIX(VertexAttribI2iEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6608(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6608(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6608(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6608(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI2iEXT), .-GL_PREFIX(VertexAttribI2iEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI2ivEXT) + .type GL_PREFIX(VertexAttribI2ivEXT), @function +GL_PREFIX(VertexAttribI2ivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6616(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6616(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6616(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6616(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI2ivEXT), .-GL_PREFIX(VertexAttribI2ivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI2uiEXT) + .type GL_PREFIX(VertexAttribI2uiEXT), @function +GL_PREFIX(VertexAttribI2uiEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6624(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6624(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6624(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6624(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI2uiEXT), .-GL_PREFIX(VertexAttribI2uiEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI2uivEXT) + .type GL_PREFIX(VertexAttribI2uivEXT), @function +GL_PREFIX(VertexAttribI2uivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6632(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6632(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6632(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6632(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI2uivEXT), .-GL_PREFIX(VertexAttribI2uivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI3iEXT) + .type GL_PREFIX(VertexAttribI3iEXT), @function +GL_PREFIX(VertexAttribI3iEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6640(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6640(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6640(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6640(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI3iEXT), .-GL_PREFIX(VertexAttribI3iEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI3ivEXT) + .type GL_PREFIX(VertexAttribI3ivEXT), @function +GL_PREFIX(VertexAttribI3ivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6648(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6648(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6648(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6648(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI3ivEXT), .-GL_PREFIX(VertexAttribI3ivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI3uiEXT) + .type GL_PREFIX(VertexAttribI3uiEXT), @function +GL_PREFIX(VertexAttribI3uiEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6656(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6656(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6656(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6656(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI3uiEXT), .-GL_PREFIX(VertexAttribI3uiEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI3uivEXT) + .type GL_PREFIX(VertexAttribI3uivEXT), @function +GL_PREFIX(VertexAttribI3uivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6664(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6664(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6664(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6664(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI3uivEXT), .-GL_PREFIX(VertexAttribI3uivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI4bvEXT) + .type GL_PREFIX(VertexAttribI4bvEXT), @function +GL_PREFIX(VertexAttribI4bvEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6672(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6672(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6672(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6672(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI4bvEXT), .-GL_PREFIX(VertexAttribI4bvEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI4iEXT) + .type GL_PREFIX(VertexAttribI4iEXT), @function +GL_PREFIX(VertexAttribI4iEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6680(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %r8 + call _x86_64_get_dispatch@PLT + popq %r8 + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6680(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6680(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %r8 + call _glapi_get_dispatch + popq %r8 + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6680(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI4iEXT), .-GL_PREFIX(VertexAttribI4iEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI4ivEXT) + .type GL_PREFIX(VertexAttribI4ivEXT), @function +GL_PREFIX(VertexAttribI4ivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6688(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6688(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6688(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6688(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI4ivEXT), .-GL_PREFIX(VertexAttribI4ivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI4svEXT) + .type GL_PREFIX(VertexAttribI4svEXT), @function +GL_PREFIX(VertexAttribI4svEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6696(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6696(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6696(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6696(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI4svEXT), .-GL_PREFIX(VertexAttribI4svEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI4ubvEXT) + .type GL_PREFIX(VertexAttribI4ubvEXT), @function +GL_PREFIX(VertexAttribI4ubvEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6704(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6704(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6704(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6704(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI4ubvEXT), .-GL_PREFIX(VertexAttribI4ubvEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI4uiEXT) + .type GL_PREFIX(VertexAttribI4uiEXT), @function +GL_PREFIX(VertexAttribI4uiEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6712(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %r8 + call _x86_64_get_dispatch@PLT + popq %r8 + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6712(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6712(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %r8 + call _glapi_get_dispatch + popq %r8 + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6712(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI4uiEXT), .-GL_PREFIX(VertexAttribI4uiEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI4uivEXT) + .type GL_PREFIX(VertexAttribI4uivEXT), @function +GL_PREFIX(VertexAttribI4uivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6720(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6720(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6720(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6720(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI4uivEXT), .-GL_PREFIX(VertexAttribI4uivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribI4usvEXT) + .type GL_PREFIX(VertexAttribI4usvEXT), @function +GL_PREFIX(VertexAttribI4usvEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6728(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6728(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6728(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6728(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribI4usvEXT), .-GL_PREFIX(VertexAttribI4usvEXT) + + .p2align 4,,15 + .globl GL_PREFIX(VertexAttribIPointerEXT) + .type GL_PREFIX(VertexAttribIPointerEXT), @function +GL_PREFIX(VertexAttribIPointerEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6736(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %r8 + call _x86_64_get_dispatch@PLT + popq %r8 + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6736(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6736(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %r8 + call _glapi_get_dispatch + popq %r8 + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6736(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(VertexAttribIPointerEXT), .-GL_PREFIX(VertexAttribIPointerEXT) .p2align 4,,15 .globl GL_PREFIX(FramebufferTextureLayerEXT) @@ -30194,7 +31931,7 @@ GL_PREFIX(_dispatch_stub_797): GL_PREFIX(FramebufferTextureLayerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6384(%rax), %r11 + movq 6744(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30208,13 +31945,13 @@ GL_PREFIX(FramebufferTextureLayerEXT): popq %rdx popq %rsi popq %rdi - movq 6384(%rax), %r11 + movq 6744(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6384(%rax), %r11 + movq 6744(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30228,7 +31965,7 @@ GL_PREFIX(FramebufferTextureLayerEXT): popq %rdx popq %rsi popq %rdi - movq 6384(%rax), %r11 + movq 6744(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTextureLayerEXT), .-GL_PREFIX(FramebufferTextureLayerEXT) @@ -30239,7 +31976,7 @@ GL_PREFIX(FramebufferTextureLayerEXT): GL_PREFIX(ColorMaskIndexedEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6392(%rax), %r11 + movq 6752(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30253,13 +31990,13 @@ GL_PREFIX(ColorMaskIndexedEXT): popq %rdx popq %rsi popq %rdi - movq 6392(%rax), %r11 + movq 6752(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6392(%rax), %r11 + movq 6752(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30273,7 +32010,7 @@ GL_PREFIX(ColorMaskIndexedEXT): popq %rdx popq %rsi popq %rdi - movq 6392(%rax), %r11 + movq 6752(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ColorMaskIndexedEXT), .-GL_PREFIX(ColorMaskIndexedEXT) @@ -30284,7 +32021,7 @@ GL_PREFIX(ColorMaskIndexedEXT): GL_PREFIX(DisableIndexedEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6400(%rax), %r11 + movq 6760(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30294,13 +32031,13 @@ GL_PREFIX(DisableIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6400(%rax), %r11 + movq 6760(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6400(%rax), %r11 + movq 6760(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30310,7 +32047,7 @@ GL_PREFIX(DisableIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6400(%rax), %r11 + movq 6760(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DisableIndexedEXT), .-GL_PREFIX(DisableIndexedEXT) @@ -30321,7 +32058,7 @@ GL_PREFIX(DisableIndexedEXT): GL_PREFIX(EnableIndexedEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6408(%rax), %r11 + movq 6768(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30331,13 +32068,13 @@ GL_PREFIX(EnableIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6408(%rax), %r11 + movq 6768(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6408(%rax), %r11 + movq 6768(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30347,7 +32084,7 @@ GL_PREFIX(EnableIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6408(%rax), %r11 + movq 6768(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EnableIndexedEXT), .-GL_PREFIX(EnableIndexedEXT) @@ -30358,7 +32095,7 @@ GL_PREFIX(EnableIndexedEXT): GL_PREFIX(GetBooleanIndexedvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6416(%rax), %r11 + movq 6776(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30368,13 +32105,13 @@ GL_PREFIX(GetBooleanIndexedvEXT): popq %rdx popq %rsi popq %rdi - movq 6416(%rax), %r11 + movq 6776(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6416(%rax), %r11 + movq 6776(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30384,7 +32121,7 @@ GL_PREFIX(GetBooleanIndexedvEXT): popq %rdx popq %rsi popq %rdi - movq 6416(%rax), %r11 + movq 6776(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetBooleanIndexedvEXT), .-GL_PREFIX(GetBooleanIndexedvEXT) @@ -30395,7 +32132,7 @@ GL_PREFIX(GetBooleanIndexedvEXT): GL_PREFIX(GetIntegerIndexedvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6424(%rax), %r11 + movq 6784(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30405,13 +32142,13 @@ GL_PREFIX(GetIntegerIndexedvEXT): popq %rdx popq %rsi popq %rdi - movq 6424(%rax), %r11 + movq 6784(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6424(%rax), %r11 + movq 6784(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30421,7 +32158,7 @@ GL_PREFIX(GetIntegerIndexedvEXT): popq %rdx popq %rsi popq %rdi - movq 6424(%rax), %r11 + movq 6784(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetIntegerIndexedvEXT), .-GL_PREFIX(GetIntegerIndexedvEXT) @@ -30432,7 +32169,7 @@ GL_PREFIX(GetIntegerIndexedvEXT): GL_PREFIX(IsEnabledIndexedEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6432(%rax), %r11 + movq 6792(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30442,13 +32179,13 @@ GL_PREFIX(IsEnabledIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6432(%rax), %r11 + movq 6792(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6432(%rax), %r11 + movq 6792(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30458,18 +32195,256 @@ GL_PREFIX(IsEnabledIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6432(%rax), %r11 + movq 6792(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsEnabledIndexedEXT), .-GL_PREFIX(IsEnabledIndexedEXT) .p2align 4,,15 + .globl GL_PREFIX(ClearColorIiEXT) + .type GL_PREFIX(ClearColorIiEXT), @function +GL_PREFIX(ClearColorIiEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6800(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6800(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6800(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6800(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(ClearColorIiEXT), .-GL_PREFIX(ClearColorIiEXT) + + .p2align 4,,15 + .globl GL_PREFIX(ClearColorIuiEXT) + .type GL_PREFIX(ClearColorIuiEXT), @function +GL_PREFIX(ClearColorIuiEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6808(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6808(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6808(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + pushq %rcx + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rcx + popq %rdx + popq %rsi + popq %rdi + movq 6808(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(ClearColorIuiEXT), .-GL_PREFIX(ClearColorIuiEXT) + + .p2align 4,,15 + .globl GL_PREFIX(GetTexParameterIivEXT) + .type GL_PREFIX(GetTexParameterIivEXT), @function +GL_PREFIX(GetTexParameterIivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6816(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6816(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6816(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6816(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetTexParameterIivEXT), .-GL_PREFIX(GetTexParameterIivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(GetTexParameterIuivEXT) + .type GL_PREFIX(GetTexParameterIuivEXT), @function +GL_PREFIX(GetTexParameterIuivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6824(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6824(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6824(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6824(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetTexParameterIuivEXT), .-GL_PREFIX(GetTexParameterIuivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(TexParameterIivEXT) + .type GL_PREFIX(TexParameterIivEXT), @function +GL_PREFIX(TexParameterIivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6832(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6832(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6832(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6832(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(TexParameterIivEXT), .-GL_PREFIX(TexParameterIivEXT) + + .p2align 4,,15 + .globl GL_PREFIX(TexParameterIuivEXT) + .type GL_PREFIX(TexParameterIuivEXT), @function +GL_PREFIX(TexParameterIuivEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6840(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6840(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6840(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6840(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(TexParameterIuivEXT), .-GL_PREFIX(TexParameterIuivEXT) + + .p2align 4,,15 .globl GL_PREFIX(BeginConditionalRenderNV) .type GL_PREFIX(BeginConditionalRenderNV), @function GL_PREFIX(BeginConditionalRenderNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6440(%rax), %r11 + movq 6848(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30479,13 +32454,13 @@ GL_PREFIX(BeginConditionalRenderNV): popq %rbp popq %rsi popq %rdi - movq 6440(%rax), %r11 + movq 6848(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6440(%rax), %r11 + movq 6848(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30495,7 +32470,7 @@ GL_PREFIX(BeginConditionalRenderNV): popq %rbp popq %rsi popq %rdi - movq 6440(%rax), %r11 + movq 6848(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BeginConditionalRenderNV), .-GL_PREFIX(BeginConditionalRenderNV) @@ -30506,25 +32481,25 @@ GL_PREFIX(BeginConditionalRenderNV): GL_PREFIX(EndConditionalRenderNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6448(%rax), %r11 + movq 6856(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 6448(%rax), %r11 + movq 6856(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6448(%rax), %r11 + movq 6856(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 6448(%rax), %r11 + movq 6856(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EndConditionalRenderNV), .-GL_PREFIX(EndConditionalRenderNV) @@ -30535,25 +32510,25 @@ GL_PREFIX(EndConditionalRenderNV): GL_PREFIX(BeginTransformFeedbackEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6456(%rax), %r11 + movq 6864(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6456(%rax), %r11 + movq 6864(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6456(%rax), %r11 + movq 6864(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6456(%rax), %r11 + movq 6864(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BeginTransformFeedbackEXT), .-GL_PREFIX(BeginTransformFeedbackEXT) @@ -30564,7 +32539,7 @@ GL_PREFIX(BeginTransformFeedbackEXT): GL_PREFIX(BindBufferBaseEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6464(%rax), %r11 + movq 6872(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30574,13 +32549,13 @@ GL_PREFIX(BindBufferBaseEXT): popq %rdx popq %rsi popq %rdi - movq 6464(%rax), %r11 + movq 6872(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6464(%rax), %r11 + movq 6872(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30590,7 +32565,7 @@ GL_PREFIX(BindBufferBaseEXT): popq %rdx popq %rsi popq %rdi - movq 6464(%rax), %r11 + movq 6872(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindBufferBaseEXT), .-GL_PREFIX(BindBufferBaseEXT) @@ -30601,7 +32576,7 @@ GL_PREFIX(BindBufferBaseEXT): GL_PREFIX(BindBufferOffsetEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6472(%rax), %r11 + movq 6880(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30615,13 +32590,13 @@ GL_PREFIX(BindBufferOffsetEXT): popq %rdx popq %rsi popq %rdi - movq 6472(%rax), %r11 + movq 6880(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6472(%rax), %r11 + movq 6880(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30635,7 +32610,7 @@ GL_PREFIX(BindBufferOffsetEXT): popq %rdx popq %rsi popq %rdi - movq 6472(%rax), %r11 + movq 6880(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindBufferOffsetEXT), .-GL_PREFIX(BindBufferOffsetEXT) @@ -30646,7 +32621,7 @@ GL_PREFIX(BindBufferOffsetEXT): GL_PREFIX(BindBufferRangeEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6480(%rax), %r11 + movq 6888(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30660,13 +32635,13 @@ GL_PREFIX(BindBufferRangeEXT): popq %rdx popq %rsi popq %rdi - movq 6480(%rax), %r11 + movq 6888(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6480(%rax), %r11 + movq 6888(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30680,7 +32655,7 @@ GL_PREFIX(BindBufferRangeEXT): popq %rdx popq %rsi popq %rdi - movq 6480(%rax), %r11 + movq 6888(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindBufferRangeEXT), .-GL_PREFIX(BindBufferRangeEXT) @@ -30691,25 +32666,25 @@ GL_PREFIX(BindBufferRangeEXT): GL_PREFIX(EndTransformFeedbackEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6488(%rax), %r11 + movq 6896(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 6488(%rax), %r11 + movq 6896(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6488(%rax), %r11 + movq 6896(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 6488(%rax), %r11 + movq 6896(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EndTransformFeedbackEXT), .-GL_PREFIX(EndTransformFeedbackEXT) @@ -30720,7 +32695,7 @@ GL_PREFIX(EndTransformFeedbackEXT): GL_PREFIX(GetTransformFeedbackVaryingEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6496(%rax), %r11 + movq 6904(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30738,13 +32713,13 @@ GL_PREFIX(GetTransformFeedbackVaryingEXT): popq %rdx popq %rsi popq %rdi - movq 6496(%rax), %r11 + movq 6904(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6496(%rax), %r11 + movq 6904(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30762,7 +32737,7 @@ GL_PREFIX(GetTransformFeedbackVaryingEXT): popq %rdx popq %rsi popq %rdi - movq 6496(%rax), %r11 + movq 6904(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetTransformFeedbackVaryingEXT), .-GL_PREFIX(GetTransformFeedbackVaryingEXT) @@ -30773,7 +32748,7 @@ GL_PREFIX(GetTransformFeedbackVaryingEXT): GL_PREFIX(TransformFeedbackVaryingsEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6504(%rax), %r11 + movq 6912(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30787,13 +32762,13 @@ GL_PREFIX(TransformFeedbackVaryingsEXT): popq %rdx popq %rsi popq %rdi - movq 6504(%rax), %r11 + movq 6912(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6504(%rax), %r11 + movq 6912(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30807,7 +32782,7 @@ GL_PREFIX(TransformFeedbackVaryingsEXT): popq %rdx popq %rsi popq %rdi - movq 6504(%rax), %r11 + movq 6912(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TransformFeedbackVaryingsEXT), .-GL_PREFIX(TransformFeedbackVaryingsEXT) @@ -30818,37 +32793,37 @@ GL_PREFIX(TransformFeedbackVaryingsEXT): GL_PREFIX(ProvokingVertexEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6512(%rax), %r11 + movq 6920(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6512(%rax), %r11 + movq 6920(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6512(%rax), %r11 + movq 6920(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6512(%rax), %r11 + movq 6920(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProvokingVertexEXT), .-GL_PREFIX(ProvokingVertexEXT) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_815) - .type GL_PREFIX(_dispatch_stub_815), @function - HIDDEN(GL_PREFIX(_dispatch_stub_815)) -GL_PREFIX(_dispatch_stub_815): + .globl GL_PREFIX(_dispatch_stub_866) + .type GL_PREFIX(_dispatch_stub_866), @function + HIDDEN(GL_PREFIX(_dispatch_stub_866)) +GL_PREFIX(_dispatch_stub_866): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6520(%rax), %r11 + movq 6928(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30858,13 +32833,13 @@ GL_PREFIX(_dispatch_stub_815): popq %rdx popq %rsi popq %rdi - movq 6520(%rax), %r11 + movq 6928(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6520(%rax), %r11 + movq 6928(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30874,19 +32849,19 @@ GL_PREFIX(_dispatch_stub_815): popq %rdx popq %rsi popq %rdi - movq 6520(%rax), %r11 + movq 6928(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_815), .-GL_PREFIX(_dispatch_stub_815) + .size GL_PREFIX(_dispatch_stub_866), .-GL_PREFIX(_dispatch_stub_866) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_816) - .type GL_PREFIX(_dispatch_stub_816), @function - HIDDEN(GL_PREFIX(_dispatch_stub_816)) -GL_PREFIX(_dispatch_stub_816): + .globl GL_PREFIX(_dispatch_stub_867) + .type GL_PREFIX(_dispatch_stub_867), @function + HIDDEN(GL_PREFIX(_dispatch_stub_867)) +GL_PREFIX(_dispatch_stub_867): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6528(%rax), %r11 + movq 6936(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30896,13 +32871,13 @@ GL_PREFIX(_dispatch_stub_816): popq %rdx popq %rsi popq %rdi - movq 6528(%rax), %r11 + movq 6936(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6528(%rax), %r11 + movq 6936(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30912,10 +32887,10 @@ GL_PREFIX(_dispatch_stub_816): popq %rdx popq %rsi popq %rdi - movq 6528(%rax), %r11 + movq 6936(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_816), .-GL_PREFIX(_dispatch_stub_816) + .size GL_PREFIX(_dispatch_stub_867), .-GL_PREFIX(_dispatch_stub_867) .p2align 4,,15 .globl GL_PREFIX(GetObjectParameterivAPPLE) @@ -30923,7 +32898,7 @@ GL_PREFIX(_dispatch_stub_816): GL_PREFIX(GetObjectParameterivAPPLE): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6536(%rax), %r11 + movq 6944(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30937,13 +32912,13 @@ GL_PREFIX(GetObjectParameterivAPPLE): popq %rdx popq %rsi popq %rdi - movq 6536(%rax), %r11 + movq 6944(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6536(%rax), %r11 + movq 6944(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30957,7 +32932,7 @@ GL_PREFIX(GetObjectParameterivAPPLE): popq %rdx popq %rsi popq %rdi - movq 6536(%rax), %r11 + movq 6944(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetObjectParameterivAPPLE), .-GL_PREFIX(GetObjectParameterivAPPLE) @@ -30968,7 +32943,7 @@ GL_PREFIX(GetObjectParameterivAPPLE): GL_PREFIX(ObjectPurgeableAPPLE): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6544(%rax), %r11 + movq 6952(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30978,13 +32953,13 @@ GL_PREFIX(ObjectPurgeableAPPLE): popq %rdx popq %rsi popq %rdi - movq 6544(%rax), %r11 + movq 6952(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6544(%rax), %r11 + movq 6952(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30994,7 +32969,7 @@ GL_PREFIX(ObjectPurgeableAPPLE): popq %rdx popq %rsi popq %rdi - movq 6544(%rax), %r11 + movq 6952(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ObjectPurgeableAPPLE), .-GL_PREFIX(ObjectPurgeableAPPLE) @@ -31005,7 +32980,7 @@ GL_PREFIX(ObjectPurgeableAPPLE): GL_PREFIX(ObjectUnpurgeableAPPLE): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6552(%rax), %r11 + movq 6960(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31015,13 +32990,13 @@ GL_PREFIX(ObjectUnpurgeableAPPLE): popq %rdx popq %rsi popq %rdi - movq 6552(%rax), %r11 + movq 6960(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6552(%rax), %r11 + movq 6960(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31031,19 +33006,122 @@ GL_PREFIX(ObjectUnpurgeableAPPLE): popq %rdx popq %rsi popq %rdi - movq 6552(%rax), %r11 + movq 6960(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ObjectUnpurgeableAPPLE), .-GL_PREFIX(ObjectUnpurgeableAPPLE) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_820) - .type GL_PREFIX(_dispatch_stub_820), @function - HIDDEN(GL_PREFIX(_dispatch_stub_820)) -GL_PREFIX(_dispatch_stub_820): + .globl GL_PREFIX(ActiveProgramEXT) + .type GL_PREFIX(ActiveProgramEXT), @function +GL_PREFIX(ActiveProgramEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6560(%rax), %r11 + movq 6968(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + call _x86_64_get_dispatch@PLT + popq %rdi + movq 6968(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6968(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + call _glapi_get_dispatch + popq %rdi + movq 6968(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(ActiveProgramEXT), .-GL_PREFIX(ActiveProgramEXT) + + .p2align 4,,15 + .globl GL_PREFIX(CreateShaderProgramEXT) + .type GL_PREFIX(CreateShaderProgramEXT), @function +GL_PREFIX(CreateShaderProgramEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6976(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6976(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6976(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6976(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(CreateShaderProgramEXT), .-GL_PREFIX(CreateShaderProgramEXT) + + .p2align 4,,15 + .globl GL_PREFIX(UseShaderProgramEXT) + .type GL_PREFIX(UseShaderProgramEXT), @function +GL_PREFIX(UseShaderProgramEXT): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6984(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 6984(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6984(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 6984(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(UseShaderProgramEXT), .-GL_PREFIX(UseShaderProgramEXT) + + .p2align 4,,15 + .globl GL_PREFIX(_dispatch_stub_874) + .type GL_PREFIX(_dispatch_stub_874), @function + HIDDEN(GL_PREFIX(_dispatch_stub_874)) +GL_PREFIX(_dispatch_stub_874): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6992(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31057,13 +33135,13 @@ GL_PREFIX(_dispatch_stub_820): popq %rdx popq %rsi popq %rdi - movq 6560(%rax), %r11 + movq 6992(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6560(%rax), %r11 + movq 6992(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31077,19 +33155,19 @@ GL_PREFIX(_dispatch_stub_820): popq %rdx popq %rsi popq %rdi - movq 6560(%rax), %r11 + movq 6992(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_820), .-GL_PREFIX(_dispatch_stub_820) + .size GL_PREFIX(_dispatch_stub_874), .-GL_PREFIX(_dispatch_stub_874) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_821) - .type GL_PREFIX(_dispatch_stub_821), @function - HIDDEN(GL_PREFIX(_dispatch_stub_821)) -GL_PREFIX(_dispatch_stub_821): + .globl GL_PREFIX(_dispatch_stub_875) + .type GL_PREFIX(_dispatch_stub_875), @function + HIDDEN(GL_PREFIX(_dispatch_stub_875)) +GL_PREFIX(_dispatch_stub_875): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6568(%rax), %r11 + movq 7000(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31103,13 +33181,13 @@ GL_PREFIX(_dispatch_stub_821): popq %rdx popq %rsi popq %rdi - movq 6568(%rax), %r11 + movq 7000(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6568(%rax), %r11 + movq 7000(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31123,19 +33201,19 @@ GL_PREFIX(_dispatch_stub_821): popq %rdx popq %rsi popq %rdi - movq 6568(%rax), %r11 + movq 7000(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_821), .-GL_PREFIX(_dispatch_stub_821) + .size GL_PREFIX(_dispatch_stub_875), .-GL_PREFIX(_dispatch_stub_875) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_822) - .type GL_PREFIX(_dispatch_stub_822), @function - HIDDEN(GL_PREFIX(_dispatch_stub_822)) -GL_PREFIX(_dispatch_stub_822): + .globl GL_PREFIX(_dispatch_stub_876) + .type GL_PREFIX(_dispatch_stub_876), @function + HIDDEN(GL_PREFIX(_dispatch_stub_876)) +GL_PREFIX(_dispatch_stub_876): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6576(%rax), %r11 + movq 7008(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31149,13 +33227,13 @@ GL_PREFIX(_dispatch_stub_822): popq %rdx popq %rsi popq %rdi - movq 6576(%rax), %r11 + movq 7008(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6576(%rax), %r11 + movq 7008(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31169,19 +33247,19 @@ GL_PREFIX(_dispatch_stub_822): popq %rdx popq %rsi popq %rdi - movq 6576(%rax), %r11 + movq 7008(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_822), .-GL_PREFIX(_dispatch_stub_822) + .size GL_PREFIX(_dispatch_stub_876), .-GL_PREFIX(_dispatch_stub_876) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_823) - .type GL_PREFIX(_dispatch_stub_823), @function - HIDDEN(GL_PREFIX(_dispatch_stub_823)) -GL_PREFIX(_dispatch_stub_823): + .globl GL_PREFIX(_dispatch_stub_877) + .type GL_PREFIX(_dispatch_stub_877), @function + HIDDEN(GL_PREFIX(_dispatch_stub_877)) +GL_PREFIX(_dispatch_stub_877): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6584(%rax), %r11 + movq 7016(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31191,13 +33269,13 @@ GL_PREFIX(_dispatch_stub_823): popq %rdx popq %rsi popq %rdi - movq 6584(%rax), %r11 + movq 7016(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6584(%rax), %r11 + movq 7016(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31207,19 +33285,19 @@ GL_PREFIX(_dispatch_stub_823): popq %rdx popq %rsi popq %rdi - movq 6584(%rax), %r11 + movq 7016(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_823), .-GL_PREFIX(_dispatch_stub_823) + .size GL_PREFIX(_dispatch_stub_877), .-GL_PREFIX(_dispatch_stub_877) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_824) - .type GL_PREFIX(_dispatch_stub_824), @function - HIDDEN(GL_PREFIX(_dispatch_stub_824)) -GL_PREFIX(_dispatch_stub_824): + .globl GL_PREFIX(_dispatch_stub_878) + .type GL_PREFIX(_dispatch_stub_878), @function + HIDDEN(GL_PREFIX(_dispatch_stub_878)) +GL_PREFIX(_dispatch_stub_878): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6592(%rax), %r11 + movq 7024(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31229,13 +33307,13 @@ GL_PREFIX(_dispatch_stub_824): popq %rdx popq %rsi popq %rdi - movq 6592(%rax), %r11 + movq 7024(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6592(%rax), %r11 + movq 7024(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31245,10 +33323,10 @@ GL_PREFIX(_dispatch_stub_824): popq %rdx popq %rsi popq %rdi - movq 6592(%rax), %r11 + movq 7024(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_824), .-GL_PREFIX(_dispatch_stub_824) + .size GL_PREFIX(_dispatch_stub_878), .-GL_PREFIX(_dispatch_stub_878) .p2align 4,,15 .globl GL_PREFIX(EGLImageTargetRenderbufferStorageOES) @@ -31256,7 +33334,7 @@ GL_PREFIX(_dispatch_stub_824): GL_PREFIX(EGLImageTargetRenderbufferStorageOES): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6600(%rax), %r11 + movq 7032(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31266,13 +33344,13 @@ GL_PREFIX(EGLImageTargetRenderbufferStorageOES): popq %rbp popq %rsi popq %rdi - movq 6600(%rax), %r11 + movq 7032(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6600(%rax), %r11 + movq 7032(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31282,7 +33360,7 @@ GL_PREFIX(EGLImageTargetRenderbufferStorageOES): popq %rbp popq %rsi popq %rdi - movq 6600(%rax), %r11 + movq 7032(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EGLImageTargetRenderbufferStorageOES), .-GL_PREFIX(EGLImageTargetRenderbufferStorageOES) @@ -31293,7 +33371,7 @@ GL_PREFIX(EGLImageTargetRenderbufferStorageOES): GL_PREFIX(EGLImageTargetTexture2DOES): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6608(%rax), %r11 + movq 7040(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31303,13 +33381,13 @@ GL_PREFIX(EGLImageTargetTexture2DOES): popq %rbp popq %rsi popq %rdi - movq 6608(%rax), %r11 + movq 7040(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6608(%rax), %r11 + movq 7040(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31319,7 +33397,7 @@ GL_PREFIX(EGLImageTargetTexture2DOES): popq %rbp popq %rsi popq %rdi - movq 6608(%rax), %r11 + movq 7040(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EGLImageTargetTexture2DOES), .-GL_PREFIX(EGLImageTargetTexture2DOES) @@ -31397,10 +33475,6 @@ GL_PREFIX(EGLImageTargetTexture2DOES): .globl GL_PREFIX(MultiTexCoord4iv) ; .set GL_PREFIX(MultiTexCoord4iv), GL_PREFIX(MultiTexCoord4ivARB) .globl GL_PREFIX(MultiTexCoord4s) ; .set GL_PREFIX(MultiTexCoord4s), GL_PREFIX(MultiTexCoord4sARB) .globl GL_PREFIX(MultiTexCoord4sv) ; .set GL_PREFIX(MultiTexCoord4sv), GL_PREFIX(MultiTexCoord4svARB) - .globl GL_PREFIX(DrawArraysInstancedARB) ; .set GL_PREFIX(DrawArraysInstancedARB), GL_PREFIX(DrawArraysInstanced) - .globl GL_PREFIX(DrawArraysInstancedEXT) ; .set GL_PREFIX(DrawArraysInstancedEXT), GL_PREFIX(DrawArraysInstanced) - .globl GL_PREFIX(DrawElementsInstancedARB) ; .set GL_PREFIX(DrawElementsInstancedARB), GL_PREFIX(DrawElementsInstanced) - .globl GL_PREFIX(DrawElementsInstancedEXT) ; .set GL_PREFIX(DrawElementsInstancedEXT), GL_PREFIX(DrawElementsInstanced) .globl GL_PREFIX(LoadTransposeMatrixd) ; .set GL_PREFIX(LoadTransposeMatrixd), GL_PREFIX(LoadTransposeMatrixdARB) .globl GL_PREFIX(LoadTransposeMatrixf) ; .set GL_PREFIX(LoadTransposeMatrixf), GL_PREFIX(LoadTransposeMatrixfARB) .globl GL_PREFIX(MultTransposeMatrixd) ; .set GL_PREFIX(MultTransposeMatrixd), GL_PREFIX(MultTransposeMatrixdARB) @@ -31512,6 +33586,10 @@ GL_PREFIX(EGLImageTargetTexture2DOES): .globl GL_PREFIX(GetAttribLocation) ; .set GL_PREFIX(GetAttribLocation), GL_PREFIX(GetAttribLocationARB) .globl GL_PREFIX(DrawBuffers) ; .set GL_PREFIX(DrawBuffers), GL_PREFIX(DrawBuffersARB) .globl GL_PREFIX(DrawBuffersATI) ; .set GL_PREFIX(DrawBuffersATI), GL_PREFIX(DrawBuffersARB) + .globl GL_PREFIX(DrawArraysInstancedEXT) ; .set GL_PREFIX(DrawArraysInstancedEXT), GL_PREFIX(DrawArraysInstancedARB) + .globl GL_PREFIX(DrawArraysInstanced) ; .set GL_PREFIX(DrawArraysInstanced), GL_PREFIX(DrawArraysInstancedARB) + .globl GL_PREFIX(DrawElementsInstancedEXT) ; .set GL_PREFIX(DrawElementsInstancedEXT), GL_PREFIX(DrawElementsInstancedARB) + .globl GL_PREFIX(DrawElementsInstanced) ; .set GL_PREFIX(DrawElementsInstanced), GL_PREFIX(DrawElementsInstancedARB) .globl GL_PREFIX(RenderbufferStorageMultisampleEXT) ; .set GL_PREFIX(RenderbufferStorageMultisampleEXT), GL_PREFIX(RenderbufferStorageMultisample) .globl GL_PREFIX(PointParameterf) ; .set GL_PREFIX(PointParameterf), GL_PREFIX(PointParameterfEXT) .globl GL_PREFIX(PointParameterfARB) ; .set GL_PREFIX(PointParameterfARB), GL_PREFIX(PointParameterfEXT) @@ -31582,9 +33660,10 @@ GL_PREFIX(EGLImageTargetTexture2DOES): .globl GL_PREFIX(IsProgramARB) ; .set GL_PREFIX(IsProgramARB), GL_PREFIX(IsProgramNV) .globl GL_PREFIX(PointParameteri) ; .set GL_PREFIX(PointParameteri), GL_PREFIX(PointParameteriNV) .globl GL_PREFIX(PointParameteriv) ; .set GL_PREFIX(PointParameteriv), GL_PREFIX(PointParameterivNV) - .globl GL_PREFIX(DeleteVertexArrays) ; .set GL_PREFIX(DeleteVertexArrays), GL_PREFIX(_dispatch_stub_765) - .globl GL_PREFIX(IsVertexArray) ; .set GL_PREFIX(IsVertexArray), GL_PREFIX(_dispatch_stub_767) - .globl GL_PREFIX(BlendEquationSeparate) ; .set GL_PREFIX(BlendEquationSeparate), GL_PREFIX(_dispatch_stub_777) + .globl GL_PREFIX(DeleteVertexArrays) ; .set GL_PREFIX(DeleteVertexArrays), GL_PREFIX(_dispatch_stub_776) + .globl GL_PREFIX(IsVertexArray) ; .set GL_PREFIX(IsVertexArray), GL_PREFIX(_dispatch_stub_778) + .globl GL_PREFIX(PrimitiveRestartIndex) ; .set GL_PREFIX(PrimitiveRestartIndex), GL_PREFIX(PrimitiveRestartIndexNV) + .globl GL_PREFIX(BlendEquationSeparate) ; .set GL_PREFIX(BlendEquationSeparate), GL_PREFIX(_dispatch_stub_788) .globl GL_PREFIX(BindFramebuffer) ; .set GL_PREFIX(BindFramebuffer), GL_PREFIX(BindFramebufferEXT) .globl GL_PREFIX(BindRenderbuffer) ; .set GL_PREFIX(BindRenderbuffer), GL_PREFIX(BindRenderbufferEXT) .globl GL_PREFIX(CheckFramebufferStatus) ; .set GL_PREFIX(CheckFramebufferStatus), GL_PREFIX(CheckFramebufferStatusEXT) @@ -31602,8 +33681,54 @@ GL_PREFIX(EGLImageTargetTexture2DOES): .globl GL_PREFIX(IsFramebuffer) ; .set GL_PREFIX(IsFramebuffer), GL_PREFIX(IsFramebufferEXT) .globl GL_PREFIX(IsRenderbuffer) ; .set GL_PREFIX(IsRenderbuffer), GL_PREFIX(IsRenderbufferEXT) .globl GL_PREFIX(RenderbufferStorage) ; .set GL_PREFIX(RenderbufferStorage), GL_PREFIX(RenderbufferStorageEXT) - .globl GL_PREFIX(BlitFramebuffer) ; .set GL_PREFIX(BlitFramebuffer), GL_PREFIX(_dispatch_stub_795) + .globl GL_PREFIX(BlitFramebuffer) ; .set GL_PREFIX(BlitFramebuffer), GL_PREFIX(_dispatch_stub_806) + .globl GL_PREFIX(BindFragDataLocation) ; .set GL_PREFIX(BindFragDataLocation), GL_PREFIX(BindFragDataLocationEXT) + .globl GL_PREFIX(GetFragDataLocation) ; .set GL_PREFIX(GetFragDataLocation), GL_PREFIX(GetFragDataLocationEXT) + .globl GL_PREFIX(GetUniformuiv) ; .set GL_PREFIX(GetUniformuiv), GL_PREFIX(GetUniformuivEXT) + .globl GL_PREFIX(GetVertexAttribIiv) ; .set GL_PREFIX(GetVertexAttribIiv), GL_PREFIX(GetVertexAttribIivEXT) + .globl GL_PREFIX(GetVertexAttribIuiv) ; .set GL_PREFIX(GetVertexAttribIuiv), GL_PREFIX(GetVertexAttribIuivEXT) + .globl GL_PREFIX(Uniform1ui) ; .set GL_PREFIX(Uniform1ui), GL_PREFIX(Uniform1uiEXT) + .globl GL_PREFIX(Uniform1uiv) ; .set GL_PREFIX(Uniform1uiv), GL_PREFIX(Uniform1uivEXT) + .globl GL_PREFIX(Uniform2ui) ; .set GL_PREFIX(Uniform2ui), GL_PREFIX(Uniform2uiEXT) + .globl GL_PREFIX(Uniform2uiv) ; .set GL_PREFIX(Uniform2uiv), GL_PREFIX(Uniform2uivEXT) + .globl GL_PREFIX(Uniform3ui) ; .set GL_PREFIX(Uniform3ui), GL_PREFIX(Uniform3uiEXT) + .globl GL_PREFIX(Uniform3uiv) ; .set GL_PREFIX(Uniform3uiv), GL_PREFIX(Uniform3uivEXT) + .globl GL_PREFIX(Uniform4ui) ; .set GL_PREFIX(Uniform4ui), GL_PREFIX(Uniform4uiEXT) + .globl GL_PREFIX(Uniform4uiv) ; .set GL_PREFIX(Uniform4uiv), GL_PREFIX(Uniform4uivEXT) + .globl GL_PREFIX(VertexAttribI1i) ; .set GL_PREFIX(VertexAttribI1i), GL_PREFIX(VertexAttribI1iEXT) + .globl GL_PREFIX(VertexAttribI1iv) ; .set GL_PREFIX(VertexAttribI1iv), GL_PREFIX(VertexAttribI1ivEXT) + .globl GL_PREFIX(VertexAttribI1ui) ; .set GL_PREFIX(VertexAttribI1ui), GL_PREFIX(VertexAttribI1uiEXT) + .globl GL_PREFIX(VertexAttribI1uiv) ; .set GL_PREFIX(VertexAttribI1uiv), GL_PREFIX(VertexAttribI1uivEXT) + .globl GL_PREFIX(VertexAttribI2i) ; .set GL_PREFIX(VertexAttribI2i), GL_PREFIX(VertexAttribI2iEXT) + .globl GL_PREFIX(VertexAttribI2iv) ; .set GL_PREFIX(VertexAttribI2iv), GL_PREFIX(VertexAttribI2ivEXT) + .globl GL_PREFIX(VertexAttribI2ui) ; .set GL_PREFIX(VertexAttribI2ui), GL_PREFIX(VertexAttribI2uiEXT) + .globl GL_PREFIX(VertexAttribI2uiv) ; .set GL_PREFIX(VertexAttribI2uiv), GL_PREFIX(VertexAttribI2uivEXT) + .globl GL_PREFIX(VertexAttribI3i) ; .set GL_PREFIX(VertexAttribI3i), GL_PREFIX(VertexAttribI3iEXT) + .globl GL_PREFIX(VertexAttribI3iv) ; .set GL_PREFIX(VertexAttribI3iv), GL_PREFIX(VertexAttribI3ivEXT) + .globl GL_PREFIX(VertexAttribI3ui) ; .set GL_PREFIX(VertexAttribI3ui), GL_PREFIX(VertexAttribI3uiEXT) + .globl GL_PREFIX(VertexAttribI3uiv) ; .set GL_PREFIX(VertexAttribI3uiv), GL_PREFIX(VertexAttribI3uivEXT) + .globl GL_PREFIX(VertexAttribI4bv) ; .set GL_PREFIX(VertexAttribI4bv), GL_PREFIX(VertexAttribI4bvEXT) + .globl GL_PREFIX(VertexAttribI4i) ; .set GL_PREFIX(VertexAttribI4i), GL_PREFIX(VertexAttribI4iEXT) + .globl GL_PREFIX(VertexAttribI4iv) ; .set GL_PREFIX(VertexAttribI4iv), GL_PREFIX(VertexAttribI4ivEXT) + .globl GL_PREFIX(VertexAttribI4sv) ; .set GL_PREFIX(VertexAttribI4sv), GL_PREFIX(VertexAttribI4svEXT) + .globl GL_PREFIX(VertexAttribI4ubv) ; .set GL_PREFIX(VertexAttribI4ubv), GL_PREFIX(VertexAttribI4ubvEXT) + .globl GL_PREFIX(VertexAttribI4ui) ; .set GL_PREFIX(VertexAttribI4ui), GL_PREFIX(VertexAttribI4uiEXT) + .globl GL_PREFIX(VertexAttribI4uiv) ; .set GL_PREFIX(VertexAttribI4uiv), GL_PREFIX(VertexAttribI4uivEXT) + .globl GL_PREFIX(VertexAttribI4usv) ; .set GL_PREFIX(VertexAttribI4usv), GL_PREFIX(VertexAttribI4usvEXT) + .globl GL_PREFIX(VertexAttribIPointer) ; .set GL_PREFIX(VertexAttribIPointer), GL_PREFIX(VertexAttribIPointerEXT) .globl GL_PREFIX(FramebufferTextureLayer) ; .set GL_PREFIX(FramebufferTextureLayer), GL_PREFIX(FramebufferTextureLayerEXT) + .globl GL_PREFIX(ColorMaski) ; .set GL_PREFIX(ColorMaski), GL_PREFIX(ColorMaskIndexedEXT) + .globl GL_PREFIX(Disablei) ; .set GL_PREFIX(Disablei), GL_PREFIX(DisableIndexedEXT) + .globl GL_PREFIX(Enablei) ; .set GL_PREFIX(Enablei), GL_PREFIX(EnableIndexedEXT) + .globl GL_PREFIX(GetBooleani_v) ; .set GL_PREFIX(GetBooleani_v), GL_PREFIX(GetBooleanIndexedvEXT) + .globl GL_PREFIX(GetIntegeri_v) ; .set GL_PREFIX(GetIntegeri_v), GL_PREFIX(GetIntegerIndexedvEXT) + .globl GL_PREFIX(IsEnabledi) ; .set GL_PREFIX(IsEnabledi), GL_PREFIX(IsEnabledIndexedEXT) + .globl GL_PREFIX(GetTexParameterIiv) ; .set GL_PREFIX(GetTexParameterIiv), GL_PREFIX(GetTexParameterIivEXT) + .globl GL_PREFIX(GetTexParameterIuiv) ; .set GL_PREFIX(GetTexParameterIuiv), GL_PREFIX(GetTexParameterIuivEXT) + .globl GL_PREFIX(TexParameterIiv) ; .set GL_PREFIX(TexParameterIiv), GL_PREFIX(TexParameterIivEXT) + .globl GL_PREFIX(TexParameterIuiv) ; .set GL_PREFIX(TexParameterIuiv), GL_PREFIX(TexParameterIuivEXT) + .globl GL_PREFIX(BeginConditionalRender) ; .set GL_PREFIX(BeginConditionalRender), GL_PREFIX(BeginConditionalRenderNV) + .globl GL_PREFIX(EndConditionalRender) ; .set GL_PREFIX(EndConditionalRender), GL_PREFIX(EndConditionalRenderNV) .globl GL_PREFIX(BeginTransformFeedback) ; .set GL_PREFIX(BeginTransformFeedback), GL_PREFIX(BeginTransformFeedbackEXT) .globl GL_PREFIX(BindBufferBase) ; .set GL_PREFIX(BindBufferBase), GL_PREFIX(BindBufferBaseEXT) .globl GL_PREFIX(BindBufferRange) ; .set GL_PREFIX(BindBufferRange), GL_PREFIX(BindBufferRangeEXT) diff --git a/src/mapi/glapi/glapi_x86.S b/src/mapi/glapi/glapi_x86.S index 0a9efded9e..72729f2f09 100644 --- a/src/mapi/glapi/glapi_x86.S +++ b/src/mapi/glapi/glapi_x86.S @@ -27,7 +27,6 @@ */ #include "x86/assyntax.h" -#include "glapi/glapioffsets.h" #if defined(STDCALL_API) # if defined(USE_MGL_NAMESPACE) @@ -151,1155 +150,1256 @@ EXTERN GLNAME(_glapi_get_dispatch) HIDDEN(GLNAME(gl_dispatch_functions_start)) GLNAME(gl_dispatch_functions_start): - GL_STUB(NewList, _gloffset_NewList, NewList@8) - GL_STUB(EndList, _gloffset_EndList, EndList@0) - GL_STUB(CallList, _gloffset_CallList, CallList@4) - GL_STUB(CallLists, _gloffset_CallLists, CallLists@12) - GL_STUB(DeleteLists, _gloffset_DeleteLists, DeleteLists@8) - GL_STUB(GenLists, _gloffset_GenLists, GenLists@4) - GL_STUB(ListBase, _gloffset_ListBase, ListBase@4) - GL_STUB(Begin, _gloffset_Begin, Begin@4) - GL_STUB(Bitmap, _gloffset_Bitmap, Bitmap@28) - GL_STUB(Color3b, _gloffset_Color3b, Color3b@12) - GL_STUB(Color3bv, _gloffset_Color3bv, Color3bv@4) - GL_STUB(Color3d, _gloffset_Color3d, Color3d@24) - GL_STUB(Color3dv, _gloffset_Color3dv, Color3dv@4) - GL_STUB(Color3f, _gloffset_Color3f, Color3f@12) - GL_STUB(Color3fv, _gloffset_Color3fv, Color3fv@4) - GL_STUB(Color3i, _gloffset_Color3i, Color3i@12) - GL_STUB(Color3iv, _gloffset_Color3iv, Color3iv@4) - GL_STUB(Color3s, _gloffset_Color3s, Color3s@12) - GL_STUB(Color3sv, _gloffset_Color3sv, Color3sv@4) - GL_STUB(Color3ub, _gloffset_Color3ub, Color3ub@12) - GL_STUB(Color3ubv, _gloffset_Color3ubv, Color3ubv@4) - GL_STUB(Color3ui, _gloffset_Color3ui, Color3ui@12) - GL_STUB(Color3uiv, _gloffset_Color3uiv, Color3uiv@4) - GL_STUB(Color3us, _gloffset_Color3us, Color3us@12) - GL_STUB(Color3usv, _gloffset_Color3usv, Color3usv@4) - GL_STUB(Color4b, _gloffset_Color4b, Color4b@16) - GL_STUB(Color4bv, _gloffset_Color4bv, Color4bv@4) - GL_STUB(Color4d, _gloffset_Color4d, Color4d@32) - GL_STUB(Color4dv, _gloffset_Color4dv, Color4dv@4) - GL_STUB(Color4f, _gloffset_Color4f, Color4f@16) - GL_STUB(Color4fv, _gloffset_Color4fv, Color4fv@4) - GL_STUB(Color4i, _gloffset_Color4i, Color4i@16) - GL_STUB(Color4iv, _gloffset_Color4iv, Color4iv@4) - GL_STUB(Color4s, _gloffset_Color4s, Color4s@16) - GL_STUB(Color4sv, _gloffset_Color4sv, Color4sv@4) - GL_STUB(Color4ub, _gloffset_Color4ub, Color4ub@16) - GL_STUB(Color4ubv, _gloffset_Color4ubv, Color4ubv@4) - GL_STUB(Color4ui, _gloffset_Color4ui, Color4ui@16) - GL_STUB(Color4uiv, _gloffset_Color4uiv, Color4uiv@4) - GL_STUB(Color4us, _gloffset_Color4us, Color4us@16) - GL_STUB(Color4usv, _gloffset_Color4usv, Color4usv@4) - GL_STUB(EdgeFlag, _gloffset_EdgeFlag, EdgeFlag@4) - GL_STUB(EdgeFlagv, _gloffset_EdgeFlagv, EdgeFlagv@4) - GL_STUB(End, _gloffset_End, End@0) - GL_STUB(Indexd, _gloffset_Indexd, Indexd@8) - GL_STUB(Indexdv, _gloffset_Indexdv, Indexdv@4) - GL_STUB(Indexf, _gloffset_Indexf, Indexf@4) - GL_STUB(Indexfv, _gloffset_Indexfv, Indexfv@4) - GL_STUB(Indexi, _gloffset_Indexi, Indexi@4) - GL_STUB(Indexiv, _gloffset_Indexiv, Indexiv@4) - GL_STUB(Indexs, _gloffset_Indexs, Indexs@4) - GL_STUB(Indexsv, _gloffset_Indexsv, Indexsv@4) - GL_STUB(Normal3b, _gloffset_Normal3b, Normal3b@12) - GL_STUB(Normal3bv, _gloffset_Normal3bv, Normal3bv@4) - GL_STUB(Normal3d, _gloffset_Normal3d, Normal3d@24) - GL_STUB(Normal3dv, _gloffset_Normal3dv, Normal3dv@4) - GL_STUB(Normal3f, _gloffset_Normal3f, Normal3f@12) - GL_STUB(Normal3fv, _gloffset_Normal3fv, Normal3fv@4) - GL_STUB(Normal3i, _gloffset_Normal3i, Normal3i@12) - GL_STUB(Normal3iv, _gloffset_Normal3iv, Normal3iv@4) - GL_STUB(Normal3s, _gloffset_Normal3s, Normal3s@12) - GL_STUB(Normal3sv, _gloffset_Normal3sv, Normal3sv@4) - GL_STUB(RasterPos2d, _gloffset_RasterPos2d, RasterPos2d@16) - GL_STUB(RasterPos2dv, _gloffset_RasterPos2dv, RasterPos2dv@4) - GL_STUB(RasterPos2f, _gloffset_RasterPos2f, RasterPos2f@8) - GL_STUB(RasterPos2fv, _gloffset_RasterPos2fv, RasterPos2fv@4) - GL_STUB(RasterPos2i, _gloffset_RasterPos2i, RasterPos2i@8) - GL_STUB(RasterPos2iv, _gloffset_RasterPos2iv, RasterPos2iv@4) - GL_STUB(RasterPos2s, _gloffset_RasterPos2s, RasterPos2s@8) - GL_STUB(RasterPos2sv, _gloffset_RasterPos2sv, RasterPos2sv@4) - GL_STUB(RasterPos3d, _gloffset_RasterPos3d, RasterPos3d@24) - GL_STUB(RasterPos3dv, _gloffset_RasterPos3dv, RasterPos3dv@4) - GL_STUB(RasterPos3f, _gloffset_RasterPos3f, RasterPos3f@12) - GL_STUB(RasterPos3fv, _gloffset_RasterPos3fv, RasterPos3fv@4) - GL_STUB(RasterPos3i, _gloffset_RasterPos3i, RasterPos3i@12) - GL_STUB(RasterPos3iv, _gloffset_RasterPos3iv, RasterPos3iv@4) - GL_STUB(RasterPos3s, _gloffset_RasterPos3s, RasterPos3s@12) - GL_STUB(RasterPos3sv, _gloffset_RasterPos3sv, RasterPos3sv@4) - GL_STUB(RasterPos4d, _gloffset_RasterPos4d, RasterPos4d@32) - GL_STUB(RasterPos4dv, _gloffset_RasterPos4dv, RasterPos4dv@4) - GL_STUB(RasterPos4f, _gloffset_RasterPos4f, RasterPos4f@16) - GL_STUB(RasterPos4fv, _gloffset_RasterPos4fv, RasterPos4fv@4) - GL_STUB(RasterPos4i, _gloffset_RasterPos4i, RasterPos4i@16) - GL_STUB(RasterPos4iv, _gloffset_RasterPos4iv, RasterPos4iv@4) - GL_STUB(RasterPos4s, _gloffset_RasterPos4s, RasterPos4s@16) - GL_STUB(RasterPos4sv, _gloffset_RasterPos4sv, RasterPos4sv@4) - GL_STUB(Rectd, _gloffset_Rectd, Rectd@32) - GL_STUB(Rectdv, _gloffset_Rectdv, Rectdv@8) - GL_STUB(Rectf, _gloffset_Rectf, Rectf@16) - GL_STUB(Rectfv, _gloffset_Rectfv, Rectfv@8) - GL_STUB(Recti, _gloffset_Recti, Recti@16) - GL_STUB(Rectiv, _gloffset_Rectiv, Rectiv@8) - GL_STUB(Rects, _gloffset_Rects, Rects@16) - GL_STUB(Rectsv, _gloffset_Rectsv, Rectsv@8) - GL_STUB(TexCoord1d, _gloffset_TexCoord1d, TexCoord1d@8) - GL_STUB(TexCoord1dv, _gloffset_TexCoord1dv, TexCoord1dv@4) - GL_STUB(TexCoord1f, _gloffset_TexCoord1f, TexCoord1f@4) - GL_STUB(TexCoord1fv, _gloffset_TexCoord1fv, TexCoord1fv@4) - GL_STUB(TexCoord1i, _gloffset_TexCoord1i, TexCoord1i@4) - GL_STUB(TexCoord1iv, _gloffset_TexCoord1iv, TexCoord1iv@4) - GL_STUB(TexCoord1s, _gloffset_TexCoord1s, TexCoord1s@4) - GL_STUB(TexCoord1sv, _gloffset_TexCoord1sv, TexCoord1sv@4) - GL_STUB(TexCoord2d, _gloffset_TexCoord2d, TexCoord2d@16) - GL_STUB(TexCoord2dv, _gloffset_TexCoord2dv, TexCoord2dv@4) - GL_STUB(TexCoord2f, _gloffset_TexCoord2f, TexCoord2f@8) - GL_STUB(TexCoord2fv, _gloffset_TexCoord2fv, TexCoord2fv@4) - GL_STUB(TexCoord2i, _gloffset_TexCoord2i, TexCoord2i@8) - GL_STUB(TexCoord2iv, _gloffset_TexCoord2iv, TexCoord2iv@4) - GL_STUB(TexCoord2s, _gloffset_TexCoord2s, TexCoord2s@8) - GL_STUB(TexCoord2sv, _gloffset_TexCoord2sv, TexCoord2sv@4) - GL_STUB(TexCoord3d, _gloffset_TexCoord3d, TexCoord3d@24) - GL_STUB(TexCoord3dv, _gloffset_TexCoord3dv, TexCoord3dv@4) - GL_STUB(TexCoord3f, _gloffset_TexCoord3f, TexCoord3f@12) - GL_STUB(TexCoord3fv, _gloffset_TexCoord3fv, TexCoord3fv@4) - GL_STUB(TexCoord3i, _gloffset_TexCoord3i, TexCoord3i@12) - GL_STUB(TexCoord3iv, _gloffset_TexCoord3iv, TexCoord3iv@4) - GL_STUB(TexCoord3s, _gloffset_TexCoord3s, TexCoord3s@12) - GL_STUB(TexCoord3sv, _gloffset_TexCoord3sv, TexCoord3sv@4) - GL_STUB(TexCoord4d, _gloffset_TexCoord4d, TexCoord4d@32) - GL_STUB(TexCoord4dv, _gloffset_TexCoord4dv, TexCoord4dv@4) - GL_STUB(TexCoord4f, _gloffset_TexCoord4f, TexCoord4f@16) - GL_STUB(TexCoord4fv, _gloffset_TexCoord4fv, TexCoord4fv@4) - GL_STUB(TexCoord4i, _gloffset_TexCoord4i, TexCoord4i@16) - GL_STUB(TexCoord4iv, _gloffset_TexCoord4iv, TexCoord4iv@4) - GL_STUB(TexCoord4s, _gloffset_TexCoord4s, TexCoord4s@16) - GL_STUB(TexCoord4sv, _gloffset_TexCoord4sv, TexCoord4sv@4) - GL_STUB(Vertex2d, _gloffset_Vertex2d, Vertex2d@16) - GL_STUB(Vertex2dv, _gloffset_Vertex2dv, Vertex2dv@4) - GL_STUB(Vertex2f, _gloffset_Vertex2f, Vertex2f@8) - GL_STUB(Vertex2fv, _gloffset_Vertex2fv, Vertex2fv@4) - GL_STUB(Vertex2i, _gloffset_Vertex2i, Vertex2i@8) - GL_STUB(Vertex2iv, _gloffset_Vertex2iv, Vertex2iv@4) - GL_STUB(Vertex2s, _gloffset_Vertex2s, Vertex2s@8) - GL_STUB(Vertex2sv, _gloffset_Vertex2sv, Vertex2sv@4) - GL_STUB(Vertex3d, _gloffset_Vertex3d, Vertex3d@24) - GL_STUB(Vertex3dv, _gloffset_Vertex3dv, Vertex3dv@4) - GL_STUB(Vertex3f, _gloffset_Vertex3f, Vertex3f@12) - GL_STUB(Vertex3fv, _gloffset_Vertex3fv, Vertex3fv@4) - GL_STUB(Vertex3i, _gloffset_Vertex3i, Vertex3i@12) - GL_STUB(Vertex3iv, _gloffset_Vertex3iv, Vertex3iv@4) - GL_STUB(Vertex3s, _gloffset_Vertex3s, Vertex3s@12) - GL_STUB(Vertex3sv, _gloffset_Vertex3sv, Vertex3sv@4) - GL_STUB(Vertex4d, _gloffset_Vertex4d, Vertex4d@32) - GL_STUB(Vertex4dv, _gloffset_Vertex4dv, Vertex4dv@4) - GL_STUB(Vertex4f, _gloffset_Vertex4f, Vertex4f@16) - GL_STUB(Vertex4fv, _gloffset_Vertex4fv, Vertex4fv@4) - GL_STUB(Vertex4i, _gloffset_Vertex4i, Vertex4i@16) - GL_STUB(Vertex4iv, _gloffset_Vertex4iv, Vertex4iv@4) - GL_STUB(Vertex4s, _gloffset_Vertex4s, Vertex4s@16) - GL_STUB(Vertex4sv, _gloffset_Vertex4sv, Vertex4sv@4) - GL_STUB(ClipPlane, _gloffset_ClipPlane, ClipPlane@8) - GL_STUB(ColorMaterial, _gloffset_ColorMaterial, ColorMaterial@8) - GL_STUB(CullFace, _gloffset_CullFace, CullFace@4) - GL_STUB(Fogf, _gloffset_Fogf, Fogf@8) - GL_STUB(Fogfv, _gloffset_Fogfv, Fogfv@8) - GL_STUB(Fogi, _gloffset_Fogi, Fogi@8) - GL_STUB(Fogiv, _gloffset_Fogiv, Fogiv@8) - GL_STUB(FrontFace, _gloffset_FrontFace, FrontFace@4) - GL_STUB(Hint, _gloffset_Hint, Hint@8) - GL_STUB(Lightf, _gloffset_Lightf, Lightf@12) - GL_STUB(Lightfv, _gloffset_Lightfv, Lightfv@12) - GL_STUB(Lighti, _gloffset_Lighti, Lighti@12) - GL_STUB(Lightiv, _gloffset_Lightiv, Lightiv@12) - GL_STUB(LightModelf, _gloffset_LightModelf, LightModelf@8) - GL_STUB(LightModelfv, _gloffset_LightModelfv, LightModelfv@8) - GL_STUB(LightModeli, _gloffset_LightModeli, LightModeli@8) - GL_STUB(LightModeliv, _gloffset_LightModeliv, LightModeliv@8) - GL_STUB(LineStipple, _gloffset_LineStipple, LineStipple@8) - GL_STUB(LineWidth, _gloffset_LineWidth, LineWidth@4) - GL_STUB(Materialf, _gloffset_Materialf, Materialf@12) - GL_STUB(Materialfv, _gloffset_Materialfv, Materialfv@12) - GL_STUB(Materiali, _gloffset_Materiali, Materiali@12) - GL_STUB(Materialiv, _gloffset_Materialiv, Materialiv@12) - GL_STUB(PointSize, _gloffset_PointSize, PointSize@4) - GL_STUB(PolygonMode, _gloffset_PolygonMode, PolygonMode@8) - GL_STUB(PolygonStipple, _gloffset_PolygonStipple, PolygonStipple@4) - GL_STUB(Scissor, _gloffset_Scissor, Scissor@16) - GL_STUB(ShadeModel, _gloffset_ShadeModel, ShadeModel@4) - GL_STUB(TexParameterf, _gloffset_TexParameterf, TexParameterf@12) - GL_STUB(TexParameterfv, _gloffset_TexParameterfv, TexParameterfv@12) - GL_STUB(TexParameteri, _gloffset_TexParameteri, TexParameteri@12) - GL_STUB(TexParameteriv, _gloffset_TexParameteriv, TexParameteriv@12) - GL_STUB(TexImage1D, _gloffset_TexImage1D, TexImage1D@32) - GL_STUB(TexImage2D, _gloffset_TexImage2D, TexImage2D@36) - GL_STUB(TexEnvf, _gloffset_TexEnvf, TexEnvf@12) - GL_STUB(TexEnvfv, _gloffset_TexEnvfv, TexEnvfv@12) - GL_STUB(TexEnvi, _gloffset_TexEnvi, TexEnvi@12) - GL_STUB(TexEnviv, _gloffset_TexEnviv, TexEnviv@12) - GL_STUB(TexGend, _gloffset_TexGend, TexGend@16) - GL_STUB(TexGendv, _gloffset_TexGendv, TexGendv@12) - GL_STUB(TexGenf, _gloffset_TexGenf, TexGenf@12) - GL_STUB(TexGenfv, _gloffset_TexGenfv, TexGenfv@12) - GL_STUB(TexGeni, _gloffset_TexGeni, TexGeni@12) - GL_STUB(TexGeniv, _gloffset_TexGeniv, TexGeniv@12) - GL_STUB(FeedbackBuffer, _gloffset_FeedbackBuffer, FeedbackBuffer@12) - GL_STUB(SelectBuffer, _gloffset_SelectBuffer, SelectBuffer@8) - GL_STUB(RenderMode, _gloffset_RenderMode, RenderMode@4) - GL_STUB(InitNames, _gloffset_InitNames, InitNames@0) - GL_STUB(LoadName, _gloffset_LoadName, LoadName@4) - GL_STUB(PassThrough, _gloffset_PassThrough, PassThrough@4) - GL_STUB(PopName, _gloffset_PopName, PopName@0) - GL_STUB(PushName, _gloffset_PushName, PushName@4) - GL_STUB(DrawBuffer, _gloffset_DrawBuffer, DrawBuffer@4) - GL_STUB(Clear, _gloffset_Clear, Clear@4) - GL_STUB(ClearAccum, _gloffset_ClearAccum, ClearAccum@16) - GL_STUB(ClearIndex, _gloffset_ClearIndex, ClearIndex@4) - GL_STUB(ClearColor, _gloffset_ClearColor, ClearColor@16) - GL_STUB(ClearStencil, _gloffset_ClearStencil, ClearStencil@4) - GL_STUB(ClearDepth, _gloffset_ClearDepth, ClearDepth@8) - GL_STUB(StencilMask, _gloffset_StencilMask, StencilMask@4) - GL_STUB(ColorMask, _gloffset_ColorMask, ColorMask@16) - GL_STUB(DepthMask, _gloffset_DepthMask, DepthMask@4) - GL_STUB(IndexMask, _gloffset_IndexMask, IndexMask@4) - GL_STUB(Accum, _gloffset_Accum, Accum@8) - GL_STUB(Disable, _gloffset_Disable, Disable@4) - GL_STUB(Enable, _gloffset_Enable, Enable@4) - GL_STUB(Finish, _gloffset_Finish, Finish@0) - GL_STUB(Flush, _gloffset_Flush, Flush@0) - GL_STUB(PopAttrib, _gloffset_PopAttrib, PopAttrib@0) - GL_STUB(PushAttrib, _gloffset_PushAttrib, PushAttrib@4) - GL_STUB(Map1d, _gloffset_Map1d, Map1d@32) - GL_STUB(Map1f, _gloffset_Map1f, Map1f@24) - GL_STUB(Map2d, _gloffset_Map2d, Map2d@56) - GL_STUB(Map2f, _gloffset_Map2f, Map2f@40) - GL_STUB(MapGrid1d, _gloffset_MapGrid1d, MapGrid1d@20) - GL_STUB(MapGrid1f, _gloffset_MapGrid1f, MapGrid1f@12) - GL_STUB(MapGrid2d, _gloffset_MapGrid2d, MapGrid2d@40) - GL_STUB(MapGrid2f, _gloffset_MapGrid2f, MapGrid2f@24) - GL_STUB(EvalCoord1d, _gloffset_EvalCoord1d, EvalCoord1d@8) - GL_STUB(EvalCoord1dv, _gloffset_EvalCoord1dv, EvalCoord1dv@4) - GL_STUB(EvalCoord1f, _gloffset_EvalCoord1f, EvalCoord1f@4) - GL_STUB(EvalCoord1fv, _gloffset_EvalCoord1fv, EvalCoord1fv@4) - GL_STUB(EvalCoord2d, _gloffset_EvalCoord2d, EvalCoord2d@16) - GL_STUB(EvalCoord2dv, _gloffset_EvalCoord2dv, EvalCoord2dv@4) - GL_STUB(EvalCoord2f, _gloffset_EvalCoord2f, EvalCoord2f@8) - GL_STUB(EvalCoord2fv, _gloffset_EvalCoord2fv, EvalCoord2fv@4) - GL_STUB(EvalMesh1, _gloffset_EvalMesh1, EvalMesh1@12) - GL_STUB(EvalPoint1, _gloffset_EvalPoint1, EvalPoint1@4) - GL_STUB(EvalMesh2, _gloffset_EvalMesh2, EvalMesh2@20) - GL_STUB(EvalPoint2, _gloffset_EvalPoint2, EvalPoint2@8) - GL_STUB(AlphaFunc, _gloffset_AlphaFunc, AlphaFunc@8) - GL_STUB(BlendFunc, _gloffset_BlendFunc, BlendFunc@8) - GL_STUB(LogicOp, _gloffset_LogicOp, LogicOp@4) - GL_STUB(StencilFunc, _gloffset_StencilFunc, StencilFunc@12) - GL_STUB(StencilOp, _gloffset_StencilOp, StencilOp@12) - GL_STUB(DepthFunc, _gloffset_DepthFunc, DepthFunc@4) - GL_STUB(PixelZoom, _gloffset_PixelZoom, PixelZoom@8) - GL_STUB(PixelTransferf, _gloffset_PixelTransferf, PixelTransferf@8) - GL_STUB(PixelTransferi, _gloffset_PixelTransferi, PixelTransferi@8) - GL_STUB(PixelStoref, _gloffset_PixelStoref, PixelStoref@8) - GL_STUB(PixelStorei, _gloffset_PixelStorei, PixelStorei@8) - GL_STUB(PixelMapfv, _gloffset_PixelMapfv, PixelMapfv@12) - GL_STUB(PixelMapuiv, _gloffset_PixelMapuiv, PixelMapuiv@12) - GL_STUB(PixelMapusv, _gloffset_PixelMapusv, PixelMapusv@12) - GL_STUB(ReadBuffer, _gloffset_ReadBuffer, ReadBuffer@4) - GL_STUB(CopyPixels, _gloffset_CopyPixels, CopyPixels@20) - GL_STUB(ReadPixels, _gloffset_ReadPixels, ReadPixels@28) - GL_STUB(DrawPixels, _gloffset_DrawPixels, DrawPixels@20) - GL_STUB(GetBooleanv, _gloffset_GetBooleanv, GetBooleanv@8) - GL_STUB(GetClipPlane, _gloffset_GetClipPlane, GetClipPlane@8) - GL_STUB(GetDoublev, _gloffset_GetDoublev, GetDoublev@8) - GL_STUB(GetError, _gloffset_GetError, GetError@0) - GL_STUB(GetFloatv, _gloffset_GetFloatv, GetFloatv@8) - GL_STUB(GetIntegerv, _gloffset_GetIntegerv, GetIntegerv@8) - GL_STUB(GetLightfv, _gloffset_GetLightfv, GetLightfv@12) - GL_STUB(GetLightiv, _gloffset_GetLightiv, GetLightiv@12) - GL_STUB(GetMapdv, _gloffset_GetMapdv, GetMapdv@12) - GL_STUB(GetMapfv, _gloffset_GetMapfv, GetMapfv@12) - GL_STUB(GetMapiv, _gloffset_GetMapiv, GetMapiv@12) - GL_STUB(GetMaterialfv, _gloffset_GetMaterialfv, GetMaterialfv@12) - GL_STUB(GetMaterialiv, _gloffset_GetMaterialiv, GetMaterialiv@12) - GL_STUB(GetPixelMapfv, _gloffset_GetPixelMapfv, GetPixelMapfv@8) - GL_STUB(GetPixelMapuiv, _gloffset_GetPixelMapuiv, GetPixelMapuiv@8) - GL_STUB(GetPixelMapusv, _gloffset_GetPixelMapusv, GetPixelMapusv@8) - GL_STUB(GetPolygonStipple, _gloffset_GetPolygonStipple, GetPolygonStipple@4) - GL_STUB(GetString, _gloffset_GetString, GetString@4) - GL_STUB(GetTexEnvfv, _gloffset_GetTexEnvfv, GetTexEnvfv@12) - GL_STUB(GetTexEnviv, _gloffset_GetTexEnviv, GetTexEnviv@12) - GL_STUB(GetTexGendv, _gloffset_GetTexGendv, GetTexGendv@12) - GL_STUB(GetTexGenfv, _gloffset_GetTexGenfv, GetTexGenfv@12) - GL_STUB(GetTexGeniv, _gloffset_GetTexGeniv, GetTexGeniv@12) - GL_STUB(GetTexImage, _gloffset_GetTexImage, GetTexImage@20) - GL_STUB(GetTexParameterfv, _gloffset_GetTexParameterfv, GetTexParameterfv@12) - GL_STUB(GetTexParameteriv, _gloffset_GetTexParameteriv, GetTexParameteriv@12) - GL_STUB(GetTexLevelParameterfv, _gloffset_GetTexLevelParameterfv, GetTexLevelParameterfv@16) - GL_STUB(GetTexLevelParameteriv, _gloffset_GetTexLevelParameteriv, GetTexLevelParameteriv@16) - GL_STUB(IsEnabled, _gloffset_IsEnabled, IsEnabled@4) - GL_STUB(IsList, _gloffset_IsList, IsList@4) - GL_STUB(DepthRange, _gloffset_DepthRange, DepthRange@16) - GL_STUB(Frustum, _gloffset_Frustum, Frustum@48) - GL_STUB(LoadIdentity, _gloffset_LoadIdentity, LoadIdentity@0) - GL_STUB(LoadMatrixf, _gloffset_LoadMatrixf, LoadMatrixf@4) - GL_STUB(LoadMatrixd, _gloffset_LoadMatrixd, LoadMatrixd@4) - GL_STUB(MatrixMode, _gloffset_MatrixMode, MatrixMode@4) - GL_STUB(MultMatrixf, _gloffset_MultMatrixf, MultMatrixf@4) - GL_STUB(MultMatrixd, _gloffset_MultMatrixd, MultMatrixd@4) - GL_STUB(Ortho, _gloffset_Ortho, Ortho@48) - GL_STUB(PopMatrix, _gloffset_PopMatrix, PopMatrix@0) - GL_STUB(PushMatrix, _gloffset_PushMatrix, PushMatrix@0) - GL_STUB(Rotated, _gloffset_Rotated, Rotated@32) - GL_STUB(Rotatef, _gloffset_Rotatef, Rotatef@16) - GL_STUB(Scaled, _gloffset_Scaled, Scaled@24) - GL_STUB(Scalef, _gloffset_Scalef, Scalef@12) - GL_STUB(Translated, _gloffset_Translated, Translated@24) - GL_STUB(Translatef, _gloffset_Translatef, Translatef@12) - GL_STUB(Viewport, _gloffset_Viewport, Viewport@16) - GL_STUB(ArrayElement, _gloffset_ArrayElement, ArrayElement@4) - GL_STUB(BindTexture, _gloffset_BindTexture, BindTexture@8) - GL_STUB(ColorPointer, _gloffset_ColorPointer, ColorPointer@16) - GL_STUB(DisableClientState, _gloffset_DisableClientState, DisableClientState@4) - GL_STUB(DrawArrays, _gloffset_DrawArrays, DrawArrays@12) - GL_STUB(DrawElements, _gloffset_DrawElements, DrawElements@16) - GL_STUB(EdgeFlagPointer, _gloffset_EdgeFlagPointer, EdgeFlagPointer@8) - GL_STUB(EnableClientState, _gloffset_EnableClientState, EnableClientState@4) - GL_STUB(IndexPointer, _gloffset_IndexPointer, IndexPointer@12) - GL_STUB(Indexub, _gloffset_Indexub, Indexub@4) - GL_STUB(Indexubv, _gloffset_Indexubv, Indexubv@4) - GL_STUB(InterleavedArrays, _gloffset_InterleavedArrays, InterleavedArrays@12) - GL_STUB(NormalPointer, _gloffset_NormalPointer, NormalPointer@12) - GL_STUB(PolygonOffset, _gloffset_PolygonOffset, PolygonOffset@8) - GL_STUB(TexCoordPointer, _gloffset_TexCoordPointer, TexCoordPointer@16) - GL_STUB(VertexPointer, _gloffset_VertexPointer, VertexPointer@16) - GL_STUB(AreTexturesResident, _gloffset_AreTexturesResident, AreTexturesResident@12) - GL_STUB(CopyTexImage1D, _gloffset_CopyTexImage1D, CopyTexImage1D@28) - GL_STUB(CopyTexImage2D, _gloffset_CopyTexImage2D, CopyTexImage2D@32) - GL_STUB(CopyTexSubImage1D, _gloffset_CopyTexSubImage1D, CopyTexSubImage1D@24) - GL_STUB(CopyTexSubImage2D, _gloffset_CopyTexSubImage2D, CopyTexSubImage2D@32) - GL_STUB(DeleteTextures, _gloffset_DeleteTextures, DeleteTextures@8) - GL_STUB(GenTextures, _gloffset_GenTextures, GenTextures@8) - GL_STUB(GetPointerv, _gloffset_GetPointerv, GetPointerv@8) - GL_STUB(IsTexture, _gloffset_IsTexture, IsTexture@4) - GL_STUB(PrioritizeTextures, _gloffset_PrioritizeTextures, PrioritizeTextures@12) - GL_STUB(TexSubImage1D, _gloffset_TexSubImage1D, TexSubImage1D@28) - GL_STUB(TexSubImage2D, _gloffset_TexSubImage2D, TexSubImage2D@36) - GL_STUB(PopClientAttrib, _gloffset_PopClientAttrib, PopClientAttrib@0) - GL_STUB(PushClientAttrib, _gloffset_PushClientAttrib, PushClientAttrib@4) - GL_STUB(BlendColor, _gloffset_BlendColor, BlendColor@16) - GL_STUB(BlendEquation, _gloffset_BlendEquation, BlendEquation@4) - GL_STUB(DrawRangeElements, _gloffset_DrawRangeElements, DrawRangeElements@24) - GL_STUB(ColorTable, _gloffset_ColorTable, ColorTable@24) - GL_STUB(ColorTableParameterfv, _gloffset_ColorTableParameterfv, ColorTableParameterfv@12) - GL_STUB(ColorTableParameteriv, _gloffset_ColorTableParameteriv, ColorTableParameteriv@12) - GL_STUB(CopyColorTable, _gloffset_CopyColorTable, CopyColorTable@20) - GL_STUB(GetColorTable, _gloffset_GetColorTable, GetColorTable@16) - GL_STUB(GetColorTableParameterfv, _gloffset_GetColorTableParameterfv, GetColorTableParameterfv@12) - GL_STUB(GetColorTableParameteriv, _gloffset_GetColorTableParameteriv, GetColorTableParameteriv@12) - GL_STUB(ColorSubTable, _gloffset_ColorSubTable, ColorSubTable@24) - GL_STUB(CopyColorSubTable, _gloffset_CopyColorSubTable, CopyColorSubTable@20) - GL_STUB(ConvolutionFilter1D, _gloffset_ConvolutionFilter1D, ConvolutionFilter1D@24) - GL_STUB(ConvolutionFilter2D, _gloffset_ConvolutionFilter2D, ConvolutionFilter2D@28) - GL_STUB(ConvolutionParameterf, _gloffset_ConvolutionParameterf, ConvolutionParameterf@12) - GL_STUB(ConvolutionParameterfv, _gloffset_ConvolutionParameterfv, ConvolutionParameterfv@12) - GL_STUB(ConvolutionParameteri, _gloffset_ConvolutionParameteri, ConvolutionParameteri@12) - GL_STUB(ConvolutionParameteriv, _gloffset_ConvolutionParameteriv, ConvolutionParameteriv@12) - GL_STUB(CopyConvolutionFilter1D, _gloffset_CopyConvolutionFilter1D, CopyConvolutionFilter1D@20) - GL_STUB(CopyConvolutionFilter2D, _gloffset_CopyConvolutionFilter2D, CopyConvolutionFilter2D@24) - GL_STUB(GetConvolutionFilter, _gloffset_GetConvolutionFilter, GetConvolutionFilter@16) - GL_STUB(GetConvolutionParameterfv, _gloffset_GetConvolutionParameterfv, GetConvolutionParameterfv@12) - GL_STUB(GetConvolutionParameteriv, _gloffset_GetConvolutionParameteriv, GetConvolutionParameteriv@12) - GL_STUB(GetSeparableFilter, _gloffset_GetSeparableFilter, GetSeparableFilter@24) - GL_STUB(SeparableFilter2D, _gloffset_SeparableFilter2D, SeparableFilter2D@32) - GL_STUB(GetHistogram, _gloffset_GetHistogram, GetHistogram@20) - GL_STUB(GetHistogramParameterfv, _gloffset_GetHistogramParameterfv, GetHistogramParameterfv@12) - GL_STUB(GetHistogramParameteriv, _gloffset_GetHistogramParameteriv, GetHistogramParameteriv@12) - GL_STUB(GetMinmax, _gloffset_GetMinmax, GetMinmax@20) - GL_STUB(GetMinmaxParameterfv, _gloffset_GetMinmaxParameterfv, GetMinmaxParameterfv@12) - GL_STUB(GetMinmaxParameteriv, _gloffset_GetMinmaxParameteriv, GetMinmaxParameteriv@12) - GL_STUB(Histogram, _gloffset_Histogram, Histogram@16) - GL_STUB(Minmax, _gloffset_Minmax, Minmax@12) - GL_STUB(ResetHistogram, _gloffset_ResetHistogram, ResetHistogram@4) - GL_STUB(ResetMinmax, _gloffset_ResetMinmax, ResetMinmax@4) - GL_STUB(TexImage3D, _gloffset_TexImage3D, TexImage3D@40) - GL_STUB(TexSubImage3D, _gloffset_TexSubImage3D, TexSubImage3D@44) - GL_STUB(CopyTexSubImage3D, _gloffset_CopyTexSubImage3D, CopyTexSubImage3D@36) - GL_STUB(ActiveTextureARB, _gloffset_ActiveTextureARB, ActiveTextureARB@4) - GL_STUB(ClientActiveTextureARB, _gloffset_ClientActiveTextureARB, ClientActiveTextureARB@4) - GL_STUB(MultiTexCoord1dARB, _gloffset_MultiTexCoord1dARB, MultiTexCoord1dARB@12) - GL_STUB(MultiTexCoord1dvARB, _gloffset_MultiTexCoord1dvARB, MultiTexCoord1dvARB@8) - GL_STUB(MultiTexCoord1fARB, _gloffset_MultiTexCoord1fARB, MultiTexCoord1fARB@8) - GL_STUB(MultiTexCoord1fvARB, _gloffset_MultiTexCoord1fvARB, MultiTexCoord1fvARB@8) - GL_STUB(MultiTexCoord1iARB, _gloffset_MultiTexCoord1iARB, MultiTexCoord1iARB@8) - GL_STUB(MultiTexCoord1ivARB, _gloffset_MultiTexCoord1ivARB, MultiTexCoord1ivARB@8) - GL_STUB(MultiTexCoord1sARB, _gloffset_MultiTexCoord1sARB, MultiTexCoord1sARB@8) - GL_STUB(MultiTexCoord1svARB, _gloffset_MultiTexCoord1svARB, MultiTexCoord1svARB@8) - GL_STUB(MultiTexCoord2dARB, _gloffset_MultiTexCoord2dARB, MultiTexCoord2dARB@20) - GL_STUB(MultiTexCoord2dvARB, _gloffset_MultiTexCoord2dvARB, MultiTexCoord2dvARB@8) - GL_STUB(MultiTexCoord2fARB, _gloffset_MultiTexCoord2fARB, MultiTexCoord2fARB@12) - GL_STUB(MultiTexCoord2fvARB, _gloffset_MultiTexCoord2fvARB, MultiTexCoord2fvARB@8) - GL_STUB(MultiTexCoord2iARB, _gloffset_MultiTexCoord2iARB, MultiTexCoord2iARB@12) - GL_STUB(MultiTexCoord2ivARB, _gloffset_MultiTexCoord2ivARB, MultiTexCoord2ivARB@8) - GL_STUB(MultiTexCoord2sARB, _gloffset_MultiTexCoord2sARB, MultiTexCoord2sARB@12) - GL_STUB(MultiTexCoord2svARB, _gloffset_MultiTexCoord2svARB, MultiTexCoord2svARB@8) - GL_STUB(MultiTexCoord3dARB, _gloffset_MultiTexCoord3dARB, MultiTexCoord3dARB@28) - GL_STUB(MultiTexCoord3dvARB, _gloffset_MultiTexCoord3dvARB, MultiTexCoord3dvARB@8) - GL_STUB(MultiTexCoord3fARB, _gloffset_MultiTexCoord3fARB, MultiTexCoord3fARB@16) - GL_STUB(MultiTexCoord3fvARB, _gloffset_MultiTexCoord3fvARB, MultiTexCoord3fvARB@8) - GL_STUB(MultiTexCoord3iARB, _gloffset_MultiTexCoord3iARB, MultiTexCoord3iARB@16) - GL_STUB(MultiTexCoord3ivARB, _gloffset_MultiTexCoord3ivARB, MultiTexCoord3ivARB@8) - GL_STUB(MultiTexCoord3sARB, _gloffset_MultiTexCoord3sARB, MultiTexCoord3sARB@16) - GL_STUB(MultiTexCoord3svARB, _gloffset_MultiTexCoord3svARB, MultiTexCoord3svARB@8) - GL_STUB(MultiTexCoord4dARB, _gloffset_MultiTexCoord4dARB, MultiTexCoord4dARB@36) - GL_STUB(MultiTexCoord4dvARB, _gloffset_MultiTexCoord4dvARB, MultiTexCoord4dvARB@8) - GL_STUB(MultiTexCoord4fARB, _gloffset_MultiTexCoord4fARB, MultiTexCoord4fARB@20) - GL_STUB(MultiTexCoord4fvARB, _gloffset_MultiTexCoord4fvARB, MultiTexCoord4fvARB@8) - GL_STUB(MultiTexCoord4iARB, _gloffset_MultiTexCoord4iARB, MultiTexCoord4iARB@20) - GL_STUB(MultiTexCoord4ivARB, _gloffset_MultiTexCoord4ivARB, MultiTexCoord4ivARB@8) - GL_STUB(MultiTexCoord4sARB, _gloffset_MultiTexCoord4sARB, MultiTexCoord4sARB@20) - GL_STUB(MultiTexCoord4svARB, _gloffset_MultiTexCoord4svARB, MultiTexCoord4svARB@8) - GL_STUB(AttachShader, _gloffset_AttachShader, AttachShader@8) - GL_STUB(CreateProgram, _gloffset_CreateProgram, CreateProgram@0) - GL_STUB(CreateShader, _gloffset_CreateShader, CreateShader@4) - GL_STUB(DeleteProgram, _gloffset_DeleteProgram, DeleteProgram@4) - GL_STUB(DeleteShader, _gloffset_DeleteShader, DeleteShader@4) - GL_STUB(DetachShader, _gloffset_DetachShader, DetachShader@8) - GL_STUB(GetAttachedShaders, _gloffset_GetAttachedShaders, GetAttachedShaders@16) - GL_STUB(GetProgramInfoLog, _gloffset_GetProgramInfoLog, GetProgramInfoLog@16) - GL_STUB(GetProgramiv, _gloffset_GetProgramiv, GetProgramiv@12) - GL_STUB(GetShaderInfoLog, _gloffset_GetShaderInfoLog, GetShaderInfoLog@16) - GL_STUB(GetShaderiv, _gloffset_GetShaderiv, GetShaderiv@12) - GL_STUB(IsProgram, _gloffset_IsProgram, IsProgram@4) - GL_STUB(IsShader, _gloffset_IsShader, IsShader@4) - GL_STUB(StencilFuncSeparate, _gloffset_StencilFuncSeparate, StencilFuncSeparate@16) - GL_STUB(StencilMaskSeparate, _gloffset_StencilMaskSeparate, StencilMaskSeparate@8) - GL_STUB(StencilOpSeparate, _gloffset_StencilOpSeparate, StencilOpSeparate@16) - GL_STUB(UniformMatrix2x3fv, _gloffset_UniformMatrix2x3fv, UniformMatrix2x3fv@16) - GL_STUB(UniformMatrix2x4fv, _gloffset_UniformMatrix2x4fv, UniformMatrix2x4fv@16) - GL_STUB(UniformMatrix3x2fv, _gloffset_UniformMatrix3x2fv, UniformMatrix3x2fv@16) - GL_STUB(UniformMatrix3x4fv, _gloffset_UniformMatrix3x4fv, UniformMatrix3x4fv@16) - GL_STUB(UniformMatrix4x2fv, _gloffset_UniformMatrix4x2fv, UniformMatrix4x2fv@16) - GL_STUB(UniformMatrix4x3fv, _gloffset_UniformMatrix4x3fv, UniformMatrix4x3fv@16) - GL_STUB(DrawArraysInstanced, _gloffset_DrawArraysInstanced, DrawArraysInstanced@16) - GL_STUB(DrawElementsInstanced, _gloffset_DrawElementsInstanced, DrawElementsInstanced@20) - GL_STUB(LoadTransposeMatrixdARB, _gloffset_LoadTransposeMatrixdARB, LoadTransposeMatrixdARB@4) - GL_STUB(LoadTransposeMatrixfARB, _gloffset_LoadTransposeMatrixfARB, LoadTransposeMatrixfARB@4) - GL_STUB(MultTransposeMatrixdARB, _gloffset_MultTransposeMatrixdARB, MultTransposeMatrixdARB@4) - GL_STUB(MultTransposeMatrixfARB, _gloffset_MultTransposeMatrixfARB, MultTransposeMatrixfARB@4) - GL_STUB(SampleCoverageARB, _gloffset_SampleCoverageARB, SampleCoverageARB@8) - GL_STUB(CompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB, CompressedTexImage1DARB@28) - GL_STUB(CompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB, CompressedTexImage2DARB@32) - GL_STUB(CompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB, CompressedTexImage3DARB@36) - GL_STUB(CompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB, CompressedTexSubImage1DARB@28) - GL_STUB(CompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB, CompressedTexSubImage2DARB@36) - GL_STUB(CompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB, CompressedTexSubImage3DARB@44) - GL_STUB(GetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB, GetCompressedTexImageARB@12) - GL_STUB(DisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB, DisableVertexAttribArrayARB@4) - GL_STUB(EnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB, EnableVertexAttribArrayARB@4) - GL_STUB(GetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB, GetProgramEnvParameterdvARB@12) - GL_STUB(GetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB, GetProgramEnvParameterfvARB@12) - GL_STUB(GetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB, GetProgramLocalParameterdvARB@12) - GL_STUB(GetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB, GetProgramLocalParameterfvARB@12) - GL_STUB(GetProgramStringARB, _gloffset_GetProgramStringARB, GetProgramStringARB@12) - GL_STUB(GetProgramivARB, _gloffset_GetProgramivARB, GetProgramivARB@12) - GL_STUB(GetVertexAttribdvARB, _gloffset_GetVertexAttribdvARB, GetVertexAttribdvARB@12) - GL_STUB(GetVertexAttribfvARB, _gloffset_GetVertexAttribfvARB, GetVertexAttribfvARB@12) - GL_STUB(GetVertexAttribivARB, _gloffset_GetVertexAttribivARB, GetVertexAttribivARB@12) - GL_STUB(ProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB, ProgramEnvParameter4dARB@40) - GL_STUB(ProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB, ProgramEnvParameter4dvARB@12) - GL_STUB(ProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB, ProgramEnvParameter4fARB@24) - GL_STUB(ProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB, ProgramEnvParameter4fvARB@12) - GL_STUB(ProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB, ProgramLocalParameter4dARB@40) - GL_STUB(ProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB, ProgramLocalParameter4dvARB@12) - GL_STUB(ProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB, ProgramLocalParameter4fARB@24) - GL_STUB(ProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB, ProgramLocalParameter4fvARB@12) - GL_STUB(ProgramStringARB, _gloffset_ProgramStringARB, ProgramStringARB@16) - GL_STUB(VertexAttrib1dARB, _gloffset_VertexAttrib1dARB, VertexAttrib1dARB@12) - GL_STUB(VertexAttrib1dvARB, _gloffset_VertexAttrib1dvARB, VertexAttrib1dvARB@8) - GL_STUB(VertexAttrib1fARB, _gloffset_VertexAttrib1fARB, VertexAttrib1fARB@8) - GL_STUB(VertexAttrib1fvARB, _gloffset_VertexAttrib1fvARB, VertexAttrib1fvARB@8) - GL_STUB(VertexAttrib1sARB, _gloffset_VertexAttrib1sARB, VertexAttrib1sARB@8) - GL_STUB(VertexAttrib1svARB, _gloffset_VertexAttrib1svARB, VertexAttrib1svARB@8) - GL_STUB(VertexAttrib2dARB, _gloffset_VertexAttrib2dARB, VertexAttrib2dARB@20) - GL_STUB(VertexAttrib2dvARB, _gloffset_VertexAttrib2dvARB, VertexAttrib2dvARB@8) - GL_STUB(VertexAttrib2fARB, _gloffset_VertexAttrib2fARB, VertexAttrib2fARB@12) - GL_STUB(VertexAttrib2fvARB, _gloffset_VertexAttrib2fvARB, VertexAttrib2fvARB@8) - GL_STUB(VertexAttrib2sARB, _gloffset_VertexAttrib2sARB, VertexAttrib2sARB@12) - GL_STUB(VertexAttrib2svARB, _gloffset_VertexAttrib2svARB, VertexAttrib2svARB@8) - GL_STUB(VertexAttrib3dARB, _gloffset_VertexAttrib3dARB, VertexAttrib3dARB@28) - GL_STUB(VertexAttrib3dvARB, _gloffset_VertexAttrib3dvARB, VertexAttrib3dvARB@8) - GL_STUB(VertexAttrib3fARB, _gloffset_VertexAttrib3fARB, VertexAttrib3fARB@16) - GL_STUB(VertexAttrib3fvARB, _gloffset_VertexAttrib3fvARB, VertexAttrib3fvARB@8) - GL_STUB(VertexAttrib3sARB, _gloffset_VertexAttrib3sARB, VertexAttrib3sARB@16) - GL_STUB(VertexAttrib3svARB, _gloffset_VertexAttrib3svARB, VertexAttrib3svARB@8) - GL_STUB(VertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB, VertexAttrib4NbvARB@8) - GL_STUB(VertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB, VertexAttrib4NivARB@8) - GL_STUB(VertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB, VertexAttrib4NsvARB@8) - GL_STUB(VertexAttrib4NubARB, _gloffset_VertexAttrib4NubARB, VertexAttrib4NubARB@20) - GL_STUB(VertexAttrib4NubvARB, _gloffset_VertexAttrib4NubvARB, VertexAttrib4NubvARB@8) - GL_STUB(VertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB, VertexAttrib4NuivARB@8) - GL_STUB(VertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB, VertexAttrib4NusvARB@8) - GL_STUB(VertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB, VertexAttrib4bvARB@8) - GL_STUB(VertexAttrib4dARB, _gloffset_VertexAttrib4dARB, VertexAttrib4dARB@36) - GL_STUB(VertexAttrib4dvARB, _gloffset_VertexAttrib4dvARB, VertexAttrib4dvARB@8) - GL_STUB(VertexAttrib4fARB, _gloffset_VertexAttrib4fARB, VertexAttrib4fARB@20) - GL_STUB(VertexAttrib4fvARB, _gloffset_VertexAttrib4fvARB, VertexAttrib4fvARB@8) - GL_STUB(VertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB, VertexAttrib4ivARB@8) - GL_STUB(VertexAttrib4sARB, _gloffset_VertexAttrib4sARB, VertexAttrib4sARB@20) - GL_STUB(VertexAttrib4svARB, _gloffset_VertexAttrib4svARB, VertexAttrib4svARB@8) - GL_STUB(VertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB, VertexAttrib4ubvARB@8) - GL_STUB(VertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB, VertexAttrib4uivARB@8) - GL_STUB(VertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB, VertexAttrib4usvARB@8) - GL_STUB(VertexAttribPointerARB, _gloffset_VertexAttribPointerARB, VertexAttribPointerARB@24) - GL_STUB(BindBufferARB, _gloffset_BindBufferARB, BindBufferARB@8) - GL_STUB(BufferDataARB, _gloffset_BufferDataARB, BufferDataARB@16) - GL_STUB(BufferSubDataARB, _gloffset_BufferSubDataARB, BufferSubDataARB@16) - GL_STUB(DeleteBuffersARB, _gloffset_DeleteBuffersARB, DeleteBuffersARB@8) - GL_STUB(GenBuffersARB, _gloffset_GenBuffersARB, GenBuffersARB@8) - GL_STUB(GetBufferParameterivARB, _gloffset_GetBufferParameterivARB, GetBufferParameterivARB@12) - GL_STUB(GetBufferPointervARB, _gloffset_GetBufferPointervARB, GetBufferPointervARB@12) - GL_STUB(GetBufferSubDataARB, _gloffset_GetBufferSubDataARB, GetBufferSubDataARB@16) - GL_STUB(IsBufferARB, _gloffset_IsBufferARB, IsBufferARB@4) - GL_STUB(MapBufferARB, _gloffset_MapBufferARB, MapBufferARB@8) - GL_STUB(UnmapBufferARB, _gloffset_UnmapBufferARB, UnmapBufferARB@4) - GL_STUB(BeginQueryARB, _gloffset_BeginQueryARB, BeginQueryARB@8) - GL_STUB(DeleteQueriesARB, _gloffset_DeleteQueriesARB, DeleteQueriesARB@8) - GL_STUB(EndQueryARB, _gloffset_EndQueryARB, EndQueryARB@4) - GL_STUB(GenQueriesARB, _gloffset_GenQueriesARB, GenQueriesARB@8) - GL_STUB(GetQueryObjectivARB, _gloffset_GetQueryObjectivARB, GetQueryObjectivARB@12) - GL_STUB(GetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB, GetQueryObjectuivARB@12) - GL_STUB(GetQueryivARB, _gloffset_GetQueryivARB, GetQueryivARB@12) - GL_STUB(IsQueryARB, _gloffset_IsQueryARB, IsQueryARB@4) - GL_STUB(AttachObjectARB, _gloffset_AttachObjectARB, AttachObjectARB@8) - GL_STUB(CompileShaderARB, _gloffset_CompileShaderARB, CompileShaderARB@4) - GL_STUB(CreateProgramObjectARB, _gloffset_CreateProgramObjectARB, CreateProgramObjectARB@0) - GL_STUB(CreateShaderObjectARB, _gloffset_CreateShaderObjectARB, CreateShaderObjectARB@4) - GL_STUB(DeleteObjectARB, _gloffset_DeleteObjectARB, DeleteObjectARB@4) - GL_STUB(DetachObjectARB, _gloffset_DetachObjectARB, DetachObjectARB@8) - GL_STUB(GetActiveUniformARB, _gloffset_GetActiveUniformARB, GetActiveUniformARB@28) - GL_STUB(GetAttachedObjectsARB, _gloffset_GetAttachedObjectsARB, GetAttachedObjectsARB@16) - GL_STUB(GetHandleARB, _gloffset_GetHandleARB, GetHandleARB@4) - GL_STUB(GetInfoLogARB, _gloffset_GetInfoLogARB, GetInfoLogARB@16) - GL_STUB(GetObjectParameterfvARB, _gloffset_GetObjectParameterfvARB, GetObjectParameterfvARB@12) - GL_STUB(GetObjectParameterivARB, _gloffset_GetObjectParameterivARB, GetObjectParameterivARB@12) - GL_STUB(GetShaderSourceARB, _gloffset_GetShaderSourceARB, GetShaderSourceARB@16) - GL_STUB(GetUniformLocationARB, _gloffset_GetUniformLocationARB, GetUniformLocationARB@8) - GL_STUB(GetUniformfvARB, _gloffset_GetUniformfvARB, GetUniformfvARB@12) - GL_STUB(GetUniformivARB, _gloffset_GetUniformivARB, GetUniformivARB@12) - GL_STUB(LinkProgramARB, _gloffset_LinkProgramARB, LinkProgramARB@4) - GL_STUB(ShaderSourceARB, _gloffset_ShaderSourceARB, ShaderSourceARB@16) - GL_STUB(Uniform1fARB, _gloffset_Uniform1fARB, Uniform1fARB@8) - GL_STUB(Uniform1fvARB, _gloffset_Uniform1fvARB, Uniform1fvARB@12) - GL_STUB(Uniform1iARB, _gloffset_Uniform1iARB, Uniform1iARB@8) - GL_STUB(Uniform1ivARB, _gloffset_Uniform1ivARB, Uniform1ivARB@12) - GL_STUB(Uniform2fARB, _gloffset_Uniform2fARB, Uniform2fARB@12) - GL_STUB(Uniform2fvARB, _gloffset_Uniform2fvARB, Uniform2fvARB@12) - GL_STUB(Uniform2iARB, _gloffset_Uniform2iARB, Uniform2iARB@12) - GL_STUB(Uniform2ivARB, _gloffset_Uniform2ivARB, Uniform2ivARB@12) - GL_STUB(Uniform3fARB, _gloffset_Uniform3fARB, Uniform3fARB@16) - GL_STUB(Uniform3fvARB, _gloffset_Uniform3fvARB, Uniform3fvARB@12) - GL_STUB(Uniform3iARB, _gloffset_Uniform3iARB, Uniform3iARB@16) - GL_STUB(Uniform3ivARB, _gloffset_Uniform3ivARB, Uniform3ivARB@12) - GL_STUB(Uniform4fARB, _gloffset_Uniform4fARB, Uniform4fARB@20) - GL_STUB(Uniform4fvARB, _gloffset_Uniform4fvARB, Uniform4fvARB@12) - GL_STUB(Uniform4iARB, _gloffset_Uniform4iARB, Uniform4iARB@20) - GL_STUB(Uniform4ivARB, _gloffset_Uniform4ivARB, Uniform4ivARB@12) - GL_STUB(UniformMatrix2fvARB, _gloffset_UniformMatrix2fvARB, UniformMatrix2fvARB@16) - GL_STUB(UniformMatrix3fvARB, _gloffset_UniformMatrix3fvARB, UniformMatrix3fvARB@16) - GL_STUB(UniformMatrix4fvARB, _gloffset_UniformMatrix4fvARB, UniformMatrix4fvARB@16) - GL_STUB(UseProgramObjectARB, _gloffset_UseProgramObjectARB, UseProgramObjectARB@4) - GL_STUB(ValidateProgramARB, _gloffset_ValidateProgramARB, ValidateProgramARB@4) - GL_STUB(BindAttribLocationARB, _gloffset_BindAttribLocationARB, BindAttribLocationARB@12) - GL_STUB(GetActiveAttribARB, _gloffset_GetActiveAttribARB, GetActiveAttribARB@28) - GL_STUB(GetAttribLocationARB, _gloffset_GetAttribLocationARB, GetAttribLocationARB@8) - GL_STUB(DrawBuffersARB, _gloffset_DrawBuffersARB, DrawBuffersARB@8) - GL_STUB(RenderbufferStorageMultisample, _gloffset_RenderbufferStorageMultisample, RenderbufferStorageMultisample@20) - GL_STUB(FramebufferTextureARB, _gloffset_FramebufferTextureARB, FramebufferTextureARB@16) - GL_STUB(FramebufferTextureFaceARB, _gloffset_FramebufferTextureFaceARB, FramebufferTextureFaceARB@20) - GL_STUB(ProgramParameteriARB, _gloffset_ProgramParameteriARB, ProgramParameteriARB@12) - GL_STUB(FlushMappedBufferRange, _gloffset_FlushMappedBufferRange, FlushMappedBufferRange@12) - GL_STUB(MapBufferRange, _gloffset_MapBufferRange, MapBufferRange@16) - GL_STUB(BindVertexArray, _gloffset_BindVertexArray, BindVertexArray@4) - GL_STUB(GenVertexArrays, _gloffset_GenVertexArrays, GenVertexArrays@8) - GL_STUB(CopyBufferSubData, _gloffset_CopyBufferSubData, CopyBufferSubData@20) - GL_STUB(ClientWaitSync, _gloffset_ClientWaitSync, ClientWaitSync@12) - GL_STUB(DeleteSync, _gloffset_DeleteSync, DeleteSync@4) - GL_STUB(FenceSync, _gloffset_FenceSync, FenceSync@8) - GL_STUB(GetInteger64v, _gloffset_GetInteger64v, GetInteger64v@8) - GL_STUB(GetSynciv, _gloffset_GetSynciv, GetSynciv@20) - GL_STUB(IsSync, _gloffset_IsSync, IsSync@4) - GL_STUB(WaitSync, _gloffset_WaitSync, WaitSync@12) - GL_STUB(DrawElementsBaseVertex, _gloffset_DrawElementsBaseVertex, DrawElementsBaseVertex@20) - GL_STUB(DrawRangeElementsBaseVertex, _gloffset_DrawRangeElementsBaseVertex, DrawRangeElementsBaseVertex@28) - GL_STUB(MultiDrawElementsBaseVertex, _gloffset_MultiDrawElementsBaseVertex, MultiDrawElementsBaseVertex@24) - GL_STUB(BindTransformFeedback, _gloffset_BindTransformFeedback, BindTransformFeedback@8) - GL_STUB(DeleteTransformFeedbacks, _gloffset_DeleteTransformFeedbacks, DeleteTransformFeedbacks@8) - GL_STUB(DrawTransformFeedback, _gloffset_DrawTransformFeedback, DrawTransformFeedback@8) - GL_STUB(GenTransformFeedbacks, _gloffset_GenTransformFeedbacks, GenTransformFeedbacks@8) - GL_STUB(IsTransformFeedback, _gloffset_IsTransformFeedback, IsTransformFeedback@4) - GL_STUB(PauseTransformFeedback, _gloffset_PauseTransformFeedback, PauseTransformFeedback@0) - GL_STUB(ResumeTransformFeedback, _gloffset_ResumeTransformFeedback, ResumeTransformFeedback@0) - GL_STUB(PolygonOffsetEXT, _gloffset_PolygonOffsetEXT, PolygonOffsetEXT@8) - GL_STUB(_dispatch_stub_590, _gloffset_GetPixelTexGenParameterfvSGIS, _dispatch_stub_590@8) - HIDDEN(GL_PREFIX(_dispatch_stub_590, _dispatch_stub_590@8)) - GL_STUB(_dispatch_stub_591, _gloffset_GetPixelTexGenParameterivSGIS, _dispatch_stub_591@8) - HIDDEN(GL_PREFIX(_dispatch_stub_591, _dispatch_stub_591@8)) - GL_STUB(_dispatch_stub_592, _gloffset_PixelTexGenParameterfSGIS, _dispatch_stub_592@8) - HIDDEN(GL_PREFIX(_dispatch_stub_592, _dispatch_stub_592@8)) - GL_STUB(_dispatch_stub_593, _gloffset_PixelTexGenParameterfvSGIS, _dispatch_stub_593@8) - HIDDEN(GL_PREFIX(_dispatch_stub_593, _dispatch_stub_593@8)) - GL_STUB(_dispatch_stub_594, _gloffset_PixelTexGenParameteriSGIS, _dispatch_stub_594@8) - HIDDEN(GL_PREFIX(_dispatch_stub_594, _dispatch_stub_594@8)) - GL_STUB(_dispatch_stub_595, _gloffset_PixelTexGenParameterivSGIS, _dispatch_stub_595@8) - HIDDEN(GL_PREFIX(_dispatch_stub_595, _dispatch_stub_595@8)) - GL_STUB(_dispatch_stub_596, _gloffset_SampleMaskSGIS, _dispatch_stub_596@8) - HIDDEN(GL_PREFIX(_dispatch_stub_596, _dispatch_stub_596@8)) - GL_STUB(_dispatch_stub_597, _gloffset_SamplePatternSGIS, _dispatch_stub_597@4) - HIDDEN(GL_PREFIX(_dispatch_stub_597, _dispatch_stub_597@4)) - GL_STUB(ColorPointerEXT, _gloffset_ColorPointerEXT, ColorPointerEXT@20) - GL_STUB(EdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT, EdgeFlagPointerEXT@12) - GL_STUB(IndexPointerEXT, _gloffset_IndexPointerEXT, IndexPointerEXT@16) - GL_STUB(NormalPointerEXT, _gloffset_NormalPointerEXT, NormalPointerEXT@16) - GL_STUB(TexCoordPointerEXT, _gloffset_TexCoordPointerEXT, TexCoordPointerEXT@20) - GL_STUB(VertexPointerEXT, _gloffset_VertexPointerEXT, VertexPointerEXT@20) - GL_STUB(PointParameterfEXT, _gloffset_PointParameterfEXT, PointParameterfEXT@8) - GL_STUB(PointParameterfvEXT, _gloffset_PointParameterfvEXT, PointParameterfvEXT@8) - GL_STUB(LockArraysEXT, _gloffset_LockArraysEXT, LockArraysEXT@8) - GL_STUB(UnlockArraysEXT, _gloffset_UnlockArraysEXT, UnlockArraysEXT@0) - GL_STUB(SecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT, SecondaryColor3bEXT@12) - GL_STUB(SecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT, SecondaryColor3bvEXT@4) - GL_STUB(SecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT, SecondaryColor3dEXT@24) - GL_STUB(SecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT, SecondaryColor3dvEXT@4) - GL_STUB(SecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT, SecondaryColor3fEXT@12) - GL_STUB(SecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT, SecondaryColor3fvEXT@4) - GL_STUB(SecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT, SecondaryColor3iEXT@12) - GL_STUB(SecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT, SecondaryColor3ivEXT@4) - GL_STUB(SecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT, SecondaryColor3sEXT@12) - GL_STUB(SecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT, SecondaryColor3svEXT@4) - GL_STUB(SecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT, SecondaryColor3ubEXT@12) - GL_STUB(SecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT, SecondaryColor3ubvEXT@4) - GL_STUB(SecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT, SecondaryColor3uiEXT@12) - GL_STUB(SecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT, SecondaryColor3uivEXT@4) - GL_STUB(SecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT, SecondaryColor3usEXT@12) - GL_STUB(SecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT, SecondaryColor3usvEXT@4) - GL_STUB(SecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT, SecondaryColorPointerEXT@16) - GL_STUB(MultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT, MultiDrawArraysEXT@16) - GL_STUB(MultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT, MultiDrawElementsEXT@20) - GL_STUB(FogCoordPointerEXT, _gloffset_FogCoordPointerEXT, FogCoordPointerEXT@12) - GL_STUB(FogCoorddEXT, _gloffset_FogCoorddEXT, FogCoorddEXT@8) - GL_STUB(FogCoorddvEXT, _gloffset_FogCoorddvEXT, FogCoorddvEXT@4) - GL_STUB(FogCoordfEXT, _gloffset_FogCoordfEXT, FogCoordfEXT@4) - GL_STUB(FogCoordfvEXT, _gloffset_FogCoordfvEXT, FogCoordfvEXT@4) - GL_STUB(_dispatch_stub_632, _gloffset_PixelTexGenSGIX, _dispatch_stub_632@4) - HIDDEN(GL_PREFIX(_dispatch_stub_632, _dispatch_stub_632@4)) - GL_STUB(BlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT, BlendFuncSeparateEXT@16) - GL_STUB(FlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV, FlushVertexArrayRangeNV@0) - GL_STUB(VertexArrayRangeNV, _gloffset_VertexArrayRangeNV, VertexArrayRangeNV@8) - GL_STUB(CombinerInputNV, _gloffset_CombinerInputNV, CombinerInputNV@24) - GL_STUB(CombinerOutputNV, _gloffset_CombinerOutputNV, CombinerOutputNV@40) - GL_STUB(CombinerParameterfNV, _gloffset_CombinerParameterfNV, CombinerParameterfNV@8) - GL_STUB(CombinerParameterfvNV, _gloffset_CombinerParameterfvNV, CombinerParameterfvNV@8) - GL_STUB(CombinerParameteriNV, _gloffset_CombinerParameteriNV, CombinerParameteriNV@8) - GL_STUB(CombinerParameterivNV, _gloffset_CombinerParameterivNV, CombinerParameterivNV@8) - GL_STUB(FinalCombinerInputNV, _gloffset_FinalCombinerInputNV, FinalCombinerInputNV@16) - GL_STUB(GetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV, GetCombinerInputParameterfvNV@20) - GL_STUB(GetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV, GetCombinerInputParameterivNV@20) - GL_STUB(GetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV, GetCombinerOutputParameterfvNV@16) - GL_STUB(GetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV, GetCombinerOutputParameterivNV@16) - GL_STUB(GetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV, GetFinalCombinerInputParameterfvNV@12) - GL_STUB(GetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV, GetFinalCombinerInputParameterivNV@12) - GL_STUB(ResizeBuffersMESA, _gloffset_ResizeBuffersMESA, ResizeBuffersMESA@0) - GL_STUB(WindowPos2dMESA, _gloffset_WindowPos2dMESA, WindowPos2dMESA@16) - GL_STUB(WindowPos2dvMESA, _gloffset_WindowPos2dvMESA, WindowPos2dvMESA@4) - GL_STUB(WindowPos2fMESA, _gloffset_WindowPos2fMESA, WindowPos2fMESA@8) - GL_STUB(WindowPos2fvMESA, _gloffset_WindowPos2fvMESA, WindowPos2fvMESA@4) - GL_STUB(WindowPos2iMESA, _gloffset_WindowPos2iMESA, WindowPos2iMESA@8) - GL_STUB(WindowPos2ivMESA, _gloffset_WindowPos2ivMESA, WindowPos2ivMESA@4) - GL_STUB(WindowPos2sMESA, _gloffset_WindowPos2sMESA, WindowPos2sMESA@8) - GL_STUB(WindowPos2svMESA, _gloffset_WindowPos2svMESA, WindowPos2svMESA@4) - GL_STUB(WindowPos3dMESA, _gloffset_WindowPos3dMESA, WindowPos3dMESA@24) - GL_STUB(WindowPos3dvMESA, _gloffset_WindowPos3dvMESA, WindowPos3dvMESA@4) - GL_STUB(WindowPos3fMESA, _gloffset_WindowPos3fMESA, WindowPos3fMESA@12) - GL_STUB(WindowPos3fvMESA, _gloffset_WindowPos3fvMESA, WindowPos3fvMESA@4) - GL_STUB(WindowPos3iMESA, _gloffset_WindowPos3iMESA, WindowPos3iMESA@12) - GL_STUB(WindowPos3ivMESA, _gloffset_WindowPos3ivMESA, WindowPos3ivMESA@4) - GL_STUB(WindowPos3sMESA, _gloffset_WindowPos3sMESA, WindowPos3sMESA@12) - GL_STUB(WindowPos3svMESA, _gloffset_WindowPos3svMESA, WindowPos3svMESA@4) - GL_STUB(WindowPos4dMESA, _gloffset_WindowPos4dMESA, WindowPos4dMESA@32) - GL_STUB(WindowPos4dvMESA, _gloffset_WindowPos4dvMESA, WindowPos4dvMESA@4) - GL_STUB(WindowPos4fMESA, _gloffset_WindowPos4fMESA, WindowPos4fMESA@16) - GL_STUB(WindowPos4fvMESA, _gloffset_WindowPos4fvMESA, WindowPos4fvMESA@4) - GL_STUB(WindowPos4iMESA, _gloffset_WindowPos4iMESA, WindowPos4iMESA@16) - GL_STUB(WindowPos4ivMESA, _gloffset_WindowPos4ivMESA, WindowPos4ivMESA@4) - GL_STUB(WindowPos4sMESA, _gloffset_WindowPos4sMESA, WindowPos4sMESA@16) - GL_STUB(WindowPos4svMESA, _gloffset_WindowPos4svMESA, WindowPos4svMESA@4) - GL_STUB(_dispatch_stub_674, _gloffset_MultiModeDrawArraysIBM, _dispatch_stub_674@20) - HIDDEN(GL_PREFIX(_dispatch_stub_674, _dispatch_stub_674@20)) - GL_STUB(_dispatch_stub_675, _gloffset_MultiModeDrawElementsIBM, _dispatch_stub_675@24) - HIDDEN(GL_PREFIX(_dispatch_stub_675, _dispatch_stub_675@24)) - GL_STUB(_dispatch_stub_676, _gloffset_DeleteFencesNV, _dispatch_stub_676@8) - HIDDEN(GL_PREFIX(_dispatch_stub_676, _dispatch_stub_676@8)) - GL_STUB(_dispatch_stub_677, _gloffset_FinishFenceNV, _dispatch_stub_677@4) - HIDDEN(GL_PREFIX(_dispatch_stub_677, _dispatch_stub_677@4)) - GL_STUB(_dispatch_stub_678, _gloffset_GenFencesNV, _dispatch_stub_678@8) - HIDDEN(GL_PREFIX(_dispatch_stub_678, _dispatch_stub_678@8)) - GL_STUB(_dispatch_stub_679, _gloffset_GetFenceivNV, _dispatch_stub_679@12) - HIDDEN(GL_PREFIX(_dispatch_stub_679, _dispatch_stub_679@12)) - GL_STUB(_dispatch_stub_680, _gloffset_IsFenceNV, _dispatch_stub_680@4) - HIDDEN(GL_PREFIX(_dispatch_stub_680, _dispatch_stub_680@4)) - GL_STUB(_dispatch_stub_681, _gloffset_SetFenceNV, _dispatch_stub_681@8) - HIDDEN(GL_PREFIX(_dispatch_stub_681, _dispatch_stub_681@8)) - GL_STUB(_dispatch_stub_682, _gloffset_TestFenceNV, _dispatch_stub_682@4) - HIDDEN(GL_PREFIX(_dispatch_stub_682, _dispatch_stub_682@4)) - GL_STUB(AreProgramsResidentNV, _gloffset_AreProgramsResidentNV, AreProgramsResidentNV@12) - GL_STUB(BindProgramNV, _gloffset_BindProgramNV, BindProgramNV@8) - GL_STUB(DeleteProgramsNV, _gloffset_DeleteProgramsNV, DeleteProgramsNV@8) - GL_STUB(ExecuteProgramNV, _gloffset_ExecuteProgramNV, ExecuteProgramNV@12) - GL_STUB(GenProgramsNV, _gloffset_GenProgramsNV, GenProgramsNV@8) - GL_STUB(GetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV, GetProgramParameterdvNV@16) - GL_STUB(GetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV, GetProgramParameterfvNV@16) - GL_STUB(GetProgramStringNV, _gloffset_GetProgramStringNV, GetProgramStringNV@12) - GL_STUB(GetProgramivNV, _gloffset_GetProgramivNV, GetProgramivNV@12) - GL_STUB(GetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV, GetTrackMatrixivNV@16) - GL_STUB(GetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointervNV@12) - GL_STUB(GetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV, GetVertexAttribdvNV@12) - GL_STUB(GetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV, GetVertexAttribfvNV@12) - GL_STUB(GetVertexAttribivNV, _gloffset_GetVertexAttribivNV, GetVertexAttribivNV@12) - GL_STUB(IsProgramNV, _gloffset_IsProgramNV, IsProgramNV@4) - GL_STUB(LoadProgramNV, _gloffset_LoadProgramNV, LoadProgramNV@16) - GL_STUB(ProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV, ProgramParameters4dvNV@16) - GL_STUB(ProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV, ProgramParameters4fvNV@16) - GL_STUB(RequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV, RequestResidentProgramsNV@8) - GL_STUB(TrackMatrixNV, _gloffset_TrackMatrixNV, TrackMatrixNV@16) - GL_STUB(VertexAttrib1dNV, _gloffset_VertexAttrib1dNV, VertexAttrib1dNV@12) - GL_STUB(VertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV, VertexAttrib1dvNV@8) - GL_STUB(VertexAttrib1fNV, _gloffset_VertexAttrib1fNV, VertexAttrib1fNV@8) - GL_STUB(VertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV, VertexAttrib1fvNV@8) - GL_STUB(VertexAttrib1sNV, _gloffset_VertexAttrib1sNV, VertexAttrib1sNV@8) - GL_STUB(VertexAttrib1svNV, _gloffset_VertexAttrib1svNV, VertexAttrib1svNV@8) - GL_STUB(VertexAttrib2dNV, _gloffset_VertexAttrib2dNV, VertexAttrib2dNV@20) - GL_STUB(VertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV, VertexAttrib2dvNV@8) - GL_STUB(VertexAttrib2fNV, _gloffset_VertexAttrib2fNV, VertexAttrib2fNV@12) - GL_STUB(VertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV, VertexAttrib2fvNV@8) - GL_STUB(VertexAttrib2sNV, _gloffset_VertexAttrib2sNV, VertexAttrib2sNV@12) - GL_STUB(VertexAttrib2svNV, _gloffset_VertexAttrib2svNV, VertexAttrib2svNV@8) - GL_STUB(VertexAttrib3dNV, _gloffset_VertexAttrib3dNV, VertexAttrib3dNV@28) - GL_STUB(VertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV, VertexAttrib3dvNV@8) - GL_STUB(VertexAttrib3fNV, _gloffset_VertexAttrib3fNV, VertexAttrib3fNV@16) - GL_STUB(VertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV, VertexAttrib3fvNV@8) - GL_STUB(VertexAttrib3sNV, _gloffset_VertexAttrib3sNV, VertexAttrib3sNV@16) - GL_STUB(VertexAttrib3svNV, _gloffset_VertexAttrib3svNV, VertexAttrib3svNV@8) - GL_STUB(VertexAttrib4dNV, _gloffset_VertexAttrib4dNV, VertexAttrib4dNV@36) - GL_STUB(VertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV, VertexAttrib4dvNV@8) - GL_STUB(VertexAttrib4fNV, _gloffset_VertexAttrib4fNV, VertexAttrib4fNV@20) - GL_STUB(VertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV, VertexAttrib4fvNV@8) - GL_STUB(VertexAttrib4sNV, _gloffset_VertexAttrib4sNV, VertexAttrib4sNV@20) - GL_STUB(VertexAttrib4svNV, _gloffset_VertexAttrib4svNV, VertexAttrib4svNV@8) - GL_STUB(VertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV, VertexAttrib4ubNV@20) - GL_STUB(VertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV, VertexAttrib4ubvNV@8) - GL_STUB(VertexAttribPointerNV, _gloffset_VertexAttribPointerNV, VertexAttribPointerNV@20) - GL_STUB(VertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV, VertexAttribs1dvNV@12) - GL_STUB(VertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV, VertexAttribs1fvNV@12) - GL_STUB(VertexAttribs1svNV, _gloffset_VertexAttribs1svNV, VertexAttribs1svNV@12) - GL_STUB(VertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV, VertexAttribs2dvNV@12) - GL_STUB(VertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV, VertexAttribs2fvNV@12) - GL_STUB(VertexAttribs2svNV, _gloffset_VertexAttribs2svNV, VertexAttribs2svNV@12) - GL_STUB(VertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV, VertexAttribs3dvNV@12) - GL_STUB(VertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV, VertexAttribs3fvNV@12) - GL_STUB(VertexAttribs3svNV, _gloffset_VertexAttribs3svNV, VertexAttribs3svNV@12) - GL_STUB(VertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV, VertexAttribs4dvNV@12) - GL_STUB(VertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV, VertexAttribs4fvNV@12) - GL_STUB(VertexAttribs4svNV, _gloffset_VertexAttribs4svNV, VertexAttribs4svNV@12) - GL_STUB(VertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV, VertexAttribs4ubvNV@12) - GL_STUB(GetTexBumpParameterfvATI, _gloffset_GetTexBumpParameterfvATI, GetTexBumpParameterfvATI@8) - GL_STUB(GetTexBumpParameterivATI, _gloffset_GetTexBumpParameterivATI, GetTexBumpParameterivATI@8) - GL_STUB(TexBumpParameterfvATI, _gloffset_TexBumpParameterfvATI, TexBumpParameterfvATI@8) - GL_STUB(TexBumpParameterivATI, _gloffset_TexBumpParameterivATI, TexBumpParameterivATI@8) - GL_STUB(AlphaFragmentOp1ATI, _gloffset_AlphaFragmentOp1ATI, AlphaFragmentOp1ATI@24) - GL_STUB(AlphaFragmentOp2ATI, _gloffset_AlphaFragmentOp2ATI, AlphaFragmentOp2ATI@36) - GL_STUB(AlphaFragmentOp3ATI, _gloffset_AlphaFragmentOp3ATI, AlphaFragmentOp3ATI@48) - GL_STUB(BeginFragmentShaderATI, _gloffset_BeginFragmentShaderATI, BeginFragmentShaderATI@0) - GL_STUB(BindFragmentShaderATI, _gloffset_BindFragmentShaderATI, BindFragmentShaderATI@4) - GL_STUB(ColorFragmentOp1ATI, _gloffset_ColorFragmentOp1ATI, ColorFragmentOp1ATI@28) - GL_STUB(ColorFragmentOp2ATI, _gloffset_ColorFragmentOp2ATI, ColorFragmentOp2ATI@40) - GL_STUB(ColorFragmentOp3ATI, _gloffset_ColorFragmentOp3ATI, ColorFragmentOp3ATI@52) - GL_STUB(DeleteFragmentShaderATI, _gloffset_DeleteFragmentShaderATI, DeleteFragmentShaderATI@4) - GL_STUB(EndFragmentShaderATI, _gloffset_EndFragmentShaderATI, EndFragmentShaderATI@0) - GL_STUB(GenFragmentShadersATI, _gloffset_GenFragmentShadersATI, GenFragmentShadersATI@4) - GL_STUB(PassTexCoordATI, _gloffset_PassTexCoordATI, PassTexCoordATI@12) - GL_STUB(SampleMapATI, _gloffset_SampleMapATI, SampleMapATI@12) - GL_STUB(SetFragmentShaderConstantATI, _gloffset_SetFragmentShaderConstantATI, SetFragmentShaderConstantATI@8) - GL_STUB(PointParameteriNV, _gloffset_PointParameteriNV, PointParameteriNV@8) - GL_STUB(PointParameterivNV, _gloffset_PointParameterivNV, PointParameterivNV@8) - GL_STUB(_dispatch_stub_763, _gloffset_ActiveStencilFaceEXT, _dispatch_stub_763@4) - HIDDEN(GL_PREFIX(_dispatch_stub_763, _dispatch_stub_763@4)) - GL_STUB(_dispatch_stub_764, _gloffset_BindVertexArrayAPPLE, _dispatch_stub_764@4) - HIDDEN(GL_PREFIX(_dispatch_stub_764, _dispatch_stub_764@4)) - GL_STUB(_dispatch_stub_765, _gloffset_DeleteVertexArraysAPPLE, _dispatch_stub_765@8) - HIDDEN(GL_PREFIX(_dispatch_stub_765, _dispatch_stub_765@8)) - GL_STUB(_dispatch_stub_766, _gloffset_GenVertexArraysAPPLE, _dispatch_stub_766@8) - HIDDEN(GL_PREFIX(_dispatch_stub_766, _dispatch_stub_766@8)) - GL_STUB(_dispatch_stub_767, _gloffset_IsVertexArrayAPPLE, _dispatch_stub_767@4) - HIDDEN(GL_PREFIX(_dispatch_stub_767, _dispatch_stub_767@4)) - GL_STUB(GetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV, GetProgramNamedParameterdvNV@16) - GL_STUB(GetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV, GetProgramNamedParameterfvNV@16) - GL_STUB(ProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV, ProgramNamedParameter4dNV@44) - GL_STUB(ProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV, ProgramNamedParameter4dvNV@16) - GL_STUB(ProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV, ProgramNamedParameter4fNV@28) - GL_STUB(ProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV, ProgramNamedParameter4fvNV@16) - GL_STUB(PrimitiveRestartIndexNV, _gloffset_PrimitiveRestartIndexNV, PrimitiveRestartIndexNV@4) - GL_STUB(PrimitiveRestartNV, _gloffset_PrimitiveRestartNV, PrimitiveRestartNV@0) - GL_STUB(_dispatch_stub_776, _gloffset_DepthBoundsEXT, _dispatch_stub_776@16) - HIDDEN(GL_PREFIX(_dispatch_stub_776, _dispatch_stub_776@16)) - GL_STUB(_dispatch_stub_777, _gloffset_BlendEquationSeparateEXT, _dispatch_stub_777@8) + GL_STUB(NewList, 0, NewList@8) + GL_STUB(EndList, 1, EndList@0) + GL_STUB(CallList, 2, CallList@4) + GL_STUB(CallLists, 3, CallLists@12) + GL_STUB(DeleteLists, 4, DeleteLists@8) + GL_STUB(GenLists, 5, GenLists@4) + GL_STUB(ListBase, 6, ListBase@4) + GL_STUB(Begin, 7, Begin@4) + GL_STUB(Bitmap, 8, Bitmap@28) + GL_STUB(Color3b, 9, Color3b@12) + GL_STUB(Color3bv, 10, Color3bv@4) + GL_STUB(Color3d, 11, Color3d@24) + GL_STUB(Color3dv, 12, Color3dv@4) + GL_STUB(Color3f, 13, Color3f@12) + GL_STUB(Color3fv, 14, Color3fv@4) + GL_STUB(Color3i, 15, Color3i@12) + GL_STUB(Color3iv, 16, Color3iv@4) + GL_STUB(Color3s, 17, Color3s@12) + GL_STUB(Color3sv, 18, Color3sv@4) + GL_STUB(Color3ub, 19, Color3ub@12) + GL_STUB(Color3ubv, 20, Color3ubv@4) + GL_STUB(Color3ui, 21, Color3ui@12) + GL_STUB(Color3uiv, 22, Color3uiv@4) + GL_STUB(Color3us, 23, Color3us@12) + GL_STUB(Color3usv, 24, Color3usv@4) + GL_STUB(Color4b, 25, Color4b@16) + GL_STUB(Color4bv, 26, Color4bv@4) + GL_STUB(Color4d, 27, Color4d@32) + GL_STUB(Color4dv, 28, Color4dv@4) + GL_STUB(Color4f, 29, Color4f@16) + GL_STUB(Color4fv, 30, Color4fv@4) + GL_STUB(Color4i, 31, Color4i@16) + GL_STUB(Color4iv, 32, Color4iv@4) + GL_STUB(Color4s, 33, Color4s@16) + GL_STUB(Color4sv, 34, Color4sv@4) + GL_STUB(Color4ub, 35, Color4ub@16) + GL_STUB(Color4ubv, 36, Color4ubv@4) + GL_STUB(Color4ui, 37, Color4ui@16) + GL_STUB(Color4uiv, 38, Color4uiv@4) + GL_STUB(Color4us, 39, Color4us@16) + GL_STUB(Color4usv, 40, Color4usv@4) + GL_STUB(EdgeFlag, 41, EdgeFlag@4) + GL_STUB(EdgeFlagv, 42, EdgeFlagv@4) + GL_STUB(End, 43, End@0) + GL_STUB(Indexd, 44, Indexd@8) + GL_STUB(Indexdv, 45, Indexdv@4) + GL_STUB(Indexf, 46, Indexf@4) + GL_STUB(Indexfv, 47, Indexfv@4) + GL_STUB(Indexi, 48, Indexi@4) + GL_STUB(Indexiv, 49, Indexiv@4) + GL_STUB(Indexs, 50, Indexs@4) + GL_STUB(Indexsv, 51, Indexsv@4) + GL_STUB(Normal3b, 52, Normal3b@12) + GL_STUB(Normal3bv, 53, Normal3bv@4) + GL_STUB(Normal3d, 54, Normal3d@24) + GL_STUB(Normal3dv, 55, Normal3dv@4) + GL_STUB(Normal3f, 56, Normal3f@12) + GL_STUB(Normal3fv, 57, Normal3fv@4) + GL_STUB(Normal3i, 58, Normal3i@12) + GL_STUB(Normal3iv, 59, Normal3iv@4) + GL_STUB(Normal3s, 60, Normal3s@12) + GL_STUB(Normal3sv, 61, Normal3sv@4) + GL_STUB(RasterPos2d, 62, RasterPos2d@16) + GL_STUB(RasterPos2dv, 63, RasterPos2dv@4) + GL_STUB(RasterPos2f, 64, RasterPos2f@8) + GL_STUB(RasterPos2fv, 65, RasterPos2fv@4) + GL_STUB(RasterPos2i, 66, RasterPos2i@8) + GL_STUB(RasterPos2iv, 67, RasterPos2iv@4) + GL_STUB(RasterPos2s, 68, RasterPos2s@8) + GL_STUB(RasterPos2sv, 69, RasterPos2sv@4) + GL_STUB(RasterPos3d, 70, RasterPos3d@24) + GL_STUB(RasterPos3dv, 71, RasterPos3dv@4) + GL_STUB(RasterPos3f, 72, RasterPos3f@12) + GL_STUB(RasterPos3fv, 73, RasterPos3fv@4) + GL_STUB(RasterPos3i, 74, RasterPos3i@12) + GL_STUB(RasterPos3iv, 75, RasterPos3iv@4) + GL_STUB(RasterPos3s, 76, RasterPos3s@12) + GL_STUB(RasterPos3sv, 77, RasterPos3sv@4) + GL_STUB(RasterPos4d, 78, RasterPos4d@32) + GL_STUB(RasterPos4dv, 79, RasterPos4dv@4) + GL_STUB(RasterPos4f, 80, RasterPos4f@16) + GL_STUB(RasterPos4fv, 81, RasterPos4fv@4) + GL_STUB(RasterPos4i, 82, RasterPos4i@16) + GL_STUB(RasterPos4iv, 83, RasterPos4iv@4) + GL_STUB(RasterPos4s, 84, RasterPos4s@16) + GL_STUB(RasterPos4sv, 85, RasterPos4sv@4) + GL_STUB(Rectd, 86, Rectd@32) + GL_STUB(Rectdv, 87, Rectdv@8) + GL_STUB(Rectf, 88, Rectf@16) + GL_STUB(Rectfv, 89, Rectfv@8) + GL_STUB(Recti, 90, Recti@16) + GL_STUB(Rectiv, 91, Rectiv@8) + GL_STUB(Rects, 92, Rects@16) + GL_STUB(Rectsv, 93, Rectsv@8) + GL_STUB(TexCoord1d, 94, TexCoord1d@8) + GL_STUB(TexCoord1dv, 95, TexCoord1dv@4) + GL_STUB(TexCoord1f, 96, TexCoord1f@4) + GL_STUB(TexCoord1fv, 97, TexCoord1fv@4) + GL_STUB(TexCoord1i, 98, TexCoord1i@4) + GL_STUB(TexCoord1iv, 99, TexCoord1iv@4) + GL_STUB(TexCoord1s, 100, TexCoord1s@4) + GL_STUB(TexCoord1sv, 101, TexCoord1sv@4) + GL_STUB(TexCoord2d, 102, TexCoord2d@16) + GL_STUB(TexCoord2dv, 103, TexCoord2dv@4) + GL_STUB(TexCoord2f, 104, TexCoord2f@8) + GL_STUB(TexCoord2fv, 105, TexCoord2fv@4) + GL_STUB(TexCoord2i, 106, TexCoord2i@8) + GL_STUB(TexCoord2iv, 107, TexCoord2iv@4) + GL_STUB(TexCoord2s, 108, TexCoord2s@8) + GL_STUB(TexCoord2sv, 109, TexCoord2sv@4) + GL_STUB(TexCoord3d, 110, TexCoord3d@24) + GL_STUB(TexCoord3dv, 111, TexCoord3dv@4) + GL_STUB(TexCoord3f, 112, TexCoord3f@12) + GL_STUB(TexCoord3fv, 113, TexCoord3fv@4) + GL_STUB(TexCoord3i, 114, TexCoord3i@12) + GL_STUB(TexCoord3iv, 115, TexCoord3iv@4) + GL_STUB(TexCoord3s, 116, TexCoord3s@12) + GL_STUB(TexCoord3sv, 117, TexCoord3sv@4) + GL_STUB(TexCoord4d, 118, TexCoord4d@32) + GL_STUB(TexCoord4dv, 119, TexCoord4dv@4) + GL_STUB(TexCoord4f, 120, TexCoord4f@16) + GL_STUB(TexCoord4fv, 121, TexCoord4fv@4) + GL_STUB(TexCoord4i, 122, TexCoord4i@16) + GL_STUB(TexCoord4iv, 123, TexCoord4iv@4) + GL_STUB(TexCoord4s, 124, TexCoord4s@16) + GL_STUB(TexCoord4sv, 125, TexCoord4sv@4) + GL_STUB(Vertex2d, 126, Vertex2d@16) + GL_STUB(Vertex2dv, 127, Vertex2dv@4) + GL_STUB(Vertex2f, 128, Vertex2f@8) + GL_STUB(Vertex2fv, 129, Vertex2fv@4) + GL_STUB(Vertex2i, 130, Vertex2i@8) + GL_STUB(Vertex2iv, 131, Vertex2iv@4) + GL_STUB(Vertex2s, 132, Vertex2s@8) + GL_STUB(Vertex2sv, 133, Vertex2sv@4) + GL_STUB(Vertex3d, 134, Vertex3d@24) + GL_STUB(Vertex3dv, 135, Vertex3dv@4) + GL_STUB(Vertex3f, 136, Vertex3f@12) + GL_STUB(Vertex3fv, 137, Vertex3fv@4) + GL_STUB(Vertex3i, 138, Vertex3i@12) + GL_STUB(Vertex3iv, 139, Vertex3iv@4) + GL_STUB(Vertex3s, 140, Vertex3s@12) + GL_STUB(Vertex3sv, 141, Vertex3sv@4) + GL_STUB(Vertex4d, 142, Vertex4d@32) + GL_STUB(Vertex4dv, 143, Vertex4dv@4) + GL_STUB(Vertex4f, 144, Vertex4f@16) + GL_STUB(Vertex4fv, 145, Vertex4fv@4) + GL_STUB(Vertex4i, 146, Vertex4i@16) + GL_STUB(Vertex4iv, 147, Vertex4iv@4) + GL_STUB(Vertex4s, 148, Vertex4s@16) + GL_STUB(Vertex4sv, 149, Vertex4sv@4) + GL_STUB(ClipPlane, 150, ClipPlane@8) + GL_STUB(ColorMaterial, 151, ColorMaterial@8) + GL_STUB(CullFace, 152, CullFace@4) + GL_STUB(Fogf, 153, Fogf@8) + GL_STUB(Fogfv, 154, Fogfv@8) + GL_STUB(Fogi, 155, Fogi@8) + GL_STUB(Fogiv, 156, Fogiv@8) + GL_STUB(FrontFace, 157, FrontFace@4) + GL_STUB(Hint, 158, Hint@8) + GL_STUB(Lightf, 159, Lightf@12) + GL_STUB(Lightfv, 160, Lightfv@12) + GL_STUB(Lighti, 161, Lighti@12) + GL_STUB(Lightiv, 162, Lightiv@12) + GL_STUB(LightModelf, 163, LightModelf@8) + GL_STUB(LightModelfv, 164, LightModelfv@8) + GL_STUB(LightModeli, 165, LightModeli@8) + GL_STUB(LightModeliv, 166, LightModeliv@8) + GL_STUB(LineStipple, 167, LineStipple@8) + GL_STUB(LineWidth, 168, LineWidth@4) + GL_STUB(Materialf, 169, Materialf@12) + GL_STUB(Materialfv, 170, Materialfv@12) + GL_STUB(Materiali, 171, Materiali@12) + GL_STUB(Materialiv, 172, Materialiv@12) + GL_STUB(PointSize, 173, PointSize@4) + GL_STUB(PolygonMode, 174, PolygonMode@8) + GL_STUB(PolygonStipple, 175, PolygonStipple@4) + GL_STUB(Scissor, 176, Scissor@16) + GL_STUB(ShadeModel, 177, ShadeModel@4) + GL_STUB(TexParameterf, 178, TexParameterf@12) + GL_STUB(TexParameterfv, 179, TexParameterfv@12) + GL_STUB(TexParameteri, 180, TexParameteri@12) + GL_STUB(TexParameteriv, 181, TexParameteriv@12) + GL_STUB(TexImage1D, 182, TexImage1D@32) + GL_STUB(TexImage2D, 183, TexImage2D@36) + GL_STUB(TexEnvf, 184, TexEnvf@12) + GL_STUB(TexEnvfv, 185, TexEnvfv@12) + GL_STUB(TexEnvi, 186, TexEnvi@12) + GL_STUB(TexEnviv, 187, TexEnviv@12) + GL_STUB(TexGend, 188, TexGend@16) + GL_STUB(TexGendv, 189, TexGendv@12) + GL_STUB(TexGenf, 190, TexGenf@12) + GL_STUB(TexGenfv, 191, TexGenfv@12) + GL_STUB(TexGeni, 192, TexGeni@12) + GL_STUB(TexGeniv, 193, TexGeniv@12) + GL_STUB(FeedbackBuffer, 194, FeedbackBuffer@12) + GL_STUB(SelectBuffer, 195, SelectBuffer@8) + GL_STUB(RenderMode, 196, RenderMode@4) + GL_STUB(InitNames, 197, InitNames@0) + GL_STUB(LoadName, 198, LoadName@4) + GL_STUB(PassThrough, 199, PassThrough@4) + GL_STUB(PopName, 200, PopName@0) + GL_STUB(PushName, 201, PushName@4) + GL_STUB(DrawBuffer, 202, DrawBuffer@4) + GL_STUB(Clear, 203, Clear@4) + GL_STUB(ClearAccum, 204, ClearAccum@16) + GL_STUB(ClearIndex, 205, ClearIndex@4) + GL_STUB(ClearColor, 206, ClearColor@16) + GL_STUB(ClearStencil, 207, ClearStencil@4) + GL_STUB(ClearDepth, 208, ClearDepth@8) + GL_STUB(StencilMask, 209, StencilMask@4) + GL_STUB(ColorMask, 210, ColorMask@16) + GL_STUB(DepthMask, 211, DepthMask@4) + GL_STUB(IndexMask, 212, IndexMask@4) + GL_STUB(Accum, 213, Accum@8) + GL_STUB(Disable, 214, Disable@4) + GL_STUB(Enable, 215, Enable@4) + GL_STUB(Finish, 216, Finish@0) + GL_STUB(Flush, 217, Flush@0) + GL_STUB(PopAttrib, 218, PopAttrib@0) + GL_STUB(PushAttrib, 219, PushAttrib@4) + GL_STUB(Map1d, 220, Map1d@32) + GL_STUB(Map1f, 221, Map1f@24) + GL_STUB(Map2d, 222, Map2d@56) + GL_STUB(Map2f, 223, Map2f@40) + GL_STUB(MapGrid1d, 224, MapGrid1d@20) + GL_STUB(MapGrid1f, 225, MapGrid1f@12) + GL_STUB(MapGrid2d, 226, MapGrid2d@40) + GL_STUB(MapGrid2f, 227, MapGrid2f@24) + GL_STUB(EvalCoord1d, 228, EvalCoord1d@8) + GL_STUB(EvalCoord1dv, 229, EvalCoord1dv@4) + GL_STUB(EvalCoord1f, 230, EvalCoord1f@4) + GL_STUB(EvalCoord1fv, 231, EvalCoord1fv@4) + GL_STUB(EvalCoord2d, 232, EvalCoord2d@16) + GL_STUB(EvalCoord2dv, 233, EvalCoord2dv@4) + GL_STUB(EvalCoord2f, 234, EvalCoord2f@8) + GL_STUB(EvalCoord2fv, 235, EvalCoord2fv@4) + GL_STUB(EvalMesh1, 236, EvalMesh1@12) + GL_STUB(EvalPoint1, 237, EvalPoint1@4) + GL_STUB(EvalMesh2, 238, EvalMesh2@20) + GL_STUB(EvalPoint2, 239, EvalPoint2@8) + GL_STUB(AlphaFunc, 240, AlphaFunc@8) + GL_STUB(BlendFunc, 241, BlendFunc@8) + GL_STUB(LogicOp, 242, LogicOp@4) + GL_STUB(StencilFunc, 243, StencilFunc@12) + GL_STUB(StencilOp, 244, StencilOp@12) + GL_STUB(DepthFunc, 245, DepthFunc@4) + GL_STUB(PixelZoom, 246, PixelZoom@8) + GL_STUB(PixelTransferf, 247, PixelTransferf@8) + GL_STUB(PixelTransferi, 248, PixelTransferi@8) + GL_STUB(PixelStoref, 249, PixelStoref@8) + GL_STUB(PixelStorei, 250, PixelStorei@8) + GL_STUB(PixelMapfv, 251, PixelMapfv@12) + GL_STUB(PixelMapuiv, 252, PixelMapuiv@12) + GL_STUB(PixelMapusv, 253, PixelMapusv@12) + GL_STUB(ReadBuffer, 254, ReadBuffer@4) + GL_STUB(CopyPixels, 255, CopyPixels@20) + GL_STUB(ReadPixels, 256, ReadPixels@28) + GL_STUB(DrawPixels, 257, DrawPixels@20) + GL_STUB(GetBooleanv, 258, GetBooleanv@8) + GL_STUB(GetClipPlane, 259, GetClipPlane@8) + GL_STUB(GetDoublev, 260, GetDoublev@8) + GL_STUB(GetError, 261, GetError@0) + GL_STUB(GetFloatv, 262, GetFloatv@8) + GL_STUB(GetIntegerv, 263, GetIntegerv@8) + GL_STUB(GetLightfv, 264, GetLightfv@12) + GL_STUB(GetLightiv, 265, GetLightiv@12) + GL_STUB(GetMapdv, 266, GetMapdv@12) + GL_STUB(GetMapfv, 267, GetMapfv@12) + GL_STUB(GetMapiv, 268, GetMapiv@12) + GL_STUB(GetMaterialfv, 269, GetMaterialfv@12) + GL_STUB(GetMaterialiv, 270, GetMaterialiv@12) + GL_STUB(GetPixelMapfv, 271, GetPixelMapfv@8) + GL_STUB(GetPixelMapuiv, 272, GetPixelMapuiv@8) + GL_STUB(GetPixelMapusv, 273, GetPixelMapusv@8) + GL_STUB(GetPolygonStipple, 274, GetPolygonStipple@4) + GL_STUB(GetString, 275, GetString@4) + GL_STUB(GetTexEnvfv, 276, GetTexEnvfv@12) + GL_STUB(GetTexEnviv, 277, GetTexEnviv@12) + GL_STUB(GetTexGendv, 278, GetTexGendv@12) + GL_STUB(GetTexGenfv, 279, GetTexGenfv@12) + GL_STUB(GetTexGeniv, 280, GetTexGeniv@12) + GL_STUB(GetTexImage, 281, GetTexImage@20) + GL_STUB(GetTexParameterfv, 282, GetTexParameterfv@12) + GL_STUB(GetTexParameteriv, 283, GetTexParameteriv@12) + GL_STUB(GetTexLevelParameterfv, 284, GetTexLevelParameterfv@16) + GL_STUB(GetTexLevelParameteriv, 285, GetTexLevelParameteriv@16) + GL_STUB(IsEnabled, 286, IsEnabled@4) + GL_STUB(IsList, 287, IsList@4) + GL_STUB(DepthRange, 288, DepthRange@16) + GL_STUB(Frustum, 289, Frustum@48) + GL_STUB(LoadIdentity, 290, LoadIdentity@0) + GL_STUB(LoadMatrixf, 291, LoadMatrixf@4) + GL_STUB(LoadMatrixd, 292, LoadMatrixd@4) + GL_STUB(MatrixMode, 293, MatrixMode@4) + GL_STUB(MultMatrixf, 294, MultMatrixf@4) + GL_STUB(MultMatrixd, 295, MultMatrixd@4) + GL_STUB(Ortho, 296, Ortho@48) + GL_STUB(PopMatrix, 297, PopMatrix@0) + GL_STUB(PushMatrix, 298, PushMatrix@0) + GL_STUB(Rotated, 299, Rotated@32) + GL_STUB(Rotatef, 300, Rotatef@16) + GL_STUB(Scaled, 301, Scaled@24) + GL_STUB(Scalef, 302, Scalef@12) + GL_STUB(Translated, 303, Translated@24) + GL_STUB(Translatef, 304, Translatef@12) + GL_STUB(Viewport, 305, Viewport@16) + GL_STUB(ArrayElement, 306, ArrayElement@4) + GL_STUB(BindTexture, 307, BindTexture@8) + GL_STUB(ColorPointer, 308, ColorPointer@16) + GL_STUB(DisableClientState, 309, DisableClientState@4) + GL_STUB(DrawArrays, 310, DrawArrays@12) + GL_STUB(DrawElements, 311, DrawElements@16) + GL_STUB(EdgeFlagPointer, 312, EdgeFlagPointer@8) + GL_STUB(EnableClientState, 313, EnableClientState@4) + GL_STUB(IndexPointer, 314, IndexPointer@12) + GL_STUB(Indexub, 315, Indexub@4) + GL_STUB(Indexubv, 316, Indexubv@4) + GL_STUB(InterleavedArrays, 317, InterleavedArrays@12) + GL_STUB(NormalPointer, 318, NormalPointer@12) + GL_STUB(PolygonOffset, 319, PolygonOffset@8) + GL_STUB(TexCoordPointer, 320, TexCoordPointer@16) + GL_STUB(VertexPointer, 321, VertexPointer@16) + GL_STUB(AreTexturesResident, 322, AreTexturesResident@12) + GL_STUB(CopyTexImage1D, 323, CopyTexImage1D@28) + GL_STUB(CopyTexImage2D, 324, CopyTexImage2D@32) + GL_STUB(CopyTexSubImage1D, 325, CopyTexSubImage1D@24) + GL_STUB(CopyTexSubImage2D, 326, CopyTexSubImage2D@32) + GL_STUB(DeleteTextures, 327, DeleteTextures@8) + GL_STUB(GenTextures, 328, GenTextures@8) + GL_STUB(GetPointerv, 329, GetPointerv@8) + GL_STUB(IsTexture, 330, IsTexture@4) + GL_STUB(PrioritizeTextures, 331, PrioritizeTextures@12) + GL_STUB(TexSubImage1D, 332, TexSubImage1D@28) + GL_STUB(TexSubImage2D, 333, TexSubImage2D@36) + GL_STUB(PopClientAttrib, 334, PopClientAttrib@0) + GL_STUB(PushClientAttrib, 335, PushClientAttrib@4) + GL_STUB(BlendColor, 336, BlendColor@16) + GL_STUB(BlendEquation, 337, BlendEquation@4) + GL_STUB(DrawRangeElements, 338, DrawRangeElements@24) + GL_STUB(ColorTable, 339, ColorTable@24) + GL_STUB(ColorTableParameterfv, 340, ColorTableParameterfv@12) + GL_STUB(ColorTableParameteriv, 341, ColorTableParameteriv@12) + GL_STUB(CopyColorTable, 342, CopyColorTable@20) + GL_STUB(GetColorTable, 343, GetColorTable@16) + GL_STUB(GetColorTableParameterfv, 344, GetColorTableParameterfv@12) + GL_STUB(GetColorTableParameteriv, 345, GetColorTableParameteriv@12) + GL_STUB(ColorSubTable, 346, ColorSubTable@24) + GL_STUB(CopyColorSubTable, 347, CopyColorSubTable@20) + GL_STUB(ConvolutionFilter1D, 348, ConvolutionFilter1D@24) + GL_STUB(ConvolutionFilter2D, 349, ConvolutionFilter2D@28) + GL_STUB(ConvolutionParameterf, 350, ConvolutionParameterf@12) + GL_STUB(ConvolutionParameterfv, 351, ConvolutionParameterfv@12) + GL_STUB(ConvolutionParameteri, 352, ConvolutionParameteri@12) + GL_STUB(ConvolutionParameteriv, 353, ConvolutionParameteriv@12) + GL_STUB(CopyConvolutionFilter1D, 354, CopyConvolutionFilter1D@20) + GL_STUB(CopyConvolutionFilter2D, 355, CopyConvolutionFilter2D@24) + GL_STUB(GetConvolutionFilter, 356, GetConvolutionFilter@16) + GL_STUB(GetConvolutionParameterfv, 357, GetConvolutionParameterfv@12) + GL_STUB(GetConvolutionParameteriv, 358, GetConvolutionParameteriv@12) + GL_STUB(GetSeparableFilter, 359, GetSeparableFilter@24) + GL_STUB(SeparableFilter2D, 360, SeparableFilter2D@32) + GL_STUB(GetHistogram, 361, GetHistogram@20) + GL_STUB(GetHistogramParameterfv, 362, GetHistogramParameterfv@12) + GL_STUB(GetHistogramParameteriv, 363, GetHistogramParameteriv@12) + GL_STUB(GetMinmax, 364, GetMinmax@20) + GL_STUB(GetMinmaxParameterfv, 365, GetMinmaxParameterfv@12) + GL_STUB(GetMinmaxParameteriv, 366, GetMinmaxParameteriv@12) + GL_STUB(Histogram, 367, Histogram@16) + GL_STUB(Minmax, 368, Minmax@12) + GL_STUB(ResetHistogram, 369, ResetHistogram@4) + GL_STUB(ResetMinmax, 370, ResetMinmax@4) + GL_STUB(TexImage3D, 371, TexImage3D@40) + GL_STUB(TexSubImage3D, 372, TexSubImage3D@44) + GL_STUB(CopyTexSubImage3D, 373, CopyTexSubImage3D@36) + GL_STUB(ActiveTextureARB, 374, ActiveTextureARB@4) + GL_STUB(ClientActiveTextureARB, 375, ClientActiveTextureARB@4) + GL_STUB(MultiTexCoord1dARB, 376, MultiTexCoord1dARB@12) + GL_STUB(MultiTexCoord1dvARB, 377, MultiTexCoord1dvARB@8) + GL_STUB(MultiTexCoord1fARB, 378, MultiTexCoord1fARB@8) + GL_STUB(MultiTexCoord1fvARB, 379, MultiTexCoord1fvARB@8) + GL_STUB(MultiTexCoord1iARB, 380, MultiTexCoord1iARB@8) + GL_STUB(MultiTexCoord1ivARB, 381, MultiTexCoord1ivARB@8) + GL_STUB(MultiTexCoord1sARB, 382, MultiTexCoord1sARB@8) + GL_STUB(MultiTexCoord1svARB, 383, MultiTexCoord1svARB@8) + GL_STUB(MultiTexCoord2dARB, 384, MultiTexCoord2dARB@20) + GL_STUB(MultiTexCoord2dvARB, 385, MultiTexCoord2dvARB@8) + GL_STUB(MultiTexCoord2fARB, 386, MultiTexCoord2fARB@12) + GL_STUB(MultiTexCoord2fvARB, 387, MultiTexCoord2fvARB@8) + GL_STUB(MultiTexCoord2iARB, 388, MultiTexCoord2iARB@12) + GL_STUB(MultiTexCoord2ivARB, 389, MultiTexCoord2ivARB@8) + GL_STUB(MultiTexCoord2sARB, 390, MultiTexCoord2sARB@12) + GL_STUB(MultiTexCoord2svARB, 391, MultiTexCoord2svARB@8) + GL_STUB(MultiTexCoord3dARB, 392, MultiTexCoord3dARB@28) + GL_STUB(MultiTexCoord3dvARB, 393, MultiTexCoord3dvARB@8) + GL_STUB(MultiTexCoord3fARB, 394, MultiTexCoord3fARB@16) + GL_STUB(MultiTexCoord3fvARB, 395, MultiTexCoord3fvARB@8) + GL_STUB(MultiTexCoord3iARB, 396, MultiTexCoord3iARB@16) + GL_STUB(MultiTexCoord3ivARB, 397, MultiTexCoord3ivARB@8) + GL_STUB(MultiTexCoord3sARB, 398, MultiTexCoord3sARB@16) + GL_STUB(MultiTexCoord3svARB, 399, MultiTexCoord3svARB@8) + GL_STUB(MultiTexCoord4dARB, 400, MultiTexCoord4dARB@36) + GL_STUB(MultiTexCoord4dvARB, 401, MultiTexCoord4dvARB@8) + GL_STUB(MultiTexCoord4fARB, 402, MultiTexCoord4fARB@20) + GL_STUB(MultiTexCoord4fvARB, 403, MultiTexCoord4fvARB@8) + GL_STUB(MultiTexCoord4iARB, 404, MultiTexCoord4iARB@20) + GL_STUB(MultiTexCoord4ivARB, 405, MultiTexCoord4ivARB@8) + GL_STUB(MultiTexCoord4sARB, 406, MultiTexCoord4sARB@20) + GL_STUB(MultiTexCoord4svARB, 407, MultiTexCoord4svARB@8) + GL_STUB(AttachShader, 408, AttachShader@8) + GL_STUB(CreateProgram, 409, CreateProgram@0) + GL_STUB(CreateShader, 410, CreateShader@4) + GL_STUB(DeleteProgram, 411, DeleteProgram@4) + GL_STUB(DeleteShader, 412, DeleteShader@4) + GL_STUB(DetachShader, 413, DetachShader@8) + GL_STUB(GetAttachedShaders, 414, GetAttachedShaders@16) + GL_STUB(GetProgramInfoLog, 415, GetProgramInfoLog@16) + GL_STUB(GetProgramiv, 416, GetProgramiv@12) + GL_STUB(GetShaderInfoLog, 417, GetShaderInfoLog@16) + GL_STUB(GetShaderiv, 418, GetShaderiv@12) + GL_STUB(IsProgram, 419, IsProgram@4) + GL_STUB(IsShader, 420, IsShader@4) + GL_STUB(StencilFuncSeparate, 421, StencilFuncSeparate@16) + GL_STUB(StencilMaskSeparate, 422, StencilMaskSeparate@8) + GL_STUB(StencilOpSeparate, 423, StencilOpSeparate@16) + GL_STUB(UniformMatrix2x3fv, 424, UniformMatrix2x3fv@16) + GL_STUB(UniformMatrix2x4fv, 425, UniformMatrix2x4fv@16) + GL_STUB(UniformMatrix3x2fv, 426, UniformMatrix3x2fv@16) + GL_STUB(UniformMatrix3x4fv, 427, UniformMatrix3x4fv@16) + GL_STUB(UniformMatrix4x2fv, 428, UniformMatrix4x2fv@16) + GL_STUB(UniformMatrix4x3fv, 429, UniformMatrix4x3fv@16) + GL_STUB(ClampColor, 430, ClampColor@8) + GL_STUB(ClearBufferfi, 431, ClearBufferfi@16) + GL_STUB(ClearBufferfv, 432, ClearBufferfv@12) + GL_STUB(ClearBufferiv, 433, ClearBufferiv@12) + GL_STUB(ClearBufferuiv, 434, ClearBufferuiv@12) + GL_STUB(GetStringi, 435, GetStringi@8) + GL_STUB(TexBuffer, 436, TexBuffer@12) + GL_STUB(FramebufferTexture, 437, FramebufferTexture@16) + GL_STUB(GetBufferParameteri64v, 438, GetBufferParameteri64v@12) + GL_STUB(GetInteger64i_v, 439, GetInteger64i_v@12) + GL_STUB(VertexAttribDivisor, 440, VertexAttribDivisor@8) + GL_STUB(LoadTransposeMatrixdARB, 441, LoadTransposeMatrixdARB@4) + GL_STUB(LoadTransposeMatrixfARB, 442, LoadTransposeMatrixfARB@4) + GL_STUB(MultTransposeMatrixdARB, 443, MultTransposeMatrixdARB@4) + GL_STUB(MultTransposeMatrixfARB, 444, MultTransposeMatrixfARB@4) + GL_STUB(SampleCoverageARB, 445, SampleCoverageARB@8) + GL_STUB(CompressedTexImage1DARB, 446, CompressedTexImage1DARB@28) + GL_STUB(CompressedTexImage2DARB, 447, CompressedTexImage2DARB@32) + GL_STUB(CompressedTexImage3DARB, 448, CompressedTexImage3DARB@36) + GL_STUB(CompressedTexSubImage1DARB, 449, CompressedTexSubImage1DARB@28) + GL_STUB(CompressedTexSubImage2DARB, 450, CompressedTexSubImage2DARB@36) + GL_STUB(CompressedTexSubImage3DARB, 451, CompressedTexSubImage3DARB@44) + GL_STUB(GetCompressedTexImageARB, 452, GetCompressedTexImageARB@12) + GL_STUB(DisableVertexAttribArrayARB, 453, DisableVertexAttribArrayARB@4) + GL_STUB(EnableVertexAttribArrayARB, 454, EnableVertexAttribArrayARB@4) + GL_STUB(GetProgramEnvParameterdvARB, 455, GetProgramEnvParameterdvARB@12) + GL_STUB(GetProgramEnvParameterfvARB, 456, GetProgramEnvParameterfvARB@12) + GL_STUB(GetProgramLocalParameterdvARB, 457, GetProgramLocalParameterdvARB@12) + GL_STUB(GetProgramLocalParameterfvARB, 458, GetProgramLocalParameterfvARB@12) + GL_STUB(GetProgramStringARB, 459, GetProgramStringARB@12) + GL_STUB(GetProgramivARB, 460, GetProgramivARB@12) + GL_STUB(GetVertexAttribdvARB, 461, GetVertexAttribdvARB@12) + GL_STUB(GetVertexAttribfvARB, 462, GetVertexAttribfvARB@12) + GL_STUB(GetVertexAttribivARB, 463, GetVertexAttribivARB@12) + GL_STUB(ProgramEnvParameter4dARB, 464, ProgramEnvParameter4dARB@40) + GL_STUB(ProgramEnvParameter4dvARB, 465, ProgramEnvParameter4dvARB@12) + GL_STUB(ProgramEnvParameter4fARB, 466, ProgramEnvParameter4fARB@24) + GL_STUB(ProgramEnvParameter4fvARB, 467, ProgramEnvParameter4fvARB@12) + GL_STUB(ProgramLocalParameter4dARB, 468, ProgramLocalParameter4dARB@40) + GL_STUB(ProgramLocalParameter4dvARB, 469, ProgramLocalParameter4dvARB@12) + GL_STUB(ProgramLocalParameter4fARB, 470, ProgramLocalParameter4fARB@24) + GL_STUB(ProgramLocalParameter4fvARB, 471, ProgramLocalParameter4fvARB@12) + GL_STUB(ProgramStringARB, 472, ProgramStringARB@16) + GL_STUB(VertexAttrib1dARB, 473, VertexAttrib1dARB@12) + GL_STUB(VertexAttrib1dvARB, 474, VertexAttrib1dvARB@8) + GL_STUB(VertexAttrib1fARB, 475, VertexAttrib1fARB@8) + GL_STUB(VertexAttrib1fvARB, 476, VertexAttrib1fvARB@8) + GL_STUB(VertexAttrib1sARB, 477, VertexAttrib1sARB@8) + GL_STUB(VertexAttrib1svARB, 478, VertexAttrib1svARB@8) + GL_STUB(VertexAttrib2dARB, 479, VertexAttrib2dARB@20) + GL_STUB(VertexAttrib2dvARB, 480, VertexAttrib2dvARB@8) + GL_STUB(VertexAttrib2fARB, 481, VertexAttrib2fARB@12) + GL_STUB(VertexAttrib2fvARB, 482, VertexAttrib2fvARB@8) + GL_STUB(VertexAttrib2sARB, 483, VertexAttrib2sARB@12) + GL_STUB(VertexAttrib2svARB, 484, VertexAttrib2svARB@8) + GL_STUB(VertexAttrib3dARB, 485, VertexAttrib3dARB@28) + GL_STUB(VertexAttrib3dvARB, 486, VertexAttrib3dvARB@8) + GL_STUB(VertexAttrib3fARB, 487, VertexAttrib3fARB@16) + GL_STUB(VertexAttrib3fvARB, 488, VertexAttrib3fvARB@8) + GL_STUB(VertexAttrib3sARB, 489, VertexAttrib3sARB@16) + GL_STUB(VertexAttrib3svARB, 490, VertexAttrib3svARB@8) + GL_STUB(VertexAttrib4NbvARB, 491, VertexAttrib4NbvARB@8) + GL_STUB(VertexAttrib4NivARB, 492, VertexAttrib4NivARB@8) + GL_STUB(VertexAttrib4NsvARB, 493, VertexAttrib4NsvARB@8) + GL_STUB(VertexAttrib4NubARB, 494, VertexAttrib4NubARB@20) + GL_STUB(VertexAttrib4NubvARB, 495, VertexAttrib4NubvARB@8) + GL_STUB(VertexAttrib4NuivARB, 496, VertexAttrib4NuivARB@8) + GL_STUB(VertexAttrib4NusvARB, 497, VertexAttrib4NusvARB@8) + GL_STUB(VertexAttrib4bvARB, 498, VertexAttrib4bvARB@8) + GL_STUB(VertexAttrib4dARB, 499, VertexAttrib4dARB@36) + GL_STUB(VertexAttrib4dvARB, 500, VertexAttrib4dvARB@8) + GL_STUB(VertexAttrib4fARB, 501, VertexAttrib4fARB@20) + GL_STUB(VertexAttrib4fvARB, 502, VertexAttrib4fvARB@8) + GL_STUB(VertexAttrib4ivARB, 503, VertexAttrib4ivARB@8) + GL_STUB(VertexAttrib4sARB, 504, VertexAttrib4sARB@20) + GL_STUB(VertexAttrib4svARB, 505, VertexAttrib4svARB@8) + GL_STUB(VertexAttrib4ubvARB, 506, VertexAttrib4ubvARB@8) + GL_STUB(VertexAttrib4uivARB, 507, VertexAttrib4uivARB@8) + GL_STUB(VertexAttrib4usvARB, 508, VertexAttrib4usvARB@8) + GL_STUB(VertexAttribPointerARB, 509, VertexAttribPointerARB@24) + GL_STUB(BindBufferARB, 510, BindBufferARB@8) + GL_STUB(BufferDataARB, 511, BufferDataARB@16) + GL_STUB(BufferSubDataARB, 512, BufferSubDataARB@16) + GL_STUB(DeleteBuffersARB, 513, DeleteBuffersARB@8) + GL_STUB(GenBuffersARB, 514, GenBuffersARB@8) + GL_STUB(GetBufferParameterivARB, 515, GetBufferParameterivARB@12) + GL_STUB(GetBufferPointervARB, 516, GetBufferPointervARB@12) + GL_STUB(GetBufferSubDataARB, 517, GetBufferSubDataARB@16) + GL_STUB(IsBufferARB, 518, IsBufferARB@4) + GL_STUB(MapBufferARB, 519, MapBufferARB@8) + GL_STUB(UnmapBufferARB, 520, UnmapBufferARB@4) + GL_STUB(BeginQueryARB, 521, BeginQueryARB@8) + GL_STUB(DeleteQueriesARB, 522, DeleteQueriesARB@8) + GL_STUB(EndQueryARB, 523, EndQueryARB@4) + GL_STUB(GenQueriesARB, 524, GenQueriesARB@8) + GL_STUB(GetQueryObjectivARB, 525, GetQueryObjectivARB@12) + GL_STUB(GetQueryObjectuivARB, 526, GetQueryObjectuivARB@12) + GL_STUB(GetQueryivARB, 527, GetQueryivARB@12) + GL_STUB(IsQueryARB, 528, IsQueryARB@4) + GL_STUB(AttachObjectARB, 529, AttachObjectARB@8) + GL_STUB(CompileShaderARB, 530, CompileShaderARB@4) + GL_STUB(CreateProgramObjectARB, 531, CreateProgramObjectARB@0) + GL_STUB(CreateShaderObjectARB, 532, CreateShaderObjectARB@4) + GL_STUB(DeleteObjectARB, 533, DeleteObjectARB@4) + GL_STUB(DetachObjectARB, 534, DetachObjectARB@8) + GL_STUB(GetActiveUniformARB, 535, GetActiveUniformARB@28) + GL_STUB(GetAttachedObjectsARB, 536, GetAttachedObjectsARB@16) + GL_STUB(GetHandleARB, 537, GetHandleARB@4) + GL_STUB(GetInfoLogARB, 538, GetInfoLogARB@16) + GL_STUB(GetObjectParameterfvARB, 539, GetObjectParameterfvARB@12) + GL_STUB(GetObjectParameterivARB, 540, GetObjectParameterivARB@12) + GL_STUB(GetShaderSourceARB, 541, GetShaderSourceARB@16) + GL_STUB(GetUniformLocationARB, 542, GetUniformLocationARB@8) + GL_STUB(GetUniformfvARB, 543, GetUniformfvARB@12) + GL_STUB(GetUniformivARB, 544, GetUniformivARB@12) + GL_STUB(LinkProgramARB, 545, LinkProgramARB@4) + GL_STUB(ShaderSourceARB, 546, ShaderSourceARB@16) + GL_STUB(Uniform1fARB, 547, Uniform1fARB@8) + GL_STUB(Uniform1fvARB, 548, Uniform1fvARB@12) + GL_STUB(Uniform1iARB, 549, Uniform1iARB@8) + GL_STUB(Uniform1ivARB, 550, Uniform1ivARB@12) + GL_STUB(Uniform2fARB, 551, Uniform2fARB@12) + GL_STUB(Uniform2fvARB, 552, Uniform2fvARB@12) + GL_STUB(Uniform2iARB, 553, Uniform2iARB@12) + GL_STUB(Uniform2ivARB, 554, Uniform2ivARB@12) + GL_STUB(Uniform3fARB, 555, Uniform3fARB@16) + GL_STUB(Uniform3fvARB, 556, Uniform3fvARB@12) + GL_STUB(Uniform3iARB, 557, Uniform3iARB@16) + GL_STUB(Uniform3ivARB, 558, Uniform3ivARB@12) + GL_STUB(Uniform4fARB, 559, Uniform4fARB@20) + GL_STUB(Uniform4fvARB, 560, Uniform4fvARB@12) + GL_STUB(Uniform4iARB, 561, Uniform4iARB@20) + GL_STUB(Uniform4ivARB, 562, Uniform4ivARB@12) + GL_STUB(UniformMatrix2fvARB, 563, UniformMatrix2fvARB@16) + GL_STUB(UniformMatrix3fvARB, 564, UniformMatrix3fvARB@16) + GL_STUB(UniformMatrix4fvARB, 565, UniformMatrix4fvARB@16) + GL_STUB(UseProgramObjectARB, 566, UseProgramObjectARB@4) + GL_STUB(ValidateProgramARB, 567, ValidateProgramARB@4) + GL_STUB(BindAttribLocationARB, 568, BindAttribLocationARB@12) + GL_STUB(GetActiveAttribARB, 569, GetActiveAttribARB@28) + GL_STUB(GetAttribLocationARB, 570, GetAttribLocationARB@8) + GL_STUB(DrawBuffersARB, 571, DrawBuffersARB@8) + GL_STUB(DrawArraysInstancedARB, 572, DrawArraysInstancedARB@16) + GL_STUB(DrawElementsInstancedARB, 573, DrawElementsInstancedARB@20) + GL_STUB(RenderbufferStorageMultisample, 574, RenderbufferStorageMultisample@20) + GL_STUB(FramebufferTextureARB, 575, FramebufferTextureARB@16) + GL_STUB(FramebufferTextureFaceARB, 576, FramebufferTextureFaceARB@20) + GL_STUB(ProgramParameteriARB, 577, ProgramParameteriARB@12) + GL_STUB(FlushMappedBufferRange, 578, FlushMappedBufferRange@12) + GL_STUB(MapBufferRange, 579, MapBufferRange@16) + GL_STUB(BindVertexArray, 580, BindVertexArray@4) + GL_STUB(GenVertexArrays, 581, GenVertexArrays@8) + GL_STUB(CopyBufferSubData, 582, CopyBufferSubData@20) + GL_STUB(ClientWaitSync, 583, ClientWaitSync@12) + GL_STUB(DeleteSync, 584, DeleteSync@4) + GL_STUB(FenceSync, 585, FenceSync@8) + GL_STUB(GetInteger64v, 586, GetInteger64v@8) + GL_STUB(GetSynciv, 587, GetSynciv@20) + GL_STUB(IsSync, 588, IsSync@4) + GL_STUB(WaitSync, 589, WaitSync@12) + GL_STUB(DrawElementsBaseVertex, 590, DrawElementsBaseVertex@20) + GL_STUB(DrawRangeElementsBaseVertex, 591, DrawRangeElementsBaseVertex@28) + GL_STUB(MultiDrawElementsBaseVertex, 592, MultiDrawElementsBaseVertex@24) + GL_STUB(BindTransformFeedback, 593, BindTransformFeedback@8) + GL_STUB(DeleteTransformFeedbacks, 594, DeleteTransformFeedbacks@8) + GL_STUB(DrawTransformFeedback, 595, DrawTransformFeedback@8) + GL_STUB(GenTransformFeedbacks, 596, GenTransformFeedbacks@8) + GL_STUB(IsTransformFeedback, 597, IsTransformFeedback@4) + GL_STUB(PauseTransformFeedback, 598, PauseTransformFeedback@0) + GL_STUB(ResumeTransformFeedback, 599, ResumeTransformFeedback@0) + GL_STUB(PolygonOffsetEXT, 600, PolygonOffsetEXT@8) + GL_STUB(_dispatch_stub_601, 601, _dispatch_stub_601@8) + HIDDEN(GL_PREFIX(_dispatch_stub_601, _dispatch_stub_601@8)) + GL_STUB(_dispatch_stub_602, 602, _dispatch_stub_602@8) + HIDDEN(GL_PREFIX(_dispatch_stub_602, _dispatch_stub_602@8)) + GL_STUB(_dispatch_stub_603, 603, _dispatch_stub_603@8) + HIDDEN(GL_PREFIX(_dispatch_stub_603, _dispatch_stub_603@8)) + GL_STUB(_dispatch_stub_604, 604, _dispatch_stub_604@8) + HIDDEN(GL_PREFIX(_dispatch_stub_604, _dispatch_stub_604@8)) + GL_STUB(_dispatch_stub_605, 605, _dispatch_stub_605@8) + HIDDEN(GL_PREFIX(_dispatch_stub_605, _dispatch_stub_605@8)) + GL_STUB(_dispatch_stub_606, 606, _dispatch_stub_606@8) + HIDDEN(GL_PREFIX(_dispatch_stub_606, _dispatch_stub_606@8)) + GL_STUB(_dispatch_stub_607, 607, _dispatch_stub_607@8) + HIDDEN(GL_PREFIX(_dispatch_stub_607, _dispatch_stub_607@8)) + GL_STUB(_dispatch_stub_608, 608, _dispatch_stub_608@4) + HIDDEN(GL_PREFIX(_dispatch_stub_608, _dispatch_stub_608@4)) + GL_STUB(ColorPointerEXT, 609, ColorPointerEXT@20) + GL_STUB(EdgeFlagPointerEXT, 610, EdgeFlagPointerEXT@12) + GL_STUB(IndexPointerEXT, 611, IndexPointerEXT@16) + GL_STUB(NormalPointerEXT, 612, NormalPointerEXT@16) + GL_STUB(TexCoordPointerEXT, 613, TexCoordPointerEXT@20) + GL_STUB(VertexPointerEXT, 614, VertexPointerEXT@20) + GL_STUB(PointParameterfEXT, 615, PointParameterfEXT@8) + GL_STUB(PointParameterfvEXT, 616, PointParameterfvEXT@8) + GL_STUB(LockArraysEXT, 617, LockArraysEXT@8) + GL_STUB(UnlockArraysEXT, 618, UnlockArraysEXT@0) + GL_STUB(SecondaryColor3bEXT, 619, SecondaryColor3bEXT@12) + GL_STUB(SecondaryColor3bvEXT, 620, SecondaryColor3bvEXT@4) + GL_STUB(SecondaryColor3dEXT, 621, SecondaryColor3dEXT@24) + GL_STUB(SecondaryColor3dvEXT, 622, SecondaryColor3dvEXT@4) + GL_STUB(SecondaryColor3fEXT, 623, SecondaryColor3fEXT@12) + GL_STUB(SecondaryColor3fvEXT, 624, SecondaryColor3fvEXT@4) + GL_STUB(SecondaryColor3iEXT, 625, SecondaryColor3iEXT@12) + GL_STUB(SecondaryColor3ivEXT, 626, SecondaryColor3ivEXT@4) + GL_STUB(SecondaryColor3sEXT, 627, SecondaryColor3sEXT@12) + GL_STUB(SecondaryColor3svEXT, 628, SecondaryColor3svEXT@4) + GL_STUB(SecondaryColor3ubEXT, 629, SecondaryColor3ubEXT@12) + GL_STUB(SecondaryColor3ubvEXT, 630, SecondaryColor3ubvEXT@4) + GL_STUB(SecondaryColor3uiEXT, 631, SecondaryColor3uiEXT@12) + GL_STUB(SecondaryColor3uivEXT, 632, SecondaryColor3uivEXT@4) + GL_STUB(SecondaryColor3usEXT, 633, SecondaryColor3usEXT@12) + GL_STUB(SecondaryColor3usvEXT, 634, SecondaryColor3usvEXT@4) + GL_STUB(SecondaryColorPointerEXT, 635, SecondaryColorPointerEXT@16) + GL_STUB(MultiDrawArraysEXT, 636, MultiDrawArraysEXT@16) + GL_STUB(MultiDrawElementsEXT, 637, MultiDrawElementsEXT@20) + GL_STUB(FogCoordPointerEXT, 638, FogCoordPointerEXT@12) + GL_STUB(FogCoorddEXT, 639, FogCoorddEXT@8) + GL_STUB(FogCoorddvEXT, 640, FogCoorddvEXT@4) + GL_STUB(FogCoordfEXT, 641, FogCoordfEXT@4) + GL_STUB(FogCoordfvEXT, 642, FogCoordfvEXT@4) + GL_STUB(_dispatch_stub_643, 643, _dispatch_stub_643@4) + HIDDEN(GL_PREFIX(_dispatch_stub_643, _dispatch_stub_643@4)) + GL_STUB(BlendFuncSeparateEXT, 644, BlendFuncSeparateEXT@16) + GL_STUB(FlushVertexArrayRangeNV, 645, FlushVertexArrayRangeNV@0) + GL_STUB(VertexArrayRangeNV, 646, VertexArrayRangeNV@8) + GL_STUB(CombinerInputNV, 647, CombinerInputNV@24) + GL_STUB(CombinerOutputNV, 648, CombinerOutputNV@40) + GL_STUB(CombinerParameterfNV, 649, CombinerParameterfNV@8) + GL_STUB(CombinerParameterfvNV, 650, CombinerParameterfvNV@8) + GL_STUB(CombinerParameteriNV, 651, CombinerParameteriNV@8) + GL_STUB(CombinerParameterivNV, 652, CombinerParameterivNV@8) + GL_STUB(FinalCombinerInputNV, 653, FinalCombinerInputNV@16) + GL_STUB(GetCombinerInputParameterfvNV, 654, GetCombinerInputParameterfvNV@20) + GL_STUB(GetCombinerInputParameterivNV, 655, GetCombinerInputParameterivNV@20) + GL_STUB(GetCombinerOutputParameterfvNV, 656, GetCombinerOutputParameterfvNV@16) + GL_STUB(GetCombinerOutputParameterivNV, 657, GetCombinerOutputParameterivNV@16) + GL_STUB(GetFinalCombinerInputParameterfvNV, 658, GetFinalCombinerInputParameterfvNV@12) + GL_STUB(GetFinalCombinerInputParameterivNV, 659, GetFinalCombinerInputParameterivNV@12) + GL_STUB(ResizeBuffersMESA, 660, ResizeBuffersMESA@0) + GL_STUB(WindowPos2dMESA, 661, WindowPos2dMESA@16) + GL_STUB(WindowPos2dvMESA, 662, WindowPos2dvMESA@4) + GL_STUB(WindowPos2fMESA, 663, WindowPos2fMESA@8) + GL_STUB(WindowPos2fvMESA, 664, WindowPos2fvMESA@4) + GL_STUB(WindowPos2iMESA, 665, WindowPos2iMESA@8) + GL_STUB(WindowPos2ivMESA, 666, WindowPos2ivMESA@4) + GL_STUB(WindowPos2sMESA, 667, WindowPos2sMESA@8) + GL_STUB(WindowPos2svMESA, 668, WindowPos2svMESA@4) + GL_STUB(WindowPos3dMESA, 669, WindowPos3dMESA@24) + GL_STUB(WindowPos3dvMESA, 670, WindowPos3dvMESA@4) + GL_STUB(WindowPos3fMESA, 671, WindowPos3fMESA@12) + GL_STUB(WindowPos3fvMESA, 672, WindowPos3fvMESA@4) + GL_STUB(WindowPos3iMESA, 673, WindowPos3iMESA@12) + GL_STUB(WindowPos3ivMESA, 674, WindowPos3ivMESA@4) + GL_STUB(WindowPos3sMESA, 675, WindowPos3sMESA@12) + GL_STUB(WindowPos3svMESA, 676, WindowPos3svMESA@4) + GL_STUB(WindowPos4dMESA, 677, WindowPos4dMESA@32) + GL_STUB(WindowPos4dvMESA, 678, WindowPos4dvMESA@4) + GL_STUB(WindowPos4fMESA, 679, WindowPos4fMESA@16) + GL_STUB(WindowPos4fvMESA, 680, WindowPos4fvMESA@4) + GL_STUB(WindowPos4iMESA, 681, WindowPos4iMESA@16) + GL_STUB(WindowPos4ivMESA, 682, WindowPos4ivMESA@4) + GL_STUB(WindowPos4sMESA, 683, WindowPos4sMESA@16) + GL_STUB(WindowPos4svMESA, 684, WindowPos4svMESA@4) + GL_STUB(_dispatch_stub_685, 685, _dispatch_stub_685@20) + HIDDEN(GL_PREFIX(_dispatch_stub_685, _dispatch_stub_685@20)) + GL_STUB(_dispatch_stub_686, 686, _dispatch_stub_686@24) + HIDDEN(GL_PREFIX(_dispatch_stub_686, _dispatch_stub_686@24)) + GL_STUB(_dispatch_stub_687, 687, _dispatch_stub_687@8) + HIDDEN(GL_PREFIX(_dispatch_stub_687, _dispatch_stub_687@8)) + GL_STUB(_dispatch_stub_688, 688, _dispatch_stub_688@4) + HIDDEN(GL_PREFIX(_dispatch_stub_688, _dispatch_stub_688@4)) + GL_STUB(_dispatch_stub_689, 689, _dispatch_stub_689@8) + HIDDEN(GL_PREFIX(_dispatch_stub_689, _dispatch_stub_689@8)) + GL_STUB(_dispatch_stub_690, 690, _dispatch_stub_690@12) + HIDDEN(GL_PREFIX(_dispatch_stub_690, _dispatch_stub_690@12)) + GL_STUB(_dispatch_stub_691, 691, _dispatch_stub_691@4) + HIDDEN(GL_PREFIX(_dispatch_stub_691, _dispatch_stub_691@4)) + GL_STUB(_dispatch_stub_692, 692, _dispatch_stub_692@8) + HIDDEN(GL_PREFIX(_dispatch_stub_692, _dispatch_stub_692@8)) + GL_STUB(_dispatch_stub_693, 693, _dispatch_stub_693@4) + HIDDEN(GL_PREFIX(_dispatch_stub_693, _dispatch_stub_693@4)) + GL_STUB(AreProgramsResidentNV, 694, AreProgramsResidentNV@12) + GL_STUB(BindProgramNV, 695, BindProgramNV@8) + GL_STUB(DeleteProgramsNV, 696, DeleteProgramsNV@8) + GL_STUB(ExecuteProgramNV, 697, ExecuteProgramNV@12) + GL_STUB(GenProgramsNV, 698, GenProgramsNV@8) + GL_STUB(GetProgramParameterdvNV, 699, GetProgramParameterdvNV@16) + GL_STUB(GetProgramParameterfvNV, 700, GetProgramParameterfvNV@16) + GL_STUB(GetProgramStringNV, 701, GetProgramStringNV@12) + GL_STUB(GetProgramivNV, 702, GetProgramivNV@12) + GL_STUB(GetTrackMatrixivNV, 703, GetTrackMatrixivNV@16) + GL_STUB(GetVertexAttribPointervNV, 704, GetVertexAttribPointervNV@12) + GL_STUB(GetVertexAttribdvNV, 705, GetVertexAttribdvNV@12) + GL_STUB(GetVertexAttribfvNV, 706, GetVertexAttribfvNV@12) + GL_STUB(GetVertexAttribivNV, 707, GetVertexAttribivNV@12) + GL_STUB(IsProgramNV, 708, IsProgramNV@4) + GL_STUB(LoadProgramNV, 709, LoadProgramNV@16) + GL_STUB(ProgramParameters4dvNV, 710, ProgramParameters4dvNV@16) + GL_STUB(ProgramParameters4fvNV, 711, ProgramParameters4fvNV@16) + GL_STUB(RequestResidentProgramsNV, 712, RequestResidentProgramsNV@8) + GL_STUB(TrackMatrixNV, 713, TrackMatrixNV@16) + GL_STUB(VertexAttrib1dNV, 714, VertexAttrib1dNV@12) + GL_STUB(VertexAttrib1dvNV, 715, VertexAttrib1dvNV@8) + GL_STUB(VertexAttrib1fNV, 716, VertexAttrib1fNV@8) + GL_STUB(VertexAttrib1fvNV, 717, VertexAttrib1fvNV@8) + GL_STUB(VertexAttrib1sNV, 718, VertexAttrib1sNV@8) + GL_STUB(VertexAttrib1svNV, 719, VertexAttrib1svNV@8) + GL_STUB(VertexAttrib2dNV, 720, VertexAttrib2dNV@20) + GL_STUB(VertexAttrib2dvNV, 721, VertexAttrib2dvNV@8) + GL_STUB(VertexAttrib2fNV, 722, VertexAttrib2fNV@12) + GL_STUB(VertexAttrib2fvNV, 723, VertexAttrib2fvNV@8) + GL_STUB(VertexAttrib2sNV, 724, VertexAttrib2sNV@12) + GL_STUB(VertexAttrib2svNV, 725, VertexAttrib2svNV@8) + GL_STUB(VertexAttrib3dNV, 726, VertexAttrib3dNV@28) + GL_STUB(VertexAttrib3dvNV, 727, VertexAttrib3dvNV@8) + GL_STUB(VertexAttrib3fNV, 728, VertexAttrib3fNV@16) + GL_STUB(VertexAttrib3fvNV, 729, VertexAttrib3fvNV@8) + GL_STUB(VertexAttrib3sNV, 730, VertexAttrib3sNV@16) + GL_STUB(VertexAttrib3svNV, 731, VertexAttrib3svNV@8) + GL_STUB(VertexAttrib4dNV, 732, VertexAttrib4dNV@36) + GL_STUB(VertexAttrib4dvNV, 733, VertexAttrib4dvNV@8) + GL_STUB(VertexAttrib4fNV, 734, VertexAttrib4fNV@20) + GL_STUB(VertexAttrib4fvNV, 735, VertexAttrib4fvNV@8) + GL_STUB(VertexAttrib4sNV, 736, VertexAttrib4sNV@20) + GL_STUB(VertexAttrib4svNV, 737, VertexAttrib4svNV@8) + GL_STUB(VertexAttrib4ubNV, 738, VertexAttrib4ubNV@20) + GL_STUB(VertexAttrib4ubvNV, 739, VertexAttrib4ubvNV@8) + GL_STUB(VertexAttribPointerNV, 740, VertexAttribPointerNV@20) + GL_STUB(VertexAttribs1dvNV, 741, VertexAttribs1dvNV@12) + GL_STUB(VertexAttribs1fvNV, 742, VertexAttribs1fvNV@12) + GL_STUB(VertexAttribs1svNV, 743, VertexAttribs1svNV@12) + GL_STUB(VertexAttribs2dvNV, 744, VertexAttribs2dvNV@12) + GL_STUB(VertexAttribs2fvNV, 745, VertexAttribs2fvNV@12) + GL_STUB(VertexAttribs2svNV, 746, VertexAttribs2svNV@12) + GL_STUB(VertexAttribs3dvNV, 747, VertexAttribs3dvNV@12) + GL_STUB(VertexAttribs3fvNV, 748, VertexAttribs3fvNV@12) + GL_STUB(VertexAttribs3svNV, 749, VertexAttribs3svNV@12) + GL_STUB(VertexAttribs4dvNV, 750, VertexAttribs4dvNV@12) + GL_STUB(VertexAttribs4fvNV, 751, VertexAttribs4fvNV@12) + GL_STUB(VertexAttribs4svNV, 752, VertexAttribs4svNV@12) + GL_STUB(VertexAttribs4ubvNV, 753, VertexAttribs4ubvNV@12) + GL_STUB(GetTexBumpParameterfvATI, 754, GetTexBumpParameterfvATI@8) + GL_STUB(GetTexBumpParameterivATI, 755, GetTexBumpParameterivATI@8) + GL_STUB(TexBumpParameterfvATI, 756, TexBumpParameterfvATI@8) + GL_STUB(TexBumpParameterivATI, 757, TexBumpParameterivATI@8) + GL_STUB(AlphaFragmentOp1ATI, 758, AlphaFragmentOp1ATI@24) + GL_STUB(AlphaFragmentOp2ATI, 759, AlphaFragmentOp2ATI@36) + GL_STUB(AlphaFragmentOp3ATI, 760, AlphaFragmentOp3ATI@48) + GL_STUB(BeginFragmentShaderATI, 761, BeginFragmentShaderATI@0) + GL_STUB(BindFragmentShaderATI, 762, BindFragmentShaderATI@4) + GL_STUB(ColorFragmentOp1ATI, 763, ColorFragmentOp1ATI@28) + GL_STUB(ColorFragmentOp2ATI, 764, ColorFragmentOp2ATI@40) + GL_STUB(ColorFragmentOp3ATI, 765, ColorFragmentOp3ATI@52) + GL_STUB(DeleteFragmentShaderATI, 766, DeleteFragmentShaderATI@4) + GL_STUB(EndFragmentShaderATI, 767, EndFragmentShaderATI@0) + GL_STUB(GenFragmentShadersATI, 768, GenFragmentShadersATI@4) + GL_STUB(PassTexCoordATI, 769, PassTexCoordATI@12) + GL_STUB(SampleMapATI, 770, SampleMapATI@12) + GL_STUB(SetFragmentShaderConstantATI, 771, SetFragmentShaderConstantATI@8) + GL_STUB(PointParameteriNV, 772, PointParameteriNV@8) + GL_STUB(PointParameterivNV, 773, PointParameterivNV@8) + GL_STUB(_dispatch_stub_774, 774, _dispatch_stub_774@4) + HIDDEN(GL_PREFIX(_dispatch_stub_774, _dispatch_stub_774@4)) + GL_STUB(_dispatch_stub_775, 775, _dispatch_stub_775@4) + HIDDEN(GL_PREFIX(_dispatch_stub_775, _dispatch_stub_775@4)) + GL_STUB(_dispatch_stub_776, 776, _dispatch_stub_776@8) + HIDDEN(GL_PREFIX(_dispatch_stub_776, _dispatch_stub_776@8)) + GL_STUB(_dispatch_stub_777, 777, _dispatch_stub_777@8) HIDDEN(GL_PREFIX(_dispatch_stub_777, _dispatch_stub_777@8)) - GL_STUB(BindFramebufferEXT, _gloffset_BindFramebufferEXT, BindFramebufferEXT@8) - GL_STUB(BindRenderbufferEXT, _gloffset_BindRenderbufferEXT, BindRenderbufferEXT@8) - GL_STUB(CheckFramebufferStatusEXT, _gloffset_CheckFramebufferStatusEXT, CheckFramebufferStatusEXT@4) - GL_STUB(DeleteFramebuffersEXT, _gloffset_DeleteFramebuffersEXT, DeleteFramebuffersEXT@8) - GL_STUB(DeleteRenderbuffersEXT, _gloffset_DeleteRenderbuffersEXT, DeleteRenderbuffersEXT@8) - GL_STUB(FramebufferRenderbufferEXT, _gloffset_FramebufferRenderbufferEXT, FramebufferRenderbufferEXT@16) - GL_STUB(FramebufferTexture1DEXT, _gloffset_FramebufferTexture1DEXT, FramebufferTexture1DEXT@20) - GL_STUB(FramebufferTexture2DEXT, _gloffset_FramebufferTexture2DEXT, FramebufferTexture2DEXT@20) - GL_STUB(FramebufferTexture3DEXT, _gloffset_FramebufferTexture3DEXT, FramebufferTexture3DEXT@24) - GL_STUB(GenFramebuffersEXT, _gloffset_GenFramebuffersEXT, GenFramebuffersEXT@8) - GL_STUB(GenRenderbuffersEXT, _gloffset_GenRenderbuffersEXT, GenRenderbuffersEXT@8) - GL_STUB(GenerateMipmapEXT, _gloffset_GenerateMipmapEXT, GenerateMipmapEXT@4) - GL_STUB(GetFramebufferAttachmentParameterivEXT, _gloffset_GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameterivEXT@16) - GL_STUB(GetRenderbufferParameterivEXT, _gloffset_GetRenderbufferParameterivEXT, GetRenderbufferParameterivEXT@12) - GL_STUB(IsFramebufferEXT, _gloffset_IsFramebufferEXT, IsFramebufferEXT@4) - GL_STUB(IsRenderbufferEXT, _gloffset_IsRenderbufferEXT, IsRenderbufferEXT@4) - GL_STUB(RenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT, RenderbufferStorageEXT@16) - GL_STUB(_dispatch_stub_795, _gloffset_BlitFramebufferEXT, _dispatch_stub_795@40) - HIDDEN(GL_PREFIX(_dispatch_stub_795, _dispatch_stub_795@40)) - GL_STUB(_dispatch_stub_796, _gloffset_BufferParameteriAPPLE, _dispatch_stub_796@12) - HIDDEN(GL_PREFIX(_dispatch_stub_796, _dispatch_stub_796@12)) - GL_STUB(_dispatch_stub_797, _gloffset_FlushMappedBufferRangeAPPLE, _dispatch_stub_797@12) - HIDDEN(GL_PREFIX(_dispatch_stub_797, _dispatch_stub_797@12)) - GL_STUB(FramebufferTextureLayerEXT, _gloffset_FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20) - GL_STUB(ColorMaskIndexedEXT, _gloffset_ColorMaskIndexedEXT, ColorMaskIndexedEXT@20) - GL_STUB(DisableIndexedEXT, _gloffset_DisableIndexedEXT, DisableIndexedEXT@8) - GL_STUB(EnableIndexedEXT, _gloffset_EnableIndexedEXT, EnableIndexedEXT@8) - GL_STUB(GetBooleanIndexedvEXT, _gloffset_GetBooleanIndexedvEXT, GetBooleanIndexedvEXT@12) - GL_STUB(GetIntegerIndexedvEXT, _gloffset_GetIntegerIndexedvEXT, GetIntegerIndexedvEXT@12) - GL_STUB(IsEnabledIndexedEXT, _gloffset_IsEnabledIndexedEXT, IsEnabledIndexedEXT@8) - GL_STUB(BeginConditionalRenderNV, _gloffset_BeginConditionalRenderNV, BeginConditionalRenderNV@8) - GL_STUB(EndConditionalRenderNV, _gloffset_EndConditionalRenderNV, EndConditionalRenderNV@0) - GL_STUB(BeginTransformFeedbackEXT, _gloffset_BeginTransformFeedbackEXT, BeginTransformFeedbackEXT@4) - GL_STUB(BindBufferBaseEXT, _gloffset_BindBufferBaseEXT, BindBufferBaseEXT@12) - GL_STUB(BindBufferOffsetEXT, _gloffset_BindBufferOffsetEXT, BindBufferOffsetEXT@16) - GL_STUB(BindBufferRangeEXT, _gloffset_BindBufferRangeEXT, BindBufferRangeEXT@20) - GL_STUB(EndTransformFeedbackEXT, _gloffset_EndTransformFeedbackEXT, EndTransformFeedbackEXT@0) - GL_STUB(GetTransformFeedbackVaryingEXT, _gloffset_GetTransformFeedbackVaryingEXT, GetTransformFeedbackVaryingEXT@28) - GL_STUB(TransformFeedbackVaryingsEXT, _gloffset_TransformFeedbackVaryingsEXT, TransformFeedbackVaryingsEXT@16) - GL_STUB(ProvokingVertexEXT, _gloffset_ProvokingVertexEXT, ProvokingVertexEXT@4) - GL_STUB(_dispatch_stub_815, _gloffset_GetTexParameterPointervAPPLE, _dispatch_stub_815@12) - HIDDEN(GL_PREFIX(_dispatch_stub_815, _dispatch_stub_815@12)) - GL_STUB(_dispatch_stub_816, _gloffset_TextureRangeAPPLE, _dispatch_stub_816@12) - HIDDEN(GL_PREFIX(_dispatch_stub_816, _dispatch_stub_816@12)) - GL_STUB(GetObjectParameterivAPPLE, _gloffset_GetObjectParameterivAPPLE, GetObjectParameterivAPPLE@16) - GL_STUB(ObjectPurgeableAPPLE, _gloffset_ObjectPurgeableAPPLE, ObjectPurgeableAPPLE@12) - GL_STUB(ObjectUnpurgeableAPPLE, _gloffset_ObjectUnpurgeableAPPLE, ObjectUnpurgeableAPPLE@12) - GL_STUB(_dispatch_stub_820, _gloffset_StencilFuncSeparateATI, _dispatch_stub_820@16) - HIDDEN(GL_PREFIX(_dispatch_stub_820, _dispatch_stub_820@16)) - GL_STUB(_dispatch_stub_821, _gloffset_ProgramEnvParameters4fvEXT, _dispatch_stub_821@16) - HIDDEN(GL_PREFIX(_dispatch_stub_821, _dispatch_stub_821@16)) - GL_STUB(_dispatch_stub_822, _gloffset_ProgramLocalParameters4fvEXT, _dispatch_stub_822@16) - HIDDEN(GL_PREFIX(_dispatch_stub_822, _dispatch_stub_822@16)) - GL_STUB(_dispatch_stub_823, _gloffset_GetQueryObjecti64vEXT, _dispatch_stub_823@12) - HIDDEN(GL_PREFIX(_dispatch_stub_823, _dispatch_stub_823@12)) - GL_STUB(_dispatch_stub_824, _gloffset_GetQueryObjectui64vEXT, _dispatch_stub_824@12) - HIDDEN(GL_PREFIX(_dispatch_stub_824, _dispatch_stub_824@12)) - GL_STUB(EGLImageTargetRenderbufferStorageOES, _gloffset_EGLImageTargetRenderbufferStorageOES, EGLImageTargetRenderbufferStorageOES@8) - GL_STUB(EGLImageTargetTexture2DOES, _gloffset_EGLImageTargetTexture2DOES, EGLImageTargetTexture2DOES@8) - GL_STUB_ALIAS(ArrayElementEXT, _gloffset_ArrayElement, ArrayElementEXT@4, ArrayElement, ArrayElement@4) - GL_STUB_ALIAS(BindTextureEXT, _gloffset_BindTexture, BindTextureEXT@8, BindTexture, BindTexture@8) - GL_STUB_ALIAS(DrawArraysEXT, _gloffset_DrawArrays, DrawArraysEXT@12, DrawArrays, DrawArrays@12) + GL_STUB(_dispatch_stub_778, 778, _dispatch_stub_778@4) + HIDDEN(GL_PREFIX(_dispatch_stub_778, _dispatch_stub_778@4)) + GL_STUB(GetProgramNamedParameterdvNV, 779, GetProgramNamedParameterdvNV@16) + GL_STUB(GetProgramNamedParameterfvNV, 780, GetProgramNamedParameterfvNV@16) + GL_STUB(ProgramNamedParameter4dNV, 781, ProgramNamedParameter4dNV@44) + GL_STUB(ProgramNamedParameter4dvNV, 782, ProgramNamedParameter4dvNV@16) + GL_STUB(ProgramNamedParameter4fNV, 783, ProgramNamedParameter4fNV@28) + GL_STUB(ProgramNamedParameter4fvNV, 784, ProgramNamedParameter4fvNV@16) + GL_STUB(PrimitiveRestartIndexNV, 785, PrimitiveRestartIndexNV@4) + GL_STUB(PrimitiveRestartNV, 786, PrimitiveRestartNV@0) + GL_STUB(_dispatch_stub_787, 787, _dispatch_stub_787@16) + HIDDEN(GL_PREFIX(_dispatch_stub_787, _dispatch_stub_787@16)) + GL_STUB(_dispatch_stub_788, 788, _dispatch_stub_788@8) + HIDDEN(GL_PREFIX(_dispatch_stub_788, _dispatch_stub_788@8)) + GL_STUB(BindFramebufferEXT, 789, BindFramebufferEXT@8) + GL_STUB(BindRenderbufferEXT, 790, BindRenderbufferEXT@8) + GL_STUB(CheckFramebufferStatusEXT, 791, CheckFramebufferStatusEXT@4) + GL_STUB(DeleteFramebuffersEXT, 792, DeleteFramebuffersEXT@8) + GL_STUB(DeleteRenderbuffersEXT, 793, DeleteRenderbuffersEXT@8) + GL_STUB(FramebufferRenderbufferEXT, 794, FramebufferRenderbufferEXT@16) + GL_STUB(FramebufferTexture1DEXT, 795, FramebufferTexture1DEXT@20) + GL_STUB(FramebufferTexture2DEXT, 796, FramebufferTexture2DEXT@20) + GL_STUB(FramebufferTexture3DEXT, 797, FramebufferTexture3DEXT@24) + GL_STUB(GenFramebuffersEXT, 798, GenFramebuffersEXT@8) + GL_STUB(GenRenderbuffersEXT, 799, GenRenderbuffersEXT@8) + GL_STUB(GenerateMipmapEXT, 800, GenerateMipmapEXT@4) + GL_STUB(GetFramebufferAttachmentParameterivEXT, 801, GetFramebufferAttachmentParameterivEXT@16) + GL_STUB(GetRenderbufferParameterivEXT, 802, GetRenderbufferParameterivEXT@12) + GL_STUB(IsFramebufferEXT, 803, IsFramebufferEXT@4) + GL_STUB(IsRenderbufferEXT, 804, IsRenderbufferEXT@4) + GL_STUB(RenderbufferStorageEXT, 805, RenderbufferStorageEXT@16) + GL_STUB(_dispatch_stub_806, 806, _dispatch_stub_806@40) + HIDDEN(GL_PREFIX(_dispatch_stub_806, _dispatch_stub_806@40)) + GL_STUB(_dispatch_stub_807, 807, _dispatch_stub_807@12) + HIDDEN(GL_PREFIX(_dispatch_stub_807, _dispatch_stub_807@12)) + GL_STUB(_dispatch_stub_808, 808, _dispatch_stub_808@12) + HIDDEN(GL_PREFIX(_dispatch_stub_808, _dispatch_stub_808@12)) + GL_STUB(BindFragDataLocationEXT, 809, BindFragDataLocationEXT@12) + GL_STUB(GetFragDataLocationEXT, 810, GetFragDataLocationEXT@8) + GL_STUB(GetUniformuivEXT, 811, GetUniformuivEXT@12) + GL_STUB(GetVertexAttribIivEXT, 812, GetVertexAttribIivEXT@12) + GL_STUB(GetVertexAttribIuivEXT, 813, GetVertexAttribIuivEXT@12) + GL_STUB(Uniform1uiEXT, 814, Uniform1uiEXT@8) + GL_STUB(Uniform1uivEXT, 815, Uniform1uivEXT@12) + GL_STUB(Uniform2uiEXT, 816, Uniform2uiEXT@12) + GL_STUB(Uniform2uivEXT, 817, Uniform2uivEXT@12) + GL_STUB(Uniform3uiEXT, 818, Uniform3uiEXT@16) + GL_STUB(Uniform3uivEXT, 819, Uniform3uivEXT@12) + GL_STUB(Uniform4uiEXT, 820, Uniform4uiEXT@20) + GL_STUB(Uniform4uivEXT, 821, Uniform4uivEXT@12) + GL_STUB(VertexAttribI1iEXT, 822, VertexAttribI1iEXT@8) + GL_STUB(VertexAttribI1ivEXT, 823, VertexAttribI1ivEXT@8) + GL_STUB(VertexAttribI1uiEXT, 824, VertexAttribI1uiEXT@8) + GL_STUB(VertexAttribI1uivEXT, 825, VertexAttribI1uivEXT@8) + GL_STUB(VertexAttribI2iEXT, 826, VertexAttribI2iEXT@12) + GL_STUB(VertexAttribI2ivEXT, 827, VertexAttribI2ivEXT@8) + GL_STUB(VertexAttribI2uiEXT, 828, VertexAttribI2uiEXT@12) + GL_STUB(VertexAttribI2uivEXT, 829, VertexAttribI2uivEXT@8) + GL_STUB(VertexAttribI3iEXT, 830, VertexAttribI3iEXT@16) + GL_STUB(VertexAttribI3ivEXT, 831, VertexAttribI3ivEXT@8) + GL_STUB(VertexAttribI3uiEXT, 832, VertexAttribI3uiEXT@16) + GL_STUB(VertexAttribI3uivEXT, 833, VertexAttribI3uivEXT@8) + GL_STUB(VertexAttribI4bvEXT, 834, VertexAttribI4bvEXT@8) + GL_STUB(VertexAttribI4iEXT, 835, VertexAttribI4iEXT@20) + GL_STUB(VertexAttribI4ivEXT, 836, VertexAttribI4ivEXT@8) + GL_STUB(VertexAttribI4svEXT, 837, VertexAttribI4svEXT@8) + GL_STUB(VertexAttribI4ubvEXT, 838, VertexAttribI4ubvEXT@8) + GL_STUB(VertexAttribI4uiEXT, 839, VertexAttribI4uiEXT@20) + GL_STUB(VertexAttribI4uivEXT, 840, VertexAttribI4uivEXT@8) + GL_STUB(VertexAttribI4usvEXT, 841, VertexAttribI4usvEXT@8) + GL_STUB(VertexAttribIPointerEXT, 842, VertexAttribIPointerEXT@20) + GL_STUB(FramebufferTextureLayerEXT, 843, FramebufferTextureLayerEXT@20) + GL_STUB(ColorMaskIndexedEXT, 844, ColorMaskIndexedEXT@20) + GL_STUB(DisableIndexedEXT, 845, DisableIndexedEXT@8) + GL_STUB(EnableIndexedEXT, 846, EnableIndexedEXT@8) + GL_STUB(GetBooleanIndexedvEXT, 847, GetBooleanIndexedvEXT@12) + GL_STUB(GetIntegerIndexedvEXT, 848, GetIntegerIndexedvEXT@12) + GL_STUB(IsEnabledIndexedEXT, 849, IsEnabledIndexedEXT@8) + GL_STUB(ClearColorIiEXT, 850, ClearColorIiEXT@16) + GL_STUB(ClearColorIuiEXT, 851, ClearColorIuiEXT@16) + GL_STUB(GetTexParameterIivEXT, 852, GetTexParameterIivEXT@12) + GL_STUB(GetTexParameterIuivEXT, 853, GetTexParameterIuivEXT@12) + GL_STUB(TexParameterIivEXT, 854, TexParameterIivEXT@12) + GL_STUB(TexParameterIuivEXT, 855, TexParameterIuivEXT@12) + GL_STUB(BeginConditionalRenderNV, 856, BeginConditionalRenderNV@8) + GL_STUB(EndConditionalRenderNV, 857, EndConditionalRenderNV@0) + GL_STUB(BeginTransformFeedbackEXT, 858, BeginTransformFeedbackEXT@4) + GL_STUB(BindBufferBaseEXT, 859, BindBufferBaseEXT@12) + GL_STUB(BindBufferOffsetEXT, 860, BindBufferOffsetEXT@16) + GL_STUB(BindBufferRangeEXT, 861, BindBufferRangeEXT@20) + GL_STUB(EndTransformFeedbackEXT, 862, EndTransformFeedbackEXT@0) + GL_STUB(GetTransformFeedbackVaryingEXT, 863, GetTransformFeedbackVaryingEXT@28) + GL_STUB(TransformFeedbackVaryingsEXT, 864, TransformFeedbackVaryingsEXT@16) + GL_STUB(ProvokingVertexEXT, 865, ProvokingVertexEXT@4) + GL_STUB(_dispatch_stub_866, 866, _dispatch_stub_866@12) + HIDDEN(GL_PREFIX(_dispatch_stub_866, _dispatch_stub_866@12)) + GL_STUB(_dispatch_stub_867, 867, _dispatch_stub_867@12) + HIDDEN(GL_PREFIX(_dispatch_stub_867, _dispatch_stub_867@12)) + GL_STUB(GetObjectParameterivAPPLE, 868, GetObjectParameterivAPPLE@16) + GL_STUB(ObjectPurgeableAPPLE, 869, ObjectPurgeableAPPLE@12) + GL_STUB(ObjectUnpurgeableAPPLE, 870, ObjectUnpurgeableAPPLE@12) + GL_STUB(ActiveProgramEXT, 871, ActiveProgramEXT@4) + GL_STUB(CreateShaderProgramEXT, 872, CreateShaderProgramEXT@8) + GL_STUB(UseShaderProgramEXT, 873, UseShaderProgramEXT@8) + GL_STUB(_dispatch_stub_874, 874, _dispatch_stub_874@16) + HIDDEN(GL_PREFIX(_dispatch_stub_874, _dispatch_stub_874@16)) + GL_STUB(_dispatch_stub_875, 875, _dispatch_stub_875@16) + HIDDEN(GL_PREFIX(_dispatch_stub_875, _dispatch_stub_875@16)) + GL_STUB(_dispatch_stub_876, 876, _dispatch_stub_876@16) + HIDDEN(GL_PREFIX(_dispatch_stub_876, _dispatch_stub_876@16)) + GL_STUB(_dispatch_stub_877, 877, _dispatch_stub_877@12) + HIDDEN(GL_PREFIX(_dispatch_stub_877, _dispatch_stub_877@12)) + GL_STUB(_dispatch_stub_878, 878, _dispatch_stub_878@12) + HIDDEN(GL_PREFIX(_dispatch_stub_878, _dispatch_stub_878@12)) + GL_STUB(EGLImageTargetRenderbufferStorageOES, 879, EGLImageTargetRenderbufferStorageOES@8) + GL_STUB(EGLImageTargetTexture2DOES, 880, EGLImageTargetTexture2DOES@8) + GL_STUB_ALIAS(ArrayElementEXT, 306, ArrayElementEXT@4, ArrayElement, ArrayElement@4) + GL_STUB_ALIAS(BindTextureEXT, 307, BindTextureEXT@8, BindTexture, BindTexture@8) + GL_STUB_ALIAS(DrawArraysEXT, 310, DrawArraysEXT@12, DrawArrays, DrawArrays@12) #ifndef GLX_INDIRECT_RENDERING - GL_STUB_ALIAS(AreTexturesResidentEXT, _gloffset_AreTexturesResident, AreTexturesResidentEXT@12, AreTexturesResident, AreTexturesResident@12) + GL_STUB_ALIAS(AreTexturesResidentEXT, 322, AreTexturesResidentEXT@12, AreTexturesResident, AreTexturesResident@12) #endif - GL_STUB_ALIAS(CopyTexImage1DEXT, _gloffset_CopyTexImage1D, CopyTexImage1DEXT@28, CopyTexImage1D, CopyTexImage1D@28) - GL_STUB_ALIAS(CopyTexImage2DEXT, _gloffset_CopyTexImage2D, CopyTexImage2DEXT@32, CopyTexImage2D, CopyTexImage2D@32) - GL_STUB_ALIAS(CopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D, CopyTexSubImage1DEXT@24, CopyTexSubImage1D, CopyTexSubImage1D@24) - GL_STUB_ALIAS(CopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D, CopyTexSubImage2DEXT@32, CopyTexSubImage2D, CopyTexSubImage2D@32) + GL_STUB_ALIAS(CopyTexImage1DEXT, 323, CopyTexImage1DEXT@28, CopyTexImage1D, CopyTexImage1D@28) + GL_STUB_ALIAS(CopyTexImage2DEXT, 324, CopyTexImage2DEXT@32, CopyTexImage2D, CopyTexImage2D@32) + GL_STUB_ALIAS(CopyTexSubImage1DEXT, 325, CopyTexSubImage1DEXT@24, CopyTexSubImage1D, CopyTexSubImage1D@24) + GL_STUB_ALIAS(CopyTexSubImage2DEXT, 326, CopyTexSubImage2DEXT@32, CopyTexSubImage2D, CopyTexSubImage2D@32) #ifndef GLX_INDIRECT_RENDERING - GL_STUB_ALIAS(DeleteTexturesEXT, _gloffset_DeleteTextures, DeleteTexturesEXT@8, DeleteTextures, DeleteTextures@8) + GL_STUB_ALIAS(DeleteTexturesEXT, 327, DeleteTexturesEXT@8, DeleteTextures, DeleteTextures@8) #endif #ifndef GLX_INDIRECT_RENDERING - GL_STUB_ALIAS(GenTexturesEXT, _gloffset_GenTextures, GenTexturesEXT@8, GenTextures, GenTextures@8) + GL_STUB_ALIAS(GenTexturesEXT, 328, GenTexturesEXT@8, GenTextures, GenTextures@8) #endif - GL_STUB_ALIAS(GetPointervEXT, _gloffset_GetPointerv, GetPointervEXT@8, GetPointerv, GetPointerv@8) + GL_STUB_ALIAS(GetPointervEXT, 329, GetPointervEXT@8, GetPointerv, GetPointerv@8) #ifndef GLX_INDIRECT_RENDERING - GL_STUB_ALIAS(IsTextureEXT, _gloffset_IsTexture, IsTextureEXT@4, IsTexture, IsTexture@4) + GL_STUB_ALIAS(IsTextureEXT, 330, IsTextureEXT@4, IsTexture, IsTexture@4) #endif - GL_STUB_ALIAS(PrioritizeTexturesEXT, _gloffset_PrioritizeTextures, PrioritizeTexturesEXT@12, PrioritizeTextures, PrioritizeTextures@12) - GL_STUB_ALIAS(TexSubImage1DEXT, _gloffset_TexSubImage1D, TexSubImage1DEXT@28, TexSubImage1D, TexSubImage1D@28) - GL_STUB_ALIAS(TexSubImage2DEXT, _gloffset_TexSubImage2D, TexSubImage2DEXT@36, TexSubImage2D, TexSubImage2D@36) - GL_STUB_ALIAS(BlendColorEXT, _gloffset_BlendColor, BlendColorEXT@16, BlendColor, BlendColor@16) - GL_STUB_ALIAS(BlendEquationEXT, _gloffset_BlendEquation, BlendEquationEXT@4, BlendEquation, BlendEquation@4) - GL_STUB_ALIAS(DrawRangeElementsEXT, _gloffset_DrawRangeElements, DrawRangeElementsEXT@24, DrawRangeElements, DrawRangeElements@24) - GL_STUB_ALIAS(ColorTableEXT, _gloffset_ColorTable, ColorTableEXT@24, ColorTable, ColorTable@24) + GL_STUB_ALIAS(PrioritizeTexturesEXT, 331, PrioritizeTexturesEXT@12, PrioritizeTextures, PrioritizeTextures@12) + GL_STUB_ALIAS(TexSubImage1DEXT, 332, TexSubImage1DEXT@28, TexSubImage1D, TexSubImage1D@28) + GL_STUB_ALIAS(TexSubImage2DEXT, 333, TexSubImage2DEXT@36, TexSubImage2D, TexSubImage2D@36) + GL_STUB_ALIAS(BlendColorEXT, 336, BlendColorEXT@16, BlendColor, BlendColor@16) + GL_STUB_ALIAS(BlendEquationEXT, 337, BlendEquationEXT@4, BlendEquation, BlendEquation@4) + GL_STUB_ALIAS(DrawRangeElementsEXT, 338, DrawRangeElementsEXT@24, DrawRangeElements, DrawRangeElements@24) + GL_STUB_ALIAS(ColorTableEXT, 339, ColorTableEXT@24, ColorTable, ColorTable@24) #ifndef GLX_INDIRECT_RENDERING - GL_STUB_ALIAS(GetColorTableEXT, _gloffset_GetColorTable, GetColorTableEXT@16, GetColorTable, GetColorTable@16) + GL_STUB_ALIAS(GetColorTableEXT, 343, GetColorTableEXT@16, GetColorTable, GetColorTable@16) #endif #ifndef GLX_INDIRECT_RENDERING - GL_STUB_ALIAS(GetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv, GetColorTableParameterfvEXT@12, GetColorTableParameterfv, GetColorTableParameterfv@12) + GL_STUB_ALIAS(GetColorTableParameterfvEXT, 344, GetColorTableParameterfvEXT@12, GetColorTableParameterfv, GetColorTableParameterfv@12) #endif #ifndef GLX_INDIRECT_RENDERING - GL_STUB_ALIAS(GetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv, GetColorTableParameterivEXT@12, GetColorTableParameteriv, GetColorTableParameteriv@12) + GL_STUB_ALIAS(GetColorTableParameterivEXT, 345, GetColorTableParameterivEXT@12, GetColorTableParameteriv, GetColorTableParameteriv@12) #endif - GL_STUB_ALIAS(TexImage3DEXT, _gloffset_TexImage3D, TexImage3DEXT@40, TexImage3D, TexImage3D@40) - GL_STUB_ALIAS(TexSubImage3DEXT, _gloffset_TexSubImage3D, TexSubImage3DEXT@44, TexSubImage3D, TexSubImage3D@44) - GL_STUB_ALIAS(CopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D, CopyTexSubImage3DEXT@36, CopyTexSubImage3D, CopyTexSubImage3D@36) - GL_STUB_ALIAS(ActiveTexture, _gloffset_ActiveTextureARB, ActiveTexture@4, ActiveTextureARB, ActiveTextureARB@4) - GL_STUB_ALIAS(ClientActiveTexture, _gloffset_ClientActiveTextureARB, ClientActiveTexture@4, ClientActiveTextureARB, ClientActiveTextureARB@4) - GL_STUB_ALIAS(MultiTexCoord1d, _gloffset_MultiTexCoord1dARB, MultiTexCoord1d@12, MultiTexCoord1dARB, MultiTexCoord1dARB@12) - GL_STUB_ALIAS(MultiTexCoord1dv, _gloffset_MultiTexCoord1dvARB, MultiTexCoord1dv@8, MultiTexCoord1dvARB, MultiTexCoord1dvARB@8) - GL_STUB_ALIAS(MultiTexCoord1f, _gloffset_MultiTexCoord1fARB, MultiTexCoord1f@8, MultiTexCoord1fARB, MultiTexCoord1fARB@8) - GL_STUB_ALIAS(MultiTexCoord1fv, _gloffset_MultiTexCoord1fvARB, MultiTexCoord1fv@8, MultiTexCoord1fvARB, MultiTexCoord1fvARB@8) - GL_STUB_ALIAS(MultiTexCoord1i, _gloffset_MultiTexCoord1iARB, MultiTexCoord1i@8, MultiTexCoord1iARB, MultiTexCoord1iARB@8) - GL_STUB_ALIAS(MultiTexCoord1iv, _gloffset_MultiTexCoord1ivARB, MultiTexCoord1iv@8, MultiTexCoord1ivARB, MultiTexCoord1ivARB@8) - GL_STUB_ALIAS(MultiTexCoord1s, _gloffset_MultiTexCoord1sARB, MultiTexCoord1s@8, MultiTexCoord1sARB, MultiTexCoord1sARB@8) - GL_STUB_ALIAS(MultiTexCoord1sv, _gloffset_MultiTexCoord1svARB, MultiTexCoord1sv@8, MultiTexCoord1svARB, MultiTexCoord1svARB@8) - GL_STUB_ALIAS(MultiTexCoord2d, _gloffset_MultiTexCoord2dARB, MultiTexCoord2d@20, MultiTexCoord2dARB, MultiTexCoord2dARB@20) - GL_STUB_ALIAS(MultiTexCoord2dv, _gloffset_MultiTexCoord2dvARB, MultiTexCoord2dv@8, MultiTexCoord2dvARB, MultiTexCoord2dvARB@8) - GL_STUB_ALIAS(MultiTexCoord2f, _gloffset_MultiTexCoord2fARB, MultiTexCoord2f@12, MultiTexCoord2fARB, MultiTexCoord2fARB@12) - GL_STUB_ALIAS(MultiTexCoord2fv, _gloffset_MultiTexCoord2fvARB, MultiTexCoord2fv@8, MultiTexCoord2fvARB, MultiTexCoord2fvARB@8) - GL_STUB_ALIAS(MultiTexCoord2i, _gloffset_MultiTexCoord2iARB, MultiTexCoord2i@12, MultiTexCoord2iARB, MultiTexCoord2iARB@12) - GL_STUB_ALIAS(MultiTexCoord2iv, _gloffset_MultiTexCoord2ivARB, MultiTexCoord2iv@8, MultiTexCoord2ivARB, MultiTexCoord2ivARB@8) - GL_STUB_ALIAS(MultiTexCoord2s, _gloffset_MultiTexCoord2sARB, MultiTexCoord2s@12, MultiTexCoord2sARB, MultiTexCoord2sARB@12) - GL_STUB_ALIAS(MultiTexCoord2sv, _gloffset_MultiTexCoord2svARB, MultiTexCoord2sv@8, MultiTexCoord2svARB, MultiTexCoord2svARB@8) - GL_STUB_ALIAS(MultiTexCoord3d, _gloffset_MultiTexCoord3dARB, MultiTexCoord3d@28, MultiTexCoord3dARB, MultiTexCoord3dARB@28) - GL_STUB_ALIAS(MultiTexCoord3dv, _gloffset_MultiTexCoord3dvARB, MultiTexCoord3dv@8, MultiTexCoord3dvARB, MultiTexCoord3dvARB@8) - GL_STUB_ALIAS(MultiTexCoord3f, _gloffset_MultiTexCoord3fARB, MultiTexCoord3f@16, MultiTexCoord3fARB, MultiTexCoord3fARB@16) - GL_STUB_ALIAS(MultiTexCoord3fv, _gloffset_MultiTexCoord3fvARB, MultiTexCoord3fv@8, MultiTexCoord3fvARB, MultiTexCoord3fvARB@8) - GL_STUB_ALIAS(MultiTexCoord3i, _gloffset_MultiTexCoord3iARB, MultiTexCoord3i@16, MultiTexCoord3iARB, MultiTexCoord3iARB@16) - GL_STUB_ALIAS(MultiTexCoord3iv, _gloffset_MultiTexCoord3ivARB, MultiTexCoord3iv@8, MultiTexCoord3ivARB, MultiTexCoord3ivARB@8) - GL_STUB_ALIAS(MultiTexCoord3s, _gloffset_MultiTexCoord3sARB, MultiTexCoord3s@16, MultiTexCoord3sARB, MultiTexCoord3sARB@16) - GL_STUB_ALIAS(MultiTexCoord3sv, _gloffset_MultiTexCoord3svARB, MultiTexCoord3sv@8, MultiTexCoord3svARB, MultiTexCoord3svARB@8) - GL_STUB_ALIAS(MultiTexCoord4d, _gloffset_MultiTexCoord4dARB, MultiTexCoord4d@36, MultiTexCoord4dARB, MultiTexCoord4dARB@36) - GL_STUB_ALIAS(MultiTexCoord4dv, _gloffset_MultiTexCoord4dvARB, MultiTexCoord4dv@8, MultiTexCoord4dvARB, MultiTexCoord4dvARB@8) - GL_STUB_ALIAS(MultiTexCoord4f, _gloffset_MultiTexCoord4fARB, MultiTexCoord4f@20, MultiTexCoord4fARB, MultiTexCoord4fARB@20) - GL_STUB_ALIAS(MultiTexCoord4fv, _gloffset_MultiTexCoord4fvARB, MultiTexCoord4fv@8, MultiTexCoord4fvARB, MultiTexCoord4fvARB@8) - GL_STUB_ALIAS(MultiTexCoord4i, _gloffset_MultiTexCoord4iARB, MultiTexCoord4i@20, MultiTexCoord4iARB, MultiTexCoord4iARB@20) - GL_STUB_ALIAS(MultiTexCoord4iv, _gloffset_MultiTexCoord4ivARB, MultiTexCoord4iv@8, MultiTexCoord4ivARB, MultiTexCoord4ivARB@8) - GL_STUB_ALIAS(MultiTexCoord4s, _gloffset_MultiTexCoord4sARB, MultiTexCoord4s@20, MultiTexCoord4sARB, MultiTexCoord4sARB@20) - GL_STUB_ALIAS(MultiTexCoord4sv, _gloffset_MultiTexCoord4svARB, MultiTexCoord4sv@8, MultiTexCoord4svARB, MultiTexCoord4svARB@8) - GL_STUB_ALIAS(DrawArraysInstancedARB, _gloffset_DrawArraysInstanced, DrawArraysInstancedARB@16, DrawArraysInstanced, DrawArraysInstanced@16) - GL_STUB_ALIAS(DrawArraysInstancedEXT, _gloffset_DrawArraysInstanced, DrawArraysInstancedEXT@16, DrawArraysInstanced, DrawArraysInstanced@16) - GL_STUB_ALIAS(DrawElementsInstancedARB, _gloffset_DrawElementsInstanced, DrawElementsInstancedARB@20, DrawElementsInstanced, DrawElementsInstanced@20) - GL_STUB_ALIAS(DrawElementsInstancedEXT, _gloffset_DrawElementsInstanced, DrawElementsInstancedEXT@20, DrawElementsInstanced, DrawElementsInstanced@20) - GL_STUB_ALIAS(LoadTransposeMatrixd, _gloffset_LoadTransposeMatrixdARB, LoadTransposeMatrixd@4, LoadTransposeMatrixdARB, LoadTransposeMatrixdARB@4) - GL_STUB_ALIAS(LoadTransposeMatrixf, _gloffset_LoadTransposeMatrixfARB, LoadTransposeMatrixf@4, LoadTransposeMatrixfARB, LoadTransposeMatrixfARB@4) - GL_STUB_ALIAS(MultTransposeMatrixd, _gloffset_MultTransposeMatrixdARB, MultTransposeMatrixd@4, MultTransposeMatrixdARB, MultTransposeMatrixdARB@4) - GL_STUB_ALIAS(MultTransposeMatrixf, _gloffset_MultTransposeMatrixfARB, MultTransposeMatrixf@4, MultTransposeMatrixfARB, MultTransposeMatrixfARB@4) - GL_STUB_ALIAS(SampleCoverage, _gloffset_SampleCoverageARB, SampleCoverage@8, SampleCoverageARB, SampleCoverageARB@8) - GL_STUB_ALIAS(CompressedTexImage1D, _gloffset_CompressedTexImage1DARB, CompressedTexImage1D@28, CompressedTexImage1DARB, CompressedTexImage1DARB@28) - GL_STUB_ALIAS(CompressedTexImage2D, _gloffset_CompressedTexImage2DARB, CompressedTexImage2D@32, CompressedTexImage2DARB, CompressedTexImage2DARB@32) - GL_STUB_ALIAS(CompressedTexImage3D, _gloffset_CompressedTexImage3DARB, CompressedTexImage3D@36, CompressedTexImage3DARB, CompressedTexImage3DARB@36) - GL_STUB_ALIAS(CompressedTexSubImage1D, _gloffset_CompressedTexSubImage1DARB, CompressedTexSubImage1D@28, CompressedTexSubImage1DARB, CompressedTexSubImage1DARB@28) - GL_STUB_ALIAS(CompressedTexSubImage2D, _gloffset_CompressedTexSubImage2DARB, CompressedTexSubImage2D@36, CompressedTexSubImage2DARB, CompressedTexSubImage2DARB@36) - GL_STUB_ALIAS(CompressedTexSubImage3D, _gloffset_CompressedTexSubImage3DARB, CompressedTexSubImage3D@44, CompressedTexSubImage3DARB, CompressedTexSubImage3DARB@44) - GL_STUB_ALIAS(GetCompressedTexImage, _gloffset_GetCompressedTexImageARB, GetCompressedTexImage@12, GetCompressedTexImageARB, GetCompressedTexImageARB@12) - GL_STUB_ALIAS(DisableVertexAttribArray, _gloffset_DisableVertexAttribArrayARB, DisableVertexAttribArray@4, DisableVertexAttribArrayARB, DisableVertexAttribArrayARB@4) - GL_STUB_ALIAS(EnableVertexAttribArray, _gloffset_EnableVertexAttribArrayARB, EnableVertexAttribArray@4, EnableVertexAttribArrayARB, EnableVertexAttribArrayARB@4) - GL_STUB_ALIAS(GetVertexAttribdv, _gloffset_GetVertexAttribdvARB, GetVertexAttribdv@12, GetVertexAttribdvARB, GetVertexAttribdvARB@12) - GL_STUB_ALIAS(GetVertexAttribfv, _gloffset_GetVertexAttribfvARB, GetVertexAttribfv@12, GetVertexAttribfvARB, GetVertexAttribfvARB@12) - GL_STUB_ALIAS(GetVertexAttribiv, _gloffset_GetVertexAttribivARB, GetVertexAttribiv@12, GetVertexAttribivARB, GetVertexAttribivARB@12) - GL_STUB_ALIAS(ProgramParameter4dNV, _gloffset_ProgramEnvParameter4dARB, ProgramParameter4dNV@40, ProgramEnvParameter4dARB, ProgramEnvParameter4dARB@40) - GL_STUB_ALIAS(ProgramParameter4dvNV, _gloffset_ProgramEnvParameter4dvARB, ProgramParameter4dvNV@12, ProgramEnvParameter4dvARB, ProgramEnvParameter4dvARB@12) - GL_STUB_ALIAS(ProgramParameter4fNV, _gloffset_ProgramEnvParameter4fARB, ProgramParameter4fNV@24, ProgramEnvParameter4fARB, ProgramEnvParameter4fARB@24) - GL_STUB_ALIAS(ProgramParameter4fvNV, _gloffset_ProgramEnvParameter4fvARB, ProgramParameter4fvNV@12, ProgramEnvParameter4fvARB, ProgramEnvParameter4fvARB@12) - GL_STUB_ALIAS(VertexAttrib1d, _gloffset_VertexAttrib1dARB, VertexAttrib1d@12, VertexAttrib1dARB, VertexAttrib1dARB@12) - GL_STUB_ALIAS(VertexAttrib1dv, _gloffset_VertexAttrib1dvARB, VertexAttrib1dv@8, VertexAttrib1dvARB, VertexAttrib1dvARB@8) - GL_STUB_ALIAS(VertexAttrib1f, _gloffset_VertexAttrib1fARB, VertexAttrib1f@8, VertexAttrib1fARB, VertexAttrib1fARB@8) - GL_STUB_ALIAS(VertexAttrib1fv, _gloffset_VertexAttrib1fvARB, VertexAttrib1fv@8, VertexAttrib1fvARB, VertexAttrib1fvARB@8) - GL_STUB_ALIAS(VertexAttrib1s, _gloffset_VertexAttrib1sARB, VertexAttrib1s@8, VertexAttrib1sARB, VertexAttrib1sARB@8) - GL_STUB_ALIAS(VertexAttrib1sv, _gloffset_VertexAttrib1svARB, VertexAttrib1sv@8, VertexAttrib1svARB, VertexAttrib1svARB@8) - GL_STUB_ALIAS(VertexAttrib2d, _gloffset_VertexAttrib2dARB, VertexAttrib2d@20, VertexAttrib2dARB, VertexAttrib2dARB@20) - GL_STUB_ALIAS(VertexAttrib2dv, _gloffset_VertexAttrib2dvARB, VertexAttrib2dv@8, VertexAttrib2dvARB, VertexAttrib2dvARB@8) - GL_STUB_ALIAS(VertexAttrib2f, _gloffset_VertexAttrib2fARB, VertexAttrib2f@12, VertexAttrib2fARB, VertexAttrib2fARB@12) - GL_STUB_ALIAS(VertexAttrib2fv, _gloffset_VertexAttrib2fvARB, VertexAttrib2fv@8, VertexAttrib2fvARB, VertexAttrib2fvARB@8) - GL_STUB_ALIAS(VertexAttrib2s, _gloffset_VertexAttrib2sARB, VertexAttrib2s@12, VertexAttrib2sARB, VertexAttrib2sARB@12) - GL_STUB_ALIAS(VertexAttrib2sv, _gloffset_VertexAttrib2svARB, VertexAttrib2sv@8, VertexAttrib2svARB, VertexAttrib2svARB@8) - GL_STUB_ALIAS(VertexAttrib3d, _gloffset_VertexAttrib3dARB, VertexAttrib3d@28, VertexAttrib3dARB, VertexAttrib3dARB@28) - GL_STUB_ALIAS(VertexAttrib3dv, _gloffset_VertexAttrib3dvARB, VertexAttrib3dv@8, VertexAttrib3dvARB, VertexAttrib3dvARB@8) - GL_STUB_ALIAS(VertexAttrib3f, _gloffset_VertexAttrib3fARB, VertexAttrib3f@16, VertexAttrib3fARB, VertexAttrib3fARB@16) - GL_STUB_ALIAS(VertexAttrib3fv, _gloffset_VertexAttrib3fvARB, VertexAttrib3fv@8, VertexAttrib3fvARB, VertexAttrib3fvARB@8) - GL_STUB_ALIAS(VertexAttrib3s, _gloffset_VertexAttrib3sARB, VertexAttrib3s@16, VertexAttrib3sARB, VertexAttrib3sARB@16) - GL_STUB_ALIAS(VertexAttrib3sv, _gloffset_VertexAttrib3svARB, VertexAttrib3sv@8, VertexAttrib3svARB, VertexAttrib3svARB@8) - GL_STUB_ALIAS(VertexAttrib4Nbv, _gloffset_VertexAttrib4NbvARB, VertexAttrib4Nbv@8, VertexAttrib4NbvARB, VertexAttrib4NbvARB@8) - GL_STUB_ALIAS(VertexAttrib4Niv, _gloffset_VertexAttrib4NivARB, VertexAttrib4Niv@8, VertexAttrib4NivARB, VertexAttrib4NivARB@8) - GL_STUB_ALIAS(VertexAttrib4Nsv, _gloffset_VertexAttrib4NsvARB, VertexAttrib4Nsv@8, VertexAttrib4NsvARB, VertexAttrib4NsvARB@8) - GL_STUB_ALIAS(VertexAttrib4Nub, _gloffset_VertexAttrib4NubARB, VertexAttrib4Nub@20, VertexAttrib4NubARB, VertexAttrib4NubARB@20) - GL_STUB_ALIAS(VertexAttrib4Nubv, _gloffset_VertexAttrib4NubvARB, VertexAttrib4Nubv@8, VertexAttrib4NubvARB, VertexAttrib4NubvARB@8) - GL_STUB_ALIAS(VertexAttrib4Nuiv, _gloffset_VertexAttrib4NuivARB, VertexAttrib4Nuiv@8, VertexAttrib4NuivARB, VertexAttrib4NuivARB@8) - GL_STUB_ALIAS(VertexAttrib4Nusv, _gloffset_VertexAttrib4NusvARB, VertexAttrib4Nusv@8, VertexAttrib4NusvARB, VertexAttrib4NusvARB@8) - GL_STUB_ALIAS(VertexAttrib4bv, _gloffset_VertexAttrib4bvARB, VertexAttrib4bv@8, VertexAttrib4bvARB, VertexAttrib4bvARB@8) - GL_STUB_ALIAS(VertexAttrib4d, _gloffset_VertexAttrib4dARB, VertexAttrib4d@36, VertexAttrib4dARB, VertexAttrib4dARB@36) - GL_STUB_ALIAS(VertexAttrib4dv, _gloffset_VertexAttrib4dvARB, VertexAttrib4dv@8, VertexAttrib4dvARB, VertexAttrib4dvARB@8) - GL_STUB_ALIAS(VertexAttrib4f, _gloffset_VertexAttrib4fARB, VertexAttrib4f@20, VertexAttrib4fARB, VertexAttrib4fARB@20) - GL_STUB_ALIAS(VertexAttrib4fv, _gloffset_VertexAttrib4fvARB, VertexAttrib4fv@8, VertexAttrib4fvARB, VertexAttrib4fvARB@8) - GL_STUB_ALIAS(VertexAttrib4iv, _gloffset_VertexAttrib4ivARB, VertexAttrib4iv@8, VertexAttrib4ivARB, VertexAttrib4ivARB@8) - GL_STUB_ALIAS(VertexAttrib4s, _gloffset_VertexAttrib4sARB, VertexAttrib4s@20, VertexAttrib4sARB, VertexAttrib4sARB@20) - GL_STUB_ALIAS(VertexAttrib4sv, _gloffset_VertexAttrib4svARB, VertexAttrib4sv@8, VertexAttrib4svARB, VertexAttrib4svARB@8) - GL_STUB_ALIAS(VertexAttrib4ubv, _gloffset_VertexAttrib4ubvARB, VertexAttrib4ubv@8, VertexAttrib4ubvARB, VertexAttrib4ubvARB@8) - GL_STUB_ALIAS(VertexAttrib4uiv, _gloffset_VertexAttrib4uivARB, VertexAttrib4uiv@8, VertexAttrib4uivARB, VertexAttrib4uivARB@8) - GL_STUB_ALIAS(VertexAttrib4usv, _gloffset_VertexAttrib4usvARB, VertexAttrib4usv@8, VertexAttrib4usvARB, VertexAttrib4usvARB@8) - GL_STUB_ALIAS(VertexAttribPointer, _gloffset_VertexAttribPointerARB, VertexAttribPointer@24, VertexAttribPointerARB, VertexAttribPointerARB@24) - GL_STUB_ALIAS(BindBuffer, _gloffset_BindBufferARB, BindBuffer@8, BindBufferARB, BindBufferARB@8) - GL_STUB_ALIAS(BufferData, _gloffset_BufferDataARB, BufferData@16, BufferDataARB, BufferDataARB@16) - GL_STUB_ALIAS(BufferSubData, _gloffset_BufferSubDataARB, BufferSubData@16, BufferSubDataARB, BufferSubDataARB@16) - GL_STUB_ALIAS(DeleteBuffers, _gloffset_DeleteBuffersARB, DeleteBuffers@8, DeleteBuffersARB, DeleteBuffersARB@8) - GL_STUB_ALIAS(GenBuffers, _gloffset_GenBuffersARB, GenBuffers@8, GenBuffersARB, GenBuffersARB@8) - GL_STUB_ALIAS(GetBufferParameteriv, _gloffset_GetBufferParameterivARB, GetBufferParameteriv@12, GetBufferParameterivARB, GetBufferParameterivARB@12) - GL_STUB_ALIAS(GetBufferPointerv, _gloffset_GetBufferPointervARB, GetBufferPointerv@12, GetBufferPointervARB, GetBufferPointervARB@12) - GL_STUB_ALIAS(GetBufferSubData, _gloffset_GetBufferSubDataARB, GetBufferSubData@16, GetBufferSubDataARB, GetBufferSubDataARB@16) - GL_STUB_ALIAS(IsBuffer, _gloffset_IsBufferARB, IsBuffer@4, IsBufferARB, IsBufferARB@4) - GL_STUB_ALIAS(MapBuffer, _gloffset_MapBufferARB, MapBuffer@8, MapBufferARB, MapBufferARB@8) - GL_STUB_ALIAS(UnmapBuffer, _gloffset_UnmapBufferARB, UnmapBuffer@4, UnmapBufferARB, UnmapBufferARB@4) - GL_STUB_ALIAS(BeginQuery, _gloffset_BeginQueryARB, BeginQuery@8, BeginQueryARB, BeginQueryARB@8) - GL_STUB_ALIAS(DeleteQueries, _gloffset_DeleteQueriesARB, DeleteQueries@8, DeleteQueriesARB, DeleteQueriesARB@8) - GL_STUB_ALIAS(EndQuery, _gloffset_EndQueryARB, EndQuery@4, EndQueryARB, EndQueryARB@4) - GL_STUB_ALIAS(GenQueries, _gloffset_GenQueriesARB, GenQueries@8, GenQueriesARB, GenQueriesARB@8) - GL_STUB_ALIAS(GetQueryObjectiv, _gloffset_GetQueryObjectivARB, GetQueryObjectiv@12, GetQueryObjectivARB, GetQueryObjectivARB@12) - GL_STUB_ALIAS(GetQueryObjectuiv, _gloffset_GetQueryObjectuivARB, GetQueryObjectuiv@12, GetQueryObjectuivARB, GetQueryObjectuivARB@12) - GL_STUB_ALIAS(GetQueryiv, _gloffset_GetQueryivARB, GetQueryiv@12, GetQueryivARB, GetQueryivARB@12) - GL_STUB_ALIAS(IsQuery, _gloffset_IsQueryARB, IsQuery@4, IsQueryARB, IsQueryARB@4) - GL_STUB_ALIAS(CompileShader, _gloffset_CompileShaderARB, CompileShader@4, CompileShaderARB, CompileShaderARB@4) - GL_STUB_ALIAS(GetActiveUniform, _gloffset_GetActiveUniformARB, GetActiveUniform@28, GetActiveUniformARB, GetActiveUniformARB@28) - GL_STUB_ALIAS(GetShaderSource, _gloffset_GetShaderSourceARB, GetShaderSource@16, GetShaderSourceARB, GetShaderSourceARB@16) - GL_STUB_ALIAS(GetUniformLocation, _gloffset_GetUniformLocationARB, GetUniformLocation@8, GetUniformLocationARB, GetUniformLocationARB@8) - GL_STUB_ALIAS(GetUniformfv, _gloffset_GetUniformfvARB, GetUniformfv@12, GetUniformfvARB, GetUniformfvARB@12) - GL_STUB_ALIAS(GetUniformiv, _gloffset_GetUniformivARB, GetUniformiv@12, GetUniformivARB, GetUniformivARB@12) - GL_STUB_ALIAS(LinkProgram, _gloffset_LinkProgramARB, LinkProgram@4, LinkProgramARB, LinkProgramARB@4) - GL_STUB_ALIAS(ShaderSource, _gloffset_ShaderSourceARB, ShaderSource@16, ShaderSourceARB, ShaderSourceARB@16) - GL_STUB_ALIAS(Uniform1f, _gloffset_Uniform1fARB, Uniform1f@8, Uniform1fARB, Uniform1fARB@8) - GL_STUB_ALIAS(Uniform1fv, _gloffset_Uniform1fvARB, Uniform1fv@12, Uniform1fvARB, Uniform1fvARB@12) - GL_STUB_ALIAS(Uniform1i, _gloffset_Uniform1iARB, Uniform1i@8, Uniform1iARB, Uniform1iARB@8) - GL_STUB_ALIAS(Uniform1iv, _gloffset_Uniform1ivARB, Uniform1iv@12, Uniform1ivARB, Uniform1ivARB@12) - GL_STUB_ALIAS(Uniform2f, _gloffset_Uniform2fARB, Uniform2f@12, Uniform2fARB, Uniform2fARB@12) - GL_STUB_ALIAS(Uniform2fv, _gloffset_Uniform2fvARB, Uniform2fv@12, Uniform2fvARB, Uniform2fvARB@12) - GL_STUB_ALIAS(Uniform2i, _gloffset_Uniform2iARB, Uniform2i@12, Uniform2iARB, Uniform2iARB@12) - GL_STUB_ALIAS(Uniform2iv, _gloffset_Uniform2ivARB, Uniform2iv@12, Uniform2ivARB, Uniform2ivARB@12) - GL_STUB_ALIAS(Uniform3f, _gloffset_Uniform3fARB, Uniform3f@16, Uniform3fARB, Uniform3fARB@16) - GL_STUB_ALIAS(Uniform3fv, _gloffset_Uniform3fvARB, Uniform3fv@12, Uniform3fvARB, Uniform3fvARB@12) - GL_STUB_ALIAS(Uniform3i, _gloffset_Uniform3iARB, Uniform3i@16, Uniform3iARB, Uniform3iARB@16) - GL_STUB_ALIAS(Uniform3iv, _gloffset_Uniform3ivARB, Uniform3iv@12, Uniform3ivARB, Uniform3ivARB@12) - GL_STUB_ALIAS(Uniform4f, _gloffset_Uniform4fARB, Uniform4f@20, Uniform4fARB, Uniform4fARB@20) - GL_STUB_ALIAS(Uniform4fv, _gloffset_Uniform4fvARB, Uniform4fv@12, Uniform4fvARB, Uniform4fvARB@12) - GL_STUB_ALIAS(Uniform4i, _gloffset_Uniform4iARB, Uniform4i@20, Uniform4iARB, Uniform4iARB@20) - GL_STUB_ALIAS(Uniform4iv, _gloffset_Uniform4ivARB, Uniform4iv@12, Uniform4ivARB, Uniform4ivARB@12) - GL_STUB_ALIAS(UniformMatrix2fv, _gloffset_UniformMatrix2fvARB, UniformMatrix2fv@16, UniformMatrix2fvARB, UniformMatrix2fvARB@16) - GL_STUB_ALIAS(UniformMatrix3fv, _gloffset_UniformMatrix3fvARB, UniformMatrix3fv@16, UniformMatrix3fvARB, UniformMatrix3fvARB@16) - GL_STUB_ALIAS(UniformMatrix4fv, _gloffset_UniformMatrix4fvARB, UniformMatrix4fv@16, UniformMatrix4fvARB, UniformMatrix4fvARB@16) - GL_STUB_ALIAS(UseProgram, _gloffset_UseProgramObjectARB, UseProgram@4, UseProgramObjectARB, UseProgramObjectARB@4) - GL_STUB_ALIAS(ValidateProgram, _gloffset_ValidateProgramARB, ValidateProgram@4, ValidateProgramARB, ValidateProgramARB@4) - GL_STUB_ALIAS(BindAttribLocation, _gloffset_BindAttribLocationARB, BindAttribLocation@12, BindAttribLocationARB, BindAttribLocationARB@12) - GL_STUB_ALIAS(GetActiveAttrib, _gloffset_GetActiveAttribARB, GetActiveAttrib@28, GetActiveAttribARB, GetActiveAttribARB@28) - GL_STUB_ALIAS(GetAttribLocation, _gloffset_GetAttribLocationARB, GetAttribLocation@8, GetAttribLocationARB, GetAttribLocationARB@8) - GL_STUB_ALIAS(DrawBuffers, _gloffset_DrawBuffersARB, DrawBuffers@8, DrawBuffersARB, DrawBuffersARB@8) - GL_STUB_ALIAS(DrawBuffersATI, _gloffset_DrawBuffersARB, DrawBuffersATI@8, DrawBuffersARB, DrawBuffersARB@8) - GL_STUB_ALIAS(RenderbufferStorageMultisampleEXT, _gloffset_RenderbufferStorageMultisample, RenderbufferStorageMultisampleEXT@20, RenderbufferStorageMultisample, RenderbufferStorageMultisample@20) - GL_STUB_ALIAS(PointParameterf, _gloffset_PointParameterfEXT, PointParameterf@8, PointParameterfEXT, PointParameterfEXT@8) - GL_STUB_ALIAS(PointParameterfARB, _gloffset_PointParameterfEXT, PointParameterfARB@8, PointParameterfEXT, PointParameterfEXT@8) - GL_STUB_ALIAS(PointParameterfv, _gloffset_PointParameterfvEXT, PointParameterfv@8, PointParameterfvEXT, PointParameterfvEXT@8) - GL_STUB_ALIAS(PointParameterfvARB, _gloffset_PointParameterfvEXT, PointParameterfvARB@8, PointParameterfvEXT, PointParameterfvEXT@8) - GL_STUB_ALIAS(SecondaryColor3b, _gloffset_SecondaryColor3bEXT, SecondaryColor3b@12, SecondaryColor3bEXT, SecondaryColor3bEXT@12) - GL_STUB_ALIAS(SecondaryColor3bv, _gloffset_SecondaryColor3bvEXT, SecondaryColor3bv@4, SecondaryColor3bvEXT, SecondaryColor3bvEXT@4) - GL_STUB_ALIAS(SecondaryColor3d, _gloffset_SecondaryColor3dEXT, SecondaryColor3d@24, SecondaryColor3dEXT, SecondaryColor3dEXT@24) - GL_STUB_ALIAS(SecondaryColor3dv, _gloffset_SecondaryColor3dvEXT, SecondaryColor3dv@4, SecondaryColor3dvEXT, SecondaryColor3dvEXT@4) - GL_STUB_ALIAS(SecondaryColor3f, _gloffset_SecondaryColor3fEXT, SecondaryColor3f@12, SecondaryColor3fEXT, SecondaryColor3fEXT@12) - GL_STUB_ALIAS(SecondaryColor3fv, _gloffset_SecondaryColor3fvEXT, SecondaryColor3fv@4, SecondaryColor3fvEXT, SecondaryColor3fvEXT@4) - GL_STUB_ALIAS(SecondaryColor3i, _gloffset_SecondaryColor3iEXT, SecondaryColor3i@12, SecondaryColor3iEXT, SecondaryColor3iEXT@12) - GL_STUB_ALIAS(SecondaryColor3iv, _gloffset_SecondaryColor3ivEXT, SecondaryColor3iv@4, SecondaryColor3ivEXT, SecondaryColor3ivEXT@4) - GL_STUB_ALIAS(SecondaryColor3s, _gloffset_SecondaryColor3sEXT, SecondaryColor3s@12, SecondaryColor3sEXT, SecondaryColor3sEXT@12) - GL_STUB_ALIAS(SecondaryColor3sv, _gloffset_SecondaryColor3svEXT, SecondaryColor3sv@4, SecondaryColor3svEXT, SecondaryColor3svEXT@4) - GL_STUB_ALIAS(SecondaryColor3ub, _gloffset_SecondaryColor3ubEXT, SecondaryColor3ub@12, SecondaryColor3ubEXT, SecondaryColor3ubEXT@12) - GL_STUB_ALIAS(SecondaryColor3ubv, _gloffset_SecondaryColor3ubvEXT, SecondaryColor3ubv@4, SecondaryColor3ubvEXT, SecondaryColor3ubvEXT@4) - GL_STUB_ALIAS(SecondaryColor3ui, _gloffset_SecondaryColor3uiEXT, SecondaryColor3ui@12, SecondaryColor3uiEXT, SecondaryColor3uiEXT@12) - GL_STUB_ALIAS(SecondaryColor3uiv, _gloffset_SecondaryColor3uivEXT, SecondaryColor3uiv@4, SecondaryColor3uivEXT, SecondaryColor3uivEXT@4) - GL_STUB_ALIAS(SecondaryColor3us, _gloffset_SecondaryColor3usEXT, SecondaryColor3us@12, SecondaryColor3usEXT, SecondaryColor3usEXT@12) - GL_STUB_ALIAS(SecondaryColor3usv, _gloffset_SecondaryColor3usvEXT, SecondaryColor3usv@4, SecondaryColor3usvEXT, SecondaryColor3usvEXT@4) - GL_STUB_ALIAS(SecondaryColorPointer, _gloffset_SecondaryColorPointerEXT, SecondaryColorPointer@16, SecondaryColorPointerEXT, SecondaryColorPointerEXT@16) - GL_STUB_ALIAS(MultiDrawArrays, _gloffset_MultiDrawArraysEXT, MultiDrawArrays@16, MultiDrawArraysEXT, MultiDrawArraysEXT@16) - GL_STUB_ALIAS(MultiDrawElements, _gloffset_MultiDrawElementsEXT, MultiDrawElements@20, MultiDrawElementsEXT, MultiDrawElementsEXT@20) - GL_STUB_ALIAS(FogCoordPointer, _gloffset_FogCoordPointerEXT, FogCoordPointer@12, FogCoordPointerEXT, FogCoordPointerEXT@12) - GL_STUB_ALIAS(FogCoordd, _gloffset_FogCoorddEXT, FogCoordd@8, FogCoorddEXT, FogCoorddEXT@8) - GL_STUB_ALIAS(FogCoorddv, _gloffset_FogCoorddvEXT, FogCoorddv@4, FogCoorddvEXT, FogCoorddvEXT@4) - GL_STUB_ALIAS(FogCoordf, _gloffset_FogCoordfEXT, FogCoordf@4, FogCoordfEXT, FogCoordfEXT@4) - GL_STUB_ALIAS(FogCoordfv, _gloffset_FogCoordfvEXT, FogCoordfv@4, FogCoordfvEXT, FogCoordfvEXT@4) - GL_STUB_ALIAS(BlendFuncSeparate, _gloffset_BlendFuncSeparateEXT, BlendFuncSeparate@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16) - GL_STUB_ALIAS(WindowPos2d, _gloffset_WindowPos2dMESA, WindowPos2d@16, WindowPos2dMESA, WindowPos2dMESA@16) - GL_STUB_ALIAS(WindowPos2dARB, _gloffset_WindowPos2dMESA, WindowPos2dARB@16, WindowPos2dMESA, WindowPos2dMESA@16) - GL_STUB_ALIAS(WindowPos2dv, _gloffset_WindowPos2dvMESA, WindowPos2dv@4, WindowPos2dvMESA, WindowPos2dvMESA@4) - GL_STUB_ALIAS(WindowPos2dvARB, _gloffset_WindowPos2dvMESA, WindowPos2dvARB@4, WindowPos2dvMESA, WindowPos2dvMESA@4) - GL_STUB_ALIAS(WindowPos2f, _gloffset_WindowPos2fMESA, WindowPos2f@8, WindowPos2fMESA, WindowPos2fMESA@8) - GL_STUB_ALIAS(WindowPos2fARB, _gloffset_WindowPos2fMESA, WindowPos2fARB@8, WindowPos2fMESA, WindowPos2fMESA@8) - GL_STUB_ALIAS(WindowPos2fv, _gloffset_WindowPos2fvMESA, WindowPos2fv@4, WindowPos2fvMESA, WindowPos2fvMESA@4) - GL_STUB_ALIAS(WindowPos2fvARB, _gloffset_WindowPos2fvMESA, WindowPos2fvARB@4, WindowPos2fvMESA, WindowPos2fvMESA@4) - GL_STUB_ALIAS(WindowPos2i, _gloffset_WindowPos2iMESA, WindowPos2i@8, WindowPos2iMESA, WindowPos2iMESA@8) - GL_STUB_ALIAS(WindowPos2iARB, _gloffset_WindowPos2iMESA, WindowPos2iARB@8, WindowPos2iMESA, WindowPos2iMESA@8) - GL_STUB_ALIAS(WindowPos2iv, _gloffset_WindowPos2ivMESA, WindowPos2iv@4, WindowPos2ivMESA, WindowPos2ivMESA@4) - GL_STUB_ALIAS(WindowPos2ivARB, _gloffset_WindowPos2ivMESA, WindowPos2ivARB@4, WindowPos2ivMESA, WindowPos2ivMESA@4) - GL_STUB_ALIAS(WindowPos2s, _gloffset_WindowPos2sMESA, WindowPos2s@8, WindowPos2sMESA, WindowPos2sMESA@8) - GL_STUB_ALIAS(WindowPos2sARB, _gloffset_WindowPos2sMESA, WindowPos2sARB@8, WindowPos2sMESA, WindowPos2sMESA@8) - GL_STUB_ALIAS(WindowPos2sv, _gloffset_WindowPos2svMESA, WindowPos2sv@4, WindowPos2svMESA, WindowPos2svMESA@4) - GL_STUB_ALIAS(WindowPos2svARB, _gloffset_WindowPos2svMESA, WindowPos2svARB@4, WindowPos2svMESA, WindowPos2svMESA@4) - GL_STUB_ALIAS(WindowPos3d, _gloffset_WindowPos3dMESA, WindowPos3d@24, WindowPos3dMESA, WindowPos3dMESA@24) - GL_STUB_ALIAS(WindowPos3dARB, _gloffset_WindowPos3dMESA, WindowPos3dARB@24, WindowPos3dMESA, WindowPos3dMESA@24) - GL_STUB_ALIAS(WindowPos3dv, _gloffset_WindowPos3dvMESA, WindowPos3dv@4, WindowPos3dvMESA, WindowPos3dvMESA@4) - GL_STUB_ALIAS(WindowPos3dvARB, _gloffset_WindowPos3dvMESA, WindowPos3dvARB@4, WindowPos3dvMESA, WindowPos3dvMESA@4) - GL_STUB_ALIAS(WindowPos3f, _gloffset_WindowPos3fMESA, WindowPos3f@12, WindowPos3fMESA, WindowPos3fMESA@12) - GL_STUB_ALIAS(WindowPos3fARB, _gloffset_WindowPos3fMESA, WindowPos3fARB@12, WindowPos3fMESA, WindowPos3fMESA@12) - GL_STUB_ALIAS(WindowPos3fv, _gloffset_WindowPos3fvMESA, WindowPos3fv@4, WindowPos3fvMESA, WindowPos3fvMESA@4) - GL_STUB_ALIAS(WindowPos3fvARB, _gloffset_WindowPos3fvMESA, WindowPos3fvARB@4, WindowPos3fvMESA, WindowPos3fvMESA@4) - GL_STUB_ALIAS(WindowPos3i, _gloffset_WindowPos3iMESA, WindowPos3i@12, WindowPos3iMESA, WindowPos3iMESA@12) - GL_STUB_ALIAS(WindowPos3iARB, _gloffset_WindowPos3iMESA, WindowPos3iARB@12, WindowPos3iMESA, WindowPos3iMESA@12) - GL_STUB_ALIAS(WindowPos3iv, _gloffset_WindowPos3ivMESA, WindowPos3iv@4, WindowPos3ivMESA, WindowPos3ivMESA@4) - GL_STUB_ALIAS(WindowPos3ivARB, _gloffset_WindowPos3ivMESA, WindowPos3ivARB@4, WindowPos3ivMESA, WindowPos3ivMESA@4) - GL_STUB_ALIAS(WindowPos3s, _gloffset_WindowPos3sMESA, WindowPos3s@12, WindowPos3sMESA, WindowPos3sMESA@12) - GL_STUB_ALIAS(WindowPos3sARB, _gloffset_WindowPos3sMESA, WindowPos3sARB@12, WindowPos3sMESA, WindowPos3sMESA@12) - GL_STUB_ALIAS(WindowPos3sv, _gloffset_WindowPos3svMESA, WindowPos3sv@4, WindowPos3svMESA, WindowPos3svMESA@4) - GL_STUB_ALIAS(WindowPos3svARB, _gloffset_WindowPos3svMESA, WindowPos3svARB@4, WindowPos3svMESA, WindowPos3svMESA@4) - GL_STUB_ALIAS(BindProgramARB, _gloffset_BindProgramNV, BindProgramARB@8, BindProgramNV, BindProgramNV@8) - GL_STUB_ALIAS(DeleteProgramsARB, _gloffset_DeleteProgramsNV, DeleteProgramsARB@8, DeleteProgramsNV, DeleteProgramsNV@8) - GL_STUB_ALIAS(GenProgramsARB, _gloffset_GenProgramsNV, GenProgramsARB@8, GenProgramsNV, GenProgramsNV@8) - GL_STUB_ALIAS(GetVertexAttribPointerv, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointerv@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12) - GL_STUB_ALIAS(GetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointervARB@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12) - GL_STUB_ALIAS(IsProgramARB, _gloffset_IsProgramNV, IsProgramARB@4, IsProgramNV, IsProgramNV@4) - GL_STUB_ALIAS(PointParameteri, _gloffset_PointParameteriNV, PointParameteri@8, PointParameteriNV, PointParameteriNV@8) - GL_STUB_ALIAS(PointParameteriv, _gloffset_PointParameterivNV, PointParameteriv@8, PointParameterivNV, PointParameterivNV@8) - GL_STUB_ALIAS(DeleteVertexArrays, _gloffset_DeleteVertexArraysAPPLE, DeleteVertexArrays@8, _dispatch_stub_765, _dispatch_stub_765@8) - GL_STUB_ALIAS(IsVertexArray, _gloffset_IsVertexArrayAPPLE, IsVertexArray@4, _dispatch_stub_767, _dispatch_stub_767@4) - GL_STUB_ALIAS(BlendEquationSeparate, _gloffset_BlendEquationSeparateEXT, BlendEquationSeparate@8, _dispatch_stub_777, _dispatch_stub_777@8) - GL_STUB_ALIAS(BindFramebuffer, _gloffset_BindFramebufferEXT, BindFramebuffer@8, BindFramebufferEXT, BindFramebufferEXT@8) - GL_STUB_ALIAS(BindRenderbuffer, _gloffset_BindRenderbufferEXT, BindRenderbuffer@8, BindRenderbufferEXT, BindRenderbufferEXT@8) - GL_STUB_ALIAS(CheckFramebufferStatus, _gloffset_CheckFramebufferStatusEXT, CheckFramebufferStatus@4, CheckFramebufferStatusEXT, CheckFramebufferStatusEXT@4) - GL_STUB_ALIAS(DeleteFramebuffers, _gloffset_DeleteFramebuffersEXT, DeleteFramebuffers@8, DeleteFramebuffersEXT, DeleteFramebuffersEXT@8) - GL_STUB_ALIAS(DeleteRenderbuffers, _gloffset_DeleteRenderbuffersEXT, DeleteRenderbuffers@8, DeleteRenderbuffersEXT, DeleteRenderbuffersEXT@8) - GL_STUB_ALIAS(FramebufferRenderbuffer, _gloffset_FramebufferRenderbufferEXT, FramebufferRenderbuffer@16, FramebufferRenderbufferEXT, FramebufferRenderbufferEXT@16) - GL_STUB_ALIAS(FramebufferTexture1D, _gloffset_FramebufferTexture1DEXT, FramebufferTexture1D@20, FramebufferTexture1DEXT, FramebufferTexture1DEXT@20) - GL_STUB_ALIAS(FramebufferTexture2D, _gloffset_FramebufferTexture2DEXT, FramebufferTexture2D@20, FramebufferTexture2DEXT, FramebufferTexture2DEXT@20) - GL_STUB_ALIAS(FramebufferTexture3D, _gloffset_FramebufferTexture3DEXT, FramebufferTexture3D@24, FramebufferTexture3DEXT, FramebufferTexture3DEXT@24) - GL_STUB_ALIAS(GenFramebuffers, _gloffset_GenFramebuffersEXT, GenFramebuffers@8, GenFramebuffersEXT, GenFramebuffersEXT@8) - GL_STUB_ALIAS(GenRenderbuffers, _gloffset_GenRenderbuffersEXT, GenRenderbuffers@8, GenRenderbuffersEXT, GenRenderbuffersEXT@8) - GL_STUB_ALIAS(GenerateMipmap, _gloffset_GenerateMipmapEXT, GenerateMipmap@4, GenerateMipmapEXT, GenerateMipmapEXT@4) - GL_STUB_ALIAS(GetFramebufferAttachmentParameteriv, _gloffset_GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameteriv@16, GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameterivEXT@16) - GL_STUB_ALIAS(GetRenderbufferParameteriv, _gloffset_GetRenderbufferParameterivEXT, GetRenderbufferParameteriv@12, GetRenderbufferParameterivEXT, GetRenderbufferParameterivEXT@12) - GL_STUB_ALIAS(IsFramebuffer, _gloffset_IsFramebufferEXT, IsFramebuffer@4, IsFramebufferEXT, IsFramebufferEXT@4) - GL_STUB_ALIAS(IsRenderbuffer, _gloffset_IsRenderbufferEXT, IsRenderbuffer@4, IsRenderbufferEXT, IsRenderbufferEXT@4) - GL_STUB_ALIAS(RenderbufferStorage, _gloffset_RenderbufferStorageEXT, RenderbufferStorage@16, RenderbufferStorageEXT, RenderbufferStorageEXT@16) - GL_STUB_ALIAS(BlitFramebuffer, _gloffset_BlitFramebufferEXT, BlitFramebuffer@40, _dispatch_stub_795, _dispatch_stub_795@40) - GL_STUB_ALIAS(FramebufferTextureLayer, _gloffset_FramebufferTextureLayerEXT, FramebufferTextureLayer@20, FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20) - GL_STUB_ALIAS(BeginTransformFeedback, _gloffset_BeginTransformFeedbackEXT, BeginTransformFeedback@4, BeginTransformFeedbackEXT, BeginTransformFeedbackEXT@4) - GL_STUB_ALIAS(BindBufferBase, _gloffset_BindBufferBaseEXT, BindBufferBase@12, BindBufferBaseEXT, BindBufferBaseEXT@12) - GL_STUB_ALIAS(BindBufferRange, _gloffset_BindBufferRangeEXT, BindBufferRange@20, BindBufferRangeEXT, BindBufferRangeEXT@20) - GL_STUB_ALIAS(EndTransformFeedback, _gloffset_EndTransformFeedbackEXT, EndTransformFeedback@0, EndTransformFeedbackEXT, EndTransformFeedbackEXT@0) - GL_STUB_ALIAS(GetTransformFeedbackVarying, _gloffset_GetTransformFeedbackVaryingEXT, GetTransformFeedbackVarying@28, GetTransformFeedbackVaryingEXT, GetTransformFeedbackVaryingEXT@28) - GL_STUB_ALIAS(TransformFeedbackVaryings, _gloffset_TransformFeedbackVaryingsEXT, TransformFeedbackVaryings@16, TransformFeedbackVaryingsEXT, TransformFeedbackVaryingsEXT@16) - GL_STUB_ALIAS(ProvokingVertex, _gloffset_ProvokingVertexEXT, ProvokingVertex@4, ProvokingVertexEXT, ProvokingVertexEXT@4) + GL_STUB_ALIAS(TexImage3DEXT, 371, TexImage3DEXT@40, TexImage3D, TexImage3D@40) + GL_STUB_ALIAS(TexSubImage3DEXT, 372, TexSubImage3DEXT@44, TexSubImage3D, TexSubImage3D@44) + GL_STUB_ALIAS(CopyTexSubImage3DEXT, 373, CopyTexSubImage3DEXT@36, CopyTexSubImage3D, CopyTexSubImage3D@36) + GL_STUB_ALIAS(ActiveTexture, 374, ActiveTexture@4, ActiveTextureARB, ActiveTextureARB@4) + GL_STUB_ALIAS(ClientActiveTexture, 375, ClientActiveTexture@4, ClientActiveTextureARB, ClientActiveTextureARB@4) + GL_STUB_ALIAS(MultiTexCoord1d, 376, MultiTexCoord1d@12, MultiTexCoord1dARB, MultiTexCoord1dARB@12) + GL_STUB_ALIAS(MultiTexCoord1dv, 377, MultiTexCoord1dv@8, MultiTexCoord1dvARB, MultiTexCoord1dvARB@8) + GL_STUB_ALIAS(MultiTexCoord1f, 378, MultiTexCoord1f@8, MultiTexCoord1fARB, MultiTexCoord1fARB@8) + GL_STUB_ALIAS(MultiTexCoord1fv, 379, MultiTexCoord1fv@8, MultiTexCoord1fvARB, MultiTexCoord1fvARB@8) + GL_STUB_ALIAS(MultiTexCoord1i, 380, MultiTexCoord1i@8, MultiTexCoord1iARB, MultiTexCoord1iARB@8) + GL_STUB_ALIAS(MultiTexCoord1iv, 381, MultiTexCoord1iv@8, MultiTexCoord1ivARB, MultiTexCoord1ivARB@8) + GL_STUB_ALIAS(MultiTexCoord1s, 382, MultiTexCoord1s@8, MultiTexCoord1sARB, MultiTexCoord1sARB@8) + GL_STUB_ALIAS(MultiTexCoord1sv, 383, MultiTexCoord1sv@8, MultiTexCoord1svARB, MultiTexCoord1svARB@8) + GL_STUB_ALIAS(MultiTexCoord2d, 384, MultiTexCoord2d@20, MultiTexCoord2dARB, MultiTexCoord2dARB@20) + GL_STUB_ALIAS(MultiTexCoord2dv, 385, MultiTexCoord2dv@8, MultiTexCoord2dvARB, MultiTexCoord2dvARB@8) + GL_STUB_ALIAS(MultiTexCoord2f, 386, MultiTexCoord2f@12, MultiTexCoord2fARB, MultiTexCoord2fARB@12) + GL_STUB_ALIAS(MultiTexCoord2fv, 387, MultiTexCoord2fv@8, MultiTexCoord2fvARB, MultiTexCoord2fvARB@8) + GL_STUB_ALIAS(MultiTexCoord2i, 388, MultiTexCoord2i@12, MultiTexCoord2iARB, MultiTexCoord2iARB@12) + GL_STUB_ALIAS(MultiTexCoord2iv, 389, MultiTexCoord2iv@8, MultiTexCoord2ivARB, MultiTexCoord2ivARB@8) + GL_STUB_ALIAS(MultiTexCoord2s, 390, MultiTexCoord2s@12, MultiTexCoord2sARB, MultiTexCoord2sARB@12) + GL_STUB_ALIAS(MultiTexCoord2sv, 391, MultiTexCoord2sv@8, MultiTexCoord2svARB, MultiTexCoord2svARB@8) + GL_STUB_ALIAS(MultiTexCoord3d, 392, MultiTexCoord3d@28, MultiTexCoord3dARB, MultiTexCoord3dARB@28) + GL_STUB_ALIAS(MultiTexCoord3dv, 393, MultiTexCoord3dv@8, MultiTexCoord3dvARB, MultiTexCoord3dvARB@8) + GL_STUB_ALIAS(MultiTexCoord3f, 394, MultiTexCoord3f@16, MultiTexCoord3fARB, MultiTexCoord3fARB@16) + GL_STUB_ALIAS(MultiTexCoord3fv, 395, MultiTexCoord3fv@8, MultiTexCoord3fvARB, MultiTexCoord3fvARB@8) + GL_STUB_ALIAS(MultiTexCoord3i, 396, MultiTexCoord3i@16, MultiTexCoord3iARB, MultiTexCoord3iARB@16) + GL_STUB_ALIAS(MultiTexCoord3iv, 397, MultiTexCoord3iv@8, MultiTexCoord3ivARB, MultiTexCoord3ivARB@8) + GL_STUB_ALIAS(MultiTexCoord3s, 398, MultiTexCoord3s@16, MultiTexCoord3sARB, MultiTexCoord3sARB@16) + GL_STUB_ALIAS(MultiTexCoord3sv, 399, MultiTexCoord3sv@8, MultiTexCoord3svARB, MultiTexCoord3svARB@8) + GL_STUB_ALIAS(MultiTexCoord4d, 400, MultiTexCoord4d@36, MultiTexCoord4dARB, MultiTexCoord4dARB@36) + GL_STUB_ALIAS(MultiTexCoord4dv, 401, MultiTexCoord4dv@8, MultiTexCoord4dvARB, MultiTexCoord4dvARB@8) + GL_STUB_ALIAS(MultiTexCoord4f, 402, MultiTexCoord4f@20, MultiTexCoord4fARB, MultiTexCoord4fARB@20) + GL_STUB_ALIAS(MultiTexCoord4fv, 403, MultiTexCoord4fv@8, MultiTexCoord4fvARB, MultiTexCoord4fvARB@8) + GL_STUB_ALIAS(MultiTexCoord4i, 404, MultiTexCoord4i@20, MultiTexCoord4iARB, MultiTexCoord4iARB@20) + GL_STUB_ALIAS(MultiTexCoord4iv, 405, MultiTexCoord4iv@8, MultiTexCoord4ivARB, MultiTexCoord4ivARB@8) + GL_STUB_ALIAS(MultiTexCoord4s, 406, MultiTexCoord4s@20, MultiTexCoord4sARB, MultiTexCoord4sARB@20) + GL_STUB_ALIAS(MultiTexCoord4sv, 407, MultiTexCoord4sv@8, MultiTexCoord4svARB, MultiTexCoord4svARB@8) + GL_STUB_ALIAS(LoadTransposeMatrixd, 441, LoadTransposeMatrixd@4, LoadTransposeMatrixdARB, LoadTransposeMatrixdARB@4) + GL_STUB_ALIAS(LoadTransposeMatrixf, 442, LoadTransposeMatrixf@4, LoadTransposeMatrixfARB, LoadTransposeMatrixfARB@4) + GL_STUB_ALIAS(MultTransposeMatrixd, 443, MultTransposeMatrixd@4, MultTransposeMatrixdARB, MultTransposeMatrixdARB@4) + GL_STUB_ALIAS(MultTransposeMatrixf, 444, MultTransposeMatrixf@4, MultTransposeMatrixfARB, MultTransposeMatrixfARB@4) + GL_STUB_ALIAS(SampleCoverage, 445, SampleCoverage@8, SampleCoverageARB, SampleCoverageARB@8) + GL_STUB_ALIAS(CompressedTexImage1D, 446, CompressedTexImage1D@28, CompressedTexImage1DARB, CompressedTexImage1DARB@28) + GL_STUB_ALIAS(CompressedTexImage2D, 447, CompressedTexImage2D@32, CompressedTexImage2DARB, CompressedTexImage2DARB@32) + GL_STUB_ALIAS(CompressedTexImage3D, 448, CompressedTexImage3D@36, CompressedTexImage3DARB, CompressedTexImage3DARB@36) + GL_STUB_ALIAS(CompressedTexSubImage1D, 449, CompressedTexSubImage1D@28, CompressedTexSubImage1DARB, CompressedTexSubImage1DARB@28) + GL_STUB_ALIAS(CompressedTexSubImage2D, 450, CompressedTexSubImage2D@36, CompressedTexSubImage2DARB, CompressedTexSubImage2DARB@36) + GL_STUB_ALIAS(CompressedTexSubImage3D, 451, CompressedTexSubImage3D@44, CompressedTexSubImage3DARB, CompressedTexSubImage3DARB@44) + GL_STUB_ALIAS(GetCompressedTexImage, 452, GetCompressedTexImage@12, GetCompressedTexImageARB, GetCompressedTexImageARB@12) + GL_STUB_ALIAS(DisableVertexAttribArray, 453, DisableVertexAttribArray@4, DisableVertexAttribArrayARB, DisableVertexAttribArrayARB@4) + GL_STUB_ALIAS(EnableVertexAttribArray, 454, EnableVertexAttribArray@4, EnableVertexAttribArrayARB, EnableVertexAttribArrayARB@4) + GL_STUB_ALIAS(GetVertexAttribdv, 461, GetVertexAttribdv@12, GetVertexAttribdvARB, GetVertexAttribdvARB@12) + GL_STUB_ALIAS(GetVertexAttribfv, 462, GetVertexAttribfv@12, GetVertexAttribfvARB, GetVertexAttribfvARB@12) + GL_STUB_ALIAS(GetVertexAttribiv, 463, GetVertexAttribiv@12, GetVertexAttribivARB, GetVertexAttribivARB@12) + GL_STUB_ALIAS(ProgramParameter4dNV, 464, ProgramParameter4dNV@40, ProgramEnvParameter4dARB, ProgramEnvParameter4dARB@40) + GL_STUB_ALIAS(ProgramParameter4dvNV, 465, ProgramParameter4dvNV@12, ProgramEnvParameter4dvARB, ProgramEnvParameter4dvARB@12) + GL_STUB_ALIAS(ProgramParameter4fNV, 466, ProgramParameter4fNV@24, ProgramEnvParameter4fARB, ProgramEnvParameter4fARB@24) + GL_STUB_ALIAS(ProgramParameter4fvNV, 467, ProgramParameter4fvNV@12, ProgramEnvParameter4fvARB, ProgramEnvParameter4fvARB@12) + GL_STUB_ALIAS(VertexAttrib1d, 473, VertexAttrib1d@12, VertexAttrib1dARB, VertexAttrib1dARB@12) + GL_STUB_ALIAS(VertexAttrib1dv, 474, VertexAttrib1dv@8, VertexAttrib1dvARB, VertexAttrib1dvARB@8) + GL_STUB_ALIAS(VertexAttrib1f, 475, VertexAttrib1f@8, VertexAttrib1fARB, VertexAttrib1fARB@8) + GL_STUB_ALIAS(VertexAttrib1fv, 476, VertexAttrib1fv@8, VertexAttrib1fvARB, VertexAttrib1fvARB@8) + GL_STUB_ALIAS(VertexAttrib1s, 477, VertexAttrib1s@8, VertexAttrib1sARB, VertexAttrib1sARB@8) + GL_STUB_ALIAS(VertexAttrib1sv, 478, VertexAttrib1sv@8, VertexAttrib1svARB, VertexAttrib1svARB@8) + GL_STUB_ALIAS(VertexAttrib2d, 479, VertexAttrib2d@20, VertexAttrib2dARB, VertexAttrib2dARB@20) + GL_STUB_ALIAS(VertexAttrib2dv, 480, VertexAttrib2dv@8, VertexAttrib2dvARB, VertexAttrib2dvARB@8) + GL_STUB_ALIAS(VertexAttrib2f, 481, VertexAttrib2f@12, VertexAttrib2fARB, VertexAttrib2fARB@12) + GL_STUB_ALIAS(VertexAttrib2fv, 482, VertexAttrib2fv@8, VertexAttrib2fvARB, VertexAttrib2fvARB@8) + GL_STUB_ALIAS(VertexAttrib2s, 483, VertexAttrib2s@12, VertexAttrib2sARB, VertexAttrib2sARB@12) + GL_STUB_ALIAS(VertexAttrib2sv, 484, VertexAttrib2sv@8, VertexAttrib2svARB, VertexAttrib2svARB@8) + GL_STUB_ALIAS(VertexAttrib3d, 485, VertexAttrib3d@28, VertexAttrib3dARB, VertexAttrib3dARB@28) + GL_STUB_ALIAS(VertexAttrib3dv, 486, VertexAttrib3dv@8, VertexAttrib3dvARB, VertexAttrib3dvARB@8) + GL_STUB_ALIAS(VertexAttrib3f, 487, VertexAttrib3f@16, VertexAttrib3fARB, VertexAttrib3fARB@16) + GL_STUB_ALIAS(VertexAttrib3fv, 488, VertexAttrib3fv@8, VertexAttrib3fvARB, VertexAttrib3fvARB@8) + GL_STUB_ALIAS(VertexAttrib3s, 489, VertexAttrib3s@16, VertexAttrib3sARB, VertexAttrib3sARB@16) + GL_STUB_ALIAS(VertexAttrib3sv, 490, VertexAttrib3sv@8, VertexAttrib3svARB, VertexAttrib3svARB@8) + GL_STUB_ALIAS(VertexAttrib4Nbv, 491, VertexAttrib4Nbv@8, VertexAttrib4NbvARB, VertexAttrib4NbvARB@8) + GL_STUB_ALIAS(VertexAttrib4Niv, 492, VertexAttrib4Niv@8, VertexAttrib4NivARB, VertexAttrib4NivARB@8) + GL_STUB_ALIAS(VertexAttrib4Nsv, 493, VertexAttrib4Nsv@8, VertexAttrib4NsvARB, VertexAttrib4NsvARB@8) + GL_STUB_ALIAS(VertexAttrib4Nub, 494, VertexAttrib4Nub@20, VertexAttrib4NubARB, VertexAttrib4NubARB@20) + GL_STUB_ALIAS(VertexAttrib4Nubv, 495, VertexAttrib4Nubv@8, VertexAttrib4NubvARB, VertexAttrib4NubvARB@8) + GL_STUB_ALIAS(VertexAttrib4Nuiv, 496, VertexAttrib4Nuiv@8, VertexAttrib4NuivARB, VertexAttrib4NuivARB@8) + GL_STUB_ALIAS(VertexAttrib4Nusv, 497, VertexAttrib4Nusv@8, VertexAttrib4NusvARB, VertexAttrib4NusvARB@8) + GL_STUB_ALIAS(VertexAttrib4bv, 498, VertexAttrib4bv@8, VertexAttrib4bvARB, VertexAttrib4bvARB@8) + GL_STUB_ALIAS(VertexAttrib4d, 499, VertexAttrib4d@36, VertexAttrib4dARB, VertexAttrib4dARB@36) + GL_STUB_ALIAS(VertexAttrib4dv, 500, VertexAttrib4dv@8, VertexAttrib4dvARB, VertexAttrib4dvARB@8) + GL_STUB_ALIAS(VertexAttrib4f, 501, VertexAttrib4f@20, VertexAttrib4fARB, VertexAttrib4fARB@20) + GL_STUB_ALIAS(VertexAttrib4fv, 502, VertexAttrib4fv@8, VertexAttrib4fvARB, VertexAttrib4fvARB@8) + GL_STUB_ALIAS(VertexAttrib4iv, 503, VertexAttrib4iv@8, VertexAttrib4ivARB, VertexAttrib4ivARB@8) + GL_STUB_ALIAS(VertexAttrib4s, 504, VertexAttrib4s@20, VertexAttrib4sARB, VertexAttrib4sARB@20) + GL_STUB_ALIAS(VertexAttrib4sv, 505, VertexAttrib4sv@8, VertexAttrib4svARB, VertexAttrib4svARB@8) + GL_STUB_ALIAS(VertexAttrib4ubv, 506, VertexAttrib4ubv@8, VertexAttrib4ubvARB, VertexAttrib4ubvARB@8) + GL_STUB_ALIAS(VertexAttrib4uiv, 507, VertexAttrib4uiv@8, VertexAttrib4uivARB, VertexAttrib4uivARB@8) + GL_STUB_ALIAS(VertexAttrib4usv, 508, VertexAttrib4usv@8, VertexAttrib4usvARB, VertexAttrib4usvARB@8) + GL_STUB_ALIAS(VertexAttribPointer, 509, VertexAttribPointer@24, VertexAttribPointerARB, VertexAttribPointerARB@24) + GL_STUB_ALIAS(BindBuffer, 510, BindBuffer@8, BindBufferARB, BindBufferARB@8) + GL_STUB_ALIAS(BufferData, 511, BufferData@16, BufferDataARB, BufferDataARB@16) + GL_STUB_ALIAS(BufferSubData, 512, BufferSubData@16, BufferSubDataARB, BufferSubDataARB@16) + GL_STUB_ALIAS(DeleteBuffers, 513, DeleteBuffers@8, DeleteBuffersARB, DeleteBuffersARB@8) + GL_STUB_ALIAS(GenBuffers, 514, GenBuffers@8, GenBuffersARB, GenBuffersARB@8) + GL_STUB_ALIAS(GetBufferParameteriv, 515, GetBufferParameteriv@12, GetBufferParameterivARB, GetBufferParameterivARB@12) + GL_STUB_ALIAS(GetBufferPointerv, 516, GetBufferPointerv@12, GetBufferPointervARB, GetBufferPointervARB@12) + GL_STUB_ALIAS(GetBufferSubData, 517, GetBufferSubData@16, GetBufferSubDataARB, GetBufferSubDataARB@16) + GL_STUB_ALIAS(IsBuffer, 518, IsBuffer@4, IsBufferARB, IsBufferARB@4) + GL_STUB_ALIAS(MapBuffer, 519, MapBuffer@8, MapBufferARB, MapBufferARB@8) + GL_STUB_ALIAS(UnmapBuffer, 520, UnmapBuffer@4, UnmapBufferARB, UnmapBufferARB@4) + GL_STUB_ALIAS(BeginQuery, 521, BeginQuery@8, BeginQueryARB, BeginQueryARB@8) + GL_STUB_ALIAS(DeleteQueries, 522, DeleteQueries@8, DeleteQueriesARB, DeleteQueriesARB@8) + GL_STUB_ALIAS(EndQuery, 523, EndQuery@4, EndQueryARB, EndQueryARB@4) + GL_STUB_ALIAS(GenQueries, 524, GenQueries@8, GenQueriesARB, GenQueriesARB@8) + GL_STUB_ALIAS(GetQueryObjectiv, 525, GetQueryObjectiv@12, GetQueryObjectivARB, GetQueryObjectivARB@12) + GL_STUB_ALIAS(GetQueryObjectuiv, 526, GetQueryObjectuiv@12, GetQueryObjectuivARB, GetQueryObjectuivARB@12) + GL_STUB_ALIAS(GetQueryiv, 527, GetQueryiv@12, GetQueryivARB, GetQueryivARB@12) + GL_STUB_ALIAS(IsQuery, 528, IsQuery@4, IsQueryARB, IsQueryARB@4) + GL_STUB_ALIAS(CompileShader, 530, CompileShader@4, CompileShaderARB, CompileShaderARB@4) + GL_STUB_ALIAS(GetActiveUniform, 535, GetActiveUniform@28, GetActiveUniformARB, GetActiveUniformARB@28) + GL_STUB_ALIAS(GetShaderSource, 541, GetShaderSource@16, GetShaderSourceARB, GetShaderSourceARB@16) + GL_STUB_ALIAS(GetUniformLocation, 542, GetUniformLocation@8, GetUniformLocationARB, GetUniformLocationARB@8) + GL_STUB_ALIAS(GetUniformfv, 543, GetUniformfv@12, GetUniformfvARB, GetUniformfvARB@12) + GL_STUB_ALIAS(GetUniformiv, 544, GetUniformiv@12, GetUniformivARB, GetUniformivARB@12) + GL_STUB_ALIAS(LinkProgram, 545, LinkProgram@4, LinkProgramARB, LinkProgramARB@4) + GL_STUB_ALIAS(ShaderSource, 546, ShaderSource@16, ShaderSourceARB, ShaderSourceARB@16) + GL_STUB_ALIAS(Uniform1f, 547, Uniform1f@8, Uniform1fARB, Uniform1fARB@8) + GL_STUB_ALIAS(Uniform1fv, 548, Uniform1fv@12, Uniform1fvARB, Uniform1fvARB@12) + GL_STUB_ALIAS(Uniform1i, 549, Uniform1i@8, Uniform1iARB, Uniform1iARB@8) + GL_STUB_ALIAS(Uniform1iv, 550, Uniform1iv@12, Uniform1ivARB, Uniform1ivARB@12) + GL_STUB_ALIAS(Uniform2f, 551, Uniform2f@12, Uniform2fARB, Uniform2fARB@12) + GL_STUB_ALIAS(Uniform2fv, 552, Uniform2fv@12, Uniform2fvARB, Uniform2fvARB@12) + GL_STUB_ALIAS(Uniform2i, 553, Uniform2i@12, Uniform2iARB, Uniform2iARB@12) + GL_STUB_ALIAS(Uniform2iv, 554, Uniform2iv@12, Uniform2ivARB, Uniform2ivARB@12) + GL_STUB_ALIAS(Uniform3f, 555, Uniform3f@16, Uniform3fARB, Uniform3fARB@16) + GL_STUB_ALIAS(Uniform3fv, 556, Uniform3fv@12, Uniform3fvARB, Uniform3fvARB@12) + GL_STUB_ALIAS(Uniform3i, 557, Uniform3i@16, Uniform3iARB, Uniform3iARB@16) + GL_STUB_ALIAS(Uniform3iv, 558, Uniform3iv@12, Uniform3ivARB, Uniform3ivARB@12) + GL_STUB_ALIAS(Uniform4f, 559, Uniform4f@20, Uniform4fARB, Uniform4fARB@20) + GL_STUB_ALIAS(Uniform4fv, 560, Uniform4fv@12, Uniform4fvARB, Uniform4fvARB@12) + GL_STUB_ALIAS(Uniform4i, 561, Uniform4i@20, Uniform4iARB, Uniform4iARB@20) + GL_STUB_ALIAS(Uniform4iv, 562, Uniform4iv@12, Uniform4ivARB, Uniform4ivARB@12) + GL_STUB_ALIAS(UniformMatrix2fv, 563, UniformMatrix2fv@16, UniformMatrix2fvARB, UniformMatrix2fvARB@16) + GL_STUB_ALIAS(UniformMatrix3fv, 564, UniformMatrix3fv@16, UniformMatrix3fvARB, UniformMatrix3fvARB@16) + GL_STUB_ALIAS(UniformMatrix4fv, 565, UniformMatrix4fv@16, UniformMatrix4fvARB, UniformMatrix4fvARB@16) + GL_STUB_ALIAS(UseProgram, 566, UseProgram@4, UseProgramObjectARB, UseProgramObjectARB@4) + GL_STUB_ALIAS(ValidateProgram, 567, ValidateProgram@4, ValidateProgramARB, ValidateProgramARB@4) + GL_STUB_ALIAS(BindAttribLocation, 568, BindAttribLocation@12, BindAttribLocationARB, BindAttribLocationARB@12) + GL_STUB_ALIAS(GetActiveAttrib, 569, GetActiveAttrib@28, GetActiveAttribARB, GetActiveAttribARB@28) + GL_STUB_ALIAS(GetAttribLocation, 570, GetAttribLocation@8, GetAttribLocationARB, GetAttribLocationARB@8) + GL_STUB_ALIAS(DrawBuffers, 571, DrawBuffers@8, DrawBuffersARB, DrawBuffersARB@8) + GL_STUB_ALIAS(DrawBuffersATI, 571, DrawBuffersATI@8, DrawBuffersARB, DrawBuffersARB@8) + GL_STUB_ALIAS(DrawArraysInstancedEXT, 572, DrawArraysInstancedEXT@16, DrawArraysInstancedARB, DrawArraysInstancedARB@16) + GL_STUB_ALIAS(DrawArraysInstanced, 572, DrawArraysInstanced@16, DrawArraysInstancedARB, DrawArraysInstancedARB@16) + GL_STUB_ALIAS(DrawElementsInstancedEXT, 573, DrawElementsInstancedEXT@20, DrawElementsInstancedARB, DrawElementsInstancedARB@20) + GL_STUB_ALIAS(DrawElementsInstanced, 573, DrawElementsInstanced@20, DrawElementsInstancedARB, DrawElementsInstancedARB@20) + GL_STUB_ALIAS(RenderbufferStorageMultisampleEXT, 574, RenderbufferStorageMultisampleEXT@20, RenderbufferStorageMultisample, RenderbufferStorageMultisample@20) + GL_STUB_ALIAS(PointParameterf, 615, PointParameterf@8, PointParameterfEXT, PointParameterfEXT@8) + GL_STUB_ALIAS(PointParameterfARB, 615, PointParameterfARB@8, PointParameterfEXT, PointParameterfEXT@8) + GL_STUB_ALIAS(PointParameterfv, 616, PointParameterfv@8, PointParameterfvEXT, PointParameterfvEXT@8) + GL_STUB_ALIAS(PointParameterfvARB, 616, PointParameterfvARB@8, PointParameterfvEXT, PointParameterfvEXT@8) + GL_STUB_ALIAS(SecondaryColor3b, 619, SecondaryColor3b@12, SecondaryColor3bEXT, SecondaryColor3bEXT@12) + GL_STUB_ALIAS(SecondaryColor3bv, 620, SecondaryColor3bv@4, SecondaryColor3bvEXT, SecondaryColor3bvEXT@4) + GL_STUB_ALIAS(SecondaryColor3d, 621, SecondaryColor3d@24, SecondaryColor3dEXT, SecondaryColor3dEXT@24) + GL_STUB_ALIAS(SecondaryColor3dv, 622, SecondaryColor3dv@4, SecondaryColor3dvEXT, SecondaryColor3dvEXT@4) + GL_STUB_ALIAS(SecondaryColor3f, 623, SecondaryColor3f@12, SecondaryColor3fEXT, SecondaryColor3fEXT@12) + GL_STUB_ALIAS(SecondaryColor3fv, 624, SecondaryColor3fv@4, SecondaryColor3fvEXT, SecondaryColor3fvEXT@4) + GL_STUB_ALIAS(SecondaryColor3i, 625, SecondaryColor3i@12, SecondaryColor3iEXT, SecondaryColor3iEXT@12) + GL_STUB_ALIAS(SecondaryColor3iv, 626, SecondaryColor3iv@4, SecondaryColor3ivEXT, SecondaryColor3ivEXT@4) + GL_STUB_ALIAS(SecondaryColor3s, 627, SecondaryColor3s@12, SecondaryColor3sEXT, SecondaryColor3sEXT@12) + GL_STUB_ALIAS(SecondaryColor3sv, 628, SecondaryColor3sv@4, SecondaryColor3svEXT, SecondaryColor3svEXT@4) + GL_STUB_ALIAS(SecondaryColor3ub, 629, SecondaryColor3ub@12, SecondaryColor3ubEXT, SecondaryColor3ubEXT@12) + GL_STUB_ALIAS(SecondaryColor3ubv, 630, SecondaryColor3ubv@4, SecondaryColor3ubvEXT, SecondaryColor3ubvEXT@4) + GL_STUB_ALIAS(SecondaryColor3ui, 631, SecondaryColor3ui@12, SecondaryColor3uiEXT, SecondaryColor3uiEXT@12) + GL_STUB_ALIAS(SecondaryColor3uiv, 632, SecondaryColor3uiv@4, SecondaryColor3uivEXT, SecondaryColor3uivEXT@4) + GL_STUB_ALIAS(SecondaryColor3us, 633, SecondaryColor3us@12, SecondaryColor3usEXT, SecondaryColor3usEXT@12) + GL_STUB_ALIAS(SecondaryColor3usv, 634, SecondaryColor3usv@4, SecondaryColor3usvEXT, SecondaryColor3usvEXT@4) + GL_STUB_ALIAS(SecondaryColorPointer, 635, SecondaryColorPointer@16, SecondaryColorPointerEXT, SecondaryColorPointerEXT@16) + GL_STUB_ALIAS(MultiDrawArrays, 636, MultiDrawArrays@16, MultiDrawArraysEXT, MultiDrawArraysEXT@16) + GL_STUB_ALIAS(MultiDrawElements, 637, MultiDrawElements@20, MultiDrawElementsEXT, MultiDrawElementsEXT@20) + GL_STUB_ALIAS(FogCoordPointer, 638, FogCoordPointer@12, FogCoordPointerEXT, FogCoordPointerEXT@12) + GL_STUB_ALIAS(FogCoordd, 639, FogCoordd@8, FogCoorddEXT, FogCoorddEXT@8) + GL_STUB_ALIAS(FogCoorddv, 640, FogCoorddv@4, FogCoorddvEXT, FogCoorddvEXT@4) + GL_STUB_ALIAS(FogCoordf, 641, FogCoordf@4, FogCoordfEXT, FogCoordfEXT@4) + GL_STUB_ALIAS(FogCoordfv, 642, FogCoordfv@4, FogCoordfvEXT, FogCoordfvEXT@4) + GL_STUB_ALIAS(BlendFuncSeparate, 644, BlendFuncSeparate@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16) + GL_STUB_ALIAS(WindowPos2d, 661, WindowPos2d@16, WindowPos2dMESA, WindowPos2dMESA@16) + GL_STUB_ALIAS(WindowPos2dARB, 661, WindowPos2dARB@16, WindowPos2dMESA, WindowPos2dMESA@16) + GL_STUB_ALIAS(WindowPos2dv, 662, WindowPos2dv@4, WindowPos2dvMESA, WindowPos2dvMESA@4) + GL_STUB_ALIAS(WindowPos2dvARB, 662, WindowPos2dvARB@4, WindowPos2dvMESA, WindowPos2dvMESA@4) + GL_STUB_ALIAS(WindowPos2f, 663, WindowPos2f@8, WindowPos2fMESA, WindowPos2fMESA@8) + GL_STUB_ALIAS(WindowPos2fARB, 663, WindowPos2fARB@8, WindowPos2fMESA, WindowPos2fMESA@8) + GL_STUB_ALIAS(WindowPos2fv, 664, WindowPos2fv@4, WindowPos2fvMESA, WindowPos2fvMESA@4) + GL_STUB_ALIAS(WindowPos2fvARB, 664, WindowPos2fvARB@4, WindowPos2fvMESA, WindowPos2fvMESA@4) + GL_STUB_ALIAS(WindowPos2i, 665, WindowPos2i@8, WindowPos2iMESA, WindowPos2iMESA@8) + GL_STUB_ALIAS(WindowPos2iARB, 665, WindowPos2iARB@8, WindowPos2iMESA, WindowPos2iMESA@8) + GL_STUB_ALIAS(WindowPos2iv, 666, WindowPos2iv@4, WindowPos2ivMESA, WindowPos2ivMESA@4) + GL_STUB_ALIAS(WindowPos2ivARB, 666, WindowPos2ivARB@4, WindowPos2ivMESA, WindowPos2ivMESA@4) + GL_STUB_ALIAS(WindowPos2s, 667, WindowPos2s@8, WindowPos2sMESA, WindowPos2sMESA@8) + GL_STUB_ALIAS(WindowPos2sARB, 667, WindowPos2sARB@8, WindowPos2sMESA, WindowPos2sMESA@8) + GL_STUB_ALIAS(WindowPos2sv, 668, WindowPos2sv@4, WindowPos2svMESA, WindowPos2svMESA@4) + GL_STUB_ALIAS(WindowPos2svARB, 668, WindowPos2svARB@4, WindowPos2svMESA, WindowPos2svMESA@4) + GL_STUB_ALIAS(WindowPos3d, 669, WindowPos3d@24, WindowPos3dMESA, WindowPos3dMESA@24) + GL_STUB_ALIAS(WindowPos3dARB, 669, WindowPos3dARB@24, WindowPos3dMESA, WindowPos3dMESA@24) + GL_STUB_ALIAS(WindowPos3dv, 670, WindowPos3dv@4, WindowPos3dvMESA, WindowPos3dvMESA@4) + GL_STUB_ALIAS(WindowPos3dvARB, 670, WindowPos3dvARB@4, WindowPos3dvMESA, WindowPos3dvMESA@4) + GL_STUB_ALIAS(WindowPos3f, 671, WindowPos3f@12, WindowPos3fMESA, WindowPos3fMESA@12) + GL_STUB_ALIAS(WindowPos3fARB, 671, WindowPos3fARB@12, WindowPos3fMESA, WindowPos3fMESA@12) + GL_STUB_ALIAS(WindowPos3fv, 672, WindowPos3fv@4, WindowPos3fvMESA, WindowPos3fvMESA@4) + GL_STUB_ALIAS(WindowPos3fvARB, 672, WindowPos3fvARB@4, WindowPos3fvMESA, WindowPos3fvMESA@4) + GL_STUB_ALIAS(WindowPos3i, 673, WindowPos3i@12, WindowPos3iMESA, WindowPos3iMESA@12) + GL_STUB_ALIAS(WindowPos3iARB, 673, WindowPos3iARB@12, WindowPos3iMESA, WindowPos3iMESA@12) + GL_STUB_ALIAS(WindowPos3iv, 674, WindowPos3iv@4, WindowPos3ivMESA, WindowPos3ivMESA@4) + GL_STUB_ALIAS(WindowPos3ivARB, 674, WindowPos3ivARB@4, WindowPos3ivMESA, WindowPos3ivMESA@4) + GL_STUB_ALIAS(WindowPos3s, 675, WindowPos3s@12, WindowPos3sMESA, WindowPos3sMESA@12) + GL_STUB_ALIAS(WindowPos3sARB, 675, WindowPos3sARB@12, WindowPos3sMESA, WindowPos3sMESA@12) + GL_STUB_ALIAS(WindowPos3sv, 676, WindowPos3sv@4, WindowPos3svMESA, WindowPos3svMESA@4) + GL_STUB_ALIAS(WindowPos3svARB, 676, WindowPos3svARB@4, WindowPos3svMESA, WindowPos3svMESA@4) + GL_STUB_ALIAS(BindProgramARB, 695, BindProgramARB@8, BindProgramNV, BindProgramNV@8) + GL_STUB_ALIAS(DeleteProgramsARB, 696, DeleteProgramsARB@8, DeleteProgramsNV, DeleteProgramsNV@8) + GL_STUB_ALIAS(GenProgramsARB, 698, GenProgramsARB@8, GenProgramsNV, GenProgramsNV@8) + GL_STUB_ALIAS(GetVertexAttribPointerv, 704, GetVertexAttribPointerv@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12) + GL_STUB_ALIAS(GetVertexAttribPointervARB, 704, GetVertexAttribPointervARB@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12) + GL_STUB_ALIAS(IsProgramARB, 708, IsProgramARB@4, IsProgramNV, IsProgramNV@4) + GL_STUB_ALIAS(PointParameteri, 772, PointParameteri@8, PointParameteriNV, PointParameteriNV@8) + GL_STUB_ALIAS(PointParameteriv, 773, PointParameteriv@8, PointParameterivNV, PointParameterivNV@8) + GL_STUB_ALIAS(DeleteVertexArrays, 776, DeleteVertexArrays@8, _dispatch_stub_776, _dispatch_stub_776@8) + GL_STUB_ALIAS(IsVertexArray, 778, IsVertexArray@4, _dispatch_stub_778, _dispatch_stub_778@4) + GL_STUB_ALIAS(PrimitiveRestartIndex, 785, PrimitiveRestartIndex@4, PrimitiveRestartIndexNV, PrimitiveRestartIndexNV@4) + GL_STUB_ALIAS(BlendEquationSeparate, 788, BlendEquationSeparate@8, _dispatch_stub_788, _dispatch_stub_788@8) + GL_STUB_ALIAS(BindFramebuffer, 789, BindFramebuffer@8, BindFramebufferEXT, BindFramebufferEXT@8) + GL_STUB_ALIAS(BindRenderbuffer, 790, BindRenderbuffer@8, BindRenderbufferEXT, BindRenderbufferEXT@8) + GL_STUB_ALIAS(CheckFramebufferStatus, 791, CheckFramebufferStatus@4, CheckFramebufferStatusEXT, CheckFramebufferStatusEXT@4) + GL_STUB_ALIAS(DeleteFramebuffers, 792, DeleteFramebuffers@8, DeleteFramebuffersEXT, DeleteFramebuffersEXT@8) + GL_STUB_ALIAS(DeleteRenderbuffers, 793, DeleteRenderbuffers@8, DeleteRenderbuffersEXT, DeleteRenderbuffersEXT@8) + GL_STUB_ALIAS(FramebufferRenderbuffer, 794, FramebufferRenderbuffer@16, FramebufferRenderbufferEXT, FramebufferRenderbufferEXT@16) + GL_STUB_ALIAS(FramebufferTexture1D, 795, FramebufferTexture1D@20, FramebufferTexture1DEXT, FramebufferTexture1DEXT@20) + GL_STUB_ALIAS(FramebufferTexture2D, 796, FramebufferTexture2D@20, FramebufferTexture2DEXT, FramebufferTexture2DEXT@20) + GL_STUB_ALIAS(FramebufferTexture3D, 797, FramebufferTexture3D@24, FramebufferTexture3DEXT, FramebufferTexture3DEXT@24) + GL_STUB_ALIAS(GenFramebuffers, 798, GenFramebuffers@8, GenFramebuffersEXT, GenFramebuffersEXT@8) + GL_STUB_ALIAS(GenRenderbuffers, 799, GenRenderbuffers@8, GenRenderbuffersEXT, GenRenderbuffersEXT@8) + GL_STUB_ALIAS(GenerateMipmap, 800, GenerateMipmap@4, GenerateMipmapEXT, GenerateMipmapEXT@4) + GL_STUB_ALIAS(GetFramebufferAttachmentParameteriv, 801, GetFramebufferAttachmentParameteriv@16, GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameterivEXT@16) + GL_STUB_ALIAS(GetRenderbufferParameteriv, 802, GetRenderbufferParameteriv@12, GetRenderbufferParameterivEXT, GetRenderbufferParameterivEXT@12) + GL_STUB_ALIAS(IsFramebuffer, 803, IsFramebuffer@4, IsFramebufferEXT, IsFramebufferEXT@4) + GL_STUB_ALIAS(IsRenderbuffer, 804, IsRenderbuffer@4, IsRenderbufferEXT, IsRenderbufferEXT@4) + GL_STUB_ALIAS(RenderbufferStorage, 805, RenderbufferStorage@16, RenderbufferStorageEXT, RenderbufferStorageEXT@16) + GL_STUB_ALIAS(BlitFramebuffer, 806, BlitFramebuffer@40, _dispatch_stub_806, _dispatch_stub_806@40) + GL_STUB_ALIAS(BindFragDataLocation, 809, BindFragDataLocation@12, BindFragDataLocationEXT, BindFragDataLocationEXT@12) + GL_STUB_ALIAS(GetFragDataLocation, 810, GetFragDataLocation@8, GetFragDataLocationEXT, GetFragDataLocationEXT@8) + GL_STUB_ALIAS(GetUniformuiv, 811, GetUniformuiv@12, GetUniformuivEXT, GetUniformuivEXT@12) + GL_STUB_ALIAS(GetVertexAttribIiv, 812, GetVertexAttribIiv@12, GetVertexAttribIivEXT, GetVertexAttribIivEXT@12) + GL_STUB_ALIAS(GetVertexAttribIuiv, 813, GetVertexAttribIuiv@12, GetVertexAttribIuivEXT, GetVertexAttribIuivEXT@12) + GL_STUB_ALIAS(Uniform1ui, 814, Uniform1ui@8, Uniform1uiEXT, Uniform1uiEXT@8) + GL_STUB_ALIAS(Uniform1uiv, 815, Uniform1uiv@12, Uniform1uivEXT, Uniform1uivEXT@12) + GL_STUB_ALIAS(Uniform2ui, 816, Uniform2ui@12, Uniform2uiEXT, Uniform2uiEXT@12) + GL_STUB_ALIAS(Uniform2uiv, 817, Uniform2uiv@12, Uniform2uivEXT, Uniform2uivEXT@12) + GL_STUB_ALIAS(Uniform3ui, 818, Uniform3ui@16, Uniform3uiEXT, Uniform3uiEXT@16) + GL_STUB_ALIAS(Uniform3uiv, 819, Uniform3uiv@12, Uniform3uivEXT, Uniform3uivEXT@12) + GL_STUB_ALIAS(Uniform4ui, 820, Uniform4ui@20, Uniform4uiEXT, Uniform4uiEXT@20) + GL_STUB_ALIAS(Uniform4uiv, 821, Uniform4uiv@12, Uniform4uivEXT, Uniform4uivEXT@12) + GL_STUB_ALIAS(VertexAttribI1i, 822, VertexAttribI1i@8, VertexAttribI1iEXT, VertexAttribI1iEXT@8) + GL_STUB_ALIAS(VertexAttribI1iv, 823, VertexAttribI1iv@8, VertexAttribI1ivEXT, VertexAttribI1ivEXT@8) + GL_STUB_ALIAS(VertexAttribI1ui, 824, VertexAttribI1ui@8, VertexAttribI1uiEXT, VertexAttribI1uiEXT@8) + GL_STUB_ALIAS(VertexAttribI1uiv, 825, VertexAttribI1uiv@8, VertexAttribI1uivEXT, VertexAttribI1uivEXT@8) + GL_STUB_ALIAS(VertexAttribI2i, 826, VertexAttribI2i@12, VertexAttribI2iEXT, VertexAttribI2iEXT@12) + GL_STUB_ALIAS(VertexAttribI2iv, 827, VertexAttribI2iv@8, VertexAttribI2ivEXT, VertexAttribI2ivEXT@8) + GL_STUB_ALIAS(VertexAttribI2ui, 828, VertexAttribI2ui@12, VertexAttribI2uiEXT, VertexAttribI2uiEXT@12) + GL_STUB_ALIAS(VertexAttribI2uiv, 829, VertexAttribI2uiv@8, VertexAttribI2uivEXT, VertexAttribI2uivEXT@8) + GL_STUB_ALIAS(VertexAttribI3i, 830, VertexAttribI3i@16, VertexAttribI3iEXT, VertexAttribI3iEXT@16) + GL_STUB_ALIAS(VertexAttribI3iv, 831, VertexAttribI3iv@8, VertexAttribI3ivEXT, VertexAttribI3ivEXT@8) + GL_STUB_ALIAS(VertexAttribI3ui, 832, VertexAttribI3ui@16, VertexAttribI3uiEXT, VertexAttribI3uiEXT@16) + GL_STUB_ALIAS(VertexAttribI3uiv, 833, VertexAttribI3uiv@8, VertexAttribI3uivEXT, VertexAttribI3uivEXT@8) + GL_STUB_ALIAS(VertexAttribI4bv, 834, VertexAttribI4bv@8, VertexAttribI4bvEXT, VertexAttribI4bvEXT@8) + GL_STUB_ALIAS(VertexAttribI4i, 835, VertexAttribI4i@20, VertexAttribI4iEXT, VertexAttribI4iEXT@20) + GL_STUB_ALIAS(VertexAttribI4iv, 836, VertexAttribI4iv@8, VertexAttribI4ivEXT, VertexAttribI4ivEXT@8) + GL_STUB_ALIAS(VertexAttribI4sv, 837, VertexAttribI4sv@8, VertexAttribI4svEXT, VertexAttribI4svEXT@8) + GL_STUB_ALIAS(VertexAttribI4ubv, 838, VertexAttribI4ubv@8, VertexAttribI4ubvEXT, VertexAttribI4ubvEXT@8) + GL_STUB_ALIAS(VertexAttribI4ui, 839, VertexAttribI4ui@20, VertexAttribI4uiEXT, VertexAttribI4uiEXT@20) + GL_STUB_ALIAS(VertexAttribI4uiv, 840, VertexAttribI4uiv@8, VertexAttribI4uivEXT, VertexAttribI4uivEXT@8) + GL_STUB_ALIAS(VertexAttribI4usv, 841, VertexAttribI4usv@8, VertexAttribI4usvEXT, VertexAttribI4usvEXT@8) + GL_STUB_ALIAS(VertexAttribIPointer, 842, VertexAttribIPointer@20, VertexAttribIPointerEXT, VertexAttribIPointerEXT@20) + GL_STUB_ALIAS(FramebufferTextureLayer, 843, FramebufferTextureLayer@20, FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20) + GL_STUB_ALIAS(ColorMaski, 844, ColorMaski@20, ColorMaskIndexedEXT, ColorMaskIndexedEXT@20) + GL_STUB_ALIAS(Disablei, 845, Disablei@8, DisableIndexedEXT, DisableIndexedEXT@8) + GL_STUB_ALIAS(Enablei, 846, Enablei@8, EnableIndexedEXT, EnableIndexedEXT@8) + GL_STUB_ALIAS(GetBooleani_v, 847, GetBooleani_v@12, GetBooleanIndexedvEXT, GetBooleanIndexedvEXT@12) + GL_STUB_ALIAS(GetIntegeri_v, 848, GetIntegeri_v@12, GetIntegerIndexedvEXT, GetIntegerIndexedvEXT@12) + GL_STUB_ALIAS(IsEnabledi, 849, IsEnabledi@8, IsEnabledIndexedEXT, IsEnabledIndexedEXT@8) + GL_STUB_ALIAS(GetTexParameterIiv, 852, GetTexParameterIiv@12, GetTexParameterIivEXT, GetTexParameterIivEXT@12) + GL_STUB_ALIAS(GetTexParameterIuiv, 853, GetTexParameterIuiv@12, GetTexParameterIuivEXT, GetTexParameterIuivEXT@12) + GL_STUB_ALIAS(TexParameterIiv, 854, TexParameterIiv@12, TexParameterIivEXT, TexParameterIivEXT@12) + GL_STUB_ALIAS(TexParameterIuiv, 855, TexParameterIuiv@12, TexParameterIuivEXT, TexParameterIuivEXT@12) + GL_STUB_ALIAS(BeginConditionalRender, 856, BeginConditionalRender@8, BeginConditionalRenderNV, BeginConditionalRenderNV@8) + GL_STUB_ALIAS(EndConditionalRender, 857, EndConditionalRender@0, EndConditionalRenderNV, EndConditionalRenderNV@0) + GL_STUB_ALIAS(BeginTransformFeedback, 858, BeginTransformFeedback@4, BeginTransformFeedbackEXT, BeginTransformFeedbackEXT@4) + GL_STUB_ALIAS(BindBufferBase, 859, BindBufferBase@12, BindBufferBaseEXT, BindBufferBaseEXT@12) + GL_STUB_ALIAS(BindBufferRange, 861, BindBufferRange@20, BindBufferRangeEXT, BindBufferRangeEXT@20) + GL_STUB_ALIAS(EndTransformFeedback, 862, EndTransformFeedback@0, EndTransformFeedbackEXT, EndTransformFeedbackEXT@0) + GL_STUB_ALIAS(GetTransformFeedbackVarying, 863, GetTransformFeedbackVarying@28, GetTransformFeedbackVaryingEXT, GetTransformFeedbackVaryingEXT@28) + GL_STUB_ALIAS(TransformFeedbackVaryings, 864, TransformFeedbackVaryings@16, TransformFeedbackVaryingsEXT, TransformFeedbackVaryingsEXT@16) + GL_STUB_ALIAS(ProvokingVertex, 865, ProvokingVertex@4, ProvokingVertexEXT, ProvokingVertexEXT@4) GLOBL GLNAME(gl_dispatch_functions_end) HIDDEN(GLNAME(gl_dispatch_functions_end)) diff --git a/src/mapi/glapi/glapidispatch.h b/src/mapi/glapi/glapidispatch.h deleted file mode 100644 index 582fc01556..0000000000 --- a/src/mapi/glapi/glapidispatch.h +++ /dev/null @@ -1,4231 +0,0 @@ -/* DO NOT EDIT - This file generated automatically by gl_table.py (from Mesa) script */ - -/* - * (C) Copyright IBM Corporation 2005 - * 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, sub license, - * 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 (including the next - * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM, - * AND/OR THEIR SUPPLIERS 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. - */ - -#if !defined( _GLAPI_DISPATCH_H_ ) -# define _GLAPI_DISPATCH_H_ - - -/* this file should not be included directly in mesa */ - -/** - * \file glapidispatch.h - * Macros for handling GL dispatch tables. - * - * For each known GL function, there are 3 macros in this file. The first - * macro is named CALL_FuncName and is used to call that GL function using - * the specified dispatch table. The other 2 macros, called GET_FuncName - * can SET_FuncName, are used to get and set the dispatch pointer for the - * named function in the specified dispatch table. - */ - -#define CALL_by_offset(disp, cast, offset, parameters) \ - (*(cast (GET_by_offset(disp, offset)))) parameters -#define GET_by_offset(disp, offset) \ - (offset >= 0) ? (((_glapi_proc *)(disp))[offset]) : NULL -#define SET_by_offset(disp, offset, fn) \ - do { \ - if ( (offset) < 0 ) { \ - /* fprintf( stderr, "[%s:%u] SET_by_offset(%p, %d, %s)!\n", */ \ - /* __func__, __LINE__, disp, offset, # fn); */ \ - /* abort(); */ \ - } \ - else { \ - ( (_glapi_proc *) (disp) )[offset] = (_glapi_proc) fn; \ - } \ - } while(0) - -#define CALL_NewList(disp, parameters) (*((disp)->NewList)) parameters -#define GET_NewList(disp) ((disp)->NewList) -#define SET_NewList(disp, fn) ((disp)->NewList = fn) -#define CALL_EndList(disp, parameters) (*((disp)->EndList)) parameters -#define GET_EndList(disp) ((disp)->EndList) -#define SET_EndList(disp, fn) ((disp)->EndList = fn) -#define CALL_CallList(disp, parameters) (*((disp)->CallList)) parameters -#define GET_CallList(disp) ((disp)->CallList) -#define SET_CallList(disp, fn) ((disp)->CallList = fn) -#define CALL_CallLists(disp, parameters) (*((disp)->CallLists)) parameters -#define GET_CallLists(disp) ((disp)->CallLists) -#define SET_CallLists(disp, fn) ((disp)->CallLists = fn) -#define CALL_DeleteLists(disp, parameters) (*((disp)->DeleteLists)) parameters -#define GET_DeleteLists(disp) ((disp)->DeleteLists) -#define SET_DeleteLists(disp, fn) ((disp)->DeleteLists = fn) -#define CALL_GenLists(disp, parameters) (*((disp)->GenLists)) parameters -#define GET_GenLists(disp) ((disp)->GenLists) -#define SET_GenLists(disp, fn) ((disp)->GenLists = fn) -#define CALL_ListBase(disp, parameters) (*((disp)->ListBase)) parameters -#define GET_ListBase(disp) ((disp)->ListBase) -#define SET_ListBase(disp, fn) ((disp)->ListBase = fn) -#define CALL_Begin(disp, parameters) (*((disp)->Begin)) parameters -#define GET_Begin(disp) ((disp)->Begin) -#define SET_Begin(disp, fn) ((disp)->Begin = fn) -#define CALL_Bitmap(disp, parameters) (*((disp)->Bitmap)) parameters -#define GET_Bitmap(disp) ((disp)->Bitmap) -#define SET_Bitmap(disp, fn) ((disp)->Bitmap = fn) -#define CALL_Color3b(disp, parameters) (*((disp)->Color3b)) parameters -#define GET_Color3b(disp) ((disp)->Color3b) -#define SET_Color3b(disp, fn) ((disp)->Color3b = fn) -#define CALL_Color3bv(disp, parameters) (*((disp)->Color3bv)) parameters -#define GET_Color3bv(disp) ((disp)->Color3bv) -#define SET_Color3bv(disp, fn) ((disp)->Color3bv = fn) -#define CALL_Color3d(disp, parameters) (*((disp)->Color3d)) parameters -#define GET_Color3d(disp) ((disp)->Color3d) -#define SET_Color3d(disp, fn) ((disp)->Color3d = fn) -#define CALL_Color3dv(disp, parameters) (*((disp)->Color3dv)) parameters -#define GET_Color3dv(disp) ((disp)->Color3dv) -#define SET_Color3dv(disp, fn) ((disp)->Color3dv = fn) -#define CALL_Color3f(disp, parameters) (*((disp)->Color3f)) parameters -#define GET_Color3f(disp) ((disp)->Color3f) -#define SET_Color3f(disp, fn) ((disp)->Color3f = fn) -#define CALL_Color3fv(disp, parameters) (*((disp)->Color3fv)) parameters -#define GET_Color3fv(disp) ((disp)->Color3fv) -#define SET_Color3fv(disp, fn) ((disp)->Color3fv = fn) -#define CALL_Color3i(disp, parameters) (*((disp)->Color3i)) parameters -#define GET_Color3i(disp) ((disp)->Color3i) -#define SET_Color3i(disp, fn) ((disp)->Color3i = fn) -#define CALL_Color3iv(disp, parameters) (*((disp)->Color3iv)) parameters -#define GET_Color3iv(disp) ((disp)->Color3iv) -#define SET_Color3iv(disp, fn) ((disp)->Color3iv = fn) -#define CALL_Color3s(disp, parameters) (*((disp)->Color3s)) parameters -#define GET_Color3s(disp) ((disp)->Color3s) -#define SET_Color3s(disp, fn) ((disp)->Color3s = fn) -#define CALL_Color3sv(disp, parameters) (*((disp)->Color3sv)) parameters -#define GET_Color3sv(disp) ((disp)->Color3sv) -#define SET_Color3sv(disp, fn) ((disp)->Color3sv = fn) -#define CALL_Color3ub(disp, parameters) (*((disp)->Color3ub)) parameters -#define GET_Color3ub(disp) ((disp)->Color3ub) -#define SET_Color3ub(disp, fn) ((disp)->Color3ub = fn) -#define CALL_Color3ubv(disp, parameters) (*((disp)->Color3ubv)) parameters -#define GET_Color3ubv(disp) ((disp)->Color3ubv) -#define SET_Color3ubv(disp, fn) ((disp)->Color3ubv = fn) -#define CALL_Color3ui(disp, parameters) (*((disp)->Color3ui)) parameters -#define GET_Color3ui(disp) ((disp)->Color3ui) -#define SET_Color3ui(disp, fn) ((disp)->Color3ui = fn) -#define CALL_Color3uiv(disp, parameters) (*((disp)->Color3uiv)) parameters -#define GET_Color3uiv(disp) ((disp)->Color3uiv) -#define SET_Color3uiv(disp, fn) ((disp)->Color3uiv = fn) -#define CALL_Color3us(disp, parameters) (*((disp)->Color3us)) parameters -#define GET_Color3us(disp) ((disp)->Color3us) -#define SET_Color3us(disp, fn) ((disp)->Color3us = fn) -#define CALL_Color3usv(disp, parameters) (*((disp)->Color3usv)) parameters -#define GET_Color3usv(disp) ((disp)->Color3usv) -#define SET_Color3usv(disp, fn) ((disp)->Color3usv = fn) -#define CALL_Color4b(disp, parameters) (*((disp)->Color4b)) parameters -#define GET_Color4b(disp) ((disp)->Color4b) -#define SET_Color4b(disp, fn) ((disp)->Color4b = fn) -#define CALL_Color4bv(disp, parameters) (*((disp)->Color4bv)) parameters -#define GET_Color4bv(disp) ((disp)->Color4bv) -#define SET_Color4bv(disp, fn) ((disp)->Color4bv = fn) -#define CALL_Color4d(disp, parameters) (*((disp)->Color4d)) parameters -#define GET_Color4d(disp) ((disp)->Color4d) -#define SET_Color4d(disp, fn) ((disp)->Color4d = fn) -#define CALL_Color4dv(disp, parameters) (*((disp)->Color4dv)) parameters -#define GET_Color4dv(disp) ((disp)->Color4dv) -#define SET_Color4dv(disp, fn) ((disp)->Color4dv = fn) -#define CALL_Color4f(disp, parameters) (*((disp)->Color4f)) parameters -#define GET_Color4f(disp) ((disp)->Color4f) -#define SET_Color4f(disp, fn) ((disp)->Color4f = fn) -#define CALL_Color4fv(disp, parameters) (*((disp)->Color4fv)) parameters -#define GET_Color4fv(disp) ((disp)->Color4fv) -#define SET_Color4fv(disp, fn) ((disp)->Color4fv = fn) -#define CALL_Color4i(disp, parameters) (*((disp)->Color4i)) parameters -#define GET_Color4i(disp) ((disp)->Color4i) -#define SET_Color4i(disp, fn) ((disp)->Color4i = fn) -#define CALL_Color4iv(disp, parameters) (*((disp)->Color4iv)) parameters -#define GET_Color4iv(disp) ((disp)->Color4iv) -#define SET_Color4iv(disp, fn) ((disp)->Color4iv = fn) -#define CALL_Color4s(disp, parameters) (*((disp)->Color4s)) parameters -#define GET_Color4s(disp) ((disp)->Color4s) -#define SET_Color4s(disp, fn) ((disp)->Color4s = fn) -#define CALL_Color4sv(disp, parameters) (*((disp)->Color4sv)) parameters -#define GET_Color4sv(disp) ((disp)->Color4sv) -#define SET_Color4sv(disp, fn) ((disp)->Color4sv = fn) -#define CALL_Color4ub(disp, parameters) (*((disp)->Color4ub)) parameters -#define GET_Color4ub(disp) ((disp)->Color4ub) -#define SET_Color4ub(disp, fn) ((disp)->Color4ub = fn) -#define CALL_Color4ubv(disp, parameters) (*((disp)->Color4ubv)) parameters -#define GET_Color4ubv(disp) ((disp)->Color4ubv) -#define SET_Color4ubv(disp, fn) ((disp)->Color4ubv = fn) -#define CALL_Color4ui(disp, parameters) (*((disp)->Color4ui)) parameters -#define GET_Color4ui(disp) ((disp)->Color4ui) -#define SET_Color4ui(disp, fn) ((disp)->Color4ui = fn) -#define CALL_Color4uiv(disp, parameters) (*((disp)->Color4uiv)) parameters -#define GET_Color4uiv(disp) ((disp)->Color4uiv) -#define SET_Color4uiv(disp, fn) ((disp)->Color4uiv = fn) -#define CALL_Color4us(disp, parameters) (*((disp)->Color4us)) parameters -#define GET_Color4us(disp) ((disp)->Color4us) -#define SET_Color4us(disp, fn) ((disp)->Color4us = fn) -#define CALL_Color4usv(disp, parameters) (*((disp)->Color4usv)) parameters -#define GET_Color4usv(disp) ((disp)->Color4usv) -#define SET_Color4usv(disp, fn) ((disp)->Color4usv = fn) -#define CALL_EdgeFlag(disp, parameters) (*((disp)->EdgeFlag)) parameters -#define GET_EdgeFlag(disp) ((disp)->EdgeFlag) -#define SET_EdgeFlag(disp, fn) ((disp)->EdgeFlag = fn) -#define CALL_EdgeFlagv(disp, parameters) (*((disp)->EdgeFlagv)) parameters -#define GET_EdgeFlagv(disp) ((disp)->EdgeFlagv) -#define SET_EdgeFlagv(disp, fn) ((disp)->EdgeFlagv = fn) -#define CALL_End(disp, parameters) (*((disp)->End)) parameters -#define GET_End(disp) ((disp)->End) -#define SET_End(disp, fn) ((disp)->End = fn) -#define CALL_Indexd(disp, parameters) (*((disp)->Indexd)) parameters -#define GET_Indexd(disp) ((disp)->Indexd) -#define SET_Indexd(disp, fn) ((disp)->Indexd = fn) -#define CALL_Indexdv(disp, parameters) (*((disp)->Indexdv)) parameters -#define GET_Indexdv(disp) ((disp)->Indexdv) -#define SET_Indexdv(disp, fn) ((disp)->Indexdv = fn) -#define CALL_Indexf(disp, parameters) (*((disp)->Indexf)) parameters -#define GET_Indexf(disp) ((disp)->Indexf) -#define SET_Indexf(disp, fn) ((disp)->Indexf = fn) -#define CALL_Indexfv(disp, parameters) (*((disp)->Indexfv)) parameters -#define GET_Indexfv(disp) ((disp)->Indexfv) -#define SET_Indexfv(disp, fn) ((disp)->Indexfv = fn) -#define CALL_Indexi(disp, parameters) (*((disp)->Indexi)) parameters -#define GET_Indexi(disp) ((disp)->Indexi) -#define SET_Indexi(disp, fn) ((disp)->Indexi = fn) -#define CALL_Indexiv(disp, parameters) (*((disp)->Indexiv)) parameters -#define GET_Indexiv(disp) ((disp)->Indexiv) -#define SET_Indexiv(disp, fn) ((disp)->Indexiv = fn) -#define CALL_Indexs(disp, parameters) (*((disp)->Indexs)) parameters -#define GET_Indexs(disp) ((disp)->Indexs) -#define SET_Indexs(disp, fn) ((disp)->Indexs = fn) -#define CALL_Indexsv(disp, parameters) (*((disp)->Indexsv)) parameters -#define GET_Indexsv(disp) ((disp)->Indexsv) -#define SET_Indexsv(disp, fn) ((disp)->Indexsv = fn) -#define CALL_Normal3b(disp, parameters) (*((disp)->Normal3b)) parameters -#define GET_Normal3b(disp) ((disp)->Normal3b) -#define SET_Normal3b(disp, fn) ((disp)->Normal3b = fn) -#define CALL_Normal3bv(disp, parameters) (*((disp)->Normal3bv)) parameters -#define GET_Normal3bv(disp) ((disp)->Normal3bv) -#define SET_Normal3bv(disp, fn) ((disp)->Normal3bv = fn) -#define CALL_Normal3d(disp, parameters) (*((disp)->Normal3d)) parameters -#define GET_Normal3d(disp) ((disp)->Normal3d) -#define SET_Normal3d(disp, fn) ((disp)->Normal3d = fn) -#define CALL_Normal3dv(disp, parameters) (*((disp)->Normal3dv)) parameters -#define GET_Normal3dv(disp) ((disp)->Normal3dv) -#define SET_Normal3dv(disp, fn) ((disp)->Normal3dv = fn) -#define CALL_Normal3f(disp, parameters) (*((disp)->Normal3f)) parameters -#define GET_Normal3f(disp) ((disp)->Normal3f) -#define SET_Normal3f(disp, fn) ((disp)->Normal3f = fn) -#define CALL_Normal3fv(disp, parameters) (*((disp)->Normal3fv)) parameters -#define GET_Normal3fv(disp) ((disp)->Normal3fv) -#define SET_Normal3fv(disp, fn) ((disp)->Normal3fv = fn) -#define CALL_Normal3i(disp, parameters) (*((disp)->Normal3i)) parameters -#define GET_Normal3i(disp) ((disp)->Normal3i) -#define SET_Normal3i(disp, fn) ((disp)->Normal3i = fn) -#define CALL_Normal3iv(disp, parameters) (*((disp)->Normal3iv)) parameters -#define GET_Normal3iv(disp) ((disp)->Normal3iv) -#define SET_Normal3iv(disp, fn) ((disp)->Normal3iv = fn) -#define CALL_Normal3s(disp, parameters) (*((disp)->Normal3s)) parameters -#define GET_Normal3s(disp) ((disp)->Normal3s) -#define SET_Normal3s(disp, fn) ((disp)->Normal3s = fn) -#define CALL_Normal3sv(disp, parameters) (*((disp)->Normal3sv)) parameters -#define GET_Normal3sv(disp) ((disp)->Normal3sv) -#define SET_Normal3sv(disp, fn) ((disp)->Normal3sv = fn) -#define CALL_RasterPos2d(disp, parameters) (*((disp)->RasterPos2d)) parameters -#define GET_RasterPos2d(disp) ((disp)->RasterPos2d) -#define SET_RasterPos2d(disp, fn) ((disp)->RasterPos2d = fn) -#define CALL_RasterPos2dv(disp, parameters) (*((disp)->RasterPos2dv)) parameters -#define GET_RasterPos2dv(disp) ((disp)->RasterPos2dv) -#define SET_RasterPos2dv(disp, fn) ((disp)->RasterPos2dv = fn) -#define CALL_RasterPos2f(disp, parameters) (*((disp)->RasterPos2f)) parameters -#define GET_RasterPos2f(disp) ((disp)->RasterPos2f) -#define SET_RasterPos2f(disp, fn) ((disp)->RasterPos2f = fn) -#define CALL_RasterPos2fv(disp, parameters) (*((disp)->RasterPos2fv)) parameters -#define GET_RasterPos2fv(disp) ((disp)->RasterPos2fv) -#define SET_RasterPos2fv(disp, fn) ((disp)->RasterPos2fv = fn) -#define CALL_RasterPos2i(disp, parameters) (*((disp)->RasterPos2i)) parameters -#define GET_RasterPos2i(disp) ((disp)->RasterPos2i) -#define SET_RasterPos2i(disp, fn) ((disp)->RasterPos2i = fn) -#define CALL_RasterPos2iv(disp, parameters) (*((disp)->RasterPos2iv)) parameters -#define GET_RasterPos2iv(disp) ((disp)->RasterPos2iv) -#define SET_RasterPos2iv(disp, fn) ((disp)->RasterPos2iv = fn) -#define CALL_RasterPos2s(disp, parameters) (*((disp)->RasterPos2s)) parameters -#define GET_RasterPos2s(disp) ((disp)->RasterPos2s) -#define SET_RasterPos2s(disp, fn) ((disp)->RasterPos2s = fn) -#define CALL_RasterPos2sv(disp, parameters) (*((disp)->RasterPos2sv)) parameters -#define GET_RasterPos2sv(disp) ((disp)->RasterPos2sv) -#define SET_RasterPos2sv(disp, fn) ((disp)->RasterPos2sv = fn) -#define CALL_RasterPos3d(disp, parameters) (*((disp)->RasterPos3d)) parameters -#define GET_RasterPos3d(disp) ((disp)->RasterPos3d) -#define SET_RasterPos3d(disp, fn) ((disp)->RasterPos3d = fn) -#define CALL_RasterPos3dv(disp, parameters) (*((disp)->RasterPos3dv)) parameters -#define GET_RasterPos3dv(disp) ((disp)->RasterPos3dv) -#define SET_RasterPos3dv(disp, fn) ((disp)->RasterPos3dv = fn) -#define CALL_RasterPos3f(disp, parameters) (*((disp)->RasterPos3f)) parameters -#define GET_RasterPos3f(disp) ((disp)->RasterPos3f) -#define SET_RasterPos3f(disp, fn) ((disp)->RasterPos3f = fn) -#define CALL_RasterPos3fv(disp, parameters) (*((disp)->RasterPos3fv)) parameters -#define GET_RasterPos3fv(disp) ((disp)->RasterPos3fv) -#define SET_RasterPos3fv(disp, fn) ((disp)->RasterPos3fv = fn) -#define CALL_RasterPos3i(disp, parameters) (*((disp)->RasterPos3i)) parameters -#define GET_RasterPos3i(disp) ((disp)->RasterPos3i) -#define SET_RasterPos3i(disp, fn) ((disp)->RasterPos3i = fn) -#define CALL_RasterPos3iv(disp, parameters) (*((disp)->RasterPos3iv)) parameters -#define GET_RasterPos3iv(disp) ((disp)->RasterPos3iv) -#define SET_RasterPos3iv(disp, fn) ((disp)->RasterPos3iv = fn) -#define CALL_RasterPos3s(disp, parameters) (*((disp)->RasterPos3s)) parameters -#define GET_RasterPos3s(disp) ((disp)->RasterPos3s) -#define SET_RasterPos3s(disp, fn) ((disp)->RasterPos3s = fn) -#define CALL_RasterPos3sv(disp, parameters) (*((disp)->RasterPos3sv)) parameters -#define GET_RasterPos3sv(disp) ((disp)->RasterPos3sv) -#define SET_RasterPos3sv(disp, fn) ((disp)->RasterPos3sv = fn) -#define CALL_RasterPos4d(disp, parameters) (*((disp)->RasterPos4d)) parameters -#define GET_RasterPos4d(disp) ((disp)->RasterPos4d) -#define SET_RasterPos4d(disp, fn) ((disp)->RasterPos4d = fn) -#define CALL_RasterPos4dv(disp, parameters) (*((disp)->RasterPos4dv)) parameters -#define GET_RasterPos4dv(disp) ((disp)->RasterPos4dv) -#define SET_RasterPos4dv(disp, fn) ((disp)->RasterPos4dv = fn) -#define CALL_RasterPos4f(disp, parameters) (*((disp)->RasterPos4f)) parameters -#define GET_RasterPos4f(disp) ((disp)->RasterPos4f) -#define SET_RasterPos4f(disp, fn) ((disp)->RasterPos4f = fn) -#define CALL_RasterPos4fv(disp, parameters) (*((disp)->RasterPos4fv)) parameters -#define GET_RasterPos4fv(disp) ((disp)->RasterPos4fv) -#define SET_RasterPos4fv(disp, fn) ((disp)->RasterPos4fv = fn) -#define CALL_RasterPos4i(disp, parameters) (*((disp)->RasterPos4i)) parameters -#define GET_RasterPos4i(disp) ((disp)->RasterPos4i) -#define SET_RasterPos4i(disp, fn) ((disp)->RasterPos4i = fn) -#define CALL_RasterPos4iv(disp, parameters) (*((disp)->RasterPos4iv)) parameters -#define GET_RasterPos4iv(disp) ((disp)->RasterPos4iv) -#define SET_RasterPos4iv(disp, fn) ((disp)->RasterPos4iv = fn) -#define CALL_RasterPos4s(disp, parameters) (*((disp)->RasterPos4s)) parameters -#define GET_RasterPos4s(disp) ((disp)->RasterPos4s) -#define SET_RasterPos4s(disp, fn) ((disp)->RasterPos4s = fn) -#define CALL_RasterPos4sv(disp, parameters) (*((disp)->RasterPos4sv)) parameters -#define GET_RasterPos4sv(disp) ((disp)->RasterPos4sv) -#define SET_RasterPos4sv(disp, fn) ((disp)->RasterPos4sv = fn) -#define CALL_Rectd(disp, parameters) (*((disp)->Rectd)) parameters -#define GET_Rectd(disp) ((disp)->Rectd) -#define SET_Rectd(disp, fn) ((disp)->Rectd = fn) -#define CALL_Rectdv(disp, parameters) (*((disp)->Rectdv)) parameters -#define GET_Rectdv(disp) ((disp)->Rectdv) -#define SET_Rectdv(disp, fn) ((disp)->Rectdv = fn) -#define CALL_Rectf(disp, parameters) (*((disp)->Rectf)) parameters -#define GET_Rectf(disp) ((disp)->Rectf) -#define SET_Rectf(disp, fn) ((disp)->Rectf = fn) -#define CALL_Rectfv(disp, parameters) (*((disp)->Rectfv)) parameters -#define GET_Rectfv(disp) ((disp)->Rectfv) -#define SET_Rectfv(disp, fn) ((disp)->Rectfv = fn) -#define CALL_Recti(disp, parameters) (*((disp)->Recti)) parameters -#define GET_Recti(disp) ((disp)->Recti) -#define SET_Recti(disp, fn) ((disp)->Recti = fn) -#define CALL_Rectiv(disp, parameters) (*((disp)->Rectiv)) parameters -#define GET_Rectiv(disp) ((disp)->Rectiv) -#define SET_Rectiv(disp, fn) ((disp)->Rectiv = fn) -#define CALL_Rects(disp, parameters) (*((disp)->Rects)) parameters -#define GET_Rects(disp) ((disp)->Rects) -#define SET_Rects(disp, fn) ((disp)->Rects = fn) -#define CALL_Rectsv(disp, parameters) (*((disp)->Rectsv)) parameters -#define GET_Rectsv(disp) ((disp)->Rectsv) -#define SET_Rectsv(disp, fn) ((disp)->Rectsv = fn) -#define CALL_TexCoord1d(disp, parameters) (*((disp)->TexCoord1d)) parameters -#define GET_TexCoord1d(disp) ((disp)->TexCoord1d) -#define SET_TexCoord1d(disp, fn) ((disp)->TexCoord1d = fn) -#define CALL_TexCoord1dv(disp, parameters) (*((disp)->TexCoord1dv)) parameters -#define GET_TexCoord1dv(disp) ((disp)->TexCoord1dv) -#define SET_TexCoord1dv(disp, fn) ((disp)->TexCoord1dv = fn) -#define CALL_TexCoord1f(disp, parameters) (*((disp)->TexCoord1f)) parameters -#define GET_TexCoord1f(disp) ((disp)->TexCoord1f) -#define SET_TexCoord1f(disp, fn) ((disp)->TexCoord1f = fn) -#define CALL_TexCoord1fv(disp, parameters) (*((disp)->TexCoord1fv)) parameters -#define GET_TexCoord1fv(disp) ((disp)->TexCoord1fv) -#define SET_TexCoord1fv(disp, fn) ((disp)->TexCoord1fv = fn) -#define CALL_TexCoord1i(disp, parameters) (*((disp)->TexCoord1i)) parameters -#define GET_TexCoord1i(disp) ((disp)->TexCoord1i) -#define SET_TexCoord1i(disp, fn) ((disp)->TexCoord1i = fn) -#define CALL_TexCoord1iv(disp, parameters) (*((disp)->TexCoord1iv)) parameters -#define GET_TexCoord1iv(disp) ((disp)->TexCoord1iv) -#define SET_TexCoord1iv(disp, fn) ((disp)->TexCoord1iv = fn) -#define CALL_TexCoord1s(disp, parameters) (*((disp)->TexCoord1s)) parameters -#define GET_TexCoord1s(disp) ((disp)->TexCoord1s) -#define SET_TexCoord1s(disp, fn) ((disp)->TexCoord1s = fn) -#define CALL_TexCoord1sv(disp, parameters) (*((disp)->TexCoord1sv)) parameters -#define GET_TexCoord1sv(disp) ((disp)->TexCoord1sv) -#define SET_TexCoord1sv(disp, fn) ((disp)->TexCoord1sv = fn) -#define CALL_TexCoord2d(disp, parameters) (*((disp)->TexCoord2d)) parameters -#define GET_TexCoord2d(disp) ((disp)->TexCoord2d) -#define SET_TexCoord2d(disp, fn) ((disp)->TexCoord2d = fn) -#define CALL_TexCoord2dv(disp, parameters) (*((disp)->TexCoord2dv)) parameters -#define GET_TexCoord2dv(disp) ((disp)->TexCoord2dv) -#define SET_TexCoord2dv(disp, fn) ((disp)->TexCoord2dv = fn) -#define CALL_TexCoord2f(disp, parameters) (*((disp)->TexCoord2f)) parameters -#define GET_TexCoord2f(disp) ((disp)->TexCoord2f) -#define SET_TexCoord2f(disp, fn) ((disp)->TexCoord2f = fn) -#define CALL_TexCoord2fv(disp, parameters) (*((disp)->TexCoord2fv)) parameters -#define GET_TexCoord2fv(disp) ((disp)->TexCoord2fv) -#define SET_TexCoord2fv(disp, fn) ((disp)->TexCoord2fv = fn) -#define CALL_TexCoord2i(disp, parameters) (*((disp)->TexCoord2i)) parameters -#define GET_TexCoord2i(disp) ((disp)->TexCoord2i) -#define SET_TexCoord2i(disp, fn) ((disp)->TexCoord2i = fn) -#define CALL_TexCoord2iv(disp, parameters) (*((disp)->TexCoord2iv)) parameters -#define GET_TexCoord2iv(disp) ((disp)->TexCoord2iv) -#define SET_TexCoord2iv(disp, fn) ((disp)->TexCoord2iv = fn) -#define CALL_TexCoord2s(disp, parameters) (*((disp)->TexCoord2s)) parameters -#define GET_TexCoord2s(disp) ((disp)->TexCoord2s) -#define SET_TexCoord2s(disp, fn) ((disp)->TexCoord2s = fn) -#define CALL_TexCoord2sv(disp, parameters) (*((disp)->TexCoord2sv)) parameters -#define GET_TexCoord2sv(disp) ((disp)->TexCoord2sv) -#define SET_TexCoord2sv(disp, fn) ((disp)->TexCoord2sv = fn) -#define CALL_TexCoord3d(disp, parameters) (*((disp)->TexCoord3d)) parameters -#define GET_TexCoord3d(disp) ((disp)->TexCoord3d) -#define SET_TexCoord3d(disp, fn) ((disp)->TexCoord3d = fn) -#define CALL_TexCoord3dv(disp, parameters) (*((disp)->TexCoord3dv)) parameters -#define GET_TexCoord3dv(disp) ((disp)->TexCoord3dv) -#define SET_TexCoord3dv(disp, fn) ((disp)->TexCoord3dv = fn) -#define CALL_TexCoord3f(disp, parameters) (*((disp)->TexCoord3f)) parameters -#define GET_TexCoord3f(disp) ((disp)->TexCoord3f) -#define SET_TexCoord3f(disp, fn) ((disp)->TexCoord3f = fn) -#define CALL_TexCoord3fv(disp, parameters) (*((disp)->TexCoord3fv)) parameters -#define GET_TexCoord3fv(disp) ((disp)->TexCoord3fv) -#define SET_TexCoord3fv(disp, fn) ((disp)->TexCoord3fv = fn) -#define CALL_TexCoord3i(disp, parameters) (*((disp)->TexCoord3i)) parameters -#define GET_TexCoord3i(disp) ((disp)->TexCoord3i) -#define SET_TexCoord3i(disp, fn) ((disp)->TexCoord3i = fn) -#define CALL_TexCoord3iv(disp, parameters) (*((disp)->TexCoord3iv)) parameters -#define GET_TexCoord3iv(disp) ((disp)->TexCoord3iv) -#define SET_TexCoord3iv(disp, fn) ((disp)->TexCoord3iv = fn) -#define CALL_TexCoord3s(disp, parameters) (*((disp)->TexCoord3s)) parameters -#define GET_TexCoord3s(disp) ((disp)->TexCoord3s) -#define SET_TexCoord3s(disp, fn) ((disp)->TexCoord3s = fn) -#define CALL_TexCoord3sv(disp, parameters) (*((disp)->TexCoord3sv)) parameters -#define GET_TexCoord3sv(disp) ((disp)->TexCoord3sv) -#define SET_TexCoord3sv(disp, fn) ((disp)->TexCoord3sv = fn) -#define CALL_TexCoord4d(disp, parameters) (*((disp)->TexCoord4d)) parameters -#define GET_TexCoord4d(disp) ((disp)->TexCoord4d) -#define SET_TexCoord4d(disp, fn) ((disp)->TexCoord4d = fn) -#define CALL_TexCoord4dv(disp, parameters) (*((disp)->TexCoord4dv)) parameters -#define GET_TexCoord4dv(disp) ((disp)->TexCoord4dv) -#define SET_TexCoord4dv(disp, fn) ((disp)->TexCoord4dv = fn) -#define CALL_TexCoord4f(disp, parameters) (*((disp)->TexCoord4f)) parameters -#define GET_TexCoord4f(disp) ((disp)->TexCoord4f) -#define SET_TexCoord4f(disp, fn) ((disp)->TexCoord4f = fn) -#define CALL_TexCoord4fv(disp, parameters) (*((disp)->TexCoord4fv)) parameters -#define GET_TexCoord4fv(disp) ((disp)->TexCoord4fv) -#define SET_TexCoord4fv(disp, fn) ((disp)->TexCoord4fv = fn) -#define CALL_TexCoord4i(disp, parameters) (*((disp)->TexCoord4i)) parameters -#define GET_TexCoord4i(disp) ((disp)->TexCoord4i) -#define SET_TexCoord4i(disp, fn) ((disp)->TexCoord4i = fn) -#define CALL_TexCoord4iv(disp, parameters) (*((disp)->TexCoord4iv)) parameters -#define GET_TexCoord4iv(disp) ((disp)->TexCoord4iv) -#define SET_TexCoord4iv(disp, fn) ((disp)->TexCoord4iv = fn) -#define CALL_TexCoord4s(disp, parameters) (*((disp)->TexCoord4s)) parameters -#define GET_TexCoord4s(disp) ((disp)->TexCoord4s) -#define SET_TexCoord4s(disp, fn) ((disp)->TexCoord4s = fn) -#define CALL_TexCoord4sv(disp, parameters) (*((disp)->TexCoord4sv)) parameters -#define GET_TexCoord4sv(disp) ((disp)->TexCoord4sv) -#define SET_TexCoord4sv(disp, fn) ((disp)->TexCoord4sv = fn) -#define CALL_Vertex2d(disp, parameters) (*((disp)->Vertex2d)) parameters -#define GET_Vertex2d(disp) ((disp)->Vertex2d) -#define SET_Vertex2d(disp, fn) ((disp)->Vertex2d = fn) -#define CALL_Vertex2dv(disp, parameters) (*((disp)->Vertex2dv)) parameters -#define GET_Vertex2dv(disp) ((disp)->Vertex2dv) -#define SET_Vertex2dv(disp, fn) ((disp)->Vertex2dv = fn) -#define CALL_Vertex2f(disp, parameters) (*((disp)->Vertex2f)) parameters -#define GET_Vertex2f(disp) ((disp)->Vertex2f) -#define SET_Vertex2f(disp, fn) ((disp)->Vertex2f = fn) -#define CALL_Vertex2fv(disp, parameters) (*((disp)->Vertex2fv)) parameters -#define GET_Vertex2fv(disp) ((disp)->Vertex2fv) -#define SET_Vertex2fv(disp, fn) ((disp)->Vertex2fv = fn) -#define CALL_Vertex2i(disp, parameters) (*((disp)->Vertex2i)) parameters -#define GET_Vertex2i(disp) ((disp)->Vertex2i) -#define SET_Vertex2i(disp, fn) ((disp)->Vertex2i = fn) -#define CALL_Vertex2iv(disp, parameters) (*((disp)->Vertex2iv)) parameters -#define GET_Vertex2iv(disp) ((disp)->Vertex2iv) -#define SET_Vertex2iv(disp, fn) ((disp)->Vertex2iv = fn) -#define CALL_Vertex2s(disp, parameters) (*((disp)->Vertex2s)) parameters -#define GET_Vertex2s(disp) ((disp)->Vertex2s) -#define SET_Vertex2s(disp, fn) ((disp)->Vertex2s = fn) -#define CALL_Vertex2sv(disp, parameters) (*((disp)->Vertex2sv)) parameters -#define GET_Vertex2sv(disp) ((disp)->Vertex2sv) -#define SET_Vertex2sv(disp, fn) ((disp)->Vertex2sv = fn) -#define CALL_Vertex3d(disp, parameters) (*((disp)->Vertex3d)) parameters -#define GET_Vertex3d(disp) ((disp)->Vertex3d) -#define SET_Vertex3d(disp, fn) ((disp)->Vertex3d = fn) -#define CALL_Vertex3dv(disp, parameters) (*((disp)->Vertex3dv)) parameters -#define GET_Vertex3dv(disp) ((disp)->Vertex3dv) -#define SET_Vertex3dv(disp, fn) ((disp)->Vertex3dv = fn) -#define CALL_Vertex3f(disp, parameters) (*((disp)->Vertex3f)) parameters -#define GET_Vertex3f(disp) ((disp)->Vertex3f) -#define SET_Vertex3f(disp, fn) ((disp)->Vertex3f = fn) -#define CALL_Vertex3fv(disp, parameters) (*((disp)->Vertex3fv)) parameters -#define GET_Vertex3fv(disp) ((disp)->Vertex3fv) -#define SET_Vertex3fv(disp, fn) ((disp)->Vertex3fv = fn) -#define CALL_Vertex3i(disp, parameters) (*((disp)->Vertex3i)) parameters -#define GET_Vertex3i(disp) ((disp)->Vertex3i) -#define SET_Vertex3i(disp, fn) ((disp)->Vertex3i = fn) -#define CALL_Vertex3iv(disp, parameters) (*((disp)->Vertex3iv)) parameters -#define GET_Vertex3iv(disp) ((disp)->Vertex3iv) -#define SET_Vertex3iv(disp, fn) ((disp)->Vertex3iv = fn) -#define CALL_Vertex3s(disp, parameters) (*((disp)->Vertex3s)) parameters -#define GET_Vertex3s(disp) ((disp)->Vertex3s) -#define SET_Vertex3s(disp, fn) ((disp)->Vertex3s = fn) -#define CALL_Vertex3sv(disp, parameters) (*((disp)->Vertex3sv)) parameters -#define GET_Vertex3sv(disp) ((disp)->Vertex3sv) -#define SET_Vertex3sv(disp, fn) ((disp)->Vertex3sv = fn) -#define CALL_Vertex4d(disp, parameters) (*((disp)->Vertex4d)) parameters -#define GET_Vertex4d(disp) ((disp)->Vertex4d) -#define SET_Vertex4d(disp, fn) ((disp)->Vertex4d = fn) -#define CALL_Vertex4dv(disp, parameters) (*((disp)->Vertex4dv)) parameters -#define GET_Vertex4dv(disp) ((disp)->Vertex4dv) -#define SET_Vertex4dv(disp, fn) ((disp)->Vertex4dv = fn) -#define CALL_Vertex4f(disp, parameters) (*((disp)->Vertex4f)) parameters -#define GET_Vertex4f(disp) ((disp)->Vertex4f) -#define SET_Vertex4f(disp, fn) ((disp)->Vertex4f = fn) -#define CALL_Vertex4fv(disp, parameters) (*((disp)->Vertex4fv)) parameters -#define GET_Vertex4fv(disp) ((disp)->Vertex4fv) -#define SET_Vertex4fv(disp, fn) ((disp)->Vertex4fv = fn) -#define CALL_Vertex4i(disp, parameters) (*((disp)->Vertex4i)) parameters -#define GET_Vertex4i(disp) ((disp)->Vertex4i) -#define SET_Vertex4i(disp, fn) ((disp)->Vertex4i = fn) -#define CALL_Vertex4iv(disp, parameters) (*((disp)->Vertex4iv)) parameters -#define GET_Vertex4iv(disp) ((disp)->Vertex4iv) -#define SET_Vertex4iv(disp, fn) ((disp)->Vertex4iv = fn) -#define CALL_Vertex4s(disp, parameters) (*((disp)->Vertex4s)) parameters -#define GET_Vertex4s(disp) ((disp)->Vertex4s) -#define SET_Vertex4s(disp, fn) ((disp)->Vertex4s = fn) -#define CALL_Vertex4sv(disp, parameters) (*((disp)->Vertex4sv)) parameters -#define GET_Vertex4sv(disp) ((disp)->Vertex4sv) -#define SET_Vertex4sv(disp, fn) ((disp)->Vertex4sv = fn) -#define CALL_ClipPlane(disp, parameters) (*((disp)->ClipPlane)) parameters -#define GET_ClipPlane(disp) ((disp)->ClipPlane) -#define SET_ClipPlane(disp, fn) ((disp)->ClipPlane = fn) -#define CALL_ColorMaterial(disp, parameters) (*((disp)->ColorMaterial)) parameters -#define GET_ColorMaterial(disp) ((disp)->ColorMaterial) -#define SET_ColorMaterial(disp, fn) ((disp)->ColorMaterial = fn) -#define CALL_CullFace(disp, parameters) (*((disp)->CullFace)) parameters -#define GET_CullFace(disp) ((disp)->CullFace) -#define SET_CullFace(disp, fn) ((disp)->CullFace = fn) -#define CALL_Fogf(disp, parameters) (*((disp)->Fogf)) parameters -#define GET_Fogf(disp) ((disp)->Fogf) -#define SET_Fogf(disp, fn) ((disp)->Fogf = fn) -#define CALL_Fogfv(disp, parameters) (*((disp)->Fogfv)) parameters -#define GET_Fogfv(disp) ((disp)->Fogfv) -#define SET_Fogfv(disp, fn) ((disp)->Fogfv = fn) -#define CALL_Fogi(disp, parameters) (*((disp)->Fogi)) parameters -#define GET_Fogi(disp) ((disp)->Fogi) -#define SET_Fogi(disp, fn) ((disp)->Fogi = fn) -#define CALL_Fogiv(disp, parameters) (*((disp)->Fogiv)) parameters -#define GET_Fogiv(disp) ((disp)->Fogiv) -#define SET_Fogiv(disp, fn) ((disp)->Fogiv = fn) -#define CALL_FrontFace(disp, parameters) (*((disp)->FrontFace)) parameters -#define GET_FrontFace(disp) ((disp)->FrontFace) -#define SET_FrontFace(disp, fn) ((disp)->FrontFace = fn) -#define CALL_Hint(disp, parameters) (*((disp)->Hint)) parameters -#define GET_Hint(disp) ((disp)->Hint) -#define SET_Hint(disp, fn) ((disp)->Hint = fn) -#define CALL_Lightf(disp, parameters) (*((disp)->Lightf)) parameters -#define GET_Lightf(disp) ((disp)->Lightf) -#define SET_Lightf(disp, fn) ((disp)->Lightf = fn) -#define CALL_Lightfv(disp, parameters) (*((disp)->Lightfv)) parameters -#define GET_Lightfv(disp) ((disp)->Lightfv) -#define SET_Lightfv(disp, fn) ((disp)->Lightfv = fn) -#define CALL_Lighti(disp, parameters) (*((disp)->Lighti)) parameters -#define GET_Lighti(disp) ((disp)->Lighti) -#define SET_Lighti(disp, fn) ((disp)->Lighti = fn) -#define CALL_Lightiv(disp, parameters) (*((disp)->Lightiv)) parameters -#define GET_Lightiv(disp) ((disp)->Lightiv) -#define SET_Lightiv(disp, fn) ((disp)->Lightiv = fn) -#define CALL_LightModelf(disp, parameters) (*((disp)->LightModelf)) parameters -#define GET_LightModelf(disp) ((disp)->LightModelf) -#define SET_LightModelf(disp, fn) ((disp)->LightModelf = fn) -#define CALL_LightModelfv(disp, parameters) (*((disp)->LightModelfv)) parameters -#define GET_LightModelfv(disp) ((disp)->LightModelfv) -#define SET_LightModelfv(disp, fn) ((disp)->LightModelfv = fn) -#define CALL_LightModeli(disp, parameters) (*((disp)->LightModeli)) parameters -#define GET_LightModeli(disp) ((disp)->LightModeli) -#define SET_LightModeli(disp, fn) ((disp)->LightModeli = fn) -#define CALL_LightModeliv(disp, parameters) (*((disp)->LightModeliv)) parameters -#define GET_LightModeliv(disp) ((disp)->LightModeliv) -#define SET_LightModeliv(disp, fn) ((disp)->LightModeliv = fn) -#define CALL_LineStipple(disp, parameters) (*((disp)->LineStipple)) parameters -#define GET_LineStipple(disp) ((disp)->LineStipple) -#define SET_LineStipple(disp, fn) ((disp)->LineStipple = fn) -#define CALL_LineWidth(disp, parameters) (*((disp)->LineWidth)) parameters -#define GET_LineWidth(disp) ((disp)->LineWidth) -#define SET_LineWidth(disp, fn) ((disp)->LineWidth = fn) -#define CALL_Materialf(disp, parameters) (*((disp)->Materialf)) parameters -#define GET_Materialf(disp) ((disp)->Materialf) -#define SET_Materialf(disp, fn) ((disp)->Materialf = fn) -#define CALL_Materialfv(disp, parameters) (*((disp)->Materialfv)) parameters -#define GET_Materialfv(disp) ((disp)->Materialfv) -#define SET_Materialfv(disp, fn) ((disp)->Materialfv = fn) -#define CALL_Materiali(disp, parameters) (*((disp)->Materiali)) parameters -#define GET_Materiali(disp) ((disp)->Materiali) -#define SET_Materiali(disp, fn) ((disp)->Materiali = fn) -#define CALL_Materialiv(disp, parameters) (*((disp)->Materialiv)) parameters -#define GET_Materialiv(disp) ((disp)->Materialiv) -#define SET_Materialiv(disp, fn) ((disp)->Materialiv = fn) -#define CALL_PointSize(disp, parameters) (*((disp)->PointSize)) parameters -#define GET_PointSize(disp) ((disp)->PointSize) -#define SET_PointSize(disp, fn) ((disp)->PointSize = fn) -#define CALL_PolygonMode(disp, parameters) (*((disp)->PolygonMode)) parameters -#define GET_PolygonMode(disp) ((disp)->PolygonMode) -#define SET_PolygonMode(disp, fn) ((disp)->PolygonMode = fn) -#define CALL_PolygonStipple(disp, parameters) (*((disp)->PolygonStipple)) parameters -#define GET_PolygonStipple(disp) ((disp)->PolygonStipple) -#define SET_PolygonStipple(disp, fn) ((disp)->PolygonStipple = fn) -#define CALL_Scissor(disp, parameters) (*((disp)->Scissor)) parameters -#define GET_Scissor(disp) ((disp)->Scissor) -#define SET_Scissor(disp, fn) ((disp)->Scissor = fn) -#define CALL_ShadeModel(disp, parameters) (*((disp)->ShadeModel)) parameters -#define GET_ShadeModel(disp) ((disp)->ShadeModel) -#define SET_ShadeModel(disp, fn) ((disp)->ShadeModel = fn) -#define CALL_TexParameterf(disp, parameters) (*((disp)->TexParameterf)) parameters -#define GET_TexParameterf(disp) ((disp)->TexParameterf) -#define SET_TexParameterf(disp, fn) ((disp)->TexParameterf = fn) -#define CALL_TexParameterfv(disp, parameters) (*((disp)->TexParameterfv)) parameters -#define GET_TexParameterfv(disp) ((disp)->TexParameterfv) -#define SET_TexParameterfv(disp, fn) ((disp)->TexParameterfv = fn) -#define CALL_TexParameteri(disp, parameters) (*((disp)->TexParameteri)) parameters -#define GET_TexParameteri(disp) ((disp)->TexParameteri) -#define SET_TexParameteri(disp, fn) ((disp)->TexParameteri = fn) -#define CALL_TexParameteriv(disp, parameters) (*((disp)->TexParameteriv)) parameters -#define GET_TexParameteriv(disp) ((disp)->TexParameteriv) -#define SET_TexParameteriv(disp, fn) ((disp)->TexParameteriv = fn) -#define CALL_TexImage1D(disp, parameters) (*((disp)->TexImage1D)) parameters -#define GET_TexImage1D(disp) ((disp)->TexImage1D) -#define SET_TexImage1D(disp, fn) ((disp)->TexImage1D = fn) -#define CALL_TexImage2D(disp, parameters) (*((disp)->TexImage2D)) parameters -#define GET_TexImage2D(disp) ((disp)->TexImage2D) -#define SET_TexImage2D(disp, fn) ((disp)->TexImage2D = fn) -#define CALL_TexEnvf(disp, parameters) (*((disp)->TexEnvf)) parameters -#define GET_TexEnvf(disp) ((disp)->TexEnvf) -#define SET_TexEnvf(disp, fn) ((disp)->TexEnvf = fn) -#define CALL_TexEnvfv(disp, parameters) (*((disp)->TexEnvfv)) parameters -#define GET_TexEnvfv(disp) ((disp)->TexEnvfv) -#define SET_TexEnvfv(disp, fn) ((disp)->TexEnvfv = fn) -#define CALL_TexEnvi(disp, parameters) (*((disp)->TexEnvi)) parameters -#define GET_TexEnvi(disp) ((disp)->TexEnvi) -#define SET_TexEnvi(disp, fn) ((disp)->TexEnvi = fn) -#define CALL_TexEnviv(disp, parameters) (*((disp)->TexEnviv)) parameters -#define GET_TexEnviv(disp) ((disp)->TexEnviv) -#define SET_TexEnviv(disp, fn) ((disp)->TexEnviv = fn) -#define CALL_TexGend(disp, parameters) (*((disp)->TexGend)) parameters -#define GET_TexGend(disp) ((disp)->TexGend) -#define SET_TexGend(disp, fn) ((disp)->TexGend = fn) -#define CALL_TexGendv(disp, parameters) (*((disp)->TexGendv)) parameters -#define GET_TexGendv(disp) ((disp)->TexGendv) -#define SET_TexGendv(disp, fn) ((disp)->TexGendv = fn) -#define CALL_TexGenf(disp, parameters) (*((disp)->TexGenf)) parameters -#define GET_TexGenf(disp) ((disp)->TexGenf) -#define SET_TexGenf(disp, fn) ((disp)->TexGenf = fn) -#define CALL_TexGenfv(disp, parameters) (*((disp)->TexGenfv)) parameters -#define GET_TexGenfv(disp) ((disp)->TexGenfv) -#define SET_TexGenfv(disp, fn) ((disp)->TexGenfv = fn) -#define CALL_TexGeni(disp, parameters) (*((disp)->TexGeni)) parameters -#define GET_TexGeni(disp) ((disp)->TexGeni) -#define SET_TexGeni(disp, fn) ((disp)->TexGeni = fn) -#define CALL_TexGeniv(disp, parameters) (*((disp)->TexGeniv)) parameters -#define GET_TexGeniv(disp) ((disp)->TexGeniv) -#define SET_TexGeniv(disp, fn) ((disp)->TexGeniv = fn) -#define CALL_FeedbackBuffer(disp, parameters) (*((disp)->FeedbackBuffer)) parameters -#define GET_FeedbackBuffer(disp) ((disp)->FeedbackBuffer) -#define SET_FeedbackBuffer(disp, fn) ((disp)->FeedbackBuffer = fn) -#define CALL_SelectBuffer(disp, parameters) (*((disp)->SelectBuffer)) parameters -#define GET_SelectBuffer(disp) ((disp)->SelectBuffer) -#define SET_SelectBuffer(disp, fn) ((disp)->SelectBuffer = fn) -#define CALL_RenderMode(disp, parameters) (*((disp)->RenderMode)) parameters -#define GET_RenderMode(disp) ((disp)->RenderMode) -#define SET_RenderMode(disp, fn) ((disp)->RenderMode = fn) -#define CALL_InitNames(disp, parameters) (*((disp)->InitNames)) parameters -#define GET_InitNames(disp) ((disp)->InitNames) -#define SET_InitNames(disp, fn) ((disp)->InitNames = fn) -#define CALL_LoadName(disp, parameters) (*((disp)->LoadName)) parameters -#define GET_LoadName(disp) ((disp)->LoadName) -#define SET_LoadName(disp, fn) ((disp)->LoadName = fn) -#define CALL_PassThrough(disp, parameters) (*((disp)->PassThrough)) parameters -#define GET_PassThrough(disp) ((disp)->PassThrough) -#define SET_PassThrough(disp, fn) ((disp)->PassThrough = fn) -#define CALL_PopName(disp, parameters) (*((disp)->PopName)) parameters -#define GET_PopName(disp) ((disp)->PopName) -#define SET_PopName(disp, fn) ((disp)->PopName = fn) -#define CALL_PushName(disp, parameters) (*((disp)->PushName)) parameters -#define GET_PushName(disp) ((disp)->PushName) -#define SET_PushName(disp, fn) ((disp)->PushName = fn) -#define CALL_DrawBuffer(disp, parameters) (*((disp)->DrawBuffer)) parameters -#define GET_DrawBuffer(disp) ((disp)->DrawBuffer) -#define SET_DrawBuffer(disp, fn) ((disp)->DrawBuffer = fn) -#define CALL_Clear(disp, parameters) (*((disp)->Clear)) parameters -#define GET_Clear(disp) ((disp)->Clear) -#define SET_Clear(disp, fn) ((disp)->Clear = fn) -#define CALL_ClearAccum(disp, parameters) (*((disp)->ClearAccum)) parameters -#define GET_ClearAccum(disp) ((disp)->ClearAccum) -#define SET_ClearAccum(disp, fn) ((disp)->ClearAccum = fn) -#define CALL_ClearIndex(disp, parameters) (*((disp)->ClearIndex)) parameters -#define GET_ClearIndex(disp) ((disp)->ClearIndex) -#define SET_ClearIndex(disp, fn) ((disp)->ClearIndex = fn) -#define CALL_ClearColor(disp, parameters) (*((disp)->ClearColor)) parameters -#define GET_ClearColor(disp) ((disp)->ClearColor) -#define SET_ClearColor(disp, fn) ((disp)->ClearColor = fn) -#define CALL_ClearStencil(disp, parameters) (*((disp)->ClearStencil)) parameters -#define GET_ClearStencil(disp) ((disp)->ClearStencil) -#define SET_ClearStencil(disp, fn) ((disp)->ClearStencil = fn) -#define CALL_ClearDepth(disp, parameters) (*((disp)->ClearDepth)) parameters -#define GET_ClearDepth(disp) ((disp)->ClearDepth) -#define SET_ClearDepth(disp, fn) ((disp)->ClearDepth = fn) -#define CALL_StencilMask(disp, parameters) (*((disp)->StencilMask)) parameters -#define GET_StencilMask(disp) ((disp)->StencilMask) -#define SET_StencilMask(disp, fn) ((disp)->StencilMask = fn) -#define CALL_ColorMask(disp, parameters) (*((disp)->ColorMask)) parameters -#define GET_ColorMask(disp) ((disp)->ColorMask) -#define SET_ColorMask(disp, fn) ((disp)->ColorMask = fn) -#define CALL_DepthMask(disp, parameters) (*((disp)->DepthMask)) parameters -#define GET_DepthMask(disp) ((disp)->DepthMask) -#define SET_DepthMask(disp, fn) ((disp)->DepthMask = fn) -#define CALL_IndexMask(disp, parameters) (*((disp)->IndexMask)) parameters -#define GET_IndexMask(disp) ((disp)->IndexMask) -#define SET_IndexMask(disp, fn) ((disp)->IndexMask = fn) -#define CALL_Accum(disp, parameters) (*((disp)->Accum)) parameters -#define GET_Accum(disp) ((disp)->Accum) -#define SET_Accum(disp, fn) ((disp)->Accum = fn) -#define CALL_Disable(disp, parameters) (*((disp)->Disable)) parameters -#define GET_Disable(disp) ((disp)->Disable) -#define SET_Disable(disp, fn) ((disp)->Disable = fn) -#define CALL_Enable(disp, parameters) (*((disp)->Enable)) parameters -#define GET_Enable(disp) ((disp)->Enable) -#define SET_Enable(disp, fn) ((disp)->Enable = fn) -#define CALL_Finish(disp, parameters) (*((disp)->Finish)) parameters -#define GET_Finish(disp) ((disp)->Finish) -#define SET_Finish(disp, fn) ((disp)->Finish = fn) -#define CALL_Flush(disp, parameters) (*((disp)->Flush)) parameters -#define GET_Flush(disp) ((disp)->Flush) -#define SET_Flush(disp, fn) ((disp)->Flush = fn) -#define CALL_PopAttrib(disp, parameters) (*((disp)->PopAttrib)) parameters -#define GET_PopAttrib(disp) ((disp)->PopAttrib) -#define SET_PopAttrib(disp, fn) ((disp)->PopAttrib = fn) -#define CALL_PushAttrib(disp, parameters) (*((disp)->PushAttrib)) parameters -#define GET_PushAttrib(disp) ((disp)->PushAttrib) -#define SET_PushAttrib(disp, fn) ((disp)->PushAttrib = fn) -#define CALL_Map1d(disp, parameters) (*((disp)->Map1d)) parameters -#define GET_Map1d(disp) ((disp)->Map1d) -#define SET_Map1d(disp, fn) ((disp)->Map1d = fn) -#define CALL_Map1f(disp, parameters) (*((disp)->Map1f)) parameters -#define GET_Map1f(disp) ((disp)->Map1f) -#define SET_Map1f(disp, fn) ((disp)->Map1f = fn) -#define CALL_Map2d(disp, parameters) (*((disp)->Map2d)) parameters -#define GET_Map2d(disp) ((disp)->Map2d) -#define SET_Map2d(disp, fn) ((disp)->Map2d = fn) -#define CALL_Map2f(disp, parameters) (*((disp)->Map2f)) parameters -#define GET_Map2f(disp) ((disp)->Map2f) -#define SET_Map2f(disp, fn) ((disp)->Map2f = fn) -#define CALL_MapGrid1d(disp, parameters) (*((disp)->MapGrid1d)) parameters -#define GET_MapGrid1d(disp) ((disp)->MapGrid1d) -#define SET_MapGrid1d(disp, fn) ((disp)->MapGrid1d = fn) -#define CALL_MapGrid1f(disp, parameters) (*((disp)->MapGrid1f)) parameters -#define GET_MapGrid1f(disp) ((disp)->MapGrid1f) -#define SET_MapGrid1f(disp, fn) ((disp)->MapGrid1f = fn) -#define CALL_MapGrid2d(disp, parameters) (*((disp)->MapGrid2d)) parameters -#define GET_MapGrid2d(disp) ((disp)->MapGrid2d) -#define SET_MapGrid2d(disp, fn) ((disp)->MapGrid2d = fn) -#define CALL_MapGrid2f(disp, parameters) (*((disp)->MapGrid2f)) parameters -#define GET_MapGrid2f(disp) ((disp)->MapGrid2f) -#define SET_MapGrid2f(disp, fn) ((disp)->MapGrid2f = fn) -#define CALL_EvalCoord1d(disp, parameters) (*((disp)->EvalCoord1d)) parameters -#define GET_EvalCoord1d(disp) ((disp)->EvalCoord1d) -#define SET_EvalCoord1d(disp, fn) ((disp)->EvalCoord1d = fn) -#define CALL_EvalCoord1dv(disp, parameters) (*((disp)->EvalCoord1dv)) parameters -#define GET_EvalCoord1dv(disp) ((disp)->EvalCoord1dv) -#define SET_EvalCoord1dv(disp, fn) ((disp)->EvalCoord1dv = fn) -#define CALL_EvalCoord1f(disp, parameters) (*((disp)->EvalCoord1f)) parameters -#define GET_EvalCoord1f(disp) ((disp)->EvalCoord1f) -#define SET_EvalCoord1f(disp, fn) ((disp)->EvalCoord1f = fn) -#define CALL_EvalCoord1fv(disp, parameters) (*((disp)->EvalCoord1fv)) parameters -#define GET_EvalCoord1fv(disp) ((disp)->EvalCoord1fv) -#define SET_EvalCoord1fv(disp, fn) ((disp)->EvalCoord1fv = fn) -#define CALL_EvalCoord2d(disp, parameters) (*((disp)->EvalCoord2d)) parameters -#define GET_EvalCoord2d(disp) ((disp)->EvalCoord2d) -#define SET_EvalCoord2d(disp, fn) ((disp)->EvalCoord2d = fn) -#define CALL_EvalCoord2dv(disp, parameters) (*((disp)->EvalCoord2dv)) parameters -#define GET_EvalCoord2dv(disp) ((disp)->EvalCoord2dv) -#define SET_EvalCoord2dv(disp, fn) ((disp)->EvalCoord2dv = fn) -#define CALL_EvalCoord2f(disp, parameters) (*((disp)->EvalCoord2f)) parameters -#define GET_EvalCoord2f(disp) ((disp)->EvalCoord2f) -#define SET_EvalCoord2f(disp, fn) ((disp)->EvalCoord2f = fn) -#define CALL_EvalCoord2fv(disp, parameters) (*((disp)->EvalCoord2fv)) parameters -#define GET_EvalCoord2fv(disp) ((disp)->EvalCoord2fv) -#define SET_EvalCoord2fv(disp, fn) ((disp)->EvalCoord2fv = fn) -#define CALL_EvalMesh1(disp, parameters) (*((disp)->EvalMesh1)) parameters -#define GET_EvalMesh1(disp) ((disp)->EvalMesh1) -#define SET_EvalMesh1(disp, fn) ((disp)->EvalMesh1 = fn) -#define CALL_EvalPoint1(disp, parameters) (*((disp)->EvalPoint1)) parameters -#define GET_EvalPoint1(disp) ((disp)->EvalPoint1) -#define SET_EvalPoint1(disp, fn) ((disp)->EvalPoint1 = fn) -#define CALL_EvalMesh2(disp, parameters) (*((disp)->EvalMesh2)) parameters -#define GET_EvalMesh2(disp) ((disp)->EvalMesh2) -#define SET_EvalMesh2(disp, fn) ((disp)->EvalMesh2 = fn) -#define CALL_EvalPoint2(disp, parameters) (*((disp)->EvalPoint2)) parameters -#define GET_EvalPoint2(disp) ((disp)->EvalPoint2) -#define SET_EvalPoint2(disp, fn) ((disp)->EvalPoint2 = fn) -#define CALL_AlphaFunc(disp, parameters) (*((disp)->AlphaFunc)) parameters -#define GET_AlphaFunc(disp) ((disp)->AlphaFunc) -#define SET_AlphaFunc(disp, fn) ((disp)->AlphaFunc = fn) -#define CALL_BlendFunc(disp, parameters) (*((disp)->BlendFunc)) parameters -#define GET_BlendFunc(disp) ((disp)->BlendFunc) -#define SET_BlendFunc(disp, fn) ((disp)->BlendFunc = fn) -#define CALL_LogicOp(disp, parameters) (*((disp)->LogicOp)) parameters -#define GET_LogicOp(disp) ((disp)->LogicOp) -#define SET_LogicOp(disp, fn) ((disp)->LogicOp = fn) -#define CALL_StencilFunc(disp, parameters) (*((disp)->StencilFunc)) parameters -#define GET_StencilFunc(disp) ((disp)->StencilFunc) -#define SET_StencilFunc(disp, fn) ((disp)->StencilFunc = fn) -#define CALL_StencilOp(disp, parameters) (*((disp)->StencilOp)) parameters -#define GET_StencilOp(disp) ((disp)->StencilOp) -#define SET_StencilOp(disp, fn) ((disp)->StencilOp = fn) -#define CALL_DepthFunc(disp, parameters) (*((disp)->DepthFunc)) parameters -#define GET_DepthFunc(disp) ((disp)->DepthFunc) -#define SET_DepthFunc(disp, fn) ((disp)->DepthFunc = fn) -#define CALL_PixelZoom(disp, parameters) (*((disp)->PixelZoom)) parameters -#define GET_PixelZoom(disp) ((disp)->PixelZoom) -#define SET_PixelZoom(disp, fn) ((disp)->PixelZoom = fn) -#define CALL_PixelTransferf(disp, parameters) (*((disp)->PixelTransferf)) parameters -#define GET_PixelTransferf(disp) ((disp)->PixelTransferf) -#define SET_PixelTransferf(disp, fn) ((disp)->PixelTransferf = fn) -#define CALL_PixelTransferi(disp, parameters) (*((disp)->PixelTransferi)) parameters -#define GET_PixelTransferi(disp) ((disp)->PixelTransferi) -#define SET_PixelTransferi(disp, fn) ((disp)->PixelTransferi = fn) -#define CALL_PixelStoref(disp, parameters) (*((disp)->PixelStoref)) parameters -#define GET_PixelStoref(disp) ((disp)->PixelStoref) -#define SET_PixelStoref(disp, fn) ((disp)->PixelStoref = fn) -#define CALL_PixelStorei(disp, parameters) (*((disp)->PixelStorei)) parameters -#define GET_PixelStorei(disp) ((disp)->PixelStorei) -#define SET_PixelStorei(disp, fn) ((disp)->PixelStorei = fn) -#define CALL_PixelMapfv(disp, parameters) (*((disp)->PixelMapfv)) parameters -#define GET_PixelMapfv(disp) ((disp)->PixelMapfv) -#define SET_PixelMapfv(disp, fn) ((disp)->PixelMapfv = fn) -#define CALL_PixelMapuiv(disp, parameters) (*((disp)->PixelMapuiv)) parameters -#define GET_PixelMapuiv(disp) ((disp)->PixelMapuiv) -#define SET_PixelMapuiv(disp, fn) ((disp)->PixelMapuiv = fn) -#define CALL_PixelMapusv(disp, parameters) (*((disp)->PixelMapusv)) parameters -#define GET_PixelMapusv(disp) ((disp)->PixelMapusv) -#define SET_PixelMapusv(disp, fn) ((disp)->PixelMapusv = fn) -#define CALL_ReadBuffer(disp, parameters) (*((disp)->ReadBuffer)) parameters -#define GET_ReadBuffer(disp) ((disp)->ReadBuffer) -#define SET_ReadBuffer(disp, fn) ((disp)->ReadBuffer = fn) -#define CALL_CopyPixels(disp, parameters) (*((disp)->CopyPixels)) parameters -#define GET_CopyPixels(disp) ((disp)->CopyPixels) -#define SET_CopyPixels(disp, fn) ((disp)->CopyPixels = fn) -#define CALL_ReadPixels(disp, parameters) (*((disp)->ReadPixels)) parameters -#define GET_ReadPixels(disp) ((disp)->ReadPixels) -#define SET_ReadPixels(disp, fn) ((disp)->ReadPixels = fn) -#define CALL_DrawPixels(disp, parameters) (*((disp)->DrawPixels)) parameters -#define GET_DrawPixels(disp) ((disp)->DrawPixels) -#define SET_DrawPixels(disp, fn) ((disp)->DrawPixels = fn) -#define CALL_GetBooleanv(disp, parameters) (*((disp)->GetBooleanv)) parameters -#define GET_GetBooleanv(disp) ((disp)->GetBooleanv) -#define SET_GetBooleanv(disp, fn) ((disp)->GetBooleanv = fn) -#define CALL_GetClipPlane(disp, parameters) (*((disp)->GetClipPlane)) parameters -#define GET_GetClipPlane(disp) ((disp)->GetClipPlane) -#define SET_GetClipPlane(disp, fn) ((disp)->GetClipPlane = fn) -#define CALL_GetDoublev(disp, parameters) (*((disp)->GetDoublev)) parameters -#define GET_GetDoublev(disp) ((disp)->GetDoublev) -#define SET_GetDoublev(disp, fn) ((disp)->GetDoublev = fn) -#define CALL_GetError(disp, parameters) (*((disp)->GetError)) parameters -#define GET_GetError(disp) ((disp)->GetError) -#define SET_GetError(disp, fn) ((disp)->GetError = fn) -#define CALL_GetFloatv(disp, parameters) (*((disp)->GetFloatv)) parameters -#define GET_GetFloatv(disp) ((disp)->GetFloatv) -#define SET_GetFloatv(disp, fn) ((disp)->GetFloatv = fn) -#define CALL_GetIntegerv(disp, parameters) (*((disp)->GetIntegerv)) parameters -#define GET_GetIntegerv(disp) ((disp)->GetIntegerv) -#define SET_GetIntegerv(disp, fn) ((disp)->GetIntegerv = fn) -#define CALL_GetLightfv(disp, parameters) (*((disp)->GetLightfv)) parameters -#define GET_GetLightfv(disp) ((disp)->GetLightfv) -#define SET_GetLightfv(disp, fn) ((disp)->GetLightfv = fn) -#define CALL_GetLightiv(disp, parameters) (*((disp)->GetLightiv)) parameters -#define GET_GetLightiv(disp) ((disp)->GetLightiv) -#define SET_GetLightiv(disp, fn) ((disp)->GetLightiv = fn) -#define CALL_GetMapdv(disp, parameters) (*((disp)->GetMapdv)) parameters -#define GET_GetMapdv(disp) ((disp)->GetMapdv) -#define SET_GetMapdv(disp, fn) ((disp)->GetMapdv = fn) -#define CALL_GetMapfv(disp, parameters) (*((disp)->GetMapfv)) parameters -#define GET_GetMapfv(disp) ((disp)->GetMapfv) -#define SET_GetMapfv(disp, fn) ((disp)->GetMapfv = fn) -#define CALL_GetMapiv(disp, parameters) (*((disp)->GetMapiv)) parameters -#define GET_GetMapiv(disp) ((disp)->GetMapiv) -#define SET_GetMapiv(disp, fn) ((disp)->GetMapiv = fn) -#define CALL_GetMaterialfv(disp, parameters) (*((disp)->GetMaterialfv)) parameters -#define GET_GetMaterialfv(disp) ((disp)->GetMaterialfv) -#define SET_GetMaterialfv(disp, fn) ((disp)->GetMaterialfv = fn) -#define CALL_GetMaterialiv(disp, parameters) (*((disp)->GetMaterialiv)) parameters -#define GET_GetMaterialiv(disp) ((disp)->GetMaterialiv) -#define SET_GetMaterialiv(disp, fn) ((disp)->GetMaterialiv = fn) -#define CALL_GetPixelMapfv(disp, parameters) (*((disp)->GetPixelMapfv)) parameters -#define GET_GetPixelMapfv(disp) ((disp)->GetPixelMapfv) -#define SET_GetPixelMapfv(disp, fn) ((disp)->GetPixelMapfv = fn) -#define CALL_GetPixelMapuiv(disp, parameters) (*((disp)->GetPixelMapuiv)) parameters -#define GET_GetPixelMapuiv(disp) ((disp)->GetPixelMapuiv) -#define SET_GetPixelMapuiv(disp, fn) ((disp)->GetPixelMapuiv = fn) -#define CALL_GetPixelMapusv(disp, parameters) (*((disp)->GetPixelMapusv)) parameters -#define GET_GetPixelMapusv(disp) ((disp)->GetPixelMapusv) -#define SET_GetPixelMapusv(disp, fn) ((disp)->GetPixelMapusv = fn) -#define CALL_GetPolygonStipple(disp, parameters) (*((disp)->GetPolygonStipple)) parameters -#define GET_GetPolygonStipple(disp) ((disp)->GetPolygonStipple) -#define SET_GetPolygonStipple(disp, fn) ((disp)->GetPolygonStipple = fn) -#define CALL_GetString(disp, parameters) (*((disp)->GetString)) parameters -#define GET_GetString(disp) ((disp)->GetString) -#define SET_GetString(disp, fn) ((disp)->GetString = fn) -#define CALL_GetTexEnvfv(disp, parameters) (*((disp)->GetTexEnvfv)) parameters -#define GET_GetTexEnvfv(disp) ((disp)->GetTexEnvfv) -#define SET_GetTexEnvfv(disp, fn) ((disp)->GetTexEnvfv = fn) -#define CALL_GetTexEnviv(disp, parameters) (*((disp)->GetTexEnviv)) parameters -#define GET_GetTexEnviv(disp) ((disp)->GetTexEnviv) -#define SET_GetTexEnviv(disp, fn) ((disp)->GetTexEnviv = fn) -#define CALL_GetTexGendv(disp, parameters) (*((disp)->GetTexGendv)) parameters -#define GET_GetTexGendv(disp) ((disp)->GetTexGendv) -#define SET_GetTexGendv(disp, fn) ((disp)->GetTexGendv = fn) -#define CALL_GetTexGenfv(disp, parameters) (*((disp)->GetTexGenfv)) parameters -#define GET_GetTexGenfv(disp) ((disp)->GetTexGenfv) -#define SET_GetTexGenfv(disp, fn) ((disp)->GetTexGenfv = fn) -#define CALL_GetTexGeniv(disp, parameters) (*((disp)->GetTexGeniv)) parameters -#define GET_GetTexGeniv(disp) ((disp)->GetTexGeniv) -#define SET_GetTexGeniv(disp, fn) ((disp)->GetTexGeniv = fn) -#define CALL_GetTexImage(disp, parameters) (*((disp)->GetTexImage)) parameters -#define GET_GetTexImage(disp) ((disp)->GetTexImage) -#define SET_GetTexImage(disp, fn) ((disp)->GetTexImage = fn) -#define CALL_GetTexParameterfv(disp, parameters) (*((disp)->GetTexParameterfv)) parameters -#define GET_GetTexParameterfv(disp) ((disp)->GetTexParameterfv) -#define SET_GetTexParameterfv(disp, fn) ((disp)->GetTexParameterfv = fn) -#define CALL_GetTexParameteriv(disp, parameters) (*((disp)->GetTexParameteriv)) parameters -#define GET_GetTexParameteriv(disp) ((disp)->GetTexParameteriv) -#define SET_GetTexParameteriv(disp, fn) ((disp)->GetTexParameteriv = fn) -#define CALL_GetTexLevelParameterfv(disp, parameters) (*((disp)->GetTexLevelParameterfv)) parameters -#define GET_GetTexLevelParameterfv(disp) ((disp)->GetTexLevelParameterfv) -#define SET_GetTexLevelParameterfv(disp, fn) ((disp)->GetTexLevelParameterfv = fn) -#define CALL_GetTexLevelParameteriv(disp, parameters) (*((disp)->GetTexLevelParameteriv)) parameters -#define GET_GetTexLevelParameteriv(disp) ((disp)->GetTexLevelParameteriv) -#define SET_GetTexLevelParameteriv(disp, fn) ((disp)->GetTexLevelParameteriv = fn) -#define CALL_IsEnabled(disp, parameters) (*((disp)->IsEnabled)) parameters -#define GET_IsEnabled(disp) ((disp)->IsEnabled) -#define SET_IsEnabled(disp, fn) ((disp)->IsEnabled = fn) -#define CALL_IsList(disp, parameters) (*((disp)->IsList)) parameters -#define GET_IsList(disp) ((disp)->IsList) -#define SET_IsList(disp, fn) ((disp)->IsList = fn) -#define CALL_DepthRange(disp, parameters) (*((disp)->DepthRange)) parameters -#define GET_DepthRange(disp) ((disp)->DepthRange) -#define SET_DepthRange(disp, fn) ((disp)->DepthRange = fn) -#define CALL_Frustum(disp, parameters) (*((disp)->Frustum)) parameters -#define GET_Frustum(disp) ((disp)->Frustum) -#define SET_Frustum(disp, fn) ((disp)->Frustum = fn) -#define CALL_LoadIdentity(disp, parameters) (*((disp)->LoadIdentity)) parameters -#define GET_LoadIdentity(disp) ((disp)->LoadIdentity) -#define SET_LoadIdentity(disp, fn) ((disp)->LoadIdentity = fn) -#define CALL_LoadMatrixf(disp, parameters) (*((disp)->LoadMatrixf)) parameters -#define GET_LoadMatrixf(disp) ((disp)->LoadMatrixf) -#define SET_LoadMatrixf(disp, fn) ((disp)->LoadMatrixf = fn) -#define CALL_LoadMatrixd(disp, parameters) (*((disp)->LoadMatrixd)) parameters -#define GET_LoadMatrixd(disp) ((disp)->LoadMatrixd) -#define SET_LoadMatrixd(disp, fn) ((disp)->LoadMatrixd = fn) -#define CALL_MatrixMode(disp, parameters) (*((disp)->MatrixMode)) parameters -#define GET_MatrixMode(disp) ((disp)->MatrixMode) -#define SET_MatrixMode(disp, fn) ((disp)->MatrixMode = fn) -#define CALL_MultMatrixf(disp, parameters) (*((disp)->MultMatrixf)) parameters -#define GET_MultMatrixf(disp) ((disp)->MultMatrixf) -#define SET_MultMatrixf(disp, fn) ((disp)->MultMatrixf = fn) -#define CALL_MultMatrixd(disp, parameters) (*((disp)->MultMatrixd)) parameters -#define GET_MultMatrixd(disp) ((disp)->MultMatrixd) -#define SET_MultMatrixd(disp, fn) ((disp)->MultMatrixd = fn) -#define CALL_Ortho(disp, parameters) (*((disp)->Ortho)) parameters -#define GET_Ortho(disp) ((disp)->Ortho) -#define SET_Ortho(disp, fn) ((disp)->Ortho = fn) -#define CALL_PopMatrix(disp, parameters) (*((disp)->PopMatrix)) parameters -#define GET_PopMatrix(disp) ((disp)->PopMatrix) -#define SET_PopMatrix(disp, fn) ((disp)->PopMatrix = fn) -#define CALL_PushMatrix(disp, parameters) (*((disp)->PushMatrix)) parameters -#define GET_PushMatrix(disp) ((disp)->PushMatrix) -#define SET_PushMatrix(disp, fn) ((disp)->PushMatrix = fn) -#define CALL_Rotated(disp, parameters) (*((disp)->Rotated)) parameters -#define GET_Rotated(disp) ((disp)->Rotated) -#define SET_Rotated(disp, fn) ((disp)->Rotated = fn) -#define CALL_Rotatef(disp, parameters) (*((disp)->Rotatef)) parameters -#define GET_Rotatef(disp) ((disp)->Rotatef) -#define SET_Rotatef(disp, fn) ((disp)->Rotatef = fn) -#define CALL_Scaled(disp, parameters) (*((disp)->Scaled)) parameters -#define GET_Scaled(disp) ((disp)->Scaled) -#define SET_Scaled(disp, fn) ((disp)->Scaled = fn) -#define CALL_Scalef(disp, parameters) (*((disp)->Scalef)) parameters -#define GET_Scalef(disp) ((disp)->Scalef) -#define SET_Scalef(disp, fn) ((disp)->Scalef = fn) -#define CALL_Translated(disp, parameters) (*((disp)->Translated)) parameters -#define GET_Translated(disp) ((disp)->Translated) -#define SET_Translated(disp, fn) ((disp)->Translated = fn) -#define CALL_Translatef(disp, parameters) (*((disp)->Translatef)) parameters -#define GET_Translatef(disp) ((disp)->Translatef) -#define SET_Translatef(disp, fn) ((disp)->Translatef = fn) -#define CALL_Viewport(disp, parameters) (*((disp)->Viewport)) parameters -#define GET_Viewport(disp) ((disp)->Viewport) -#define SET_Viewport(disp, fn) ((disp)->Viewport = fn) -#define CALL_ArrayElement(disp, parameters) (*((disp)->ArrayElement)) parameters -#define GET_ArrayElement(disp) ((disp)->ArrayElement) -#define SET_ArrayElement(disp, fn) ((disp)->ArrayElement = fn) -#define CALL_BindTexture(disp, parameters) (*((disp)->BindTexture)) parameters -#define GET_BindTexture(disp) ((disp)->BindTexture) -#define SET_BindTexture(disp, fn) ((disp)->BindTexture = fn) -#define CALL_ColorPointer(disp, parameters) (*((disp)->ColorPointer)) parameters -#define GET_ColorPointer(disp) ((disp)->ColorPointer) -#define SET_ColorPointer(disp, fn) ((disp)->ColorPointer = fn) -#define CALL_DisableClientState(disp, parameters) (*((disp)->DisableClientState)) parameters -#define GET_DisableClientState(disp) ((disp)->DisableClientState) -#define SET_DisableClientState(disp, fn) ((disp)->DisableClientState = fn) -#define CALL_DrawArrays(disp, parameters) (*((disp)->DrawArrays)) parameters -#define GET_DrawArrays(disp) ((disp)->DrawArrays) -#define SET_DrawArrays(disp, fn) ((disp)->DrawArrays = fn) -#define CALL_DrawElements(disp, parameters) (*((disp)->DrawElements)) parameters -#define GET_DrawElements(disp) ((disp)->DrawElements) -#define SET_DrawElements(disp, fn) ((disp)->DrawElements = fn) -#define CALL_EdgeFlagPointer(disp, parameters) (*((disp)->EdgeFlagPointer)) parameters -#define GET_EdgeFlagPointer(disp) ((disp)->EdgeFlagPointer) -#define SET_EdgeFlagPointer(disp, fn) ((disp)->EdgeFlagPointer = fn) -#define CALL_EnableClientState(disp, parameters) (*((disp)->EnableClientState)) parameters -#define GET_EnableClientState(disp) ((disp)->EnableClientState) -#define SET_EnableClientState(disp, fn) ((disp)->EnableClientState = fn) -#define CALL_IndexPointer(disp, parameters) (*((disp)->IndexPointer)) parameters -#define GET_IndexPointer(disp) ((disp)->IndexPointer) -#define SET_IndexPointer(disp, fn) ((disp)->IndexPointer = fn) -#define CALL_Indexub(disp, parameters) (*((disp)->Indexub)) parameters -#define GET_Indexub(disp) ((disp)->Indexub) -#define SET_Indexub(disp, fn) ((disp)->Indexub = fn) -#define CALL_Indexubv(disp, parameters) (*((disp)->Indexubv)) parameters -#define GET_Indexubv(disp) ((disp)->Indexubv) -#define SET_Indexubv(disp, fn) ((disp)->Indexubv = fn) -#define CALL_InterleavedArrays(disp, parameters) (*((disp)->InterleavedArrays)) parameters -#define GET_InterleavedArrays(disp) ((disp)->InterleavedArrays) -#define SET_InterleavedArrays(disp, fn) ((disp)->InterleavedArrays = fn) -#define CALL_NormalPointer(disp, parameters) (*((disp)->NormalPointer)) parameters -#define GET_NormalPointer(disp) ((disp)->NormalPointer) -#define SET_NormalPointer(disp, fn) ((disp)->NormalPointer = fn) -#define CALL_PolygonOffset(disp, parameters) (*((disp)->PolygonOffset)) parameters -#define GET_PolygonOffset(disp) ((disp)->PolygonOffset) -#define SET_PolygonOffset(disp, fn) ((disp)->PolygonOffset = fn) -#define CALL_TexCoordPointer(disp, parameters) (*((disp)->TexCoordPointer)) parameters -#define GET_TexCoordPointer(disp) ((disp)->TexCoordPointer) -#define SET_TexCoordPointer(disp, fn) ((disp)->TexCoordPointer = fn) -#define CALL_VertexPointer(disp, parameters) (*((disp)->VertexPointer)) parameters -#define GET_VertexPointer(disp) ((disp)->VertexPointer) -#define SET_VertexPointer(disp, fn) ((disp)->VertexPointer = fn) -#define CALL_AreTexturesResident(disp, parameters) (*((disp)->AreTexturesResident)) parameters -#define GET_AreTexturesResident(disp) ((disp)->AreTexturesResident) -#define SET_AreTexturesResident(disp, fn) ((disp)->AreTexturesResident = fn) -#define CALL_CopyTexImage1D(disp, parameters) (*((disp)->CopyTexImage1D)) parameters -#define GET_CopyTexImage1D(disp) ((disp)->CopyTexImage1D) -#define SET_CopyTexImage1D(disp, fn) ((disp)->CopyTexImage1D = fn) -#define CALL_CopyTexImage2D(disp, parameters) (*((disp)->CopyTexImage2D)) parameters -#define GET_CopyTexImage2D(disp) ((disp)->CopyTexImage2D) -#define SET_CopyTexImage2D(disp, fn) ((disp)->CopyTexImage2D = fn) -#define CALL_CopyTexSubImage1D(disp, parameters) (*((disp)->CopyTexSubImage1D)) parameters -#define GET_CopyTexSubImage1D(disp) ((disp)->CopyTexSubImage1D) -#define SET_CopyTexSubImage1D(disp, fn) ((disp)->CopyTexSubImage1D = fn) -#define CALL_CopyTexSubImage2D(disp, parameters) (*((disp)->CopyTexSubImage2D)) parameters -#define GET_CopyTexSubImage2D(disp) ((disp)->CopyTexSubImage2D) -#define SET_CopyTexSubImage2D(disp, fn) ((disp)->CopyTexSubImage2D = fn) -#define CALL_DeleteTextures(disp, parameters) (*((disp)->DeleteTextures)) parameters -#define GET_DeleteTextures(disp) ((disp)->DeleteTextures) -#define SET_DeleteTextures(disp, fn) ((disp)->DeleteTextures = fn) -#define CALL_GenTextures(disp, parameters) (*((disp)->GenTextures)) parameters -#define GET_GenTextures(disp) ((disp)->GenTextures) -#define SET_GenTextures(disp, fn) ((disp)->GenTextures = fn) -#define CALL_GetPointerv(disp, parameters) (*((disp)->GetPointerv)) parameters -#define GET_GetPointerv(disp) ((disp)->GetPointerv) -#define SET_GetPointerv(disp, fn) ((disp)->GetPointerv = fn) -#define CALL_IsTexture(disp, parameters) (*((disp)->IsTexture)) parameters -#define GET_IsTexture(disp) ((disp)->IsTexture) -#define SET_IsTexture(disp, fn) ((disp)->IsTexture = fn) -#define CALL_PrioritizeTextures(disp, parameters) (*((disp)->PrioritizeTextures)) parameters -#define GET_PrioritizeTextures(disp) ((disp)->PrioritizeTextures) -#define SET_PrioritizeTextures(disp, fn) ((disp)->PrioritizeTextures = fn) -#define CALL_TexSubImage1D(disp, parameters) (*((disp)->TexSubImage1D)) parameters -#define GET_TexSubImage1D(disp) ((disp)->TexSubImage1D) -#define SET_TexSubImage1D(disp, fn) ((disp)->TexSubImage1D = fn) -#define CALL_TexSubImage2D(disp, parameters) (*((disp)->TexSubImage2D)) parameters -#define GET_TexSubImage2D(disp) ((disp)->TexSubImage2D) -#define SET_TexSubImage2D(disp, fn) ((disp)->TexSubImage2D = fn) -#define CALL_PopClientAttrib(disp, parameters) (*((disp)->PopClientAttrib)) parameters -#define GET_PopClientAttrib(disp) ((disp)->PopClientAttrib) -#define SET_PopClientAttrib(disp, fn) ((disp)->PopClientAttrib = fn) -#define CALL_PushClientAttrib(disp, parameters) (*((disp)->PushClientAttrib)) parameters -#define GET_PushClientAttrib(disp) ((disp)->PushClientAttrib) -#define SET_PushClientAttrib(disp, fn) ((disp)->PushClientAttrib = fn) -#define CALL_BlendColor(disp, parameters) (*((disp)->BlendColor)) parameters -#define GET_BlendColor(disp) ((disp)->BlendColor) -#define SET_BlendColor(disp, fn) ((disp)->BlendColor = fn) -#define CALL_BlendEquation(disp, parameters) (*((disp)->BlendEquation)) parameters -#define GET_BlendEquation(disp) ((disp)->BlendEquation) -#define SET_BlendEquation(disp, fn) ((disp)->BlendEquation = fn) -#define CALL_DrawRangeElements(disp, parameters) (*((disp)->DrawRangeElements)) parameters -#define GET_DrawRangeElements(disp) ((disp)->DrawRangeElements) -#define SET_DrawRangeElements(disp, fn) ((disp)->DrawRangeElements = fn) -#define CALL_ColorTable(disp, parameters) (*((disp)->ColorTable)) parameters -#define GET_ColorTable(disp) ((disp)->ColorTable) -#define SET_ColorTable(disp, fn) ((disp)->ColorTable = fn) -#define CALL_ColorTableParameterfv(disp, parameters) (*((disp)->ColorTableParameterfv)) parameters -#define GET_ColorTableParameterfv(disp) ((disp)->ColorTableParameterfv) -#define SET_ColorTableParameterfv(disp, fn) ((disp)->ColorTableParameterfv = fn) -#define CALL_ColorTableParameteriv(disp, parameters) (*((disp)->ColorTableParameteriv)) parameters -#define GET_ColorTableParameteriv(disp) ((disp)->ColorTableParameteriv) -#define SET_ColorTableParameteriv(disp, fn) ((disp)->ColorTableParameteriv = fn) -#define CALL_CopyColorTable(disp, parameters) (*((disp)->CopyColorTable)) parameters -#define GET_CopyColorTable(disp) ((disp)->CopyColorTable) -#define SET_CopyColorTable(disp, fn) ((disp)->CopyColorTable = fn) -#define CALL_GetColorTable(disp, parameters) (*((disp)->GetColorTable)) parameters -#define GET_GetColorTable(disp) ((disp)->GetColorTable) -#define SET_GetColorTable(disp, fn) ((disp)->GetColorTable = fn) -#define CALL_GetColorTableParameterfv(disp, parameters) (*((disp)->GetColorTableParameterfv)) parameters -#define GET_GetColorTableParameterfv(disp) ((disp)->GetColorTableParameterfv) -#define SET_GetColorTableParameterfv(disp, fn) ((disp)->GetColorTableParameterfv = fn) -#define CALL_GetColorTableParameteriv(disp, parameters) (*((disp)->GetColorTableParameteriv)) parameters -#define GET_GetColorTableParameteriv(disp) ((disp)->GetColorTableParameteriv) -#define SET_GetColorTableParameteriv(disp, fn) ((disp)->GetColorTableParameteriv = fn) -#define CALL_ColorSubTable(disp, parameters) (*((disp)->ColorSubTable)) parameters -#define GET_ColorSubTable(disp) ((disp)->ColorSubTable) -#define SET_ColorSubTable(disp, fn) ((disp)->ColorSubTable = fn) -#define CALL_CopyColorSubTable(disp, parameters) (*((disp)->CopyColorSubTable)) parameters -#define GET_CopyColorSubTable(disp) ((disp)->CopyColorSubTable) -#define SET_CopyColorSubTable(disp, fn) ((disp)->CopyColorSubTable = fn) -#define CALL_ConvolutionFilter1D(disp, parameters) (*((disp)->ConvolutionFilter1D)) parameters -#define GET_ConvolutionFilter1D(disp) ((disp)->ConvolutionFilter1D) -#define SET_ConvolutionFilter1D(disp, fn) ((disp)->ConvolutionFilter1D = fn) -#define CALL_ConvolutionFilter2D(disp, parameters) (*((disp)->ConvolutionFilter2D)) parameters -#define GET_ConvolutionFilter2D(disp) ((disp)->ConvolutionFilter2D) -#define SET_ConvolutionFilter2D(disp, fn) ((disp)->ConvolutionFilter2D = fn) -#define CALL_ConvolutionParameterf(disp, parameters) (*((disp)->ConvolutionParameterf)) parameters -#define GET_ConvolutionParameterf(disp) ((disp)->ConvolutionParameterf) -#define SET_ConvolutionParameterf(disp, fn) ((disp)->ConvolutionParameterf = fn) -#define CALL_ConvolutionParameterfv(disp, parameters) (*((disp)->ConvolutionParameterfv)) parameters -#define GET_ConvolutionParameterfv(disp) ((disp)->ConvolutionParameterfv) -#define SET_ConvolutionParameterfv(disp, fn) ((disp)->ConvolutionParameterfv = fn) -#define CALL_ConvolutionParameteri(disp, parameters) (*((disp)->ConvolutionParameteri)) parameters -#define GET_ConvolutionParameteri(disp) ((disp)->ConvolutionParameteri) -#define SET_ConvolutionParameteri(disp, fn) ((disp)->ConvolutionParameteri = fn) -#define CALL_ConvolutionParameteriv(disp, parameters) (*((disp)->ConvolutionParameteriv)) parameters -#define GET_ConvolutionParameteriv(disp) ((disp)->ConvolutionParameteriv) -#define SET_ConvolutionParameteriv(disp, fn) ((disp)->ConvolutionParameteriv = fn) -#define CALL_CopyConvolutionFilter1D(disp, parameters) (*((disp)->CopyConvolutionFilter1D)) parameters -#define GET_CopyConvolutionFilter1D(disp) ((disp)->CopyConvolutionFilter1D) -#define SET_CopyConvolutionFilter1D(disp, fn) ((disp)->CopyConvolutionFilter1D = fn) -#define CALL_CopyConvolutionFilter2D(disp, parameters) (*((disp)->CopyConvolutionFilter2D)) parameters -#define GET_CopyConvolutionFilter2D(disp) ((disp)->CopyConvolutionFilter2D) -#define SET_CopyConvolutionFilter2D(disp, fn) ((disp)->CopyConvolutionFilter2D = fn) -#define CALL_GetConvolutionFilter(disp, parameters) (*((disp)->GetConvolutionFilter)) parameters -#define GET_GetConvolutionFilter(disp) ((disp)->GetConvolutionFilter) -#define SET_GetConvolutionFilter(disp, fn) ((disp)->GetConvolutionFilter = fn) -#define CALL_GetConvolutionParameterfv(disp, parameters) (*((disp)->GetConvolutionParameterfv)) parameters -#define GET_GetConvolutionParameterfv(disp) ((disp)->GetConvolutionParameterfv) -#define SET_GetConvolutionParameterfv(disp, fn) ((disp)->GetConvolutionParameterfv = fn) -#define CALL_GetConvolutionParameteriv(disp, parameters) (*((disp)->GetConvolutionParameteriv)) parameters -#define GET_GetConvolutionParameteriv(disp) ((disp)->GetConvolutionParameteriv) -#define SET_GetConvolutionParameteriv(disp, fn) ((disp)->GetConvolutionParameteriv = fn) -#define CALL_GetSeparableFilter(disp, parameters) (*((disp)->GetSeparableFilter)) parameters -#define GET_GetSeparableFilter(disp) ((disp)->GetSeparableFilter) -#define SET_GetSeparableFilter(disp, fn) ((disp)->GetSeparableFilter = fn) -#define CALL_SeparableFilter2D(disp, parameters) (*((disp)->SeparableFilter2D)) parameters -#define GET_SeparableFilter2D(disp) ((disp)->SeparableFilter2D) -#define SET_SeparableFilter2D(disp, fn) ((disp)->SeparableFilter2D = fn) -#define CALL_GetHistogram(disp, parameters) (*((disp)->GetHistogram)) parameters -#define GET_GetHistogram(disp) ((disp)->GetHistogram) -#define SET_GetHistogram(disp, fn) ((disp)->GetHistogram = fn) -#define CALL_GetHistogramParameterfv(disp, parameters) (*((disp)->GetHistogramParameterfv)) parameters -#define GET_GetHistogramParameterfv(disp) ((disp)->GetHistogramParameterfv) -#define SET_GetHistogramParameterfv(disp, fn) ((disp)->GetHistogramParameterfv = fn) -#define CALL_GetHistogramParameteriv(disp, parameters) (*((disp)->GetHistogramParameteriv)) parameters -#define GET_GetHistogramParameteriv(disp) ((disp)->GetHistogramParameteriv) -#define SET_GetHistogramParameteriv(disp, fn) ((disp)->GetHistogramParameteriv = fn) -#define CALL_GetMinmax(disp, parameters) (*((disp)->GetMinmax)) parameters -#define GET_GetMinmax(disp) ((disp)->GetMinmax) -#define SET_GetMinmax(disp, fn) ((disp)->GetMinmax = fn) -#define CALL_GetMinmaxParameterfv(disp, parameters) (*((disp)->GetMinmaxParameterfv)) parameters -#define GET_GetMinmaxParameterfv(disp) ((disp)->GetMinmaxParameterfv) -#define SET_GetMinmaxParameterfv(disp, fn) ((disp)->GetMinmaxParameterfv = fn) -#define CALL_GetMinmaxParameteriv(disp, parameters) (*((disp)->GetMinmaxParameteriv)) parameters -#define GET_GetMinmaxParameteriv(disp) ((disp)->GetMinmaxParameteriv) -#define SET_GetMinmaxParameteriv(disp, fn) ((disp)->GetMinmaxParameteriv = fn) -#define CALL_Histogram(disp, parameters) (*((disp)->Histogram)) parameters -#define GET_Histogram(disp) ((disp)->Histogram) -#define SET_Histogram(disp, fn) ((disp)->Histogram = fn) -#define CALL_Minmax(disp, parameters) (*((disp)->Minmax)) parameters -#define GET_Minmax(disp) ((disp)->Minmax) -#define SET_Minmax(disp, fn) ((disp)->Minmax = fn) -#define CALL_ResetHistogram(disp, parameters) (*((disp)->ResetHistogram)) parameters -#define GET_ResetHistogram(disp) ((disp)->ResetHistogram) -#define SET_ResetHistogram(disp, fn) ((disp)->ResetHistogram = fn) -#define CALL_ResetMinmax(disp, parameters) (*((disp)->ResetMinmax)) parameters -#define GET_ResetMinmax(disp) ((disp)->ResetMinmax) -#define SET_ResetMinmax(disp, fn) ((disp)->ResetMinmax = fn) -#define CALL_TexImage3D(disp, parameters) (*((disp)->TexImage3D)) parameters -#define GET_TexImage3D(disp) ((disp)->TexImage3D) -#define SET_TexImage3D(disp, fn) ((disp)->TexImage3D = fn) -#define CALL_TexSubImage3D(disp, parameters) (*((disp)->TexSubImage3D)) parameters -#define GET_TexSubImage3D(disp) ((disp)->TexSubImage3D) -#define SET_TexSubImage3D(disp, fn) ((disp)->TexSubImage3D = fn) -#define CALL_CopyTexSubImage3D(disp, parameters) (*((disp)->CopyTexSubImage3D)) parameters -#define GET_CopyTexSubImage3D(disp) ((disp)->CopyTexSubImage3D) -#define SET_CopyTexSubImage3D(disp, fn) ((disp)->CopyTexSubImage3D = fn) -#define CALL_ActiveTextureARB(disp, parameters) (*((disp)->ActiveTextureARB)) parameters -#define GET_ActiveTextureARB(disp) ((disp)->ActiveTextureARB) -#define SET_ActiveTextureARB(disp, fn) ((disp)->ActiveTextureARB = fn) -#define CALL_ClientActiveTextureARB(disp, parameters) (*((disp)->ClientActiveTextureARB)) parameters -#define GET_ClientActiveTextureARB(disp) ((disp)->ClientActiveTextureARB) -#define SET_ClientActiveTextureARB(disp, fn) ((disp)->ClientActiveTextureARB = fn) -#define CALL_MultiTexCoord1dARB(disp, parameters) (*((disp)->MultiTexCoord1dARB)) parameters -#define GET_MultiTexCoord1dARB(disp) ((disp)->MultiTexCoord1dARB) -#define SET_MultiTexCoord1dARB(disp, fn) ((disp)->MultiTexCoord1dARB = fn) -#define CALL_MultiTexCoord1dvARB(disp, parameters) (*((disp)->MultiTexCoord1dvARB)) parameters -#define GET_MultiTexCoord1dvARB(disp) ((disp)->MultiTexCoord1dvARB) -#define SET_MultiTexCoord1dvARB(disp, fn) ((disp)->MultiTexCoord1dvARB = fn) -#define CALL_MultiTexCoord1fARB(disp, parameters) (*((disp)->MultiTexCoord1fARB)) parameters -#define GET_MultiTexCoord1fARB(disp) ((disp)->MultiTexCoord1fARB) -#define SET_MultiTexCoord1fARB(disp, fn) ((disp)->MultiTexCoord1fARB = fn) -#define CALL_MultiTexCoord1fvARB(disp, parameters) (*((disp)->MultiTexCoord1fvARB)) parameters -#define GET_MultiTexCoord1fvARB(disp) ((disp)->MultiTexCoord1fvARB) -#define SET_MultiTexCoord1fvARB(disp, fn) ((disp)->MultiTexCoord1fvARB = fn) -#define CALL_MultiTexCoord1iARB(disp, parameters) (*((disp)->MultiTexCoord1iARB)) parameters -#define GET_MultiTexCoord1iARB(disp) ((disp)->MultiTexCoord1iARB) -#define SET_MultiTexCoord1iARB(disp, fn) ((disp)->MultiTexCoord1iARB = fn) -#define CALL_MultiTexCoord1ivARB(disp, parameters) (*((disp)->MultiTexCoord1ivARB)) parameters -#define GET_MultiTexCoord1ivARB(disp) ((disp)->MultiTexCoord1ivARB) -#define SET_MultiTexCoord1ivARB(disp, fn) ((disp)->MultiTexCoord1ivARB = fn) -#define CALL_MultiTexCoord1sARB(disp, parameters) (*((disp)->MultiTexCoord1sARB)) parameters -#define GET_MultiTexCoord1sARB(disp) ((disp)->MultiTexCoord1sARB) -#define SET_MultiTexCoord1sARB(disp, fn) ((disp)->MultiTexCoord1sARB = fn) -#define CALL_MultiTexCoord1svARB(disp, parameters) (*((disp)->MultiTexCoord1svARB)) parameters -#define GET_MultiTexCoord1svARB(disp) ((disp)->MultiTexCoord1svARB) -#define SET_MultiTexCoord1svARB(disp, fn) ((disp)->MultiTexCoord1svARB = fn) -#define CALL_MultiTexCoord2dARB(disp, parameters) (*((disp)->MultiTexCoord2dARB)) parameters -#define GET_MultiTexCoord2dARB(disp) ((disp)->MultiTexCoord2dARB) -#define SET_MultiTexCoord2dARB(disp, fn) ((disp)->MultiTexCoord2dARB = fn) -#define CALL_MultiTexCoord2dvARB(disp, parameters) (*((disp)->MultiTexCoord2dvARB)) parameters -#define GET_MultiTexCoord2dvARB(disp) ((disp)->MultiTexCoord2dvARB) -#define SET_MultiTexCoord2dvARB(disp, fn) ((disp)->MultiTexCoord2dvARB = fn) -#define CALL_MultiTexCoord2fARB(disp, parameters) (*((disp)->MultiTexCoord2fARB)) parameters -#define GET_MultiTexCoord2fARB(disp) ((disp)->MultiTexCoord2fARB) -#define SET_MultiTexCoord2fARB(disp, fn) ((disp)->MultiTexCoord2fARB = fn) -#define CALL_MultiTexCoord2fvARB(disp, parameters) (*((disp)->MultiTexCoord2fvARB)) parameters -#define GET_MultiTexCoord2fvARB(disp) ((disp)->MultiTexCoord2fvARB) -#define SET_MultiTexCoord2fvARB(disp, fn) ((disp)->MultiTexCoord2fvARB = fn) -#define CALL_MultiTexCoord2iARB(disp, parameters) (*((disp)->MultiTexCoord2iARB)) parameters -#define GET_MultiTexCoord2iARB(disp) ((disp)->MultiTexCoord2iARB) -#define SET_MultiTexCoord2iARB(disp, fn) ((disp)->MultiTexCoord2iARB = fn) -#define CALL_MultiTexCoord2ivARB(disp, parameters) (*((disp)->MultiTexCoord2ivARB)) parameters -#define GET_MultiTexCoord2ivARB(disp) ((disp)->MultiTexCoord2ivARB) -#define SET_MultiTexCoord2ivARB(disp, fn) ((disp)->MultiTexCoord2ivARB = fn) -#define CALL_MultiTexCoord2sARB(disp, parameters) (*((disp)->MultiTexCoord2sARB)) parameters -#define GET_MultiTexCoord2sARB(disp) ((disp)->MultiTexCoord2sARB) -#define SET_MultiTexCoord2sARB(disp, fn) ((disp)->MultiTexCoord2sARB = fn) -#define CALL_MultiTexCoord2svARB(disp, parameters) (*((disp)->MultiTexCoord2svARB)) parameters -#define GET_MultiTexCoord2svARB(disp) ((disp)->MultiTexCoord2svARB) -#define SET_MultiTexCoord2svARB(disp, fn) ((disp)->MultiTexCoord2svARB = fn) -#define CALL_MultiTexCoord3dARB(disp, parameters) (*((disp)->MultiTexCoord3dARB)) parameters -#define GET_MultiTexCoord3dARB(disp) ((disp)->MultiTexCoord3dARB) -#define SET_MultiTexCoord3dARB(disp, fn) ((disp)->MultiTexCoord3dARB = fn) -#define CALL_MultiTexCoord3dvARB(disp, parameters) (*((disp)->MultiTexCoord3dvARB)) parameters -#define GET_MultiTexCoord3dvARB(disp) ((disp)->MultiTexCoord3dvARB) -#define SET_MultiTexCoord3dvARB(disp, fn) ((disp)->MultiTexCoord3dvARB = fn) -#define CALL_MultiTexCoord3fARB(disp, parameters) (*((disp)->MultiTexCoord3fARB)) parameters -#define GET_MultiTexCoord3fARB(disp) ((disp)->MultiTexCoord3fARB) -#define SET_MultiTexCoord3fARB(disp, fn) ((disp)->MultiTexCoord3fARB = fn) -#define CALL_MultiTexCoord3fvARB(disp, parameters) (*((disp)->MultiTexCoord3fvARB)) parameters -#define GET_MultiTexCoord3fvARB(disp) ((disp)->MultiTexCoord3fvARB) -#define SET_MultiTexCoord3fvARB(disp, fn) ((disp)->MultiTexCoord3fvARB = fn) -#define CALL_MultiTexCoord3iARB(disp, parameters) (*((disp)->MultiTexCoord3iARB)) parameters -#define GET_MultiTexCoord3iARB(disp) ((disp)->MultiTexCoord3iARB) -#define SET_MultiTexCoord3iARB(disp, fn) ((disp)->MultiTexCoord3iARB = fn) -#define CALL_MultiTexCoord3ivARB(disp, parameters) (*((disp)->MultiTexCoord3ivARB)) parameters -#define GET_MultiTexCoord3ivARB(disp) ((disp)->MultiTexCoord3ivARB) -#define SET_MultiTexCoord3ivARB(disp, fn) ((disp)->MultiTexCoord3ivARB = fn) -#define CALL_MultiTexCoord3sARB(disp, parameters) (*((disp)->MultiTexCoord3sARB)) parameters -#define GET_MultiTexCoord3sARB(disp) ((disp)->MultiTexCoord3sARB) -#define SET_MultiTexCoord3sARB(disp, fn) ((disp)->MultiTexCoord3sARB = fn) -#define CALL_MultiTexCoord3svARB(disp, parameters) (*((disp)->MultiTexCoord3svARB)) parameters -#define GET_MultiTexCoord3svARB(disp) ((disp)->MultiTexCoord3svARB) -#define SET_MultiTexCoord3svARB(disp, fn) ((disp)->MultiTexCoord3svARB = fn) -#define CALL_MultiTexCoord4dARB(disp, parameters) (*((disp)->MultiTexCoord4dARB)) parameters -#define GET_MultiTexCoord4dARB(disp) ((disp)->MultiTexCoord4dARB) -#define SET_MultiTexCoord4dARB(disp, fn) ((disp)->MultiTexCoord4dARB = fn) -#define CALL_MultiTexCoord4dvARB(disp, parameters) (*((disp)->MultiTexCoord4dvARB)) parameters -#define GET_MultiTexCoord4dvARB(disp) ((disp)->MultiTexCoord4dvARB) -#define SET_MultiTexCoord4dvARB(disp, fn) ((disp)->MultiTexCoord4dvARB = fn) -#define CALL_MultiTexCoord4fARB(disp, parameters) (*((disp)->MultiTexCoord4fARB)) parameters -#define GET_MultiTexCoord4fARB(disp) ((disp)->MultiTexCoord4fARB) -#define SET_MultiTexCoord4fARB(disp, fn) ((disp)->MultiTexCoord4fARB = fn) -#define CALL_MultiTexCoord4fvARB(disp, parameters) (*((disp)->MultiTexCoord4fvARB)) parameters -#define GET_MultiTexCoord4fvARB(disp) ((disp)->MultiTexCoord4fvARB) -#define SET_MultiTexCoord4fvARB(disp, fn) ((disp)->MultiTexCoord4fvARB = fn) -#define CALL_MultiTexCoord4iARB(disp, parameters) (*((disp)->MultiTexCoord4iARB)) parameters -#define GET_MultiTexCoord4iARB(disp) ((disp)->MultiTexCoord4iARB) -#define SET_MultiTexCoord4iARB(disp, fn) ((disp)->MultiTexCoord4iARB = fn) -#define CALL_MultiTexCoord4ivARB(disp, parameters) (*((disp)->MultiTexCoord4ivARB)) parameters -#define GET_MultiTexCoord4ivARB(disp) ((disp)->MultiTexCoord4ivARB) -#define SET_MultiTexCoord4ivARB(disp, fn) ((disp)->MultiTexCoord4ivARB = fn) -#define CALL_MultiTexCoord4sARB(disp, parameters) (*((disp)->MultiTexCoord4sARB)) parameters -#define GET_MultiTexCoord4sARB(disp) ((disp)->MultiTexCoord4sARB) -#define SET_MultiTexCoord4sARB(disp, fn) ((disp)->MultiTexCoord4sARB = fn) -#define CALL_MultiTexCoord4svARB(disp, parameters) (*((disp)->MultiTexCoord4svARB)) parameters -#define GET_MultiTexCoord4svARB(disp) ((disp)->MultiTexCoord4svARB) -#define SET_MultiTexCoord4svARB(disp, fn) ((disp)->MultiTexCoord4svARB = fn) - -#if !defined(_GLAPI_USE_REMAP_TABLE) - -#define CALL_AttachShader(disp, parameters) (*((disp)->AttachShader)) parameters -#define GET_AttachShader(disp) ((disp)->AttachShader) -#define SET_AttachShader(disp, fn) ((disp)->AttachShader = fn) -#define CALL_CreateProgram(disp, parameters) (*((disp)->CreateProgram)) parameters -#define GET_CreateProgram(disp) ((disp)->CreateProgram) -#define SET_CreateProgram(disp, fn) ((disp)->CreateProgram = fn) -#define CALL_CreateShader(disp, parameters) (*((disp)->CreateShader)) parameters -#define GET_CreateShader(disp) ((disp)->CreateShader) -#define SET_CreateShader(disp, fn) ((disp)->CreateShader = fn) -#define CALL_DeleteProgram(disp, parameters) (*((disp)->DeleteProgram)) parameters -#define GET_DeleteProgram(disp) ((disp)->DeleteProgram) -#define SET_DeleteProgram(disp, fn) ((disp)->DeleteProgram = fn) -#define CALL_DeleteShader(disp, parameters) (*((disp)->DeleteShader)) parameters -#define GET_DeleteShader(disp) ((disp)->DeleteShader) -#define SET_DeleteShader(disp, fn) ((disp)->DeleteShader = fn) -#define CALL_DetachShader(disp, parameters) (*((disp)->DetachShader)) parameters -#define GET_DetachShader(disp) ((disp)->DetachShader) -#define SET_DetachShader(disp, fn) ((disp)->DetachShader = fn) -#define CALL_GetAttachedShaders(disp, parameters) (*((disp)->GetAttachedShaders)) parameters -#define GET_GetAttachedShaders(disp) ((disp)->GetAttachedShaders) -#define SET_GetAttachedShaders(disp, fn) ((disp)->GetAttachedShaders = fn) -#define CALL_GetProgramInfoLog(disp, parameters) (*((disp)->GetProgramInfoLog)) parameters -#define GET_GetProgramInfoLog(disp) ((disp)->GetProgramInfoLog) -#define SET_GetProgramInfoLog(disp, fn) ((disp)->GetProgramInfoLog = fn) -#define CALL_GetProgramiv(disp, parameters) (*((disp)->GetProgramiv)) parameters -#define GET_GetProgramiv(disp) ((disp)->GetProgramiv) -#define SET_GetProgramiv(disp, fn) ((disp)->GetProgramiv = fn) -#define CALL_GetShaderInfoLog(disp, parameters) (*((disp)->GetShaderInfoLog)) parameters -#define GET_GetShaderInfoLog(disp) ((disp)->GetShaderInfoLog) -#define SET_GetShaderInfoLog(disp, fn) ((disp)->GetShaderInfoLog = fn) -#define CALL_GetShaderiv(disp, parameters) (*((disp)->GetShaderiv)) parameters -#define GET_GetShaderiv(disp) ((disp)->GetShaderiv) -#define SET_GetShaderiv(disp, fn) ((disp)->GetShaderiv = fn) -#define CALL_IsProgram(disp, parameters) (*((disp)->IsProgram)) parameters -#define GET_IsProgram(disp) ((disp)->IsProgram) -#define SET_IsProgram(disp, fn) ((disp)->IsProgram = fn) -#define CALL_IsShader(disp, parameters) (*((disp)->IsShader)) parameters -#define GET_IsShader(disp) ((disp)->IsShader) -#define SET_IsShader(disp, fn) ((disp)->IsShader = fn) -#define CALL_StencilFuncSeparate(disp, parameters) (*((disp)->StencilFuncSeparate)) parameters -#define GET_StencilFuncSeparate(disp) ((disp)->StencilFuncSeparate) -#define SET_StencilFuncSeparate(disp, fn) ((disp)->StencilFuncSeparate = fn) -#define CALL_StencilMaskSeparate(disp, parameters) (*((disp)->StencilMaskSeparate)) parameters -#define GET_StencilMaskSeparate(disp) ((disp)->StencilMaskSeparate) -#define SET_StencilMaskSeparate(disp, fn) ((disp)->StencilMaskSeparate = fn) -#define CALL_StencilOpSeparate(disp, parameters) (*((disp)->StencilOpSeparate)) parameters -#define GET_StencilOpSeparate(disp) ((disp)->StencilOpSeparate) -#define SET_StencilOpSeparate(disp, fn) ((disp)->StencilOpSeparate = fn) -#define CALL_UniformMatrix2x3fv(disp, parameters) (*((disp)->UniformMatrix2x3fv)) parameters -#define GET_UniformMatrix2x3fv(disp) ((disp)->UniformMatrix2x3fv) -#define SET_UniformMatrix2x3fv(disp, fn) ((disp)->UniformMatrix2x3fv = fn) -#define CALL_UniformMatrix2x4fv(disp, parameters) (*((disp)->UniformMatrix2x4fv)) parameters -#define GET_UniformMatrix2x4fv(disp) ((disp)->UniformMatrix2x4fv) -#define SET_UniformMatrix2x4fv(disp, fn) ((disp)->UniformMatrix2x4fv = fn) -#define CALL_UniformMatrix3x2fv(disp, parameters) (*((disp)->UniformMatrix3x2fv)) parameters -#define GET_UniformMatrix3x2fv(disp) ((disp)->UniformMatrix3x2fv) -#define SET_UniformMatrix3x2fv(disp, fn) ((disp)->UniformMatrix3x2fv = fn) -#define CALL_UniformMatrix3x4fv(disp, parameters) (*((disp)->UniformMatrix3x4fv)) parameters -#define GET_UniformMatrix3x4fv(disp) ((disp)->UniformMatrix3x4fv) -#define SET_UniformMatrix3x4fv(disp, fn) ((disp)->UniformMatrix3x4fv = fn) -#define CALL_UniformMatrix4x2fv(disp, parameters) (*((disp)->UniformMatrix4x2fv)) parameters -#define GET_UniformMatrix4x2fv(disp) ((disp)->UniformMatrix4x2fv) -#define SET_UniformMatrix4x2fv(disp, fn) ((disp)->UniformMatrix4x2fv = fn) -#define CALL_UniformMatrix4x3fv(disp, parameters) (*((disp)->UniformMatrix4x3fv)) parameters -#define GET_UniformMatrix4x3fv(disp) ((disp)->UniformMatrix4x3fv) -#define SET_UniformMatrix4x3fv(disp, fn) ((disp)->UniformMatrix4x3fv = fn) -#define CALL_DrawArraysInstanced(disp, parameters) (*((disp)->DrawArraysInstanced)) parameters -#define GET_DrawArraysInstanced(disp) ((disp)->DrawArraysInstanced) -#define SET_DrawArraysInstanced(disp, fn) ((disp)->DrawArraysInstanced = fn) -#define CALL_DrawElementsInstanced(disp, parameters) (*((disp)->DrawElementsInstanced)) parameters -#define GET_DrawElementsInstanced(disp) ((disp)->DrawElementsInstanced) -#define SET_DrawElementsInstanced(disp, fn) ((disp)->DrawElementsInstanced = fn) -#define CALL_LoadTransposeMatrixdARB(disp, parameters) (*((disp)->LoadTransposeMatrixdARB)) parameters -#define GET_LoadTransposeMatrixdARB(disp) ((disp)->LoadTransposeMatrixdARB) -#define SET_LoadTransposeMatrixdARB(disp, fn) ((disp)->LoadTransposeMatrixdARB = fn) -#define CALL_LoadTransposeMatrixfARB(disp, parameters) (*((disp)->LoadTransposeMatrixfARB)) parameters -#define GET_LoadTransposeMatrixfARB(disp) ((disp)->LoadTransposeMatrixfARB) -#define SET_LoadTransposeMatrixfARB(disp, fn) ((disp)->LoadTransposeMatrixfARB = fn) -#define CALL_MultTransposeMatrixdARB(disp, parameters) (*((disp)->MultTransposeMatrixdARB)) parameters -#define GET_MultTransposeMatrixdARB(disp) ((disp)->MultTransposeMatrixdARB) -#define SET_MultTransposeMatrixdARB(disp, fn) ((disp)->MultTransposeMatrixdARB = fn) -#define CALL_MultTransposeMatrixfARB(disp, parameters) (*((disp)->MultTransposeMatrixfARB)) parameters -#define GET_MultTransposeMatrixfARB(disp) ((disp)->MultTransposeMatrixfARB) -#define SET_MultTransposeMatrixfARB(disp, fn) ((disp)->MultTransposeMatrixfARB = fn) -#define CALL_SampleCoverageARB(disp, parameters) (*((disp)->SampleCoverageARB)) parameters -#define GET_SampleCoverageARB(disp) ((disp)->SampleCoverageARB) -#define SET_SampleCoverageARB(disp, fn) ((disp)->SampleCoverageARB = fn) -#define CALL_CompressedTexImage1DARB(disp, parameters) (*((disp)->CompressedTexImage1DARB)) parameters -#define GET_CompressedTexImage1DARB(disp) ((disp)->CompressedTexImage1DARB) -#define SET_CompressedTexImage1DARB(disp, fn) ((disp)->CompressedTexImage1DARB = fn) -#define CALL_CompressedTexImage2DARB(disp, parameters) (*((disp)->CompressedTexImage2DARB)) parameters -#define GET_CompressedTexImage2DARB(disp) ((disp)->CompressedTexImage2DARB) -#define SET_CompressedTexImage2DARB(disp, fn) ((disp)->CompressedTexImage2DARB = fn) -#define CALL_CompressedTexImage3DARB(disp, parameters) (*((disp)->CompressedTexImage3DARB)) parameters -#define GET_CompressedTexImage3DARB(disp) ((disp)->CompressedTexImage3DARB) -#define SET_CompressedTexImage3DARB(disp, fn) ((disp)->CompressedTexImage3DARB = fn) -#define CALL_CompressedTexSubImage1DARB(disp, parameters) (*((disp)->CompressedTexSubImage1DARB)) parameters -#define GET_CompressedTexSubImage1DARB(disp) ((disp)->CompressedTexSubImage1DARB) -#define SET_CompressedTexSubImage1DARB(disp, fn) ((disp)->CompressedTexSubImage1DARB = fn) -#define CALL_CompressedTexSubImage2DARB(disp, parameters) (*((disp)->CompressedTexSubImage2DARB)) parameters -#define GET_CompressedTexSubImage2DARB(disp) ((disp)->CompressedTexSubImage2DARB) -#define SET_CompressedTexSubImage2DARB(disp, fn) ((disp)->CompressedTexSubImage2DARB = fn) -#define CALL_CompressedTexSubImage3DARB(disp, parameters) (*((disp)->CompressedTexSubImage3DARB)) parameters -#define GET_CompressedTexSubImage3DARB(disp) ((disp)->CompressedTexSubImage3DARB) -#define SET_CompressedTexSubImage3DARB(disp, fn) ((disp)->CompressedTexSubImage3DARB = fn) -#define CALL_GetCompressedTexImageARB(disp, parameters) (*((disp)->GetCompressedTexImageARB)) parameters -#define GET_GetCompressedTexImageARB(disp) ((disp)->GetCompressedTexImageARB) -#define SET_GetCompressedTexImageARB(disp, fn) ((disp)->GetCompressedTexImageARB = fn) -#define CALL_DisableVertexAttribArrayARB(disp, parameters) (*((disp)->DisableVertexAttribArrayARB)) parameters -#define GET_DisableVertexAttribArrayARB(disp) ((disp)->DisableVertexAttribArrayARB) -#define SET_DisableVertexAttribArrayARB(disp, fn) ((disp)->DisableVertexAttribArrayARB = fn) -#define CALL_EnableVertexAttribArrayARB(disp, parameters) (*((disp)->EnableVertexAttribArrayARB)) parameters -#define GET_EnableVertexAttribArrayARB(disp) ((disp)->EnableVertexAttribArrayARB) -#define SET_EnableVertexAttribArrayARB(disp, fn) ((disp)->EnableVertexAttribArrayARB = fn) -#define CALL_GetProgramEnvParameterdvARB(disp, parameters) (*((disp)->GetProgramEnvParameterdvARB)) parameters -#define GET_GetProgramEnvParameterdvARB(disp) ((disp)->GetProgramEnvParameterdvARB) -#define SET_GetProgramEnvParameterdvARB(disp, fn) ((disp)->GetProgramEnvParameterdvARB = fn) -#define CALL_GetProgramEnvParameterfvARB(disp, parameters) (*((disp)->GetProgramEnvParameterfvARB)) parameters -#define GET_GetProgramEnvParameterfvARB(disp) ((disp)->GetProgramEnvParameterfvARB) -#define SET_GetProgramEnvParameterfvARB(disp, fn) ((disp)->GetProgramEnvParameterfvARB = fn) -#define CALL_GetProgramLocalParameterdvARB(disp, parameters) (*((disp)->GetProgramLocalParameterdvARB)) parameters -#define GET_GetProgramLocalParameterdvARB(disp) ((disp)->GetProgramLocalParameterdvARB) -#define SET_GetProgramLocalParameterdvARB(disp, fn) ((disp)->GetProgramLocalParameterdvARB = fn) -#define CALL_GetProgramLocalParameterfvARB(disp, parameters) (*((disp)->GetProgramLocalParameterfvARB)) parameters -#define GET_GetProgramLocalParameterfvARB(disp) ((disp)->GetProgramLocalParameterfvARB) -#define SET_GetProgramLocalParameterfvARB(disp, fn) ((disp)->GetProgramLocalParameterfvARB = fn) -#define CALL_GetProgramStringARB(disp, parameters) (*((disp)->GetProgramStringARB)) parameters -#define GET_GetProgramStringARB(disp) ((disp)->GetProgramStringARB) -#define SET_GetProgramStringARB(disp, fn) ((disp)->GetProgramStringARB = fn) -#define CALL_GetProgramivARB(disp, parameters) (*((disp)->GetProgramivARB)) parameters -#define GET_GetProgramivARB(disp) ((disp)->GetProgramivARB) -#define SET_GetProgramivARB(disp, fn) ((disp)->GetProgramivARB = fn) -#define CALL_GetVertexAttribdvARB(disp, parameters) (*((disp)->GetVertexAttribdvARB)) parameters -#define GET_GetVertexAttribdvARB(disp) ((disp)->GetVertexAttribdvARB) -#define SET_GetVertexAttribdvARB(disp, fn) ((disp)->GetVertexAttribdvARB = fn) -#define CALL_GetVertexAttribfvARB(disp, parameters) (*((disp)->GetVertexAttribfvARB)) parameters -#define GET_GetVertexAttribfvARB(disp) ((disp)->GetVertexAttribfvARB) -#define SET_GetVertexAttribfvARB(disp, fn) ((disp)->GetVertexAttribfvARB = fn) -#define CALL_GetVertexAttribivARB(disp, parameters) (*((disp)->GetVertexAttribivARB)) parameters -#define GET_GetVertexAttribivARB(disp) ((disp)->GetVertexAttribivARB) -#define SET_GetVertexAttribivARB(disp, fn) ((disp)->GetVertexAttribivARB = fn) -#define CALL_ProgramEnvParameter4dARB(disp, parameters) (*((disp)->ProgramEnvParameter4dARB)) parameters -#define GET_ProgramEnvParameter4dARB(disp) ((disp)->ProgramEnvParameter4dARB) -#define SET_ProgramEnvParameter4dARB(disp, fn) ((disp)->ProgramEnvParameter4dARB = fn) -#define CALL_ProgramEnvParameter4dvARB(disp, parameters) (*((disp)->ProgramEnvParameter4dvARB)) parameters -#define GET_ProgramEnvParameter4dvARB(disp) ((disp)->ProgramEnvParameter4dvARB) -#define SET_ProgramEnvParameter4dvARB(disp, fn) ((disp)->ProgramEnvParameter4dvARB = fn) -#define CALL_ProgramEnvParameter4fARB(disp, parameters) (*((disp)->ProgramEnvParameter4fARB)) parameters -#define GET_ProgramEnvParameter4fARB(disp) ((disp)->ProgramEnvParameter4fARB) -#define SET_ProgramEnvParameter4fARB(disp, fn) ((disp)->ProgramEnvParameter4fARB = fn) -#define CALL_ProgramEnvParameter4fvARB(disp, parameters) (*((disp)->ProgramEnvParameter4fvARB)) parameters -#define GET_ProgramEnvParameter4fvARB(disp) ((disp)->ProgramEnvParameter4fvARB) -#define SET_ProgramEnvParameter4fvARB(disp, fn) ((disp)->ProgramEnvParameter4fvARB = fn) -#define CALL_ProgramLocalParameter4dARB(disp, parameters) (*((disp)->ProgramLocalParameter4dARB)) parameters -#define GET_ProgramLocalParameter4dARB(disp) ((disp)->ProgramLocalParameter4dARB) -#define SET_ProgramLocalParameter4dARB(disp, fn) ((disp)->ProgramLocalParameter4dARB = fn) -#define CALL_ProgramLocalParameter4dvARB(disp, parameters) (*((disp)->ProgramLocalParameter4dvARB)) parameters -#define GET_ProgramLocalParameter4dvARB(disp) ((disp)->ProgramLocalParameter4dvARB) -#define SET_ProgramLocalParameter4dvARB(disp, fn) ((disp)->ProgramLocalParameter4dvARB = fn) -#define CALL_ProgramLocalParameter4fARB(disp, parameters) (*((disp)->ProgramLocalParameter4fARB)) parameters -#define GET_ProgramLocalParameter4fARB(disp) ((disp)->ProgramLocalParameter4fARB) -#define SET_ProgramLocalParameter4fARB(disp, fn) ((disp)->ProgramLocalParameter4fARB = fn) -#define CALL_ProgramLocalParameter4fvARB(disp, parameters) (*((disp)->ProgramLocalParameter4fvARB)) parameters -#define GET_ProgramLocalParameter4fvARB(disp) ((disp)->ProgramLocalParameter4fvARB) -#define SET_ProgramLocalParameter4fvARB(disp, fn) ((disp)->ProgramLocalParameter4fvARB = fn) -#define CALL_ProgramStringARB(disp, parameters) (*((disp)->ProgramStringARB)) parameters -#define GET_ProgramStringARB(disp) ((disp)->ProgramStringARB) -#define SET_ProgramStringARB(disp, fn) ((disp)->ProgramStringARB = fn) -#define CALL_VertexAttrib1dARB(disp, parameters) (*((disp)->VertexAttrib1dARB)) parameters -#define GET_VertexAttrib1dARB(disp) ((disp)->VertexAttrib1dARB) -#define SET_VertexAttrib1dARB(disp, fn) ((disp)->VertexAttrib1dARB = fn) -#define CALL_VertexAttrib1dvARB(disp, parameters) (*((disp)->VertexAttrib1dvARB)) parameters -#define GET_VertexAttrib1dvARB(disp) ((disp)->VertexAttrib1dvARB) -#define SET_VertexAttrib1dvARB(disp, fn) ((disp)->VertexAttrib1dvARB = fn) -#define CALL_VertexAttrib1fARB(disp, parameters) (*((disp)->VertexAttrib1fARB)) parameters -#define GET_VertexAttrib1fARB(disp) ((disp)->VertexAttrib1fARB) -#define SET_VertexAttrib1fARB(disp, fn) ((disp)->VertexAttrib1fARB = fn) -#define CALL_VertexAttrib1fvARB(disp, parameters) (*((disp)->VertexAttrib1fvARB)) parameters -#define GET_VertexAttrib1fvARB(disp) ((disp)->VertexAttrib1fvARB) -#define SET_VertexAttrib1fvARB(disp, fn) ((disp)->VertexAttrib1fvARB = fn) -#define CALL_VertexAttrib1sARB(disp, parameters) (*((disp)->VertexAttrib1sARB)) parameters -#define GET_VertexAttrib1sARB(disp) ((disp)->VertexAttrib1sARB) -#define SET_VertexAttrib1sARB(disp, fn) ((disp)->VertexAttrib1sARB = fn) -#define CALL_VertexAttrib1svARB(disp, parameters) (*((disp)->VertexAttrib1svARB)) parameters -#define GET_VertexAttrib1svARB(disp) ((disp)->VertexAttrib1svARB) -#define SET_VertexAttrib1svARB(disp, fn) ((disp)->VertexAttrib1svARB = fn) -#define CALL_VertexAttrib2dARB(disp, parameters) (*((disp)->VertexAttrib2dARB)) parameters -#define GET_VertexAttrib2dARB(disp) ((disp)->VertexAttrib2dARB) -#define SET_VertexAttrib2dARB(disp, fn) ((disp)->VertexAttrib2dARB = fn) -#define CALL_VertexAttrib2dvARB(disp, parameters) (*((disp)->VertexAttrib2dvARB)) parameters -#define GET_VertexAttrib2dvARB(disp) ((disp)->VertexAttrib2dvARB) -#define SET_VertexAttrib2dvARB(disp, fn) ((disp)->VertexAttrib2dvARB = fn) -#define CALL_VertexAttrib2fARB(disp, parameters) (*((disp)->VertexAttrib2fARB)) parameters -#define GET_VertexAttrib2fARB(disp) ((disp)->VertexAttrib2fARB) -#define SET_VertexAttrib2fARB(disp, fn) ((disp)->VertexAttrib2fARB = fn) -#define CALL_VertexAttrib2fvARB(disp, parameters) (*((disp)->VertexAttrib2fvARB)) parameters -#define GET_VertexAttrib2fvARB(disp) ((disp)->VertexAttrib2fvARB) -#define SET_VertexAttrib2fvARB(disp, fn) ((disp)->VertexAttrib2fvARB = fn) -#define CALL_VertexAttrib2sARB(disp, parameters) (*((disp)->VertexAttrib2sARB)) parameters -#define GET_VertexAttrib2sARB(disp) ((disp)->VertexAttrib2sARB) -#define SET_VertexAttrib2sARB(disp, fn) ((disp)->VertexAttrib2sARB = fn) -#define CALL_VertexAttrib2svARB(disp, parameters) (*((disp)->VertexAttrib2svARB)) parameters -#define GET_VertexAttrib2svARB(disp) ((disp)->VertexAttrib2svARB) -#define SET_VertexAttrib2svARB(disp, fn) ((disp)->VertexAttrib2svARB = fn) -#define CALL_VertexAttrib3dARB(disp, parameters) (*((disp)->VertexAttrib3dARB)) parameters -#define GET_VertexAttrib3dARB(disp) ((disp)->VertexAttrib3dARB) -#define SET_VertexAttrib3dARB(disp, fn) ((disp)->VertexAttrib3dARB = fn) -#define CALL_VertexAttrib3dvARB(disp, parameters) (*((disp)->VertexAttrib3dvARB)) parameters -#define GET_VertexAttrib3dvARB(disp) ((disp)->VertexAttrib3dvARB) -#define SET_VertexAttrib3dvARB(disp, fn) ((disp)->VertexAttrib3dvARB = fn) -#define CALL_VertexAttrib3fARB(disp, parameters) (*((disp)->VertexAttrib3fARB)) parameters -#define GET_VertexAttrib3fARB(disp) ((disp)->VertexAttrib3fARB) -#define SET_VertexAttrib3fARB(disp, fn) ((disp)->VertexAttrib3fARB = fn) -#define CALL_VertexAttrib3fvARB(disp, parameters) (*((disp)->VertexAttrib3fvARB)) parameters -#define GET_VertexAttrib3fvARB(disp) ((disp)->VertexAttrib3fvARB) -#define SET_VertexAttrib3fvARB(disp, fn) ((disp)->VertexAttrib3fvARB = fn) -#define CALL_VertexAttrib3sARB(disp, parameters) (*((disp)->VertexAttrib3sARB)) parameters -#define GET_VertexAttrib3sARB(disp) ((disp)->VertexAttrib3sARB) -#define SET_VertexAttrib3sARB(disp, fn) ((disp)->VertexAttrib3sARB = fn) -#define CALL_VertexAttrib3svARB(disp, parameters) (*((disp)->VertexAttrib3svARB)) parameters -#define GET_VertexAttrib3svARB(disp) ((disp)->VertexAttrib3svARB) -#define SET_VertexAttrib3svARB(disp, fn) ((disp)->VertexAttrib3svARB = fn) -#define CALL_VertexAttrib4NbvARB(disp, parameters) (*((disp)->VertexAttrib4NbvARB)) parameters -#define GET_VertexAttrib4NbvARB(disp) ((disp)->VertexAttrib4NbvARB) -#define SET_VertexAttrib4NbvARB(disp, fn) ((disp)->VertexAttrib4NbvARB = fn) -#define CALL_VertexAttrib4NivARB(disp, parameters) (*((disp)->VertexAttrib4NivARB)) parameters -#define GET_VertexAttrib4NivARB(disp) ((disp)->VertexAttrib4NivARB) -#define SET_VertexAttrib4NivARB(disp, fn) ((disp)->VertexAttrib4NivARB = fn) -#define CALL_VertexAttrib4NsvARB(disp, parameters) (*((disp)->VertexAttrib4NsvARB)) parameters -#define GET_VertexAttrib4NsvARB(disp) ((disp)->VertexAttrib4NsvARB) -#define SET_VertexAttrib4NsvARB(disp, fn) ((disp)->VertexAttrib4NsvARB = fn) -#define CALL_VertexAttrib4NubARB(disp, parameters) (*((disp)->VertexAttrib4NubARB)) parameters -#define GET_VertexAttrib4NubARB(disp) ((disp)->VertexAttrib4NubARB) -#define SET_VertexAttrib4NubARB(disp, fn) ((disp)->VertexAttrib4NubARB = fn) -#define CALL_VertexAttrib4NubvARB(disp, parameters) (*((disp)->VertexAttrib4NubvARB)) parameters -#define GET_VertexAttrib4NubvARB(disp) ((disp)->VertexAttrib4NubvARB) -#define SET_VertexAttrib4NubvARB(disp, fn) ((disp)->VertexAttrib4NubvARB = fn) -#define CALL_VertexAttrib4NuivARB(disp, parameters) (*((disp)->VertexAttrib4NuivARB)) parameters -#define GET_VertexAttrib4NuivARB(disp) ((disp)->VertexAttrib4NuivARB) -#define SET_VertexAttrib4NuivARB(disp, fn) ((disp)->VertexAttrib4NuivARB = fn) -#define CALL_VertexAttrib4NusvARB(disp, parameters) (*((disp)->VertexAttrib4NusvARB)) parameters -#define GET_VertexAttrib4NusvARB(disp) ((disp)->VertexAttrib4NusvARB) -#define SET_VertexAttrib4NusvARB(disp, fn) ((disp)->VertexAttrib4NusvARB = fn) -#define CALL_VertexAttrib4bvARB(disp, parameters) (*((disp)->VertexAttrib4bvARB)) parameters -#define GET_VertexAttrib4bvARB(disp) ((disp)->VertexAttrib4bvARB) -#define SET_VertexAttrib4bvARB(disp, fn) ((disp)->VertexAttrib4bvARB = fn) -#define CALL_VertexAttrib4dARB(disp, parameters) (*((disp)->VertexAttrib4dARB)) parameters -#define GET_VertexAttrib4dARB(disp) ((disp)->VertexAttrib4dARB) -#define SET_VertexAttrib4dARB(disp, fn) ((disp)->VertexAttrib4dARB = fn) -#define CALL_VertexAttrib4dvARB(disp, parameters) (*((disp)->VertexAttrib4dvARB)) parameters -#define GET_VertexAttrib4dvARB(disp) ((disp)->VertexAttrib4dvARB) -#define SET_VertexAttrib4dvARB(disp, fn) ((disp)->VertexAttrib4dvARB = fn) -#define CALL_VertexAttrib4fARB(disp, parameters) (*((disp)->VertexAttrib4fARB)) parameters -#define GET_VertexAttrib4fARB(disp) ((disp)->VertexAttrib4fARB) -#define SET_VertexAttrib4fARB(disp, fn) ((disp)->VertexAttrib4fARB = fn) -#define CALL_VertexAttrib4fvARB(disp, parameters) (*((disp)->VertexAttrib4fvARB)) parameters -#define GET_VertexAttrib4fvARB(disp) ((disp)->VertexAttrib4fvARB) -#define SET_VertexAttrib4fvARB(disp, fn) ((disp)->VertexAttrib4fvARB = fn) -#define CALL_VertexAttrib4ivARB(disp, parameters) (*((disp)->VertexAttrib4ivARB)) parameters -#define GET_VertexAttrib4ivARB(disp) ((disp)->VertexAttrib4ivARB) -#define SET_VertexAttrib4ivARB(disp, fn) ((disp)->VertexAttrib4ivARB = fn) -#define CALL_VertexAttrib4sARB(disp, parameters) (*((disp)->VertexAttrib4sARB)) parameters -#define GET_VertexAttrib4sARB(disp) ((disp)->VertexAttrib4sARB) -#define SET_VertexAttrib4sARB(disp, fn) ((disp)->VertexAttrib4sARB = fn) -#define CALL_VertexAttrib4svARB(disp, parameters) (*((disp)->VertexAttrib4svARB)) parameters -#define GET_VertexAttrib4svARB(disp) ((disp)->VertexAttrib4svARB) -#define SET_VertexAttrib4svARB(disp, fn) ((disp)->VertexAttrib4svARB = fn) -#define CALL_VertexAttrib4ubvARB(disp, parameters) (*((disp)->VertexAttrib4ubvARB)) parameters -#define GET_VertexAttrib4ubvARB(disp) ((disp)->VertexAttrib4ubvARB) -#define SET_VertexAttrib4ubvARB(disp, fn) ((disp)->VertexAttrib4ubvARB = fn) -#define CALL_VertexAttrib4uivARB(disp, parameters) (*((disp)->VertexAttrib4uivARB)) parameters -#define GET_VertexAttrib4uivARB(disp) ((disp)->VertexAttrib4uivARB) -#define SET_VertexAttrib4uivARB(disp, fn) ((disp)->VertexAttrib4uivARB = fn) -#define CALL_VertexAttrib4usvARB(disp, parameters) (*((disp)->VertexAttrib4usvARB)) parameters -#define GET_VertexAttrib4usvARB(disp) ((disp)->VertexAttrib4usvARB) -#define SET_VertexAttrib4usvARB(disp, fn) ((disp)->VertexAttrib4usvARB = fn) -#define CALL_VertexAttribPointerARB(disp, parameters) (*((disp)->VertexAttribPointerARB)) parameters -#define GET_VertexAttribPointerARB(disp) ((disp)->VertexAttribPointerARB) -#define SET_VertexAttribPointerARB(disp, fn) ((disp)->VertexAttribPointerARB = fn) -#define CALL_BindBufferARB(disp, parameters) (*((disp)->BindBufferARB)) parameters -#define GET_BindBufferARB(disp) ((disp)->BindBufferARB) -#define SET_BindBufferARB(disp, fn) ((disp)->BindBufferARB = fn) -#define CALL_BufferDataARB(disp, parameters) (*((disp)->BufferDataARB)) parameters -#define GET_BufferDataARB(disp) ((disp)->BufferDataARB) -#define SET_BufferDataARB(disp, fn) ((disp)->BufferDataARB = fn) -#define CALL_BufferSubDataARB(disp, parameters) (*((disp)->BufferSubDataARB)) parameters -#define GET_BufferSubDataARB(disp) ((disp)->BufferSubDataARB) -#define SET_BufferSubDataARB(disp, fn) ((disp)->BufferSubDataARB = fn) -#define CALL_DeleteBuffersARB(disp, parameters) (*((disp)->DeleteBuffersARB)) parameters -#define GET_DeleteBuffersARB(disp) ((disp)->DeleteBuffersARB) -#define SET_DeleteBuffersARB(disp, fn) ((disp)->DeleteBuffersARB = fn) -#define CALL_GenBuffersARB(disp, parameters) (*((disp)->GenBuffersARB)) parameters -#define GET_GenBuffersARB(disp) ((disp)->GenBuffersARB) -#define SET_GenBuffersARB(disp, fn) ((disp)->GenBuffersARB = fn) -#define CALL_GetBufferParameterivARB(disp, parameters) (*((disp)->GetBufferParameterivARB)) parameters -#define GET_GetBufferParameterivARB(disp) ((disp)->GetBufferParameterivARB) -#define SET_GetBufferParameterivARB(disp, fn) ((disp)->GetBufferParameterivARB = fn) -#define CALL_GetBufferPointervARB(disp, parameters) (*((disp)->GetBufferPointervARB)) parameters -#define GET_GetBufferPointervARB(disp) ((disp)->GetBufferPointervARB) -#define SET_GetBufferPointervARB(disp, fn) ((disp)->GetBufferPointervARB = fn) -#define CALL_GetBufferSubDataARB(disp, parameters) (*((disp)->GetBufferSubDataARB)) parameters -#define GET_GetBufferSubDataARB(disp) ((disp)->GetBufferSubDataARB) -#define SET_GetBufferSubDataARB(disp, fn) ((disp)->GetBufferSubDataARB = fn) -#define CALL_IsBufferARB(disp, parameters) (*((disp)->IsBufferARB)) parameters -#define GET_IsBufferARB(disp) ((disp)->IsBufferARB) -#define SET_IsBufferARB(disp, fn) ((disp)->IsBufferARB = fn) -#define CALL_MapBufferARB(disp, parameters) (*((disp)->MapBufferARB)) parameters -#define GET_MapBufferARB(disp) ((disp)->MapBufferARB) -#define SET_MapBufferARB(disp, fn) ((disp)->MapBufferARB = fn) -#define CALL_UnmapBufferARB(disp, parameters) (*((disp)->UnmapBufferARB)) parameters -#define GET_UnmapBufferARB(disp) ((disp)->UnmapBufferARB) -#define SET_UnmapBufferARB(disp, fn) ((disp)->UnmapBufferARB = fn) -#define CALL_BeginQueryARB(disp, parameters) (*((disp)->BeginQueryARB)) parameters -#define GET_BeginQueryARB(disp) ((disp)->BeginQueryARB) -#define SET_BeginQueryARB(disp, fn) ((disp)->BeginQueryARB = fn) -#define CALL_DeleteQueriesARB(disp, parameters) (*((disp)->DeleteQueriesARB)) parameters -#define GET_DeleteQueriesARB(disp) ((disp)->DeleteQueriesARB) -#define SET_DeleteQueriesARB(disp, fn) ((disp)->DeleteQueriesARB = fn) -#define CALL_EndQueryARB(disp, parameters) (*((disp)->EndQueryARB)) parameters -#define GET_EndQueryARB(disp) ((disp)->EndQueryARB) -#define SET_EndQueryARB(disp, fn) ((disp)->EndQueryARB = fn) -#define CALL_GenQueriesARB(disp, parameters) (*((disp)->GenQueriesARB)) parameters -#define GET_GenQueriesARB(disp) ((disp)->GenQueriesARB) -#define SET_GenQueriesARB(disp, fn) ((disp)->GenQueriesARB = fn) -#define CALL_GetQueryObjectivARB(disp, parameters) (*((disp)->GetQueryObjectivARB)) parameters -#define GET_GetQueryObjectivARB(disp) ((disp)->GetQueryObjectivARB) -#define SET_GetQueryObjectivARB(disp, fn) ((disp)->GetQueryObjectivARB = fn) -#define CALL_GetQueryObjectuivARB(disp, parameters) (*((disp)->GetQueryObjectuivARB)) parameters -#define GET_GetQueryObjectuivARB(disp) ((disp)->GetQueryObjectuivARB) -#define SET_GetQueryObjectuivARB(disp, fn) ((disp)->GetQueryObjectuivARB = fn) -#define CALL_GetQueryivARB(disp, parameters) (*((disp)->GetQueryivARB)) parameters -#define GET_GetQueryivARB(disp) ((disp)->GetQueryivARB) -#define SET_GetQueryivARB(disp, fn) ((disp)->GetQueryivARB = fn) -#define CALL_IsQueryARB(disp, parameters) (*((disp)->IsQueryARB)) parameters -#define GET_IsQueryARB(disp) ((disp)->IsQueryARB) -#define SET_IsQueryARB(disp, fn) ((disp)->IsQueryARB = fn) -#define CALL_AttachObjectARB(disp, parameters) (*((disp)->AttachObjectARB)) parameters -#define GET_AttachObjectARB(disp) ((disp)->AttachObjectARB) -#define SET_AttachObjectARB(disp, fn) ((disp)->AttachObjectARB = fn) -#define CALL_CompileShaderARB(disp, parameters) (*((disp)->CompileShaderARB)) parameters -#define GET_CompileShaderARB(disp) ((disp)->CompileShaderARB) -#define SET_CompileShaderARB(disp, fn) ((disp)->CompileShaderARB = fn) -#define CALL_CreateProgramObjectARB(disp, parameters) (*((disp)->CreateProgramObjectARB)) parameters -#define GET_CreateProgramObjectARB(disp) ((disp)->CreateProgramObjectARB) -#define SET_CreateProgramObjectARB(disp, fn) ((disp)->CreateProgramObjectARB = fn) -#define CALL_CreateShaderObjectARB(disp, parameters) (*((disp)->CreateShaderObjectARB)) parameters -#define GET_CreateShaderObjectARB(disp) ((disp)->CreateShaderObjectARB) -#define SET_CreateShaderObjectARB(disp, fn) ((disp)->CreateShaderObjectARB = fn) -#define CALL_DeleteObjectARB(disp, parameters) (*((disp)->DeleteObjectARB)) parameters -#define GET_DeleteObjectARB(disp) ((disp)->DeleteObjectARB) -#define SET_DeleteObjectARB(disp, fn) ((disp)->DeleteObjectARB = fn) -#define CALL_DetachObjectARB(disp, parameters) (*((disp)->DetachObjectARB)) parameters -#define GET_DetachObjectARB(disp) ((disp)->DetachObjectARB) -#define SET_DetachObjectARB(disp, fn) ((disp)->DetachObjectARB = fn) -#define CALL_GetActiveUniformARB(disp, parameters) (*((disp)->GetActiveUniformARB)) parameters -#define GET_GetActiveUniformARB(disp) ((disp)->GetActiveUniformARB) -#define SET_GetActiveUniformARB(disp, fn) ((disp)->GetActiveUniformARB = fn) -#define CALL_GetAttachedObjectsARB(disp, parameters) (*((disp)->GetAttachedObjectsARB)) parameters -#define GET_GetAttachedObjectsARB(disp) ((disp)->GetAttachedObjectsARB) -#define SET_GetAttachedObjectsARB(disp, fn) ((disp)->GetAttachedObjectsARB = fn) -#define CALL_GetHandleARB(disp, parameters) (*((disp)->GetHandleARB)) parameters -#define GET_GetHandleARB(disp) ((disp)->GetHandleARB) -#define SET_GetHandleARB(disp, fn) ((disp)->GetHandleARB = fn) -#define CALL_GetInfoLogARB(disp, parameters) (*((disp)->GetInfoLogARB)) parameters -#define GET_GetInfoLogARB(disp) ((disp)->GetInfoLogARB) -#define SET_GetInfoLogARB(disp, fn) ((disp)->GetInfoLogARB = fn) -#define CALL_GetObjectParameterfvARB(disp, parameters) (*((disp)->GetObjectParameterfvARB)) parameters -#define GET_GetObjectParameterfvARB(disp) ((disp)->GetObjectParameterfvARB) -#define SET_GetObjectParameterfvARB(disp, fn) ((disp)->GetObjectParameterfvARB = fn) -#define CALL_GetObjectParameterivARB(disp, parameters) (*((disp)->GetObjectParameterivARB)) parameters -#define GET_GetObjectParameterivARB(disp) ((disp)->GetObjectParameterivARB) -#define SET_GetObjectParameterivARB(disp, fn) ((disp)->GetObjectParameterivARB = fn) -#define CALL_GetShaderSourceARB(disp, parameters) (*((disp)->GetShaderSourceARB)) parameters -#define GET_GetShaderSourceARB(disp) ((disp)->GetShaderSourceARB) -#define SET_GetShaderSourceARB(disp, fn) ((disp)->GetShaderSourceARB = fn) -#define CALL_GetUniformLocationARB(disp, parameters) (*((disp)->GetUniformLocationARB)) parameters -#define GET_GetUniformLocationARB(disp) ((disp)->GetUniformLocationARB) -#define SET_GetUniformLocationARB(disp, fn) ((disp)->GetUniformLocationARB = fn) -#define CALL_GetUniformfvARB(disp, parameters) (*((disp)->GetUniformfvARB)) parameters -#define GET_GetUniformfvARB(disp) ((disp)->GetUniformfvARB) -#define SET_GetUniformfvARB(disp, fn) ((disp)->GetUniformfvARB = fn) -#define CALL_GetUniformivARB(disp, parameters) (*((disp)->GetUniformivARB)) parameters -#define GET_GetUniformivARB(disp) ((disp)->GetUniformivARB) -#define SET_GetUniformivARB(disp, fn) ((disp)->GetUniformivARB = fn) -#define CALL_LinkProgramARB(disp, parameters) (*((disp)->LinkProgramARB)) parameters -#define GET_LinkProgramARB(disp) ((disp)->LinkProgramARB) -#define SET_LinkProgramARB(disp, fn) ((disp)->LinkProgramARB = fn) -#define CALL_ShaderSourceARB(disp, parameters) (*((disp)->ShaderSourceARB)) parameters -#define GET_ShaderSourceARB(disp) ((disp)->ShaderSourceARB) -#define SET_ShaderSourceARB(disp, fn) ((disp)->ShaderSourceARB = fn) -#define CALL_Uniform1fARB(disp, parameters) (*((disp)->Uniform1fARB)) parameters -#define GET_Uniform1fARB(disp) ((disp)->Uniform1fARB) -#define SET_Uniform1fARB(disp, fn) ((disp)->Uniform1fARB = fn) -#define CALL_Uniform1fvARB(disp, parameters) (*((disp)->Uniform1fvARB)) parameters -#define GET_Uniform1fvARB(disp) ((disp)->Uniform1fvARB) -#define SET_Uniform1fvARB(disp, fn) ((disp)->Uniform1fvARB = fn) -#define CALL_Uniform1iARB(disp, parameters) (*((disp)->Uniform1iARB)) parameters -#define GET_Uniform1iARB(disp) ((disp)->Uniform1iARB) -#define SET_Uniform1iARB(disp, fn) ((disp)->Uniform1iARB = fn) -#define CALL_Uniform1ivARB(disp, parameters) (*((disp)->Uniform1ivARB)) parameters -#define GET_Uniform1ivARB(disp) ((disp)->Uniform1ivARB) -#define SET_Uniform1ivARB(disp, fn) ((disp)->Uniform1ivARB = fn) -#define CALL_Uniform2fARB(disp, parameters) (*((disp)->Uniform2fARB)) parameters -#define GET_Uniform2fARB(disp) ((disp)->Uniform2fARB) -#define SET_Uniform2fARB(disp, fn) ((disp)->Uniform2fARB = fn) -#define CALL_Uniform2fvARB(disp, parameters) (*((disp)->Uniform2fvARB)) parameters -#define GET_Uniform2fvARB(disp) ((disp)->Uniform2fvARB) -#define SET_Uniform2fvARB(disp, fn) ((disp)->Uniform2fvARB = fn) -#define CALL_Uniform2iARB(disp, parameters) (*((disp)->Uniform2iARB)) parameters -#define GET_Uniform2iARB(disp) ((disp)->Uniform2iARB) -#define SET_Uniform2iARB(disp, fn) ((disp)->Uniform2iARB = fn) -#define CALL_Uniform2ivARB(disp, parameters) (*((disp)->Uniform2ivARB)) parameters -#define GET_Uniform2ivARB(disp) ((disp)->Uniform2ivARB) -#define SET_Uniform2ivARB(disp, fn) ((disp)->Uniform2ivARB = fn) -#define CALL_Uniform3fARB(disp, parameters) (*((disp)->Uniform3fARB)) parameters -#define GET_Uniform3fARB(disp) ((disp)->Uniform3fARB) -#define SET_Uniform3fARB(disp, fn) ((disp)->Uniform3fARB = fn) -#define CALL_Uniform3fvARB(disp, parameters) (*((disp)->Uniform3fvARB)) parameters -#define GET_Uniform3fvARB(disp) ((disp)->Uniform3fvARB) -#define SET_Uniform3fvARB(disp, fn) ((disp)->Uniform3fvARB = fn) -#define CALL_Uniform3iARB(disp, parameters) (*((disp)->Uniform3iARB)) parameters -#define GET_Uniform3iARB(disp) ((disp)->Uniform3iARB) -#define SET_Uniform3iARB(disp, fn) ((disp)->Uniform3iARB = fn) -#define CALL_Uniform3ivARB(disp, parameters) (*((disp)->Uniform3ivARB)) parameters -#define GET_Uniform3ivARB(disp) ((disp)->Uniform3ivARB) -#define SET_Uniform3ivARB(disp, fn) ((disp)->Uniform3ivARB = fn) -#define CALL_Uniform4fARB(disp, parameters) (*((disp)->Uniform4fARB)) parameters -#define GET_Uniform4fARB(disp) ((disp)->Uniform4fARB) -#define SET_Uniform4fARB(disp, fn) ((disp)->Uniform4fARB = fn) -#define CALL_Uniform4fvARB(disp, parameters) (*((disp)->Uniform4fvARB)) parameters -#define GET_Uniform4fvARB(disp) ((disp)->Uniform4fvARB) -#define SET_Uniform4fvARB(disp, fn) ((disp)->Uniform4fvARB = fn) -#define CALL_Uniform4iARB(disp, parameters) (*((disp)->Uniform4iARB)) parameters -#define GET_Uniform4iARB(disp) ((disp)->Uniform4iARB) -#define SET_Uniform4iARB(disp, fn) ((disp)->Uniform4iARB = fn) -#define CALL_Uniform4ivARB(disp, parameters) (*((disp)->Uniform4ivARB)) parameters -#define GET_Uniform4ivARB(disp) ((disp)->Uniform4ivARB) -#define SET_Uniform4ivARB(disp, fn) ((disp)->Uniform4ivARB = fn) -#define CALL_UniformMatrix2fvARB(disp, parameters) (*((disp)->UniformMatrix2fvARB)) parameters -#define GET_UniformMatrix2fvARB(disp) ((disp)->UniformMatrix2fvARB) -#define SET_UniformMatrix2fvARB(disp, fn) ((disp)->UniformMatrix2fvARB = fn) -#define CALL_UniformMatrix3fvARB(disp, parameters) (*((disp)->UniformMatrix3fvARB)) parameters -#define GET_UniformMatrix3fvARB(disp) ((disp)->UniformMatrix3fvARB) -#define SET_UniformMatrix3fvARB(disp, fn) ((disp)->UniformMatrix3fvARB = fn) -#define CALL_UniformMatrix4fvARB(disp, parameters) (*((disp)->UniformMatrix4fvARB)) parameters -#define GET_UniformMatrix4fvARB(disp) ((disp)->UniformMatrix4fvARB) -#define SET_UniformMatrix4fvARB(disp, fn) ((disp)->UniformMatrix4fvARB = fn) -#define CALL_UseProgramObjectARB(disp, parameters) (*((disp)->UseProgramObjectARB)) parameters -#define GET_UseProgramObjectARB(disp) ((disp)->UseProgramObjectARB) -#define SET_UseProgramObjectARB(disp, fn) ((disp)->UseProgramObjectARB = fn) -#define CALL_ValidateProgramARB(disp, parameters) (*((disp)->ValidateProgramARB)) parameters -#define GET_ValidateProgramARB(disp) ((disp)->ValidateProgramARB) -#define SET_ValidateProgramARB(disp, fn) ((disp)->ValidateProgramARB = fn) -#define CALL_BindAttribLocationARB(disp, parameters) (*((disp)->BindAttribLocationARB)) parameters -#define GET_BindAttribLocationARB(disp) ((disp)->BindAttribLocationARB) -#define SET_BindAttribLocationARB(disp, fn) ((disp)->BindAttribLocationARB = fn) -#define CALL_GetActiveAttribARB(disp, parameters) (*((disp)->GetActiveAttribARB)) parameters -#define GET_GetActiveAttribARB(disp) ((disp)->GetActiveAttribARB) -#define SET_GetActiveAttribARB(disp, fn) ((disp)->GetActiveAttribARB = fn) -#define CALL_GetAttribLocationARB(disp, parameters) (*((disp)->GetAttribLocationARB)) parameters -#define GET_GetAttribLocationARB(disp) ((disp)->GetAttribLocationARB) -#define SET_GetAttribLocationARB(disp, fn) ((disp)->GetAttribLocationARB = fn) -#define CALL_DrawBuffersARB(disp, parameters) (*((disp)->DrawBuffersARB)) parameters -#define GET_DrawBuffersARB(disp) ((disp)->DrawBuffersARB) -#define SET_DrawBuffersARB(disp, fn) ((disp)->DrawBuffersARB = fn) -#define CALL_RenderbufferStorageMultisample(disp, parameters) (*((disp)->RenderbufferStorageMultisample)) parameters -#define GET_RenderbufferStorageMultisample(disp) ((disp)->RenderbufferStorageMultisample) -#define SET_RenderbufferStorageMultisample(disp, fn) ((disp)->RenderbufferStorageMultisample = fn) -#define CALL_FramebufferTextureARB(disp, parameters) (*((disp)->FramebufferTextureARB)) parameters -#define GET_FramebufferTextureARB(disp) ((disp)->FramebufferTextureARB) -#define SET_FramebufferTextureARB(disp, fn) ((disp)->FramebufferTextureARB = fn) -#define CALL_FramebufferTextureFaceARB(disp, parameters) (*((disp)->FramebufferTextureFaceARB)) parameters -#define GET_FramebufferTextureFaceARB(disp) ((disp)->FramebufferTextureFaceARB) -#define SET_FramebufferTextureFaceARB(disp, fn) ((disp)->FramebufferTextureFaceARB = fn) -#define CALL_ProgramParameteriARB(disp, parameters) (*((disp)->ProgramParameteriARB)) parameters -#define GET_ProgramParameteriARB(disp) ((disp)->ProgramParameteriARB) -#define SET_ProgramParameteriARB(disp, fn) ((disp)->ProgramParameteriARB = fn) -#define CALL_FlushMappedBufferRange(disp, parameters) (*((disp)->FlushMappedBufferRange)) parameters -#define GET_FlushMappedBufferRange(disp) ((disp)->FlushMappedBufferRange) -#define SET_FlushMappedBufferRange(disp, fn) ((disp)->FlushMappedBufferRange = fn) -#define CALL_MapBufferRange(disp, parameters) (*((disp)->MapBufferRange)) parameters -#define GET_MapBufferRange(disp) ((disp)->MapBufferRange) -#define SET_MapBufferRange(disp, fn) ((disp)->MapBufferRange = fn) -#define CALL_BindVertexArray(disp, parameters) (*((disp)->BindVertexArray)) parameters -#define GET_BindVertexArray(disp) ((disp)->BindVertexArray) -#define SET_BindVertexArray(disp, fn) ((disp)->BindVertexArray = fn) -#define CALL_GenVertexArrays(disp, parameters) (*((disp)->GenVertexArrays)) parameters -#define GET_GenVertexArrays(disp) ((disp)->GenVertexArrays) -#define SET_GenVertexArrays(disp, fn) ((disp)->GenVertexArrays = fn) -#define CALL_CopyBufferSubData(disp, parameters) (*((disp)->CopyBufferSubData)) parameters -#define GET_CopyBufferSubData(disp) ((disp)->CopyBufferSubData) -#define SET_CopyBufferSubData(disp, fn) ((disp)->CopyBufferSubData = fn) -#define CALL_ClientWaitSync(disp, parameters) (*((disp)->ClientWaitSync)) parameters -#define GET_ClientWaitSync(disp) ((disp)->ClientWaitSync) -#define SET_ClientWaitSync(disp, fn) ((disp)->ClientWaitSync = fn) -#define CALL_DeleteSync(disp, parameters) (*((disp)->DeleteSync)) parameters -#define GET_DeleteSync(disp) ((disp)->DeleteSync) -#define SET_DeleteSync(disp, fn) ((disp)->DeleteSync = fn) -#define CALL_FenceSync(disp, parameters) (*((disp)->FenceSync)) parameters -#define GET_FenceSync(disp) ((disp)->FenceSync) -#define SET_FenceSync(disp, fn) ((disp)->FenceSync = fn) -#define CALL_GetInteger64v(disp, parameters) (*((disp)->GetInteger64v)) parameters -#define GET_GetInteger64v(disp) ((disp)->GetInteger64v) -#define SET_GetInteger64v(disp, fn) ((disp)->GetInteger64v = fn) -#define CALL_GetSynciv(disp, parameters) (*((disp)->GetSynciv)) parameters -#define GET_GetSynciv(disp) ((disp)->GetSynciv) -#define SET_GetSynciv(disp, fn) ((disp)->GetSynciv = fn) -#define CALL_IsSync(disp, parameters) (*((disp)->IsSync)) parameters -#define GET_IsSync(disp) ((disp)->IsSync) -#define SET_IsSync(disp, fn) ((disp)->IsSync = fn) -#define CALL_WaitSync(disp, parameters) (*((disp)->WaitSync)) parameters -#define GET_WaitSync(disp) ((disp)->WaitSync) -#define SET_WaitSync(disp, fn) ((disp)->WaitSync = fn) -#define CALL_DrawElementsBaseVertex(disp, parameters) (*((disp)->DrawElementsBaseVertex)) parameters -#define GET_DrawElementsBaseVertex(disp) ((disp)->DrawElementsBaseVertex) -#define SET_DrawElementsBaseVertex(disp, fn) ((disp)->DrawElementsBaseVertex = fn) -#define CALL_DrawRangeElementsBaseVertex(disp, parameters) (*((disp)->DrawRangeElementsBaseVertex)) parameters -#define GET_DrawRangeElementsBaseVertex(disp) ((disp)->DrawRangeElementsBaseVertex) -#define SET_DrawRangeElementsBaseVertex(disp, fn) ((disp)->DrawRangeElementsBaseVertex = fn) -#define CALL_MultiDrawElementsBaseVertex(disp, parameters) (*((disp)->MultiDrawElementsBaseVertex)) parameters -#define GET_MultiDrawElementsBaseVertex(disp) ((disp)->MultiDrawElementsBaseVertex) -#define SET_MultiDrawElementsBaseVertex(disp, fn) ((disp)->MultiDrawElementsBaseVertex = fn) -#define CALL_BindTransformFeedback(disp, parameters) (*((disp)->BindTransformFeedback)) parameters -#define GET_BindTransformFeedback(disp) ((disp)->BindTransformFeedback) -#define SET_BindTransformFeedback(disp, fn) ((disp)->BindTransformFeedback = fn) -#define CALL_DeleteTransformFeedbacks(disp, parameters) (*((disp)->DeleteTransformFeedbacks)) parameters -#define GET_DeleteTransformFeedbacks(disp) ((disp)->DeleteTransformFeedbacks) -#define SET_DeleteTransformFeedbacks(disp, fn) ((disp)->DeleteTransformFeedbacks = fn) -#define CALL_DrawTransformFeedback(disp, parameters) (*((disp)->DrawTransformFeedback)) parameters -#define GET_DrawTransformFeedback(disp) ((disp)->DrawTransformFeedback) -#define SET_DrawTransformFeedback(disp, fn) ((disp)->DrawTransformFeedback = fn) -#define CALL_GenTransformFeedbacks(disp, parameters) (*((disp)->GenTransformFeedbacks)) parameters -#define GET_GenTransformFeedbacks(disp) ((disp)->GenTransformFeedbacks) -#define SET_GenTransformFeedbacks(disp, fn) ((disp)->GenTransformFeedbacks = fn) -#define CALL_IsTransformFeedback(disp, parameters) (*((disp)->IsTransformFeedback)) parameters -#define GET_IsTransformFeedback(disp) ((disp)->IsTransformFeedback) -#define SET_IsTransformFeedback(disp, fn) ((disp)->IsTransformFeedback = fn) -#define CALL_PauseTransformFeedback(disp, parameters) (*((disp)->PauseTransformFeedback)) parameters -#define GET_PauseTransformFeedback(disp) ((disp)->PauseTransformFeedback) -#define SET_PauseTransformFeedback(disp, fn) ((disp)->PauseTransformFeedback = fn) -#define CALL_ResumeTransformFeedback(disp, parameters) (*((disp)->ResumeTransformFeedback)) parameters -#define GET_ResumeTransformFeedback(disp) ((disp)->ResumeTransformFeedback) -#define SET_ResumeTransformFeedback(disp, fn) ((disp)->ResumeTransformFeedback = fn) -#define CALL_PolygonOffsetEXT(disp, parameters) (*((disp)->PolygonOffsetEXT)) parameters -#define GET_PolygonOffsetEXT(disp) ((disp)->PolygonOffsetEXT) -#define SET_PolygonOffsetEXT(disp, fn) ((disp)->PolygonOffsetEXT = fn) -#define CALL_GetPixelTexGenParameterfvSGIS(disp, parameters) (*((disp)->GetPixelTexGenParameterfvSGIS)) parameters -#define GET_GetPixelTexGenParameterfvSGIS(disp) ((disp)->GetPixelTexGenParameterfvSGIS) -#define SET_GetPixelTexGenParameterfvSGIS(disp, fn) ((disp)->GetPixelTexGenParameterfvSGIS = fn) -#define CALL_GetPixelTexGenParameterivSGIS(disp, parameters) (*((disp)->GetPixelTexGenParameterivSGIS)) parameters -#define GET_GetPixelTexGenParameterivSGIS(disp) ((disp)->GetPixelTexGenParameterivSGIS) -#define SET_GetPixelTexGenParameterivSGIS(disp, fn) ((disp)->GetPixelTexGenParameterivSGIS = fn) -#define CALL_PixelTexGenParameterfSGIS(disp, parameters) (*((disp)->PixelTexGenParameterfSGIS)) parameters -#define GET_PixelTexGenParameterfSGIS(disp) ((disp)->PixelTexGenParameterfSGIS) -#define SET_PixelTexGenParameterfSGIS(disp, fn) ((disp)->PixelTexGenParameterfSGIS = fn) -#define CALL_PixelTexGenParameterfvSGIS(disp, parameters) (*((disp)->PixelTexGenParameterfvSGIS)) parameters -#define GET_PixelTexGenParameterfvSGIS(disp) ((disp)->PixelTexGenParameterfvSGIS) -#define SET_PixelTexGenParameterfvSGIS(disp, fn) ((disp)->PixelTexGenParameterfvSGIS = fn) -#define CALL_PixelTexGenParameteriSGIS(disp, parameters) (*((disp)->PixelTexGenParameteriSGIS)) parameters -#define GET_PixelTexGenParameteriSGIS(disp) ((disp)->PixelTexGenParameteriSGIS) -#define SET_PixelTexGenParameteriSGIS(disp, fn) ((disp)->PixelTexGenParameteriSGIS = fn) -#define CALL_PixelTexGenParameterivSGIS(disp, parameters) (*((disp)->PixelTexGenParameterivSGIS)) parameters -#define GET_PixelTexGenParameterivSGIS(disp) ((disp)->PixelTexGenParameterivSGIS) -#define SET_PixelTexGenParameterivSGIS(disp, fn) ((disp)->PixelTexGenParameterivSGIS = fn) -#define CALL_SampleMaskSGIS(disp, parameters) (*((disp)->SampleMaskSGIS)) parameters -#define GET_SampleMaskSGIS(disp) ((disp)->SampleMaskSGIS) -#define SET_SampleMaskSGIS(disp, fn) ((disp)->SampleMaskSGIS = fn) -#define CALL_SamplePatternSGIS(disp, parameters) (*((disp)->SamplePatternSGIS)) parameters -#define GET_SamplePatternSGIS(disp) ((disp)->SamplePatternSGIS) -#define SET_SamplePatternSGIS(disp, fn) ((disp)->SamplePatternSGIS = fn) -#define CALL_ColorPointerEXT(disp, parameters) (*((disp)->ColorPointerEXT)) parameters -#define GET_ColorPointerEXT(disp) ((disp)->ColorPointerEXT) -#define SET_ColorPointerEXT(disp, fn) ((disp)->ColorPointerEXT = fn) -#define CALL_EdgeFlagPointerEXT(disp, parameters) (*((disp)->EdgeFlagPointerEXT)) parameters -#define GET_EdgeFlagPointerEXT(disp) ((disp)->EdgeFlagPointerEXT) -#define SET_EdgeFlagPointerEXT(disp, fn) ((disp)->EdgeFlagPointerEXT = fn) -#define CALL_IndexPointerEXT(disp, parameters) (*((disp)->IndexPointerEXT)) parameters -#define GET_IndexPointerEXT(disp) ((disp)->IndexPointerEXT) -#define SET_IndexPointerEXT(disp, fn) ((disp)->IndexPointerEXT = fn) -#define CALL_NormalPointerEXT(disp, parameters) (*((disp)->NormalPointerEXT)) parameters -#define GET_NormalPointerEXT(disp) ((disp)->NormalPointerEXT) -#define SET_NormalPointerEXT(disp, fn) ((disp)->NormalPointerEXT = fn) -#define CALL_TexCoordPointerEXT(disp, parameters) (*((disp)->TexCoordPointerEXT)) parameters -#define GET_TexCoordPointerEXT(disp) ((disp)->TexCoordPointerEXT) -#define SET_TexCoordPointerEXT(disp, fn) ((disp)->TexCoordPointerEXT = fn) -#define CALL_VertexPointerEXT(disp, parameters) (*((disp)->VertexPointerEXT)) parameters -#define GET_VertexPointerEXT(disp) ((disp)->VertexPointerEXT) -#define SET_VertexPointerEXT(disp, fn) ((disp)->VertexPointerEXT = fn) -#define CALL_PointParameterfEXT(disp, parameters) (*((disp)->PointParameterfEXT)) parameters -#define GET_PointParameterfEXT(disp) ((disp)->PointParameterfEXT) -#define SET_PointParameterfEXT(disp, fn) ((disp)->PointParameterfEXT = fn) -#define CALL_PointParameterfvEXT(disp, parameters) (*((disp)->PointParameterfvEXT)) parameters -#define GET_PointParameterfvEXT(disp) ((disp)->PointParameterfvEXT) -#define SET_PointParameterfvEXT(disp, fn) ((disp)->PointParameterfvEXT = fn) -#define CALL_LockArraysEXT(disp, parameters) (*((disp)->LockArraysEXT)) parameters -#define GET_LockArraysEXT(disp) ((disp)->LockArraysEXT) -#define SET_LockArraysEXT(disp, fn) ((disp)->LockArraysEXT = fn) -#define CALL_UnlockArraysEXT(disp, parameters) (*((disp)->UnlockArraysEXT)) parameters -#define GET_UnlockArraysEXT(disp) ((disp)->UnlockArraysEXT) -#define SET_UnlockArraysEXT(disp, fn) ((disp)->UnlockArraysEXT = fn) -#define CALL_SecondaryColor3bEXT(disp, parameters) (*((disp)->SecondaryColor3bEXT)) parameters -#define GET_SecondaryColor3bEXT(disp) ((disp)->SecondaryColor3bEXT) -#define SET_SecondaryColor3bEXT(disp, fn) ((disp)->SecondaryColor3bEXT = fn) -#define CALL_SecondaryColor3bvEXT(disp, parameters) (*((disp)->SecondaryColor3bvEXT)) parameters -#define GET_SecondaryColor3bvEXT(disp) ((disp)->SecondaryColor3bvEXT) -#define SET_SecondaryColor3bvEXT(disp, fn) ((disp)->SecondaryColor3bvEXT = fn) -#define CALL_SecondaryColor3dEXT(disp, parameters) (*((disp)->SecondaryColor3dEXT)) parameters -#define GET_SecondaryColor3dEXT(disp) ((disp)->SecondaryColor3dEXT) -#define SET_SecondaryColor3dEXT(disp, fn) ((disp)->SecondaryColor3dEXT = fn) -#define CALL_SecondaryColor3dvEXT(disp, parameters) (*((disp)->SecondaryColor3dvEXT)) parameters -#define GET_SecondaryColor3dvEXT(disp) ((disp)->SecondaryColor3dvEXT) -#define SET_SecondaryColor3dvEXT(disp, fn) ((disp)->SecondaryColor3dvEXT = fn) -#define CALL_SecondaryColor3fEXT(disp, parameters) (*((disp)->SecondaryColor3fEXT)) parameters -#define GET_SecondaryColor3fEXT(disp) ((disp)->SecondaryColor3fEXT) -#define SET_SecondaryColor3fEXT(disp, fn) ((disp)->SecondaryColor3fEXT = fn) -#define CALL_SecondaryColor3fvEXT(disp, parameters) (*((disp)->SecondaryColor3fvEXT)) parameters -#define GET_SecondaryColor3fvEXT(disp) ((disp)->SecondaryColor3fvEXT) -#define SET_SecondaryColor3fvEXT(disp, fn) ((disp)->SecondaryColor3fvEXT = fn) -#define CALL_SecondaryColor3iEXT(disp, parameters) (*((disp)->SecondaryColor3iEXT)) parameters -#define GET_SecondaryColor3iEXT(disp) ((disp)->SecondaryColor3iEXT) -#define SET_SecondaryColor3iEXT(disp, fn) ((disp)->SecondaryColor3iEXT = fn) -#define CALL_SecondaryColor3ivEXT(disp, parameters) (*((disp)->SecondaryColor3ivEXT)) parameters -#define GET_SecondaryColor3ivEXT(disp) ((disp)->SecondaryColor3ivEXT) -#define SET_SecondaryColor3ivEXT(disp, fn) ((disp)->SecondaryColor3ivEXT = fn) -#define CALL_SecondaryColor3sEXT(disp, parameters) (*((disp)->SecondaryColor3sEXT)) parameters -#define GET_SecondaryColor3sEXT(disp) ((disp)->SecondaryColor3sEXT) -#define SET_SecondaryColor3sEXT(disp, fn) ((disp)->SecondaryColor3sEXT = fn) -#define CALL_SecondaryColor3svEXT(disp, parameters) (*((disp)->SecondaryColor3svEXT)) parameters -#define GET_SecondaryColor3svEXT(disp) ((disp)->SecondaryColor3svEXT) -#define SET_SecondaryColor3svEXT(disp, fn) ((disp)->SecondaryColor3svEXT = fn) -#define CALL_SecondaryColor3ubEXT(disp, parameters) (*((disp)->SecondaryColor3ubEXT)) parameters -#define GET_SecondaryColor3ubEXT(disp) ((disp)->SecondaryColor3ubEXT) -#define SET_SecondaryColor3ubEXT(disp, fn) ((disp)->SecondaryColor3ubEXT = fn) -#define CALL_SecondaryColor3ubvEXT(disp, parameters) (*((disp)->SecondaryColor3ubvEXT)) parameters -#define GET_SecondaryColor3ubvEXT(disp) ((disp)->SecondaryColor3ubvEXT) -#define SET_SecondaryColor3ubvEXT(disp, fn) ((disp)->SecondaryColor3ubvEXT = fn) -#define CALL_SecondaryColor3uiEXT(disp, parameters) (*((disp)->SecondaryColor3uiEXT)) parameters -#define GET_SecondaryColor3uiEXT(disp) ((disp)->SecondaryColor3uiEXT) -#define SET_SecondaryColor3uiEXT(disp, fn) ((disp)->SecondaryColor3uiEXT = fn) -#define CALL_SecondaryColor3uivEXT(disp, parameters) (*((disp)->SecondaryColor3uivEXT)) parameters -#define GET_SecondaryColor3uivEXT(disp) ((disp)->SecondaryColor3uivEXT) -#define SET_SecondaryColor3uivEXT(disp, fn) ((disp)->SecondaryColor3uivEXT = fn) -#define CALL_SecondaryColor3usEXT(disp, parameters) (*((disp)->SecondaryColor3usEXT)) parameters -#define GET_SecondaryColor3usEXT(disp) ((disp)->SecondaryColor3usEXT) -#define SET_SecondaryColor3usEXT(disp, fn) ((disp)->SecondaryColor3usEXT = fn) -#define CALL_SecondaryColor3usvEXT(disp, parameters) (*((disp)->SecondaryColor3usvEXT)) parameters -#define GET_SecondaryColor3usvEXT(disp) ((disp)->SecondaryColor3usvEXT) -#define SET_SecondaryColor3usvEXT(disp, fn) ((disp)->SecondaryColor3usvEXT = fn) -#define CALL_SecondaryColorPointerEXT(disp, parameters) (*((disp)->SecondaryColorPointerEXT)) parameters -#define GET_SecondaryColorPointerEXT(disp) ((disp)->SecondaryColorPointerEXT) -#define SET_SecondaryColorPointerEXT(disp, fn) ((disp)->SecondaryColorPointerEXT = fn) -#define CALL_MultiDrawArraysEXT(disp, parameters) (*((disp)->MultiDrawArraysEXT)) parameters -#define GET_MultiDrawArraysEXT(disp) ((disp)->MultiDrawArraysEXT) -#define SET_MultiDrawArraysEXT(disp, fn) ((disp)->MultiDrawArraysEXT = fn) -#define CALL_MultiDrawElementsEXT(disp, parameters) (*((disp)->MultiDrawElementsEXT)) parameters -#define GET_MultiDrawElementsEXT(disp) ((disp)->MultiDrawElementsEXT) -#define SET_MultiDrawElementsEXT(disp, fn) ((disp)->MultiDrawElementsEXT = fn) -#define CALL_FogCoordPointerEXT(disp, parameters) (*((disp)->FogCoordPointerEXT)) parameters -#define GET_FogCoordPointerEXT(disp) ((disp)->FogCoordPointerEXT) -#define SET_FogCoordPointerEXT(disp, fn) ((disp)->FogCoordPointerEXT = fn) -#define CALL_FogCoorddEXT(disp, parameters) (*((disp)->FogCoorddEXT)) parameters -#define GET_FogCoorddEXT(disp) ((disp)->FogCoorddEXT) -#define SET_FogCoorddEXT(disp, fn) ((disp)->FogCoorddEXT = fn) -#define CALL_FogCoorddvEXT(disp, parameters) (*((disp)->FogCoorddvEXT)) parameters -#define GET_FogCoorddvEXT(disp) ((disp)->FogCoorddvEXT) -#define SET_FogCoorddvEXT(disp, fn) ((disp)->FogCoorddvEXT = fn) -#define CALL_FogCoordfEXT(disp, parameters) (*((disp)->FogCoordfEXT)) parameters -#define GET_FogCoordfEXT(disp) ((disp)->FogCoordfEXT) -#define SET_FogCoordfEXT(disp, fn) ((disp)->FogCoordfEXT = fn) -#define CALL_FogCoordfvEXT(disp, parameters) (*((disp)->FogCoordfvEXT)) parameters -#define GET_FogCoordfvEXT(disp) ((disp)->FogCoordfvEXT) -#define SET_FogCoordfvEXT(disp, fn) ((disp)->FogCoordfvEXT = fn) -#define CALL_PixelTexGenSGIX(disp, parameters) (*((disp)->PixelTexGenSGIX)) parameters -#define GET_PixelTexGenSGIX(disp) ((disp)->PixelTexGenSGIX) -#define SET_PixelTexGenSGIX(disp, fn) ((disp)->PixelTexGenSGIX = fn) -#define CALL_BlendFuncSeparateEXT(disp, parameters) (*((disp)->BlendFuncSeparateEXT)) parameters -#define GET_BlendFuncSeparateEXT(disp) ((disp)->BlendFuncSeparateEXT) -#define SET_BlendFuncSeparateEXT(disp, fn) ((disp)->BlendFuncSeparateEXT = fn) -#define CALL_FlushVertexArrayRangeNV(disp, parameters) (*((disp)->FlushVertexArrayRangeNV)) parameters -#define GET_FlushVertexArrayRangeNV(disp) ((disp)->FlushVertexArrayRangeNV) -#define SET_FlushVertexArrayRangeNV(disp, fn) ((disp)->FlushVertexArrayRangeNV = fn) -#define CALL_VertexArrayRangeNV(disp, parameters) (*((disp)->VertexArrayRangeNV)) parameters -#define GET_VertexArrayRangeNV(disp) ((disp)->VertexArrayRangeNV) -#define SET_VertexArrayRangeNV(disp, fn) ((disp)->VertexArrayRangeNV = fn) -#define CALL_CombinerInputNV(disp, parameters) (*((disp)->CombinerInputNV)) parameters -#define GET_CombinerInputNV(disp) ((disp)->CombinerInputNV) -#define SET_CombinerInputNV(disp, fn) ((disp)->CombinerInputNV = fn) -#define CALL_CombinerOutputNV(disp, parameters) (*((disp)->CombinerOutputNV)) parameters -#define GET_CombinerOutputNV(disp) ((disp)->CombinerOutputNV) -#define SET_CombinerOutputNV(disp, fn) ((disp)->CombinerOutputNV = fn) -#define CALL_CombinerParameterfNV(disp, parameters) (*((disp)->CombinerParameterfNV)) parameters -#define GET_CombinerParameterfNV(disp) ((disp)->CombinerParameterfNV) -#define SET_CombinerParameterfNV(disp, fn) ((disp)->CombinerParameterfNV = fn) -#define CALL_CombinerParameterfvNV(disp, parameters) (*((disp)->CombinerParameterfvNV)) parameters -#define GET_CombinerParameterfvNV(disp) ((disp)->CombinerParameterfvNV) -#define SET_CombinerParameterfvNV(disp, fn) ((disp)->CombinerParameterfvNV = fn) -#define CALL_CombinerParameteriNV(disp, parameters) (*((disp)->CombinerParameteriNV)) parameters -#define GET_CombinerParameteriNV(disp) ((disp)->CombinerParameteriNV) -#define SET_CombinerParameteriNV(disp, fn) ((disp)->CombinerParameteriNV = fn) -#define CALL_CombinerParameterivNV(disp, parameters) (*((disp)->CombinerParameterivNV)) parameters -#define GET_CombinerParameterivNV(disp) ((disp)->CombinerParameterivNV) -#define SET_CombinerParameterivNV(disp, fn) ((disp)->CombinerParameterivNV = fn) -#define CALL_FinalCombinerInputNV(disp, parameters) (*((disp)->FinalCombinerInputNV)) parameters -#define GET_FinalCombinerInputNV(disp) ((disp)->FinalCombinerInputNV) -#define SET_FinalCombinerInputNV(disp, fn) ((disp)->FinalCombinerInputNV = fn) -#define CALL_GetCombinerInputParameterfvNV(disp, parameters) (*((disp)->GetCombinerInputParameterfvNV)) parameters -#define GET_GetCombinerInputParameterfvNV(disp) ((disp)->GetCombinerInputParameterfvNV) -#define SET_GetCombinerInputParameterfvNV(disp, fn) ((disp)->GetCombinerInputParameterfvNV = fn) -#define CALL_GetCombinerInputParameterivNV(disp, parameters) (*((disp)->GetCombinerInputParameterivNV)) parameters -#define GET_GetCombinerInputParameterivNV(disp) ((disp)->GetCombinerInputParameterivNV) -#define SET_GetCombinerInputParameterivNV(disp, fn) ((disp)->GetCombinerInputParameterivNV = fn) -#define CALL_GetCombinerOutputParameterfvNV(disp, parameters) (*((disp)->GetCombinerOutputParameterfvNV)) parameters -#define GET_GetCombinerOutputParameterfvNV(disp) ((disp)->GetCombinerOutputParameterfvNV) -#define SET_GetCombinerOutputParameterfvNV(disp, fn) ((disp)->GetCombinerOutputParameterfvNV = fn) -#define CALL_GetCombinerOutputParameterivNV(disp, parameters) (*((disp)->GetCombinerOutputParameterivNV)) parameters -#define GET_GetCombinerOutputParameterivNV(disp) ((disp)->GetCombinerOutputParameterivNV) -#define SET_GetCombinerOutputParameterivNV(disp, fn) ((disp)->GetCombinerOutputParameterivNV = fn) -#define CALL_GetFinalCombinerInputParameterfvNV(disp, parameters) (*((disp)->GetFinalCombinerInputParameterfvNV)) parameters -#define GET_GetFinalCombinerInputParameterfvNV(disp) ((disp)->GetFinalCombinerInputParameterfvNV) -#define SET_GetFinalCombinerInputParameterfvNV(disp, fn) ((disp)->GetFinalCombinerInputParameterfvNV = fn) -#define CALL_GetFinalCombinerInputParameterivNV(disp, parameters) (*((disp)->GetFinalCombinerInputParameterivNV)) parameters -#define GET_GetFinalCombinerInputParameterivNV(disp) ((disp)->GetFinalCombinerInputParameterivNV) -#define SET_GetFinalCombinerInputParameterivNV(disp, fn) ((disp)->GetFinalCombinerInputParameterivNV = fn) -#define CALL_ResizeBuffersMESA(disp, parameters) (*((disp)->ResizeBuffersMESA)) parameters -#define GET_ResizeBuffersMESA(disp) ((disp)->ResizeBuffersMESA) -#define SET_ResizeBuffersMESA(disp, fn) ((disp)->ResizeBuffersMESA = fn) -#define CALL_WindowPos2dMESA(disp, parameters) (*((disp)->WindowPos2dMESA)) parameters -#define GET_WindowPos2dMESA(disp) ((disp)->WindowPos2dMESA) -#define SET_WindowPos2dMESA(disp, fn) ((disp)->WindowPos2dMESA = fn) -#define CALL_WindowPos2dvMESA(disp, parameters) (*((disp)->WindowPos2dvMESA)) parameters -#define GET_WindowPos2dvMESA(disp) ((disp)->WindowPos2dvMESA) -#define SET_WindowPos2dvMESA(disp, fn) ((disp)->WindowPos2dvMESA = fn) -#define CALL_WindowPos2fMESA(disp, parameters) (*((disp)->WindowPos2fMESA)) parameters -#define GET_WindowPos2fMESA(disp) ((disp)->WindowPos2fMESA) -#define SET_WindowPos2fMESA(disp, fn) ((disp)->WindowPos2fMESA = fn) -#define CALL_WindowPos2fvMESA(disp, parameters) (*((disp)->WindowPos2fvMESA)) parameters -#define GET_WindowPos2fvMESA(disp) ((disp)->WindowPos2fvMESA) -#define SET_WindowPos2fvMESA(disp, fn) ((disp)->WindowPos2fvMESA = fn) -#define CALL_WindowPos2iMESA(disp, parameters) (*((disp)->WindowPos2iMESA)) parameters -#define GET_WindowPos2iMESA(disp) ((disp)->WindowPos2iMESA) -#define SET_WindowPos2iMESA(disp, fn) ((disp)->WindowPos2iMESA = fn) -#define CALL_WindowPos2ivMESA(disp, parameters) (*((disp)->WindowPos2ivMESA)) parameters -#define GET_WindowPos2ivMESA(disp) ((disp)->WindowPos2ivMESA) -#define SET_WindowPos2ivMESA(disp, fn) ((disp)->WindowPos2ivMESA = fn) -#define CALL_WindowPos2sMESA(disp, parameters) (*((disp)->WindowPos2sMESA)) parameters -#define GET_WindowPos2sMESA(disp) ((disp)->WindowPos2sMESA) -#define SET_WindowPos2sMESA(disp, fn) ((disp)->WindowPos2sMESA = fn) -#define CALL_WindowPos2svMESA(disp, parameters) (*((disp)->WindowPos2svMESA)) parameters -#define GET_WindowPos2svMESA(disp) ((disp)->WindowPos2svMESA) -#define SET_WindowPos2svMESA(disp, fn) ((disp)->WindowPos2svMESA = fn) -#define CALL_WindowPos3dMESA(disp, parameters) (*((disp)->WindowPos3dMESA)) parameters -#define GET_WindowPos3dMESA(disp) ((disp)->WindowPos3dMESA) -#define SET_WindowPos3dMESA(disp, fn) ((disp)->WindowPos3dMESA = fn) -#define CALL_WindowPos3dvMESA(disp, parameters) (*((disp)->WindowPos3dvMESA)) parameters -#define GET_WindowPos3dvMESA(disp) ((disp)->WindowPos3dvMESA) -#define SET_WindowPos3dvMESA(disp, fn) ((disp)->WindowPos3dvMESA = fn) -#define CALL_WindowPos3fMESA(disp, parameters) (*((disp)->WindowPos3fMESA)) parameters -#define GET_WindowPos3fMESA(disp) ((disp)->WindowPos3fMESA) -#define SET_WindowPos3fMESA(disp, fn) ((disp)->WindowPos3fMESA = fn) -#define CALL_WindowPos3fvMESA(disp, parameters) (*((disp)->WindowPos3fvMESA)) parameters -#define GET_WindowPos3fvMESA(disp) ((disp)->WindowPos3fvMESA) -#define SET_WindowPos3fvMESA(disp, fn) ((disp)->WindowPos3fvMESA = fn) -#define CALL_WindowPos3iMESA(disp, parameters) (*((disp)->WindowPos3iMESA)) parameters -#define GET_WindowPos3iMESA(disp) ((disp)->WindowPos3iMESA) -#define SET_WindowPos3iMESA(disp, fn) ((disp)->WindowPos3iMESA = fn) -#define CALL_WindowPos3ivMESA(disp, parameters) (*((disp)->WindowPos3ivMESA)) parameters -#define GET_WindowPos3ivMESA(disp) ((disp)->WindowPos3ivMESA) -#define SET_WindowPos3ivMESA(disp, fn) ((disp)->WindowPos3ivMESA = fn) -#define CALL_WindowPos3sMESA(disp, parameters) (*((disp)->WindowPos3sMESA)) parameters -#define GET_WindowPos3sMESA(disp) ((disp)->WindowPos3sMESA) -#define SET_WindowPos3sMESA(disp, fn) ((disp)->WindowPos3sMESA = fn) -#define CALL_WindowPos3svMESA(disp, parameters) (*((disp)->WindowPos3svMESA)) parameters -#define GET_WindowPos3svMESA(disp) ((disp)->WindowPos3svMESA) -#define SET_WindowPos3svMESA(disp, fn) ((disp)->WindowPos3svMESA = fn) -#define CALL_WindowPos4dMESA(disp, parameters) (*((disp)->WindowPos4dMESA)) parameters -#define GET_WindowPos4dMESA(disp) ((disp)->WindowPos4dMESA) -#define SET_WindowPos4dMESA(disp, fn) ((disp)->WindowPos4dMESA = fn) -#define CALL_WindowPos4dvMESA(disp, parameters) (*((disp)->WindowPos4dvMESA)) parameters -#define GET_WindowPos4dvMESA(disp) ((disp)->WindowPos4dvMESA) -#define SET_WindowPos4dvMESA(disp, fn) ((disp)->WindowPos4dvMESA = fn) -#define CALL_WindowPos4fMESA(disp, parameters) (*((disp)->WindowPos4fMESA)) parameters -#define GET_WindowPos4fMESA(disp) ((disp)->WindowPos4fMESA) -#define SET_WindowPos4fMESA(disp, fn) ((disp)->WindowPos4fMESA = fn) -#define CALL_WindowPos4fvMESA(disp, parameters) (*((disp)->WindowPos4fvMESA)) parameters -#define GET_WindowPos4fvMESA(disp) ((disp)->WindowPos4fvMESA) -#define SET_WindowPos4fvMESA(disp, fn) ((disp)->WindowPos4fvMESA = fn) -#define CALL_WindowPos4iMESA(disp, parameters) (*((disp)->WindowPos4iMESA)) parameters -#define GET_WindowPos4iMESA(disp) ((disp)->WindowPos4iMESA) -#define SET_WindowPos4iMESA(disp, fn) ((disp)->WindowPos4iMESA = fn) -#define CALL_WindowPos4ivMESA(disp, parameters) (*((disp)->WindowPos4ivMESA)) parameters -#define GET_WindowPos4ivMESA(disp) ((disp)->WindowPos4ivMESA) -#define SET_WindowPos4ivMESA(disp, fn) ((disp)->WindowPos4ivMESA = fn) -#define CALL_WindowPos4sMESA(disp, parameters) (*((disp)->WindowPos4sMESA)) parameters -#define GET_WindowPos4sMESA(disp) ((disp)->WindowPos4sMESA) -#define SET_WindowPos4sMESA(disp, fn) ((disp)->WindowPos4sMESA = fn) -#define CALL_WindowPos4svMESA(disp, parameters) (*((disp)->WindowPos4svMESA)) parameters -#define GET_WindowPos4svMESA(disp) ((disp)->WindowPos4svMESA) -#define SET_WindowPos4svMESA(disp, fn) ((disp)->WindowPos4svMESA = fn) -#define CALL_MultiModeDrawArraysIBM(disp, parameters) (*((disp)->MultiModeDrawArraysIBM)) parameters -#define GET_MultiModeDrawArraysIBM(disp) ((disp)->MultiModeDrawArraysIBM) -#define SET_MultiModeDrawArraysIBM(disp, fn) ((disp)->MultiModeDrawArraysIBM = fn) -#define CALL_MultiModeDrawElementsIBM(disp, parameters) (*((disp)->MultiModeDrawElementsIBM)) parameters -#define GET_MultiModeDrawElementsIBM(disp) ((disp)->MultiModeDrawElementsIBM) -#define SET_MultiModeDrawElementsIBM(disp, fn) ((disp)->MultiModeDrawElementsIBM = fn) -#define CALL_DeleteFencesNV(disp, parameters) (*((disp)->DeleteFencesNV)) parameters -#define GET_DeleteFencesNV(disp) ((disp)->DeleteFencesNV) -#define SET_DeleteFencesNV(disp, fn) ((disp)->DeleteFencesNV = fn) -#define CALL_FinishFenceNV(disp, parameters) (*((disp)->FinishFenceNV)) parameters -#define GET_FinishFenceNV(disp) ((disp)->FinishFenceNV) -#define SET_FinishFenceNV(disp, fn) ((disp)->FinishFenceNV = fn) -#define CALL_GenFencesNV(disp, parameters) (*((disp)->GenFencesNV)) parameters -#define GET_GenFencesNV(disp) ((disp)->GenFencesNV) -#define SET_GenFencesNV(disp, fn) ((disp)->GenFencesNV = fn) -#define CALL_GetFenceivNV(disp, parameters) (*((disp)->GetFenceivNV)) parameters -#define GET_GetFenceivNV(disp) ((disp)->GetFenceivNV) -#define SET_GetFenceivNV(disp, fn) ((disp)->GetFenceivNV = fn) -#define CALL_IsFenceNV(disp, parameters) (*((disp)->IsFenceNV)) parameters -#define GET_IsFenceNV(disp) ((disp)->IsFenceNV) -#define SET_IsFenceNV(disp, fn) ((disp)->IsFenceNV = fn) -#define CALL_SetFenceNV(disp, parameters) (*((disp)->SetFenceNV)) parameters -#define GET_SetFenceNV(disp) ((disp)->SetFenceNV) -#define SET_SetFenceNV(disp, fn) ((disp)->SetFenceNV = fn) -#define CALL_TestFenceNV(disp, parameters) (*((disp)->TestFenceNV)) parameters -#define GET_TestFenceNV(disp) ((disp)->TestFenceNV) -#define SET_TestFenceNV(disp, fn) ((disp)->TestFenceNV = fn) -#define CALL_AreProgramsResidentNV(disp, parameters) (*((disp)->AreProgramsResidentNV)) parameters -#define GET_AreProgramsResidentNV(disp) ((disp)->AreProgramsResidentNV) -#define SET_AreProgramsResidentNV(disp, fn) ((disp)->AreProgramsResidentNV = fn) -#define CALL_BindProgramNV(disp, parameters) (*((disp)->BindProgramNV)) parameters -#define GET_BindProgramNV(disp) ((disp)->BindProgramNV) -#define SET_BindProgramNV(disp, fn) ((disp)->BindProgramNV = fn) -#define CALL_DeleteProgramsNV(disp, parameters) (*((disp)->DeleteProgramsNV)) parameters -#define GET_DeleteProgramsNV(disp) ((disp)->DeleteProgramsNV) -#define SET_DeleteProgramsNV(disp, fn) ((disp)->DeleteProgramsNV = fn) -#define CALL_ExecuteProgramNV(disp, parameters) (*((disp)->ExecuteProgramNV)) parameters -#define GET_ExecuteProgramNV(disp) ((disp)->ExecuteProgramNV) -#define SET_ExecuteProgramNV(disp, fn) ((disp)->ExecuteProgramNV = fn) -#define CALL_GenProgramsNV(disp, parameters) (*((disp)->GenProgramsNV)) parameters -#define GET_GenProgramsNV(disp) ((disp)->GenProgramsNV) -#define SET_GenProgramsNV(disp, fn) ((disp)->GenProgramsNV = fn) -#define CALL_GetProgramParameterdvNV(disp, parameters) (*((disp)->GetProgramParameterdvNV)) parameters -#define GET_GetProgramParameterdvNV(disp) ((disp)->GetProgramParameterdvNV) -#define SET_GetProgramParameterdvNV(disp, fn) ((disp)->GetProgramParameterdvNV = fn) -#define CALL_GetProgramParameterfvNV(disp, parameters) (*((disp)->GetProgramParameterfvNV)) parameters -#define GET_GetProgramParameterfvNV(disp) ((disp)->GetProgramParameterfvNV) -#define SET_GetProgramParameterfvNV(disp, fn) ((disp)->GetProgramParameterfvNV = fn) -#define CALL_GetProgramStringNV(disp, parameters) (*((disp)->GetProgramStringNV)) parameters -#define GET_GetProgramStringNV(disp) ((disp)->GetProgramStringNV) -#define SET_GetProgramStringNV(disp, fn) ((disp)->GetProgramStringNV = fn) -#define CALL_GetProgramivNV(disp, parameters) (*((disp)->GetProgramivNV)) parameters -#define GET_GetProgramivNV(disp) ((disp)->GetProgramivNV) -#define SET_GetProgramivNV(disp, fn) ((disp)->GetProgramivNV = fn) -#define CALL_GetTrackMatrixivNV(disp, parameters) (*((disp)->GetTrackMatrixivNV)) parameters -#define GET_GetTrackMatrixivNV(disp) ((disp)->GetTrackMatrixivNV) -#define SET_GetTrackMatrixivNV(disp, fn) ((disp)->GetTrackMatrixivNV = fn) -#define CALL_GetVertexAttribPointervNV(disp, parameters) (*((disp)->GetVertexAttribPointervNV)) parameters -#define GET_GetVertexAttribPointervNV(disp) ((disp)->GetVertexAttribPointervNV) -#define SET_GetVertexAttribPointervNV(disp, fn) ((disp)->GetVertexAttribPointervNV = fn) -#define CALL_GetVertexAttribdvNV(disp, parameters) (*((disp)->GetVertexAttribdvNV)) parameters -#define GET_GetVertexAttribdvNV(disp) ((disp)->GetVertexAttribdvNV) -#define SET_GetVertexAttribdvNV(disp, fn) ((disp)->GetVertexAttribdvNV = fn) -#define CALL_GetVertexAttribfvNV(disp, parameters) (*((disp)->GetVertexAttribfvNV)) parameters -#define GET_GetVertexAttribfvNV(disp) ((disp)->GetVertexAttribfvNV) -#define SET_GetVertexAttribfvNV(disp, fn) ((disp)->GetVertexAttribfvNV = fn) -#define CALL_GetVertexAttribivNV(disp, parameters) (*((disp)->GetVertexAttribivNV)) parameters -#define GET_GetVertexAttribivNV(disp) ((disp)->GetVertexAttribivNV) -#define SET_GetVertexAttribivNV(disp, fn) ((disp)->GetVertexAttribivNV = fn) -#define CALL_IsProgramNV(disp, parameters) (*((disp)->IsProgramNV)) parameters -#define GET_IsProgramNV(disp) ((disp)->IsProgramNV) -#define SET_IsProgramNV(disp, fn) ((disp)->IsProgramNV = fn) -#define CALL_LoadProgramNV(disp, parameters) (*((disp)->LoadProgramNV)) parameters -#define GET_LoadProgramNV(disp) ((disp)->LoadProgramNV) -#define SET_LoadProgramNV(disp, fn) ((disp)->LoadProgramNV = fn) -#define CALL_ProgramParameters4dvNV(disp, parameters) (*((disp)->ProgramParameters4dvNV)) parameters -#define GET_ProgramParameters4dvNV(disp) ((disp)->ProgramParameters4dvNV) -#define SET_ProgramParameters4dvNV(disp, fn) ((disp)->ProgramParameters4dvNV = fn) -#define CALL_ProgramParameters4fvNV(disp, parameters) (*((disp)->ProgramParameters4fvNV)) parameters -#define GET_ProgramParameters4fvNV(disp) ((disp)->ProgramParameters4fvNV) -#define SET_ProgramParameters4fvNV(disp, fn) ((disp)->ProgramParameters4fvNV = fn) -#define CALL_RequestResidentProgramsNV(disp, parameters) (*((disp)->RequestResidentProgramsNV)) parameters -#define GET_RequestResidentProgramsNV(disp) ((disp)->RequestResidentProgramsNV) -#define SET_RequestResidentProgramsNV(disp, fn) ((disp)->RequestResidentProgramsNV = fn) -#define CALL_TrackMatrixNV(disp, parameters) (*((disp)->TrackMatrixNV)) parameters -#define GET_TrackMatrixNV(disp) ((disp)->TrackMatrixNV) -#define SET_TrackMatrixNV(disp, fn) ((disp)->TrackMatrixNV = fn) -#define CALL_VertexAttrib1dNV(disp, parameters) (*((disp)->VertexAttrib1dNV)) parameters -#define GET_VertexAttrib1dNV(disp) ((disp)->VertexAttrib1dNV) -#define SET_VertexAttrib1dNV(disp, fn) ((disp)->VertexAttrib1dNV = fn) -#define CALL_VertexAttrib1dvNV(disp, parameters) (*((disp)->VertexAttrib1dvNV)) parameters -#define GET_VertexAttrib1dvNV(disp) ((disp)->VertexAttrib1dvNV) -#define SET_VertexAttrib1dvNV(disp, fn) ((disp)->VertexAttrib1dvNV = fn) -#define CALL_VertexAttrib1fNV(disp, parameters) (*((disp)->VertexAttrib1fNV)) parameters -#define GET_VertexAttrib1fNV(disp) ((disp)->VertexAttrib1fNV) -#define SET_VertexAttrib1fNV(disp, fn) ((disp)->VertexAttrib1fNV = fn) -#define CALL_VertexAttrib1fvNV(disp, parameters) (*((disp)->VertexAttrib1fvNV)) parameters -#define GET_VertexAttrib1fvNV(disp) ((disp)->VertexAttrib1fvNV) -#define SET_VertexAttrib1fvNV(disp, fn) ((disp)->VertexAttrib1fvNV = fn) -#define CALL_VertexAttrib1sNV(disp, parameters) (*((disp)->VertexAttrib1sNV)) parameters -#define GET_VertexAttrib1sNV(disp) ((disp)->VertexAttrib1sNV) -#define SET_VertexAttrib1sNV(disp, fn) ((disp)->VertexAttrib1sNV = fn) -#define CALL_VertexAttrib1svNV(disp, parameters) (*((disp)->VertexAttrib1svNV)) parameters -#define GET_VertexAttrib1svNV(disp) ((disp)->VertexAttrib1svNV) -#define SET_VertexAttrib1svNV(disp, fn) ((disp)->VertexAttrib1svNV = fn) -#define CALL_VertexAttrib2dNV(disp, parameters) (*((disp)->VertexAttrib2dNV)) parameters -#define GET_VertexAttrib2dNV(disp) ((disp)->VertexAttrib2dNV) -#define SET_VertexAttrib2dNV(disp, fn) ((disp)->VertexAttrib2dNV = fn) -#define CALL_VertexAttrib2dvNV(disp, parameters) (*((disp)->VertexAttrib2dvNV)) parameters -#define GET_VertexAttrib2dvNV(disp) ((disp)->VertexAttrib2dvNV) -#define SET_VertexAttrib2dvNV(disp, fn) ((disp)->VertexAttrib2dvNV = fn) -#define CALL_VertexAttrib2fNV(disp, parameters) (*((disp)->VertexAttrib2fNV)) parameters -#define GET_VertexAttrib2fNV(disp) ((disp)->VertexAttrib2fNV) -#define SET_VertexAttrib2fNV(disp, fn) ((disp)->VertexAttrib2fNV = fn) -#define CALL_VertexAttrib2fvNV(disp, parameters) (*((disp)->VertexAttrib2fvNV)) parameters -#define GET_VertexAttrib2fvNV(disp) ((disp)->VertexAttrib2fvNV) -#define SET_VertexAttrib2fvNV(disp, fn) ((disp)->VertexAttrib2fvNV = fn) -#define CALL_VertexAttrib2sNV(disp, parameters) (*((disp)->VertexAttrib2sNV)) parameters -#define GET_VertexAttrib2sNV(disp) ((disp)->VertexAttrib2sNV) -#define SET_VertexAttrib2sNV(disp, fn) ((disp)->VertexAttrib2sNV = fn) -#define CALL_VertexAttrib2svNV(disp, parameters) (*((disp)->VertexAttrib2svNV)) parameters -#define GET_VertexAttrib2svNV(disp) ((disp)->VertexAttrib2svNV) -#define SET_VertexAttrib2svNV(disp, fn) ((disp)->VertexAttrib2svNV = fn) -#define CALL_VertexAttrib3dNV(disp, parameters) (*((disp)->VertexAttrib3dNV)) parameters -#define GET_VertexAttrib3dNV(disp) ((disp)->VertexAttrib3dNV) -#define SET_VertexAttrib3dNV(disp, fn) ((disp)->VertexAttrib3dNV = fn) -#define CALL_VertexAttrib3dvNV(disp, parameters) (*((disp)->VertexAttrib3dvNV)) parameters -#define GET_VertexAttrib3dvNV(disp) ((disp)->VertexAttrib3dvNV) -#define SET_VertexAttrib3dvNV(disp, fn) ((disp)->VertexAttrib3dvNV = fn) -#define CALL_VertexAttrib3fNV(disp, parameters) (*((disp)->VertexAttrib3fNV)) parameters -#define GET_VertexAttrib3fNV(disp) ((disp)->VertexAttrib3fNV) -#define SET_VertexAttrib3fNV(disp, fn) ((disp)->VertexAttrib3fNV = fn) -#define CALL_VertexAttrib3fvNV(disp, parameters) (*((disp)->VertexAttrib3fvNV)) parameters -#define GET_VertexAttrib3fvNV(disp) ((disp)->VertexAttrib3fvNV) -#define SET_VertexAttrib3fvNV(disp, fn) ((disp)->VertexAttrib3fvNV = fn) -#define CALL_VertexAttrib3sNV(disp, parameters) (*((disp)->VertexAttrib3sNV)) parameters -#define GET_VertexAttrib3sNV(disp) ((disp)->VertexAttrib3sNV) -#define SET_VertexAttrib3sNV(disp, fn) ((disp)->VertexAttrib3sNV = fn) -#define CALL_VertexAttrib3svNV(disp, parameters) (*((disp)->VertexAttrib3svNV)) parameters -#define GET_VertexAttrib3svNV(disp) ((disp)->VertexAttrib3svNV) -#define SET_VertexAttrib3svNV(disp, fn) ((disp)->VertexAttrib3svNV = fn) -#define CALL_VertexAttrib4dNV(disp, parameters) (*((disp)->VertexAttrib4dNV)) parameters -#define GET_VertexAttrib4dNV(disp) ((disp)->VertexAttrib4dNV) -#define SET_VertexAttrib4dNV(disp, fn) ((disp)->VertexAttrib4dNV = fn) -#define CALL_VertexAttrib4dvNV(disp, parameters) (*((disp)->VertexAttrib4dvNV)) parameters -#define GET_VertexAttrib4dvNV(disp) ((disp)->VertexAttrib4dvNV) -#define SET_VertexAttrib4dvNV(disp, fn) ((disp)->VertexAttrib4dvNV = fn) -#define CALL_VertexAttrib4fNV(disp, parameters) (*((disp)->VertexAttrib4fNV)) parameters -#define GET_VertexAttrib4fNV(disp) ((disp)->VertexAttrib4fNV) -#define SET_VertexAttrib4fNV(disp, fn) ((disp)->VertexAttrib4fNV = fn) -#define CALL_VertexAttrib4fvNV(disp, parameters) (*((disp)->VertexAttrib4fvNV)) parameters -#define GET_VertexAttrib4fvNV(disp) ((disp)->VertexAttrib4fvNV) -#define SET_VertexAttrib4fvNV(disp, fn) ((disp)->VertexAttrib4fvNV = fn) -#define CALL_VertexAttrib4sNV(disp, parameters) (*((disp)->VertexAttrib4sNV)) parameters -#define GET_VertexAttrib4sNV(disp) ((disp)->VertexAttrib4sNV) -#define SET_VertexAttrib4sNV(disp, fn) ((disp)->VertexAttrib4sNV = fn) -#define CALL_VertexAttrib4svNV(disp, parameters) (*((disp)->VertexAttrib4svNV)) parameters -#define GET_VertexAttrib4svNV(disp) ((disp)->VertexAttrib4svNV) -#define SET_VertexAttrib4svNV(disp, fn) ((disp)->VertexAttrib4svNV = fn) -#define CALL_VertexAttrib4ubNV(disp, parameters) (*((disp)->VertexAttrib4ubNV)) parameters -#define GET_VertexAttrib4ubNV(disp) ((disp)->VertexAttrib4ubNV) -#define SET_VertexAttrib4ubNV(disp, fn) ((disp)->VertexAttrib4ubNV = fn) -#define CALL_VertexAttrib4ubvNV(disp, parameters) (*((disp)->VertexAttrib4ubvNV)) parameters -#define GET_VertexAttrib4ubvNV(disp) ((disp)->VertexAttrib4ubvNV) -#define SET_VertexAttrib4ubvNV(disp, fn) ((disp)->VertexAttrib4ubvNV = fn) -#define CALL_VertexAttribPointerNV(disp, parameters) (*((disp)->VertexAttribPointerNV)) parameters -#define GET_VertexAttribPointerNV(disp) ((disp)->VertexAttribPointerNV) -#define SET_VertexAttribPointerNV(disp, fn) ((disp)->VertexAttribPointerNV = fn) -#define CALL_VertexAttribs1dvNV(disp, parameters) (*((disp)->VertexAttribs1dvNV)) parameters -#define GET_VertexAttribs1dvNV(disp) ((disp)->VertexAttribs1dvNV) -#define SET_VertexAttribs1dvNV(disp, fn) ((disp)->VertexAttribs1dvNV = fn) -#define CALL_VertexAttribs1fvNV(disp, parameters) (*((disp)->VertexAttribs1fvNV)) parameters -#define GET_VertexAttribs1fvNV(disp) ((disp)->VertexAttribs1fvNV) -#define SET_VertexAttribs1fvNV(disp, fn) ((disp)->VertexAttribs1fvNV = fn) -#define CALL_VertexAttribs1svNV(disp, parameters) (*((disp)->VertexAttribs1svNV)) parameters -#define GET_VertexAttribs1svNV(disp) ((disp)->VertexAttribs1svNV) -#define SET_VertexAttribs1svNV(disp, fn) ((disp)->VertexAttribs1svNV = fn) -#define CALL_VertexAttribs2dvNV(disp, parameters) (*((disp)->VertexAttribs2dvNV)) parameters -#define GET_VertexAttribs2dvNV(disp) ((disp)->VertexAttribs2dvNV) -#define SET_VertexAttribs2dvNV(disp, fn) ((disp)->VertexAttribs2dvNV = fn) -#define CALL_VertexAttribs2fvNV(disp, parameters) (*((disp)->VertexAttribs2fvNV)) parameters -#define GET_VertexAttribs2fvNV(disp) ((disp)->VertexAttribs2fvNV) -#define SET_VertexAttribs2fvNV(disp, fn) ((disp)->VertexAttribs2fvNV = fn) -#define CALL_VertexAttribs2svNV(disp, parameters) (*((disp)->VertexAttribs2svNV)) parameters -#define GET_VertexAttribs2svNV(disp) ((disp)->VertexAttribs2svNV) -#define SET_VertexAttribs2svNV(disp, fn) ((disp)->VertexAttribs2svNV = fn) -#define CALL_VertexAttribs3dvNV(disp, parameters) (*((disp)->VertexAttribs3dvNV)) parameters -#define GET_VertexAttribs3dvNV(disp) ((disp)->VertexAttribs3dvNV) -#define SET_VertexAttribs3dvNV(disp, fn) ((disp)->VertexAttribs3dvNV = fn) -#define CALL_VertexAttribs3fvNV(disp, parameters) (*((disp)->VertexAttribs3fvNV)) parameters -#define GET_VertexAttribs3fvNV(disp) ((disp)->VertexAttribs3fvNV) -#define SET_VertexAttribs3fvNV(disp, fn) ((disp)->VertexAttribs3fvNV = fn) -#define CALL_VertexAttribs3svNV(disp, parameters) (*((disp)->VertexAttribs3svNV)) parameters -#define GET_VertexAttribs3svNV(disp) ((disp)->VertexAttribs3svNV) -#define SET_VertexAttribs3svNV(disp, fn) ((disp)->VertexAttribs3svNV = fn) -#define CALL_VertexAttribs4dvNV(disp, parameters) (*((disp)->VertexAttribs4dvNV)) parameters -#define GET_VertexAttribs4dvNV(disp) ((disp)->VertexAttribs4dvNV) -#define SET_VertexAttribs4dvNV(disp, fn) ((disp)->VertexAttribs4dvNV = fn) -#define CALL_VertexAttribs4fvNV(disp, parameters) (*((disp)->VertexAttribs4fvNV)) parameters -#define GET_VertexAttribs4fvNV(disp) ((disp)->VertexAttribs4fvNV) -#define SET_VertexAttribs4fvNV(disp, fn) ((disp)->VertexAttribs4fvNV = fn) -#define CALL_VertexAttribs4svNV(disp, parameters) (*((disp)->VertexAttribs4svNV)) parameters -#define GET_VertexAttribs4svNV(disp) ((disp)->VertexAttribs4svNV) -#define SET_VertexAttribs4svNV(disp, fn) ((disp)->VertexAttribs4svNV = fn) -#define CALL_VertexAttribs4ubvNV(disp, parameters) (*((disp)->VertexAttribs4ubvNV)) parameters -#define GET_VertexAttribs4ubvNV(disp) ((disp)->VertexAttribs4ubvNV) -#define SET_VertexAttribs4ubvNV(disp, fn) ((disp)->VertexAttribs4ubvNV = fn) -#define CALL_GetTexBumpParameterfvATI(disp, parameters) (*((disp)->GetTexBumpParameterfvATI)) parameters -#define GET_GetTexBumpParameterfvATI(disp) ((disp)->GetTexBumpParameterfvATI) -#define SET_GetTexBumpParameterfvATI(disp, fn) ((disp)->GetTexBumpParameterfvATI = fn) -#define CALL_GetTexBumpParameterivATI(disp, parameters) (*((disp)->GetTexBumpParameterivATI)) parameters -#define GET_GetTexBumpParameterivATI(disp) ((disp)->GetTexBumpParameterivATI) -#define SET_GetTexBumpParameterivATI(disp, fn) ((disp)->GetTexBumpParameterivATI = fn) -#define CALL_TexBumpParameterfvATI(disp, parameters) (*((disp)->TexBumpParameterfvATI)) parameters -#define GET_TexBumpParameterfvATI(disp) ((disp)->TexBumpParameterfvATI) -#define SET_TexBumpParameterfvATI(disp, fn) ((disp)->TexBumpParameterfvATI = fn) -#define CALL_TexBumpParameterivATI(disp, parameters) (*((disp)->TexBumpParameterivATI)) parameters -#define GET_TexBumpParameterivATI(disp) ((disp)->TexBumpParameterivATI) -#define SET_TexBumpParameterivATI(disp, fn) ((disp)->TexBumpParameterivATI = fn) -#define CALL_AlphaFragmentOp1ATI(disp, parameters) (*((disp)->AlphaFragmentOp1ATI)) parameters -#define GET_AlphaFragmentOp1ATI(disp) ((disp)->AlphaFragmentOp1ATI) -#define SET_AlphaFragmentOp1ATI(disp, fn) ((disp)->AlphaFragmentOp1ATI = fn) -#define CALL_AlphaFragmentOp2ATI(disp, parameters) (*((disp)->AlphaFragmentOp2ATI)) parameters -#define GET_AlphaFragmentOp2ATI(disp) ((disp)->AlphaFragmentOp2ATI) -#define SET_AlphaFragmentOp2ATI(disp, fn) ((disp)->AlphaFragmentOp2ATI = fn) -#define CALL_AlphaFragmentOp3ATI(disp, parameters) (*((disp)->AlphaFragmentOp3ATI)) parameters -#define GET_AlphaFragmentOp3ATI(disp) ((disp)->AlphaFragmentOp3ATI) -#define SET_AlphaFragmentOp3ATI(disp, fn) ((disp)->AlphaFragmentOp3ATI = fn) -#define CALL_BeginFragmentShaderATI(disp, parameters) (*((disp)->BeginFragmentShaderATI)) parameters -#define GET_BeginFragmentShaderATI(disp) ((disp)->BeginFragmentShaderATI) -#define SET_BeginFragmentShaderATI(disp, fn) ((disp)->BeginFragmentShaderATI = fn) -#define CALL_BindFragmentShaderATI(disp, parameters) (*((disp)->BindFragmentShaderATI)) parameters -#define GET_BindFragmentShaderATI(disp) ((disp)->BindFragmentShaderATI) -#define SET_BindFragmentShaderATI(disp, fn) ((disp)->BindFragmentShaderATI = fn) -#define CALL_ColorFragmentOp1ATI(disp, parameters) (*((disp)->ColorFragmentOp1ATI)) parameters -#define GET_ColorFragmentOp1ATI(disp) ((disp)->ColorFragmentOp1ATI) -#define SET_ColorFragmentOp1ATI(disp, fn) ((disp)->ColorFragmentOp1ATI = fn) -#define CALL_ColorFragmentOp2ATI(disp, parameters) (*((disp)->ColorFragmentOp2ATI)) parameters -#define GET_ColorFragmentOp2ATI(disp) ((disp)->ColorFragmentOp2ATI) -#define SET_ColorFragmentOp2ATI(disp, fn) ((disp)->ColorFragmentOp2ATI = fn) -#define CALL_ColorFragmentOp3ATI(disp, parameters) (*((disp)->ColorFragmentOp3ATI)) parameters -#define GET_ColorFragmentOp3ATI(disp) ((disp)->ColorFragmentOp3ATI) -#define SET_ColorFragmentOp3ATI(disp, fn) ((disp)->ColorFragmentOp3ATI = fn) -#define CALL_DeleteFragmentShaderATI(disp, parameters) (*((disp)->DeleteFragmentShaderATI)) parameters -#define GET_DeleteFragmentShaderATI(disp) ((disp)->DeleteFragmentShaderATI) -#define SET_DeleteFragmentShaderATI(disp, fn) ((disp)->DeleteFragmentShaderATI = fn) -#define CALL_EndFragmentShaderATI(disp, parameters) (*((disp)->EndFragmentShaderATI)) parameters -#define GET_EndFragmentShaderATI(disp) ((disp)->EndFragmentShaderATI) -#define SET_EndFragmentShaderATI(disp, fn) ((disp)->EndFragmentShaderATI = fn) -#define CALL_GenFragmentShadersATI(disp, parameters) (*((disp)->GenFragmentShadersATI)) parameters -#define GET_GenFragmentShadersATI(disp) ((disp)->GenFragmentShadersATI) -#define SET_GenFragmentShadersATI(disp, fn) ((disp)->GenFragmentShadersATI = fn) -#define CALL_PassTexCoordATI(disp, parameters) (*((disp)->PassTexCoordATI)) parameters -#define GET_PassTexCoordATI(disp) ((disp)->PassTexCoordATI) -#define SET_PassTexCoordATI(disp, fn) ((disp)->PassTexCoordATI = fn) -#define CALL_SampleMapATI(disp, parameters) (*((disp)->SampleMapATI)) parameters -#define GET_SampleMapATI(disp) ((disp)->SampleMapATI) -#define SET_SampleMapATI(disp, fn) ((disp)->SampleMapATI = fn) -#define CALL_SetFragmentShaderConstantATI(disp, parameters) (*((disp)->SetFragmentShaderConstantATI)) parameters -#define GET_SetFragmentShaderConstantATI(disp) ((disp)->SetFragmentShaderConstantATI) -#define SET_SetFragmentShaderConstantATI(disp, fn) ((disp)->SetFragmentShaderConstantATI = fn) -#define CALL_PointParameteriNV(disp, parameters) (*((disp)->PointParameteriNV)) parameters -#define GET_PointParameteriNV(disp) ((disp)->PointParameteriNV) -#define SET_PointParameteriNV(disp, fn) ((disp)->PointParameteriNV = fn) -#define CALL_PointParameterivNV(disp, parameters) (*((disp)->PointParameterivNV)) parameters -#define GET_PointParameterivNV(disp) ((disp)->PointParameterivNV) -#define SET_PointParameterivNV(disp, fn) ((disp)->PointParameterivNV = fn) -#define CALL_ActiveStencilFaceEXT(disp, parameters) (*((disp)->ActiveStencilFaceEXT)) parameters -#define GET_ActiveStencilFaceEXT(disp) ((disp)->ActiveStencilFaceEXT) -#define SET_ActiveStencilFaceEXT(disp, fn) ((disp)->ActiveStencilFaceEXT = fn) -#define CALL_BindVertexArrayAPPLE(disp, parameters) (*((disp)->BindVertexArrayAPPLE)) parameters -#define GET_BindVertexArrayAPPLE(disp) ((disp)->BindVertexArrayAPPLE) -#define SET_BindVertexArrayAPPLE(disp, fn) ((disp)->BindVertexArrayAPPLE = fn) -#define CALL_DeleteVertexArraysAPPLE(disp, parameters) (*((disp)->DeleteVertexArraysAPPLE)) parameters -#define GET_DeleteVertexArraysAPPLE(disp) ((disp)->DeleteVertexArraysAPPLE) -#define SET_DeleteVertexArraysAPPLE(disp, fn) ((disp)->DeleteVertexArraysAPPLE = fn) -#define CALL_GenVertexArraysAPPLE(disp, parameters) (*((disp)->GenVertexArraysAPPLE)) parameters -#define GET_GenVertexArraysAPPLE(disp) ((disp)->GenVertexArraysAPPLE) -#define SET_GenVertexArraysAPPLE(disp, fn) ((disp)->GenVertexArraysAPPLE = fn) -#define CALL_IsVertexArrayAPPLE(disp, parameters) (*((disp)->IsVertexArrayAPPLE)) parameters -#define GET_IsVertexArrayAPPLE(disp) ((disp)->IsVertexArrayAPPLE) -#define SET_IsVertexArrayAPPLE(disp, fn) ((disp)->IsVertexArrayAPPLE = fn) -#define CALL_GetProgramNamedParameterdvNV(disp, parameters) (*((disp)->GetProgramNamedParameterdvNV)) parameters -#define GET_GetProgramNamedParameterdvNV(disp) ((disp)->GetProgramNamedParameterdvNV) -#define SET_GetProgramNamedParameterdvNV(disp, fn) ((disp)->GetProgramNamedParameterdvNV = fn) -#define CALL_GetProgramNamedParameterfvNV(disp, parameters) (*((disp)->GetProgramNamedParameterfvNV)) parameters -#define GET_GetProgramNamedParameterfvNV(disp) ((disp)->GetProgramNamedParameterfvNV) -#define SET_GetProgramNamedParameterfvNV(disp, fn) ((disp)->GetProgramNamedParameterfvNV = fn) -#define CALL_ProgramNamedParameter4dNV(disp, parameters) (*((disp)->ProgramNamedParameter4dNV)) parameters -#define GET_ProgramNamedParameter4dNV(disp) ((disp)->ProgramNamedParameter4dNV) -#define SET_ProgramNamedParameter4dNV(disp, fn) ((disp)->ProgramNamedParameter4dNV = fn) -#define CALL_ProgramNamedParameter4dvNV(disp, parameters) (*((disp)->ProgramNamedParameter4dvNV)) parameters -#define GET_ProgramNamedParameter4dvNV(disp) ((disp)->ProgramNamedParameter4dvNV) -#define SET_ProgramNamedParameter4dvNV(disp, fn) ((disp)->ProgramNamedParameter4dvNV = fn) -#define CALL_ProgramNamedParameter4fNV(disp, parameters) (*((disp)->ProgramNamedParameter4fNV)) parameters -#define GET_ProgramNamedParameter4fNV(disp) ((disp)->ProgramNamedParameter4fNV) -#define SET_ProgramNamedParameter4fNV(disp, fn) ((disp)->ProgramNamedParameter4fNV = fn) -#define CALL_ProgramNamedParameter4fvNV(disp, parameters) (*((disp)->ProgramNamedParameter4fvNV)) parameters -#define GET_ProgramNamedParameter4fvNV(disp) ((disp)->ProgramNamedParameter4fvNV) -#define SET_ProgramNamedParameter4fvNV(disp, fn) ((disp)->ProgramNamedParameter4fvNV = fn) -#define CALL_PrimitiveRestartIndexNV(disp, parameters) (*((disp)->PrimitiveRestartIndexNV)) parameters -#define GET_PrimitiveRestartIndexNV(disp) ((disp)->PrimitiveRestartIndexNV) -#define SET_PrimitiveRestartIndexNV(disp, fn) ((disp)->PrimitiveRestartIndexNV = fn) -#define CALL_PrimitiveRestartNV(disp, parameters) (*((disp)->PrimitiveRestartNV)) parameters -#define GET_PrimitiveRestartNV(disp) ((disp)->PrimitiveRestartNV) -#define SET_PrimitiveRestartNV(disp, fn) ((disp)->PrimitiveRestartNV = fn) -#define CALL_DepthBoundsEXT(disp, parameters) (*((disp)->DepthBoundsEXT)) parameters -#define GET_DepthBoundsEXT(disp) ((disp)->DepthBoundsEXT) -#define SET_DepthBoundsEXT(disp, fn) ((disp)->DepthBoundsEXT = fn) -#define CALL_BlendEquationSeparateEXT(disp, parameters) (*((disp)->BlendEquationSeparateEXT)) parameters -#define GET_BlendEquationSeparateEXT(disp) ((disp)->BlendEquationSeparateEXT) -#define SET_BlendEquationSeparateEXT(disp, fn) ((disp)->BlendEquationSeparateEXT = fn) -#define CALL_BindFramebufferEXT(disp, parameters) (*((disp)->BindFramebufferEXT)) parameters -#define GET_BindFramebufferEXT(disp) ((disp)->BindFramebufferEXT) -#define SET_BindFramebufferEXT(disp, fn) ((disp)->BindFramebufferEXT = fn) -#define CALL_BindRenderbufferEXT(disp, parameters) (*((disp)->BindRenderbufferEXT)) parameters -#define GET_BindRenderbufferEXT(disp) ((disp)->BindRenderbufferEXT) -#define SET_BindRenderbufferEXT(disp, fn) ((disp)->BindRenderbufferEXT = fn) -#define CALL_CheckFramebufferStatusEXT(disp, parameters) (*((disp)->CheckFramebufferStatusEXT)) parameters -#define GET_CheckFramebufferStatusEXT(disp) ((disp)->CheckFramebufferStatusEXT) -#define SET_CheckFramebufferStatusEXT(disp, fn) ((disp)->CheckFramebufferStatusEXT = fn) -#define CALL_DeleteFramebuffersEXT(disp, parameters) (*((disp)->DeleteFramebuffersEXT)) parameters -#define GET_DeleteFramebuffersEXT(disp) ((disp)->DeleteFramebuffersEXT) -#define SET_DeleteFramebuffersEXT(disp, fn) ((disp)->DeleteFramebuffersEXT = fn) -#define CALL_DeleteRenderbuffersEXT(disp, parameters) (*((disp)->DeleteRenderbuffersEXT)) parameters -#define GET_DeleteRenderbuffersEXT(disp) ((disp)->DeleteRenderbuffersEXT) -#define SET_DeleteRenderbuffersEXT(disp, fn) ((disp)->DeleteRenderbuffersEXT = fn) -#define CALL_FramebufferRenderbufferEXT(disp, parameters) (*((disp)->FramebufferRenderbufferEXT)) parameters -#define GET_FramebufferRenderbufferEXT(disp) ((disp)->FramebufferRenderbufferEXT) -#define SET_FramebufferRenderbufferEXT(disp, fn) ((disp)->FramebufferRenderbufferEXT = fn) -#define CALL_FramebufferTexture1DEXT(disp, parameters) (*((disp)->FramebufferTexture1DEXT)) parameters -#define GET_FramebufferTexture1DEXT(disp) ((disp)->FramebufferTexture1DEXT) -#define SET_FramebufferTexture1DEXT(disp, fn) ((disp)->FramebufferTexture1DEXT = fn) -#define CALL_FramebufferTexture2DEXT(disp, parameters) (*((disp)->FramebufferTexture2DEXT)) parameters -#define GET_FramebufferTexture2DEXT(disp) ((disp)->FramebufferTexture2DEXT) -#define SET_FramebufferTexture2DEXT(disp, fn) ((disp)->FramebufferTexture2DEXT = fn) -#define CALL_FramebufferTexture3DEXT(disp, parameters) (*((disp)->FramebufferTexture3DEXT)) parameters -#define GET_FramebufferTexture3DEXT(disp) ((disp)->FramebufferTexture3DEXT) -#define SET_FramebufferTexture3DEXT(disp, fn) ((disp)->FramebufferTexture3DEXT = fn) -#define CALL_GenFramebuffersEXT(disp, parameters) (*((disp)->GenFramebuffersEXT)) parameters -#define GET_GenFramebuffersEXT(disp) ((disp)->GenFramebuffersEXT) -#define SET_GenFramebuffersEXT(disp, fn) ((disp)->GenFramebuffersEXT = fn) -#define CALL_GenRenderbuffersEXT(disp, parameters) (*((disp)->GenRenderbuffersEXT)) parameters -#define GET_GenRenderbuffersEXT(disp) ((disp)->GenRenderbuffersEXT) -#define SET_GenRenderbuffersEXT(disp, fn) ((disp)->GenRenderbuffersEXT = fn) -#define CALL_GenerateMipmapEXT(disp, parameters) (*((disp)->GenerateMipmapEXT)) parameters -#define GET_GenerateMipmapEXT(disp) ((disp)->GenerateMipmapEXT) -#define SET_GenerateMipmapEXT(disp, fn) ((disp)->GenerateMipmapEXT = fn) -#define CALL_GetFramebufferAttachmentParameterivEXT(disp, parameters) (*((disp)->GetFramebufferAttachmentParameterivEXT)) parameters -#define GET_GetFramebufferAttachmentParameterivEXT(disp) ((disp)->GetFramebufferAttachmentParameterivEXT) -#define SET_GetFramebufferAttachmentParameterivEXT(disp, fn) ((disp)->GetFramebufferAttachmentParameterivEXT = fn) -#define CALL_GetRenderbufferParameterivEXT(disp, parameters) (*((disp)->GetRenderbufferParameterivEXT)) parameters -#define GET_GetRenderbufferParameterivEXT(disp) ((disp)->GetRenderbufferParameterivEXT) -#define SET_GetRenderbufferParameterivEXT(disp, fn) ((disp)->GetRenderbufferParameterivEXT = fn) -#define CALL_IsFramebufferEXT(disp, parameters) (*((disp)->IsFramebufferEXT)) parameters -#define GET_IsFramebufferEXT(disp) ((disp)->IsFramebufferEXT) -#define SET_IsFramebufferEXT(disp, fn) ((disp)->IsFramebufferEXT = fn) -#define CALL_IsRenderbufferEXT(disp, parameters) (*((disp)->IsRenderbufferEXT)) parameters -#define GET_IsRenderbufferEXT(disp) ((disp)->IsRenderbufferEXT) -#define SET_IsRenderbufferEXT(disp, fn) ((disp)->IsRenderbufferEXT = fn) -#define CALL_RenderbufferStorageEXT(disp, parameters) (*((disp)->RenderbufferStorageEXT)) parameters -#define GET_RenderbufferStorageEXT(disp) ((disp)->RenderbufferStorageEXT) -#define SET_RenderbufferStorageEXT(disp, fn) ((disp)->RenderbufferStorageEXT = fn) -#define CALL_BlitFramebufferEXT(disp, parameters) (*((disp)->BlitFramebufferEXT)) parameters -#define GET_BlitFramebufferEXT(disp) ((disp)->BlitFramebufferEXT) -#define SET_BlitFramebufferEXT(disp, fn) ((disp)->BlitFramebufferEXT = fn) -#define CALL_BufferParameteriAPPLE(disp, parameters) (*((disp)->BufferParameteriAPPLE)) parameters -#define GET_BufferParameteriAPPLE(disp) ((disp)->BufferParameteriAPPLE) -#define SET_BufferParameteriAPPLE(disp, fn) ((disp)->BufferParameteriAPPLE = fn) -#define CALL_FlushMappedBufferRangeAPPLE(disp, parameters) (*((disp)->FlushMappedBufferRangeAPPLE)) parameters -#define GET_FlushMappedBufferRangeAPPLE(disp) ((disp)->FlushMappedBufferRangeAPPLE) -#define SET_FlushMappedBufferRangeAPPLE(disp, fn) ((disp)->FlushMappedBufferRangeAPPLE = fn) -#define CALL_FramebufferTextureLayerEXT(disp, parameters) (*((disp)->FramebufferTextureLayerEXT)) parameters -#define GET_FramebufferTextureLayerEXT(disp) ((disp)->FramebufferTextureLayerEXT) -#define SET_FramebufferTextureLayerEXT(disp, fn) ((disp)->FramebufferTextureLayerEXT = fn) -#define CALL_ColorMaskIndexedEXT(disp, parameters) (*((disp)->ColorMaskIndexedEXT)) parameters -#define GET_ColorMaskIndexedEXT(disp) ((disp)->ColorMaskIndexedEXT) -#define SET_ColorMaskIndexedEXT(disp, fn) ((disp)->ColorMaskIndexedEXT = fn) -#define CALL_DisableIndexedEXT(disp, parameters) (*((disp)->DisableIndexedEXT)) parameters -#define GET_DisableIndexedEXT(disp) ((disp)->DisableIndexedEXT) -#define SET_DisableIndexedEXT(disp, fn) ((disp)->DisableIndexedEXT = fn) -#define CALL_EnableIndexedEXT(disp, parameters) (*((disp)->EnableIndexedEXT)) parameters -#define GET_EnableIndexedEXT(disp) ((disp)->EnableIndexedEXT) -#define SET_EnableIndexedEXT(disp, fn) ((disp)->EnableIndexedEXT = fn) -#define CALL_GetBooleanIndexedvEXT(disp, parameters) (*((disp)->GetBooleanIndexedvEXT)) parameters -#define GET_GetBooleanIndexedvEXT(disp) ((disp)->GetBooleanIndexedvEXT) -#define SET_GetBooleanIndexedvEXT(disp, fn) ((disp)->GetBooleanIndexedvEXT = fn) -#define CALL_GetIntegerIndexedvEXT(disp, parameters) (*((disp)->GetIntegerIndexedvEXT)) parameters -#define GET_GetIntegerIndexedvEXT(disp) ((disp)->GetIntegerIndexedvEXT) -#define SET_GetIntegerIndexedvEXT(disp, fn) ((disp)->GetIntegerIndexedvEXT = fn) -#define CALL_IsEnabledIndexedEXT(disp, parameters) (*((disp)->IsEnabledIndexedEXT)) parameters -#define GET_IsEnabledIndexedEXT(disp) ((disp)->IsEnabledIndexedEXT) -#define SET_IsEnabledIndexedEXT(disp, fn) ((disp)->IsEnabledIndexedEXT = fn) -#define CALL_BeginConditionalRenderNV(disp, parameters) (*((disp)->BeginConditionalRenderNV)) parameters -#define GET_BeginConditionalRenderNV(disp) ((disp)->BeginConditionalRenderNV) -#define SET_BeginConditionalRenderNV(disp, fn) ((disp)->BeginConditionalRenderNV = fn) -#define CALL_EndConditionalRenderNV(disp, parameters) (*((disp)->EndConditionalRenderNV)) parameters -#define GET_EndConditionalRenderNV(disp) ((disp)->EndConditionalRenderNV) -#define SET_EndConditionalRenderNV(disp, fn) ((disp)->EndConditionalRenderNV = fn) -#define CALL_BeginTransformFeedbackEXT(disp, parameters) (*((disp)->BeginTransformFeedbackEXT)) parameters -#define GET_BeginTransformFeedbackEXT(disp) ((disp)->BeginTransformFeedbackEXT) -#define SET_BeginTransformFeedbackEXT(disp, fn) ((disp)->BeginTransformFeedbackEXT = fn) -#define CALL_BindBufferBaseEXT(disp, parameters) (*((disp)->BindBufferBaseEXT)) parameters -#define GET_BindBufferBaseEXT(disp) ((disp)->BindBufferBaseEXT) -#define SET_BindBufferBaseEXT(disp, fn) ((disp)->BindBufferBaseEXT = fn) -#define CALL_BindBufferOffsetEXT(disp, parameters) (*((disp)->BindBufferOffsetEXT)) parameters -#define GET_BindBufferOffsetEXT(disp) ((disp)->BindBufferOffsetEXT) -#define SET_BindBufferOffsetEXT(disp, fn) ((disp)->BindBufferOffsetEXT = fn) -#define CALL_BindBufferRangeEXT(disp, parameters) (*((disp)->BindBufferRangeEXT)) parameters -#define GET_BindBufferRangeEXT(disp) ((disp)->BindBufferRangeEXT) -#define SET_BindBufferRangeEXT(disp, fn) ((disp)->BindBufferRangeEXT = fn) -#define CALL_EndTransformFeedbackEXT(disp, parameters) (*((disp)->EndTransformFeedbackEXT)) parameters -#define GET_EndTransformFeedbackEXT(disp) ((disp)->EndTransformFeedbackEXT) -#define SET_EndTransformFeedbackEXT(disp, fn) ((disp)->EndTransformFeedbackEXT = fn) -#define CALL_GetTransformFeedbackVaryingEXT(disp, parameters) (*((disp)->GetTransformFeedbackVaryingEXT)) parameters -#define GET_GetTransformFeedbackVaryingEXT(disp) ((disp)->GetTransformFeedbackVaryingEXT) -#define SET_GetTransformFeedbackVaryingEXT(disp, fn) ((disp)->GetTransformFeedbackVaryingEXT = fn) -#define CALL_TransformFeedbackVaryingsEXT(disp, parameters) (*((disp)->TransformFeedbackVaryingsEXT)) parameters -#define GET_TransformFeedbackVaryingsEXT(disp) ((disp)->TransformFeedbackVaryingsEXT) -#define SET_TransformFeedbackVaryingsEXT(disp, fn) ((disp)->TransformFeedbackVaryingsEXT = fn) -#define CALL_ProvokingVertexEXT(disp, parameters) (*((disp)->ProvokingVertexEXT)) parameters -#define GET_ProvokingVertexEXT(disp) ((disp)->ProvokingVertexEXT) -#define SET_ProvokingVertexEXT(disp, fn) ((disp)->ProvokingVertexEXT = fn) -#define CALL_GetTexParameterPointervAPPLE(disp, parameters) (*((disp)->GetTexParameterPointervAPPLE)) parameters -#define GET_GetTexParameterPointervAPPLE(disp) ((disp)->GetTexParameterPointervAPPLE) -#define SET_GetTexParameterPointervAPPLE(disp, fn) ((disp)->GetTexParameterPointervAPPLE = fn) -#define CALL_TextureRangeAPPLE(disp, parameters) (*((disp)->TextureRangeAPPLE)) parameters -#define GET_TextureRangeAPPLE(disp) ((disp)->TextureRangeAPPLE) -#define SET_TextureRangeAPPLE(disp, fn) ((disp)->TextureRangeAPPLE = fn) -#define CALL_GetObjectParameterivAPPLE(disp, parameters) (*((disp)->GetObjectParameterivAPPLE)) parameters -#define GET_GetObjectParameterivAPPLE(disp) ((disp)->GetObjectParameterivAPPLE) -#define SET_GetObjectParameterivAPPLE(disp, fn) ((disp)->GetObjectParameterivAPPLE = fn) -#define CALL_ObjectPurgeableAPPLE(disp, parameters) (*((disp)->ObjectPurgeableAPPLE)) parameters -#define GET_ObjectPurgeableAPPLE(disp) ((disp)->ObjectPurgeableAPPLE) -#define SET_ObjectPurgeableAPPLE(disp, fn) ((disp)->ObjectPurgeableAPPLE = fn) -#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) (*((disp)->ObjectUnpurgeableAPPLE)) parameters -#define GET_ObjectUnpurgeableAPPLE(disp) ((disp)->ObjectUnpurgeableAPPLE) -#define SET_ObjectUnpurgeableAPPLE(disp, fn) ((disp)->ObjectUnpurgeableAPPLE = fn) -#define CALL_StencilFuncSeparateATI(disp, parameters) (*((disp)->StencilFuncSeparateATI)) parameters -#define GET_StencilFuncSeparateATI(disp) ((disp)->StencilFuncSeparateATI) -#define SET_StencilFuncSeparateATI(disp, fn) ((disp)->StencilFuncSeparateATI = fn) -#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) (*((disp)->ProgramEnvParameters4fvEXT)) parameters -#define GET_ProgramEnvParameters4fvEXT(disp) ((disp)->ProgramEnvParameters4fvEXT) -#define SET_ProgramEnvParameters4fvEXT(disp, fn) ((disp)->ProgramEnvParameters4fvEXT = fn) -#define CALL_ProgramLocalParameters4fvEXT(disp, parameters) (*((disp)->ProgramLocalParameters4fvEXT)) parameters -#define GET_ProgramLocalParameters4fvEXT(disp) ((disp)->ProgramLocalParameters4fvEXT) -#define SET_ProgramLocalParameters4fvEXT(disp, fn) ((disp)->ProgramLocalParameters4fvEXT = fn) -#define CALL_GetQueryObjecti64vEXT(disp, parameters) (*((disp)->GetQueryObjecti64vEXT)) parameters -#define GET_GetQueryObjecti64vEXT(disp) ((disp)->GetQueryObjecti64vEXT) -#define SET_GetQueryObjecti64vEXT(disp, fn) ((disp)->GetQueryObjecti64vEXT = fn) -#define CALL_GetQueryObjectui64vEXT(disp, parameters) (*((disp)->GetQueryObjectui64vEXT)) parameters -#define GET_GetQueryObjectui64vEXT(disp) ((disp)->GetQueryObjectui64vEXT) -#define SET_GetQueryObjectui64vEXT(disp, fn) ((disp)->GetQueryObjectui64vEXT = fn) -#define CALL_EGLImageTargetRenderbufferStorageOES(disp, parameters) (*((disp)->EGLImageTargetRenderbufferStorageOES)) parameters -#define GET_EGLImageTargetRenderbufferStorageOES(disp) ((disp)->EGLImageTargetRenderbufferStorageOES) -#define SET_EGLImageTargetRenderbufferStorageOES(disp, fn) ((disp)->EGLImageTargetRenderbufferStorageOES = fn) -#define CALL_EGLImageTargetTexture2DOES(disp, parameters) (*((disp)->EGLImageTargetTexture2DOES)) parameters -#define GET_EGLImageTargetTexture2DOES(disp) ((disp)->EGLImageTargetTexture2DOES) -#define SET_EGLImageTargetTexture2DOES(disp, fn) ((disp)->EGLImageTargetTexture2DOES = fn) - -#else - -#define driDispatchRemapTable_size 419 -extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; - -#define AttachShader_remap_index 0 -#define CreateProgram_remap_index 1 -#define CreateShader_remap_index 2 -#define DeleteProgram_remap_index 3 -#define DeleteShader_remap_index 4 -#define DetachShader_remap_index 5 -#define GetAttachedShaders_remap_index 6 -#define GetProgramInfoLog_remap_index 7 -#define GetProgramiv_remap_index 8 -#define GetShaderInfoLog_remap_index 9 -#define GetShaderiv_remap_index 10 -#define IsProgram_remap_index 11 -#define IsShader_remap_index 12 -#define StencilFuncSeparate_remap_index 13 -#define StencilMaskSeparate_remap_index 14 -#define StencilOpSeparate_remap_index 15 -#define UniformMatrix2x3fv_remap_index 16 -#define UniformMatrix2x4fv_remap_index 17 -#define UniformMatrix3x2fv_remap_index 18 -#define UniformMatrix3x4fv_remap_index 19 -#define UniformMatrix4x2fv_remap_index 20 -#define UniformMatrix4x3fv_remap_index 21 -#define DrawArraysInstanced_remap_index 22 -#define DrawElementsInstanced_remap_index 23 -#define LoadTransposeMatrixdARB_remap_index 24 -#define LoadTransposeMatrixfARB_remap_index 25 -#define MultTransposeMatrixdARB_remap_index 26 -#define MultTransposeMatrixfARB_remap_index 27 -#define SampleCoverageARB_remap_index 28 -#define CompressedTexImage1DARB_remap_index 29 -#define CompressedTexImage2DARB_remap_index 30 -#define CompressedTexImage3DARB_remap_index 31 -#define CompressedTexSubImage1DARB_remap_index 32 -#define CompressedTexSubImage2DARB_remap_index 33 -#define CompressedTexSubImage3DARB_remap_index 34 -#define GetCompressedTexImageARB_remap_index 35 -#define DisableVertexAttribArrayARB_remap_index 36 -#define EnableVertexAttribArrayARB_remap_index 37 -#define GetProgramEnvParameterdvARB_remap_index 38 -#define GetProgramEnvParameterfvARB_remap_index 39 -#define GetProgramLocalParameterdvARB_remap_index 40 -#define GetProgramLocalParameterfvARB_remap_index 41 -#define GetProgramStringARB_remap_index 42 -#define GetProgramivARB_remap_index 43 -#define GetVertexAttribdvARB_remap_index 44 -#define GetVertexAttribfvARB_remap_index 45 -#define GetVertexAttribivARB_remap_index 46 -#define ProgramEnvParameter4dARB_remap_index 47 -#define ProgramEnvParameter4dvARB_remap_index 48 -#define ProgramEnvParameter4fARB_remap_index 49 -#define ProgramEnvParameter4fvARB_remap_index 50 -#define ProgramLocalParameter4dARB_remap_index 51 -#define ProgramLocalParameter4dvARB_remap_index 52 -#define ProgramLocalParameter4fARB_remap_index 53 -#define ProgramLocalParameter4fvARB_remap_index 54 -#define ProgramStringARB_remap_index 55 -#define VertexAttrib1dARB_remap_index 56 -#define VertexAttrib1dvARB_remap_index 57 -#define VertexAttrib1fARB_remap_index 58 -#define VertexAttrib1fvARB_remap_index 59 -#define VertexAttrib1sARB_remap_index 60 -#define VertexAttrib1svARB_remap_index 61 -#define VertexAttrib2dARB_remap_index 62 -#define VertexAttrib2dvARB_remap_index 63 -#define VertexAttrib2fARB_remap_index 64 -#define VertexAttrib2fvARB_remap_index 65 -#define VertexAttrib2sARB_remap_index 66 -#define VertexAttrib2svARB_remap_index 67 -#define VertexAttrib3dARB_remap_index 68 -#define VertexAttrib3dvARB_remap_index 69 -#define VertexAttrib3fARB_remap_index 70 -#define VertexAttrib3fvARB_remap_index 71 -#define VertexAttrib3sARB_remap_index 72 -#define VertexAttrib3svARB_remap_index 73 -#define VertexAttrib4NbvARB_remap_index 74 -#define VertexAttrib4NivARB_remap_index 75 -#define VertexAttrib4NsvARB_remap_index 76 -#define VertexAttrib4NubARB_remap_index 77 -#define VertexAttrib4NubvARB_remap_index 78 -#define VertexAttrib4NuivARB_remap_index 79 -#define VertexAttrib4NusvARB_remap_index 80 -#define VertexAttrib4bvARB_remap_index 81 -#define VertexAttrib4dARB_remap_index 82 -#define VertexAttrib4dvARB_remap_index 83 -#define VertexAttrib4fARB_remap_index 84 -#define VertexAttrib4fvARB_remap_index 85 -#define VertexAttrib4ivARB_remap_index 86 -#define VertexAttrib4sARB_remap_index 87 -#define VertexAttrib4svARB_remap_index 88 -#define VertexAttrib4ubvARB_remap_index 89 -#define VertexAttrib4uivARB_remap_index 90 -#define VertexAttrib4usvARB_remap_index 91 -#define VertexAttribPointerARB_remap_index 92 -#define BindBufferARB_remap_index 93 -#define BufferDataARB_remap_index 94 -#define BufferSubDataARB_remap_index 95 -#define DeleteBuffersARB_remap_index 96 -#define GenBuffersARB_remap_index 97 -#define GetBufferParameterivARB_remap_index 98 -#define GetBufferPointervARB_remap_index 99 -#define GetBufferSubDataARB_remap_index 100 -#define IsBufferARB_remap_index 101 -#define MapBufferARB_remap_index 102 -#define UnmapBufferARB_remap_index 103 -#define BeginQueryARB_remap_index 104 -#define DeleteQueriesARB_remap_index 105 -#define EndQueryARB_remap_index 106 -#define GenQueriesARB_remap_index 107 -#define GetQueryObjectivARB_remap_index 108 -#define GetQueryObjectuivARB_remap_index 109 -#define GetQueryivARB_remap_index 110 -#define IsQueryARB_remap_index 111 -#define AttachObjectARB_remap_index 112 -#define CompileShaderARB_remap_index 113 -#define CreateProgramObjectARB_remap_index 114 -#define CreateShaderObjectARB_remap_index 115 -#define DeleteObjectARB_remap_index 116 -#define DetachObjectARB_remap_index 117 -#define GetActiveUniformARB_remap_index 118 -#define GetAttachedObjectsARB_remap_index 119 -#define GetHandleARB_remap_index 120 -#define GetInfoLogARB_remap_index 121 -#define GetObjectParameterfvARB_remap_index 122 -#define GetObjectParameterivARB_remap_index 123 -#define GetShaderSourceARB_remap_index 124 -#define GetUniformLocationARB_remap_index 125 -#define GetUniformfvARB_remap_index 126 -#define GetUniformivARB_remap_index 127 -#define LinkProgramARB_remap_index 128 -#define ShaderSourceARB_remap_index 129 -#define Uniform1fARB_remap_index 130 -#define Uniform1fvARB_remap_index 131 -#define Uniform1iARB_remap_index 132 -#define Uniform1ivARB_remap_index 133 -#define Uniform2fARB_remap_index 134 -#define Uniform2fvARB_remap_index 135 -#define Uniform2iARB_remap_index 136 -#define Uniform2ivARB_remap_index 137 -#define Uniform3fARB_remap_index 138 -#define Uniform3fvARB_remap_index 139 -#define Uniform3iARB_remap_index 140 -#define Uniform3ivARB_remap_index 141 -#define Uniform4fARB_remap_index 142 -#define Uniform4fvARB_remap_index 143 -#define Uniform4iARB_remap_index 144 -#define Uniform4ivARB_remap_index 145 -#define UniformMatrix2fvARB_remap_index 146 -#define UniformMatrix3fvARB_remap_index 147 -#define UniformMatrix4fvARB_remap_index 148 -#define UseProgramObjectARB_remap_index 149 -#define ValidateProgramARB_remap_index 150 -#define BindAttribLocationARB_remap_index 151 -#define GetActiveAttribARB_remap_index 152 -#define GetAttribLocationARB_remap_index 153 -#define DrawBuffersARB_remap_index 154 -#define RenderbufferStorageMultisample_remap_index 155 -#define FramebufferTextureARB_remap_index 156 -#define FramebufferTextureFaceARB_remap_index 157 -#define ProgramParameteriARB_remap_index 158 -#define FlushMappedBufferRange_remap_index 159 -#define MapBufferRange_remap_index 160 -#define BindVertexArray_remap_index 161 -#define GenVertexArrays_remap_index 162 -#define CopyBufferSubData_remap_index 163 -#define ClientWaitSync_remap_index 164 -#define DeleteSync_remap_index 165 -#define FenceSync_remap_index 166 -#define GetInteger64v_remap_index 167 -#define GetSynciv_remap_index 168 -#define IsSync_remap_index 169 -#define WaitSync_remap_index 170 -#define DrawElementsBaseVertex_remap_index 171 -#define DrawRangeElementsBaseVertex_remap_index 172 -#define MultiDrawElementsBaseVertex_remap_index 173 -#define BindTransformFeedback_remap_index 174 -#define DeleteTransformFeedbacks_remap_index 175 -#define DrawTransformFeedback_remap_index 176 -#define GenTransformFeedbacks_remap_index 177 -#define IsTransformFeedback_remap_index 178 -#define PauseTransformFeedback_remap_index 179 -#define ResumeTransformFeedback_remap_index 180 -#define PolygonOffsetEXT_remap_index 181 -#define GetPixelTexGenParameterfvSGIS_remap_index 182 -#define GetPixelTexGenParameterivSGIS_remap_index 183 -#define PixelTexGenParameterfSGIS_remap_index 184 -#define PixelTexGenParameterfvSGIS_remap_index 185 -#define PixelTexGenParameteriSGIS_remap_index 186 -#define PixelTexGenParameterivSGIS_remap_index 187 -#define SampleMaskSGIS_remap_index 188 -#define SamplePatternSGIS_remap_index 189 -#define ColorPointerEXT_remap_index 190 -#define EdgeFlagPointerEXT_remap_index 191 -#define IndexPointerEXT_remap_index 192 -#define NormalPointerEXT_remap_index 193 -#define TexCoordPointerEXT_remap_index 194 -#define VertexPointerEXT_remap_index 195 -#define PointParameterfEXT_remap_index 196 -#define PointParameterfvEXT_remap_index 197 -#define LockArraysEXT_remap_index 198 -#define UnlockArraysEXT_remap_index 199 -#define SecondaryColor3bEXT_remap_index 200 -#define SecondaryColor3bvEXT_remap_index 201 -#define SecondaryColor3dEXT_remap_index 202 -#define SecondaryColor3dvEXT_remap_index 203 -#define SecondaryColor3fEXT_remap_index 204 -#define SecondaryColor3fvEXT_remap_index 205 -#define SecondaryColor3iEXT_remap_index 206 -#define SecondaryColor3ivEXT_remap_index 207 -#define SecondaryColor3sEXT_remap_index 208 -#define SecondaryColor3svEXT_remap_index 209 -#define SecondaryColor3ubEXT_remap_index 210 -#define SecondaryColor3ubvEXT_remap_index 211 -#define SecondaryColor3uiEXT_remap_index 212 -#define SecondaryColor3uivEXT_remap_index 213 -#define SecondaryColor3usEXT_remap_index 214 -#define SecondaryColor3usvEXT_remap_index 215 -#define SecondaryColorPointerEXT_remap_index 216 -#define MultiDrawArraysEXT_remap_index 217 -#define MultiDrawElementsEXT_remap_index 218 -#define FogCoordPointerEXT_remap_index 219 -#define FogCoorddEXT_remap_index 220 -#define FogCoorddvEXT_remap_index 221 -#define FogCoordfEXT_remap_index 222 -#define FogCoordfvEXT_remap_index 223 -#define PixelTexGenSGIX_remap_index 224 -#define BlendFuncSeparateEXT_remap_index 225 -#define FlushVertexArrayRangeNV_remap_index 226 -#define VertexArrayRangeNV_remap_index 227 -#define CombinerInputNV_remap_index 228 -#define CombinerOutputNV_remap_index 229 -#define CombinerParameterfNV_remap_index 230 -#define CombinerParameterfvNV_remap_index 231 -#define CombinerParameteriNV_remap_index 232 -#define CombinerParameterivNV_remap_index 233 -#define FinalCombinerInputNV_remap_index 234 -#define GetCombinerInputParameterfvNV_remap_index 235 -#define GetCombinerInputParameterivNV_remap_index 236 -#define GetCombinerOutputParameterfvNV_remap_index 237 -#define GetCombinerOutputParameterivNV_remap_index 238 -#define GetFinalCombinerInputParameterfvNV_remap_index 239 -#define GetFinalCombinerInputParameterivNV_remap_index 240 -#define ResizeBuffersMESA_remap_index 241 -#define WindowPos2dMESA_remap_index 242 -#define WindowPos2dvMESA_remap_index 243 -#define WindowPos2fMESA_remap_index 244 -#define WindowPos2fvMESA_remap_index 245 -#define WindowPos2iMESA_remap_index 246 -#define WindowPos2ivMESA_remap_index 247 -#define WindowPos2sMESA_remap_index 248 -#define WindowPos2svMESA_remap_index 249 -#define WindowPos3dMESA_remap_index 250 -#define WindowPos3dvMESA_remap_index 251 -#define WindowPos3fMESA_remap_index 252 -#define WindowPos3fvMESA_remap_index 253 -#define WindowPos3iMESA_remap_index 254 -#define WindowPos3ivMESA_remap_index 255 -#define WindowPos3sMESA_remap_index 256 -#define WindowPos3svMESA_remap_index 257 -#define WindowPos4dMESA_remap_index 258 -#define WindowPos4dvMESA_remap_index 259 -#define WindowPos4fMESA_remap_index 260 -#define WindowPos4fvMESA_remap_index 261 -#define WindowPos4iMESA_remap_index 262 -#define WindowPos4ivMESA_remap_index 263 -#define WindowPos4sMESA_remap_index 264 -#define WindowPos4svMESA_remap_index 265 -#define MultiModeDrawArraysIBM_remap_index 266 -#define MultiModeDrawElementsIBM_remap_index 267 -#define DeleteFencesNV_remap_index 268 -#define FinishFenceNV_remap_index 269 -#define GenFencesNV_remap_index 270 -#define GetFenceivNV_remap_index 271 -#define IsFenceNV_remap_index 272 -#define SetFenceNV_remap_index 273 -#define TestFenceNV_remap_index 274 -#define AreProgramsResidentNV_remap_index 275 -#define BindProgramNV_remap_index 276 -#define DeleteProgramsNV_remap_index 277 -#define ExecuteProgramNV_remap_index 278 -#define GenProgramsNV_remap_index 279 -#define GetProgramParameterdvNV_remap_index 280 -#define GetProgramParameterfvNV_remap_index 281 -#define GetProgramStringNV_remap_index 282 -#define GetProgramivNV_remap_index 283 -#define GetTrackMatrixivNV_remap_index 284 -#define GetVertexAttribPointervNV_remap_index 285 -#define GetVertexAttribdvNV_remap_index 286 -#define GetVertexAttribfvNV_remap_index 287 -#define GetVertexAttribivNV_remap_index 288 -#define IsProgramNV_remap_index 289 -#define LoadProgramNV_remap_index 290 -#define ProgramParameters4dvNV_remap_index 291 -#define ProgramParameters4fvNV_remap_index 292 -#define RequestResidentProgramsNV_remap_index 293 -#define TrackMatrixNV_remap_index 294 -#define VertexAttrib1dNV_remap_index 295 -#define VertexAttrib1dvNV_remap_index 296 -#define VertexAttrib1fNV_remap_index 297 -#define VertexAttrib1fvNV_remap_index 298 -#define VertexAttrib1sNV_remap_index 299 -#define VertexAttrib1svNV_remap_index 300 -#define VertexAttrib2dNV_remap_index 301 -#define VertexAttrib2dvNV_remap_index 302 -#define VertexAttrib2fNV_remap_index 303 -#define VertexAttrib2fvNV_remap_index 304 -#define VertexAttrib2sNV_remap_index 305 -#define VertexAttrib2svNV_remap_index 306 -#define VertexAttrib3dNV_remap_index 307 -#define VertexAttrib3dvNV_remap_index 308 -#define VertexAttrib3fNV_remap_index 309 -#define VertexAttrib3fvNV_remap_index 310 -#define VertexAttrib3sNV_remap_index 311 -#define VertexAttrib3svNV_remap_index 312 -#define VertexAttrib4dNV_remap_index 313 -#define VertexAttrib4dvNV_remap_index 314 -#define VertexAttrib4fNV_remap_index 315 -#define VertexAttrib4fvNV_remap_index 316 -#define VertexAttrib4sNV_remap_index 317 -#define VertexAttrib4svNV_remap_index 318 -#define VertexAttrib4ubNV_remap_index 319 -#define VertexAttrib4ubvNV_remap_index 320 -#define VertexAttribPointerNV_remap_index 321 -#define VertexAttribs1dvNV_remap_index 322 -#define VertexAttribs1fvNV_remap_index 323 -#define VertexAttribs1svNV_remap_index 324 -#define VertexAttribs2dvNV_remap_index 325 -#define VertexAttribs2fvNV_remap_index 326 -#define VertexAttribs2svNV_remap_index 327 -#define VertexAttribs3dvNV_remap_index 328 -#define VertexAttribs3fvNV_remap_index 329 -#define VertexAttribs3svNV_remap_index 330 -#define VertexAttribs4dvNV_remap_index 331 -#define VertexAttribs4fvNV_remap_index 332 -#define VertexAttribs4svNV_remap_index 333 -#define VertexAttribs4ubvNV_remap_index 334 -#define GetTexBumpParameterfvATI_remap_index 335 -#define GetTexBumpParameterivATI_remap_index 336 -#define TexBumpParameterfvATI_remap_index 337 -#define TexBumpParameterivATI_remap_index 338 -#define AlphaFragmentOp1ATI_remap_index 339 -#define AlphaFragmentOp2ATI_remap_index 340 -#define AlphaFragmentOp3ATI_remap_index 341 -#define BeginFragmentShaderATI_remap_index 342 -#define BindFragmentShaderATI_remap_index 343 -#define ColorFragmentOp1ATI_remap_index 344 -#define ColorFragmentOp2ATI_remap_index 345 -#define ColorFragmentOp3ATI_remap_index 346 -#define DeleteFragmentShaderATI_remap_index 347 -#define EndFragmentShaderATI_remap_index 348 -#define GenFragmentShadersATI_remap_index 349 -#define PassTexCoordATI_remap_index 350 -#define SampleMapATI_remap_index 351 -#define SetFragmentShaderConstantATI_remap_index 352 -#define PointParameteriNV_remap_index 353 -#define PointParameterivNV_remap_index 354 -#define ActiveStencilFaceEXT_remap_index 355 -#define BindVertexArrayAPPLE_remap_index 356 -#define DeleteVertexArraysAPPLE_remap_index 357 -#define GenVertexArraysAPPLE_remap_index 358 -#define IsVertexArrayAPPLE_remap_index 359 -#define GetProgramNamedParameterdvNV_remap_index 360 -#define GetProgramNamedParameterfvNV_remap_index 361 -#define ProgramNamedParameter4dNV_remap_index 362 -#define ProgramNamedParameter4dvNV_remap_index 363 -#define ProgramNamedParameter4fNV_remap_index 364 -#define ProgramNamedParameter4fvNV_remap_index 365 -#define PrimitiveRestartIndexNV_remap_index 366 -#define PrimitiveRestartNV_remap_index 367 -#define DepthBoundsEXT_remap_index 368 -#define BlendEquationSeparateEXT_remap_index 369 -#define BindFramebufferEXT_remap_index 370 -#define BindRenderbufferEXT_remap_index 371 -#define CheckFramebufferStatusEXT_remap_index 372 -#define DeleteFramebuffersEXT_remap_index 373 -#define DeleteRenderbuffersEXT_remap_index 374 -#define FramebufferRenderbufferEXT_remap_index 375 -#define FramebufferTexture1DEXT_remap_index 376 -#define FramebufferTexture2DEXT_remap_index 377 -#define FramebufferTexture3DEXT_remap_index 378 -#define GenFramebuffersEXT_remap_index 379 -#define GenRenderbuffersEXT_remap_index 380 -#define GenerateMipmapEXT_remap_index 381 -#define GetFramebufferAttachmentParameterivEXT_remap_index 382 -#define GetRenderbufferParameterivEXT_remap_index 383 -#define IsFramebufferEXT_remap_index 384 -#define IsRenderbufferEXT_remap_index 385 -#define RenderbufferStorageEXT_remap_index 386 -#define BlitFramebufferEXT_remap_index 387 -#define BufferParameteriAPPLE_remap_index 388 -#define FlushMappedBufferRangeAPPLE_remap_index 389 -#define FramebufferTextureLayerEXT_remap_index 390 -#define ColorMaskIndexedEXT_remap_index 391 -#define DisableIndexedEXT_remap_index 392 -#define EnableIndexedEXT_remap_index 393 -#define GetBooleanIndexedvEXT_remap_index 394 -#define GetIntegerIndexedvEXT_remap_index 395 -#define IsEnabledIndexedEXT_remap_index 396 -#define BeginConditionalRenderNV_remap_index 397 -#define EndConditionalRenderNV_remap_index 398 -#define BeginTransformFeedbackEXT_remap_index 399 -#define BindBufferBaseEXT_remap_index 400 -#define BindBufferOffsetEXT_remap_index 401 -#define BindBufferRangeEXT_remap_index 402 -#define EndTransformFeedbackEXT_remap_index 403 -#define GetTransformFeedbackVaryingEXT_remap_index 404 -#define TransformFeedbackVaryingsEXT_remap_index 405 -#define ProvokingVertexEXT_remap_index 406 -#define GetTexParameterPointervAPPLE_remap_index 407 -#define TextureRangeAPPLE_remap_index 408 -#define GetObjectParameterivAPPLE_remap_index 409 -#define ObjectPurgeableAPPLE_remap_index 410 -#define ObjectUnpurgeableAPPLE_remap_index 411 -#define StencilFuncSeparateATI_remap_index 412 -#define ProgramEnvParameters4fvEXT_remap_index 413 -#define ProgramLocalParameters4fvEXT_remap_index 414 -#define GetQueryObjecti64vEXT_remap_index 415 -#define GetQueryObjectui64vEXT_remap_index 416 -#define EGLImageTargetRenderbufferStorageOES_remap_index 417 -#define EGLImageTargetTexture2DOES_remap_index 418 - -#define CALL_AttachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), driDispatchRemapTable[AttachShader_remap_index], parameters) -#define GET_AttachShader(disp) GET_by_offset(disp, driDispatchRemapTable[AttachShader_remap_index]) -#define SET_AttachShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AttachShader_remap_index], fn) -#define CALL_CreateProgram(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(void)), driDispatchRemapTable[CreateProgram_remap_index], parameters) -#define GET_CreateProgram(disp) GET_by_offset(disp, driDispatchRemapTable[CreateProgram_remap_index]) -#define SET_CreateProgram(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateProgram_remap_index], fn) -#define CALL_CreateShader(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[CreateShader_remap_index], parameters) -#define GET_CreateShader(disp) GET_by_offset(disp, driDispatchRemapTable[CreateShader_remap_index]) -#define SET_CreateShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateShader_remap_index], fn) -#define CALL_DeleteProgram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DeleteProgram_remap_index], parameters) -#define GET_DeleteProgram(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteProgram_remap_index]) -#define SET_DeleteProgram(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteProgram_remap_index], fn) -#define CALL_DeleteShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DeleteShader_remap_index], parameters) -#define GET_DeleteShader(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteShader_remap_index]) -#define SET_DeleteShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteShader_remap_index], fn) -#define CALL_DetachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), driDispatchRemapTable[DetachShader_remap_index], parameters) -#define GET_DetachShader(disp) GET_by_offset(disp, driDispatchRemapTable[DetachShader_remap_index]) -#define SET_DetachShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DetachShader_remap_index], fn) -#define CALL_GetAttachedShaders(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLuint *)), driDispatchRemapTable[GetAttachedShaders_remap_index], parameters) -#define GET_GetAttachedShaders(disp) GET_by_offset(disp, driDispatchRemapTable[GetAttachedShaders_remap_index]) -#define SET_GetAttachedShaders(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetAttachedShaders_remap_index], fn) -#define CALL_GetProgramInfoLog(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLchar *)), driDispatchRemapTable[GetProgramInfoLog_remap_index], parameters) -#define GET_GetProgramInfoLog(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramInfoLog_remap_index]) -#define SET_GetProgramInfoLog(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramInfoLog_remap_index], fn) -#define CALL_GetProgramiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetProgramiv_remap_index], parameters) -#define GET_GetProgramiv(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramiv_remap_index]) -#define SET_GetProgramiv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramiv_remap_index], fn) -#define CALL_GetShaderInfoLog(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLchar *)), driDispatchRemapTable[GetShaderInfoLog_remap_index], parameters) -#define GET_GetShaderInfoLog(disp) GET_by_offset(disp, driDispatchRemapTable[GetShaderInfoLog_remap_index]) -#define SET_GetShaderInfoLog(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetShaderInfoLog_remap_index], fn) -#define CALL_GetShaderiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetShaderiv_remap_index], parameters) -#define GET_GetShaderiv(disp) GET_by_offset(disp, driDispatchRemapTable[GetShaderiv_remap_index]) -#define SET_GetShaderiv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetShaderiv_remap_index], fn) -#define CALL_IsProgram(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsProgram_remap_index], parameters) -#define GET_IsProgram(disp) GET_by_offset(disp, driDispatchRemapTable[IsProgram_remap_index]) -#define SET_IsProgram(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsProgram_remap_index], fn) -#define CALL_IsShader(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsShader_remap_index], parameters) -#define GET_IsShader(disp) GET_by_offset(disp, driDispatchRemapTable[IsShader_remap_index]) -#define SET_IsShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsShader_remap_index], fn) -#define CALL_StencilFuncSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLuint)), driDispatchRemapTable[StencilFuncSeparate_remap_index], parameters) -#define GET_StencilFuncSeparate(disp) GET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparate_remap_index]) -#define SET_StencilFuncSeparate(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparate_remap_index], fn) -#define CALL_StencilMaskSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[StencilMaskSeparate_remap_index], parameters) -#define GET_StencilMaskSeparate(disp) GET_by_offset(disp, driDispatchRemapTable[StencilMaskSeparate_remap_index]) -#define SET_StencilMaskSeparate(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilMaskSeparate_remap_index], fn) -#define CALL_StencilOpSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[StencilOpSeparate_remap_index], parameters) -#define GET_StencilOpSeparate(disp) GET_by_offset(disp, driDispatchRemapTable[StencilOpSeparate_remap_index]) -#define SET_StencilOpSeparate(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilOpSeparate_remap_index], fn) -#define CALL_UniformMatrix2x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix2x3fv_remap_index], parameters) -#define GET_UniformMatrix2x3fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x3fv_remap_index]) -#define SET_UniformMatrix2x3fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x3fv_remap_index], fn) -#define CALL_UniformMatrix2x4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix2x4fv_remap_index], parameters) -#define GET_UniformMatrix2x4fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x4fv_remap_index]) -#define SET_UniformMatrix2x4fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x4fv_remap_index], fn) -#define CALL_UniformMatrix3x2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix3x2fv_remap_index], parameters) -#define GET_UniformMatrix3x2fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x2fv_remap_index]) -#define SET_UniformMatrix3x2fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x2fv_remap_index], fn) -#define CALL_UniformMatrix3x4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix3x4fv_remap_index], parameters) -#define GET_UniformMatrix3x4fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x4fv_remap_index]) -#define SET_UniformMatrix3x4fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x4fv_remap_index], fn) -#define CALL_UniformMatrix4x2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix4x2fv_remap_index], parameters) -#define GET_UniformMatrix4x2fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x2fv_remap_index]) -#define SET_UniformMatrix4x2fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x2fv_remap_index], fn) -#define CALL_UniformMatrix4x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix4x3fv_remap_index], parameters) -#define GET_UniformMatrix4x3fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x3fv_remap_index]) -#define SET_UniformMatrix4x3fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x3fv_remap_index], fn) -#define CALL_DrawArraysInstanced(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLsizei)), driDispatchRemapTable[DrawArraysInstanced_remap_index], parameters) -#define GET_DrawArraysInstanced(disp) GET_by_offset(disp, driDispatchRemapTable[DrawArraysInstanced_remap_index]) -#define SET_DrawArraysInstanced(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawArraysInstanced_remap_index], fn) -#define CALL_DrawElementsInstanced(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei)), driDispatchRemapTable[DrawElementsInstanced_remap_index], parameters) -#define GET_DrawElementsInstanced(disp) GET_by_offset(disp, driDispatchRemapTable[DrawElementsInstanced_remap_index]) -#define SET_DrawElementsInstanced(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawElementsInstanced_remap_index], fn) -#define CALL_LoadTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index], parameters) -#define GET_LoadTransposeMatrixdARB(disp) GET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index]) -#define SET_LoadTransposeMatrixdARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index], fn) -#define CALL_LoadTransposeMatrixfARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index], parameters) -#define GET_LoadTransposeMatrixfARB(disp) GET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index]) -#define SET_LoadTransposeMatrixfARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index], fn) -#define CALL_MultTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[MultTransposeMatrixdARB_remap_index], parameters) -#define GET_MultTransposeMatrixdARB(disp) GET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixdARB_remap_index]) -#define SET_MultTransposeMatrixdARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixdARB_remap_index], fn) -#define CALL_MultTransposeMatrixfARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[MultTransposeMatrixfARB_remap_index], parameters) -#define GET_MultTransposeMatrixfARB(disp) GET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixfARB_remap_index]) -#define SET_MultTransposeMatrixfARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixfARB_remap_index], fn) -#define CALL_SampleCoverageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLboolean)), driDispatchRemapTable[SampleCoverageARB_remap_index], parameters) -#define GET_SampleCoverageARB(disp) GET_by_offset(disp, driDispatchRemapTable[SampleCoverageARB_remap_index]) -#define SET_SampleCoverageARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SampleCoverageARB_remap_index], fn) -#define CALL_CompressedTexImage1DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexImage1DARB_remap_index], parameters) -#define GET_CompressedTexImage1DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexImage1DARB_remap_index]) -#define SET_CompressedTexImage1DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexImage1DARB_remap_index], fn) -#define CALL_CompressedTexImage2DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexImage2DARB_remap_index], parameters) -#define GET_CompressedTexImage2DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexImage2DARB_remap_index]) -#define SET_CompressedTexImage2DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexImage2DARB_remap_index], fn) -#define CALL_CompressedTexImage3DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexImage3DARB_remap_index], parameters) -#define GET_CompressedTexImage3DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexImage3DARB_remap_index]) -#define SET_CompressedTexImage3DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexImage3DARB_remap_index], fn) -#define CALL_CompressedTexSubImage1DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index], parameters) -#define GET_CompressedTexSubImage1DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index]) -#define SET_CompressedTexSubImage1DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index], fn) -#define CALL_CompressedTexSubImage2DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index], parameters) -#define GET_CompressedTexSubImage2DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index]) -#define SET_CompressedTexSubImage2DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index], fn) -#define CALL_CompressedTexSubImage3DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index], parameters) -#define GET_CompressedTexSubImage3DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index]) -#define SET_CompressedTexSubImage3DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index], fn) -#define CALL_GetCompressedTexImageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLvoid *)), driDispatchRemapTable[GetCompressedTexImageARB_remap_index], parameters) -#define GET_GetCompressedTexImageARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetCompressedTexImageARB_remap_index]) -#define SET_GetCompressedTexImageARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCompressedTexImageARB_remap_index], fn) -#define CALL_DisableVertexAttribArrayARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index], parameters) -#define GET_DisableVertexAttribArrayARB(disp) GET_by_offset(disp, driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index]) -#define SET_DisableVertexAttribArrayARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index], fn) -#define CALL_EnableVertexAttribArrayARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index], parameters) -#define GET_EnableVertexAttribArrayARB(disp) GET_by_offset(disp, driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index]) -#define SET_EnableVertexAttribArrayARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index], fn) -#define CALL_GetProgramEnvParameterdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble *)), driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index], parameters) -#define GET_GetProgramEnvParameterdvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index]) -#define SET_GetProgramEnvParameterdvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index], fn) -#define CALL_GetProgramEnvParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat *)), driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index], parameters) -#define GET_GetProgramEnvParameterfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index]) -#define SET_GetProgramEnvParameterfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index], fn) -#define CALL_GetProgramLocalParameterdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble *)), driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index], parameters) -#define GET_GetProgramLocalParameterdvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index]) -#define SET_GetProgramLocalParameterdvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index], fn) -#define CALL_GetProgramLocalParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat *)), driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index], parameters) -#define GET_GetProgramLocalParameterfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index]) -#define SET_GetProgramLocalParameterfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index], fn) -#define CALL_GetProgramStringARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid *)), driDispatchRemapTable[GetProgramStringARB_remap_index], parameters) -#define GET_GetProgramStringARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramStringARB_remap_index]) -#define SET_GetProgramStringARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramStringARB_remap_index], fn) -#define CALL_GetProgramivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetProgramivARB_remap_index], parameters) -#define GET_GetProgramivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramivARB_remap_index]) -#define SET_GetProgramivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramivARB_remap_index], fn) -#define CALL_GetVertexAttribdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLdouble *)), driDispatchRemapTable[GetVertexAttribdvARB_remap_index], parameters) -#define GET_GetVertexAttribdvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvARB_remap_index]) -#define SET_GetVertexAttribdvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvARB_remap_index], fn) -#define CALL_GetVertexAttribfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), driDispatchRemapTable[GetVertexAttribfvARB_remap_index], parameters) -#define GET_GetVertexAttribfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvARB_remap_index]) -#define SET_GetVertexAttribfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvARB_remap_index], fn) -#define CALL_GetVertexAttribivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetVertexAttribivARB_remap_index], parameters) -#define GET_GetVertexAttribivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivARB_remap_index]) -#define SET_GetVertexAttribivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivARB_remap_index], fn) -#define CALL_ProgramEnvParameter4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index], parameters) -#define GET_ProgramEnvParameter4dARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index]) -#define SET_ProgramEnvParameter4dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index], fn) -#define CALL_ProgramEnvParameter4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLdouble *)), driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index], parameters) -#define GET_ProgramEnvParameter4dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index]) -#define SET_ProgramEnvParameter4dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index], fn) -#define CALL_ProgramEnvParameter4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index], parameters) -#define GET_ProgramEnvParameter4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index]) -#define SET_ProgramEnvParameter4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index], fn) -#define CALL_ProgramEnvParameter4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index], parameters) -#define GET_ProgramEnvParameter4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index]) -#define SET_ProgramEnvParameter4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index], fn) -#define CALL_ProgramLocalParameter4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index], parameters) -#define GET_ProgramLocalParameter4dARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index]) -#define SET_ProgramLocalParameter4dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index], fn) -#define CALL_ProgramLocalParameter4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLdouble *)), driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index], parameters) -#define GET_ProgramLocalParameter4dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index]) -#define SET_ProgramLocalParameter4dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index], fn) -#define CALL_ProgramLocalParameter4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index], parameters) -#define GET_ProgramLocalParameter4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index]) -#define SET_ProgramLocalParameter4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index], fn) -#define CALL_ProgramLocalParameter4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index], parameters) -#define GET_ProgramLocalParameter4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index]) -#define SET_ProgramLocalParameter4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index], fn) -#define CALL_ProgramStringARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[ProgramStringARB_remap_index], parameters) -#define GET_ProgramStringARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramStringARB_remap_index]) -#define SET_ProgramStringARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramStringARB_remap_index], fn) -#define CALL_VertexAttrib1dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble)), driDispatchRemapTable[VertexAttrib1dARB_remap_index], parameters) -#define GET_VertexAttrib1dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dARB_remap_index]) -#define SET_VertexAttrib1dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dARB_remap_index], fn) -#define CALL_VertexAttrib1dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib1dvARB_remap_index], parameters) -#define GET_VertexAttrib1dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvARB_remap_index]) -#define SET_VertexAttrib1dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvARB_remap_index], fn) -#define CALL_VertexAttrib1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat)), driDispatchRemapTable[VertexAttrib1fARB_remap_index], parameters) -#define GET_VertexAttrib1fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fARB_remap_index]) -#define SET_VertexAttrib1fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fARB_remap_index], fn) -#define CALL_VertexAttrib1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib1fvARB_remap_index], parameters) -#define GET_VertexAttrib1fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvARB_remap_index]) -#define SET_VertexAttrib1fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvARB_remap_index], fn) -#define CALL_VertexAttrib1sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort)), driDispatchRemapTable[VertexAttrib1sARB_remap_index], parameters) -#define GET_VertexAttrib1sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sARB_remap_index]) -#define SET_VertexAttrib1sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sARB_remap_index], fn) -#define CALL_VertexAttrib1svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib1svARB_remap_index], parameters) -#define GET_VertexAttrib1svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svARB_remap_index]) -#define SET_VertexAttrib1svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svARB_remap_index], fn) -#define CALL_VertexAttrib2dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib2dARB_remap_index], parameters) -#define GET_VertexAttrib2dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dARB_remap_index]) -#define SET_VertexAttrib2dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dARB_remap_index], fn) -#define CALL_VertexAttrib2dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib2dvARB_remap_index], parameters) -#define GET_VertexAttrib2dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvARB_remap_index]) -#define SET_VertexAttrib2dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvARB_remap_index], fn) -#define CALL_VertexAttrib2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib2fARB_remap_index], parameters) -#define GET_VertexAttrib2fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fARB_remap_index]) -#define SET_VertexAttrib2fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fARB_remap_index], fn) -#define CALL_VertexAttrib2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib2fvARB_remap_index], parameters) -#define GET_VertexAttrib2fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvARB_remap_index]) -#define SET_VertexAttrib2fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvARB_remap_index], fn) -#define CALL_VertexAttrib2sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib2sARB_remap_index], parameters) -#define GET_VertexAttrib2sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sARB_remap_index]) -#define SET_VertexAttrib2sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sARB_remap_index], fn) -#define CALL_VertexAttrib2svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib2svARB_remap_index], parameters) -#define GET_VertexAttrib2svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svARB_remap_index]) -#define SET_VertexAttrib2svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svARB_remap_index], fn) -#define CALL_VertexAttrib3dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib3dARB_remap_index], parameters) -#define GET_VertexAttrib3dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dARB_remap_index]) -#define SET_VertexAttrib3dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dARB_remap_index], fn) -#define CALL_VertexAttrib3dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib3dvARB_remap_index], parameters) -#define GET_VertexAttrib3dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvARB_remap_index]) -#define SET_VertexAttrib3dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvARB_remap_index], fn) -#define CALL_VertexAttrib3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib3fARB_remap_index], parameters) -#define GET_VertexAttrib3fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fARB_remap_index]) -#define SET_VertexAttrib3fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fARB_remap_index], fn) -#define CALL_VertexAttrib3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib3fvARB_remap_index], parameters) -#define GET_VertexAttrib3fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvARB_remap_index]) -#define SET_VertexAttrib3fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvARB_remap_index], fn) -#define CALL_VertexAttrib3sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib3sARB_remap_index], parameters) -#define GET_VertexAttrib3sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sARB_remap_index]) -#define SET_VertexAttrib3sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sARB_remap_index], fn) -#define CALL_VertexAttrib3svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib3svARB_remap_index], parameters) -#define GET_VertexAttrib3svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svARB_remap_index]) -#define SET_VertexAttrib3svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svARB_remap_index], fn) -#define CALL_VertexAttrib4NbvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), driDispatchRemapTable[VertexAttrib4NbvARB_remap_index], parameters) -#define GET_VertexAttrib4NbvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NbvARB_remap_index]) -#define SET_VertexAttrib4NbvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NbvARB_remap_index], fn) -#define CALL_VertexAttrib4NivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), driDispatchRemapTable[VertexAttrib4NivARB_remap_index], parameters) -#define GET_VertexAttrib4NivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NivARB_remap_index]) -#define SET_VertexAttrib4NivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NivARB_remap_index], fn) -#define CALL_VertexAttrib4NsvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib4NsvARB_remap_index], parameters) -#define GET_VertexAttrib4NsvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NsvARB_remap_index]) -#define SET_VertexAttrib4NsvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NsvARB_remap_index], fn) -#define CALL_VertexAttrib4NubARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte)), driDispatchRemapTable[VertexAttrib4NubARB_remap_index], parameters) -#define GET_VertexAttrib4NubARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubARB_remap_index]) -#define SET_VertexAttrib4NubARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubARB_remap_index], fn) -#define CALL_VertexAttrib4NubvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), driDispatchRemapTable[VertexAttrib4NubvARB_remap_index], parameters) -#define GET_VertexAttrib4NubvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubvARB_remap_index]) -#define SET_VertexAttrib4NubvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubvARB_remap_index], fn) -#define CALL_VertexAttrib4NuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), driDispatchRemapTable[VertexAttrib4NuivARB_remap_index], parameters) -#define GET_VertexAttrib4NuivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NuivARB_remap_index]) -#define SET_VertexAttrib4NuivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NuivARB_remap_index], fn) -#define CALL_VertexAttrib4NusvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), driDispatchRemapTable[VertexAttrib4NusvARB_remap_index], parameters) -#define GET_VertexAttrib4NusvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NusvARB_remap_index]) -#define SET_VertexAttrib4NusvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NusvARB_remap_index], fn) -#define CALL_VertexAttrib4bvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), driDispatchRemapTable[VertexAttrib4bvARB_remap_index], parameters) -#define GET_VertexAttrib4bvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4bvARB_remap_index]) -#define SET_VertexAttrib4bvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4bvARB_remap_index], fn) -#define CALL_VertexAttrib4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib4dARB_remap_index], parameters) -#define GET_VertexAttrib4dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dARB_remap_index]) -#define SET_VertexAttrib4dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dARB_remap_index], fn) -#define CALL_VertexAttrib4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib4dvARB_remap_index], parameters) -#define GET_VertexAttrib4dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvARB_remap_index]) -#define SET_VertexAttrib4dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvARB_remap_index], fn) -#define CALL_VertexAttrib4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib4fARB_remap_index], parameters) -#define GET_VertexAttrib4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fARB_remap_index]) -#define SET_VertexAttrib4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fARB_remap_index], fn) -#define CALL_VertexAttrib4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib4fvARB_remap_index], parameters) -#define GET_VertexAttrib4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvARB_remap_index]) -#define SET_VertexAttrib4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvARB_remap_index], fn) -#define CALL_VertexAttrib4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), driDispatchRemapTable[VertexAttrib4ivARB_remap_index], parameters) -#define GET_VertexAttrib4ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ivARB_remap_index]) -#define SET_VertexAttrib4ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ivARB_remap_index], fn) -#define CALL_VertexAttrib4sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib4sARB_remap_index], parameters) -#define GET_VertexAttrib4sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sARB_remap_index]) -#define SET_VertexAttrib4sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sARB_remap_index], fn) -#define CALL_VertexAttrib4svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib4svARB_remap_index], parameters) -#define GET_VertexAttrib4svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svARB_remap_index]) -#define SET_VertexAttrib4svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svARB_remap_index], fn) -#define CALL_VertexAttrib4ubvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), driDispatchRemapTable[VertexAttrib4ubvARB_remap_index], parameters) -#define GET_VertexAttrib4ubvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvARB_remap_index]) -#define SET_VertexAttrib4ubvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvARB_remap_index], fn) -#define CALL_VertexAttrib4uivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), driDispatchRemapTable[VertexAttrib4uivARB_remap_index], parameters) -#define GET_VertexAttrib4uivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4uivARB_remap_index]) -#define SET_VertexAttrib4uivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4uivARB_remap_index], fn) -#define CALL_VertexAttrib4usvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), driDispatchRemapTable[VertexAttrib4usvARB_remap_index], parameters) -#define GET_VertexAttrib4usvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4usvARB_remap_index]) -#define SET_VertexAttrib4usvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4usvARB_remap_index], fn) -#define CALL_VertexAttribPointerARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *)), driDispatchRemapTable[VertexAttribPointerARB_remap_index], parameters) -#define GET_VertexAttribPointerARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerARB_remap_index]) -#define SET_VertexAttribPointerARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerARB_remap_index], fn) -#define CALL_BindBufferARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindBufferARB_remap_index], parameters) -#define GET_BindBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferARB_remap_index]) -#define SET_BindBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferARB_remap_index], fn) -#define CALL_BufferDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizeiptrARB, const GLvoid *, GLenum)), driDispatchRemapTable[BufferDataARB_remap_index], parameters) -#define GET_BufferDataARB(disp) GET_by_offset(disp, driDispatchRemapTable[BufferDataARB_remap_index]) -#define SET_BufferDataARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BufferDataARB_remap_index], fn) -#define CALL_BufferSubDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *)), driDispatchRemapTable[BufferSubDataARB_remap_index], parameters) -#define GET_BufferSubDataARB(disp) GET_by_offset(disp, driDispatchRemapTable[BufferSubDataARB_remap_index]) -#define SET_BufferSubDataARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BufferSubDataARB_remap_index], fn) -#define CALL_DeleteBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteBuffersARB_remap_index], parameters) -#define GET_DeleteBuffersARB(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteBuffersARB_remap_index]) -#define SET_DeleteBuffersARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteBuffersARB_remap_index], fn) -#define CALL_GenBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenBuffersARB_remap_index], parameters) -#define GET_GenBuffersARB(disp) GET_by_offset(disp, driDispatchRemapTable[GenBuffersARB_remap_index]) -#define SET_GenBuffersARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenBuffersARB_remap_index], fn) -#define CALL_GetBufferParameterivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetBufferParameterivARB_remap_index], parameters) -#define GET_GetBufferParameterivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetBufferParameterivARB_remap_index]) -#define SET_GetBufferParameterivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBufferParameterivARB_remap_index], fn) -#define CALL_GetBufferPointervARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid **)), driDispatchRemapTable[GetBufferPointervARB_remap_index], parameters) -#define GET_GetBufferPointervARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetBufferPointervARB_remap_index]) -#define SET_GetBufferPointervARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBufferPointervARB_remap_index], fn) -#define CALL_GetBufferSubDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *)), driDispatchRemapTable[GetBufferSubDataARB_remap_index], parameters) -#define GET_GetBufferSubDataARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetBufferSubDataARB_remap_index]) -#define SET_GetBufferSubDataARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBufferSubDataARB_remap_index], fn) -#define CALL_IsBufferARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsBufferARB_remap_index], parameters) -#define GET_IsBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[IsBufferARB_remap_index]) -#define SET_IsBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsBufferARB_remap_index], fn) -#define CALL_MapBufferARB(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLenum)), driDispatchRemapTable[MapBufferARB_remap_index], parameters) -#define GET_MapBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[MapBufferARB_remap_index]) -#define SET_MapBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MapBufferARB_remap_index], fn) -#define CALL_UnmapBufferARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[UnmapBufferARB_remap_index], parameters) -#define GET_UnmapBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[UnmapBufferARB_remap_index]) -#define SET_UnmapBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UnmapBufferARB_remap_index], fn) -#define CALL_BeginQueryARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BeginQueryARB_remap_index], parameters) -#define GET_BeginQueryARB(disp) GET_by_offset(disp, driDispatchRemapTable[BeginQueryARB_remap_index]) -#define SET_BeginQueryARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginQueryARB_remap_index], fn) -#define CALL_DeleteQueriesARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteQueriesARB_remap_index], parameters) -#define GET_DeleteQueriesARB(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteQueriesARB_remap_index]) -#define SET_DeleteQueriesARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteQueriesARB_remap_index], fn) -#define CALL_EndQueryARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[EndQueryARB_remap_index], parameters) -#define GET_EndQueryARB(disp) GET_by_offset(disp, driDispatchRemapTable[EndQueryARB_remap_index]) -#define SET_EndQueryARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndQueryARB_remap_index], fn) -#define CALL_GenQueriesARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenQueriesARB_remap_index], parameters) -#define GET_GenQueriesARB(disp) GET_by_offset(disp, driDispatchRemapTable[GenQueriesARB_remap_index]) -#define SET_GenQueriesARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenQueriesARB_remap_index], fn) -#define CALL_GetQueryObjectivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetQueryObjectivARB_remap_index], parameters) -#define GET_GetQueryObjectivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjectivARB_remap_index]) -#define SET_GetQueryObjectivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjectivARB_remap_index], fn) -#define CALL_GetQueryObjectuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint *)), driDispatchRemapTable[GetQueryObjectuivARB_remap_index], parameters) -#define GET_GetQueryObjectuivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjectuivARB_remap_index]) -#define SET_GetQueryObjectuivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjectuivARB_remap_index], fn) -#define CALL_GetQueryivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetQueryivARB_remap_index], parameters) -#define GET_GetQueryivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryivARB_remap_index]) -#define SET_GetQueryivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryivARB_remap_index], fn) -#define CALL_IsQueryARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsQueryARB_remap_index], parameters) -#define GET_IsQueryARB(disp) GET_by_offset(disp, driDispatchRemapTable[IsQueryARB_remap_index]) -#define SET_IsQueryARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsQueryARB_remap_index], fn) -#define CALL_AttachObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLhandleARB)), driDispatchRemapTable[AttachObjectARB_remap_index], parameters) -#define GET_AttachObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[AttachObjectARB_remap_index]) -#define SET_AttachObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AttachObjectARB_remap_index], fn) -#define CALL_CompileShaderARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[CompileShaderARB_remap_index], parameters) -#define GET_CompileShaderARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompileShaderARB_remap_index]) -#define SET_CompileShaderARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompileShaderARB_remap_index], fn) -#define CALL_CreateProgramObjectARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(void)), driDispatchRemapTable[CreateProgramObjectARB_remap_index], parameters) -#define GET_CreateProgramObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[CreateProgramObjectARB_remap_index]) -#define SET_CreateProgramObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateProgramObjectARB_remap_index], fn) -#define CALL_CreateShaderObjectARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[CreateShaderObjectARB_remap_index], parameters) -#define GET_CreateShaderObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[CreateShaderObjectARB_remap_index]) -#define SET_CreateShaderObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateShaderObjectARB_remap_index], fn) -#define CALL_DeleteObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[DeleteObjectARB_remap_index], parameters) -#define GET_DeleteObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteObjectARB_remap_index]) -#define SET_DeleteObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteObjectARB_remap_index], fn) -#define CALL_DetachObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLhandleARB)), driDispatchRemapTable[DetachObjectARB_remap_index], parameters) -#define GET_DetachObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[DetachObjectARB_remap_index]) -#define SET_DetachObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DetachObjectARB_remap_index], fn) -#define CALL_GetActiveUniformARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)), driDispatchRemapTable[GetActiveUniformARB_remap_index], parameters) -#define GET_GetActiveUniformARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetActiveUniformARB_remap_index]) -#define SET_GetActiveUniformARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetActiveUniformARB_remap_index], fn) -#define CALL_GetAttachedObjectsARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *)), driDispatchRemapTable[GetAttachedObjectsARB_remap_index], parameters) -#define GET_GetAttachedObjectsARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetAttachedObjectsARB_remap_index]) -#define SET_GetAttachedObjectsARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetAttachedObjectsARB_remap_index], fn) -#define CALL_GetHandleARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[GetHandleARB_remap_index], parameters) -#define GET_GetHandleARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetHandleARB_remap_index]) -#define SET_GetHandleARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetHandleARB_remap_index], fn) -#define CALL_GetInfoLogARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)), driDispatchRemapTable[GetInfoLogARB_remap_index], parameters) -#define GET_GetInfoLogARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetInfoLogARB_remap_index]) -#define SET_GetInfoLogARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetInfoLogARB_remap_index], fn) -#define CALL_GetObjectParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLenum, GLfloat *)), driDispatchRemapTable[GetObjectParameterfvARB_remap_index], parameters) -#define GET_GetObjectParameterfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetObjectParameterfvARB_remap_index]) -#define SET_GetObjectParameterfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetObjectParameterfvARB_remap_index], fn) -#define CALL_GetObjectParameterivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLenum, GLint *)), driDispatchRemapTable[GetObjectParameterivARB_remap_index], parameters) -#define GET_GetObjectParameterivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivARB_remap_index]) -#define SET_GetObjectParameterivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivARB_remap_index], fn) -#define CALL_GetShaderSourceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)), driDispatchRemapTable[GetShaderSourceARB_remap_index], parameters) -#define GET_GetShaderSourceARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetShaderSourceARB_remap_index]) -#define SET_GetShaderSourceARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetShaderSourceARB_remap_index], fn) -#define CALL_GetUniformLocationARB(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLhandleARB, const GLcharARB *)), driDispatchRemapTable[GetUniformLocationARB_remap_index], parameters) -#define GET_GetUniformLocationARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetUniformLocationARB_remap_index]) -#define SET_GetUniformLocationARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetUniformLocationARB_remap_index], fn) -#define CALL_GetUniformfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLfloat *)), driDispatchRemapTable[GetUniformfvARB_remap_index], parameters) -#define GET_GetUniformfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetUniformfvARB_remap_index]) -#define SET_GetUniformfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetUniformfvARB_remap_index], fn) -#define CALL_GetUniformivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLint *)), driDispatchRemapTable[GetUniformivARB_remap_index], parameters) -#define GET_GetUniformivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetUniformivARB_remap_index]) -#define SET_GetUniformivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetUniformivARB_remap_index], fn) -#define CALL_LinkProgramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[LinkProgramARB_remap_index], parameters) -#define GET_LinkProgramARB(disp) GET_by_offset(disp, driDispatchRemapTable[LinkProgramARB_remap_index]) -#define SET_LinkProgramARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LinkProgramARB_remap_index], fn) -#define CALL_ShaderSourceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, const GLcharARB **, const GLint *)), driDispatchRemapTable[ShaderSourceARB_remap_index], parameters) -#define GET_ShaderSourceARB(disp) GET_by_offset(disp, driDispatchRemapTable[ShaderSourceARB_remap_index]) -#define SET_ShaderSourceARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ShaderSourceARB_remap_index], fn) -#define CALL_Uniform1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat)), driDispatchRemapTable[Uniform1fARB_remap_index], parameters) -#define GET_Uniform1fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1fARB_remap_index]) -#define SET_Uniform1fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1fARB_remap_index], fn) -#define CALL_Uniform1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform1fvARB_remap_index], parameters) -#define GET_Uniform1fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1fvARB_remap_index]) -#define SET_Uniform1fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1fvARB_remap_index], fn) -#define CALL_Uniform1iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), driDispatchRemapTable[Uniform1iARB_remap_index], parameters) -#define GET_Uniform1iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1iARB_remap_index]) -#define SET_Uniform1iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1iARB_remap_index], fn) -#define CALL_Uniform1ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform1ivARB_remap_index], parameters) -#define GET_Uniform1ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1ivARB_remap_index]) -#define SET_Uniform1ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1ivARB_remap_index], fn) -#define CALL_Uniform2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat)), driDispatchRemapTable[Uniform2fARB_remap_index], parameters) -#define GET_Uniform2fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2fARB_remap_index]) -#define SET_Uniform2fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2fARB_remap_index], fn) -#define CALL_Uniform2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform2fvARB_remap_index], parameters) -#define GET_Uniform2fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2fvARB_remap_index]) -#define SET_Uniform2fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2fvARB_remap_index], fn) -#define CALL_Uniform2iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), driDispatchRemapTable[Uniform2iARB_remap_index], parameters) -#define GET_Uniform2iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2iARB_remap_index]) -#define SET_Uniform2iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2iARB_remap_index], fn) -#define CALL_Uniform2ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform2ivARB_remap_index], parameters) -#define GET_Uniform2ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2ivARB_remap_index]) -#define SET_Uniform2ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2ivARB_remap_index], fn) -#define CALL_Uniform3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[Uniform3fARB_remap_index], parameters) -#define GET_Uniform3fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3fARB_remap_index]) -#define SET_Uniform3fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3fARB_remap_index], fn) -#define CALL_Uniform3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform3fvARB_remap_index], parameters) -#define GET_Uniform3fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3fvARB_remap_index]) -#define SET_Uniform3fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3fvARB_remap_index], fn) -#define CALL_Uniform3iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), driDispatchRemapTable[Uniform3iARB_remap_index], parameters) -#define GET_Uniform3iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3iARB_remap_index]) -#define SET_Uniform3iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3iARB_remap_index], fn) -#define CALL_Uniform3ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform3ivARB_remap_index], parameters) -#define GET_Uniform3ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3ivARB_remap_index]) -#define SET_Uniform3ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3ivARB_remap_index], fn) -#define CALL_Uniform4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[Uniform4fARB_remap_index], parameters) -#define GET_Uniform4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4fARB_remap_index]) -#define SET_Uniform4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4fARB_remap_index], fn) -#define CALL_Uniform4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform4fvARB_remap_index], parameters) -#define GET_Uniform4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4fvARB_remap_index]) -#define SET_Uniform4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4fvARB_remap_index], fn) -#define CALL_Uniform4iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint)), driDispatchRemapTable[Uniform4iARB_remap_index], parameters) -#define GET_Uniform4iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4iARB_remap_index]) -#define SET_Uniform4iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4iARB_remap_index], fn) -#define CALL_Uniform4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform4ivARB_remap_index], parameters) -#define GET_Uniform4ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4ivARB_remap_index]) -#define SET_Uniform4ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4ivARB_remap_index], fn) -#define CALL_UniformMatrix2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix2fvARB_remap_index], parameters) -#define GET_UniformMatrix2fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix2fvARB_remap_index]) -#define SET_UniformMatrix2fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix2fvARB_remap_index], fn) -#define CALL_UniformMatrix3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix3fvARB_remap_index], parameters) -#define GET_UniformMatrix3fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix3fvARB_remap_index]) -#define SET_UniformMatrix3fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix3fvARB_remap_index], fn) -#define CALL_UniformMatrix4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix4fvARB_remap_index], parameters) -#define GET_UniformMatrix4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix4fvARB_remap_index]) -#define SET_UniformMatrix4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix4fvARB_remap_index], fn) -#define CALL_UseProgramObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[UseProgramObjectARB_remap_index], parameters) -#define GET_UseProgramObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[UseProgramObjectARB_remap_index]) -#define SET_UseProgramObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UseProgramObjectARB_remap_index], fn) -#define CALL_ValidateProgramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[ValidateProgramARB_remap_index], parameters) -#define GET_ValidateProgramARB(disp) GET_by_offset(disp, driDispatchRemapTable[ValidateProgramARB_remap_index]) -#define SET_ValidateProgramARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ValidateProgramARB_remap_index], fn) -#define CALL_BindAttribLocationARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, const GLcharARB *)), driDispatchRemapTable[BindAttribLocationARB_remap_index], parameters) -#define GET_BindAttribLocationARB(disp) GET_by_offset(disp, driDispatchRemapTable[BindAttribLocationARB_remap_index]) -#define SET_BindAttribLocationARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindAttribLocationARB_remap_index], fn) -#define CALL_GetActiveAttribARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)), driDispatchRemapTable[GetActiveAttribARB_remap_index], parameters) -#define GET_GetActiveAttribARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetActiveAttribARB_remap_index]) -#define SET_GetActiveAttribARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetActiveAttribARB_remap_index], fn) -#define CALL_GetAttribLocationARB(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLhandleARB, const GLcharARB *)), driDispatchRemapTable[GetAttribLocationARB_remap_index], parameters) -#define GET_GetAttribLocationARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetAttribLocationARB_remap_index]) -#define SET_GetAttribLocationARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetAttribLocationARB_remap_index], fn) -#define CALL_DrawBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLenum *)), driDispatchRemapTable[DrawBuffersARB_remap_index], parameters) -#define GET_DrawBuffersARB(disp) GET_by_offset(disp, driDispatchRemapTable[DrawBuffersARB_remap_index]) -#define SET_DrawBuffersARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawBuffersARB_remap_index], fn) -#define CALL_RenderbufferStorageMultisample(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)), driDispatchRemapTable[RenderbufferStorageMultisample_remap_index], parameters) -#define GET_RenderbufferStorageMultisample(disp) GET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageMultisample_remap_index]) -#define SET_RenderbufferStorageMultisample(disp, fn) SET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageMultisample_remap_index], fn) -#define CALL_FramebufferTextureARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint)), driDispatchRemapTable[FramebufferTextureARB_remap_index], parameters) -#define GET_FramebufferTextureARB(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTextureARB_remap_index]) -#define SET_FramebufferTextureARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTextureARB_remap_index], fn) -#define CALL_FramebufferTextureFaceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLenum)), driDispatchRemapTable[FramebufferTextureFaceARB_remap_index], parameters) -#define GET_FramebufferTextureFaceARB(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTextureFaceARB_remap_index]) -#define SET_FramebufferTextureFaceARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTextureFaceARB_remap_index], fn) -#define CALL_ProgramParameteriARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint)), driDispatchRemapTable[ProgramParameteriARB_remap_index], parameters) -#define GET_ProgramParameteriARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramParameteriARB_remap_index]) -#define SET_ProgramParameteriARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramParameteriARB_remap_index], fn) -#define CALL_FlushMappedBufferRange(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr)), driDispatchRemapTable[FlushMappedBufferRange_remap_index], parameters) -#define GET_FlushMappedBufferRange(disp) GET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRange_remap_index]) -#define SET_FlushMappedBufferRange(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRange_remap_index], fn) -#define CALL_MapBufferRange(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr, GLbitfield)), driDispatchRemapTable[MapBufferRange_remap_index], parameters) -#define GET_MapBufferRange(disp) GET_by_offset(disp, driDispatchRemapTable[MapBufferRange_remap_index]) -#define SET_MapBufferRange(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MapBufferRange_remap_index], fn) -#define CALL_BindVertexArray(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[BindVertexArray_remap_index], parameters) -#define GET_BindVertexArray(disp) GET_by_offset(disp, driDispatchRemapTable[BindVertexArray_remap_index]) -#define SET_BindVertexArray(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindVertexArray_remap_index], fn) -#define CALL_GenVertexArrays(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenVertexArrays_remap_index], parameters) -#define GET_GenVertexArrays(disp) GET_by_offset(disp, driDispatchRemapTable[GenVertexArrays_remap_index]) -#define SET_GenVertexArrays(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenVertexArrays_remap_index], fn) -#define CALL_CopyBufferSubData(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr)), driDispatchRemapTable[CopyBufferSubData_remap_index], parameters) -#define GET_CopyBufferSubData(disp) GET_by_offset(disp, driDispatchRemapTable[CopyBufferSubData_remap_index]) -#define SET_CopyBufferSubData(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CopyBufferSubData_remap_index], fn) -#define CALL_ClientWaitSync(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLsync, GLbitfield, GLuint64)), driDispatchRemapTable[ClientWaitSync_remap_index], parameters) -#define GET_ClientWaitSync(disp) GET_by_offset(disp, driDispatchRemapTable[ClientWaitSync_remap_index]) -#define SET_ClientWaitSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ClientWaitSync_remap_index], fn) -#define CALL_DeleteSync(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync)), driDispatchRemapTable[DeleteSync_remap_index], parameters) -#define GET_DeleteSync(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteSync_remap_index]) -#define SET_DeleteSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteSync_remap_index], fn) -#define CALL_FenceSync(disp, parameters) CALL_by_offset(disp, (GLsync (GLAPIENTRYP)(GLenum, GLbitfield)), driDispatchRemapTable[FenceSync_remap_index], parameters) -#define GET_FenceSync(disp) GET_by_offset(disp, driDispatchRemapTable[FenceSync_remap_index]) -#define SET_FenceSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FenceSync_remap_index], fn) -#define CALL_GetInteger64v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint64 *)), driDispatchRemapTable[GetInteger64v_remap_index], parameters) -#define GET_GetInteger64v(disp) GET_by_offset(disp, driDispatchRemapTable[GetInteger64v_remap_index]) -#define SET_GetInteger64v(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetInteger64v_remap_index], fn) -#define CALL_GetSynciv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync, GLenum, GLsizei, GLsizei *, GLint *)), driDispatchRemapTable[GetSynciv_remap_index], parameters) -#define GET_GetSynciv(disp) GET_by_offset(disp, driDispatchRemapTable[GetSynciv_remap_index]) -#define SET_GetSynciv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetSynciv_remap_index], fn) -#define CALL_IsSync(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsync)), driDispatchRemapTable[IsSync_remap_index], parameters) -#define GET_IsSync(disp) GET_by_offset(disp, driDispatchRemapTable[IsSync_remap_index]) -#define SET_IsSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsSync_remap_index], fn) -#define CALL_WaitSync(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync, GLbitfield, GLuint64)), driDispatchRemapTable[WaitSync_remap_index], parameters) -#define GET_WaitSync(disp) GET_by_offset(disp, driDispatchRemapTable[WaitSync_remap_index]) -#define SET_WaitSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WaitSync_remap_index], fn) -#define CALL_DrawElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLint)), driDispatchRemapTable[DrawElementsBaseVertex_remap_index], parameters) -#define GET_DrawElementsBaseVertex(disp) GET_by_offset(disp, driDispatchRemapTable[DrawElementsBaseVertex_remap_index]) -#define SET_DrawElementsBaseVertex(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawElementsBaseVertex_remap_index], fn) -#define CALL_DrawRangeElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *, GLint)), driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index], parameters) -#define GET_DrawRangeElementsBaseVertex(disp) GET_by_offset(disp, driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index]) -#define SET_DrawRangeElementsBaseVertex(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index], fn) -#define CALL_MultiDrawElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei, const GLint *)), driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index], parameters) -#define GET_MultiDrawElementsBaseVertex(disp) GET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index]) -#define SET_MultiDrawElementsBaseVertex(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index], fn) -#define CALL_BindTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindTransformFeedback_remap_index], parameters) -#define GET_BindTransformFeedback(disp) GET_by_offset(disp, driDispatchRemapTable[BindTransformFeedback_remap_index]) -#define SET_BindTransformFeedback(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindTransformFeedback_remap_index], fn) -#define CALL_DeleteTransformFeedbacks(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteTransformFeedbacks_remap_index], parameters) -#define GET_DeleteTransformFeedbacks(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteTransformFeedbacks_remap_index]) -#define SET_DeleteTransformFeedbacks(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteTransformFeedbacks_remap_index], fn) -#define CALL_DrawTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[DrawTransformFeedback_remap_index], parameters) -#define GET_DrawTransformFeedback(disp) GET_by_offset(disp, driDispatchRemapTable[DrawTransformFeedback_remap_index]) -#define SET_DrawTransformFeedback(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawTransformFeedback_remap_index], fn) -#define CALL_GenTransformFeedbacks(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenTransformFeedbacks_remap_index], parameters) -#define GET_GenTransformFeedbacks(disp) GET_by_offset(disp, driDispatchRemapTable[GenTransformFeedbacks_remap_index]) -#define SET_GenTransformFeedbacks(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenTransformFeedbacks_remap_index], fn) -#define CALL_IsTransformFeedback(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsTransformFeedback_remap_index], parameters) -#define GET_IsTransformFeedback(disp) GET_by_offset(disp, driDispatchRemapTable[IsTransformFeedback_remap_index]) -#define SET_IsTransformFeedback(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsTransformFeedback_remap_index], fn) -#define CALL_PauseTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[PauseTransformFeedback_remap_index], parameters) -#define GET_PauseTransformFeedback(disp) GET_by_offset(disp, driDispatchRemapTable[PauseTransformFeedback_remap_index]) -#define SET_PauseTransformFeedback(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PauseTransformFeedback_remap_index], fn) -#define CALL_ResumeTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[ResumeTransformFeedback_remap_index], parameters) -#define GET_ResumeTransformFeedback(disp) GET_by_offset(disp, driDispatchRemapTable[ResumeTransformFeedback_remap_index]) -#define SET_ResumeTransformFeedback(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ResumeTransformFeedback_remap_index], fn) -#define CALL_PolygonOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), driDispatchRemapTable[PolygonOffsetEXT_remap_index], parameters) -#define GET_PolygonOffsetEXT(disp) GET_by_offset(disp, driDispatchRemapTable[PolygonOffsetEXT_remap_index]) -#define SET_PolygonOffsetEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PolygonOffsetEXT_remap_index], fn) -#define CALL_GetPixelTexGenParameterfvSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index], parameters) -#define GET_GetPixelTexGenParameterfvSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index]) -#define SET_GetPixelTexGenParameterfvSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index], fn) -#define CALL_GetPixelTexGenParameterivSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index], parameters) -#define GET_GetPixelTexGenParameterivSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index]) -#define SET_GetPixelTexGenParameterivSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index], fn) -#define CALL_PixelTexGenParameterfSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index], parameters) -#define GET_PixelTexGenParameterfSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index]) -#define SET_PixelTexGenParameterfSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index], fn) -#define CALL_PixelTexGenParameterfvSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index], parameters) -#define GET_PixelTexGenParameterfvSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index]) -#define SET_PixelTexGenParameterfvSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index], fn) -#define CALL_PixelTexGenParameteriSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index], parameters) -#define GET_PixelTexGenParameteriSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index]) -#define SET_PixelTexGenParameteriSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index], fn) -#define CALL_PixelTexGenParameterivSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index], parameters) -#define GET_PixelTexGenParameterivSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index]) -#define SET_PixelTexGenParameterivSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index], fn) -#define CALL_SampleMaskSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLboolean)), driDispatchRemapTable[SampleMaskSGIS_remap_index], parameters) -#define GET_SampleMaskSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[SampleMaskSGIS_remap_index]) -#define SET_SampleMaskSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SampleMaskSGIS_remap_index], fn) -#define CALL_SamplePatternSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[SamplePatternSGIS_remap_index], parameters) -#define GET_SamplePatternSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[SamplePatternSGIS_remap_index]) -#define SET_SamplePatternSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SamplePatternSGIS_remap_index], fn) -#define CALL_ColorPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[ColorPointerEXT_remap_index], parameters) -#define GET_ColorPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ColorPointerEXT_remap_index]) -#define SET_ColorPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorPointerEXT_remap_index], fn) -#define CALL_EdgeFlagPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLsizei, const GLboolean *)), driDispatchRemapTable[EdgeFlagPointerEXT_remap_index], parameters) -#define GET_EdgeFlagPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[EdgeFlagPointerEXT_remap_index]) -#define SET_EdgeFlagPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EdgeFlagPointerEXT_remap_index], fn) -#define CALL_IndexPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[IndexPointerEXT_remap_index], parameters) -#define GET_IndexPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IndexPointerEXT_remap_index]) -#define SET_IndexPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IndexPointerEXT_remap_index], fn) -#define CALL_NormalPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[NormalPointerEXT_remap_index], parameters) -#define GET_NormalPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[NormalPointerEXT_remap_index]) -#define SET_NormalPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[NormalPointerEXT_remap_index], fn) -#define CALL_TexCoordPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[TexCoordPointerEXT_remap_index], parameters) -#define GET_TexCoordPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[TexCoordPointerEXT_remap_index]) -#define SET_TexCoordPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TexCoordPointerEXT_remap_index], fn) -#define CALL_VertexPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[VertexPointerEXT_remap_index], parameters) -#define GET_VertexPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[VertexPointerEXT_remap_index]) -#define SET_VertexPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexPointerEXT_remap_index], fn) -#define CALL_PointParameterfEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), driDispatchRemapTable[PointParameterfEXT_remap_index], parameters) -#define GET_PointParameterfEXT(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameterfEXT_remap_index]) -#define SET_PointParameterfEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameterfEXT_remap_index], fn) -#define CALL_PointParameterfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[PointParameterfvEXT_remap_index], parameters) -#define GET_PointParameterfvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameterfvEXT_remap_index]) -#define SET_PointParameterfvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameterfvEXT_remap_index], fn) -#define CALL_LockArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei)), driDispatchRemapTable[LockArraysEXT_remap_index], parameters) -#define GET_LockArraysEXT(disp) GET_by_offset(disp, driDispatchRemapTable[LockArraysEXT_remap_index]) -#define SET_LockArraysEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LockArraysEXT_remap_index], fn) -#define CALL_UnlockArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[UnlockArraysEXT_remap_index], parameters) -#define GET_UnlockArraysEXT(disp) GET_by_offset(disp, driDispatchRemapTable[UnlockArraysEXT_remap_index]) -#define SET_UnlockArraysEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UnlockArraysEXT_remap_index], fn) -#define CALL_SecondaryColor3bEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte)), driDispatchRemapTable[SecondaryColor3bEXT_remap_index], parameters) -#define GET_SecondaryColor3bEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bEXT_remap_index]) -#define SET_SecondaryColor3bEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bEXT_remap_index], fn) -#define CALL_SecondaryColor3bvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), driDispatchRemapTable[SecondaryColor3bvEXT_remap_index], parameters) -#define GET_SecondaryColor3bvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bvEXT_remap_index]) -#define SET_SecondaryColor3bvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bvEXT_remap_index], fn) -#define CALL_SecondaryColor3dEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[SecondaryColor3dEXT_remap_index], parameters) -#define GET_SecondaryColor3dEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dEXT_remap_index]) -#define SET_SecondaryColor3dEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dEXT_remap_index], fn) -#define CALL_SecondaryColor3dvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[SecondaryColor3dvEXT_remap_index], parameters) -#define GET_SecondaryColor3dvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dvEXT_remap_index]) -#define SET_SecondaryColor3dvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dvEXT_remap_index], fn) -#define CALL_SecondaryColor3fEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[SecondaryColor3fEXT_remap_index], parameters) -#define GET_SecondaryColor3fEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fEXT_remap_index]) -#define SET_SecondaryColor3fEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fEXT_remap_index], fn) -#define CALL_SecondaryColor3fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[SecondaryColor3fvEXT_remap_index], parameters) -#define GET_SecondaryColor3fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fvEXT_remap_index]) -#define SET_SecondaryColor3fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fvEXT_remap_index], fn) -#define CALL_SecondaryColor3iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), driDispatchRemapTable[SecondaryColor3iEXT_remap_index], parameters) -#define GET_SecondaryColor3iEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3iEXT_remap_index]) -#define SET_SecondaryColor3iEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3iEXT_remap_index], fn) -#define CALL_SecondaryColor3ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[SecondaryColor3ivEXT_remap_index], parameters) -#define GET_SecondaryColor3ivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ivEXT_remap_index]) -#define SET_SecondaryColor3ivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ivEXT_remap_index], fn) -#define CALL_SecondaryColor3sEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), driDispatchRemapTable[SecondaryColor3sEXT_remap_index], parameters) -#define GET_SecondaryColor3sEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3sEXT_remap_index]) -#define SET_SecondaryColor3sEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3sEXT_remap_index], fn) -#define CALL_SecondaryColor3svEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[SecondaryColor3svEXT_remap_index], parameters) -#define GET_SecondaryColor3svEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3svEXT_remap_index]) -#define SET_SecondaryColor3svEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3svEXT_remap_index], fn) -#define CALL_SecondaryColor3ubEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte, GLubyte, GLubyte)), driDispatchRemapTable[SecondaryColor3ubEXT_remap_index], parameters) -#define GET_SecondaryColor3ubEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubEXT_remap_index]) -#define SET_SecondaryColor3ubEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubEXT_remap_index], fn) -#define CALL_SecondaryColor3ubvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index], parameters) -#define GET_SecondaryColor3ubvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index]) -#define SET_SecondaryColor3ubvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index], fn) -#define CALL_SecondaryColor3uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint)), driDispatchRemapTable[SecondaryColor3uiEXT_remap_index], parameters) -#define GET_SecondaryColor3uiEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uiEXT_remap_index]) -#define SET_SecondaryColor3uiEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uiEXT_remap_index], fn) -#define CALL_SecondaryColor3uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLuint *)), driDispatchRemapTable[SecondaryColor3uivEXT_remap_index], parameters) -#define GET_SecondaryColor3uivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uivEXT_remap_index]) -#define SET_SecondaryColor3uivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uivEXT_remap_index], fn) -#define CALL_SecondaryColor3usEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLushort, GLushort, GLushort)), driDispatchRemapTable[SecondaryColor3usEXT_remap_index], parameters) -#define GET_SecondaryColor3usEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usEXT_remap_index]) -#define SET_SecondaryColor3usEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usEXT_remap_index], fn) -#define CALL_SecondaryColor3usvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLushort *)), driDispatchRemapTable[SecondaryColor3usvEXT_remap_index], parameters) -#define GET_SecondaryColor3usvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usvEXT_remap_index]) -#define SET_SecondaryColor3usvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usvEXT_remap_index], fn) -#define CALL_SecondaryColorPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[SecondaryColorPointerEXT_remap_index], parameters) -#define GET_SecondaryColorPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColorPointerEXT_remap_index]) -#define SET_SecondaryColorPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColorPointerEXT_remap_index], fn) -#define CALL_MultiDrawArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *, const GLsizei *, GLsizei)), driDispatchRemapTable[MultiDrawArraysEXT_remap_index], parameters) -#define GET_MultiDrawArraysEXT(disp) GET_by_offset(disp, driDispatchRemapTable[MultiDrawArraysEXT_remap_index]) -#define SET_MultiDrawArraysEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiDrawArraysEXT_remap_index], fn) -#define CALL_MultiDrawElementsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei)), driDispatchRemapTable[MultiDrawElementsEXT_remap_index], parameters) -#define GET_MultiDrawElementsEXT(disp) GET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsEXT_remap_index]) -#define SET_MultiDrawElementsEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsEXT_remap_index], fn) -#define CALL_FogCoordPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[FogCoordPointerEXT_remap_index], parameters) -#define GET_FogCoordPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoordPointerEXT_remap_index]) -#define SET_FogCoordPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoordPointerEXT_remap_index], fn) -#define CALL_FogCoorddEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), driDispatchRemapTable[FogCoorddEXT_remap_index], parameters) -#define GET_FogCoorddEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoorddEXT_remap_index]) -#define SET_FogCoorddEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoorddEXT_remap_index], fn) -#define CALL_FogCoorddvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[FogCoorddvEXT_remap_index], parameters) -#define GET_FogCoorddvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoorddvEXT_remap_index]) -#define SET_FogCoorddvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoorddvEXT_remap_index], fn) -#define CALL_FogCoordfEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), driDispatchRemapTable[FogCoordfEXT_remap_index], parameters) -#define GET_FogCoordfEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoordfEXT_remap_index]) -#define SET_FogCoordfEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoordfEXT_remap_index], fn) -#define CALL_FogCoordfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[FogCoordfvEXT_remap_index], parameters) -#define GET_FogCoordfvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoordfvEXT_remap_index]) -#define SET_FogCoordfvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoordfvEXT_remap_index], fn) -#define CALL_PixelTexGenSGIX(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[PixelTexGenSGIX_remap_index], parameters) -#define GET_PixelTexGenSGIX(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenSGIX_remap_index]) -#define SET_PixelTexGenSGIX(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenSGIX_remap_index], fn) -#define CALL_BlendFuncSeparateEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[BlendFuncSeparateEXT_remap_index], parameters) -#define GET_BlendFuncSeparateEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlendFuncSeparateEXT_remap_index]) -#define SET_BlendFuncSeparateEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlendFuncSeparateEXT_remap_index], fn) -#define CALL_FlushVertexArrayRangeNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index], parameters) -#define GET_FlushVertexArrayRangeNV(disp) GET_by_offset(disp, driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index]) -#define SET_FlushVertexArrayRangeNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index], fn) -#define CALL_VertexArrayRangeNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLvoid *)), driDispatchRemapTable[VertexArrayRangeNV_remap_index], parameters) -#define GET_VertexArrayRangeNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexArrayRangeNV_remap_index]) -#define SET_VertexArrayRangeNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexArrayRangeNV_remap_index], fn) -#define CALL_CombinerInputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[CombinerInputNV_remap_index], parameters) -#define GET_CombinerInputNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerInputNV_remap_index]) -#define SET_CombinerInputNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerInputNV_remap_index], fn) -#define CALL_CombinerOutputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean)), driDispatchRemapTable[CombinerOutputNV_remap_index], parameters) -#define GET_CombinerOutputNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerOutputNV_remap_index]) -#define SET_CombinerOutputNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerOutputNV_remap_index], fn) -#define CALL_CombinerParameterfNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), driDispatchRemapTable[CombinerParameterfNV_remap_index], parameters) -#define GET_CombinerParameterfNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameterfNV_remap_index]) -#define SET_CombinerParameterfNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameterfNV_remap_index], fn) -#define CALL_CombinerParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[CombinerParameterfvNV_remap_index], parameters) -#define GET_CombinerParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameterfvNV_remap_index]) -#define SET_CombinerParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameterfvNV_remap_index], fn) -#define CALL_CombinerParameteriNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), driDispatchRemapTable[CombinerParameteriNV_remap_index], parameters) -#define GET_CombinerParameteriNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameteriNV_remap_index]) -#define SET_CombinerParameteriNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameteriNV_remap_index], fn) -#define CALL_CombinerParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[CombinerParameterivNV_remap_index], parameters) -#define GET_CombinerParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameterivNV_remap_index]) -#define SET_CombinerParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameterivNV_remap_index], fn) -#define CALL_FinalCombinerInputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[FinalCombinerInputNV_remap_index], parameters) -#define GET_FinalCombinerInputNV(disp) GET_by_offset(disp, driDispatchRemapTable[FinalCombinerInputNV_remap_index]) -#define SET_FinalCombinerInputNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FinalCombinerInputNV_remap_index], fn) -#define CALL_GetCombinerInputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLfloat *)), driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index], parameters) -#define GET_GetCombinerInputParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index]) -#define SET_GetCombinerInputParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index], fn) -#define CALL_GetCombinerInputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLint *)), driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index], parameters) -#define GET_GetCombinerInputParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index]) -#define SET_GetCombinerInputParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index], fn) -#define CALL_GetCombinerOutputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLfloat *)), driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index], parameters) -#define GET_GetCombinerOutputParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index]) -#define SET_GetCombinerOutputParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index], fn) -#define CALL_GetCombinerOutputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLint *)), driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index], parameters) -#define GET_GetCombinerOutputParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index]) -#define SET_GetCombinerOutputParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index], fn) -#define CALL_GetFinalCombinerInputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index], parameters) -#define GET_GetFinalCombinerInputParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index]) -#define SET_GetFinalCombinerInputParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index], fn) -#define CALL_GetFinalCombinerInputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index], parameters) -#define GET_GetFinalCombinerInputParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index]) -#define SET_GetFinalCombinerInputParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index], fn) -#define CALL_ResizeBuffersMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[ResizeBuffersMESA_remap_index], parameters) -#define GET_ResizeBuffersMESA(disp) GET_by_offset(disp, driDispatchRemapTable[ResizeBuffersMESA_remap_index]) -#define SET_ResizeBuffersMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ResizeBuffersMESA_remap_index], fn) -#define CALL_WindowPos2dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), driDispatchRemapTable[WindowPos2dMESA_remap_index], parameters) -#define GET_WindowPos2dMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2dMESA_remap_index]) -#define SET_WindowPos2dMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2dMESA_remap_index], fn) -#define CALL_WindowPos2dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[WindowPos2dvMESA_remap_index], parameters) -#define GET_WindowPos2dvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2dvMESA_remap_index]) -#define SET_WindowPos2dvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2dvMESA_remap_index], fn) -#define CALL_WindowPos2fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), driDispatchRemapTable[WindowPos2fMESA_remap_index], parameters) -#define GET_WindowPos2fMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2fMESA_remap_index]) -#define SET_WindowPos2fMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2fMESA_remap_index], fn) -#define CALL_WindowPos2fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[WindowPos2fvMESA_remap_index], parameters) -#define GET_WindowPos2fvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2fvMESA_remap_index]) -#define SET_WindowPos2fvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2fvMESA_remap_index], fn) -#define CALL_WindowPos2iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), driDispatchRemapTable[WindowPos2iMESA_remap_index], parameters) -#define GET_WindowPos2iMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2iMESA_remap_index]) -#define SET_WindowPos2iMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2iMESA_remap_index], fn) -#define CALL_WindowPos2ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[WindowPos2ivMESA_remap_index], parameters) -#define GET_WindowPos2ivMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2ivMESA_remap_index]) -#define SET_WindowPos2ivMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2ivMESA_remap_index], fn) -#define CALL_WindowPos2sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), driDispatchRemapTable[WindowPos2sMESA_remap_index], parameters) -#define GET_WindowPos2sMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2sMESA_remap_index]) -#define SET_WindowPos2sMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2sMESA_remap_index], fn) -#define CALL_WindowPos2svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[WindowPos2svMESA_remap_index], parameters) -#define GET_WindowPos2svMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2svMESA_remap_index]) -#define SET_WindowPos2svMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2svMESA_remap_index], fn) -#define CALL_WindowPos3dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[WindowPos3dMESA_remap_index], parameters) -#define GET_WindowPos3dMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3dMESA_remap_index]) -#define SET_WindowPos3dMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3dMESA_remap_index], fn) -#define CALL_WindowPos3dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[WindowPos3dvMESA_remap_index], parameters) -#define GET_WindowPos3dvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3dvMESA_remap_index]) -#define SET_WindowPos3dvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3dvMESA_remap_index], fn) -#define CALL_WindowPos3fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[WindowPos3fMESA_remap_index], parameters) -#define GET_WindowPos3fMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3fMESA_remap_index]) -#define SET_WindowPos3fMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3fMESA_remap_index], fn) -#define CALL_WindowPos3fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[WindowPos3fvMESA_remap_index], parameters) -#define GET_WindowPos3fvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3fvMESA_remap_index]) -#define SET_WindowPos3fvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3fvMESA_remap_index], fn) -#define CALL_WindowPos3iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), driDispatchRemapTable[WindowPos3iMESA_remap_index], parameters) -#define GET_WindowPos3iMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3iMESA_remap_index]) -#define SET_WindowPos3iMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3iMESA_remap_index], fn) -#define CALL_WindowPos3ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[WindowPos3ivMESA_remap_index], parameters) -#define GET_WindowPos3ivMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3ivMESA_remap_index]) -#define SET_WindowPos3ivMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3ivMESA_remap_index], fn) -#define CALL_WindowPos3sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), driDispatchRemapTable[WindowPos3sMESA_remap_index], parameters) -#define GET_WindowPos3sMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3sMESA_remap_index]) -#define SET_WindowPos3sMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3sMESA_remap_index], fn) -#define CALL_WindowPos3svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[WindowPos3svMESA_remap_index], parameters) -#define GET_WindowPos3svMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3svMESA_remap_index]) -#define SET_WindowPos3svMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3svMESA_remap_index], fn) -#define CALL_WindowPos4dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[WindowPos4dMESA_remap_index], parameters) -#define GET_WindowPos4dMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4dMESA_remap_index]) -#define SET_WindowPos4dMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4dMESA_remap_index], fn) -#define CALL_WindowPos4dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[WindowPos4dvMESA_remap_index], parameters) -#define GET_WindowPos4dvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4dvMESA_remap_index]) -#define SET_WindowPos4dvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4dvMESA_remap_index], fn) -#define CALL_WindowPos4fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[WindowPos4fMESA_remap_index], parameters) -#define GET_WindowPos4fMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4fMESA_remap_index]) -#define SET_WindowPos4fMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4fMESA_remap_index], fn) -#define CALL_WindowPos4fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[WindowPos4fvMESA_remap_index], parameters) -#define GET_WindowPos4fvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4fvMESA_remap_index]) -#define SET_WindowPos4fvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4fvMESA_remap_index], fn) -#define CALL_WindowPos4iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), driDispatchRemapTable[WindowPos4iMESA_remap_index], parameters) -#define GET_WindowPos4iMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4iMESA_remap_index]) -#define SET_WindowPos4iMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4iMESA_remap_index], fn) -#define CALL_WindowPos4ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[WindowPos4ivMESA_remap_index], parameters) -#define GET_WindowPos4ivMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4ivMESA_remap_index]) -#define SET_WindowPos4ivMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4ivMESA_remap_index], fn) -#define CALL_WindowPos4sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), driDispatchRemapTable[WindowPos4sMESA_remap_index], parameters) -#define GET_WindowPos4sMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4sMESA_remap_index]) -#define SET_WindowPos4sMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4sMESA_remap_index], fn) -#define CALL_WindowPos4svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[WindowPos4svMESA_remap_index], parameters) -#define GET_WindowPos4svMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4svMESA_remap_index]) -#define SET_WindowPos4svMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4svMESA_remap_index], fn) -#define CALL_MultiModeDrawArraysIBM(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint)), driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index], parameters) -#define GET_MultiModeDrawArraysIBM(disp) GET_by_offset(disp, driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index]) -#define SET_MultiModeDrawArraysIBM(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index], fn) -#define CALL_MultiModeDrawElementsIBM(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLenum *, const GLsizei *, GLenum, const GLvoid * const *, GLsizei, GLint)), driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index], parameters) -#define GET_MultiModeDrawElementsIBM(disp) GET_by_offset(disp, driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index]) -#define SET_MultiModeDrawElementsIBM(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index], fn) -#define CALL_DeleteFencesNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteFencesNV_remap_index], parameters) -#define GET_DeleteFencesNV(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteFencesNV_remap_index]) -#define SET_DeleteFencesNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteFencesNV_remap_index], fn) -#define CALL_FinishFenceNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[FinishFenceNV_remap_index], parameters) -#define GET_FinishFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[FinishFenceNV_remap_index]) -#define SET_FinishFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FinishFenceNV_remap_index], fn) -#define CALL_GenFencesNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenFencesNV_remap_index], parameters) -#define GET_GenFencesNV(disp) GET_by_offset(disp, driDispatchRemapTable[GenFencesNV_remap_index]) -#define SET_GenFencesNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenFencesNV_remap_index], fn) -#define CALL_GetFenceivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetFenceivNV_remap_index], parameters) -#define GET_GetFenceivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetFenceivNV_remap_index]) -#define SET_GetFenceivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFenceivNV_remap_index], fn) -#define CALL_IsFenceNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsFenceNV_remap_index], parameters) -#define GET_IsFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[IsFenceNV_remap_index]) -#define SET_IsFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsFenceNV_remap_index], fn) -#define CALL_SetFenceNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), driDispatchRemapTable[SetFenceNV_remap_index], parameters) -#define GET_SetFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[SetFenceNV_remap_index]) -#define SET_SetFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SetFenceNV_remap_index], fn) -#define CALL_TestFenceNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[TestFenceNV_remap_index], parameters) -#define GET_TestFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[TestFenceNV_remap_index]) -#define SET_TestFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TestFenceNV_remap_index], fn) -#define CALL_AreProgramsResidentNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsizei, const GLuint *, GLboolean *)), driDispatchRemapTable[AreProgramsResidentNV_remap_index], parameters) -#define GET_AreProgramsResidentNV(disp) GET_by_offset(disp, driDispatchRemapTable[AreProgramsResidentNV_remap_index]) -#define SET_AreProgramsResidentNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AreProgramsResidentNV_remap_index], fn) -#define CALL_BindProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindProgramNV_remap_index], parameters) -#define GET_BindProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[BindProgramNV_remap_index]) -#define SET_BindProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindProgramNV_remap_index], fn) -#define CALL_DeleteProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteProgramsNV_remap_index], parameters) -#define GET_DeleteProgramsNV(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteProgramsNV_remap_index]) -#define SET_DeleteProgramsNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteProgramsNV_remap_index], fn) -#define CALL_ExecuteProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), driDispatchRemapTable[ExecuteProgramNV_remap_index], parameters) -#define GET_ExecuteProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[ExecuteProgramNV_remap_index]) -#define SET_ExecuteProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ExecuteProgramNV_remap_index], fn) -#define CALL_GenProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenProgramsNV_remap_index], parameters) -#define GET_GenProgramsNV(disp) GET_by_offset(disp, driDispatchRemapTable[GenProgramsNV_remap_index]) -#define SET_GenProgramsNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenProgramsNV_remap_index], fn) -#define CALL_GetProgramParameterdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLdouble *)), driDispatchRemapTable[GetProgramParameterdvNV_remap_index], parameters) -#define GET_GetProgramParameterdvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramParameterdvNV_remap_index]) -#define SET_GetProgramParameterdvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramParameterdvNV_remap_index], fn) -#define CALL_GetProgramParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLfloat *)), driDispatchRemapTable[GetProgramParameterfvNV_remap_index], parameters) -#define GET_GetProgramParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramParameterfvNV_remap_index]) -#define SET_GetProgramParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramParameterfvNV_remap_index], fn) -#define CALL_GetProgramStringNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLubyte *)), driDispatchRemapTable[GetProgramStringNV_remap_index], parameters) -#define GET_GetProgramStringNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramStringNV_remap_index]) -#define SET_GetProgramStringNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramStringNV_remap_index], fn) -#define CALL_GetProgramivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetProgramivNV_remap_index], parameters) -#define GET_GetProgramivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramivNV_remap_index]) -#define SET_GetProgramivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramivNV_remap_index], fn) -#define CALL_GetTrackMatrixivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLint *)), driDispatchRemapTable[GetTrackMatrixivNV_remap_index], parameters) -#define GET_GetTrackMatrixivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetTrackMatrixivNV_remap_index]) -#define SET_GetTrackMatrixivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTrackMatrixivNV_remap_index], fn) -#define CALL_GetVertexAttribPointervNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLvoid **)), driDispatchRemapTable[GetVertexAttribPointervNV_remap_index], parameters) -#define GET_GetVertexAttribPointervNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribPointervNV_remap_index]) -#define SET_GetVertexAttribPointervNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribPointervNV_remap_index], fn) -#define CALL_GetVertexAttribdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLdouble *)), driDispatchRemapTable[GetVertexAttribdvNV_remap_index], parameters) -#define GET_GetVertexAttribdvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvNV_remap_index]) -#define SET_GetVertexAttribdvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvNV_remap_index], fn) -#define CALL_GetVertexAttribfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), driDispatchRemapTable[GetVertexAttribfvNV_remap_index], parameters) -#define GET_GetVertexAttribfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvNV_remap_index]) -#define SET_GetVertexAttribfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvNV_remap_index], fn) -#define CALL_GetVertexAttribivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetVertexAttribivNV_remap_index], parameters) -#define GET_GetVertexAttribivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivNV_remap_index]) -#define SET_GetVertexAttribivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivNV_remap_index], fn) -#define CALL_IsProgramNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsProgramNV_remap_index], parameters) -#define GET_IsProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[IsProgramNV_remap_index]) -#define SET_IsProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsProgramNV_remap_index], fn) -#define CALL_LoadProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLubyte *)), driDispatchRemapTable[LoadProgramNV_remap_index], parameters) -#define GET_LoadProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[LoadProgramNV_remap_index]) -#define SET_LoadProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LoadProgramNV_remap_index], fn) -#define CALL_ProgramParameters4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, const GLdouble *)), driDispatchRemapTable[ProgramParameters4dvNV_remap_index], parameters) -#define GET_ProgramParameters4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramParameters4dvNV_remap_index]) -#define SET_ProgramParameters4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramParameters4dvNV_remap_index], fn) -#define CALL_ProgramParameters4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, const GLfloat *)), driDispatchRemapTable[ProgramParameters4fvNV_remap_index], parameters) -#define GET_ProgramParameters4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramParameters4fvNV_remap_index]) -#define SET_ProgramParameters4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramParameters4fvNV_remap_index], fn) -#define CALL_RequestResidentProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[RequestResidentProgramsNV_remap_index], parameters) -#define GET_RequestResidentProgramsNV(disp) GET_by_offset(disp, driDispatchRemapTable[RequestResidentProgramsNV_remap_index]) -#define SET_RequestResidentProgramsNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[RequestResidentProgramsNV_remap_index], fn) -#define CALL_TrackMatrixNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLenum)), driDispatchRemapTable[TrackMatrixNV_remap_index], parameters) -#define GET_TrackMatrixNV(disp) GET_by_offset(disp, driDispatchRemapTable[TrackMatrixNV_remap_index]) -#define SET_TrackMatrixNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TrackMatrixNV_remap_index], fn) -#define CALL_VertexAttrib1dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble)), driDispatchRemapTable[VertexAttrib1dNV_remap_index], parameters) -#define GET_VertexAttrib1dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dNV_remap_index]) -#define SET_VertexAttrib1dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dNV_remap_index], fn) -#define CALL_VertexAttrib1dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib1dvNV_remap_index], parameters) -#define GET_VertexAttrib1dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvNV_remap_index]) -#define SET_VertexAttrib1dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvNV_remap_index], fn) -#define CALL_VertexAttrib1fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat)), driDispatchRemapTable[VertexAttrib1fNV_remap_index], parameters) -#define GET_VertexAttrib1fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fNV_remap_index]) -#define SET_VertexAttrib1fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fNV_remap_index], fn) -#define CALL_VertexAttrib1fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib1fvNV_remap_index], parameters) -#define GET_VertexAttrib1fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvNV_remap_index]) -#define SET_VertexAttrib1fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvNV_remap_index], fn) -#define CALL_VertexAttrib1sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort)), driDispatchRemapTable[VertexAttrib1sNV_remap_index], parameters) -#define GET_VertexAttrib1sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sNV_remap_index]) -#define SET_VertexAttrib1sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sNV_remap_index], fn) -#define CALL_VertexAttrib1svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib1svNV_remap_index], parameters) -#define GET_VertexAttrib1svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svNV_remap_index]) -#define SET_VertexAttrib1svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svNV_remap_index], fn) -#define CALL_VertexAttrib2dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib2dNV_remap_index], parameters) -#define GET_VertexAttrib2dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dNV_remap_index]) -#define SET_VertexAttrib2dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dNV_remap_index], fn) -#define CALL_VertexAttrib2dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib2dvNV_remap_index], parameters) -#define GET_VertexAttrib2dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvNV_remap_index]) -#define SET_VertexAttrib2dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvNV_remap_index], fn) -#define CALL_VertexAttrib2fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib2fNV_remap_index], parameters) -#define GET_VertexAttrib2fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fNV_remap_index]) -#define SET_VertexAttrib2fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fNV_remap_index], fn) -#define CALL_VertexAttrib2fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib2fvNV_remap_index], parameters) -#define GET_VertexAttrib2fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvNV_remap_index]) -#define SET_VertexAttrib2fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvNV_remap_index], fn) -#define CALL_VertexAttrib2sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib2sNV_remap_index], parameters) -#define GET_VertexAttrib2sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sNV_remap_index]) -#define SET_VertexAttrib2sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sNV_remap_index], fn) -#define CALL_VertexAttrib2svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib2svNV_remap_index], parameters) -#define GET_VertexAttrib2svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svNV_remap_index]) -#define SET_VertexAttrib2svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svNV_remap_index], fn) -#define CALL_VertexAttrib3dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib3dNV_remap_index], parameters) -#define GET_VertexAttrib3dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dNV_remap_index]) -#define SET_VertexAttrib3dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dNV_remap_index], fn) -#define CALL_VertexAttrib3dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib3dvNV_remap_index], parameters) -#define GET_VertexAttrib3dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvNV_remap_index]) -#define SET_VertexAttrib3dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvNV_remap_index], fn) -#define CALL_VertexAttrib3fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib3fNV_remap_index], parameters) -#define GET_VertexAttrib3fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fNV_remap_index]) -#define SET_VertexAttrib3fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fNV_remap_index], fn) -#define CALL_VertexAttrib3fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib3fvNV_remap_index], parameters) -#define GET_VertexAttrib3fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvNV_remap_index]) -#define SET_VertexAttrib3fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvNV_remap_index], fn) -#define CALL_VertexAttrib3sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib3sNV_remap_index], parameters) -#define GET_VertexAttrib3sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sNV_remap_index]) -#define SET_VertexAttrib3sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sNV_remap_index], fn) -#define CALL_VertexAttrib3svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib3svNV_remap_index], parameters) -#define GET_VertexAttrib3svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svNV_remap_index]) -#define SET_VertexAttrib3svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svNV_remap_index], fn) -#define CALL_VertexAttrib4dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib4dNV_remap_index], parameters) -#define GET_VertexAttrib4dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dNV_remap_index]) -#define SET_VertexAttrib4dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dNV_remap_index], fn) -#define CALL_VertexAttrib4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib4dvNV_remap_index], parameters) -#define GET_VertexAttrib4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvNV_remap_index]) -#define SET_VertexAttrib4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvNV_remap_index], fn) -#define CALL_VertexAttrib4fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib4fNV_remap_index], parameters) -#define GET_VertexAttrib4fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fNV_remap_index]) -#define SET_VertexAttrib4fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fNV_remap_index], fn) -#define CALL_VertexAttrib4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib4fvNV_remap_index], parameters) -#define GET_VertexAttrib4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvNV_remap_index]) -#define SET_VertexAttrib4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvNV_remap_index], fn) -#define CALL_VertexAttrib4sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib4sNV_remap_index], parameters) -#define GET_VertexAttrib4sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sNV_remap_index]) -#define SET_VertexAttrib4sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sNV_remap_index], fn) -#define CALL_VertexAttrib4svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib4svNV_remap_index], parameters) -#define GET_VertexAttrib4svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svNV_remap_index]) -#define SET_VertexAttrib4svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svNV_remap_index], fn) -#define CALL_VertexAttrib4ubNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte)), driDispatchRemapTable[VertexAttrib4ubNV_remap_index], parameters) -#define GET_VertexAttrib4ubNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubNV_remap_index]) -#define SET_VertexAttrib4ubNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubNV_remap_index], fn) -#define CALL_VertexAttrib4ubvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), driDispatchRemapTable[VertexAttrib4ubvNV_remap_index], parameters) -#define GET_VertexAttrib4ubvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvNV_remap_index]) -#define SET_VertexAttrib4ubvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvNV_remap_index], fn) -#define CALL_VertexAttribPointerNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[VertexAttribPointerNV_remap_index], parameters) -#define GET_VertexAttribPointerNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerNV_remap_index]) -#define SET_VertexAttribPointerNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerNV_remap_index], fn) -#define CALL_VertexAttribs1dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs1dvNV_remap_index], parameters) -#define GET_VertexAttribs1dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs1dvNV_remap_index]) -#define SET_VertexAttribs1dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs1dvNV_remap_index], fn) -#define CALL_VertexAttribs1fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs1fvNV_remap_index], parameters) -#define GET_VertexAttribs1fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs1fvNV_remap_index]) -#define SET_VertexAttribs1fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs1fvNV_remap_index], fn) -#define CALL_VertexAttribs1svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs1svNV_remap_index], parameters) -#define GET_VertexAttribs1svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs1svNV_remap_index]) -#define SET_VertexAttribs1svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs1svNV_remap_index], fn) -#define CALL_VertexAttribs2dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs2dvNV_remap_index], parameters) -#define GET_VertexAttribs2dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs2dvNV_remap_index]) -#define SET_VertexAttribs2dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs2dvNV_remap_index], fn) -#define CALL_VertexAttribs2fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs2fvNV_remap_index], parameters) -#define GET_VertexAttribs2fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs2fvNV_remap_index]) -#define SET_VertexAttribs2fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs2fvNV_remap_index], fn) -#define CALL_VertexAttribs2svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs2svNV_remap_index], parameters) -#define GET_VertexAttribs2svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs2svNV_remap_index]) -#define SET_VertexAttribs2svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs2svNV_remap_index], fn) -#define CALL_VertexAttribs3dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs3dvNV_remap_index], parameters) -#define GET_VertexAttribs3dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs3dvNV_remap_index]) -#define SET_VertexAttribs3dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs3dvNV_remap_index], fn) -#define CALL_VertexAttribs3fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs3fvNV_remap_index], parameters) -#define GET_VertexAttribs3fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs3fvNV_remap_index]) -#define SET_VertexAttribs3fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs3fvNV_remap_index], fn) -#define CALL_VertexAttribs3svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs3svNV_remap_index], parameters) -#define GET_VertexAttribs3svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs3svNV_remap_index]) -#define SET_VertexAttribs3svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs3svNV_remap_index], fn) -#define CALL_VertexAttribs4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs4dvNV_remap_index], parameters) -#define GET_VertexAttribs4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4dvNV_remap_index]) -#define SET_VertexAttribs4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4dvNV_remap_index], fn) -#define CALL_VertexAttribs4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs4fvNV_remap_index], parameters) -#define GET_VertexAttribs4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4fvNV_remap_index]) -#define SET_VertexAttribs4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4fvNV_remap_index], fn) -#define CALL_VertexAttribs4svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs4svNV_remap_index], parameters) -#define GET_VertexAttribs4svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4svNV_remap_index]) -#define SET_VertexAttribs4svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4svNV_remap_index], fn) -#define CALL_VertexAttribs4ubvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *)), driDispatchRemapTable[VertexAttribs4ubvNV_remap_index], parameters) -#define GET_VertexAttribs4ubvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4ubvNV_remap_index]) -#define SET_VertexAttribs4ubvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4ubvNV_remap_index], fn) -#define CALL_GetTexBumpParameterfvATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index], parameters) -#define GET_GetTexBumpParameterfvATI(disp) GET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index]) -#define SET_GetTexBumpParameterfvATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index], fn) -#define CALL_GetTexBumpParameterivATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), driDispatchRemapTable[GetTexBumpParameterivATI_remap_index], parameters) -#define GET_GetTexBumpParameterivATI(disp) GET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterivATI_remap_index]) -#define SET_GetTexBumpParameterivATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterivATI_remap_index], fn) -#define CALL_TexBumpParameterfvATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[TexBumpParameterfvATI_remap_index], parameters) -#define GET_TexBumpParameterfvATI(disp) GET_by_offset(disp, driDispatchRemapTable[TexBumpParameterfvATI_remap_index]) -#define SET_TexBumpParameterfvATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TexBumpParameterfvATI_remap_index], fn) -#define CALL_TexBumpParameterivATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[TexBumpParameterivATI_remap_index], parameters) -#define GET_TexBumpParameterivATI(disp) GET_by_offset(disp, driDispatchRemapTable[TexBumpParameterivATI_remap_index]) -#define SET_TexBumpParameterivATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TexBumpParameterivATI_remap_index], fn) -#define CALL_AlphaFragmentOp1ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index], parameters) -#define GET_AlphaFragmentOp1ATI(disp) GET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index]) -#define SET_AlphaFragmentOp1ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index], fn) -#define CALL_AlphaFragmentOp2ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index], parameters) -#define GET_AlphaFragmentOp2ATI(disp) GET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index]) -#define SET_AlphaFragmentOp2ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index], fn) -#define CALL_AlphaFragmentOp3ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index], parameters) -#define GET_AlphaFragmentOp3ATI(disp) GET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index]) -#define SET_AlphaFragmentOp3ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index], fn) -#define CALL_BeginFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[BeginFragmentShaderATI_remap_index], parameters) -#define GET_BeginFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[BeginFragmentShaderATI_remap_index]) -#define SET_BeginFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginFragmentShaderATI_remap_index], fn) -#define CALL_BindFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[BindFragmentShaderATI_remap_index], parameters) -#define GET_BindFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[BindFragmentShaderATI_remap_index]) -#define SET_BindFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindFragmentShaderATI_remap_index], fn) -#define CALL_ColorFragmentOp1ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[ColorFragmentOp1ATI_remap_index], parameters) -#define GET_ColorFragmentOp1ATI(disp) GET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp1ATI_remap_index]) -#define SET_ColorFragmentOp1ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp1ATI_remap_index], fn) -#define CALL_ColorFragmentOp2ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[ColorFragmentOp2ATI_remap_index], parameters) -#define GET_ColorFragmentOp2ATI(disp) GET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp2ATI_remap_index]) -#define SET_ColorFragmentOp2ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp2ATI_remap_index], fn) -#define CALL_ColorFragmentOp3ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[ColorFragmentOp3ATI_remap_index], parameters) -#define GET_ColorFragmentOp3ATI(disp) GET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp3ATI_remap_index]) -#define SET_ColorFragmentOp3ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp3ATI_remap_index], fn) -#define CALL_DeleteFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DeleteFragmentShaderATI_remap_index], parameters) -#define GET_DeleteFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteFragmentShaderATI_remap_index]) -#define SET_DeleteFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteFragmentShaderATI_remap_index], fn) -#define CALL_EndFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[EndFragmentShaderATI_remap_index], parameters) -#define GET_EndFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[EndFragmentShaderATI_remap_index]) -#define SET_EndFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndFragmentShaderATI_remap_index], fn) -#define CALL_GenFragmentShadersATI(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[GenFragmentShadersATI_remap_index], parameters) -#define GET_GenFragmentShadersATI(disp) GET_by_offset(disp, driDispatchRemapTable[GenFragmentShadersATI_remap_index]) -#define SET_GenFragmentShadersATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenFragmentShadersATI_remap_index], fn) -#define CALL_PassTexCoordATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLenum)), driDispatchRemapTable[PassTexCoordATI_remap_index], parameters) -#define GET_PassTexCoordATI(disp) GET_by_offset(disp, driDispatchRemapTable[PassTexCoordATI_remap_index]) -#define SET_PassTexCoordATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PassTexCoordATI_remap_index], fn) -#define CALL_SampleMapATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLenum)), driDispatchRemapTable[SampleMapATI_remap_index], parameters) -#define GET_SampleMapATI(disp) GET_by_offset(disp, driDispatchRemapTable[SampleMapATI_remap_index]) -#define SET_SampleMapATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SampleMapATI_remap_index], fn) -#define CALL_SetFragmentShaderConstantATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index], parameters) -#define GET_SetFragmentShaderConstantATI(disp) GET_by_offset(disp, driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index]) -#define SET_SetFragmentShaderConstantATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index], fn) -#define CALL_PointParameteriNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), driDispatchRemapTable[PointParameteriNV_remap_index], parameters) -#define GET_PointParameteriNV(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameteriNV_remap_index]) -#define SET_PointParameteriNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameteriNV_remap_index], fn) -#define CALL_PointParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[PointParameterivNV_remap_index], parameters) -#define GET_PointParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameterivNV_remap_index]) -#define SET_PointParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameterivNV_remap_index], fn) -#define CALL_ActiveStencilFaceEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[ActiveStencilFaceEXT_remap_index], parameters) -#define GET_ActiveStencilFaceEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ActiveStencilFaceEXT_remap_index]) -#define SET_ActiveStencilFaceEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ActiveStencilFaceEXT_remap_index], fn) -#define CALL_BindVertexArrayAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[BindVertexArrayAPPLE_remap_index], parameters) -#define GET_BindVertexArrayAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[BindVertexArrayAPPLE_remap_index]) -#define SET_BindVertexArrayAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindVertexArrayAPPLE_remap_index], fn) -#define CALL_DeleteVertexArraysAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index], parameters) -#define GET_DeleteVertexArraysAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index]) -#define SET_DeleteVertexArraysAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index], fn) -#define CALL_GenVertexArraysAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenVertexArraysAPPLE_remap_index], parameters) -#define GET_GenVertexArraysAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[GenVertexArraysAPPLE_remap_index]) -#define SET_GenVertexArraysAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenVertexArraysAPPLE_remap_index], fn) -#define CALL_IsVertexArrayAPPLE(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsVertexArrayAPPLE_remap_index], parameters) -#define GET_IsVertexArrayAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[IsVertexArrayAPPLE_remap_index]) -#define SET_IsVertexArrayAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsVertexArrayAPPLE_remap_index], fn) -#define CALL_GetProgramNamedParameterdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLdouble *)), driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index], parameters) -#define GET_GetProgramNamedParameterdvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index]) -#define SET_GetProgramNamedParameterdvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index], fn) -#define CALL_GetProgramNamedParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLfloat *)), driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index], parameters) -#define GET_GetProgramNamedParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index]) -#define SET_GetProgramNamedParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index], fn) -#define CALL_ProgramNamedParameter4dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index], parameters) -#define GET_ProgramNamedParameter4dNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index]) -#define SET_ProgramNamedParameter4dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index], fn) -#define CALL_ProgramNamedParameter4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, const GLdouble *)), driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index], parameters) -#define GET_ProgramNamedParameter4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index]) -#define SET_ProgramNamedParameter4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index], fn) -#define CALL_ProgramNamedParameter4fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index], parameters) -#define GET_ProgramNamedParameter4fNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index]) -#define SET_ProgramNamedParameter4fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index], fn) -#define CALL_ProgramNamedParameter4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, const GLfloat *)), driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index], parameters) -#define GET_ProgramNamedParameter4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index]) -#define SET_ProgramNamedParameter4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index], fn) -#define CALL_PrimitiveRestartIndexNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index], parameters) -#define GET_PrimitiveRestartIndexNV(disp) GET_by_offset(disp, driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index]) -#define SET_PrimitiveRestartIndexNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index], fn) -#define CALL_PrimitiveRestartNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[PrimitiveRestartNV_remap_index], parameters) -#define GET_PrimitiveRestartNV(disp) GET_by_offset(disp, driDispatchRemapTable[PrimitiveRestartNV_remap_index]) -#define SET_PrimitiveRestartNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PrimitiveRestartNV_remap_index], fn) -#define CALL_DepthBoundsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampd, GLclampd)), driDispatchRemapTable[DepthBoundsEXT_remap_index], parameters) -#define GET_DepthBoundsEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DepthBoundsEXT_remap_index]) -#define SET_DepthBoundsEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DepthBoundsEXT_remap_index], fn) -#define CALL_BlendEquationSeparateEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), driDispatchRemapTable[BlendEquationSeparateEXT_remap_index], parameters) -#define GET_BlendEquationSeparateEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlendEquationSeparateEXT_remap_index]) -#define SET_BlendEquationSeparateEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlendEquationSeparateEXT_remap_index], fn) -#define CALL_BindFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindFramebufferEXT_remap_index], parameters) -#define GET_BindFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindFramebufferEXT_remap_index]) -#define SET_BindFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindFramebufferEXT_remap_index], fn) -#define CALL_BindRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindRenderbufferEXT_remap_index], parameters) -#define GET_BindRenderbufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindRenderbufferEXT_remap_index]) -#define SET_BindRenderbufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindRenderbufferEXT_remap_index], fn) -#define CALL_CheckFramebufferStatusEXT(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index], parameters) -#define GET_CheckFramebufferStatusEXT(disp) GET_by_offset(disp, driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index]) -#define SET_CheckFramebufferStatusEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index], fn) -#define CALL_DeleteFramebuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteFramebuffersEXT_remap_index], parameters) -#define GET_DeleteFramebuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteFramebuffersEXT_remap_index]) -#define SET_DeleteFramebuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteFramebuffersEXT_remap_index], fn) -#define CALL_DeleteRenderbuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index], parameters) -#define GET_DeleteRenderbuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index]) -#define SET_DeleteRenderbuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index], fn) -#define CALL_FramebufferRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint)), driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index], parameters) -#define GET_FramebufferRenderbufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index]) -#define SET_FramebufferRenderbufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index], fn) -#define CALL_FramebufferTexture1DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint)), driDispatchRemapTable[FramebufferTexture1DEXT_remap_index], parameters) -#define GET_FramebufferTexture1DEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTexture1DEXT_remap_index]) -#define SET_FramebufferTexture1DEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTexture1DEXT_remap_index], fn) -#define CALL_FramebufferTexture2DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint)), driDispatchRemapTable[FramebufferTexture2DEXT_remap_index], parameters) -#define GET_FramebufferTexture2DEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTexture2DEXT_remap_index]) -#define SET_FramebufferTexture2DEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTexture2DEXT_remap_index], fn) -#define CALL_FramebufferTexture3DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint, GLint)), driDispatchRemapTable[FramebufferTexture3DEXT_remap_index], parameters) -#define GET_FramebufferTexture3DEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTexture3DEXT_remap_index]) -#define SET_FramebufferTexture3DEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTexture3DEXT_remap_index], fn) -#define CALL_GenFramebuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenFramebuffersEXT_remap_index], parameters) -#define GET_GenFramebuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GenFramebuffersEXT_remap_index]) -#define SET_GenFramebuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenFramebuffersEXT_remap_index], fn) -#define CALL_GenRenderbuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenRenderbuffersEXT_remap_index], parameters) -#define GET_GenRenderbuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GenRenderbuffersEXT_remap_index]) -#define SET_GenRenderbuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenRenderbuffersEXT_remap_index], fn) -#define CALL_GenerateMipmapEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[GenerateMipmapEXT_remap_index], parameters) -#define GET_GenerateMipmapEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GenerateMipmapEXT_remap_index]) -#define SET_GenerateMipmapEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenerateMipmapEXT_remap_index], fn) -#define CALL_GetFramebufferAttachmentParameterivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLint *)), driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index], parameters) -#define GET_GetFramebufferAttachmentParameterivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index]) -#define SET_GetFramebufferAttachmentParameterivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index], fn) -#define CALL_GetRenderbufferParameterivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index], parameters) -#define GET_GetRenderbufferParameterivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index]) -#define SET_GetRenderbufferParameterivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index], fn) -#define CALL_IsFramebufferEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsFramebufferEXT_remap_index], parameters) -#define GET_IsFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IsFramebufferEXT_remap_index]) -#define SET_IsFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsFramebufferEXT_remap_index], fn) -#define CALL_IsRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsRenderbufferEXT_remap_index], parameters) -#define GET_IsRenderbufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IsRenderbufferEXT_remap_index]) -#define SET_IsRenderbufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsRenderbufferEXT_remap_index], fn) -#define CALL_RenderbufferStorageEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLsizei)), driDispatchRemapTable[RenderbufferStorageEXT_remap_index], parameters) -#define GET_RenderbufferStorageEXT(disp) GET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageEXT_remap_index]) -#define SET_RenderbufferStorageEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageEXT_remap_index], fn) -#define CALL_BlitFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)), driDispatchRemapTable[BlitFramebufferEXT_remap_index], parameters) -#define GET_BlitFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlitFramebufferEXT_remap_index]) -#define SET_BlitFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlitFramebufferEXT_remap_index], fn) -#define CALL_BufferParameteriAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), driDispatchRemapTable[BufferParameteriAPPLE_remap_index], parameters) -#define GET_BufferParameteriAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[BufferParameteriAPPLE_remap_index]) -#define SET_BufferParameteriAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BufferParameteriAPPLE_remap_index], fn) -#define CALL_FlushMappedBufferRangeAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr)), driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index], parameters) -#define GET_FlushMappedBufferRangeAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index]) -#define SET_FlushMappedBufferRangeAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index], fn) -#define CALL_FramebufferTextureLayerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLint)), driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index], parameters) -#define GET_FramebufferTextureLayerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index]) -#define SET_FramebufferTextureLayerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index], fn) -#define CALL_ColorMaskIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean)), driDispatchRemapTable[ColorMaskIndexedEXT_remap_index], parameters) -#define GET_ColorMaskIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ColorMaskIndexedEXT_remap_index]) -#define SET_ColorMaskIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorMaskIndexedEXT_remap_index], fn) -#define CALL_DisableIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[DisableIndexedEXT_remap_index], parameters) -#define GET_DisableIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DisableIndexedEXT_remap_index]) -#define SET_DisableIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DisableIndexedEXT_remap_index], fn) -#define CALL_EnableIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[EnableIndexedEXT_remap_index], parameters) -#define GET_EnableIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[EnableIndexedEXT_remap_index]) -#define SET_EnableIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EnableIndexedEXT_remap_index], fn) -#define CALL_GetBooleanIndexedvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLboolean *)), driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index], parameters) -#define GET_GetBooleanIndexedvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index]) -#define SET_GetBooleanIndexedvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index], fn) -#define CALL_GetIntegerIndexedvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLint *)), driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index], parameters) -#define GET_GetIntegerIndexedvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index]) -#define SET_GetIntegerIndexedvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index], fn) -#define CALL_IsEnabledIndexedEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[IsEnabledIndexedEXT_remap_index], parameters) -#define GET_IsEnabledIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IsEnabledIndexedEXT_remap_index]) -#define SET_IsEnabledIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsEnabledIndexedEXT_remap_index], fn) -#define CALL_BeginConditionalRenderNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), driDispatchRemapTable[BeginConditionalRenderNV_remap_index], parameters) -#define GET_BeginConditionalRenderNV(disp) GET_by_offset(disp, driDispatchRemapTable[BeginConditionalRenderNV_remap_index]) -#define SET_BeginConditionalRenderNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginConditionalRenderNV_remap_index], fn) -#define CALL_EndConditionalRenderNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[EndConditionalRenderNV_remap_index], parameters) -#define GET_EndConditionalRenderNV(disp) GET_by_offset(disp, driDispatchRemapTable[EndConditionalRenderNV_remap_index]) -#define SET_EndConditionalRenderNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndConditionalRenderNV_remap_index], fn) -#define CALL_BeginTransformFeedbackEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index], parameters) -#define GET_BeginTransformFeedbackEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index]) -#define SET_BeginTransformFeedbackEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index], fn) -#define CALL_BindBufferBaseEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint)), driDispatchRemapTable[BindBufferBaseEXT_remap_index], parameters) -#define GET_BindBufferBaseEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferBaseEXT_remap_index]) -#define SET_BindBufferBaseEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferBaseEXT_remap_index], fn) -#define CALL_BindBufferOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLintptr)), driDispatchRemapTable[BindBufferOffsetEXT_remap_index], parameters) -#define GET_BindBufferOffsetEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferOffsetEXT_remap_index]) -#define SET_BindBufferOffsetEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferOffsetEXT_remap_index], fn) -#define CALL_BindBufferRangeEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr)), driDispatchRemapTable[BindBufferRangeEXT_remap_index], parameters) -#define GET_BindBufferRangeEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferRangeEXT_remap_index]) -#define SET_BindBufferRangeEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferRangeEXT_remap_index], fn) -#define CALL_EndTransformFeedbackEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[EndTransformFeedbackEXT_remap_index], parameters) -#define GET_EndTransformFeedbackEXT(disp) GET_by_offset(disp, driDispatchRemapTable[EndTransformFeedbackEXT_remap_index]) -#define SET_EndTransformFeedbackEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndTransformFeedbackEXT_remap_index], fn) -#define CALL_GetTransformFeedbackVaryingEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *)), driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index], parameters) -#define GET_GetTransformFeedbackVaryingEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index]) -#define SET_GetTransformFeedbackVaryingEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index], fn) -#define CALL_TransformFeedbackVaryingsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const char **, GLenum)), driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index], parameters) -#define GET_TransformFeedbackVaryingsEXT(disp) GET_by_offset(disp, driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index]) -#define SET_TransformFeedbackVaryingsEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index], fn) -#define CALL_ProvokingVertexEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[ProvokingVertexEXT_remap_index], parameters) -#define GET_ProvokingVertexEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProvokingVertexEXT_remap_index]) -#define SET_ProvokingVertexEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProvokingVertexEXT_remap_index], fn) -#define CALL_GetTexParameterPointervAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid **)), driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index], parameters) -#define GET_GetTexParameterPointervAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index]) -#define SET_GetTexParameterPointervAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index], fn) -#define CALL_TextureRangeAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLvoid *)), driDispatchRemapTable[TextureRangeAPPLE_remap_index], parameters) -#define GET_TextureRangeAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[TextureRangeAPPLE_remap_index]) -#define SET_TextureRangeAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TextureRangeAPPLE_remap_index], fn) -#define CALL_GetObjectParameterivAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLint *)), driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index], parameters) -#define GET_GetObjectParameterivAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index]) -#define SET_GetObjectParameterivAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index], fn) -#define CALL_ObjectPurgeableAPPLE(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum, GLuint, GLenum)), driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index], parameters) -#define GET_ObjectPurgeableAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index]) -#define SET_ObjectPurgeableAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index], fn) -#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum, GLuint, GLenum)), driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index], parameters) -#define GET_ObjectUnpurgeableAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index]) -#define SET_ObjectUnpurgeableAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index], fn) -#define CALL_StencilFuncSeparateATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLuint)), driDispatchRemapTable[StencilFuncSeparateATI_remap_index], parameters) -#define GET_StencilFuncSeparateATI(disp) GET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparateATI_remap_index]) -#define SET_StencilFuncSeparateATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparateATI_remap_index], fn) -#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index], parameters) -#define GET_ProgramEnvParameters4fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index]) -#define SET_ProgramEnvParameters4fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index], fn) -#define CALL_ProgramLocalParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index], parameters) -#define GET_ProgramLocalParameters4fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index]) -#define SET_ProgramLocalParameters4fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index], fn) -#define CALL_GetQueryObjecti64vEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint64EXT *)), driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index], parameters) -#define GET_GetQueryObjecti64vEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index]) -#define SET_GetQueryObjecti64vEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index], fn) -#define CALL_GetQueryObjectui64vEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint64EXT *)), driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index], parameters) -#define GET_GetQueryObjectui64vEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index]) -#define SET_GetQueryObjectui64vEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index], fn) -#define CALL_EGLImageTargetRenderbufferStorageOES(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid *)), driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index], parameters) -#define GET_EGLImageTargetRenderbufferStorageOES(disp) GET_by_offset(disp, driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index]) -#define SET_EGLImageTargetRenderbufferStorageOES(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index], fn) -#define CALL_EGLImageTargetTexture2DOES(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid *)), driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index], parameters) -#define GET_EGLImageTargetTexture2DOES(disp) GET_by_offset(disp, driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index]) -#define SET_EGLImageTargetTexture2DOES(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index], fn) - -#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */ - -#endif /* !defined( _GLAPI_DISPATCH_H_ ) */ diff --git a/src/mapi/glapi/glapioffsets.h b/src/mapi/glapi/glapioffsets.h deleted file mode 100644 index 9bb143574b..0000000000 --- a/src/mapi/glapi/glapioffsets.h +++ /dev/null @@ -1,1290 +0,0 @@ -/* DO NOT EDIT - This file generated automatically by gl_offsets.py (from Mesa) script */ - -/* - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * (C) Copyright IBM Corporation 2004 - * 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, sub license, - * 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 (including the next - * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL, IBM, - * AND/OR THEIR SUPPLIERS 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. - */ - -#if !defined( _GLAPI_OFFSETS_H_ ) -# define _GLAPI_OFFSETS_H_ - -/* this file should not be included directly in mesa */ - -#define _gloffset_NewList 0 -#define _gloffset_EndList 1 -#define _gloffset_CallList 2 -#define _gloffset_CallLists 3 -#define _gloffset_DeleteLists 4 -#define _gloffset_GenLists 5 -#define _gloffset_ListBase 6 -#define _gloffset_Begin 7 -#define _gloffset_Bitmap 8 -#define _gloffset_Color3b 9 -#define _gloffset_Color3bv 10 -#define _gloffset_Color3d 11 -#define _gloffset_Color3dv 12 -#define _gloffset_Color3f 13 -#define _gloffset_Color3fv 14 -#define _gloffset_Color3i 15 -#define _gloffset_Color3iv 16 -#define _gloffset_Color3s 17 -#define _gloffset_Color3sv 18 -#define _gloffset_Color3ub 19 -#define _gloffset_Color3ubv 20 -#define _gloffset_Color3ui 21 -#define _gloffset_Color3uiv 22 -#define _gloffset_Color3us 23 -#define _gloffset_Color3usv 24 -#define _gloffset_Color4b 25 -#define _gloffset_Color4bv 26 -#define _gloffset_Color4d 27 -#define _gloffset_Color4dv 28 -#define _gloffset_Color4f 29 -#define _gloffset_Color4fv 30 -#define _gloffset_Color4i 31 -#define _gloffset_Color4iv 32 -#define _gloffset_Color4s 33 -#define _gloffset_Color4sv 34 -#define _gloffset_Color4ub 35 -#define _gloffset_Color4ubv 36 -#define _gloffset_Color4ui 37 -#define _gloffset_Color4uiv 38 -#define _gloffset_Color4us 39 -#define _gloffset_Color4usv 40 -#define _gloffset_EdgeFlag 41 -#define _gloffset_EdgeFlagv 42 -#define _gloffset_End 43 -#define _gloffset_Indexd 44 -#define _gloffset_Indexdv 45 -#define _gloffset_Indexf 46 -#define _gloffset_Indexfv 47 -#define _gloffset_Indexi 48 -#define _gloffset_Indexiv 49 -#define _gloffset_Indexs 50 -#define _gloffset_Indexsv 51 -#define _gloffset_Normal3b 52 -#define _gloffset_Normal3bv 53 -#define _gloffset_Normal3d 54 -#define _gloffset_Normal3dv 55 -#define _gloffset_Normal3f 56 -#define _gloffset_Normal3fv 57 -#define _gloffset_Normal3i 58 -#define _gloffset_Normal3iv 59 -#define _gloffset_Normal3s 60 -#define _gloffset_Normal3sv 61 -#define _gloffset_RasterPos2d 62 -#define _gloffset_RasterPos2dv 63 -#define _gloffset_RasterPos2f 64 -#define _gloffset_RasterPos2fv 65 -#define _gloffset_RasterPos2i 66 -#define _gloffset_RasterPos2iv 67 -#define _gloffset_RasterPos2s 68 -#define _gloffset_RasterPos2sv 69 -#define _gloffset_RasterPos3d 70 -#define _gloffset_RasterPos3dv 71 -#define _gloffset_RasterPos3f 72 -#define _gloffset_RasterPos3fv 73 -#define _gloffset_RasterPos3i 74 -#define _gloffset_RasterPos3iv 75 -#define _gloffset_RasterPos3s 76 -#define _gloffset_RasterPos3sv 77 -#define _gloffset_RasterPos4d 78 -#define _gloffset_RasterPos4dv 79 -#define _gloffset_RasterPos4f 80 -#define _gloffset_RasterPos4fv 81 -#define _gloffset_RasterPos4i 82 -#define _gloffset_RasterPos4iv 83 -#define _gloffset_RasterPos4s 84 -#define _gloffset_RasterPos4sv 85 -#define _gloffset_Rectd 86 -#define _gloffset_Rectdv 87 -#define _gloffset_Rectf 88 -#define _gloffset_Rectfv 89 -#define _gloffset_Recti 90 -#define _gloffset_Rectiv 91 -#define _gloffset_Rects 92 -#define _gloffset_Rectsv 93 -#define _gloffset_TexCoord1d 94 -#define _gloffset_TexCoord1dv 95 -#define _gloffset_TexCoord1f 96 -#define _gloffset_TexCoord1fv 97 -#define _gloffset_TexCoord1i 98 -#define _gloffset_TexCoord1iv 99 -#define _gloffset_TexCoord1s 100 -#define _gloffset_TexCoord1sv 101 -#define _gloffset_TexCoord2d 102 -#define _gloffset_TexCoord2dv 103 -#define _gloffset_TexCoord2f 104 -#define _gloffset_TexCoord2fv 105 -#define _gloffset_TexCoord2i 106 -#define _gloffset_TexCoord2iv 107 -#define _gloffset_TexCoord2s 108 -#define _gloffset_TexCoord2sv 109 -#define _gloffset_TexCoord3d 110 -#define _gloffset_TexCoord3dv 111 -#define _gloffset_TexCoord3f 112 -#define _gloffset_TexCoord3fv 113 -#define _gloffset_TexCoord3i 114 -#define _gloffset_TexCoord3iv 115 -#define _gloffset_TexCoord3s 116 -#define _gloffset_TexCoord3sv 117 -#define _gloffset_TexCoord4d 118 -#define _gloffset_TexCoord4dv 119 -#define _gloffset_TexCoord4f 120 -#define _gloffset_TexCoord4fv 121 -#define _gloffset_TexCoord4i 122 -#define _gloffset_TexCoord4iv 123 -#define _gloffset_TexCoord4s 124 -#define _gloffset_TexCoord4sv 125 -#define _gloffset_Vertex2d 126 -#define _gloffset_Vertex2dv 127 -#define _gloffset_Vertex2f 128 -#define _gloffset_Vertex2fv 129 -#define _gloffset_Vertex2i 130 -#define _gloffset_Vertex2iv 131 -#define _gloffset_Vertex2s 132 -#define _gloffset_Vertex2sv 133 -#define _gloffset_Vertex3d 134 -#define _gloffset_Vertex3dv 135 -#define _gloffset_Vertex3f 136 -#define _gloffset_Vertex3fv 137 -#define _gloffset_Vertex3i 138 -#define _gloffset_Vertex3iv 139 -#define _gloffset_Vertex3s 140 -#define _gloffset_Vertex3sv 141 -#define _gloffset_Vertex4d 142 -#define _gloffset_Vertex4dv 143 -#define _gloffset_Vertex4f 144 -#define _gloffset_Vertex4fv 145 -#define _gloffset_Vertex4i 146 -#define _gloffset_Vertex4iv 147 -#define _gloffset_Vertex4s 148 -#define _gloffset_Vertex4sv 149 -#define _gloffset_ClipPlane 150 -#define _gloffset_ColorMaterial 151 -#define _gloffset_CullFace 152 -#define _gloffset_Fogf 153 -#define _gloffset_Fogfv 154 -#define _gloffset_Fogi 155 -#define _gloffset_Fogiv 156 -#define _gloffset_FrontFace 157 -#define _gloffset_Hint 158 -#define _gloffset_Lightf 159 -#define _gloffset_Lightfv 160 -#define _gloffset_Lighti 161 -#define _gloffset_Lightiv 162 -#define _gloffset_LightModelf 163 -#define _gloffset_LightModelfv 164 -#define _gloffset_LightModeli 165 -#define _gloffset_LightModeliv 166 -#define _gloffset_LineStipple 167 -#define _gloffset_LineWidth 168 -#define _gloffset_Materialf 169 -#define _gloffset_Materialfv 170 -#define _gloffset_Materiali 171 -#define _gloffset_Materialiv 172 -#define _gloffset_PointSize 173 -#define _gloffset_PolygonMode 174 -#define _gloffset_PolygonStipple 175 -#define _gloffset_Scissor 176 -#define _gloffset_ShadeModel 177 -#define _gloffset_TexParameterf 178 -#define _gloffset_TexParameterfv 179 -#define _gloffset_TexParameteri 180 -#define _gloffset_TexParameteriv 181 -#define _gloffset_TexImage1D 182 -#define _gloffset_TexImage2D 183 -#define _gloffset_TexEnvf 184 -#define _gloffset_TexEnvfv 185 -#define _gloffset_TexEnvi 186 -#define _gloffset_TexEnviv 187 -#define _gloffset_TexGend 188 -#define _gloffset_TexGendv 189 -#define _gloffset_TexGenf 190 -#define _gloffset_TexGenfv 191 -#define _gloffset_TexGeni 192 -#define _gloffset_TexGeniv 193 -#define _gloffset_FeedbackBuffer 194 -#define _gloffset_SelectBuffer 195 -#define _gloffset_RenderMode 196 -#define _gloffset_InitNames 197 -#define _gloffset_LoadName 198 -#define _gloffset_PassThrough 199 -#define _gloffset_PopName 200 -#define _gloffset_PushName 201 -#define _gloffset_DrawBuffer 202 -#define _gloffset_Clear 203 -#define _gloffset_ClearAccum 204 -#define _gloffset_ClearIndex 205 -#define _gloffset_ClearColor 206 -#define _gloffset_ClearStencil 207 -#define _gloffset_ClearDepth 208 -#define _gloffset_StencilMask 209 -#define _gloffset_ColorMask 210 -#define _gloffset_DepthMask 211 -#define _gloffset_IndexMask 212 -#define _gloffset_Accum 213 -#define _gloffset_Disable 214 -#define _gloffset_Enable 215 -#define _gloffset_Finish 216 -#define _gloffset_Flush 217 -#define _gloffset_PopAttrib 218 -#define _gloffset_PushAttrib 219 -#define _gloffset_Map1d 220 -#define _gloffset_Map1f 221 -#define _gloffset_Map2d 222 -#define _gloffset_Map2f 223 -#define _gloffset_MapGrid1d 224 -#define _gloffset_MapGrid1f 225 -#define _gloffset_MapGrid2d 226 -#define _gloffset_MapGrid2f 227 -#define _gloffset_EvalCoord1d 228 -#define _gloffset_EvalCoord1dv 229 -#define _gloffset_EvalCoord1f 230 -#define _gloffset_EvalCoord1fv 231 -#define _gloffset_EvalCoord2d 232 -#define _gloffset_EvalCoord2dv 233 -#define _gloffset_EvalCoord2f 234 -#define _gloffset_EvalCoord2fv 235 -#define _gloffset_EvalMesh1 236 -#define _gloffset_EvalPoint1 237 -#define _gloffset_EvalMesh2 238 -#define _gloffset_EvalPoint2 239 -#define _gloffset_AlphaFunc 240 -#define _gloffset_BlendFunc 241 -#define _gloffset_LogicOp 242 -#define _gloffset_StencilFunc 243 -#define _gloffset_StencilOp 244 -#define _gloffset_DepthFunc 245 -#define _gloffset_PixelZoom 246 -#define _gloffset_PixelTransferf 247 -#define _gloffset_PixelTransferi 248 -#define _gloffset_PixelStoref 249 -#define _gloffset_PixelStorei 250 -#define _gloffset_PixelMapfv 251 -#define _gloffset_PixelMapuiv 252 -#define _gloffset_PixelMapusv 253 -#define _gloffset_ReadBuffer 254 -#define _gloffset_CopyPixels 255 -#define _gloffset_ReadPixels 256 -#define _gloffset_DrawPixels 257 -#define _gloffset_GetBooleanv 258 -#define _gloffset_GetClipPlane 259 -#define _gloffset_GetDoublev 260 -#define _gloffset_GetError 261 -#define _gloffset_GetFloatv 262 -#define _gloffset_GetIntegerv 263 -#define _gloffset_GetLightfv 264 -#define _gloffset_GetLightiv 265 -#define _gloffset_GetMapdv 266 -#define _gloffset_GetMapfv 267 -#define _gloffset_GetMapiv 268 -#define _gloffset_GetMaterialfv 269 -#define _gloffset_GetMaterialiv 270 -#define _gloffset_GetPixelMapfv 271 -#define _gloffset_GetPixelMapuiv 272 -#define _gloffset_GetPixelMapusv 273 -#define _gloffset_GetPolygonStipple 274 -#define _gloffset_GetString 275 -#define _gloffset_GetTexEnvfv 276 -#define _gloffset_GetTexEnviv 277 -#define _gloffset_GetTexGendv 278 -#define _gloffset_GetTexGenfv 279 -#define _gloffset_GetTexGeniv 280 -#define _gloffset_GetTexImage 281 -#define _gloffset_GetTexParameterfv 282 -#define _gloffset_GetTexParameteriv 283 -#define _gloffset_GetTexLevelParameterfv 284 -#define _gloffset_GetTexLevelParameteriv 285 -#define _gloffset_IsEnabled 286 -#define _gloffset_IsList 287 -#define _gloffset_DepthRange 288 -#define _gloffset_Frustum 289 -#define _gloffset_LoadIdentity 290 -#define _gloffset_LoadMatrixf 291 -#define _gloffset_LoadMatrixd 292 -#define _gloffset_MatrixMode 293 -#define _gloffset_MultMatrixf 294 -#define _gloffset_MultMatrixd 295 -#define _gloffset_Ortho 296 -#define _gloffset_PopMatrix 297 -#define _gloffset_PushMatrix 298 -#define _gloffset_Rotated 299 -#define _gloffset_Rotatef 300 -#define _gloffset_Scaled 301 -#define _gloffset_Scalef 302 -#define _gloffset_Translated 303 -#define _gloffset_Translatef 304 -#define _gloffset_Viewport 305 -#define _gloffset_ArrayElement 306 -#define _gloffset_BindTexture 307 -#define _gloffset_ColorPointer 308 -#define _gloffset_DisableClientState 309 -#define _gloffset_DrawArrays 310 -#define _gloffset_DrawElements 311 -#define _gloffset_EdgeFlagPointer 312 -#define _gloffset_EnableClientState 313 -#define _gloffset_IndexPointer 314 -#define _gloffset_Indexub 315 -#define _gloffset_Indexubv 316 -#define _gloffset_InterleavedArrays 317 -#define _gloffset_NormalPointer 318 -#define _gloffset_PolygonOffset 319 -#define _gloffset_TexCoordPointer 320 -#define _gloffset_VertexPointer 321 -#define _gloffset_AreTexturesResident 322 -#define _gloffset_CopyTexImage1D 323 -#define _gloffset_CopyTexImage2D 324 -#define _gloffset_CopyTexSubImage1D 325 -#define _gloffset_CopyTexSubImage2D 326 -#define _gloffset_DeleteTextures 327 -#define _gloffset_GenTextures 328 -#define _gloffset_GetPointerv 329 -#define _gloffset_IsTexture 330 -#define _gloffset_PrioritizeTextures 331 -#define _gloffset_TexSubImage1D 332 -#define _gloffset_TexSubImage2D 333 -#define _gloffset_PopClientAttrib 334 -#define _gloffset_PushClientAttrib 335 -#define _gloffset_BlendColor 336 -#define _gloffset_BlendEquation 337 -#define _gloffset_DrawRangeElements 338 -#define _gloffset_ColorTable 339 -#define _gloffset_ColorTableParameterfv 340 -#define _gloffset_ColorTableParameteriv 341 -#define _gloffset_CopyColorTable 342 -#define _gloffset_GetColorTable 343 -#define _gloffset_GetColorTableParameterfv 344 -#define _gloffset_GetColorTableParameteriv 345 -#define _gloffset_ColorSubTable 346 -#define _gloffset_CopyColorSubTable 347 -#define _gloffset_ConvolutionFilter1D 348 -#define _gloffset_ConvolutionFilter2D 349 -#define _gloffset_ConvolutionParameterf 350 -#define _gloffset_ConvolutionParameterfv 351 -#define _gloffset_ConvolutionParameteri 352 -#define _gloffset_ConvolutionParameteriv 353 -#define _gloffset_CopyConvolutionFilter1D 354 -#define _gloffset_CopyConvolutionFilter2D 355 -#define _gloffset_GetConvolutionFilter 356 -#define _gloffset_GetConvolutionParameterfv 357 -#define _gloffset_GetConvolutionParameteriv 358 -#define _gloffset_GetSeparableFilter 359 -#define _gloffset_SeparableFilter2D 360 -#define _gloffset_GetHistogram 361 -#define _gloffset_GetHistogramParameterfv 362 -#define _gloffset_GetHistogramParameteriv 363 -#define _gloffset_GetMinmax 364 -#define _gloffset_GetMinmaxParameterfv 365 -#define _gloffset_GetMinmaxParameteriv 366 -#define _gloffset_Histogram 367 -#define _gloffset_Minmax 368 -#define _gloffset_ResetHistogram 369 -#define _gloffset_ResetMinmax 370 -#define _gloffset_TexImage3D 371 -#define _gloffset_TexSubImage3D 372 -#define _gloffset_CopyTexSubImage3D 373 -#define _gloffset_ActiveTextureARB 374 -#define _gloffset_ClientActiveTextureARB 375 -#define _gloffset_MultiTexCoord1dARB 376 -#define _gloffset_MultiTexCoord1dvARB 377 -#define _gloffset_MultiTexCoord1fARB 378 -#define _gloffset_MultiTexCoord1fvARB 379 -#define _gloffset_MultiTexCoord1iARB 380 -#define _gloffset_MultiTexCoord1ivARB 381 -#define _gloffset_MultiTexCoord1sARB 382 -#define _gloffset_MultiTexCoord1svARB 383 -#define _gloffset_MultiTexCoord2dARB 384 -#define _gloffset_MultiTexCoord2dvARB 385 -#define _gloffset_MultiTexCoord2fARB 386 -#define _gloffset_MultiTexCoord2fvARB 387 -#define _gloffset_MultiTexCoord2iARB 388 -#define _gloffset_MultiTexCoord2ivARB 389 -#define _gloffset_MultiTexCoord2sARB 390 -#define _gloffset_MultiTexCoord2svARB 391 -#define _gloffset_MultiTexCoord3dARB 392 -#define _gloffset_MultiTexCoord3dvARB 393 -#define _gloffset_MultiTexCoord3fARB 394 -#define _gloffset_MultiTexCoord3fvARB 395 -#define _gloffset_MultiTexCoord3iARB 396 -#define _gloffset_MultiTexCoord3ivARB 397 -#define _gloffset_MultiTexCoord3sARB 398 -#define _gloffset_MultiTexCoord3svARB 399 -#define _gloffset_MultiTexCoord4dARB 400 -#define _gloffset_MultiTexCoord4dvARB 401 -#define _gloffset_MultiTexCoord4fARB 402 -#define _gloffset_MultiTexCoord4fvARB 403 -#define _gloffset_MultiTexCoord4iARB 404 -#define _gloffset_MultiTexCoord4ivARB 405 -#define _gloffset_MultiTexCoord4sARB 406 -#define _gloffset_MultiTexCoord4svARB 407 - -#if !defined(_GLAPI_USE_REMAP_TABLE) - -#define _gloffset_AttachShader 408 -#define _gloffset_CreateProgram 409 -#define _gloffset_CreateShader 410 -#define _gloffset_DeleteProgram 411 -#define _gloffset_DeleteShader 412 -#define _gloffset_DetachShader 413 -#define _gloffset_GetAttachedShaders 414 -#define _gloffset_GetProgramInfoLog 415 -#define _gloffset_GetProgramiv 416 -#define _gloffset_GetShaderInfoLog 417 -#define _gloffset_GetShaderiv 418 -#define _gloffset_IsProgram 419 -#define _gloffset_IsShader 420 -#define _gloffset_StencilFuncSeparate 421 -#define _gloffset_StencilMaskSeparate 422 -#define _gloffset_StencilOpSeparate 423 -#define _gloffset_UniformMatrix2x3fv 424 -#define _gloffset_UniformMatrix2x4fv 425 -#define _gloffset_UniformMatrix3x2fv 426 -#define _gloffset_UniformMatrix3x4fv 427 -#define _gloffset_UniformMatrix4x2fv 428 -#define _gloffset_UniformMatrix4x3fv 429 -#define _gloffset_DrawArraysInstanced 430 -#define _gloffset_DrawElementsInstanced 431 -#define _gloffset_LoadTransposeMatrixdARB 432 -#define _gloffset_LoadTransposeMatrixfARB 433 -#define _gloffset_MultTransposeMatrixdARB 434 -#define _gloffset_MultTransposeMatrixfARB 435 -#define _gloffset_SampleCoverageARB 436 -#define _gloffset_CompressedTexImage1DARB 437 -#define _gloffset_CompressedTexImage2DARB 438 -#define _gloffset_CompressedTexImage3DARB 439 -#define _gloffset_CompressedTexSubImage1DARB 440 -#define _gloffset_CompressedTexSubImage2DARB 441 -#define _gloffset_CompressedTexSubImage3DARB 442 -#define _gloffset_GetCompressedTexImageARB 443 -#define _gloffset_DisableVertexAttribArrayARB 444 -#define _gloffset_EnableVertexAttribArrayARB 445 -#define _gloffset_GetProgramEnvParameterdvARB 446 -#define _gloffset_GetProgramEnvParameterfvARB 447 -#define _gloffset_GetProgramLocalParameterdvARB 448 -#define _gloffset_GetProgramLocalParameterfvARB 449 -#define _gloffset_GetProgramStringARB 450 -#define _gloffset_GetProgramivARB 451 -#define _gloffset_GetVertexAttribdvARB 452 -#define _gloffset_GetVertexAttribfvARB 453 -#define _gloffset_GetVertexAttribivARB 454 -#define _gloffset_ProgramEnvParameter4dARB 455 -#define _gloffset_ProgramEnvParameter4dvARB 456 -#define _gloffset_ProgramEnvParameter4fARB 457 -#define _gloffset_ProgramEnvParameter4fvARB 458 -#define _gloffset_ProgramLocalParameter4dARB 459 -#define _gloffset_ProgramLocalParameter4dvARB 460 -#define _gloffset_ProgramLocalParameter4fARB 461 -#define _gloffset_ProgramLocalParameter4fvARB 462 -#define _gloffset_ProgramStringARB 463 -#define _gloffset_VertexAttrib1dARB 464 -#define _gloffset_VertexAttrib1dvARB 465 -#define _gloffset_VertexAttrib1fARB 466 -#define _gloffset_VertexAttrib1fvARB 467 -#define _gloffset_VertexAttrib1sARB 468 -#define _gloffset_VertexAttrib1svARB 469 -#define _gloffset_VertexAttrib2dARB 470 -#define _gloffset_VertexAttrib2dvARB 471 -#define _gloffset_VertexAttrib2fARB 472 -#define _gloffset_VertexAttrib2fvARB 473 -#define _gloffset_VertexAttrib2sARB 474 -#define _gloffset_VertexAttrib2svARB 475 -#define _gloffset_VertexAttrib3dARB 476 -#define _gloffset_VertexAttrib3dvARB 477 -#define _gloffset_VertexAttrib3fARB 478 -#define _gloffset_VertexAttrib3fvARB 479 -#define _gloffset_VertexAttrib3sARB 480 -#define _gloffset_VertexAttrib3svARB 481 -#define _gloffset_VertexAttrib4NbvARB 482 -#define _gloffset_VertexAttrib4NivARB 483 -#define _gloffset_VertexAttrib4NsvARB 484 -#define _gloffset_VertexAttrib4NubARB 485 -#define _gloffset_VertexAttrib4NubvARB 486 -#define _gloffset_VertexAttrib4NuivARB 487 -#define _gloffset_VertexAttrib4NusvARB 488 -#define _gloffset_VertexAttrib4bvARB 489 -#define _gloffset_VertexAttrib4dARB 490 -#define _gloffset_VertexAttrib4dvARB 491 -#define _gloffset_VertexAttrib4fARB 492 -#define _gloffset_VertexAttrib4fvARB 493 -#define _gloffset_VertexAttrib4ivARB 494 -#define _gloffset_VertexAttrib4sARB 495 -#define _gloffset_VertexAttrib4svARB 496 -#define _gloffset_VertexAttrib4ubvARB 497 -#define _gloffset_VertexAttrib4uivARB 498 -#define _gloffset_VertexAttrib4usvARB 499 -#define _gloffset_VertexAttribPointerARB 500 -#define _gloffset_BindBufferARB 501 -#define _gloffset_BufferDataARB 502 -#define _gloffset_BufferSubDataARB 503 -#define _gloffset_DeleteBuffersARB 504 -#define _gloffset_GenBuffersARB 505 -#define _gloffset_GetBufferParameterivARB 506 -#define _gloffset_GetBufferPointervARB 507 -#define _gloffset_GetBufferSubDataARB 508 -#define _gloffset_IsBufferARB 509 -#define _gloffset_MapBufferARB 510 -#define _gloffset_UnmapBufferARB 511 -#define _gloffset_BeginQueryARB 512 -#define _gloffset_DeleteQueriesARB 513 -#define _gloffset_EndQueryARB 514 -#define _gloffset_GenQueriesARB 515 -#define _gloffset_GetQueryObjectivARB 516 -#define _gloffset_GetQueryObjectuivARB 517 -#define _gloffset_GetQueryivARB 518 -#define _gloffset_IsQueryARB 519 -#define _gloffset_AttachObjectARB 520 -#define _gloffset_CompileShaderARB 521 -#define _gloffset_CreateProgramObjectARB 522 -#define _gloffset_CreateShaderObjectARB 523 -#define _gloffset_DeleteObjectARB 524 -#define _gloffset_DetachObjectARB 525 -#define _gloffset_GetActiveUniformARB 526 -#define _gloffset_GetAttachedObjectsARB 527 -#define _gloffset_GetHandleARB 528 -#define _gloffset_GetInfoLogARB 529 -#define _gloffset_GetObjectParameterfvARB 530 -#define _gloffset_GetObjectParameterivARB 531 -#define _gloffset_GetShaderSourceARB 532 -#define _gloffset_GetUniformLocationARB 533 -#define _gloffset_GetUniformfvARB 534 -#define _gloffset_GetUniformivARB 535 -#define _gloffset_LinkProgramARB 536 -#define _gloffset_ShaderSourceARB 537 -#define _gloffset_Uniform1fARB 538 -#define _gloffset_Uniform1fvARB 539 -#define _gloffset_Uniform1iARB 540 -#define _gloffset_Uniform1ivARB 541 -#define _gloffset_Uniform2fARB 542 -#define _gloffset_Uniform2fvARB 543 -#define _gloffset_Uniform2iARB 544 -#define _gloffset_Uniform2ivARB 545 -#define _gloffset_Uniform3fARB 546 -#define _gloffset_Uniform3fvARB 547 -#define _gloffset_Uniform3iARB 548 -#define _gloffset_Uniform3ivARB 549 -#define _gloffset_Uniform4fARB 550 -#define _gloffset_Uniform4fvARB 551 -#define _gloffset_Uniform4iARB 552 -#define _gloffset_Uniform4ivARB 553 -#define _gloffset_UniformMatrix2fvARB 554 -#define _gloffset_UniformMatrix3fvARB 555 -#define _gloffset_UniformMatrix4fvARB 556 -#define _gloffset_UseProgramObjectARB 557 -#define _gloffset_ValidateProgramARB 558 -#define _gloffset_BindAttribLocationARB 559 -#define _gloffset_GetActiveAttribARB 560 -#define _gloffset_GetAttribLocationARB 561 -#define _gloffset_DrawBuffersARB 562 -#define _gloffset_RenderbufferStorageMultisample 563 -#define _gloffset_FramebufferTextureARB 564 -#define _gloffset_FramebufferTextureFaceARB 565 -#define _gloffset_ProgramParameteriARB 566 -#define _gloffset_FlushMappedBufferRange 567 -#define _gloffset_MapBufferRange 568 -#define _gloffset_BindVertexArray 569 -#define _gloffset_GenVertexArrays 570 -#define _gloffset_CopyBufferSubData 571 -#define _gloffset_ClientWaitSync 572 -#define _gloffset_DeleteSync 573 -#define _gloffset_FenceSync 574 -#define _gloffset_GetInteger64v 575 -#define _gloffset_GetSynciv 576 -#define _gloffset_IsSync 577 -#define _gloffset_WaitSync 578 -#define _gloffset_DrawElementsBaseVertex 579 -#define _gloffset_DrawRangeElementsBaseVertex 580 -#define _gloffset_MultiDrawElementsBaseVertex 581 -#define _gloffset_BindTransformFeedback 582 -#define _gloffset_DeleteTransformFeedbacks 583 -#define _gloffset_DrawTransformFeedback 584 -#define _gloffset_GenTransformFeedbacks 585 -#define _gloffset_IsTransformFeedback 586 -#define _gloffset_PauseTransformFeedback 587 -#define _gloffset_ResumeTransformFeedback 588 -#define _gloffset_PolygonOffsetEXT 589 -#define _gloffset_GetPixelTexGenParameterfvSGIS 590 -#define _gloffset_GetPixelTexGenParameterivSGIS 591 -#define _gloffset_PixelTexGenParameterfSGIS 592 -#define _gloffset_PixelTexGenParameterfvSGIS 593 -#define _gloffset_PixelTexGenParameteriSGIS 594 -#define _gloffset_PixelTexGenParameterivSGIS 595 -#define _gloffset_SampleMaskSGIS 596 -#define _gloffset_SamplePatternSGIS 597 -#define _gloffset_ColorPointerEXT 598 -#define _gloffset_EdgeFlagPointerEXT 599 -#define _gloffset_IndexPointerEXT 600 -#define _gloffset_NormalPointerEXT 601 -#define _gloffset_TexCoordPointerEXT 602 -#define _gloffset_VertexPointerEXT 603 -#define _gloffset_PointParameterfEXT 604 -#define _gloffset_PointParameterfvEXT 605 -#define _gloffset_LockArraysEXT 606 -#define _gloffset_UnlockArraysEXT 607 -#define _gloffset_SecondaryColor3bEXT 608 -#define _gloffset_SecondaryColor3bvEXT 609 -#define _gloffset_SecondaryColor3dEXT 610 -#define _gloffset_SecondaryColor3dvEXT 611 -#define _gloffset_SecondaryColor3fEXT 612 -#define _gloffset_SecondaryColor3fvEXT 613 -#define _gloffset_SecondaryColor3iEXT 614 -#define _gloffset_SecondaryColor3ivEXT 615 -#define _gloffset_SecondaryColor3sEXT 616 -#define _gloffset_SecondaryColor3svEXT 617 -#define _gloffset_SecondaryColor3ubEXT 618 -#define _gloffset_SecondaryColor3ubvEXT 619 -#define _gloffset_SecondaryColor3uiEXT 620 -#define _gloffset_SecondaryColor3uivEXT 621 -#define _gloffset_SecondaryColor3usEXT 622 -#define _gloffset_SecondaryColor3usvEXT 623 -#define _gloffset_SecondaryColorPointerEXT 624 -#define _gloffset_MultiDrawArraysEXT 625 -#define _gloffset_MultiDrawElementsEXT 626 -#define _gloffset_FogCoordPointerEXT 627 -#define _gloffset_FogCoorddEXT 628 -#define _gloffset_FogCoorddvEXT 629 -#define _gloffset_FogCoordfEXT 630 -#define _gloffset_FogCoordfvEXT 631 -#define _gloffset_PixelTexGenSGIX 632 -#define _gloffset_BlendFuncSeparateEXT 633 -#define _gloffset_FlushVertexArrayRangeNV 634 -#define _gloffset_VertexArrayRangeNV 635 -#define _gloffset_CombinerInputNV 636 -#define _gloffset_CombinerOutputNV 637 -#define _gloffset_CombinerParameterfNV 638 -#define _gloffset_CombinerParameterfvNV 639 -#define _gloffset_CombinerParameteriNV 640 -#define _gloffset_CombinerParameterivNV 641 -#define _gloffset_FinalCombinerInputNV 642 -#define _gloffset_GetCombinerInputParameterfvNV 643 -#define _gloffset_GetCombinerInputParameterivNV 644 -#define _gloffset_GetCombinerOutputParameterfvNV 645 -#define _gloffset_GetCombinerOutputParameterivNV 646 -#define _gloffset_GetFinalCombinerInputParameterfvNV 647 -#define _gloffset_GetFinalCombinerInputParameterivNV 648 -#define _gloffset_ResizeBuffersMESA 649 -#define _gloffset_WindowPos2dMESA 650 -#define _gloffset_WindowPos2dvMESA 651 -#define _gloffset_WindowPos2fMESA 652 -#define _gloffset_WindowPos2fvMESA 653 -#define _gloffset_WindowPos2iMESA 654 -#define _gloffset_WindowPos2ivMESA 655 -#define _gloffset_WindowPos2sMESA 656 -#define _gloffset_WindowPos2svMESA 657 -#define _gloffset_WindowPos3dMESA 658 -#define _gloffset_WindowPos3dvMESA 659 -#define _gloffset_WindowPos3fMESA 660 -#define _gloffset_WindowPos3fvMESA 661 -#define _gloffset_WindowPos3iMESA 662 -#define _gloffset_WindowPos3ivMESA 663 -#define _gloffset_WindowPos3sMESA 664 -#define _gloffset_WindowPos3svMESA 665 -#define _gloffset_WindowPos4dMESA 666 -#define _gloffset_WindowPos4dvMESA 667 -#define _gloffset_WindowPos4fMESA 668 -#define _gloffset_WindowPos4fvMESA 669 -#define _gloffset_WindowPos4iMESA 670 -#define _gloffset_WindowPos4ivMESA 671 -#define _gloffset_WindowPos4sMESA 672 -#define _gloffset_WindowPos4svMESA 673 -#define _gloffset_MultiModeDrawArraysIBM 674 -#define _gloffset_MultiModeDrawElementsIBM 675 -#define _gloffset_DeleteFencesNV 676 -#define _gloffset_FinishFenceNV 677 -#define _gloffset_GenFencesNV 678 -#define _gloffset_GetFenceivNV 679 -#define _gloffset_IsFenceNV 680 -#define _gloffset_SetFenceNV 681 -#define _gloffset_TestFenceNV 682 -#define _gloffset_AreProgramsResidentNV 683 -#define _gloffset_BindProgramNV 684 -#define _gloffset_DeleteProgramsNV 685 -#define _gloffset_ExecuteProgramNV 686 -#define _gloffset_GenProgramsNV 687 -#define _gloffset_GetProgramParameterdvNV 688 -#define _gloffset_GetProgramParameterfvNV 689 -#define _gloffset_GetProgramStringNV 690 -#define _gloffset_GetProgramivNV 691 -#define _gloffset_GetTrackMatrixivNV 692 -#define _gloffset_GetVertexAttribPointervNV 693 -#define _gloffset_GetVertexAttribdvNV 694 -#define _gloffset_GetVertexAttribfvNV 695 -#define _gloffset_GetVertexAttribivNV 696 -#define _gloffset_IsProgramNV 697 -#define _gloffset_LoadProgramNV 698 -#define _gloffset_ProgramParameters4dvNV 699 -#define _gloffset_ProgramParameters4fvNV 700 -#define _gloffset_RequestResidentProgramsNV 701 -#define _gloffset_TrackMatrixNV 702 -#define _gloffset_VertexAttrib1dNV 703 -#define _gloffset_VertexAttrib1dvNV 704 -#define _gloffset_VertexAttrib1fNV 705 -#define _gloffset_VertexAttrib1fvNV 706 -#define _gloffset_VertexAttrib1sNV 707 -#define _gloffset_VertexAttrib1svNV 708 -#define _gloffset_VertexAttrib2dNV 709 -#define _gloffset_VertexAttrib2dvNV 710 -#define _gloffset_VertexAttrib2fNV 711 -#define _gloffset_VertexAttrib2fvNV 712 -#define _gloffset_VertexAttrib2sNV 713 -#define _gloffset_VertexAttrib2svNV 714 -#define _gloffset_VertexAttrib3dNV 715 -#define _gloffset_VertexAttrib3dvNV 716 -#define _gloffset_VertexAttrib3fNV 717 -#define _gloffset_VertexAttrib3fvNV 718 -#define _gloffset_VertexAttrib3sNV 719 -#define _gloffset_VertexAttrib3svNV 720 -#define _gloffset_VertexAttrib4dNV 721 -#define _gloffset_VertexAttrib4dvNV 722 -#define _gloffset_VertexAttrib4fNV 723 -#define _gloffset_VertexAttrib4fvNV 724 -#define _gloffset_VertexAttrib4sNV 725 -#define _gloffset_VertexAttrib4svNV 726 -#define _gloffset_VertexAttrib4ubNV 727 -#define _gloffset_VertexAttrib4ubvNV 728 -#define _gloffset_VertexAttribPointerNV 729 -#define _gloffset_VertexAttribs1dvNV 730 -#define _gloffset_VertexAttribs1fvNV 731 -#define _gloffset_VertexAttribs1svNV 732 -#define _gloffset_VertexAttribs2dvNV 733 -#define _gloffset_VertexAttribs2fvNV 734 -#define _gloffset_VertexAttribs2svNV 735 -#define _gloffset_VertexAttribs3dvNV 736 -#define _gloffset_VertexAttribs3fvNV 737 -#define _gloffset_VertexAttribs3svNV 738 -#define _gloffset_VertexAttribs4dvNV 739 -#define _gloffset_VertexAttribs4fvNV 740 -#define _gloffset_VertexAttribs4svNV 741 -#define _gloffset_VertexAttribs4ubvNV 742 -#define _gloffset_GetTexBumpParameterfvATI 743 -#define _gloffset_GetTexBumpParameterivATI 744 -#define _gloffset_TexBumpParameterfvATI 745 -#define _gloffset_TexBumpParameterivATI 746 -#define _gloffset_AlphaFragmentOp1ATI 747 -#define _gloffset_AlphaFragmentOp2ATI 748 -#define _gloffset_AlphaFragmentOp3ATI 749 -#define _gloffset_BeginFragmentShaderATI 750 -#define _gloffset_BindFragmentShaderATI 751 -#define _gloffset_ColorFragmentOp1ATI 752 -#define _gloffset_ColorFragmentOp2ATI 753 -#define _gloffset_ColorFragmentOp3ATI 754 -#define _gloffset_DeleteFragmentShaderATI 755 -#define _gloffset_EndFragmentShaderATI 756 -#define _gloffset_GenFragmentShadersATI 757 -#define _gloffset_PassTexCoordATI 758 -#define _gloffset_SampleMapATI 759 -#define _gloffset_SetFragmentShaderConstantATI 760 -#define _gloffset_PointParameteriNV 761 -#define _gloffset_PointParameterivNV 762 -#define _gloffset_ActiveStencilFaceEXT 763 -#define _gloffset_BindVertexArrayAPPLE 764 -#define _gloffset_DeleteVertexArraysAPPLE 765 -#define _gloffset_GenVertexArraysAPPLE 766 -#define _gloffset_IsVertexArrayAPPLE 767 -#define _gloffset_GetProgramNamedParameterdvNV 768 -#define _gloffset_GetProgramNamedParameterfvNV 769 -#define _gloffset_ProgramNamedParameter4dNV 770 -#define _gloffset_ProgramNamedParameter4dvNV 771 -#define _gloffset_ProgramNamedParameter4fNV 772 -#define _gloffset_ProgramNamedParameter4fvNV 773 -#define _gloffset_PrimitiveRestartIndexNV 774 -#define _gloffset_PrimitiveRestartNV 775 -#define _gloffset_DepthBoundsEXT 776 -#define _gloffset_BlendEquationSeparateEXT 777 -#define _gloffset_BindFramebufferEXT 778 -#define _gloffset_BindRenderbufferEXT 779 -#define _gloffset_CheckFramebufferStatusEXT 780 -#define _gloffset_DeleteFramebuffersEXT 781 -#define _gloffset_DeleteRenderbuffersEXT 782 -#define _gloffset_FramebufferRenderbufferEXT 783 -#define _gloffset_FramebufferTexture1DEXT 784 -#define _gloffset_FramebufferTexture2DEXT 785 -#define _gloffset_FramebufferTexture3DEXT 786 -#define _gloffset_GenFramebuffersEXT 787 -#define _gloffset_GenRenderbuffersEXT 788 -#define _gloffset_GenerateMipmapEXT 789 -#define _gloffset_GetFramebufferAttachmentParameterivEXT 790 -#define _gloffset_GetRenderbufferParameterivEXT 791 -#define _gloffset_IsFramebufferEXT 792 -#define _gloffset_IsRenderbufferEXT 793 -#define _gloffset_RenderbufferStorageEXT 794 -#define _gloffset_BlitFramebufferEXT 795 -#define _gloffset_BufferParameteriAPPLE 796 -#define _gloffset_FlushMappedBufferRangeAPPLE 797 -#define _gloffset_FramebufferTextureLayerEXT 798 -#define _gloffset_ColorMaskIndexedEXT 799 -#define _gloffset_DisableIndexedEXT 800 -#define _gloffset_EnableIndexedEXT 801 -#define _gloffset_GetBooleanIndexedvEXT 802 -#define _gloffset_GetIntegerIndexedvEXT 803 -#define _gloffset_IsEnabledIndexedEXT 804 -#define _gloffset_BeginConditionalRenderNV 805 -#define _gloffset_EndConditionalRenderNV 806 -#define _gloffset_BeginTransformFeedbackEXT 807 -#define _gloffset_BindBufferBaseEXT 808 -#define _gloffset_BindBufferOffsetEXT 809 -#define _gloffset_BindBufferRangeEXT 810 -#define _gloffset_EndTransformFeedbackEXT 811 -#define _gloffset_GetTransformFeedbackVaryingEXT 812 -#define _gloffset_TransformFeedbackVaryingsEXT 813 -#define _gloffset_ProvokingVertexEXT 814 -#define _gloffset_GetTexParameterPointervAPPLE 815 -#define _gloffset_TextureRangeAPPLE 816 -#define _gloffset_GetObjectParameterivAPPLE 817 -#define _gloffset_ObjectPurgeableAPPLE 818 -#define _gloffset_ObjectUnpurgeableAPPLE 819 -#define _gloffset_StencilFuncSeparateATI 820 -#define _gloffset_ProgramEnvParameters4fvEXT 821 -#define _gloffset_ProgramLocalParameters4fvEXT 822 -#define _gloffset_GetQueryObjecti64vEXT 823 -#define _gloffset_GetQueryObjectui64vEXT 824 -#define _gloffset_EGLImageTargetRenderbufferStorageOES 825 -#define _gloffset_EGLImageTargetTexture2DOES 826 -#define _gloffset_FIRST_DYNAMIC 827 - -#else - -#define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index] -#define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index] -#define _gloffset_CreateShader driDispatchRemapTable[CreateShader_remap_index] -#define _gloffset_DeleteProgram driDispatchRemapTable[DeleteProgram_remap_index] -#define _gloffset_DeleteShader driDispatchRemapTable[DeleteShader_remap_index] -#define _gloffset_DetachShader driDispatchRemapTable[DetachShader_remap_index] -#define _gloffset_GetAttachedShaders driDispatchRemapTable[GetAttachedShaders_remap_index] -#define _gloffset_GetProgramInfoLog driDispatchRemapTable[GetProgramInfoLog_remap_index] -#define _gloffset_GetProgramiv driDispatchRemapTable[GetProgramiv_remap_index] -#define _gloffset_GetShaderInfoLog driDispatchRemapTable[GetShaderInfoLog_remap_index] -#define _gloffset_GetShaderiv driDispatchRemapTable[GetShaderiv_remap_index] -#define _gloffset_IsProgram driDispatchRemapTable[IsProgram_remap_index] -#define _gloffset_IsShader driDispatchRemapTable[IsShader_remap_index] -#define _gloffset_StencilFuncSeparate driDispatchRemapTable[StencilFuncSeparate_remap_index] -#define _gloffset_StencilMaskSeparate driDispatchRemapTable[StencilMaskSeparate_remap_index] -#define _gloffset_StencilOpSeparate driDispatchRemapTable[StencilOpSeparate_remap_index] -#define _gloffset_UniformMatrix2x3fv driDispatchRemapTable[UniformMatrix2x3fv_remap_index] -#define _gloffset_UniformMatrix2x4fv driDispatchRemapTable[UniformMatrix2x4fv_remap_index] -#define _gloffset_UniformMatrix3x2fv driDispatchRemapTable[UniformMatrix3x2fv_remap_index] -#define _gloffset_UniformMatrix3x4fv driDispatchRemapTable[UniformMatrix3x4fv_remap_index] -#define _gloffset_UniformMatrix4x2fv driDispatchRemapTable[UniformMatrix4x2fv_remap_index] -#define _gloffset_UniformMatrix4x3fv driDispatchRemapTable[UniformMatrix4x3fv_remap_index] -#define _gloffset_DrawArraysInstanced driDispatchRemapTable[DrawArraysInstanced_remap_index] -#define _gloffset_DrawElementsInstanced driDispatchRemapTable[DrawElementsInstanced_remap_index] -#define _gloffset_LoadTransposeMatrixdARB driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index] -#define _gloffset_LoadTransposeMatrixfARB driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index] -#define _gloffset_MultTransposeMatrixdARB driDispatchRemapTable[MultTransposeMatrixdARB_remap_index] -#define _gloffset_MultTransposeMatrixfARB driDispatchRemapTable[MultTransposeMatrixfARB_remap_index] -#define _gloffset_SampleCoverageARB driDispatchRemapTable[SampleCoverageARB_remap_index] -#define _gloffset_CompressedTexImage1DARB driDispatchRemapTable[CompressedTexImage1DARB_remap_index] -#define _gloffset_CompressedTexImage2DARB driDispatchRemapTable[CompressedTexImage2DARB_remap_index] -#define _gloffset_CompressedTexImage3DARB driDispatchRemapTable[CompressedTexImage3DARB_remap_index] -#define _gloffset_CompressedTexSubImage1DARB driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index] -#define _gloffset_CompressedTexSubImage2DARB driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index] -#define _gloffset_CompressedTexSubImage3DARB driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index] -#define _gloffset_GetCompressedTexImageARB driDispatchRemapTable[GetCompressedTexImageARB_remap_index] -#define _gloffset_DisableVertexAttribArrayARB driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index] -#define _gloffset_EnableVertexAttribArrayARB driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index] -#define _gloffset_GetProgramEnvParameterdvARB driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index] -#define _gloffset_GetProgramEnvParameterfvARB driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index] -#define _gloffset_GetProgramLocalParameterdvARB driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index] -#define _gloffset_GetProgramLocalParameterfvARB driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index] -#define _gloffset_GetProgramStringARB driDispatchRemapTable[GetProgramStringARB_remap_index] -#define _gloffset_GetProgramivARB driDispatchRemapTable[GetProgramivARB_remap_index] -#define _gloffset_GetVertexAttribdvARB driDispatchRemapTable[GetVertexAttribdvARB_remap_index] -#define _gloffset_GetVertexAttribfvARB driDispatchRemapTable[GetVertexAttribfvARB_remap_index] -#define _gloffset_GetVertexAttribivARB driDispatchRemapTable[GetVertexAttribivARB_remap_index] -#define _gloffset_ProgramEnvParameter4dARB driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index] -#define _gloffset_ProgramEnvParameter4dvARB driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index] -#define _gloffset_ProgramEnvParameter4fARB driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index] -#define _gloffset_ProgramEnvParameter4fvARB driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index] -#define _gloffset_ProgramLocalParameter4dARB driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index] -#define _gloffset_ProgramLocalParameter4dvARB driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index] -#define _gloffset_ProgramLocalParameter4fARB driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index] -#define _gloffset_ProgramLocalParameter4fvARB driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index] -#define _gloffset_ProgramStringARB driDispatchRemapTable[ProgramStringARB_remap_index] -#define _gloffset_VertexAttrib1dARB driDispatchRemapTable[VertexAttrib1dARB_remap_index] -#define _gloffset_VertexAttrib1dvARB driDispatchRemapTable[VertexAttrib1dvARB_remap_index] -#define _gloffset_VertexAttrib1fARB driDispatchRemapTable[VertexAttrib1fARB_remap_index] -#define _gloffset_VertexAttrib1fvARB driDispatchRemapTable[VertexAttrib1fvARB_remap_index] -#define _gloffset_VertexAttrib1sARB driDispatchRemapTable[VertexAttrib1sARB_remap_index] -#define _gloffset_VertexAttrib1svARB driDispatchRemapTable[VertexAttrib1svARB_remap_index] -#define _gloffset_VertexAttrib2dARB driDispatchRemapTable[VertexAttrib2dARB_remap_index] -#define _gloffset_VertexAttrib2dvARB driDispatchRemapTable[VertexAttrib2dvARB_remap_index] -#define _gloffset_VertexAttrib2fARB driDispatchRemapTable[VertexAttrib2fARB_remap_index] -#define _gloffset_VertexAttrib2fvARB driDispatchRemapTable[VertexAttrib2fvARB_remap_index] -#define _gloffset_VertexAttrib2sARB driDispatchRemapTable[VertexAttrib2sARB_remap_index] -#define _gloffset_VertexAttrib2svARB driDispatchRemapTable[VertexAttrib2svARB_remap_index] -#define _gloffset_VertexAttrib3dARB driDispatchRemapTable[VertexAttrib3dARB_remap_index] -#define _gloffset_VertexAttrib3dvARB driDispatchRemapTable[VertexAttrib3dvARB_remap_index] -#define _gloffset_VertexAttrib3fARB driDispatchRemapTable[VertexAttrib3fARB_remap_index] -#define _gloffset_VertexAttrib3fvARB driDispatchRemapTable[VertexAttrib3fvARB_remap_index] -#define _gloffset_VertexAttrib3sARB driDispatchRemapTable[VertexAttrib3sARB_remap_index] -#define _gloffset_VertexAttrib3svARB driDispatchRemapTable[VertexAttrib3svARB_remap_index] -#define _gloffset_VertexAttrib4NbvARB driDispatchRemapTable[VertexAttrib4NbvARB_remap_index] -#define _gloffset_VertexAttrib4NivARB driDispatchRemapTable[VertexAttrib4NivARB_remap_index] -#define _gloffset_VertexAttrib4NsvARB driDispatchRemapTable[VertexAttrib4NsvARB_remap_index] -#define _gloffset_VertexAttrib4NubARB driDispatchRemapTable[VertexAttrib4NubARB_remap_index] -#define _gloffset_VertexAttrib4NubvARB driDispatchRemapTable[VertexAttrib4NubvARB_remap_index] -#define _gloffset_VertexAttrib4NuivARB driDispatchRemapTable[VertexAttrib4NuivARB_remap_index] -#define _gloffset_VertexAttrib4NusvARB driDispatchRemapTable[VertexAttrib4NusvARB_remap_index] -#define _gloffset_VertexAttrib4bvARB driDispatchRemapTable[VertexAttrib4bvARB_remap_index] -#define _gloffset_VertexAttrib4dARB driDispatchRemapTable[VertexAttrib4dARB_remap_index] -#define _gloffset_VertexAttrib4dvARB driDispatchRemapTable[VertexAttrib4dvARB_remap_index] -#define _gloffset_VertexAttrib4fARB driDispatchRemapTable[VertexAttrib4fARB_remap_index] -#define _gloffset_VertexAttrib4fvARB driDispatchRemapTable[VertexAttrib4fvARB_remap_index] -#define _gloffset_VertexAttrib4ivARB driDispatchRemapTable[VertexAttrib4ivARB_remap_index] -#define _gloffset_VertexAttrib4sARB driDispatchRemapTable[VertexAttrib4sARB_remap_index] -#define _gloffset_VertexAttrib4svARB driDispatchRemapTable[VertexAttrib4svARB_remap_index] -#define _gloffset_VertexAttrib4ubvARB driDispatchRemapTable[VertexAttrib4ubvARB_remap_index] -#define _gloffset_VertexAttrib4uivARB driDispatchRemapTable[VertexAttrib4uivARB_remap_index] -#define _gloffset_VertexAttrib4usvARB driDispatchRemapTable[VertexAttrib4usvARB_remap_index] -#define _gloffset_VertexAttribPointerARB driDispatchRemapTable[VertexAttribPointerARB_remap_index] -#define _gloffset_BindBufferARB driDispatchRemapTable[BindBufferARB_remap_index] -#define _gloffset_BufferDataARB driDispatchRemapTable[BufferDataARB_remap_index] -#define _gloffset_BufferSubDataARB driDispatchRemapTable[BufferSubDataARB_remap_index] -#define _gloffset_DeleteBuffersARB driDispatchRemapTable[DeleteBuffersARB_remap_index] -#define _gloffset_GenBuffersARB driDispatchRemapTable[GenBuffersARB_remap_index] -#define _gloffset_GetBufferParameterivARB driDispatchRemapTable[GetBufferParameterivARB_remap_index] -#define _gloffset_GetBufferPointervARB driDispatchRemapTable[GetBufferPointervARB_remap_index] -#define _gloffset_GetBufferSubDataARB driDispatchRemapTable[GetBufferSubDataARB_remap_index] -#define _gloffset_IsBufferARB driDispatchRemapTable[IsBufferARB_remap_index] -#define _gloffset_MapBufferARB driDispatchRemapTable[MapBufferARB_remap_index] -#define _gloffset_UnmapBufferARB driDispatchRemapTable[UnmapBufferARB_remap_index] -#define _gloffset_BeginQueryARB driDispatchRemapTable[BeginQueryARB_remap_index] -#define _gloffset_DeleteQueriesARB driDispatchRemapTable[DeleteQueriesARB_remap_index] -#define _gloffset_EndQueryARB driDispatchRemapTable[EndQueryARB_remap_index] -#define _gloffset_GenQueriesARB driDispatchRemapTable[GenQueriesARB_remap_index] -#define _gloffset_GetQueryObjectivARB driDispatchRemapTable[GetQueryObjectivARB_remap_index] -#define _gloffset_GetQueryObjectuivARB driDispatchRemapTable[GetQueryObjectuivARB_remap_index] -#define _gloffset_GetQueryivARB driDispatchRemapTable[GetQueryivARB_remap_index] -#define _gloffset_IsQueryARB driDispatchRemapTable[IsQueryARB_remap_index] -#define _gloffset_AttachObjectARB driDispatchRemapTable[AttachObjectARB_remap_index] -#define _gloffset_CompileShaderARB driDispatchRemapTable[CompileShaderARB_remap_index] -#define _gloffset_CreateProgramObjectARB driDispatchRemapTable[CreateProgramObjectARB_remap_index] -#define _gloffset_CreateShaderObjectARB driDispatchRemapTable[CreateShaderObjectARB_remap_index] -#define _gloffset_DeleteObjectARB driDispatchRemapTable[DeleteObjectARB_remap_index] -#define _gloffset_DetachObjectARB driDispatchRemapTable[DetachObjectARB_remap_index] -#define _gloffset_GetActiveUniformARB driDispatchRemapTable[GetActiveUniformARB_remap_index] -#define _gloffset_GetAttachedObjectsARB driDispatchRemapTable[GetAttachedObjectsARB_remap_index] -#define _gloffset_GetHandleARB driDispatchRemapTable[GetHandleARB_remap_index] -#define _gloffset_GetInfoLogARB driDispatchRemapTable[GetInfoLogARB_remap_index] -#define _gloffset_GetObjectParameterfvARB driDispatchRemapTable[GetObjectParameterfvARB_remap_index] -#define _gloffset_GetObjectParameterivARB driDispatchRemapTable[GetObjectParameterivARB_remap_index] -#define _gloffset_GetShaderSourceARB driDispatchRemapTable[GetShaderSourceARB_remap_index] -#define _gloffset_GetUniformLocationARB driDispatchRemapTable[GetUniformLocationARB_remap_index] -#define _gloffset_GetUniformfvARB driDispatchRemapTable[GetUniformfvARB_remap_index] -#define _gloffset_GetUniformivARB driDispatchRemapTable[GetUniformivARB_remap_index] -#define _gloffset_LinkProgramARB driDispatchRemapTable[LinkProgramARB_remap_index] -#define _gloffset_ShaderSourceARB driDispatchRemapTable[ShaderSourceARB_remap_index] -#define _gloffset_Uniform1fARB driDispatchRemapTable[Uniform1fARB_remap_index] -#define _gloffset_Uniform1fvARB driDispatchRemapTable[Uniform1fvARB_remap_index] -#define _gloffset_Uniform1iARB driDispatchRemapTable[Uniform1iARB_remap_index] -#define _gloffset_Uniform1ivARB driDispatchRemapTable[Uniform1ivARB_remap_index] -#define _gloffset_Uniform2fARB driDispatchRemapTable[Uniform2fARB_remap_index] -#define _gloffset_Uniform2fvARB driDispatchRemapTable[Uniform2fvARB_remap_index] -#define _gloffset_Uniform2iARB driDispatchRemapTable[Uniform2iARB_remap_index] -#define _gloffset_Uniform2ivARB driDispatchRemapTable[Uniform2ivARB_remap_index] -#define _gloffset_Uniform3fARB driDispatchRemapTable[Uniform3fARB_remap_index] -#define _gloffset_Uniform3fvARB driDispatchRemapTable[Uniform3fvARB_remap_index] -#define _gloffset_Uniform3iARB driDispatchRemapTable[Uniform3iARB_remap_index] -#define _gloffset_Uniform3ivARB driDispatchRemapTable[Uniform3ivARB_remap_index] -#define _gloffset_Uniform4fARB driDispatchRemapTable[Uniform4fARB_remap_index] -#define _gloffset_Uniform4fvARB driDispatchRemapTable[Uniform4fvARB_remap_index] -#define _gloffset_Uniform4iARB driDispatchRemapTable[Uniform4iARB_remap_index] -#define _gloffset_Uniform4ivARB driDispatchRemapTable[Uniform4ivARB_remap_index] -#define _gloffset_UniformMatrix2fvARB driDispatchRemapTable[UniformMatrix2fvARB_remap_index] -#define _gloffset_UniformMatrix3fvARB driDispatchRemapTable[UniformMatrix3fvARB_remap_index] -#define _gloffset_UniformMatrix4fvARB driDispatchRemapTable[UniformMatrix4fvARB_remap_index] -#define _gloffset_UseProgramObjectARB driDispatchRemapTable[UseProgramObjectARB_remap_index] -#define _gloffset_ValidateProgramARB driDispatchRemapTable[ValidateProgramARB_remap_index] -#define _gloffset_BindAttribLocationARB driDispatchRemapTable[BindAttribLocationARB_remap_index] -#define _gloffset_GetActiveAttribARB driDispatchRemapTable[GetActiveAttribARB_remap_index] -#define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index] -#define _gloffset_DrawBuffersARB driDispatchRemapTable[DrawBuffersARB_remap_index] -#define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index] -#define _gloffset_FramebufferTextureARB driDispatchRemapTable[FramebufferTextureARB_remap_index] -#define _gloffset_FramebufferTextureFaceARB driDispatchRemapTable[FramebufferTextureFaceARB_remap_index] -#define _gloffset_ProgramParameteriARB driDispatchRemapTable[ProgramParameteriARB_remap_index] -#define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index] -#define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index] -#define _gloffset_BindVertexArray driDispatchRemapTable[BindVertexArray_remap_index] -#define _gloffset_GenVertexArrays driDispatchRemapTable[GenVertexArrays_remap_index] -#define _gloffset_CopyBufferSubData driDispatchRemapTable[CopyBufferSubData_remap_index] -#define _gloffset_ClientWaitSync driDispatchRemapTable[ClientWaitSync_remap_index] -#define _gloffset_DeleteSync driDispatchRemapTable[DeleteSync_remap_index] -#define _gloffset_FenceSync driDispatchRemapTable[FenceSync_remap_index] -#define _gloffset_GetInteger64v driDispatchRemapTable[GetInteger64v_remap_index] -#define _gloffset_GetSynciv driDispatchRemapTable[GetSynciv_remap_index] -#define _gloffset_IsSync driDispatchRemapTable[IsSync_remap_index] -#define _gloffset_WaitSync driDispatchRemapTable[WaitSync_remap_index] -#define _gloffset_DrawElementsBaseVertex driDispatchRemapTable[DrawElementsBaseVertex_remap_index] -#define _gloffset_DrawRangeElementsBaseVertex driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index] -#define _gloffset_MultiDrawElementsBaseVertex driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index] -#define _gloffset_BindTransformFeedback driDispatchRemapTable[BindTransformFeedback_remap_index] -#define _gloffset_DeleteTransformFeedbacks driDispatchRemapTable[DeleteTransformFeedbacks_remap_index] -#define _gloffset_DrawTransformFeedback driDispatchRemapTable[DrawTransformFeedback_remap_index] -#define _gloffset_GenTransformFeedbacks driDispatchRemapTable[GenTransformFeedbacks_remap_index] -#define _gloffset_IsTransformFeedback driDispatchRemapTable[IsTransformFeedback_remap_index] -#define _gloffset_PauseTransformFeedback driDispatchRemapTable[PauseTransformFeedback_remap_index] -#define _gloffset_ResumeTransformFeedback driDispatchRemapTable[ResumeTransformFeedback_remap_index] -#define _gloffset_PolygonOffsetEXT driDispatchRemapTable[PolygonOffsetEXT_remap_index] -#define _gloffset_GetPixelTexGenParameterfvSGIS driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index] -#define _gloffset_GetPixelTexGenParameterivSGIS driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index] -#define _gloffset_PixelTexGenParameterfSGIS driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index] -#define _gloffset_PixelTexGenParameterfvSGIS driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index] -#define _gloffset_PixelTexGenParameteriSGIS driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index] -#define _gloffset_PixelTexGenParameterivSGIS driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index] -#define _gloffset_SampleMaskSGIS driDispatchRemapTable[SampleMaskSGIS_remap_index] -#define _gloffset_SamplePatternSGIS driDispatchRemapTable[SamplePatternSGIS_remap_index] -#define _gloffset_ColorPointerEXT driDispatchRemapTable[ColorPointerEXT_remap_index] -#define _gloffset_EdgeFlagPointerEXT driDispatchRemapTable[EdgeFlagPointerEXT_remap_index] -#define _gloffset_IndexPointerEXT driDispatchRemapTable[IndexPointerEXT_remap_index] -#define _gloffset_NormalPointerEXT driDispatchRemapTable[NormalPointerEXT_remap_index] -#define _gloffset_TexCoordPointerEXT driDispatchRemapTable[TexCoordPointerEXT_remap_index] -#define _gloffset_VertexPointerEXT driDispatchRemapTable[VertexPointerEXT_remap_index] -#define _gloffset_PointParameterfEXT driDispatchRemapTable[PointParameterfEXT_remap_index] -#define _gloffset_PointParameterfvEXT driDispatchRemapTable[PointParameterfvEXT_remap_index] -#define _gloffset_LockArraysEXT driDispatchRemapTable[LockArraysEXT_remap_index] -#define _gloffset_UnlockArraysEXT driDispatchRemapTable[UnlockArraysEXT_remap_index] -#define _gloffset_SecondaryColor3bEXT driDispatchRemapTable[SecondaryColor3bEXT_remap_index] -#define _gloffset_SecondaryColor3bvEXT driDispatchRemapTable[SecondaryColor3bvEXT_remap_index] -#define _gloffset_SecondaryColor3dEXT driDispatchRemapTable[SecondaryColor3dEXT_remap_index] -#define _gloffset_SecondaryColor3dvEXT driDispatchRemapTable[SecondaryColor3dvEXT_remap_index] -#define _gloffset_SecondaryColor3fEXT driDispatchRemapTable[SecondaryColor3fEXT_remap_index] -#define _gloffset_SecondaryColor3fvEXT driDispatchRemapTable[SecondaryColor3fvEXT_remap_index] -#define _gloffset_SecondaryColor3iEXT driDispatchRemapTable[SecondaryColor3iEXT_remap_index] -#define _gloffset_SecondaryColor3ivEXT driDispatchRemapTable[SecondaryColor3ivEXT_remap_index] -#define _gloffset_SecondaryColor3sEXT driDispatchRemapTable[SecondaryColor3sEXT_remap_index] -#define _gloffset_SecondaryColor3svEXT driDispatchRemapTable[SecondaryColor3svEXT_remap_index] -#define _gloffset_SecondaryColor3ubEXT driDispatchRemapTable[SecondaryColor3ubEXT_remap_index] -#define _gloffset_SecondaryColor3ubvEXT driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index] -#define _gloffset_SecondaryColor3uiEXT driDispatchRemapTable[SecondaryColor3uiEXT_remap_index] -#define _gloffset_SecondaryColor3uivEXT driDispatchRemapTable[SecondaryColor3uivEXT_remap_index] -#define _gloffset_SecondaryColor3usEXT driDispatchRemapTable[SecondaryColor3usEXT_remap_index] -#define _gloffset_SecondaryColor3usvEXT driDispatchRemapTable[SecondaryColor3usvEXT_remap_index] -#define _gloffset_SecondaryColorPointerEXT driDispatchRemapTable[SecondaryColorPointerEXT_remap_index] -#define _gloffset_MultiDrawArraysEXT driDispatchRemapTable[MultiDrawArraysEXT_remap_index] -#define _gloffset_MultiDrawElementsEXT driDispatchRemapTable[MultiDrawElementsEXT_remap_index] -#define _gloffset_FogCoordPointerEXT driDispatchRemapTable[FogCoordPointerEXT_remap_index] -#define _gloffset_FogCoorddEXT driDispatchRemapTable[FogCoorddEXT_remap_index] -#define _gloffset_FogCoorddvEXT driDispatchRemapTable[FogCoorddvEXT_remap_index] -#define _gloffset_FogCoordfEXT driDispatchRemapTable[FogCoordfEXT_remap_index] -#define _gloffset_FogCoordfvEXT driDispatchRemapTable[FogCoordfvEXT_remap_index] -#define _gloffset_PixelTexGenSGIX driDispatchRemapTable[PixelTexGenSGIX_remap_index] -#define _gloffset_BlendFuncSeparateEXT driDispatchRemapTable[BlendFuncSeparateEXT_remap_index] -#define _gloffset_FlushVertexArrayRangeNV driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index] -#define _gloffset_VertexArrayRangeNV driDispatchRemapTable[VertexArrayRangeNV_remap_index] -#define _gloffset_CombinerInputNV driDispatchRemapTable[CombinerInputNV_remap_index] -#define _gloffset_CombinerOutputNV driDispatchRemapTable[CombinerOutputNV_remap_index] -#define _gloffset_CombinerParameterfNV driDispatchRemapTable[CombinerParameterfNV_remap_index] -#define _gloffset_CombinerParameterfvNV driDispatchRemapTable[CombinerParameterfvNV_remap_index] -#define _gloffset_CombinerParameteriNV driDispatchRemapTable[CombinerParameteriNV_remap_index] -#define _gloffset_CombinerParameterivNV driDispatchRemapTable[CombinerParameterivNV_remap_index] -#define _gloffset_FinalCombinerInputNV driDispatchRemapTable[FinalCombinerInputNV_remap_index] -#define _gloffset_GetCombinerInputParameterfvNV driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index] -#define _gloffset_GetCombinerInputParameterivNV driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index] -#define _gloffset_GetCombinerOutputParameterfvNV driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index] -#define _gloffset_GetCombinerOutputParameterivNV driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index] -#define _gloffset_GetFinalCombinerInputParameterfvNV driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index] -#define _gloffset_GetFinalCombinerInputParameterivNV driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index] -#define _gloffset_ResizeBuffersMESA driDispatchRemapTable[ResizeBuffersMESA_remap_index] -#define _gloffset_WindowPos2dMESA driDispatchRemapTable[WindowPos2dMESA_remap_index] -#define _gloffset_WindowPos2dvMESA driDispatchRemapTable[WindowPos2dvMESA_remap_index] -#define _gloffset_WindowPos2fMESA driDispatchRemapTable[WindowPos2fMESA_remap_index] -#define _gloffset_WindowPos2fvMESA driDispatchRemapTable[WindowPos2fvMESA_remap_index] -#define _gloffset_WindowPos2iMESA driDispatchRemapTable[WindowPos2iMESA_remap_index] -#define _gloffset_WindowPos2ivMESA driDispatchRemapTable[WindowPos2ivMESA_remap_index] -#define _gloffset_WindowPos2sMESA driDispatchRemapTable[WindowPos2sMESA_remap_index] -#define _gloffset_WindowPos2svMESA driDispatchRemapTable[WindowPos2svMESA_remap_index] -#define _gloffset_WindowPos3dMESA driDispatchRemapTable[WindowPos3dMESA_remap_index] -#define _gloffset_WindowPos3dvMESA driDispatchRemapTable[WindowPos3dvMESA_remap_index] -#define _gloffset_WindowPos3fMESA driDispatchRemapTable[WindowPos3fMESA_remap_index] -#define _gloffset_WindowPos3fvMESA driDispatchRemapTable[WindowPos3fvMESA_remap_index] -#define _gloffset_WindowPos3iMESA driDispatchRemapTable[WindowPos3iMESA_remap_index] -#define _gloffset_WindowPos3ivMESA driDispatchRemapTable[WindowPos3ivMESA_remap_index] -#define _gloffset_WindowPos3sMESA driDispatchRemapTable[WindowPos3sMESA_remap_index] -#define _gloffset_WindowPos3svMESA driDispatchRemapTable[WindowPos3svMESA_remap_index] -#define _gloffset_WindowPos4dMESA driDispatchRemapTable[WindowPos4dMESA_remap_index] -#define _gloffset_WindowPos4dvMESA driDispatchRemapTable[WindowPos4dvMESA_remap_index] -#define _gloffset_WindowPos4fMESA driDispatchRemapTable[WindowPos4fMESA_remap_index] -#define _gloffset_WindowPos4fvMESA driDispatchRemapTable[WindowPos4fvMESA_remap_index] -#define _gloffset_WindowPos4iMESA driDispatchRemapTable[WindowPos4iMESA_remap_index] -#define _gloffset_WindowPos4ivMESA driDispatchRemapTable[WindowPos4ivMESA_remap_index] -#define _gloffset_WindowPos4sMESA driDispatchRemapTable[WindowPos4sMESA_remap_index] -#define _gloffset_WindowPos4svMESA driDispatchRemapTable[WindowPos4svMESA_remap_index] -#define _gloffset_MultiModeDrawArraysIBM driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index] -#define _gloffset_MultiModeDrawElementsIBM driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index] -#define _gloffset_DeleteFencesNV driDispatchRemapTable[DeleteFencesNV_remap_index] -#define _gloffset_FinishFenceNV driDispatchRemapTable[FinishFenceNV_remap_index] -#define _gloffset_GenFencesNV driDispatchRemapTable[GenFencesNV_remap_index] -#define _gloffset_GetFenceivNV driDispatchRemapTable[GetFenceivNV_remap_index] -#define _gloffset_IsFenceNV driDispatchRemapTable[IsFenceNV_remap_index] -#define _gloffset_SetFenceNV driDispatchRemapTable[SetFenceNV_remap_index] -#define _gloffset_TestFenceNV driDispatchRemapTable[TestFenceNV_remap_index] -#define _gloffset_AreProgramsResidentNV driDispatchRemapTable[AreProgramsResidentNV_remap_index] -#define _gloffset_BindProgramNV driDispatchRemapTable[BindProgramNV_remap_index] -#define _gloffset_DeleteProgramsNV driDispatchRemapTable[DeleteProgramsNV_remap_index] -#define _gloffset_ExecuteProgramNV driDispatchRemapTable[ExecuteProgramNV_remap_index] -#define _gloffset_GenProgramsNV driDispatchRemapTable[GenProgramsNV_remap_index] -#define _gloffset_GetProgramParameterdvNV driDispatchRemapTable[GetProgramParameterdvNV_remap_index] -#define _gloffset_GetProgramParameterfvNV driDispatchRemapTable[GetProgramParameterfvNV_remap_index] -#define _gloffset_GetProgramStringNV driDispatchRemapTable[GetProgramStringNV_remap_index] -#define _gloffset_GetProgramivNV driDispatchRemapTable[GetProgramivNV_remap_index] -#define _gloffset_GetTrackMatrixivNV driDispatchRemapTable[GetTrackMatrixivNV_remap_index] -#define _gloffset_GetVertexAttribPointervNV driDispatchRemapTable[GetVertexAttribPointervNV_remap_index] -#define _gloffset_GetVertexAttribdvNV driDispatchRemapTable[GetVertexAttribdvNV_remap_index] -#define _gloffset_GetVertexAttribfvNV driDispatchRemapTable[GetVertexAttribfvNV_remap_index] -#define _gloffset_GetVertexAttribivNV driDispatchRemapTable[GetVertexAttribivNV_remap_index] -#define _gloffset_IsProgramNV driDispatchRemapTable[IsProgramNV_remap_index] -#define _gloffset_LoadProgramNV driDispatchRemapTable[LoadProgramNV_remap_index] -#define _gloffset_ProgramParameters4dvNV driDispatchRemapTable[ProgramParameters4dvNV_remap_index] -#define _gloffset_ProgramParameters4fvNV driDispatchRemapTable[ProgramParameters4fvNV_remap_index] -#define _gloffset_RequestResidentProgramsNV driDispatchRemapTable[RequestResidentProgramsNV_remap_index] -#define _gloffset_TrackMatrixNV driDispatchRemapTable[TrackMatrixNV_remap_index] -#define _gloffset_VertexAttrib1dNV driDispatchRemapTable[VertexAttrib1dNV_remap_index] -#define _gloffset_VertexAttrib1dvNV driDispatchRemapTable[VertexAttrib1dvNV_remap_index] -#define _gloffset_VertexAttrib1fNV driDispatchRemapTable[VertexAttrib1fNV_remap_index] -#define _gloffset_VertexAttrib1fvNV driDispatchRemapTable[VertexAttrib1fvNV_remap_index] -#define _gloffset_VertexAttrib1sNV driDispatchRemapTable[VertexAttrib1sNV_remap_index] -#define _gloffset_VertexAttrib1svNV driDispatchRemapTable[VertexAttrib1svNV_remap_index] -#define _gloffset_VertexAttrib2dNV driDispatchRemapTable[VertexAttrib2dNV_remap_index] -#define _gloffset_VertexAttrib2dvNV driDispatchRemapTable[VertexAttrib2dvNV_remap_index] -#define _gloffset_VertexAttrib2fNV driDispatchRemapTable[VertexAttrib2fNV_remap_index] -#define _gloffset_VertexAttrib2fvNV driDispatchRemapTable[VertexAttrib2fvNV_remap_index] -#define _gloffset_VertexAttrib2sNV driDispatchRemapTable[VertexAttrib2sNV_remap_index] -#define _gloffset_VertexAttrib2svNV driDispatchRemapTable[VertexAttrib2svNV_remap_index] -#define _gloffset_VertexAttrib3dNV driDispatchRemapTable[VertexAttrib3dNV_remap_index] -#define _gloffset_VertexAttrib3dvNV driDispatchRemapTable[VertexAttrib3dvNV_remap_index] -#define _gloffset_VertexAttrib3fNV driDispatchRemapTable[VertexAttrib3fNV_remap_index] -#define _gloffset_VertexAttrib3fvNV driDispatchRemapTable[VertexAttrib3fvNV_remap_index] -#define _gloffset_VertexAttrib3sNV driDispatchRemapTable[VertexAttrib3sNV_remap_index] -#define _gloffset_VertexAttrib3svNV driDispatchRemapTable[VertexAttrib3svNV_remap_index] -#define _gloffset_VertexAttrib4dNV driDispatchRemapTable[VertexAttrib4dNV_remap_index] -#define _gloffset_VertexAttrib4dvNV driDispatchRemapTable[VertexAttrib4dvNV_remap_index] -#define _gloffset_VertexAttrib4fNV driDispatchRemapTable[VertexAttrib4fNV_remap_index] -#define _gloffset_VertexAttrib4fvNV driDispatchRemapTable[VertexAttrib4fvNV_remap_index] -#define _gloffset_VertexAttrib4sNV driDispatchRemapTable[VertexAttrib4sNV_remap_index] -#define _gloffset_VertexAttrib4svNV driDispatchRemapTable[VertexAttrib4svNV_remap_index] -#define _gloffset_VertexAttrib4ubNV driDispatchRemapTable[VertexAttrib4ubNV_remap_index] -#define _gloffset_VertexAttrib4ubvNV driDispatchRemapTable[VertexAttrib4ubvNV_remap_index] -#define _gloffset_VertexAttribPointerNV driDispatchRemapTable[VertexAttribPointerNV_remap_index] -#define _gloffset_VertexAttribs1dvNV driDispatchRemapTable[VertexAttribs1dvNV_remap_index] -#define _gloffset_VertexAttribs1fvNV driDispatchRemapTable[VertexAttribs1fvNV_remap_index] -#define _gloffset_VertexAttribs1svNV driDispatchRemapTable[VertexAttribs1svNV_remap_index] -#define _gloffset_VertexAttribs2dvNV driDispatchRemapTable[VertexAttribs2dvNV_remap_index] -#define _gloffset_VertexAttribs2fvNV driDispatchRemapTable[VertexAttribs2fvNV_remap_index] -#define _gloffset_VertexAttribs2svNV driDispatchRemapTable[VertexAttribs2svNV_remap_index] -#define _gloffset_VertexAttribs3dvNV driDispatchRemapTable[VertexAttribs3dvNV_remap_index] -#define _gloffset_VertexAttribs3fvNV driDispatchRemapTable[VertexAttribs3fvNV_remap_index] -#define _gloffset_VertexAttribs3svNV driDispatchRemapTable[VertexAttribs3svNV_remap_index] -#define _gloffset_VertexAttribs4dvNV driDispatchRemapTable[VertexAttribs4dvNV_remap_index] -#define _gloffset_VertexAttribs4fvNV driDispatchRemapTable[VertexAttribs4fvNV_remap_index] -#define _gloffset_VertexAttribs4svNV driDispatchRemapTable[VertexAttribs4svNV_remap_index] -#define _gloffset_VertexAttribs4ubvNV driDispatchRemapTable[VertexAttribs4ubvNV_remap_index] -#define _gloffset_GetTexBumpParameterfvATI driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index] -#define _gloffset_GetTexBumpParameterivATI driDispatchRemapTable[GetTexBumpParameterivATI_remap_index] -#define _gloffset_TexBumpParameterfvATI driDispatchRemapTable[TexBumpParameterfvATI_remap_index] -#define _gloffset_TexBumpParameterivATI driDispatchRemapTable[TexBumpParameterivATI_remap_index] -#define _gloffset_AlphaFragmentOp1ATI driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index] -#define _gloffset_AlphaFragmentOp2ATI driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index] -#define _gloffset_AlphaFragmentOp3ATI driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index] -#define _gloffset_BeginFragmentShaderATI driDispatchRemapTable[BeginFragmentShaderATI_remap_index] -#define _gloffset_BindFragmentShaderATI driDispatchRemapTable[BindFragmentShaderATI_remap_index] -#define _gloffset_ColorFragmentOp1ATI driDispatchRemapTable[ColorFragmentOp1ATI_remap_index] -#define _gloffset_ColorFragmentOp2ATI driDispatchRemapTable[ColorFragmentOp2ATI_remap_index] -#define _gloffset_ColorFragmentOp3ATI driDispatchRemapTable[ColorFragmentOp3ATI_remap_index] -#define _gloffset_DeleteFragmentShaderATI driDispatchRemapTable[DeleteFragmentShaderATI_remap_index] -#define _gloffset_EndFragmentShaderATI driDispatchRemapTable[EndFragmentShaderATI_remap_index] -#define _gloffset_GenFragmentShadersATI driDispatchRemapTable[GenFragmentShadersATI_remap_index] -#define _gloffset_PassTexCoordATI driDispatchRemapTable[PassTexCoordATI_remap_index] -#define _gloffset_SampleMapATI driDispatchRemapTable[SampleMapATI_remap_index] -#define _gloffset_SetFragmentShaderConstantATI driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index] -#define _gloffset_PointParameteriNV driDispatchRemapTable[PointParameteriNV_remap_index] -#define _gloffset_PointParameterivNV driDispatchRemapTable[PointParameterivNV_remap_index] -#define _gloffset_ActiveStencilFaceEXT driDispatchRemapTable[ActiveStencilFaceEXT_remap_index] -#define _gloffset_BindVertexArrayAPPLE driDispatchRemapTable[BindVertexArrayAPPLE_remap_index] -#define _gloffset_DeleteVertexArraysAPPLE driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index] -#define _gloffset_GenVertexArraysAPPLE driDispatchRemapTable[GenVertexArraysAPPLE_remap_index] -#define _gloffset_IsVertexArrayAPPLE driDispatchRemapTable[IsVertexArrayAPPLE_remap_index] -#define _gloffset_GetProgramNamedParameterdvNV driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index] -#define _gloffset_GetProgramNamedParameterfvNV driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index] -#define _gloffset_ProgramNamedParameter4dNV driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index] -#define _gloffset_ProgramNamedParameter4dvNV driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index] -#define _gloffset_ProgramNamedParameter4fNV driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index] -#define _gloffset_ProgramNamedParameter4fvNV driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index] -#define _gloffset_PrimitiveRestartIndexNV driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index] -#define _gloffset_PrimitiveRestartNV driDispatchRemapTable[PrimitiveRestartNV_remap_index] -#define _gloffset_DepthBoundsEXT driDispatchRemapTable[DepthBoundsEXT_remap_index] -#define _gloffset_BlendEquationSeparateEXT driDispatchRemapTable[BlendEquationSeparateEXT_remap_index] -#define _gloffset_BindFramebufferEXT driDispatchRemapTable[BindFramebufferEXT_remap_index] -#define _gloffset_BindRenderbufferEXT driDispatchRemapTable[BindRenderbufferEXT_remap_index] -#define _gloffset_CheckFramebufferStatusEXT driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index] -#define _gloffset_DeleteFramebuffersEXT driDispatchRemapTable[DeleteFramebuffersEXT_remap_index] -#define _gloffset_DeleteRenderbuffersEXT driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index] -#define _gloffset_FramebufferRenderbufferEXT driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index] -#define _gloffset_FramebufferTexture1DEXT driDispatchRemapTable[FramebufferTexture1DEXT_remap_index] -#define _gloffset_FramebufferTexture2DEXT driDispatchRemapTable[FramebufferTexture2DEXT_remap_index] -#define _gloffset_FramebufferTexture3DEXT driDispatchRemapTable[FramebufferTexture3DEXT_remap_index] -#define _gloffset_GenFramebuffersEXT driDispatchRemapTable[GenFramebuffersEXT_remap_index] -#define _gloffset_GenRenderbuffersEXT driDispatchRemapTable[GenRenderbuffersEXT_remap_index] -#define _gloffset_GenerateMipmapEXT driDispatchRemapTable[GenerateMipmapEXT_remap_index] -#define _gloffset_GetFramebufferAttachmentParameterivEXT driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index] -#define _gloffset_GetRenderbufferParameterivEXT driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index] -#define _gloffset_IsFramebufferEXT driDispatchRemapTable[IsFramebufferEXT_remap_index] -#define _gloffset_IsRenderbufferEXT driDispatchRemapTable[IsRenderbufferEXT_remap_index] -#define _gloffset_RenderbufferStorageEXT driDispatchRemapTable[RenderbufferStorageEXT_remap_index] -#define _gloffset_BlitFramebufferEXT driDispatchRemapTable[BlitFramebufferEXT_remap_index] -#define _gloffset_BufferParameteriAPPLE driDispatchRemapTable[BufferParameteriAPPLE_remap_index] -#define _gloffset_FlushMappedBufferRangeAPPLE driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index] -#define _gloffset_FramebufferTextureLayerEXT driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index] -#define _gloffset_ColorMaskIndexedEXT driDispatchRemapTable[ColorMaskIndexedEXT_remap_index] -#define _gloffset_DisableIndexedEXT driDispatchRemapTable[DisableIndexedEXT_remap_index] -#define _gloffset_EnableIndexedEXT driDispatchRemapTable[EnableIndexedEXT_remap_index] -#define _gloffset_GetBooleanIndexedvEXT driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index] -#define _gloffset_GetIntegerIndexedvEXT driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index] -#define _gloffset_IsEnabledIndexedEXT driDispatchRemapTable[IsEnabledIndexedEXT_remap_index] -#define _gloffset_BeginConditionalRenderNV driDispatchRemapTable[BeginConditionalRenderNV_remap_index] -#define _gloffset_EndConditionalRenderNV driDispatchRemapTable[EndConditionalRenderNV_remap_index] -#define _gloffset_BeginTransformFeedbackEXT driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index] -#define _gloffset_BindBufferBaseEXT driDispatchRemapTable[BindBufferBaseEXT_remap_index] -#define _gloffset_BindBufferOffsetEXT driDispatchRemapTable[BindBufferOffsetEXT_remap_index] -#define _gloffset_BindBufferRangeEXT driDispatchRemapTable[BindBufferRangeEXT_remap_index] -#define _gloffset_EndTransformFeedbackEXT driDispatchRemapTable[EndTransformFeedbackEXT_remap_index] -#define _gloffset_GetTransformFeedbackVaryingEXT driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index] -#define _gloffset_TransformFeedbackVaryingsEXT driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index] -#define _gloffset_ProvokingVertexEXT driDispatchRemapTable[ProvokingVertexEXT_remap_index] -#define _gloffset_GetTexParameterPointervAPPLE driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index] -#define _gloffset_TextureRangeAPPLE driDispatchRemapTable[TextureRangeAPPLE_remap_index] -#define _gloffset_GetObjectParameterivAPPLE driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index] -#define _gloffset_ObjectPurgeableAPPLE driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index] -#define _gloffset_ObjectUnpurgeableAPPLE driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index] -#define _gloffset_StencilFuncSeparateATI driDispatchRemapTable[StencilFuncSeparateATI_remap_index] -#define _gloffset_ProgramEnvParameters4fvEXT driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index] -#define _gloffset_ProgramLocalParameters4fvEXT driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index] -#define _gloffset_GetQueryObjecti64vEXT driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index] -#define _gloffset_GetQueryObjectui64vEXT driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index] -#define _gloffset_EGLImageTargetRenderbufferStorageOES driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index] -#define _gloffset_EGLImageTargetTexture2DOES driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index] - -#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */ - -#endif /* !defined( _GLAPI_OFFSETS_H_ ) */ diff --git a/src/mapi/glapi/glapitable.h b/src/mapi/glapi/glapitable.h index b9802da8e4..af6b346174 100644 --- a/src/mapi/glapi/glapitable.h +++ b/src/mapi/glapi/glapitable.h @@ -470,403 +470,457 @@ struct _glapi_table void (GLAPIENTRYP UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 427 */ void (GLAPIENTRYP UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 428 */ void (GLAPIENTRYP UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 429 */ - void (GLAPIENTRYP DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); /* 430 */ - void (GLAPIENTRYP DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount); /* 431 */ - void (GLAPIENTRYP LoadTransposeMatrixdARB)(const GLdouble * m); /* 432 */ - void (GLAPIENTRYP LoadTransposeMatrixfARB)(const GLfloat * m); /* 433 */ - void (GLAPIENTRYP MultTransposeMatrixdARB)(const GLdouble * m); /* 434 */ - void (GLAPIENTRYP MultTransposeMatrixfARB)(const GLfloat * m); /* 435 */ - void (GLAPIENTRYP SampleCoverageARB)(GLclampf value, GLboolean invert); /* 436 */ - void (GLAPIENTRYP CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data); /* 437 */ - void (GLAPIENTRYP CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data); /* 438 */ - void (GLAPIENTRYP CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data); /* 439 */ - void (GLAPIENTRYP CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data); /* 440 */ - void (GLAPIENTRYP CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data); /* 441 */ - void (GLAPIENTRYP CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data); /* 442 */ - void (GLAPIENTRYP GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img); /* 443 */ - void (GLAPIENTRYP DisableVertexAttribArrayARB)(GLuint index); /* 444 */ - void (GLAPIENTRYP EnableVertexAttribArrayARB)(GLuint index); /* 445 */ - void (GLAPIENTRYP GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params); /* 446 */ - void (GLAPIENTRYP GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params); /* 447 */ - void (GLAPIENTRYP GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params); /* 448 */ - void (GLAPIENTRYP GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params); /* 449 */ - void (GLAPIENTRYP GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string); /* 450 */ - void (GLAPIENTRYP GetProgramivARB)(GLenum target, GLenum pname, GLint * params); /* 451 */ - void (GLAPIENTRYP GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params); /* 452 */ - void (GLAPIENTRYP GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params); /* 453 */ - void (GLAPIENTRYP GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params); /* 454 */ - void (GLAPIENTRYP ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 455 */ - void (GLAPIENTRYP ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params); /* 456 */ - void (GLAPIENTRYP ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 457 */ - void (GLAPIENTRYP ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params); /* 458 */ - void (GLAPIENTRYP ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 459 */ - void (GLAPIENTRYP ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params); /* 460 */ - void (GLAPIENTRYP ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 461 */ - void (GLAPIENTRYP ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params); /* 462 */ - void (GLAPIENTRYP ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string); /* 463 */ - void (GLAPIENTRYP VertexAttrib1dARB)(GLuint index, GLdouble x); /* 464 */ - void (GLAPIENTRYP VertexAttrib1dvARB)(GLuint index, const GLdouble * v); /* 465 */ - void (GLAPIENTRYP VertexAttrib1fARB)(GLuint index, GLfloat x); /* 466 */ - void (GLAPIENTRYP VertexAttrib1fvARB)(GLuint index, const GLfloat * v); /* 467 */ - void (GLAPIENTRYP VertexAttrib1sARB)(GLuint index, GLshort x); /* 468 */ - void (GLAPIENTRYP VertexAttrib1svARB)(GLuint index, const GLshort * v); /* 469 */ - void (GLAPIENTRYP VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y); /* 470 */ - void (GLAPIENTRYP VertexAttrib2dvARB)(GLuint index, const GLdouble * v); /* 471 */ - void (GLAPIENTRYP VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y); /* 472 */ - void (GLAPIENTRYP VertexAttrib2fvARB)(GLuint index, const GLfloat * v); /* 473 */ - void (GLAPIENTRYP VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y); /* 474 */ - void (GLAPIENTRYP VertexAttrib2svARB)(GLuint index, const GLshort * v); /* 475 */ - void (GLAPIENTRYP VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 476 */ - void (GLAPIENTRYP VertexAttrib3dvARB)(GLuint index, const GLdouble * v); /* 477 */ - void (GLAPIENTRYP VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 478 */ - void (GLAPIENTRYP VertexAttrib3fvARB)(GLuint index, const GLfloat * v); /* 479 */ - void (GLAPIENTRYP VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z); /* 480 */ - void (GLAPIENTRYP VertexAttrib3svARB)(GLuint index, const GLshort * v); /* 481 */ - void (GLAPIENTRYP VertexAttrib4NbvARB)(GLuint index, const GLbyte * v); /* 482 */ - void (GLAPIENTRYP VertexAttrib4NivARB)(GLuint index, const GLint * v); /* 483 */ - void (GLAPIENTRYP VertexAttrib4NsvARB)(GLuint index, const GLshort * v); /* 484 */ - void (GLAPIENTRYP VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 485 */ - void (GLAPIENTRYP VertexAttrib4NubvARB)(GLuint index, const GLubyte * v); /* 486 */ - void (GLAPIENTRYP VertexAttrib4NuivARB)(GLuint index, const GLuint * v); /* 487 */ - void (GLAPIENTRYP VertexAttrib4NusvARB)(GLuint index, const GLushort * v); /* 488 */ - void (GLAPIENTRYP VertexAttrib4bvARB)(GLuint index, const GLbyte * v); /* 489 */ - void (GLAPIENTRYP VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 490 */ - void (GLAPIENTRYP VertexAttrib4dvARB)(GLuint index, const GLdouble * v); /* 491 */ - void (GLAPIENTRYP VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 492 */ - void (GLAPIENTRYP VertexAttrib4fvARB)(GLuint index, const GLfloat * v); /* 493 */ - void (GLAPIENTRYP VertexAttrib4ivARB)(GLuint index, const GLint * v); /* 494 */ - void (GLAPIENTRYP VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 495 */ - void (GLAPIENTRYP VertexAttrib4svARB)(GLuint index, const GLshort * v); /* 496 */ - void (GLAPIENTRYP VertexAttrib4ubvARB)(GLuint index, const GLubyte * v); /* 497 */ - void (GLAPIENTRYP VertexAttrib4uivARB)(GLuint index, const GLuint * v); /* 498 */ - void (GLAPIENTRYP VertexAttrib4usvARB)(GLuint index, const GLushort * v); /* 499 */ - void (GLAPIENTRYP VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer); /* 500 */ - void (GLAPIENTRYP BindBufferARB)(GLenum target, GLuint buffer); /* 501 */ - void (GLAPIENTRYP BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage); /* 502 */ - void (GLAPIENTRYP BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data); /* 503 */ - void (GLAPIENTRYP DeleteBuffersARB)(GLsizei n, const GLuint * buffer); /* 504 */ - void (GLAPIENTRYP GenBuffersARB)(GLsizei n, GLuint * buffer); /* 505 */ - void (GLAPIENTRYP GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params); /* 506 */ - void (GLAPIENTRYP GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params); /* 507 */ - void (GLAPIENTRYP GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data); /* 508 */ - GLboolean (GLAPIENTRYP IsBufferARB)(GLuint buffer); /* 509 */ - GLvoid * (GLAPIENTRYP MapBufferARB)(GLenum target, GLenum access); /* 510 */ - GLboolean (GLAPIENTRYP UnmapBufferARB)(GLenum target); /* 511 */ - void (GLAPIENTRYP BeginQueryARB)(GLenum target, GLuint id); /* 512 */ - void (GLAPIENTRYP DeleteQueriesARB)(GLsizei n, const GLuint * ids); /* 513 */ - void (GLAPIENTRYP EndQueryARB)(GLenum target); /* 514 */ - void (GLAPIENTRYP GenQueriesARB)(GLsizei n, GLuint * ids); /* 515 */ - void (GLAPIENTRYP GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params); /* 516 */ - void (GLAPIENTRYP GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params); /* 517 */ - void (GLAPIENTRYP GetQueryivARB)(GLenum target, GLenum pname, GLint * params); /* 518 */ - GLboolean (GLAPIENTRYP IsQueryARB)(GLuint id); /* 519 */ - void (GLAPIENTRYP AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj); /* 520 */ - void (GLAPIENTRYP CompileShaderARB)(GLhandleARB shader); /* 521 */ - GLhandleARB (GLAPIENTRYP CreateProgramObjectARB)(void); /* 522 */ - GLhandleARB (GLAPIENTRYP CreateShaderObjectARB)(GLenum shaderType); /* 523 */ - void (GLAPIENTRYP DeleteObjectARB)(GLhandleARB obj); /* 524 */ - void (GLAPIENTRYP DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj); /* 525 */ - void (GLAPIENTRYP GetActiveUniformARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 526 */ - void (GLAPIENTRYP GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog); /* 527 */ - GLhandleARB (GLAPIENTRYP GetHandleARB)(GLenum pname); /* 528 */ - void (GLAPIENTRYP GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog); /* 529 */ - void (GLAPIENTRYP GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params); /* 530 */ - void (GLAPIENTRYP GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params); /* 531 */ - void (GLAPIENTRYP GetShaderSourceARB)(GLhandleARB shader, GLsizei bufSize, GLsizei * length, GLcharARB * source); /* 532 */ - GLint (GLAPIENTRYP GetUniformLocationARB)(GLhandleARB program, const GLcharARB * name); /* 533 */ - void (GLAPIENTRYP GetUniformfvARB)(GLhandleARB program, GLint location, GLfloat * params); /* 534 */ - void (GLAPIENTRYP GetUniformivARB)(GLhandleARB program, GLint location, GLint * params); /* 535 */ - void (GLAPIENTRYP LinkProgramARB)(GLhandleARB program); /* 536 */ - void (GLAPIENTRYP ShaderSourceARB)(GLhandleARB shader, GLsizei count, const GLcharARB ** string, const GLint * length); /* 537 */ - void (GLAPIENTRYP Uniform1fARB)(GLint location, GLfloat v0); /* 538 */ - void (GLAPIENTRYP Uniform1fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 539 */ - void (GLAPIENTRYP Uniform1iARB)(GLint location, GLint v0); /* 540 */ - void (GLAPIENTRYP Uniform1ivARB)(GLint location, GLsizei count, const GLint * value); /* 541 */ - void (GLAPIENTRYP Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1); /* 542 */ - void (GLAPIENTRYP Uniform2fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 543 */ - void (GLAPIENTRYP Uniform2iARB)(GLint location, GLint v0, GLint v1); /* 544 */ - void (GLAPIENTRYP Uniform2ivARB)(GLint location, GLsizei count, const GLint * value); /* 545 */ - void (GLAPIENTRYP Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 546 */ - void (GLAPIENTRYP Uniform3fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 547 */ - void (GLAPIENTRYP Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2); /* 548 */ - void (GLAPIENTRYP Uniform3ivARB)(GLint location, GLsizei count, const GLint * value); /* 549 */ - void (GLAPIENTRYP Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 550 */ - void (GLAPIENTRYP Uniform4fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 551 */ - void (GLAPIENTRYP Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 552 */ - void (GLAPIENTRYP Uniform4ivARB)(GLint location, GLsizei count, const GLint * value); /* 553 */ - void (GLAPIENTRYP UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 554 */ - void (GLAPIENTRYP UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 555 */ - void (GLAPIENTRYP UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 556 */ - void (GLAPIENTRYP UseProgramObjectARB)(GLhandleARB program); /* 557 */ - void (GLAPIENTRYP ValidateProgramARB)(GLhandleARB program); /* 558 */ - void (GLAPIENTRYP BindAttribLocationARB)(GLhandleARB program, GLuint index, const GLcharARB * name); /* 559 */ - void (GLAPIENTRYP GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 560 */ - GLint (GLAPIENTRYP GetAttribLocationARB)(GLhandleARB program, const GLcharARB * name); /* 561 */ - void (GLAPIENTRYP DrawBuffersARB)(GLsizei n, const GLenum * bufs); /* 562 */ - void (GLAPIENTRYP RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 563 */ - void (GLAPIENTRYP FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 564 */ - void (GLAPIENTRYP FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 565 */ - void (GLAPIENTRYP ProgramParameteriARB)(GLuint program, GLenum pname, GLint value); /* 566 */ - void (GLAPIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); /* 567 */ - GLvoid * (GLAPIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 568 */ - void (GLAPIENTRYP BindVertexArray)(GLuint array); /* 569 */ - void (GLAPIENTRYP GenVertexArrays)(GLsizei n, GLuint * arrays); /* 570 */ - void (GLAPIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 571 */ - GLenum (GLAPIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 572 */ - void (GLAPIENTRYP DeleteSync)(GLsync sync); /* 573 */ - GLsync (GLAPIENTRYP FenceSync)(GLenum condition, GLbitfield flags); /* 574 */ - void (GLAPIENTRYP GetInteger64v)(GLenum pname, GLint64 * params); /* 575 */ - void (GLAPIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 576 */ - GLboolean (GLAPIENTRYP IsSync)(GLsync sync); /* 577 */ - void (GLAPIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 578 */ - void (GLAPIENTRYP DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 579 */ - void (GLAPIENTRYP DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 580 */ - void (GLAPIENTRYP MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex); /* 581 */ - void (GLAPIENTRYP BindTransformFeedback)(GLenum target, GLuint id); /* 582 */ - void (GLAPIENTRYP DeleteTransformFeedbacks)(GLsizei n, const GLuint * ids); /* 583 */ - void (GLAPIENTRYP DrawTransformFeedback)(GLenum mode, GLuint id); /* 584 */ - void (GLAPIENTRYP GenTransformFeedbacks)(GLsizei n, GLuint * ids); /* 585 */ - GLboolean (GLAPIENTRYP IsTransformFeedback)(GLuint id); /* 586 */ - void (GLAPIENTRYP PauseTransformFeedback)(void); /* 587 */ - void (GLAPIENTRYP ResumeTransformFeedback)(void); /* 588 */ - void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 589 */ - void (GLAPIENTRYP GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params); /* 590 */ - void (GLAPIENTRYP GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params); /* 591 */ - void (GLAPIENTRYP PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 592 */ - void (GLAPIENTRYP PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params); /* 593 */ - void (GLAPIENTRYP PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 594 */ - void (GLAPIENTRYP PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params); /* 595 */ - void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 596 */ - void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 597 */ - void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 598 */ - void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 599 */ - void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 600 */ - void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 601 */ - void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 602 */ - void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 603 */ - void (GLAPIENTRYP PointParameterfEXT)(GLenum pname, GLfloat param); /* 604 */ - void (GLAPIENTRYP PointParameterfvEXT)(GLenum pname, const GLfloat * params); /* 605 */ - void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 606 */ - void (GLAPIENTRYP UnlockArraysEXT)(void); /* 607 */ - void (GLAPIENTRYP SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue); /* 608 */ - void (GLAPIENTRYP SecondaryColor3bvEXT)(const GLbyte * v); /* 609 */ - void (GLAPIENTRYP SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); /* 610 */ - void (GLAPIENTRYP SecondaryColor3dvEXT)(const GLdouble * v); /* 611 */ - void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 612 */ - void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 613 */ - void (GLAPIENTRYP SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); /* 614 */ - void (GLAPIENTRYP SecondaryColor3ivEXT)(const GLint * v); /* 615 */ - void (GLAPIENTRYP SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue); /* 616 */ - void (GLAPIENTRYP SecondaryColor3svEXT)(const GLshort * v); /* 617 */ - void (GLAPIENTRYP SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue); /* 618 */ - void (GLAPIENTRYP SecondaryColor3ubvEXT)(const GLubyte * v); /* 619 */ - void (GLAPIENTRYP SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); /* 620 */ - void (GLAPIENTRYP SecondaryColor3uivEXT)(const GLuint * v); /* 621 */ - void (GLAPIENTRYP SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue); /* 622 */ - void (GLAPIENTRYP SecondaryColor3usvEXT)(const GLushort * v); /* 623 */ - void (GLAPIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 624 */ - void (GLAPIENTRYP MultiDrawArraysEXT)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount); /* 625 */ - void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 626 */ - void (GLAPIENTRYP FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 627 */ - void (GLAPIENTRYP FogCoorddEXT)(GLdouble coord); /* 628 */ - void (GLAPIENTRYP FogCoorddvEXT)(const GLdouble * coord); /* 629 */ - void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 630 */ - void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 631 */ - void (GLAPIENTRYP PixelTexGenSGIX)(GLenum mode); /* 632 */ - void (GLAPIENTRYP BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 633 */ - void (GLAPIENTRYP FlushVertexArrayRangeNV)(void); /* 634 */ - void (GLAPIENTRYP VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer); /* 635 */ - void (GLAPIENTRYP CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 636 */ - void (GLAPIENTRYP CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); /* 637 */ - void (GLAPIENTRYP CombinerParameterfNV)(GLenum pname, GLfloat param); /* 638 */ - void (GLAPIENTRYP CombinerParameterfvNV)(GLenum pname, const GLfloat * params); /* 639 */ - void (GLAPIENTRYP CombinerParameteriNV)(GLenum pname, GLint param); /* 640 */ - void (GLAPIENTRYP CombinerParameterivNV)(GLenum pname, const GLint * params); /* 641 */ - void (GLAPIENTRYP FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 642 */ - void (GLAPIENTRYP GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); /* 643 */ - void (GLAPIENTRYP GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); /* 644 */ - void (GLAPIENTRYP GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params); /* 645 */ - void (GLAPIENTRYP GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params); /* 646 */ - void (GLAPIENTRYP GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params); /* 647 */ - void (GLAPIENTRYP GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params); /* 648 */ - void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 649 */ - void (GLAPIENTRYP WindowPos2dMESA)(GLdouble x, GLdouble y); /* 650 */ - void (GLAPIENTRYP WindowPos2dvMESA)(const GLdouble * v); /* 651 */ - void (GLAPIENTRYP WindowPos2fMESA)(GLfloat x, GLfloat y); /* 652 */ - void (GLAPIENTRYP WindowPos2fvMESA)(const GLfloat * v); /* 653 */ - void (GLAPIENTRYP WindowPos2iMESA)(GLint x, GLint y); /* 654 */ - void (GLAPIENTRYP WindowPos2ivMESA)(const GLint * v); /* 655 */ - void (GLAPIENTRYP WindowPos2sMESA)(GLshort x, GLshort y); /* 656 */ - void (GLAPIENTRYP WindowPos2svMESA)(const GLshort * v); /* 657 */ - void (GLAPIENTRYP WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 658 */ - void (GLAPIENTRYP WindowPos3dvMESA)(const GLdouble * v); /* 659 */ - void (GLAPIENTRYP WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 660 */ - void (GLAPIENTRYP WindowPos3fvMESA)(const GLfloat * v); /* 661 */ - void (GLAPIENTRYP WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 662 */ - void (GLAPIENTRYP WindowPos3ivMESA)(const GLint * v); /* 663 */ - void (GLAPIENTRYP WindowPos3sMESA)(GLshort x, GLshort y, GLshort z); /* 664 */ - void (GLAPIENTRYP WindowPos3svMESA)(const GLshort * v); /* 665 */ - void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 666 */ - void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 667 */ - void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 668 */ - void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 669 */ - void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 670 */ - void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 671 */ - void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 672 */ - void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 673 */ - void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 674 */ - void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 675 */ - void (GLAPIENTRYP DeleteFencesNV)(GLsizei n, const GLuint * fences); /* 676 */ - void (GLAPIENTRYP FinishFenceNV)(GLuint fence); /* 677 */ - void (GLAPIENTRYP GenFencesNV)(GLsizei n, GLuint * fences); /* 678 */ - void (GLAPIENTRYP GetFenceivNV)(GLuint fence, GLenum pname, GLint * params); /* 679 */ - GLboolean (GLAPIENTRYP IsFenceNV)(GLuint fence); /* 680 */ - void (GLAPIENTRYP SetFenceNV)(GLuint fence, GLenum condition); /* 681 */ - GLboolean (GLAPIENTRYP TestFenceNV)(GLuint fence); /* 682 */ - GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 683 */ - void (GLAPIENTRYP BindProgramNV)(GLenum target, GLuint program); /* 684 */ - void (GLAPIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint * programs); /* 685 */ - void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 686 */ - void (GLAPIENTRYP GenProgramsNV)(GLsizei n, GLuint * programs); /* 687 */ - void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 688 */ - void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 689 */ - void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 690 */ - void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 691 */ - void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 692 */ - void (GLAPIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer); /* 693 */ - void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 694 */ - void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 695 */ - void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 696 */ - GLboolean (GLAPIENTRYP IsProgramNV)(GLuint program); /* 697 */ - void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 698 */ - void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params); /* 699 */ - void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params); /* 700 */ - void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 701 */ - void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 702 */ - void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 703 */ - void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 704 */ - void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 705 */ - void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 706 */ - void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 707 */ - void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 708 */ - void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 709 */ - void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 710 */ - void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 711 */ - void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 712 */ - void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 713 */ - void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 714 */ - void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 715 */ - void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 716 */ - void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 717 */ - void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 718 */ - void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 719 */ - void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 720 */ - void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 721 */ - void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 722 */ - void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 723 */ - void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 724 */ - void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 725 */ - void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 726 */ - void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 727 */ - void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 728 */ - void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 729 */ - void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 730 */ - void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 731 */ - void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 732 */ - void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 733 */ - void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 734 */ - void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 735 */ - void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 736 */ - void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 737 */ - void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 738 */ - void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 739 */ - void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 740 */ - void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 741 */ - void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 742 */ - void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 743 */ - void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 744 */ - void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 745 */ - void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 746 */ - void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 747 */ - void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 748 */ - void (GLAPIENTRYP AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 749 */ - void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 750 */ - void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 751 */ - void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 752 */ - void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 753 */ - void (GLAPIENTRYP ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 754 */ - void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 755 */ - void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 756 */ - GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 757 */ - void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 758 */ - void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 759 */ - void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 760 */ - void (GLAPIENTRYP PointParameteriNV)(GLenum pname, GLint param); /* 761 */ - void (GLAPIENTRYP PointParameterivNV)(GLenum pname, const GLint * params); /* 762 */ - void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 763 */ - void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 764 */ - void (GLAPIENTRYP DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays); /* 765 */ - void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 766 */ - GLboolean (GLAPIENTRYP IsVertexArrayAPPLE)(GLuint array); /* 767 */ - void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 768 */ - void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 769 */ - void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 770 */ - void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 771 */ - void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 772 */ - void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 773 */ - void (GLAPIENTRYP PrimitiveRestartIndexNV)(GLuint index); /* 774 */ - void (GLAPIENTRYP PrimitiveRestartNV)(void); /* 775 */ - void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 776 */ - void (GLAPIENTRYP BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA); /* 777 */ - void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 778 */ - void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 779 */ - GLenum (GLAPIENTRYP CheckFramebufferStatusEXT)(GLenum target); /* 780 */ - void (GLAPIENTRYP DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers); /* 781 */ - void (GLAPIENTRYP DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers); /* 782 */ - void (GLAPIENTRYP FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 783 */ - void (GLAPIENTRYP FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 784 */ - void (GLAPIENTRYP FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 785 */ - void (GLAPIENTRYP FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 786 */ - void (GLAPIENTRYP GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers); /* 787 */ - void (GLAPIENTRYP GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers); /* 788 */ - void (GLAPIENTRYP GenerateMipmapEXT)(GLenum target); /* 789 */ - void (GLAPIENTRYP GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params); /* 790 */ - void (GLAPIENTRYP GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 791 */ - GLboolean (GLAPIENTRYP IsFramebufferEXT)(GLuint framebuffer); /* 792 */ - GLboolean (GLAPIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); /* 793 */ - void (GLAPIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 794 */ - void (GLAPIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 795 */ - void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 796 */ - void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 797 */ - void (GLAPIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 798 */ - void (GLAPIENTRYP ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); /* 799 */ - void (GLAPIENTRYP DisableIndexedEXT)(GLenum target, GLuint index); /* 800 */ - void (GLAPIENTRYP EnableIndexedEXT)(GLenum target, GLuint index); /* 801 */ - void (GLAPIENTRYP GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data); /* 802 */ - void (GLAPIENTRYP GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data); /* 803 */ - GLboolean (GLAPIENTRYP IsEnabledIndexedEXT)(GLenum target, GLuint index); /* 804 */ - void (GLAPIENTRYP BeginConditionalRenderNV)(GLuint query, GLenum mode); /* 805 */ - void (GLAPIENTRYP EndConditionalRenderNV)(void); /* 806 */ - void (GLAPIENTRYP BeginTransformFeedbackEXT)(GLenum mode); /* 807 */ - void (GLAPIENTRYP BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); /* 808 */ - void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 809 */ - void (GLAPIENTRYP BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 810 */ - void (GLAPIENTRYP EndTransformFeedbackEXT)(void); /* 811 */ - void (GLAPIENTRYP GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); /* 812 */ - void (GLAPIENTRYP TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); /* 813 */ - void (GLAPIENTRYP ProvokingVertexEXT)(GLenum mode); /* 814 */ - void (GLAPIENTRYP GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, GLvoid ** params); /* 815 */ - void (GLAPIENTRYP TextureRangeAPPLE)(GLenum target, GLsizei length, GLvoid * pointer); /* 816 */ - void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 817 */ - GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 818 */ - GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 819 */ - void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 820 */ - void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 821 */ - void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 822 */ - void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 823 */ - void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 824 */ - void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 825 */ - void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 826 */ + void (GLAPIENTRYP ClampColor)(GLenum target, GLenum clamp); /* 430 */ + void (GLAPIENTRYP ClearBufferfi)(GLenum buffer, GLint drawbuffer, const GLfloat depth, const GLint stencil); /* 431 */ + void (GLAPIENTRYP ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat * value); /* 432 */ + void (GLAPIENTRYP ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint * value); /* 433 */ + void (GLAPIENTRYP ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint * value); /* 434 */ + const GLubyte * (GLAPIENTRYP GetStringi)(GLenum name, GLuint index); /* 435 */ + void (GLAPIENTRYP TexBuffer)(GLenum target, GLenum internalFormat, GLuint buffer); /* 436 */ + void (GLAPIENTRYP FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 437 */ + void (GLAPIENTRYP GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 * params); /* 438 */ + void (GLAPIENTRYP GetInteger64i_v)(GLenum cap, GLuint index, GLint64 * data); /* 439 */ + void (GLAPIENTRYP VertexAttribDivisor)(GLuint index, GLuint divisor); /* 440 */ + void (GLAPIENTRYP LoadTransposeMatrixdARB)(const GLdouble * m); /* 441 */ + void (GLAPIENTRYP LoadTransposeMatrixfARB)(const GLfloat * m); /* 442 */ + void (GLAPIENTRYP MultTransposeMatrixdARB)(const GLdouble * m); /* 443 */ + void (GLAPIENTRYP MultTransposeMatrixfARB)(const GLfloat * m); /* 444 */ + void (GLAPIENTRYP SampleCoverageARB)(GLclampf value, GLboolean invert); /* 445 */ + void (GLAPIENTRYP CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data); /* 446 */ + void (GLAPIENTRYP CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data); /* 447 */ + void (GLAPIENTRYP CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data); /* 448 */ + void (GLAPIENTRYP CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data); /* 449 */ + void (GLAPIENTRYP CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data); /* 450 */ + void (GLAPIENTRYP CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data); /* 451 */ + void (GLAPIENTRYP GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img); /* 452 */ + void (GLAPIENTRYP DisableVertexAttribArrayARB)(GLuint index); /* 453 */ + void (GLAPIENTRYP EnableVertexAttribArrayARB)(GLuint index); /* 454 */ + void (GLAPIENTRYP GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params); /* 455 */ + void (GLAPIENTRYP GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params); /* 456 */ + void (GLAPIENTRYP GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params); /* 457 */ + void (GLAPIENTRYP GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params); /* 458 */ + void (GLAPIENTRYP GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string); /* 459 */ + void (GLAPIENTRYP GetProgramivARB)(GLenum target, GLenum pname, GLint * params); /* 460 */ + void (GLAPIENTRYP GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params); /* 461 */ + void (GLAPIENTRYP GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params); /* 462 */ + void (GLAPIENTRYP GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params); /* 463 */ + void (GLAPIENTRYP ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 464 */ + void (GLAPIENTRYP ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params); /* 465 */ + void (GLAPIENTRYP ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 466 */ + void (GLAPIENTRYP ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params); /* 467 */ + void (GLAPIENTRYP ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 468 */ + void (GLAPIENTRYP ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params); /* 469 */ + void (GLAPIENTRYP ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 470 */ + void (GLAPIENTRYP ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params); /* 471 */ + void (GLAPIENTRYP ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string); /* 472 */ + void (GLAPIENTRYP VertexAttrib1dARB)(GLuint index, GLdouble x); /* 473 */ + void (GLAPIENTRYP VertexAttrib1dvARB)(GLuint index, const GLdouble * v); /* 474 */ + void (GLAPIENTRYP VertexAttrib1fARB)(GLuint index, GLfloat x); /* 475 */ + void (GLAPIENTRYP VertexAttrib1fvARB)(GLuint index, const GLfloat * v); /* 476 */ + void (GLAPIENTRYP VertexAttrib1sARB)(GLuint index, GLshort x); /* 477 */ + void (GLAPIENTRYP VertexAttrib1svARB)(GLuint index, const GLshort * v); /* 478 */ + void (GLAPIENTRYP VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y); /* 479 */ + void (GLAPIENTRYP VertexAttrib2dvARB)(GLuint index, const GLdouble * v); /* 480 */ + void (GLAPIENTRYP VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y); /* 481 */ + void (GLAPIENTRYP VertexAttrib2fvARB)(GLuint index, const GLfloat * v); /* 482 */ + void (GLAPIENTRYP VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y); /* 483 */ + void (GLAPIENTRYP VertexAttrib2svARB)(GLuint index, const GLshort * v); /* 484 */ + void (GLAPIENTRYP VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 485 */ + void (GLAPIENTRYP VertexAttrib3dvARB)(GLuint index, const GLdouble * v); /* 486 */ + void (GLAPIENTRYP VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 487 */ + void (GLAPIENTRYP VertexAttrib3fvARB)(GLuint index, const GLfloat * v); /* 488 */ + void (GLAPIENTRYP VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z); /* 489 */ + void (GLAPIENTRYP VertexAttrib3svARB)(GLuint index, const GLshort * v); /* 490 */ + void (GLAPIENTRYP VertexAttrib4NbvARB)(GLuint index, const GLbyte * v); /* 491 */ + void (GLAPIENTRYP VertexAttrib4NivARB)(GLuint index, const GLint * v); /* 492 */ + void (GLAPIENTRYP VertexAttrib4NsvARB)(GLuint index, const GLshort * v); /* 493 */ + void (GLAPIENTRYP VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 494 */ + void (GLAPIENTRYP VertexAttrib4NubvARB)(GLuint index, const GLubyte * v); /* 495 */ + void (GLAPIENTRYP VertexAttrib4NuivARB)(GLuint index, const GLuint * v); /* 496 */ + void (GLAPIENTRYP VertexAttrib4NusvARB)(GLuint index, const GLushort * v); /* 497 */ + void (GLAPIENTRYP VertexAttrib4bvARB)(GLuint index, const GLbyte * v); /* 498 */ + void (GLAPIENTRYP VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 499 */ + void (GLAPIENTRYP VertexAttrib4dvARB)(GLuint index, const GLdouble * v); /* 500 */ + void (GLAPIENTRYP VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 501 */ + void (GLAPIENTRYP VertexAttrib4fvARB)(GLuint index, const GLfloat * v); /* 502 */ + void (GLAPIENTRYP VertexAttrib4ivARB)(GLuint index, const GLint * v); /* 503 */ + void (GLAPIENTRYP VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 504 */ + void (GLAPIENTRYP VertexAttrib4svARB)(GLuint index, const GLshort * v); /* 505 */ + void (GLAPIENTRYP VertexAttrib4ubvARB)(GLuint index, const GLubyte * v); /* 506 */ + void (GLAPIENTRYP VertexAttrib4uivARB)(GLuint index, const GLuint * v); /* 507 */ + void (GLAPIENTRYP VertexAttrib4usvARB)(GLuint index, const GLushort * v); /* 508 */ + void (GLAPIENTRYP VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer); /* 509 */ + void (GLAPIENTRYP BindBufferARB)(GLenum target, GLuint buffer); /* 510 */ + void (GLAPIENTRYP BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage); /* 511 */ + void (GLAPIENTRYP BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data); /* 512 */ + void (GLAPIENTRYP DeleteBuffersARB)(GLsizei n, const GLuint * buffer); /* 513 */ + void (GLAPIENTRYP GenBuffersARB)(GLsizei n, GLuint * buffer); /* 514 */ + void (GLAPIENTRYP GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params); /* 515 */ + void (GLAPIENTRYP GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params); /* 516 */ + void (GLAPIENTRYP GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data); /* 517 */ + GLboolean (GLAPIENTRYP IsBufferARB)(GLuint buffer); /* 518 */ + GLvoid * (GLAPIENTRYP MapBufferARB)(GLenum target, GLenum access); /* 519 */ + GLboolean (GLAPIENTRYP UnmapBufferARB)(GLenum target); /* 520 */ + void (GLAPIENTRYP BeginQueryARB)(GLenum target, GLuint id); /* 521 */ + void (GLAPIENTRYP DeleteQueriesARB)(GLsizei n, const GLuint * ids); /* 522 */ + void (GLAPIENTRYP EndQueryARB)(GLenum target); /* 523 */ + void (GLAPIENTRYP GenQueriesARB)(GLsizei n, GLuint * ids); /* 524 */ + void (GLAPIENTRYP GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params); /* 525 */ + void (GLAPIENTRYP GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params); /* 526 */ + void (GLAPIENTRYP GetQueryivARB)(GLenum target, GLenum pname, GLint * params); /* 527 */ + GLboolean (GLAPIENTRYP IsQueryARB)(GLuint id); /* 528 */ + void (GLAPIENTRYP AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj); /* 529 */ + void (GLAPIENTRYP CompileShaderARB)(GLhandleARB shader); /* 530 */ + GLhandleARB (GLAPIENTRYP CreateProgramObjectARB)(void); /* 531 */ + GLhandleARB (GLAPIENTRYP CreateShaderObjectARB)(GLenum shaderType); /* 532 */ + void (GLAPIENTRYP DeleteObjectARB)(GLhandleARB obj); /* 533 */ + void (GLAPIENTRYP DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj); /* 534 */ + void (GLAPIENTRYP GetActiveUniformARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 535 */ + void (GLAPIENTRYP GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog); /* 536 */ + GLhandleARB (GLAPIENTRYP GetHandleARB)(GLenum pname); /* 537 */ + void (GLAPIENTRYP GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog); /* 538 */ + void (GLAPIENTRYP GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params); /* 539 */ + void (GLAPIENTRYP GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params); /* 540 */ + void (GLAPIENTRYP GetShaderSourceARB)(GLhandleARB shader, GLsizei bufSize, GLsizei * length, GLcharARB * source); /* 541 */ + GLint (GLAPIENTRYP GetUniformLocationARB)(GLhandleARB program, const GLcharARB * name); /* 542 */ + void (GLAPIENTRYP GetUniformfvARB)(GLhandleARB program, GLint location, GLfloat * params); /* 543 */ + void (GLAPIENTRYP GetUniformivARB)(GLhandleARB program, GLint location, GLint * params); /* 544 */ + void (GLAPIENTRYP LinkProgramARB)(GLhandleARB program); /* 545 */ + void (GLAPIENTRYP ShaderSourceARB)(GLhandleARB shader, GLsizei count, const GLcharARB ** string, const GLint * length); /* 546 */ + void (GLAPIENTRYP Uniform1fARB)(GLint location, GLfloat v0); /* 547 */ + void (GLAPIENTRYP Uniform1fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 548 */ + void (GLAPIENTRYP Uniform1iARB)(GLint location, GLint v0); /* 549 */ + void (GLAPIENTRYP Uniform1ivARB)(GLint location, GLsizei count, const GLint * value); /* 550 */ + void (GLAPIENTRYP Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1); /* 551 */ + void (GLAPIENTRYP Uniform2fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 552 */ + void (GLAPIENTRYP Uniform2iARB)(GLint location, GLint v0, GLint v1); /* 553 */ + void (GLAPIENTRYP Uniform2ivARB)(GLint location, GLsizei count, const GLint * value); /* 554 */ + void (GLAPIENTRYP Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 555 */ + void (GLAPIENTRYP Uniform3fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 556 */ + void (GLAPIENTRYP Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2); /* 557 */ + void (GLAPIENTRYP Uniform3ivARB)(GLint location, GLsizei count, const GLint * value); /* 558 */ + void (GLAPIENTRYP Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 559 */ + void (GLAPIENTRYP Uniform4fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 560 */ + void (GLAPIENTRYP Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 561 */ + void (GLAPIENTRYP Uniform4ivARB)(GLint location, GLsizei count, const GLint * value); /* 562 */ + void (GLAPIENTRYP UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 563 */ + void (GLAPIENTRYP UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 564 */ + void (GLAPIENTRYP UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 565 */ + void (GLAPIENTRYP UseProgramObjectARB)(GLhandleARB program); /* 566 */ + void (GLAPIENTRYP ValidateProgramARB)(GLhandleARB program); /* 567 */ + void (GLAPIENTRYP BindAttribLocationARB)(GLhandleARB program, GLuint index, const GLcharARB * name); /* 568 */ + void (GLAPIENTRYP GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 569 */ + GLint (GLAPIENTRYP GetAttribLocationARB)(GLhandleARB program, const GLcharARB * name); /* 570 */ + void (GLAPIENTRYP DrawBuffersARB)(GLsizei n, const GLenum * bufs); /* 571 */ + void (GLAPIENTRYP DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); /* 572 */ + void (GLAPIENTRYP DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount); /* 573 */ + void (GLAPIENTRYP RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 574 */ + void (GLAPIENTRYP FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 575 */ + void (GLAPIENTRYP FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 576 */ + void (GLAPIENTRYP ProgramParameteriARB)(GLuint program, GLenum pname, GLint value); /* 577 */ + void (GLAPIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); /* 578 */ + GLvoid * (GLAPIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 579 */ + void (GLAPIENTRYP BindVertexArray)(GLuint array); /* 580 */ + void (GLAPIENTRYP GenVertexArrays)(GLsizei n, GLuint * arrays); /* 581 */ + void (GLAPIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 582 */ + GLenum (GLAPIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 583 */ + void (GLAPIENTRYP DeleteSync)(GLsync sync); /* 584 */ + GLsync (GLAPIENTRYP FenceSync)(GLenum condition, GLbitfield flags); /* 585 */ + void (GLAPIENTRYP GetInteger64v)(GLenum pname, GLint64 * params); /* 586 */ + void (GLAPIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 587 */ + GLboolean (GLAPIENTRYP IsSync)(GLsync sync); /* 588 */ + void (GLAPIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 589 */ + void (GLAPIENTRYP DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 590 */ + void (GLAPIENTRYP DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 591 */ + void (GLAPIENTRYP MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex); /* 592 */ + void (GLAPIENTRYP BindTransformFeedback)(GLenum target, GLuint id); /* 593 */ + void (GLAPIENTRYP DeleteTransformFeedbacks)(GLsizei n, const GLuint * ids); /* 594 */ + void (GLAPIENTRYP DrawTransformFeedback)(GLenum mode, GLuint id); /* 595 */ + void (GLAPIENTRYP GenTransformFeedbacks)(GLsizei n, GLuint * ids); /* 596 */ + GLboolean (GLAPIENTRYP IsTransformFeedback)(GLuint id); /* 597 */ + void (GLAPIENTRYP PauseTransformFeedback)(void); /* 598 */ + void (GLAPIENTRYP ResumeTransformFeedback)(void); /* 599 */ + void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 600 */ + void (GLAPIENTRYP GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params); /* 601 */ + void (GLAPIENTRYP GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params); /* 602 */ + void (GLAPIENTRYP PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 603 */ + void (GLAPIENTRYP PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params); /* 604 */ + void (GLAPIENTRYP PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 605 */ + void (GLAPIENTRYP PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params); /* 606 */ + void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 607 */ + void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 608 */ + void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 609 */ + void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 610 */ + void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 611 */ + void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 612 */ + void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 613 */ + void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 614 */ + void (GLAPIENTRYP PointParameterfEXT)(GLenum pname, GLfloat param); /* 615 */ + void (GLAPIENTRYP PointParameterfvEXT)(GLenum pname, const GLfloat * params); /* 616 */ + void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 617 */ + void (GLAPIENTRYP UnlockArraysEXT)(void); /* 618 */ + void (GLAPIENTRYP SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue); /* 619 */ + void (GLAPIENTRYP SecondaryColor3bvEXT)(const GLbyte * v); /* 620 */ + void (GLAPIENTRYP SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); /* 621 */ + void (GLAPIENTRYP SecondaryColor3dvEXT)(const GLdouble * v); /* 622 */ + void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 623 */ + void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 624 */ + void (GLAPIENTRYP SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); /* 625 */ + void (GLAPIENTRYP SecondaryColor3ivEXT)(const GLint * v); /* 626 */ + void (GLAPIENTRYP SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue); /* 627 */ + void (GLAPIENTRYP SecondaryColor3svEXT)(const GLshort * v); /* 628 */ + void (GLAPIENTRYP SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue); /* 629 */ + void (GLAPIENTRYP SecondaryColor3ubvEXT)(const GLubyte * v); /* 630 */ + void (GLAPIENTRYP SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); /* 631 */ + void (GLAPIENTRYP SecondaryColor3uivEXT)(const GLuint * v); /* 632 */ + void (GLAPIENTRYP SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue); /* 633 */ + void (GLAPIENTRYP SecondaryColor3usvEXT)(const GLushort * v); /* 634 */ + void (GLAPIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 635 */ + void (GLAPIENTRYP MultiDrawArraysEXT)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount); /* 636 */ + void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 637 */ + void (GLAPIENTRYP FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 638 */ + void (GLAPIENTRYP FogCoorddEXT)(GLdouble coord); /* 639 */ + void (GLAPIENTRYP FogCoorddvEXT)(const GLdouble * coord); /* 640 */ + void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 641 */ + void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 642 */ + void (GLAPIENTRYP PixelTexGenSGIX)(GLenum mode); /* 643 */ + void (GLAPIENTRYP BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 644 */ + void (GLAPIENTRYP FlushVertexArrayRangeNV)(void); /* 645 */ + void (GLAPIENTRYP VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer); /* 646 */ + void (GLAPIENTRYP CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 647 */ + void (GLAPIENTRYP CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); /* 648 */ + void (GLAPIENTRYP CombinerParameterfNV)(GLenum pname, GLfloat param); /* 649 */ + void (GLAPIENTRYP CombinerParameterfvNV)(GLenum pname, const GLfloat * params); /* 650 */ + void (GLAPIENTRYP CombinerParameteriNV)(GLenum pname, GLint param); /* 651 */ + void (GLAPIENTRYP CombinerParameterivNV)(GLenum pname, const GLint * params); /* 652 */ + void (GLAPIENTRYP FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 653 */ + void (GLAPIENTRYP GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); /* 654 */ + void (GLAPIENTRYP GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); /* 655 */ + void (GLAPIENTRYP GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params); /* 656 */ + void (GLAPIENTRYP GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params); /* 657 */ + void (GLAPIENTRYP GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params); /* 658 */ + void (GLAPIENTRYP GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params); /* 659 */ + void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 660 */ + void (GLAPIENTRYP WindowPos2dMESA)(GLdouble x, GLdouble y); /* 661 */ + void (GLAPIENTRYP WindowPos2dvMESA)(const GLdouble * v); /* 662 */ + void (GLAPIENTRYP WindowPos2fMESA)(GLfloat x, GLfloat y); /* 663 */ + void (GLAPIENTRYP WindowPos2fvMESA)(const GLfloat * v); /* 664 */ + void (GLAPIENTRYP WindowPos2iMESA)(GLint x, GLint y); /* 665 */ + void (GLAPIENTRYP WindowPos2ivMESA)(const GLint * v); /* 666 */ + void (GLAPIENTRYP WindowPos2sMESA)(GLshort x, GLshort y); /* 667 */ + void (GLAPIENTRYP WindowPos2svMESA)(const GLshort * v); /* 668 */ + void (GLAPIENTRYP WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 669 */ + void (GLAPIENTRYP WindowPos3dvMESA)(const GLdouble * v); /* 670 */ + void (GLAPIENTRYP WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 671 */ + void (GLAPIENTRYP WindowPos3fvMESA)(const GLfloat * v); /* 672 */ + void (GLAPIENTRYP WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 673 */ + void (GLAPIENTRYP WindowPos3ivMESA)(const GLint * v); /* 674 */ + void (GLAPIENTRYP WindowPos3sMESA)(GLshort x, GLshort y, GLshort z); /* 675 */ + void (GLAPIENTRYP WindowPos3svMESA)(const GLshort * v); /* 676 */ + void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 677 */ + void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 678 */ + void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 679 */ + void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 680 */ + void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 681 */ + void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 682 */ + void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 683 */ + void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 684 */ + void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 685 */ + void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 686 */ + void (GLAPIENTRYP DeleteFencesNV)(GLsizei n, const GLuint * fences); /* 687 */ + void (GLAPIENTRYP FinishFenceNV)(GLuint fence); /* 688 */ + void (GLAPIENTRYP GenFencesNV)(GLsizei n, GLuint * fences); /* 689 */ + void (GLAPIENTRYP GetFenceivNV)(GLuint fence, GLenum pname, GLint * params); /* 690 */ + GLboolean (GLAPIENTRYP IsFenceNV)(GLuint fence); /* 691 */ + void (GLAPIENTRYP SetFenceNV)(GLuint fence, GLenum condition); /* 692 */ + GLboolean (GLAPIENTRYP TestFenceNV)(GLuint fence); /* 693 */ + GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 694 */ + void (GLAPIENTRYP BindProgramNV)(GLenum target, GLuint program); /* 695 */ + void (GLAPIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint * programs); /* 696 */ + void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 697 */ + void (GLAPIENTRYP GenProgramsNV)(GLsizei n, GLuint * programs); /* 698 */ + void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 699 */ + void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 700 */ + void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 701 */ + void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 702 */ + void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 703 */ + void (GLAPIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer); /* 704 */ + void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 705 */ + void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 706 */ + void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 707 */ + GLboolean (GLAPIENTRYP IsProgramNV)(GLuint program); /* 708 */ + void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 709 */ + void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble * params); /* 710 */ + void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params); /* 711 */ + void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 712 */ + void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 713 */ + void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 714 */ + void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 715 */ + void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 716 */ + void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 717 */ + void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 718 */ + void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 719 */ + void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 720 */ + void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 721 */ + void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 722 */ + void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 723 */ + void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 724 */ + void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 725 */ + void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 726 */ + void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 727 */ + void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 728 */ + void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 729 */ + void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 730 */ + void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 731 */ + void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 732 */ + void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 733 */ + void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 734 */ + void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 735 */ + void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 736 */ + void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 737 */ + void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 738 */ + void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 739 */ + void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 740 */ + void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 741 */ + void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 742 */ + void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 743 */ + void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 744 */ + void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 745 */ + void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 746 */ + void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 747 */ + void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 748 */ + void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 749 */ + void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 750 */ + void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 751 */ + void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 752 */ + void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 753 */ + void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 754 */ + void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 755 */ + void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 756 */ + void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 757 */ + void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 758 */ + void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 759 */ + void (GLAPIENTRYP AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 760 */ + void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 761 */ + void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 762 */ + void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 763 */ + void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 764 */ + void (GLAPIENTRYP ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 765 */ + void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 766 */ + void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 767 */ + GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 768 */ + void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 769 */ + void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 770 */ + void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 771 */ + void (GLAPIENTRYP PointParameteriNV)(GLenum pname, GLint param); /* 772 */ + void (GLAPIENTRYP PointParameterivNV)(GLenum pname, const GLint * params); /* 773 */ + void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 774 */ + void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 775 */ + void (GLAPIENTRYP DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays); /* 776 */ + void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 777 */ + GLboolean (GLAPIENTRYP IsVertexArrayAPPLE)(GLuint array); /* 778 */ + void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 779 */ + void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 780 */ + void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 781 */ + void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 782 */ + void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 783 */ + void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 784 */ + void (GLAPIENTRYP PrimitiveRestartIndexNV)(GLuint index); /* 785 */ + void (GLAPIENTRYP PrimitiveRestartNV)(void); /* 786 */ + void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 787 */ + void (GLAPIENTRYP BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA); /* 788 */ + void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 789 */ + void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 790 */ + GLenum (GLAPIENTRYP CheckFramebufferStatusEXT)(GLenum target); /* 791 */ + void (GLAPIENTRYP DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers); /* 792 */ + void (GLAPIENTRYP DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers); /* 793 */ + void (GLAPIENTRYP FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 794 */ + void (GLAPIENTRYP FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 795 */ + void (GLAPIENTRYP FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 796 */ + void (GLAPIENTRYP FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 797 */ + void (GLAPIENTRYP GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers); /* 798 */ + void (GLAPIENTRYP GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers); /* 799 */ + void (GLAPIENTRYP GenerateMipmapEXT)(GLenum target); /* 800 */ + void (GLAPIENTRYP GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params); /* 801 */ + void (GLAPIENTRYP GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 802 */ + GLboolean (GLAPIENTRYP IsFramebufferEXT)(GLuint framebuffer); /* 803 */ + GLboolean (GLAPIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); /* 804 */ + void (GLAPIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 805 */ + void (GLAPIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 806 */ + void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 807 */ + void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 808 */ + void (GLAPIENTRYP BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar * name); /* 809 */ + GLint (GLAPIENTRYP GetFragDataLocationEXT)(GLuint program, const GLchar * name); /* 810 */ + void (GLAPIENTRYP GetUniformuivEXT)(GLuint program, GLint location, GLuint * params); /* 811 */ + void (GLAPIENTRYP GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint * params); /* 812 */ + void (GLAPIENTRYP GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint * params); /* 813 */ + void (GLAPIENTRYP Uniform1uiEXT)(GLint location, GLuint x); /* 814 */ + void (GLAPIENTRYP Uniform1uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 815 */ + void (GLAPIENTRYP Uniform2uiEXT)(GLint location, GLuint x, GLuint y); /* 816 */ + void (GLAPIENTRYP Uniform2uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 817 */ + void (GLAPIENTRYP Uniform3uiEXT)(GLint location, GLuint x, GLuint y, GLuint z); /* 818 */ + void (GLAPIENTRYP Uniform3uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 819 */ + void (GLAPIENTRYP Uniform4uiEXT)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w); /* 820 */ + void (GLAPIENTRYP Uniform4uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 821 */ + void (GLAPIENTRYP VertexAttribI1iEXT)(GLuint index, GLint x); /* 822 */ + void (GLAPIENTRYP VertexAttribI1ivEXT)(GLuint index, const GLint * v); /* 823 */ + void (GLAPIENTRYP VertexAttribI1uiEXT)(GLuint index, GLuint x); /* 824 */ + void (GLAPIENTRYP VertexAttribI1uivEXT)(GLuint index, const GLuint * v); /* 825 */ + void (GLAPIENTRYP VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); /* 826 */ + void (GLAPIENTRYP VertexAttribI2ivEXT)(GLuint index, const GLint * v); /* 827 */ + void (GLAPIENTRYP VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); /* 828 */ + void (GLAPIENTRYP VertexAttribI2uivEXT)(GLuint index, const GLuint * v); /* 829 */ + void (GLAPIENTRYP VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); /* 830 */ + void (GLAPIENTRYP VertexAttribI3ivEXT)(GLuint index, const GLint * v); /* 831 */ + void (GLAPIENTRYP VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); /* 832 */ + void (GLAPIENTRYP VertexAttribI3uivEXT)(GLuint index, const GLuint * v); /* 833 */ + void (GLAPIENTRYP VertexAttribI4bvEXT)(GLuint index, const GLbyte * v); /* 834 */ + void (GLAPIENTRYP VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 835 */ + void (GLAPIENTRYP VertexAttribI4ivEXT)(GLuint index, const GLint * v); /* 836 */ + void (GLAPIENTRYP VertexAttribI4svEXT)(GLuint index, const GLshort * v); /* 837 */ + void (GLAPIENTRYP VertexAttribI4ubvEXT)(GLuint index, const GLubyte * v); /* 838 */ + void (GLAPIENTRYP VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 839 */ + void (GLAPIENTRYP VertexAttribI4uivEXT)(GLuint index, const GLuint * v); /* 840 */ + void (GLAPIENTRYP VertexAttribI4usvEXT)(GLuint index, const GLushort * v); /* 841 */ + void (GLAPIENTRYP VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 842 */ + void (GLAPIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 843 */ + void (GLAPIENTRYP ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); /* 844 */ + void (GLAPIENTRYP DisableIndexedEXT)(GLenum target, GLuint index); /* 845 */ + void (GLAPIENTRYP EnableIndexedEXT)(GLenum target, GLuint index); /* 846 */ + void (GLAPIENTRYP GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data); /* 847 */ + void (GLAPIENTRYP GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data); /* 848 */ + GLboolean (GLAPIENTRYP IsEnabledIndexedEXT)(GLenum target, GLuint index); /* 849 */ + void (GLAPIENTRYP ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a); /* 850 */ + void (GLAPIENTRYP ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a); /* 851 */ + void (GLAPIENTRYP GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint * params); /* 852 */ + void (GLAPIENTRYP GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint * params); /* 853 */ + void (GLAPIENTRYP TexParameterIivEXT)(GLenum target, GLenum pname, const GLint * params); /* 854 */ + void (GLAPIENTRYP TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint * params); /* 855 */ + void (GLAPIENTRYP BeginConditionalRenderNV)(GLuint query, GLenum mode); /* 856 */ + void (GLAPIENTRYP EndConditionalRenderNV)(void); /* 857 */ + void (GLAPIENTRYP BeginTransformFeedbackEXT)(GLenum mode); /* 858 */ + void (GLAPIENTRYP BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); /* 859 */ + void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 860 */ + void (GLAPIENTRYP BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 861 */ + void (GLAPIENTRYP EndTransformFeedbackEXT)(void); /* 862 */ + void (GLAPIENTRYP GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); /* 863 */ + void (GLAPIENTRYP TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); /* 864 */ + void (GLAPIENTRYP ProvokingVertexEXT)(GLenum mode); /* 865 */ + void (GLAPIENTRYP GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, GLvoid ** params); /* 866 */ + void (GLAPIENTRYP TextureRangeAPPLE)(GLenum target, GLsizei length, GLvoid * pointer); /* 867 */ + void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 868 */ + GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 869 */ + GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 870 */ + void (GLAPIENTRYP ActiveProgramEXT)(GLuint program); /* 871 */ + GLuint (GLAPIENTRYP CreateShaderProgramEXT)(GLenum type, const GLchar * string); /* 872 */ + void (GLAPIENTRYP UseShaderProgramEXT)(GLenum type, GLuint program); /* 873 */ + void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 874 */ + void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 875 */ + void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 876 */ + void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 877 */ + void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 878 */ + void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 879 */ + void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 880 */ }; #endif /* !defined( _GLAPI_TABLE_H_ ) */ diff --git a/src/mapi/glapi/glapitemp.h b/src/mapi/glapi/glapitemp.h index ac8cf9ec97..cf844dc90c 100644 --- a/src/mapi/glapi/glapitemp.h +++ b/src/mapi/glapi/glapitemp.h @@ -2632,34 +2632,59 @@ KEYWORD1 void KEYWORD2 NAME(UniformMatrix4x3fv)(GLint location, GLsizei count, G DISPATCH(UniformMatrix4x3fv, (location, count, transpose, value), (F, "glUniformMatrix4x3fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value)); } -KEYWORD1 void KEYWORD2 NAME(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +KEYWORD1 void KEYWORD2 NAME(ClampColor)(GLenum target, GLenum clamp) { - DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstanced(0x%x, %d, %d, %d);\n", mode, first, count, primcount)); + DISPATCH(ClampColor, (target, clamp), (F, "glClampColor(0x%x, 0x%x);\n", target, clamp)); } -KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +KEYWORD1 void KEYWORD2 NAME(ClearBufferfi)(GLenum buffer, GLint drawbuffer, const GLfloat depth, const GLint stencil) { - DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstancedARB(0x%x, %d, %d, %d);\n", mode, first, count, primcount)); + DISPATCH(ClearBufferfi, (buffer, drawbuffer, depth, stencil), (F, "glClearBufferfi(0x%x, %d, %f, %d);\n", buffer, drawbuffer, depth, stencil)); } -KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +KEYWORD1 void KEYWORD2 NAME(ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat * value) { - DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstancedEXT(0x%x, %d, %d, %d);\n", mode, first, count, primcount)); + DISPATCH(ClearBufferfv, (buffer, drawbuffer, value), (F, "glClearBufferfv(0x%x, %d, %p);\n", buffer, drawbuffer, (const void *) value)); } -KEYWORD1 void KEYWORD2 NAME(DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount) +KEYWORD1 void KEYWORD2 NAME(ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint * value) { - DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstanced(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount)); + DISPATCH(ClearBufferiv, (buffer, drawbuffer, value), (F, "glClearBufferiv(0x%x, %d, %p);\n", buffer, drawbuffer, (const void *) value)); } -KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount) +KEYWORD1 void KEYWORD2 NAME(ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint * value) { - DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedARB(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount)); + DISPATCH(ClearBufferuiv, (buffer, drawbuffer, value), (F, "glClearBufferuiv(0x%x, %d, %p);\n", buffer, drawbuffer, (const void *) value)); } -KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount) +KEYWORD1 const GLubyte * KEYWORD2 NAME(GetStringi)(GLenum name, GLuint index) +{ + RETURN_DISPATCH(GetStringi, (name, index), (F, "glGetStringi(0x%x, %d);\n", name, index)); +} + +KEYWORD1 void KEYWORD2 NAME(TexBuffer)(GLenum target, GLenum internalFormat, GLuint buffer) +{ + DISPATCH(TexBuffer, (target, internalFormat, buffer), (F, "glTexBuffer(0x%x, 0x%x, %d);\n", target, internalFormat, buffer)); +} + +KEYWORD1 void KEYWORD2 NAME(FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + DISPATCH(FramebufferTexture, (target, attachment, texture, level), (F, "glFramebufferTexture(0x%x, 0x%x, %d, %d);\n", target, attachment, texture, level)); +} + +KEYWORD1 void KEYWORD2 NAME(GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 * params) +{ + DISPATCH(GetBufferParameteri64v, (target, pname, params), (F, "glGetBufferParameteri64v(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetInteger64i_v)(GLenum cap, GLuint index, GLint64 * data) +{ + DISPATCH(GetInteger64i_v, (cap, index, data), (F, "glGetInteger64i_v(0x%x, %d, %p);\n", cap, index, (const void *) data)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribDivisor)(GLuint index, GLuint divisor) { - DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedEXT(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount)); + DISPATCH(VertexAttribDivisor, (index, divisor), (F, "glVertexAttribDivisor(%d, %d);\n", index, divisor)); } KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixd)(const GLdouble * m) @@ -3872,6 +3897,36 @@ KEYWORD1 void KEYWORD2 NAME(DrawBuffersATI)(GLsizei n, const GLenum * bufs) DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersATI(%d, %p);\n", n, (const void *) bufs)); } +KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +{ + DISPATCH(DrawArraysInstancedARB, (mode, first, count, primcount), (F, "glDrawArraysInstancedARB(0x%x, %d, %d, %d);\n", mode, first, count, primcount)); +} + +KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +{ + DISPATCH(DrawArraysInstancedARB, (mode, first, count, primcount), (F, "glDrawArraysInstancedEXT(0x%x, %d, %d, %d);\n", mode, first, count, primcount)); +} + +KEYWORD1 void KEYWORD2 NAME(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +{ + DISPATCH(DrawArraysInstancedARB, (mode, first, count, primcount), (F, "glDrawArraysInstanced(0x%x, %d, %d, %d);\n", mode, first, count, primcount)); +} + +KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount) +{ + DISPATCH(DrawElementsInstancedARB, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedARB(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount)); +} + +KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount) +{ + DISPATCH(DrawElementsInstancedARB, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedEXT(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount)); +} + +KEYWORD1 void KEYWORD2 NAME(DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount) +{ + DISPATCH(DrawElementsInstancedARB, (mode, count, type, indices, primcount), (F, "glDrawElementsInstanced(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount)); +} + KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { DISPATCH(RenderbufferStorageMultisample, (target, samples, internalformat, width, height), (F, "glRenderbufferStorageMultisample(0x%x, %d, 0x%x, %d, %d);\n", target, samples, internalformat, width, height)); @@ -4012,58 +4067,58 @@ KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias) DISPATCH(PolygonOffsetEXT, (factor, bias), (F, "glPolygonOffsetEXT(%f, %f);\n", factor, bias)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_590)(GLenum pname, GLfloat * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_601)(GLenum pname, GLfloat * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_590)(GLenum pname, GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_601)(GLenum pname, GLfloat * params) { DISPATCH(GetPixelTexGenParameterfvSGIS, (pname, params), (F, "glGetPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_591)(GLenum pname, GLint * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_602)(GLenum pname, GLint * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_591)(GLenum pname, GLint * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_602)(GLenum pname, GLint * params) { DISPATCH(GetPixelTexGenParameterivSGIS, (pname, params), (F, "glGetPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_592)(GLenum pname, GLfloat param); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_603)(GLenum pname, GLfloat param); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_592)(GLenum pname, GLfloat param) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_603)(GLenum pname, GLfloat param) { DISPATCH(PixelTexGenParameterfSGIS, (pname, param), (F, "glPixelTexGenParameterfSGIS(0x%x, %f);\n", pname, param)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_593)(GLenum pname, const GLfloat * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_604)(GLenum pname, const GLfloat * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_593)(GLenum pname, const GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_604)(GLenum pname, const GLfloat * params) { DISPATCH(PixelTexGenParameterfvSGIS, (pname, params), (F, "glPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_594)(GLenum pname, GLint param); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_605)(GLenum pname, GLint param); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_594)(GLenum pname, GLint param) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_605)(GLenum pname, GLint param) { DISPATCH(PixelTexGenParameteriSGIS, (pname, param), (F, "glPixelTexGenParameteriSGIS(0x%x, %d);\n", pname, param)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_595)(GLenum pname, const GLint * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_606)(GLenum pname, const GLint * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_595)(GLenum pname, const GLint * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_606)(GLenum pname, const GLint * params) { DISPATCH(PixelTexGenParameterivSGIS, (pname, params), (F, "glPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_596)(GLclampf value, GLboolean invert); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_607)(GLclampf value, GLboolean invert); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_596)(GLclampf value, GLboolean invert) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_607)(GLclampf value, GLboolean invert) { DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);\n", value, invert)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_597)(GLenum pattern); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_608)(GLenum pattern); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_597)(GLenum pattern) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_608)(GLenum pattern) { DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);\n", pattern)); } @@ -4113,9 +4168,9 @@ KEYWORD1 void KEYWORD2 NAME(PointParameterfEXT)(GLenum pname, GLfloat param) DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfEXT(0x%x, %f);\n", pname, param)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_604)(GLenum pname, GLfloat param); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_615)(GLenum pname, GLfloat param); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_604)(GLenum pname, GLfloat param) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_615)(GLenum pname, GLfloat param) { DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param)); } @@ -4135,9 +4190,9 @@ KEYWORD1 void KEYWORD2 NAME(PointParameterfvEXT)(GLenum pname, const GLfloat * p DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_605)(GLenum pname, const GLfloat * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_616)(GLenum pname, const GLfloat * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_605)(GLenum pname, const GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_616)(GLenum pname, const GLfloat * params) { DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); } @@ -4392,9 +4447,9 @@ KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord) DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);\n", (const void *) coord)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_632)(GLenum mode); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_643)(GLenum mode); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_632)(GLenum mode) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_643)(GLenum mode) { DISPATCH(PixelTexGenSGIX, (mode), (F, "glPixelTexGenSGIX(0x%x);\n", mode)); } @@ -4409,9 +4464,9 @@ KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfac DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_633)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_644)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_633)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_644)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)); } @@ -4776,65 +4831,65 @@ KEYWORD1 void KEYWORD2 NAME(WindowPos4svMESA)(const GLshort * v) DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);\n", (const void *) v)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_674)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_685)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_674)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_685)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride) { DISPATCH(MultiModeDrawArraysIBM, (mode, first, count, primcount, modestride), (F, "glMultiModeDrawArraysIBM(%p, %p, %p, %d, %d);\n", (const void *) mode, (const void *) first, (const void *) count, primcount, modestride)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_675)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_686)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_675)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_686)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride) { DISPATCH(MultiModeDrawElementsIBM, (mode, count, type, indices, primcount, modestride), (F, "glMultiModeDrawElementsIBM(%p, %p, 0x%x, %p, %d, %d);\n", (const void *) mode, (const void *) count, type, (const void *) indices, primcount, modestride)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_676)(GLsizei n, const GLuint * fences); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_687)(GLsizei n, const GLuint * fences); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_676)(GLsizei n, const GLuint * fences) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_687)(GLsizei n, const GLuint * fences) { DISPATCH(DeleteFencesNV, (n, fences), (F, "glDeleteFencesNV(%d, %p);\n", n, (const void *) fences)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_677)(GLuint fence); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_688)(GLuint fence); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_677)(GLuint fence) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_688)(GLuint fence) { DISPATCH(FinishFenceNV, (fence), (F, "glFinishFenceNV(%d);\n", fence)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_678)(GLsizei n, GLuint * fences); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_689)(GLsizei n, GLuint * fences); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_678)(GLsizei n, GLuint * fences) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_689)(GLsizei n, GLuint * fences) { DISPATCH(GenFencesNV, (n, fences), (F, "glGenFencesNV(%d, %p);\n", n, (const void *) fences)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_679)(GLuint fence, GLenum pname, GLint * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_690)(GLuint fence, GLenum pname, GLint * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_679)(GLuint fence, GLenum pname, GLint * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_690)(GLuint fence, GLenum pname, GLint * params) { DISPATCH(GetFenceivNV, (fence, pname, params), (F, "glGetFenceivNV(%d, 0x%x, %p);\n", fence, pname, (const void *) params)); } -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_680)(GLuint fence); +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_691)(GLuint fence); -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_680)(GLuint fence) +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_691)(GLuint fence) { RETURN_DISPATCH(IsFenceNV, (fence), (F, "glIsFenceNV(%d);\n", fence)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_681)(GLuint fence, GLenum condition); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_692)(GLuint fence, GLenum condition); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_681)(GLuint fence, GLenum condition) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_692)(GLuint fence, GLenum condition) { DISPATCH(SetFenceNV, (fence, condition), (F, "glSetFenceNV(%d, 0x%x);\n", fence, condition)); } -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_682)(GLuint fence); +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_693)(GLuint fence); -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_682)(GLuint fence) +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_693)(GLuint fence) { RETURN_DISPATCH(TestFenceNV, (fence), (F, "glTestFenceNV(%d);\n", fence)); } @@ -4949,12 +5004,12 @@ KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len DISPATCH(LoadProgramNV, (target, id, len, program), (F, "glLoadProgramNV(0x%x, %d, %d, %p);\n", target, id, len, (const void *) program)); } -KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params) +KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble * params) { DISPATCH(ProgramParameters4dvNV, (target, index, num, params), (F, "glProgramParameters4dvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params) { DISPATCH(ProgramParameters4fvNV, (target, index, num, params), (F, "glProgramParameters4fvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params)); } @@ -5279,16 +5334,16 @@ KEYWORD1 void KEYWORD2 NAME(PointParameterivNV)(GLenum pname, const GLint * para DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameterivNV(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_763)(GLenum face); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_774)(GLenum face); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_763)(GLenum face) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_774)(GLenum face) { DISPATCH(ActiveStencilFaceEXT, (face), (F, "glActiveStencilFaceEXT(0x%x);\n", face)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_764)(GLuint array); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_775)(GLuint array); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_764)(GLuint array) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_775)(GLuint array) { DISPATCH(BindVertexArrayAPPLE, (array), (F, "glBindVertexArrayAPPLE(%d);\n", array)); } @@ -5298,16 +5353,16 @@ KEYWORD1 void KEYWORD2 NAME(DeleteVertexArrays)(GLsizei n, const GLuint * arrays DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArrays(%d, %p);\n", n, (const void *) arrays)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_765)(GLsizei n, const GLuint * arrays); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_776)(GLsizei n, const GLuint * arrays); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_765)(GLsizei n, const GLuint * arrays) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_776)(GLsizei n, const GLuint * arrays) { DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_766)(GLsizei n, GLuint * arrays); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_777)(GLsizei n, GLuint * arrays); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_766)(GLsizei n, GLuint * arrays) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_777)(GLsizei n, GLuint * arrays) { DISPATCH(GenVertexArraysAPPLE, (n, arrays), (F, "glGenVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays)); } @@ -5317,9 +5372,9 @@ KEYWORD1 GLboolean KEYWORD2 NAME(IsVertexArray)(GLuint array) RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArray(%d);\n", array)); } -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_767)(GLuint array); +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_778)(GLuint array); -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_767)(GLuint array) +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_778)(GLuint array) { RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArrayAPPLE(%d);\n", array)); } @@ -5359,14 +5414,19 @@ KEYWORD1 void KEYWORD2 NAME(PrimitiveRestartIndexNV)(GLuint index) DISPATCH(PrimitiveRestartIndexNV, (index), (F, "glPrimitiveRestartIndexNV(%d);\n", index)); } +KEYWORD1 void KEYWORD2 NAME(PrimitiveRestartIndex)(GLuint index) +{ + DISPATCH(PrimitiveRestartIndexNV, (index), (F, "glPrimitiveRestartIndex(%d);\n", index)); +} + KEYWORD1 void KEYWORD2 NAME(PrimitiveRestartNV)(void) { DISPATCH(PrimitiveRestartNV, (), (F, "glPrimitiveRestartNV();\n")); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_776)(GLclampd zmin, GLclampd zmax); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_787)(GLclampd zmin, GLclampd zmax); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_776)(GLclampd zmin, GLclampd zmax) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_787)(GLclampd zmin, GLclampd zmax) { DISPATCH(DepthBoundsEXT, (zmin, zmax), (F, "glDepthBoundsEXT(%f, %f);\n", zmin, zmax)); } @@ -5376,9 +5436,9 @@ KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparate)(GLenum modeRGB, GLenum modeA) DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparate(0x%x, 0x%x);\n", modeRGB, modeA)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_777)(GLenum modeRGB, GLenum modeA); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_788)(GLenum modeRGB, GLenum modeA); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_777)(GLenum modeRGB, GLenum modeA) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_788)(GLenum modeRGB, GLenum modeA) { DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateEXT(0x%x, 0x%x);\n", modeRGB, modeA)); } @@ -5558,27 +5618,367 @@ KEYWORD1 void KEYWORD2 NAME(BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint src DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebuffer(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_795)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_806)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_795)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_806)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_796)(GLenum target, GLenum pname, GLint param); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_807)(GLenum target, GLenum pname, GLint param); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_796)(GLenum target, GLenum pname, GLint param) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_807)(GLenum target, GLenum pname, GLint param) { DISPATCH(BufferParameteriAPPLE, (target, pname, param), (F, "glBufferParameteriAPPLE(0x%x, 0x%x, %d);\n", target, pname, param)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_797)(GLenum target, GLintptr offset, GLsizeiptr size); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_808)(GLenum target, GLintptr offset, GLsizeiptr size); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_797)(GLenum target, GLintptr offset, GLsizeiptr size) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_808)(GLenum target, GLintptr offset, GLsizeiptr size) { DISPATCH(FlushMappedBufferRangeAPPLE, (target, offset, size), (F, "glFlushMappedBufferRangeAPPLE(0x%x, %d, %d);\n", target, offset, size)); } +KEYWORD1 void KEYWORD2 NAME(BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar * name) +{ + DISPATCH(BindFragDataLocationEXT, (program, colorNumber, name), (F, "glBindFragDataLocationEXT(%d, %d, %p);\n", program, colorNumber, (const void *) name)); +} + +KEYWORD1 void KEYWORD2 NAME(BindFragDataLocation)(GLuint program, GLuint colorNumber, const GLchar * name) +{ + DISPATCH(BindFragDataLocationEXT, (program, colorNumber, name), (F, "glBindFragDataLocation(%d, %d, %p);\n", program, colorNumber, (const void *) name)); +} + +KEYWORD1 GLint KEYWORD2 NAME(GetFragDataLocationEXT)(GLuint program, const GLchar * name) +{ + RETURN_DISPATCH(GetFragDataLocationEXT, (program, name), (F, "glGetFragDataLocationEXT(%d, %p);\n", program, (const void *) name)); +} + +KEYWORD1 GLint KEYWORD2 NAME(GetFragDataLocation)(GLuint program, const GLchar * name) +{ + RETURN_DISPATCH(GetFragDataLocationEXT, (program, name), (F, "glGetFragDataLocation(%d, %p);\n", program, (const void *) name)); +} + +KEYWORD1 void KEYWORD2 NAME(GetUniformuivEXT)(GLuint program, GLint location, GLuint * params) +{ + DISPATCH(GetUniformuivEXT, (program, location, params), (F, "glGetUniformuivEXT(%d, %d, %p);\n", program, location, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetUniformuiv)(GLuint program, GLint location, GLuint * params) +{ + DISPATCH(GetUniformuivEXT, (program, location, params), (F, "glGetUniformuiv(%d, %d, %p);\n", program, location, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint * params) +{ + DISPATCH(GetVertexAttribIivEXT, (index, pname, params), (F, "glGetVertexAttribIivEXT(%d, 0x%x, %p);\n", index, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIiv)(GLuint index, GLenum pname, GLint * params) +{ + DISPATCH(GetVertexAttribIivEXT, (index, pname, params), (F, "glGetVertexAttribIiv(%d, 0x%x, %p);\n", index, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint * params) +{ + DISPATCH(GetVertexAttribIuivEXT, (index, pname, params), (F, "glGetVertexAttribIuivEXT(%d, 0x%x, %p);\n", index, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint * params) +{ + DISPATCH(GetVertexAttribIuivEXT, (index, pname, params), (F, "glGetVertexAttribIuiv(%d, 0x%x, %p);\n", index, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform1uiEXT)(GLint location, GLuint x) +{ + DISPATCH(Uniform1uiEXT, (location, x), (F, "glUniform1uiEXT(%d, %d);\n", location, x)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform1ui)(GLint location, GLuint x) +{ + DISPATCH(Uniform1uiEXT, (location, x), (F, "glUniform1ui(%d, %d);\n", location, x)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform1uivEXT)(GLint location, GLsizei count, const GLuint * value) +{ + DISPATCH(Uniform1uivEXT, (location, count, value), (F, "glUniform1uivEXT(%d, %d, %p);\n", location, count, (const void *) value)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform1uiv)(GLint location, GLsizei count, const GLuint * value) +{ + DISPATCH(Uniform1uivEXT, (location, count, value), (F, "glUniform1uiv(%d, %d, %p);\n", location, count, (const void *) value)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform2uiEXT)(GLint location, GLuint x, GLuint y) +{ + DISPATCH(Uniform2uiEXT, (location, x, y), (F, "glUniform2uiEXT(%d, %d, %d);\n", location, x, y)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform2ui)(GLint location, GLuint x, GLuint y) +{ + DISPATCH(Uniform2uiEXT, (location, x, y), (F, "glUniform2ui(%d, %d, %d);\n", location, x, y)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform2uivEXT)(GLint location, GLsizei count, const GLuint * value) +{ + DISPATCH(Uniform2uivEXT, (location, count, value), (F, "glUniform2uivEXT(%d, %d, %p);\n", location, count, (const void *) value)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform2uiv)(GLint location, GLsizei count, const GLuint * value) +{ + DISPATCH(Uniform2uivEXT, (location, count, value), (F, "glUniform2uiv(%d, %d, %p);\n", location, count, (const void *) value)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform3uiEXT)(GLint location, GLuint x, GLuint y, GLuint z) +{ + DISPATCH(Uniform3uiEXT, (location, x, y, z), (F, "glUniform3uiEXT(%d, %d, %d, %d);\n", location, x, y, z)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform3ui)(GLint location, GLuint x, GLuint y, GLuint z) +{ + DISPATCH(Uniform3uiEXT, (location, x, y, z), (F, "glUniform3ui(%d, %d, %d, %d);\n", location, x, y, z)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform3uivEXT)(GLint location, GLsizei count, const GLuint * value) +{ + DISPATCH(Uniform3uivEXT, (location, count, value), (F, "glUniform3uivEXT(%d, %d, %p);\n", location, count, (const void *) value)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform3uiv)(GLint location, GLsizei count, const GLuint * value) +{ + DISPATCH(Uniform3uivEXT, (location, count, value), (F, "glUniform3uiv(%d, %d, %p);\n", location, count, (const void *) value)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform4uiEXT)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w) +{ + DISPATCH(Uniform4uiEXT, (location, x, y, z, w), (F, "glUniform4uiEXT(%d, %d, %d, %d, %d);\n", location, x, y, z, w)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform4ui)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w) +{ + DISPATCH(Uniform4uiEXT, (location, x, y, z, w), (F, "glUniform4ui(%d, %d, %d, %d, %d);\n", location, x, y, z, w)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform4uivEXT)(GLint location, GLsizei count, const GLuint * value) +{ + DISPATCH(Uniform4uivEXT, (location, count, value), (F, "glUniform4uivEXT(%d, %d, %p);\n", location, count, (const void *) value)); +} + +KEYWORD1 void KEYWORD2 NAME(Uniform4uiv)(GLint location, GLsizei count, const GLuint * value) +{ + DISPATCH(Uniform4uivEXT, (location, count, value), (F, "glUniform4uiv(%d, %d, %p);\n", location, count, (const void *) value)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI1iEXT)(GLuint index, GLint x) +{ + DISPATCH(VertexAttribI1iEXT, (index, x), (F, "glVertexAttribI1iEXT(%d, %d);\n", index, x)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI1i)(GLuint index, GLint x) +{ + DISPATCH(VertexAttribI1iEXT, (index, x), (F, "glVertexAttribI1i(%d, %d);\n", index, x)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI1ivEXT)(GLuint index, const GLint * v) +{ + DISPATCH(VertexAttribI1ivEXT, (index, v), (F, "glVertexAttribI1ivEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI1iv)(GLuint index, const GLint * v) +{ + DISPATCH(VertexAttribI1ivEXT, (index, v), (F, "glVertexAttribI1iv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI1uiEXT)(GLuint index, GLuint x) +{ + DISPATCH(VertexAttribI1uiEXT, (index, x), (F, "glVertexAttribI1uiEXT(%d, %d);\n", index, x)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI1ui)(GLuint index, GLuint x) +{ + DISPATCH(VertexAttribI1uiEXT, (index, x), (F, "glVertexAttribI1ui(%d, %d);\n", index, x)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI1uivEXT)(GLuint index, const GLuint * v) +{ + DISPATCH(VertexAttribI1uivEXT, (index, v), (F, "glVertexAttribI1uivEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI1uiv)(GLuint index, const GLuint * v) +{ + DISPATCH(VertexAttribI1uivEXT, (index, v), (F, "glVertexAttribI1uiv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI2iEXT)(GLuint index, GLint x, GLint y) +{ + DISPATCH(VertexAttribI2iEXT, (index, x, y), (F, "glVertexAttribI2iEXT(%d, %d, %d);\n", index, x, y)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI2i)(GLuint index, GLint x, GLint y) +{ + DISPATCH(VertexAttribI2iEXT, (index, x, y), (F, "glVertexAttribI2i(%d, %d, %d);\n", index, x, y)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI2ivEXT)(GLuint index, const GLint * v) +{ + DISPATCH(VertexAttribI2ivEXT, (index, v), (F, "glVertexAttribI2ivEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI2iv)(GLuint index, const GLint * v) +{ + DISPATCH(VertexAttribI2ivEXT, (index, v), (F, "glVertexAttribI2iv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y) +{ + DISPATCH(VertexAttribI2uiEXT, (index, x, y), (F, "glVertexAttribI2uiEXT(%d, %d, %d);\n", index, x, y)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI2ui)(GLuint index, GLuint x, GLuint y) +{ + DISPATCH(VertexAttribI2uiEXT, (index, x, y), (F, "glVertexAttribI2ui(%d, %d, %d);\n", index, x, y)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI2uivEXT)(GLuint index, const GLuint * v) +{ + DISPATCH(VertexAttribI2uivEXT, (index, v), (F, "glVertexAttribI2uivEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI2uiv)(GLuint index, const GLuint * v) +{ + DISPATCH(VertexAttribI2uivEXT, (index, v), (F, "glVertexAttribI2uiv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z) +{ + DISPATCH(VertexAttribI3iEXT, (index, x, y, z), (F, "glVertexAttribI3iEXT(%d, %d, %d, %d);\n", index, x, y, z)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z) +{ + DISPATCH(VertexAttribI3iEXT, (index, x, y, z), (F, "glVertexAttribI3i(%d, %d, %d, %d);\n", index, x, y, z)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI3ivEXT)(GLuint index, const GLint * v) +{ + DISPATCH(VertexAttribI3ivEXT, (index, v), (F, "glVertexAttribI3ivEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI3iv)(GLuint index, const GLint * v) +{ + DISPATCH(VertexAttribI3ivEXT, (index, v), (F, "glVertexAttribI3iv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z) +{ + DISPATCH(VertexAttribI3uiEXT, (index, x, y, z), (F, "glVertexAttribI3uiEXT(%d, %d, %d, %d);\n", index, x, y, z)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z) +{ + DISPATCH(VertexAttribI3uiEXT, (index, x, y, z), (F, "glVertexAttribI3ui(%d, %d, %d, %d);\n", index, x, y, z)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI3uivEXT)(GLuint index, const GLuint * v) +{ + DISPATCH(VertexAttribI3uivEXT, (index, v), (F, "glVertexAttribI3uivEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI3uiv)(GLuint index, const GLuint * v) +{ + DISPATCH(VertexAttribI3uivEXT, (index, v), (F, "glVertexAttribI3uiv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4bvEXT)(GLuint index, const GLbyte * v) +{ + DISPATCH(VertexAttribI4bvEXT, (index, v), (F, "glVertexAttribI4bvEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4bv)(GLuint index, const GLbyte * v) +{ + DISPATCH(VertexAttribI4bvEXT, (index, v), (F, "glVertexAttribI4bv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + DISPATCH(VertexAttribI4iEXT, (index, x, y, z, w), (F, "glVertexAttribI4iEXT(%d, %d, %d, %d, %d);\n", index, x, y, z, w)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + DISPATCH(VertexAttribI4iEXT, (index, x, y, z, w), (F, "glVertexAttribI4i(%d, %d, %d, %d, %d);\n", index, x, y, z, w)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ivEXT)(GLuint index, const GLint * v) +{ + DISPATCH(VertexAttribI4ivEXT, (index, v), (F, "glVertexAttribI4ivEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4iv)(GLuint index, const GLint * v) +{ + DISPATCH(VertexAttribI4ivEXT, (index, v), (F, "glVertexAttribI4iv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4svEXT)(GLuint index, const GLshort * v) +{ + DISPATCH(VertexAttribI4svEXT, (index, v), (F, "glVertexAttribI4svEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4sv)(GLuint index, const GLshort * v) +{ + DISPATCH(VertexAttribI4svEXT, (index, v), (F, "glVertexAttribI4sv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ubvEXT)(GLuint index, const GLubyte * v) +{ + DISPATCH(VertexAttribI4ubvEXT, (index, v), (F, "glVertexAttribI4ubvEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ubv)(GLuint index, const GLubyte * v) +{ + DISPATCH(VertexAttribI4ubvEXT, (index, v), (F, "glVertexAttribI4ubv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + DISPATCH(VertexAttribI4uiEXT, (index, x, y, z, w), (F, "glVertexAttribI4uiEXT(%d, %d, %d, %d, %d);\n", index, x, y, z, w)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + DISPATCH(VertexAttribI4uiEXT, (index, x, y, z, w), (F, "glVertexAttribI4ui(%d, %d, %d, %d, %d);\n", index, x, y, z, w)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4uivEXT)(GLuint index, const GLuint * v) +{ + DISPATCH(VertexAttribI4uivEXT, (index, v), (F, "glVertexAttribI4uivEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4uiv)(GLuint index, const GLuint * v) +{ + DISPATCH(VertexAttribI4uivEXT, (index, v), (F, "glVertexAttribI4uiv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4usvEXT)(GLuint index, const GLushort * v) +{ + DISPATCH(VertexAttribI4usvEXT, (index, v), (F, "glVertexAttribI4usvEXT(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribI4usv)(GLuint index, const GLushort * v) +{ + DISPATCH(VertexAttribI4usvEXT, (index, v), (F, "glVertexAttribI4usv(%d, %p);\n", index, (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) +{ + DISPATCH(VertexAttribIPointerEXT, (index, size, type, stride, pointer), (F, "glVertexAttribIPointerEXT(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer)); +} + +KEYWORD1 void KEYWORD2 NAME(VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) +{ + DISPATCH(VertexAttribIPointerEXT, (index, size, type, stride, pointer), (F, "glVertexAttribIPointer(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer)); +} + KEYWORD1 void KEYWORD2 NAME(FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { DISPATCH(FramebufferTextureLayerEXT, (target, attachment, texture, level, layer), (F, "glFramebufferTextureLayer(0x%x, 0x%x, %d, %d, %d);\n", target, attachment, texture, level, layer)); @@ -5594,41 +5994,131 @@ KEYWORD1 void KEYWORD2 NAME(ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLbool DISPATCH(ColorMaskIndexedEXT, (buf, r, g, b, a), (F, "glColorMaskIndexedEXT(%d, %d, %d, %d, %d);\n", buf, r, g, b, a)); } +KEYWORD1 void KEYWORD2 NAME(ColorMaski)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + DISPATCH(ColorMaskIndexedEXT, (buf, r, g, b, a), (F, "glColorMaski(%d, %d, %d, %d, %d);\n", buf, r, g, b, a)); +} + KEYWORD1 void KEYWORD2 NAME(DisableIndexedEXT)(GLenum target, GLuint index) { DISPATCH(DisableIndexedEXT, (target, index), (F, "glDisableIndexedEXT(0x%x, %d);\n", target, index)); } +KEYWORD1 void KEYWORD2 NAME(Disablei)(GLenum target, GLuint index) +{ + DISPATCH(DisableIndexedEXT, (target, index), (F, "glDisablei(0x%x, %d);\n", target, index)); +} + KEYWORD1 void KEYWORD2 NAME(EnableIndexedEXT)(GLenum target, GLuint index) { DISPATCH(EnableIndexedEXT, (target, index), (F, "glEnableIndexedEXT(0x%x, %d);\n", target, index)); } +KEYWORD1 void KEYWORD2 NAME(Enablei)(GLenum target, GLuint index) +{ + DISPATCH(EnableIndexedEXT, (target, index), (F, "glEnablei(0x%x, %d);\n", target, index)); +} + KEYWORD1 void KEYWORD2 NAME(GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data) { DISPATCH(GetBooleanIndexedvEXT, (value, index, data), (F, "glGetBooleanIndexedvEXT(0x%x, %d, %p);\n", value, index, (const void *) data)); } +KEYWORD1 void KEYWORD2 NAME(GetBooleani_v)(GLenum value, GLuint index, GLboolean * data) +{ + DISPATCH(GetBooleanIndexedvEXT, (value, index, data), (F, "glGetBooleani_v(0x%x, %d, %p);\n", value, index, (const void *) data)); +} + KEYWORD1 void KEYWORD2 NAME(GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data) { DISPATCH(GetIntegerIndexedvEXT, (value, index, data), (F, "glGetIntegerIndexedvEXT(0x%x, %d, %p);\n", value, index, (const void *) data)); } +KEYWORD1 void KEYWORD2 NAME(GetIntegeri_v)(GLenum value, GLuint index, GLint * data) +{ + DISPATCH(GetIntegerIndexedvEXT, (value, index, data), (F, "glGetIntegeri_v(0x%x, %d, %p);\n", value, index, (const void *) data)); +} + KEYWORD1 GLboolean KEYWORD2 NAME(IsEnabledIndexedEXT)(GLenum target, GLuint index) { RETURN_DISPATCH(IsEnabledIndexedEXT, (target, index), (F, "glIsEnabledIndexedEXT(0x%x, %d);\n", target, index)); } +KEYWORD1 GLboolean KEYWORD2 NAME(IsEnabledi)(GLenum target, GLuint index) +{ + RETURN_DISPATCH(IsEnabledIndexedEXT, (target, index), (F, "glIsEnabledi(0x%x, %d);\n", target, index)); +} + +KEYWORD1 void KEYWORD2 NAME(ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a) +{ + DISPATCH(ClearColorIiEXT, (r, g, b, a), (F, "glClearColorIiEXT(%d, %d, %d, %d);\n", r, g, b, a)); +} + +KEYWORD1 void KEYWORD2 NAME(ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a) +{ + DISPATCH(ClearColorIuiEXT, (r, g, b, a), (F, "glClearColorIuiEXT(%d, %d, %d, %d);\n", r, g, b, a)); +} + +KEYWORD1 void KEYWORD2 NAME(GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint * params) +{ + DISPATCH(GetTexParameterIivEXT, (target, pname, params), (F, "glGetTexParameterIivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetTexParameterIiv)(GLenum target, GLenum pname, GLint * params) +{ + DISPATCH(GetTexParameterIivEXT, (target, pname, params), (F, "glGetTexParameterIiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint * params) +{ + DISPATCH(GetTexParameterIuivEXT, (target, pname, params), (F, "glGetTexParameterIuivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetTexParameterIuiv)(GLenum target, GLenum pname, GLuint * params) +{ + DISPATCH(GetTexParameterIuivEXT, (target, pname, params), (F, "glGetTexParameterIuiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(TexParameterIivEXT)(GLenum target, GLenum pname, const GLint * params) +{ + DISPATCH(TexParameterIivEXT, (target, pname, params), (F, "glTexParameterIivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(TexParameterIiv)(GLenum target, GLenum pname, const GLint * params) +{ + DISPATCH(TexParameterIivEXT, (target, pname, params), (F, "glTexParameterIiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint * params) +{ + DISPATCH(TexParameterIuivEXT, (target, pname, params), (F, "glTexParameterIuivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(TexParameterIuiv)(GLenum target, GLenum pname, const GLuint * params) +{ + DISPATCH(TexParameterIuivEXT, (target, pname, params), (F, "glTexParameterIuiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + KEYWORD1 void KEYWORD2 NAME(BeginConditionalRenderNV)(GLuint query, GLenum mode) { DISPATCH(BeginConditionalRenderNV, (query, mode), (F, "glBeginConditionalRenderNV(%d, 0x%x);\n", query, mode)); } +KEYWORD1 void KEYWORD2 NAME(BeginConditionalRender)(GLuint query, GLenum mode) +{ + DISPATCH(BeginConditionalRenderNV, (query, mode), (F, "glBeginConditionalRender(%d, 0x%x);\n", query, mode)); +} + KEYWORD1 void KEYWORD2 NAME(EndConditionalRenderNV)(void) { DISPATCH(EndConditionalRenderNV, (), (F, "glEndConditionalRenderNV();\n")); } +KEYWORD1 void KEYWORD2 NAME(EndConditionalRender)(void) +{ + DISPATCH(EndConditionalRenderNV, (), (F, "glEndConditionalRender();\n")); +} + KEYWORD1 void KEYWORD2 NAME(BeginTransformFeedbackEXT)(GLenum mode) { DISPATCH(BeginTransformFeedbackEXT, (mode), (F, "glBeginTransformFeedbackEXT(0x%x);\n", mode)); @@ -5689,7 +6179,7 @@ KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryingsEXT)(GLuint program, GLsize DISPATCH(TransformFeedbackVaryingsEXT, (program, count, varyings, bufferMode), (F, "glTransformFeedbackVaryingsEXT(%d, %d, %p, 0x%x);\n", program, count, (const void *) varyings, bufferMode)); } -KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryings)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode) +KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar* * varyings, GLenum bufferMode) { DISPATCH(TransformFeedbackVaryingsEXT, (program, count, varyings, bufferMode), (F, "glTransformFeedbackVaryings(%d, %d, %p, 0x%x);\n", program, count, (const void *) varyings, bufferMode)); } @@ -5704,16 +6194,16 @@ KEYWORD1 void KEYWORD2 NAME(ProvokingVertex)(GLenum mode) DISPATCH(ProvokingVertexEXT, (mode), (F, "glProvokingVertex(0x%x);\n", mode)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_815)(GLenum target, GLenum pname, GLvoid ** params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_866)(GLenum target, GLenum pname, GLvoid ** params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_815)(GLenum target, GLenum pname, GLvoid ** params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_866)(GLenum target, GLenum pname, GLvoid ** params) { DISPATCH(GetTexParameterPointervAPPLE, (target, pname, params), (F, "glGetTexParameterPointervAPPLE(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_816)(GLenum target, GLsizei length, GLvoid * pointer); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_867)(GLenum target, GLsizei length, GLvoid * pointer); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_816)(GLenum target, GLsizei length, GLvoid * pointer) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_867)(GLenum target, GLsizei length, GLvoid * pointer) { DISPATCH(TextureRangeAPPLE, (target, length, pointer), (F, "glTextureRangeAPPLE(0x%x, %d, %p);\n", target, length, (const void *) pointer)); } @@ -5733,37 +6223,52 @@ KEYWORD1 GLenum KEYWORD2 NAME(ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint RETURN_DISPATCH(ObjectUnpurgeableAPPLE, (objectType, name, option), (F, "glObjectUnpurgeableAPPLE(0x%x, %d, 0x%x);\n", objectType, name, option)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_820)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +KEYWORD1 void KEYWORD2 NAME(ActiveProgramEXT)(GLuint program) +{ + DISPATCH(ActiveProgramEXT, (program), (F, "glActiveProgramEXT(%d);\n", program)); +} + +KEYWORD1 GLuint KEYWORD2 NAME(CreateShaderProgramEXT)(GLenum type, const GLchar * string) +{ + RETURN_DISPATCH(CreateShaderProgramEXT, (type, string), (F, "glCreateShaderProgramEXT(0x%x, %p);\n", type, (const void *) string)); +} + +KEYWORD1 void KEYWORD2 NAME(UseShaderProgramEXT)(GLenum type, GLuint program) +{ + DISPATCH(UseShaderProgramEXT, (type, program), (F, "glUseShaderProgramEXT(0x%x, %d);\n", type, program)); +} + +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_874)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_820)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_874)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask) { DISPATCH(StencilFuncSeparateATI, (frontfunc, backfunc, ref, mask), (F, "glStencilFuncSeparateATI(0x%x, 0x%x, %d, %d);\n", frontfunc, backfunc, ref, mask)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_875)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_875)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) { DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_822)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_876)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_822)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_876)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) { DISPATCH(ProgramLocalParameters4fvEXT, (target, index, count, params), (F, "glProgramLocalParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLuint id, GLenum pname, GLint64EXT * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_877)(GLuint id, GLenum pname, GLint64EXT * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLuint id, GLenum pname, GLint64EXT * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_877)(GLuint id, GLenum pname, GLint64EXT * params) { DISPATCH(GetQueryObjecti64vEXT, (id, pname, params), (F, "glGetQueryObjecti64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLuint id, GLenum pname, GLuint64EXT * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_878)(GLuint id, GLenum pname, GLuint64EXT * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLuint id, GLenum pname, GLuint64EXT * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_878)(GLuint id, GLenum pname, GLuint64EXT * params) { DISPATCH(GetQueryObjectui64vEXT, (id, pname, params), (F, "glGetQueryObjectui64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params)); } @@ -6361,8 +6866,17 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(UniformMatrix3x4fv), TABLE_ENTRY(UniformMatrix4x2fv), TABLE_ENTRY(UniformMatrix4x3fv), - TABLE_ENTRY(DrawArraysInstanced), - TABLE_ENTRY(DrawElementsInstanced), + TABLE_ENTRY(ClampColor), + TABLE_ENTRY(ClearBufferfi), + TABLE_ENTRY(ClearBufferfv), + TABLE_ENTRY(ClearBufferiv), + TABLE_ENTRY(ClearBufferuiv), + TABLE_ENTRY(GetStringi), + TABLE_ENTRY(TexBuffer), + TABLE_ENTRY(FramebufferTexture), + TABLE_ENTRY(GetBufferParameteri64v), + TABLE_ENTRY(GetInteger64i_v), + TABLE_ENTRY(VertexAttribDivisor), TABLE_ENTRY(LoadTransposeMatrixdARB), TABLE_ENTRY(LoadTransposeMatrixfARB), TABLE_ENTRY(MultTransposeMatrixdARB), @@ -6494,6 +7008,8 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(GetActiveAttribARB), TABLE_ENTRY(GetAttribLocationARB), TABLE_ENTRY(DrawBuffersARB), + TABLE_ENTRY(DrawArraysInstancedARB), + TABLE_ENTRY(DrawElementsInstancedARB), TABLE_ENTRY(RenderbufferStorageMultisample), TABLE_ENTRY(FramebufferTextureARB), TABLE_ENTRY(FramebufferTextureFaceARB), @@ -6521,14 +7037,14 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(PauseTransformFeedback), TABLE_ENTRY(ResumeTransformFeedback), TABLE_ENTRY(PolygonOffsetEXT), - TABLE_ENTRY(_dispatch_stub_590), - TABLE_ENTRY(_dispatch_stub_591), - TABLE_ENTRY(_dispatch_stub_592), - TABLE_ENTRY(_dispatch_stub_593), - TABLE_ENTRY(_dispatch_stub_594), - TABLE_ENTRY(_dispatch_stub_595), - TABLE_ENTRY(_dispatch_stub_596), - TABLE_ENTRY(_dispatch_stub_597), + TABLE_ENTRY(_dispatch_stub_601), + TABLE_ENTRY(_dispatch_stub_602), + TABLE_ENTRY(_dispatch_stub_603), + TABLE_ENTRY(_dispatch_stub_604), + TABLE_ENTRY(_dispatch_stub_605), + TABLE_ENTRY(_dispatch_stub_606), + TABLE_ENTRY(_dispatch_stub_607), + TABLE_ENTRY(_dispatch_stub_608), TABLE_ENTRY(ColorPointerEXT), TABLE_ENTRY(EdgeFlagPointerEXT), TABLE_ENTRY(IndexPointerEXT), @@ -6563,7 +7079,7 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(FogCoorddvEXT), TABLE_ENTRY(FogCoordfEXT), TABLE_ENTRY(FogCoordfvEXT), - TABLE_ENTRY(_dispatch_stub_632), + TABLE_ENTRY(_dispatch_stub_643), TABLE_ENTRY(BlendFuncSeparateEXT), TABLE_ENTRY(FlushVertexArrayRangeNV), TABLE_ENTRY(VertexArrayRangeNV), @@ -6605,15 +7121,15 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(WindowPos4ivMESA), TABLE_ENTRY(WindowPos4sMESA), TABLE_ENTRY(WindowPos4svMESA), - TABLE_ENTRY(_dispatch_stub_674), - TABLE_ENTRY(_dispatch_stub_675), - TABLE_ENTRY(_dispatch_stub_676), - TABLE_ENTRY(_dispatch_stub_677), - TABLE_ENTRY(_dispatch_stub_678), - TABLE_ENTRY(_dispatch_stub_679), - TABLE_ENTRY(_dispatch_stub_680), - TABLE_ENTRY(_dispatch_stub_681), - TABLE_ENTRY(_dispatch_stub_682), + TABLE_ENTRY(_dispatch_stub_685), + TABLE_ENTRY(_dispatch_stub_686), + TABLE_ENTRY(_dispatch_stub_687), + TABLE_ENTRY(_dispatch_stub_688), + TABLE_ENTRY(_dispatch_stub_689), + TABLE_ENTRY(_dispatch_stub_690), + TABLE_ENTRY(_dispatch_stub_691), + TABLE_ENTRY(_dispatch_stub_692), + TABLE_ENTRY(_dispatch_stub_693), TABLE_ENTRY(AreProgramsResidentNV), TABLE_ENTRY(BindProgramNV), TABLE_ENTRY(DeleteProgramsNV), @@ -6694,11 +7210,11 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(SetFragmentShaderConstantATI), TABLE_ENTRY(PointParameteriNV), TABLE_ENTRY(PointParameterivNV), - TABLE_ENTRY(_dispatch_stub_763), - TABLE_ENTRY(_dispatch_stub_764), - TABLE_ENTRY(_dispatch_stub_765), - TABLE_ENTRY(_dispatch_stub_766), - TABLE_ENTRY(_dispatch_stub_767), + TABLE_ENTRY(_dispatch_stub_774), + TABLE_ENTRY(_dispatch_stub_775), + TABLE_ENTRY(_dispatch_stub_776), + TABLE_ENTRY(_dispatch_stub_777), + TABLE_ENTRY(_dispatch_stub_778), TABLE_ENTRY(GetProgramNamedParameterdvNV), TABLE_ENTRY(GetProgramNamedParameterfvNV), TABLE_ENTRY(ProgramNamedParameter4dNV), @@ -6707,8 +7223,8 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(ProgramNamedParameter4fvNV), TABLE_ENTRY(PrimitiveRestartIndexNV), TABLE_ENTRY(PrimitiveRestartNV), - TABLE_ENTRY(_dispatch_stub_776), - TABLE_ENTRY(_dispatch_stub_777), + TABLE_ENTRY(_dispatch_stub_787), + TABLE_ENTRY(_dispatch_stub_788), TABLE_ENTRY(BindFramebufferEXT), TABLE_ENTRY(BindRenderbufferEXT), TABLE_ENTRY(CheckFramebufferStatusEXT), @@ -6726,9 +7242,43 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(IsFramebufferEXT), TABLE_ENTRY(IsRenderbufferEXT), TABLE_ENTRY(RenderbufferStorageEXT), - TABLE_ENTRY(_dispatch_stub_795), - TABLE_ENTRY(_dispatch_stub_796), - TABLE_ENTRY(_dispatch_stub_797), + TABLE_ENTRY(_dispatch_stub_806), + TABLE_ENTRY(_dispatch_stub_807), + TABLE_ENTRY(_dispatch_stub_808), + TABLE_ENTRY(BindFragDataLocationEXT), + TABLE_ENTRY(GetFragDataLocationEXT), + TABLE_ENTRY(GetUniformuivEXT), + TABLE_ENTRY(GetVertexAttribIivEXT), + TABLE_ENTRY(GetVertexAttribIuivEXT), + TABLE_ENTRY(Uniform1uiEXT), + TABLE_ENTRY(Uniform1uivEXT), + TABLE_ENTRY(Uniform2uiEXT), + TABLE_ENTRY(Uniform2uivEXT), + TABLE_ENTRY(Uniform3uiEXT), + TABLE_ENTRY(Uniform3uivEXT), + TABLE_ENTRY(Uniform4uiEXT), + TABLE_ENTRY(Uniform4uivEXT), + TABLE_ENTRY(VertexAttribI1iEXT), + TABLE_ENTRY(VertexAttribI1ivEXT), + TABLE_ENTRY(VertexAttribI1uiEXT), + TABLE_ENTRY(VertexAttribI1uivEXT), + TABLE_ENTRY(VertexAttribI2iEXT), + TABLE_ENTRY(VertexAttribI2ivEXT), + TABLE_ENTRY(VertexAttribI2uiEXT), + TABLE_ENTRY(VertexAttribI2uivEXT), + TABLE_ENTRY(VertexAttribI3iEXT), + TABLE_ENTRY(VertexAttribI3ivEXT), + TABLE_ENTRY(VertexAttribI3uiEXT), + TABLE_ENTRY(VertexAttribI3uivEXT), + TABLE_ENTRY(VertexAttribI4bvEXT), + TABLE_ENTRY(VertexAttribI4iEXT), + TABLE_ENTRY(VertexAttribI4ivEXT), + TABLE_ENTRY(VertexAttribI4svEXT), + TABLE_ENTRY(VertexAttribI4ubvEXT), + TABLE_ENTRY(VertexAttribI4uiEXT), + TABLE_ENTRY(VertexAttribI4uivEXT), + TABLE_ENTRY(VertexAttribI4usvEXT), + TABLE_ENTRY(VertexAttribIPointerEXT), TABLE_ENTRY(FramebufferTextureLayerEXT), TABLE_ENTRY(ColorMaskIndexedEXT), TABLE_ENTRY(DisableIndexedEXT), @@ -6736,6 +7286,12 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(GetBooleanIndexedvEXT), TABLE_ENTRY(GetIntegerIndexedvEXT), TABLE_ENTRY(IsEnabledIndexedEXT), + TABLE_ENTRY(ClearColorIiEXT), + TABLE_ENTRY(ClearColorIuiEXT), + TABLE_ENTRY(GetTexParameterIivEXT), + TABLE_ENTRY(GetTexParameterIuivEXT), + TABLE_ENTRY(TexParameterIivEXT), + TABLE_ENTRY(TexParameterIuivEXT), TABLE_ENTRY(BeginConditionalRenderNV), TABLE_ENTRY(EndConditionalRenderNV), TABLE_ENTRY(BeginTransformFeedbackEXT), @@ -6746,16 +7302,19 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(GetTransformFeedbackVaryingEXT), TABLE_ENTRY(TransformFeedbackVaryingsEXT), TABLE_ENTRY(ProvokingVertexEXT), - TABLE_ENTRY(_dispatch_stub_815), - TABLE_ENTRY(_dispatch_stub_816), + TABLE_ENTRY(_dispatch_stub_866), + TABLE_ENTRY(_dispatch_stub_867), TABLE_ENTRY(GetObjectParameterivAPPLE), TABLE_ENTRY(ObjectPurgeableAPPLE), TABLE_ENTRY(ObjectUnpurgeableAPPLE), - TABLE_ENTRY(_dispatch_stub_820), - TABLE_ENTRY(_dispatch_stub_821), - TABLE_ENTRY(_dispatch_stub_822), - TABLE_ENTRY(_dispatch_stub_823), - TABLE_ENTRY(_dispatch_stub_824), + TABLE_ENTRY(ActiveProgramEXT), + TABLE_ENTRY(CreateShaderProgramEXT), + TABLE_ENTRY(UseShaderProgramEXT), + TABLE_ENTRY(_dispatch_stub_874), + TABLE_ENTRY(_dispatch_stub_875), + TABLE_ENTRY(_dispatch_stub_876), + TABLE_ENTRY(_dispatch_stub_877), + TABLE_ENTRY(_dispatch_stub_878), TABLE_ENTRY(EGLImageTargetRenderbufferStorageOES), TABLE_ENTRY(EGLImageTargetTexture2DOES), /* A whole bunch of no-op functions. These might be called @@ -6944,10 +7503,6 @@ _glapi_proc UNUSED_TABLE_NAME[] = { TABLE_ENTRY(MultiTexCoord4s), TABLE_ENTRY(MultiTexCoord4sv), TABLE_ENTRY(_dispatch_stub_423), - TABLE_ENTRY(DrawArraysInstancedARB), - TABLE_ENTRY(DrawArraysInstancedEXT), - TABLE_ENTRY(DrawElementsInstancedARB), - TABLE_ENTRY(DrawElementsInstancedEXT), TABLE_ENTRY(LoadTransposeMatrixd), TABLE_ENTRY(LoadTransposeMatrixf), TABLE_ENTRY(MultTransposeMatrixd), @@ -7059,13 +7614,17 @@ _glapi_proc UNUSED_TABLE_NAME[] = { TABLE_ENTRY(GetAttribLocation), TABLE_ENTRY(DrawBuffers), TABLE_ENTRY(DrawBuffersATI), + TABLE_ENTRY(DrawArraysInstancedEXT), + TABLE_ENTRY(DrawArraysInstanced), + TABLE_ENTRY(DrawElementsInstancedEXT), + TABLE_ENTRY(DrawElementsInstanced), TABLE_ENTRY(RenderbufferStorageMultisampleEXT), TABLE_ENTRY(PointParameterf), TABLE_ENTRY(PointParameterfARB), - TABLE_ENTRY(_dispatch_stub_604), + TABLE_ENTRY(_dispatch_stub_615), TABLE_ENTRY(PointParameterfv), TABLE_ENTRY(PointParameterfvARB), - TABLE_ENTRY(_dispatch_stub_605), + TABLE_ENTRY(_dispatch_stub_616), TABLE_ENTRY(SecondaryColor3b), TABLE_ENTRY(SecondaryColor3bv), TABLE_ENTRY(SecondaryColor3d), @@ -7091,7 +7650,7 @@ _glapi_proc UNUSED_TABLE_NAME[] = { TABLE_ENTRY(FogCoordf), TABLE_ENTRY(FogCoordfv), TABLE_ENTRY(BlendFuncSeparate), - TABLE_ENTRY(_dispatch_stub_633), + TABLE_ENTRY(_dispatch_stub_644), TABLE_ENTRY(WindowPos2d), TABLE_ENTRY(WindowPos2dARB), TABLE_ENTRY(WindowPos2dv), @@ -7134,6 +7693,7 @@ _glapi_proc UNUSED_TABLE_NAME[] = { TABLE_ENTRY(PointParameteriv), TABLE_ENTRY(DeleteVertexArrays), TABLE_ENTRY(IsVertexArray), + TABLE_ENTRY(PrimitiveRestartIndex), TABLE_ENTRY(BlendEquationSeparate), TABLE_ENTRY(BindFramebuffer), TABLE_ENTRY(BindRenderbuffer), @@ -7153,7 +7713,53 @@ _glapi_proc UNUSED_TABLE_NAME[] = { TABLE_ENTRY(IsRenderbuffer), TABLE_ENTRY(RenderbufferStorage), TABLE_ENTRY(BlitFramebuffer), + TABLE_ENTRY(BindFragDataLocation), + TABLE_ENTRY(GetFragDataLocation), + TABLE_ENTRY(GetUniformuiv), + TABLE_ENTRY(GetVertexAttribIiv), + TABLE_ENTRY(GetVertexAttribIuiv), + TABLE_ENTRY(Uniform1ui), + TABLE_ENTRY(Uniform1uiv), + TABLE_ENTRY(Uniform2ui), + TABLE_ENTRY(Uniform2uiv), + TABLE_ENTRY(Uniform3ui), + TABLE_ENTRY(Uniform3uiv), + TABLE_ENTRY(Uniform4ui), + TABLE_ENTRY(Uniform4uiv), + TABLE_ENTRY(VertexAttribI1i), + TABLE_ENTRY(VertexAttribI1iv), + TABLE_ENTRY(VertexAttribI1ui), + TABLE_ENTRY(VertexAttribI1uiv), + TABLE_ENTRY(VertexAttribI2i), + TABLE_ENTRY(VertexAttribI2iv), + TABLE_ENTRY(VertexAttribI2ui), + TABLE_ENTRY(VertexAttribI2uiv), + TABLE_ENTRY(VertexAttribI3i), + TABLE_ENTRY(VertexAttribI3iv), + TABLE_ENTRY(VertexAttribI3ui), + TABLE_ENTRY(VertexAttribI3uiv), + TABLE_ENTRY(VertexAttribI4bv), + TABLE_ENTRY(VertexAttribI4i), + TABLE_ENTRY(VertexAttribI4iv), + TABLE_ENTRY(VertexAttribI4sv), + TABLE_ENTRY(VertexAttribI4ubv), + TABLE_ENTRY(VertexAttribI4ui), + TABLE_ENTRY(VertexAttribI4uiv), + TABLE_ENTRY(VertexAttribI4usv), + TABLE_ENTRY(VertexAttribIPointer), TABLE_ENTRY(FramebufferTextureLayer), + TABLE_ENTRY(ColorMaski), + TABLE_ENTRY(Disablei), + TABLE_ENTRY(Enablei), + TABLE_ENTRY(GetBooleani_v), + TABLE_ENTRY(GetIntegeri_v), + TABLE_ENTRY(IsEnabledi), + TABLE_ENTRY(GetTexParameterIiv), + TABLE_ENTRY(GetTexParameterIuiv), + TABLE_ENTRY(TexParameterIiv), + TABLE_ENTRY(TexParameterIuiv), + TABLE_ENTRY(BeginConditionalRender), + TABLE_ENTRY(EndConditionalRender), TABLE_ENTRY(BeginTransformFeedback), TABLE_ENTRY(BindBufferBase), TABLE_ENTRY(BindBufferRange), diff --git a/src/mapi/glapi/glprocs.h b/src/mapi/glapi/glprocs.h index fd42c0a743..c0a98e622a 100644 --- a/src/mapi/glapi/glprocs.h +++ b/src/mapi/glapi/glprocs.h @@ -482,8 +482,17 @@ static const char gl_string_table[] = "glUniformMatrix3x4fv\0" "glUniformMatrix4x2fv\0" "glUniformMatrix4x3fv\0" - "glDrawArraysInstanced\0" - "glDrawElementsInstanced\0" + "glClampColor\0" + "glClearBufferfi\0" + "glClearBufferfv\0" + "glClearBufferiv\0" + "glClearBufferuiv\0" + "glGetStringi\0" + "glTexBuffer\0" + "glFramebufferTexture\0" + "glGetBufferParameteri64v\0" + "glGetInteger64i_v\0" + "glVertexAttribDivisor\0" "glLoadTransposeMatrixdARB\0" "glLoadTransposeMatrixfARB\0" "glMultTransposeMatrixdARB\0" @@ -615,6 +624,8 @@ static const char gl_string_table[] = "glGetActiveAttribARB\0" "glGetAttribLocationARB\0" "glDrawBuffersARB\0" + "glDrawArraysInstancedARB\0" + "glDrawElementsInstancedARB\0" "glRenderbufferStorageMultisample\0" "glFramebufferTextureARB\0" "glFramebufferTextureFaceARB\0" @@ -850,6 +861,40 @@ static const char gl_string_table[] = "glBlitFramebufferEXT\0" "glBufferParameteriAPPLE\0" "glFlushMappedBufferRangeAPPLE\0" + "glBindFragDataLocationEXT\0" + "glGetFragDataLocationEXT\0" + "glGetUniformuivEXT\0" + "glGetVertexAttribIivEXT\0" + "glGetVertexAttribIuivEXT\0" + "glUniform1uiEXT\0" + "glUniform1uivEXT\0" + "glUniform2uiEXT\0" + "glUniform2uivEXT\0" + "glUniform3uiEXT\0" + "glUniform3uivEXT\0" + "glUniform4uiEXT\0" + "glUniform4uivEXT\0" + "glVertexAttribI1iEXT\0" + "glVertexAttribI1ivEXT\0" + "glVertexAttribI1uiEXT\0" + "glVertexAttribI1uivEXT\0" + "glVertexAttribI2iEXT\0" + "glVertexAttribI2ivEXT\0" + "glVertexAttribI2uiEXT\0" + "glVertexAttribI2uivEXT\0" + "glVertexAttribI3iEXT\0" + "glVertexAttribI3ivEXT\0" + "glVertexAttribI3uiEXT\0" + "glVertexAttribI3uivEXT\0" + "glVertexAttribI4bvEXT\0" + "glVertexAttribI4iEXT\0" + "glVertexAttribI4ivEXT\0" + "glVertexAttribI4svEXT\0" + "glVertexAttribI4ubvEXT\0" + "glVertexAttribI4uiEXT\0" + "glVertexAttribI4uivEXT\0" + "glVertexAttribI4usvEXT\0" + "glVertexAttribIPointerEXT\0" "glFramebufferTextureLayerEXT\0" "glColorMaskIndexedEXT\0" "glDisableIndexedEXT\0" @@ -857,6 +902,12 @@ static const char gl_string_table[] = "glGetBooleanIndexedvEXT\0" "glGetIntegerIndexedvEXT\0" "glIsEnabledIndexedEXT\0" + "glClearColorIiEXT\0" + "glClearColorIuiEXT\0" + "glGetTexParameterIivEXT\0" + "glGetTexParameterIuivEXT\0" + "glTexParameterIivEXT\0" + "glTexParameterIuivEXT\0" "glBeginConditionalRenderNV\0" "glEndConditionalRenderNV\0" "glBeginTransformFeedbackEXT\0" @@ -872,6 +923,9 @@ static const char gl_string_table[] = "glGetObjectParameterivAPPLE\0" "glObjectPurgeableAPPLE\0" "glObjectUnpurgeableAPPLE\0" + "glActiveProgramEXT\0" + "glCreateShaderProgramEXT\0" + "glUseShaderProgramEXT\0" "glStencilFuncSeparateATI\0" "glProgramEnvParameters4fvEXT\0" "glProgramLocalParameters4fvEXT\0" @@ -971,10 +1025,6 @@ static const char gl_string_table[] = "glMultiTexCoord4s\0" "glMultiTexCoord4sv\0" "glStencilOpSeparateATI\0" - "glDrawArraysInstancedARB\0" - "glDrawArraysInstancedEXT\0" - "glDrawElementsInstancedARB\0" - "glDrawElementsInstancedEXT\0" "glLoadTransposeMatrixd\0" "glLoadTransposeMatrixf\0" "glMultTransposeMatrixd\0" @@ -1086,6 +1136,10 @@ static const char gl_string_table[] = "glGetAttribLocation\0" "glDrawBuffers\0" "glDrawBuffersATI\0" + "glDrawArraysInstancedEXT\0" + "glDrawArraysInstanced\0" + "glDrawElementsInstancedEXT\0" + "glDrawElementsInstanced\0" "glRenderbufferStorageMultisampleEXT\0" "glSampleMaskEXT\0" "glSamplePatternEXT\0" @@ -1163,6 +1217,7 @@ static const char gl_string_table[] = "glPointParameteriv\0" "glDeleteVertexArrays\0" "glIsVertexArray\0" + "glPrimitiveRestartIndex\0" "glBlendEquationSeparate\0" "glBlendEquationSeparateATI\0" "glBindFramebuffer\0" @@ -1183,7 +1238,53 @@ static const char gl_string_table[] = "glIsRenderbuffer\0" "glRenderbufferStorage\0" "glBlitFramebuffer\0" + "glBindFragDataLocation\0" + "glGetFragDataLocation\0" + "glGetUniformuiv\0" + "glGetVertexAttribIiv\0" + "glGetVertexAttribIuiv\0" + "glUniform1ui\0" + "glUniform1uiv\0" + "glUniform2ui\0" + "glUniform2uiv\0" + "glUniform3ui\0" + "glUniform3uiv\0" + "glUniform4ui\0" + "glUniform4uiv\0" + "glVertexAttribI1i\0" + "glVertexAttribI1iv\0" + "glVertexAttribI1ui\0" + "glVertexAttribI1uiv\0" + "glVertexAttribI2i\0" + "glVertexAttribI2iv\0" + "glVertexAttribI2ui\0" + "glVertexAttribI2uiv\0" + "glVertexAttribI3i\0" + "glVertexAttribI3iv\0" + "glVertexAttribI3ui\0" + "glVertexAttribI3uiv\0" + "glVertexAttribI4bv\0" + "glVertexAttribI4i\0" + "glVertexAttribI4iv\0" + "glVertexAttribI4sv\0" + "glVertexAttribI4ubv\0" + "glVertexAttribI4ui\0" + "glVertexAttribI4uiv\0" + "glVertexAttribI4usv\0" + "glVertexAttribIPointer\0" "glFramebufferTextureLayer\0" + "glColorMaski\0" + "glDisablei\0" + "glEnablei\0" + "glGetBooleani_v\0" + "glGetIntegeri_v\0" + "glIsEnabledi\0" + "glGetTexParameterIiv\0" + "glGetTexParameterIuiv\0" + "glTexParameterIiv\0" + "glTexParameterIuiv\0" + "glBeginConditionalRender\0" + "glEndConditionalRender\0" "glBeginTransformFeedback\0" "glBindBufferBase\0" "glBindBufferRange\0" @@ -1208,41 +1309,41 @@ static const char gl_string_table[] = #define gl_dispatch_stub_364 mgl_dispatch_stub_364 #define gl_dispatch_stub_365 mgl_dispatch_stub_365 #define gl_dispatch_stub_366 mgl_dispatch_stub_366 -#define gl_dispatch_stub_590 mgl_dispatch_stub_590 -#define gl_dispatch_stub_591 mgl_dispatch_stub_591 -#define gl_dispatch_stub_592 mgl_dispatch_stub_592 -#define gl_dispatch_stub_593 mgl_dispatch_stub_593 -#define gl_dispatch_stub_594 mgl_dispatch_stub_594 -#define gl_dispatch_stub_595 mgl_dispatch_stub_595 -#define gl_dispatch_stub_596 mgl_dispatch_stub_596 -#define gl_dispatch_stub_597 mgl_dispatch_stub_597 -#define gl_dispatch_stub_632 mgl_dispatch_stub_632 -#define gl_dispatch_stub_674 mgl_dispatch_stub_674 -#define gl_dispatch_stub_675 mgl_dispatch_stub_675 -#define gl_dispatch_stub_676 mgl_dispatch_stub_676 -#define gl_dispatch_stub_677 mgl_dispatch_stub_677 -#define gl_dispatch_stub_678 mgl_dispatch_stub_678 -#define gl_dispatch_stub_679 mgl_dispatch_stub_679 -#define gl_dispatch_stub_680 mgl_dispatch_stub_680 -#define gl_dispatch_stub_681 mgl_dispatch_stub_681 -#define gl_dispatch_stub_682 mgl_dispatch_stub_682 -#define gl_dispatch_stub_763 mgl_dispatch_stub_763 -#define gl_dispatch_stub_764 mgl_dispatch_stub_764 -#define gl_dispatch_stub_765 mgl_dispatch_stub_765 -#define gl_dispatch_stub_766 mgl_dispatch_stub_766 -#define gl_dispatch_stub_767 mgl_dispatch_stub_767 +#define gl_dispatch_stub_601 mgl_dispatch_stub_601 +#define gl_dispatch_stub_602 mgl_dispatch_stub_602 +#define gl_dispatch_stub_603 mgl_dispatch_stub_603 +#define gl_dispatch_stub_604 mgl_dispatch_stub_604 +#define gl_dispatch_stub_605 mgl_dispatch_stub_605 +#define gl_dispatch_stub_606 mgl_dispatch_stub_606 +#define gl_dispatch_stub_607 mgl_dispatch_stub_607 +#define gl_dispatch_stub_608 mgl_dispatch_stub_608 +#define gl_dispatch_stub_643 mgl_dispatch_stub_643 +#define gl_dispatch_stub_685 mgl_dispatch_stub_685 +#define gl_dispatch_stub_686 mgl_dispatch_stub_686 +#define gl_dispatch_stub_687 mgl_dispatch_stub_687 +#define gl_dispatch_stub_688 mgl_dispatch_stub_688 +#define gl_dispatch_stub_689 mgl_dispatch_stub_689 +#define gl_dispatch_stub_690 mgl_dispatch_stub_690 +#define gl_dispatch_stub_691 mgl_dispatch_stub_691 +#define gl_dispatch_stub_692 mgl_dispatch_stub_692 +#define gl_dispatch_stub_693 mgl_dispatch_stub_693 +#define gl_dispatch_stub_774 mgl_dispatch_stub_774 +#define gl_dispatch_stub_775 mgl_dispatch_stub_775 #define gl_dispatch_stub_776 mgl_dispatch_stub_776 #define gl_dispatch_stub_777 mgl_dispatch_stub_777 -#define gl_dispatch_stub_795 mgl_dispatch_stub_795 -#define gl_dispatch_stub_796 mgl_dispatch_stub_796 -#define gl_dispatch_stub_797 mgl_dispatch_stub_797 -#define gl_dispatch_stub_815 mgl_dispatch_stub_815 -#define gl_dispatch_stub_816 mgl_dispatch_stub_816 -#define gl_dispatch_stub_820 mgl_dispatch_stub_820 -#define gl_dispatch_stub_821 mgl_dispatch_stub_821 -#define gl_dispatch_stub_822 mgl_dispatch_stub_822 -#define gl_dispatch_stub_823 mgl_dispatch_stub_823 -#define gl_dispatch_stub_824 mgl_dispatch_stub_824 +#define gl_dispatch_stub_778 mgl_dispatch_stub_778 +#define gl_dispatch_stub_787 mgl_dispatch_stub_787 +#define gl_dispatch_stub_788 mgl_dispatch_stub_788 +#define gl_dispatch_stub_806 mgl_dispatch_stub_806 +#define gl_dispatch_stub_807 mgl_dispatch_stub_807 +#define gl_dispatch_stub_808 mgl_dispatch_stub_808 +#define gl_dispatch_stub_866 mgl_dispatch_stub_866 +#define gl_dispatch_stub_867 mgl_dispatch_stub_867 +#define gl_dispatch_stub_874 mgl_dispatch_stub_874 +#define gl_dispatch_stub_875 mgl_dispatch_stub_875 +#define gl_dispatch_stub_876 mgl_dispatch_stub_876 +#define gl_dispatch_stub_877 mgl_dispatch_stub_877 +#define gl_dispatch_stub_878 mgl_dispatch_stub_878 #endif /* USE_MGL_NAMESPACE */ @@ -1260,1183 +1361,1284 @@ void GLAPIENTRY gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params void GLAPIENTRY gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); void GLAPIENTRY gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params); void GLAPIENTRY gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params); -void GLAPIENTRY gl_dispatch_stub_590(GLenum pname, GLfloat * params); -void GLAPIENTRY gl_dispatch_stub_591(GLenum pname, GLint * params); -void GLAPIENTRY gl_dispatch_stub_592(GLenum pname, GLfloat param); -void GLAPIENTRY gl_dispatch_stub_593(GLenum pname, const GLfloat * params); -void GLAPIENTRY gl_dispatch_stub_594(GLenum pname, GLint param); -void GLAPIENTRY gl_dispatch_stub_595(GLenum pname, const GLint * params); -void GLAPIENTRY gl_dispatch_stub_596(GLclampf value, GLboolean invert); -void GLAPIENTRY gl_dispatch_stub_597(GLenum pattern); -void GLAPIENTRY gl_dispatch_stub_632(GLenum mode); -void GLAPIENTRY gl_dispatch_stub_674(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); -void GLAPIENTRY gl_dispatch_stub_675(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); -void GLAPIENTRY gl_dispatch_stub_676(GLsizei n, const GLuint * fences); -void GLAPIENTRY gl_dispatch_stub_677(GLuint fence); -void GLAPIENTRY gl_dispatch_stub_678(GLsizei n, GLuint * fences); -void GLAPIENTRY gl_dispatch_stub_679(GLuint fence, GLenum pname, GLint * params); -GLboolean GLAPIENTRY gl_dispatch_stub_680(GLuint fence); -void GLAPIENTRY gl_dispatch_stub_681(GLuint fence, GLenum condition); -GLboolean GLAPIENTRY gl_dispatch_stub_682(GLuint fence); -void GLAPIENTRY gl_dispatch_stub_763(GLenum face); -void GLAPIENTRY gl_dispatch_stub_764(GLuint array); -void GLAPIENTRY gl_dispatch_stub_765(GLsizei n, const GLuint * arrays); -void GLAPIENTRY gl_dispatch_stub_766(GLsizei n, GLuint * arrays); -GLboolean GLAPIENTRY gl_dispatch_stub_767(GLuint array); -void GLAPIENTRY gl_dispatch_stub_776(GLclampd zmin, GLclampd zmax); -void GLAPIENTRY gl_dispatch_stub_777(GLenum modeRGB, GLenum modeA); -void GLAPIENTRY gl_dispatch_stub_795(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -void GLAPIENTRY gl_dispatch_stub_796(GLenum target, GLenum pname, GLint param); -void GLAPIENTRY gl_dispatch_stub_797(GLenum target, GLintptr offset, GLsizeiptr size); -void GLAPIENTRY gl_dispatch_stub_815(GLenum target, GLenum pname, GLvoid ** params); -void GLAPIENTRY gl_dispatch_stub_816(GLenum target, GLsizei length, GLvoid * pointer); -void GLAPIENTRY gl_dispatch_stub_820(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -void GLAPIENTRY gl_dispatch_stub_821(GLenum target, GLuint index, GLsizei count, const GLfloat * params); -void GLAPIENTRY gl_dispatch_stub_822(GLenum target, GLuint index, GLsizei count, const GLfloat * params); -void GLAPIENTRY gl_dispatch_stub_823(GLuint id, GLenum pname, GLint64EXT * params); -void GLAPIENTRY gl_dispatch_stub_824(GLuint id, GLenum pname, GLuint64EXT * params); +void GLAPIENTRY gl_dispatch_stub_601(GLenum pname, GLfloat * params); +void GLAPIENTRY gl_dispatch_stub_602(GLenum pname, GLint * params); +void GLAPIENTRY gl_dispatch_stub_603(GLenum pname, GLfloat param); +void GLAPIENTRY gl_dispatch_stub_604(GLenum pname, const GLfloat * params); +void GLAPIENTRY gl_dispatch_stub_605(GLenum pname, GLint param); +void GLAPIENTRY gl_dispatch_stub_606(GLenum pname, const GLint * params); +void GLAPIENTRY gl_dispatch_stub_607(GLclampf value, GLboolean invert); +void GLAPIENTRY gl_dispatch_stub_608(GLenum pattern); +void GLAPIENTRY gl_dispatch_stub_643(GLenum mode); +void GLAPIENTRY gl_dispatch_stub_685(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); +void GLAPIENTRY gl_dispatch_stub_686(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); +void GLAPIENTRY gl_dispatch_stub_687(GLsizei n, const GLuint * fences); +void GLAPIENTRY gl_dispatch_stub_688(GLuint fence); +void GLAPIENTRY gl_dispatch_stub_689(GLsizei n, GLuint * fences); +void GLAPIENTRY gl_dispatch_stub_690(GLuint fence, GLenum pname, GLint * params); +GLboolean GLAPIENTRY gl_dispatch_stub_691(GLuint fence); +void GLAPIENTRY gl_dispatch_stub_692(GLuint fence, GLenum condition); +GLboolean GLAPIENTRY gl_dispatch_stub_693(GLuint fence); +void GLAPIENTRY gl_dispatch_stub_774(GLenum face); +void GLAPIENTRY gl_dispatch_stub_775(GLuint array); +void GLAPIENTRY gl_dispatch_stub_776(GLsizei n, const GLuint * arrays); +void GLAPIENTRY gl_dispatch_stub_777(GLsizei n, GLuint * arrays); +GLboolean GLAPIENTRY gl_dispatch_stub_778(GLuint array); +void GLAPIENTRY gl_dispatch_stub_787(GLclampd zmin, GLclampd zmax); +void GLAPIENTRY gl_dispatch_stub_788(GLenum modeRGB, GLenum modeA); +void GLAPIENTRY gl_dispatch_stub_806(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +void GLAPIENTRY gl_dispatch_stub_807(GLenum target, GLenum pname, GLint param); +void GLAPIENTRY gl_dispatch_stub_808(GLenum target, GLintptr offset, GLsizeiptr size); +void GLAPIENTRY gl_dispatch_stub_866(GLenum target, GLenum pname, GLvoid ** params); +void GLAPIENTRY gl_dispatch_stub_867(GLenum target, GLsizei length, GLvoid * pointer); +void GLAPIENTRY gl_dispatch_stub_874(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +void GLAPIENTRY gl_dispatch_stub_875(GLenum target, GLuint index, GLsizei count, const GLfloat * params); +void GLAPIENTRY gl_dispatch_stub_876(GLenum target, GLuint index, GLsizei count, const GLfloat * params); +void GLAPIENTRY gl_dispatch_stub_877(GLuint id, GLenum pname, GLint64EXT * params); +void GLAPIENTRY gl_dispatch_stub_878(GLuint id, GLenum pname, GLuint64EXT * params); #endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */ static const glprocs_table_t static_functions[] = { - NAME_FUNC_OFFSET( 0, glNewList, glNewList, NULL, _gloffset_NewList), - NAME_FUNC_OFFSET( 10, glEndList, glEndList, NULL, _gloffset_EndList), - NAME_FUNC_OFFSET( 20, glCallList, glCallList, NULL, _gloffset_CallList), - NAME_FUNC_OFFSET( 31, glCallLists, glCallLists, NULL, _gloffset_CallLists), - NAME_FUNC_OFFSET( 43, glDeleteLists, glDeleteLists, NULL, _gloffset_DeleteLists), - NAME_FUNC_OFFSET( 57, glGenLists, glGenLists, NULL, _gloffset_GenLists), - NAME_FUNC_OFFSET( 68, glListBase, glListBase, NULL, _gloffset_ListBase), - NAME_FUNC_OFFSET( 79, glBegin, glBegin, NULL, _gloffset_Begin), - NAME_FUNC_OFFSET( 87, glBitmap, glBitmap, NULL, _gloffset_Bitmap), - NAME_FUNC_OFFSET( 96, glColor3b, glColor3b, NULL, _gloffset_Color3b), - NAME_FUNC_OFFSET( 106, glColor3bv, glColor3bv, NULL, _gloffset_Color3bv), - NAME_FUNC_OFFSET( 117, glColor3d, glColor3d, NULL, _gloffset_Color3d), - NAME_FUNC_OFFSET( 127, glColor3dv, glColor3dv, NULL, _gloffset_Color3dv), - NAME_FUNC_OFFSET( 138, glColor3f, glColor3f, NULL, _gloffset_Color3f), - NAME_FUNC_OFFSET( 148, glColor3fv, glColor3fv, NULL, _gloffset_Color3fv), - NAME_FUNC_OFFSET( 159, glColor3i, glColor3i, NULL, _gloffset_Color3i), - NAME_FUNC_OFFSET( 169, glColor3iv, glColor3iv, NULL, _gloffset_Color3iv), - NAME_FUNC_OFFSET( 180, glColor3s, glColor3s, NULL, _gloffset_Color3s), - NAME_FUNC_OFFSET( 190, glColor3sv, glColor3sv, NULL, _gloffset_Color3sv), - NAME_FUNC_OFFSET( 201, glColor3ub, glColor3ub, NULL, _gloffset_Color3ub), - NAME_FUNC_OFFSET( 212, glColor3ubv, glColor3ubv, NULL, _gloffset_Color3ubv), - NAME_FUNC_OFFSET( 224, glColor3ui, glColor3ui, NULL, _gloffset_Color3ui), - NAME_FUNC_OFFSET( 235, glColor3uiv, glColor3uiv, NULL, _gloffset_Color3uiv), - NAME_FUNC_OFFSET( 247, glColor3us, glColor3us, NULL, _gloffset_Color3us), - NAME_FUNC_OFFSET( 258, glColor3usv, glColor3usv, NULL, _gloffset_Color3usv), - NAME_FUNC_OFFSET( 270, glColor4b, glColor4b, NULL, _gloffset_Color4b), - NAME_FUNC_OFFSET( 280, glColor4bv, glColor4bv, NULL, _gloffset_Color4bv), - NAME_FUNC_OFFSET( 291, glColor4d, glColor4d, NULL, _gloffset_Color4d), - NAME_FUNC_OFFSET( 301, glColor4dv, glColor4dv, NULL, _gloffset_Color4dv), - NAME_FUNC_OFFSET( 312, glColor4f, glColor4f, NULL, _gloffset_Color4f), - NAME_FUNC_OFFSET( 322, glColor4fv, glColor4fv, NULL, _gloffset_Color4fv), - NAME_FUNC_OFFSET( 333, glColor4i, glColor4i, NULL, _gloffset_Color4i), - NAME_FUNC_OFFSET( 343, glColor4iv, glColor4iv, NULL, _gloffset_Color4iv), - NAME_FUNC_OFFSET( 354, glColor4s, glColor4s, NULL, _gloffset_Color4s), - NAME_FUNC_OFFSET( 364, glColor4sv, glColor4sv, NULL, _gloffset_Color4sv), - NAME_FUNC_OFFSET( 375, glColor4ub, glColor4ub, NULL, _gloffset_Color4ub), - NAME_FUNC_OFFSET( 386, glColor4ubv, glColor4ubv, NULL, _gloffset_Color4ubv), - NAME_FUNC_OFFSET( 398, glColor4ui, glColor4ui, NULL, _gloffset_Color4ui), - NAME_FUNC_OFFSET( 409, glColor4uiv, glColor4uiv, NULL, _gloffset_Color4uiv), - NAME_FUNC_OFFSET( 421, glColor4us, glColor4us, NULL, _gloffset_Color4us), - NAME_FUNC_OFFSET( 432, glColor4usv, glColor4usv, NULL, _gloffset_Color4usv), - NAME_FUNC_OFFSET( 444, glEdgeFlag, glEdgeFlag, NULL, _gloffset_EdgeFlag), - NAME_FUNC_OFFSET( 455, glEdgeFlagv, glEdgeFlagv, NULL, _gloffset_EdgeFlagv), - NAME_FUNC_OFFSET( 467, glEnd, glEnd, NULL, _gloffset_End), - NAME_FUNC_OFFSET( 473, glIndexd, glIndexd, NULL, _gloffset_Indexd), - NAME_FUNC_OFFSET( 482, glIndexdv, glIndexdv, NULL, _gloffset_Indexdv), - NAME_FUNC_OFFSET( 492, glIndexf, glIndexf, NULL, _gloffset_Indexf), - NAME_FUNC_OFFSET( 501, glIndexfv, glIndexfv, NULL, _gloffset_Indexfv), - NAME_FUNC_OFFSET( 511, glIndexi, glIndexi, NULL, _gloffset_Indexi), - NAME_FUNC_OFFSET( 520, glIndexiv, glIndexiv, NULL, _gloffset_Indexiv), - NAME_FUNC_OFFSET( 530, glIndexs, glIndexs, NULL, _gloffset_Indexs), - NAME_FUNC_OFFSET( 539, glIndexsv, glIndexsv, NULL, _gloffset_Indexsv), - NAME_FUNC_OFFSET( 549, glNormal3b, glNormal3b, NULL, _gloffset_Normal3b), - NAME_FUNC_OFFSET( 560, glNormal3bv, glNormal3bv, NULL, _gloffset_Normal3bv), - NAME_FUNC_OFFSET( 572, glNormal3d, glNormal3d, NULL, _gloffset_Normal3d), - NAME_FUNC_OFFSET( 583, glNormal3dv, glNormal3dv, NULL, _gloffset_Normal3dv), - NAME_FUNC_OFFSET( 595, glNormal3f, glNormal3f, NULL, _gloffset_Normal3f), - NAME_FUNC_OFFSET( 606, glNormal3fv, glNormal3fv, NULL, _gloffset_Normal3fv), - NAME_FUNC_OFFSET( 618, glNormal3i, glNormal3i, NULL, _gloffset_Normal3i), - NAME_FUNC_OFFSET( 629, glNormal3iv, glNormal3iv, NULL, _gloffset_Normal3iv), - NAME_FUNC_OFFSET( 641, glNormal3s, glNormal3s, NULL, _gloffset_Normal3s), - NAME_FUNC_OFFSET( 652, glNormal3sv, glNormal3sv, NULL, _gloffset_Normal3sv), - NAME_FUNC_OFFSET( 664, glRasterPos2d, glRasterPos2d, NULL, _gloffset_RasterPos2d), - NAME_FUNC_OFFSET( 678, glRasterPos2dv, glRasterPos2dv, NULL, _gloffset_RasterPos2dv), - NAME_FUNC_OFFSET( 693, glRasterPos2f, glRasterPos2f, NULL, _gloffset_RasterPos2f), - NAME_FUNC_OFFSET( 707, glRasterPos2fv, glRasterPos2fv, NULL, _gloffset_RasterPos2fv), - NAME_FUNC_OFFSET( 722, glRasterPos2i, glRasterPos2i, NULL, _gloffset_RasterPos2i), - NAME_FUNC_OFFSET( 736, glRasterPos2iv, glRasterPos2iv, NULL, _gloffset_RasterPos2iv), - NAME_FUNC_OFFSET( 751, glRasterPos2s, glRasterPos2s, NULL, _gloffset_RasterPos2s), - NAME_FUNC_OFFSET( 765, glRasterPos2sv, glRasterPos2sv, NULL, _gloffset_RasterPos2sv), - NAME_FUNC_OFFSET( 780, glRasterPos3d, glRasterPos3d, NULL, _gloffset_RasterPos3d), - NAME_FUNC_OFFSET( 794, glRasterPos3dv, glRasterPos3dv, NULL, _gloffset_RasterPos3dv), - NAME_FUNC_OFFSET( 809, glRasterPos3f, glRasterPos3f, NULL, _gloffset_RasterPos3f), - NAME_FUNC_OFFSET( 823, glRasterPos3fv, glRasterPos3fv, NULL, _gloffset_RasterPos3fv), - NAME_FUNC_OFFSET( 838, glRasterPos3i, glRasterPos3i, NULL, _gloffset_RasterPos3i), - NAME_FUNC_OFFSET( 852, glRasterPos3iv, glRasterPos3iv, NULL, _gloffset_RasterPos3iv), - NAME_FUNC_OFFSET( 867, glRasterPos3s, glRasterPos3s, NULL, _gloffset_RasterPos3s), - NAME_FUNC_OFFSET( 881, glRasterPos3sv, glRasterPos3sv, NULL, _gloffset_RasterPos3sv), - NAME_FUNC_OFFSET( 896, glRasterPos4d, glRasterPos4d, NULL, _gloffset_RasterPos4d), - NAME_FUNC_OFFSET( 910, glRasterPos4dv, glRasterPos4dv, NULL, _gloffset_RasterPos4dv), - NAME_FUNC_OFFSET( 925, glRasterPos4f, glRasterPos4f, NULL, _gloffset_RasterPos4f), - NAME_FUNC_OFFSET( 939, glRasterPos4fv, glRasterPos4fv, NULL, _gloffset_RasterPos4fv), - NAME_FUNC_OFFSET( 954, glRasterPos4i, glRasterPos4i, NULL, _gloffset_RasterPos4i), - NAME_FUNC_OFFSET( 968, glRasterPos4iv, glRasterPos4iv, NULL, _gloffset_RasterPos4iv), - NAME_FUNC_OFFSET( 983, glRasterPos4s, glRasterPos4s, NULL, _gloffset_RasterPos4s), - NAME_FUNC_OFFSET( 997, glRasterPos4sv, glRasterPos4sv, NULL, _gloffset_RasterPos4sv), - NAME_FUNC_OFFSET( 1012, glRectd, glRectd, NULL, _gloffset_Rectd), - NAME_FUNC_OFFSET( 1020, glRectdv, glRectdv, NULL, _gloffset_Rectdv), - NAME_FUNC_OFFSET( 1029, glRectf, glRectf, NULL, _gloffset_Rectf), - NAME_FUNC_OFFSET( 1037, glRectfv, glRectfv, NULL, _gloffset_Rectfv), - NAME_FUNC_OFFSET( 1046, glRecti, glRecti, NULL, _gloffset_Recti), - NAME_FUNC_OFFSET( 1054, glRectiv, glRectiv, NULL, _gloffset_Rectiv), - NAME_FUNC_OFFSET( 1063, glRects, glRects, NULL, _gloffset_Rects), - NAME_FUNC_OFFSET( 1071, glRectsv, glRectsv, NULL, _gloffset_Rectsv), - NAME_FUNC_OFFSET( 1080, glTexCoord1d, glTexCoord1d, NULL, _gloffset_TexCoord1d), - NAME_FUNC_OFFSET( 1093, glTexCoord1dv, glTexCoord1dv, NULL, _gloffset_TexCoord1dv), - NAME_FUNC_OFFSET( 1107, glTexCoord1f, glTexCoord1f, NULL, _gloffset_TexCoord1f), - NAME_FUNC_OFFSET( 1120, glTexCoord1fv, glTexCoord1fv, NULL, _gloffset_TexCoord1fv), - NAME_FUNC_OFFSET( 1134, glTexCoord1i, glTexCoord1i, NULL, _gloffset_TexCoord1i), - NAME_FUNC_OFFSET( 1147, glTexCoord1iv, glTexCoord1iv, NULL, _gloffset_TexCoord1iv), - NAME_FUNC_OFFSET( 1161, glTexCoord1s, glTexCoord1s, NULL, _gloffset_TexCoord1s), - NAME_FUNC_OFFSET( 1174, glTexCoord1sv, glTexCoord1sv, NULL, _gloffset_TexCoord1sv), - NAME_FUNC_OFFSET( 1188, glTexCoord2d, glTexCoord2d, NULL, _gloffset_TexCoord2d), - NAME_FUNC_OFFSET( 1201, glTexCoord2dv, glTexCoord2dv, NULL, _gloffset_TexCoord2dv), - NAME_FUNC_OFFSET( 1215, glTexCoord2f, glTexCoord2f, NULL, _gloffset_TexCoord2f), - NAME_FUNC_OFFSET( 1228, glTexCoord2fv, glTexCoord2fv, NULL, _gloffset_TexCoord2fv), - NAME_FUNC_OFFSET( 1242, glTexCoord2i, glTexCoord2i, NULL, _gloffset_TexCoord2i), - NAME_FUNC_OFFSET( 1255, glTexCoord2iv, glTexCoord2iv, NULL, _gloffset_TexCoord2iv), - NAME_FUNC_OFFSET( 1269, glTexCoord2s, glTexCoord2s, NULL, _gloffset_TexCoord2s), - NAME_FUNC_OFFSET( 1282, glTexCoord2sv, glTexCoord2sv, NULL, _gloffset_TexCoord2sv), - NAME_FUNC_OFFSET( 1296, glTexCoord3d, glTexCoord3d, NULL, _gloffset_TexCoord3d), - NAME_FUNC_OFFSET( 1309, glTexCoord3dv, glTexCoord3dv, NULL, _gloffset_TexCoord3dv), - NAME_FUNC_OFFSET( 1323, glTexCoord3f, glTexCoord3f, NULL, _gloffset_TexCoord3f), - NAME_FUNC_OFFSET( 1336, glTexCoord3fv, glTexCoord3fv, NULL, _gloffset_TexCoord3fv), - NAME_FUNC_OFFSET( 1350, glTexCoord3i, glTexCoord3i, NULL, _gloffset_TexCoord3i), - NAME_FUNC_OFFSET( 1363, glTexCoord3iv, glTexCoord3iv, NULL, _gloffset_TexCoord3iv), - NAME_FUNC_OFFSET( 1377, glTexCoord3s, glTexCoord3s, NULL, _gloffset_TexCoord3s), - NAME_FUNC_OFFSET( 1390, glTexCoord3sv, glTexCoord3sv, NULL, _gloffset_TexCoord3sv), - NAME_FUNC_OFFSET( 1404, glTexCoord4d, glTexCoord4d, NULL, _gloffset_TexCoord4d), - NAME_FUNC_OFFSET( 1417, glTexCoord4dv, glTexCoord4dv, NULL, _gloffset_TexCoord4dv), - NAME_FUNC_OFFSET( 1431, glTexCoord4f, glTexCoord4f, NULL, _gloffset_TexCoord4f), - NAME_FUNC_OFFSET( 1444, glTexCoord4fv, glTexCoord4fv, NULL, _gloffset_TexCoord4fv), - NAME_FUNC_OFFSET( 1458, glTexCoord4i, glTexCoord4i, NULL, _gloffset_TexCoord4i), - NAME_FUNC_OFFSET( 1471, glTexCoord4iv, glTexCoord4iv, NULL, _gloffset_TexCoord4iv), - NAME_FUNC_OFFSET( 1485, glTexCoord4s, glTexCoord4s, NULL, _gloffset_TexCoord4s), - NAME_FUNC_OFFSET( 1498, glTexCoord4sv, glTexCoord4sv, NULL, _gloffset_TexCoord4sv), - NAME_FUNC_OFFSET( 1512, glVertex2d, glVertex2d, NULL, _gloffset_Vertex2d), - NAME_FUNC_OFFSET( 1523, glVertex2dv, glVertex2dv, NULL, _gloffset_Vertex2dv), - NAME_FUNC_OFFSET( 1535, glVertex2f, glVertex2f, NULL, _gloffset_Vertex2f), - NAME_FUNC_OFFSET( 1546, glVertex2fv, glVertex2fv, NULL, _gloffset_Vertex2fv), - NAME_FUNC_OFFSET( 1558, glVertex2i, glVertex2i, NULL, _gloffset_Vertex2i), - NAME_FUNC_OFFSET( 1569, glVertex2iv, glVertex2iv, NULL, _gloffset_Vertex2iv), - NAME_FUNC_OFFSET( 1581, glVertex2s, glVertex2s, NULL, _gloffset_Vertex2s), - NAME_FUNC_OFFSET( 1592, glVertex2sv, glVertex2sv, NULL, _gloffset_Vertex2sv), - NAME_FUNC_OFFSET( 1604, glVertex3d, glVertex3d, NULL, _gloffset_Vertex3d), - NAME_FUNC_OFFSET( 1615, glVertex3dv, glVertex3dv, NULL, _gloffset_Vertex3dv), - NAME_FUNC_OFFSET( 1627, glVertex3f, glVertex3f, NULL, _gloffset_Vertex3f), - NAME_FUNC_OFFSET( 1638, glVertex3fv, glVertex3fv, NULL, _gloffset_Vertex3fv), - NAME_FUNC_OFFSET( 1650, glVertex3i, glVertex3i, NULL, _gloffset_Vertex3i), - NAME_FUNC_OFFSET( 1661, glVertex3iv, glVertex3iv, NULL, _gloffset_Vertex3iv), - NAME_FUNC_OFFSET( 1673, glVertex3s, glVertex3s, NULL, _gloffset_Vertex3s), - NAME_FUNC_OFFSET( 1684, glVertex3sv, glVertex3sv, NULL, _gloffset_Vertex3sv), - NAME_FUNC_OFFSET( 1696, glVertex4d, glVertex4d, NULL, _gloffset_Vertex4d), - NAME_FUNC_OFFSET( 1707, glVertex4dv, glVertex4dv, NULL, _gloffset_Vertex4dv), - NAME_FUNC_OFFSET( 1719, glVertex4f, glVertex4f, NULL, _gloffset_Vertex4f), - NAME_FUNC_OFFSET( 1730, glVertex4fv, glVertex4fv, NULL, _gloffset_Vertex4fv), - NAME_FUNC_OFFSET( 1742, glVertex4i, glVertex4i, NULL, _gloffset_Vertex4i), - NAME_FUNC_OFFSET( 1753, glVertex4iv, glVertex4iv, NULL, _gloffset_Vertex4iv), - NAME_FUNC_OFFSET( 1765, glVertex4s, glVertex4s, NULL, _gloffset_Vertex4s), - NAME_FUNC_OFFSET( 1776, glVertex4sv, glVertex4sv, NULL, _gloffset_Vertex4sv), - NAME_FUNC_OFFSET( 1788, glClipPlane, glClipPlane, NULL, _gloffset_ClipPlane), - NAME_FUNC_OFFSET( 1800, glColorMaterial, glColorMaterial, NULL, _gloffset_ColorMaterial), - NAME_FUNC_OFFSET( 1816, glCullFace, glCullFace, NULL, _gloffset_CullFace), - NAME_FUNC_OFFSET( 1827, glFogf, glFogf, NULL, _gloffset_Fogf), - NAME_FUNC_OFFSET( 1834, glFogfv, glFogfv, NULL, _gloffset_Fogfv), - NAME_FUNC_OFFSET( 1842, glFogi, glFogi, NULL, _gloffset_Fogi), - NAME_FUNC_OFFSET( 1849, glFogiv, glFogiv, NULL, _gloffset_Fogiv), - NAME_FUNC_OFFSET( 1857, glFrontFace, glFrontFace, NULL, _gloffset_FrontFace), - NAME_FUNC_OFFSET( 1869, glHint, glHint, NULL, _gloffset_Hint), - NAME_FUNC_OFFSET( 1876, glLightf, glLightf, NULL, _gloffset_Lightf), - NAME_FUNC_OFFSET( 1885, glLightfv, glLightfv, NULL, _gloffset_Lightfv), - NAME_FUNC_OFFSET( 1895, glLighti, glLighti, NULL, _gloffset_Lighti), - NAME_FUNC_OFFSET( 1904, glLightiv, glLightiv, NULL, _gloffset_Lightiv), - NAME_FUNC_OFFSET( 1914, glLightModelf, glLightModelf, NULL, _gloffset_LightModelf), - NAME_FUNC_OFFSET( 1928, glLightModelfv, glLightModelfv, NULL, _gloffset_LightModelfv), - NAME_FUNC_OFFSET( 1943, glLightModeli, glLightModeli, NULL, _gloffset_LightModeli), - NAME_FUNC_OFFSET( 1957, glLightModeliv, glLightModeliv, NULL, _gloffset_LightModeliv), - NAME_FUNC_OFFSET( 1972, glLineStipple, glLineStipple, NULL, _gloffset_LineStipple), - NAME_FUNC_OFFSET( 1986, glLineWidth, glLineWidth, NULL, _gloffset_LineWidth), - NAME_FUNC_OFFSET( 1998, glMaterialf, glMaterialf, NULL, _gloffset_Materialf), - NAME_FUNC_OFFSET( 2010, glMaterialfv, glMaterialfv, NULL, _gloffset_Materialfv), - NAME_FUNC_OFFSET( 2023, glMateriali, glMateriali, NULL, _gloffset_Materiali), - NAME_FUNC_OFFSET( 2035, glMaterialiv, glMaterialiv, NULL, _gloffset_Materialiv), - NAME_FUNC_OFFSET( 2048, glPointSize, glPointSize, NULL, _gloffset_PointSize), - NAME_FUNC_OFFSET( 2060, glPolygonMode, glPolygonMode, NULL, _gloffset_PolygonMode), - NAME_FUNC_OFFSET( 2074, glPolygonStipple, glPolygonStipple, NULL, _gloffset_PolygonStipple), - NAME_FUNC_OFFSET( 2091, glScissor, glScissor, NULL, _gloffset_Scissor), - NAME_FUNC_OFFSET( 2101, glShadeModel, glShadeModel, NULL, _gloffset_ShadeModel), - NAME_FUNC_OFFSET( 2114, glTexParameterf, glTexParameterf, NULL, _gloffset_TexParameterf), - NAME_FUNC_OFFSET( 2130, glTexParameterfv, glTexParameterfv, NULL, _gloffset_TexParameterfv), - NAME_FUNC_OFFSET( 2147, glTexParameteri, glTexParameteri, NULL, _gloffset_TexParameteri), - NAME_FUNC_OFFSET( 2163, glTexParameteriv, glTexParameteriv, NULL, _gloffset_TexParameteriv), - NAME_FUNC_OFFSET( 2180, glTexImage1D, glTexImage1D, NULL, _gloffset_TexImage1D), - NAME_FUNC_OFFSET( 2193, glTexImage2D, glTexImage2D, NULL, _gloffset_TexImage2D), - NAME_FUNC_OFFSET( 2206, glTexEnvf, glTexEnvf, NULL, _gloffset_TexEnvf), - NAME_FUNC_OFFSET( 2216, glTexEnvfv, glTexEnvfv, NULL, _gloffset_TexEnvfv), - NAME_FUNC_OFFSET( 2227, glTexEnvi, glTexEnvi, NULL, _gloffset_TexEnvi), - NAME_FUNC_OFFSET( 2237, glTexEnviv, glTexEnviv, NULL, _gloffset_TexEnviv), - NAME_FUNC_OFFSET( 2248, glTexGend, glTexGend, NULL, _gloffset_TexGend), - NAME_FUNC_OFFSET( 2258, glTexGendv, glTexGendv, NULL, _gloffset_TexGendv), - NAME_FUNC_OFFSET( 2269, glTexGenf, glTexGenf, NULL, _gloffset_TexGenf), - NAME_FUNC_OFFSET( 2279, glTexGenfv, glTexGenfv, NULL, _gloffset_TexGenfv), - NAME_FUNC_OFFSET( 2290, glTexGeni, glTexGeni, NULL, _gloffset_TexGeni), - NAME_FUNC_OFFSET( 2300, glTexGeniv, glTexGeniv, NULL, _gloffset_TexGeniv), - NAME_FUNC_OFFSET( 2311, glFeedbackBuffer, glFeedbackBuffer, NULL, _gloffset_FeedbackBuffer), - NAME_FUNC_OFFSET( 2328, glSelectBuffer, glSelectBuffer, NULL, _gloffset_SelectBuffer), - NAME_FUNC_OFFSET( 2343, glRenderMode, glRenderMode, NULL, _gloffset_RenderMode), - NAME_FUNC_OFFSET( 2356, glInitNames, glInitNames, NULL, _gloffset_InitNames), - NAME_FUNC_OFFSET( 2368, glLoadName, glLoadName, NULL, _gloffset_LoadName), - NAME_FUNC_OFFSET( 2379, glPassThrough, glPassThrough, NULL, _gloffset_PassThrough), - NAME_FUNC_OFFSET( 2393, glPopName, glPopName, NULL, _gloffset_PopName), - NAME_FUNC_OFFSET( 2403, glPushName, glPushName, NULL, _gloffset_PushName), - NAME_FUNC_OFFSET( 2414, glDrawBuffer, glDrawBuffer, NULL, _gloffset_DrawBuffer), - NAME_FUNC_OFFSET( 2427, glClear, glClear, NULL, _gloffset_Clear), - NAME_FUNC_OFFSET( 2435, glClearAccum, glClearAccum, NULL, _gloffset_ClearAccum), - NAME_FUNC_OFFSET( 2448, glClearIndex, glClearIndex, NULL, _gloffset_ClearIndex), - NAME_FUNC_OFFSET( 2461, glClearColor, glClearColor, NULL, _gloffset_ClearColor), - NAME_FUNC_OFFSET( 2474, glClearStencil, glClearStencil, NULL, _gloffset_ClearStencil), - NAME_FUNC_OFFSET( 2489, glClearDepth, glClearDepth, NULL, _gloffset_ClearDepth), - NAME_FUNC_OFFSET( 2502, glStencilMask, glStencilMask, NULL, _gloffset_StencilMask), - NAME_FUNC_OFFSET( 2516, glColorMask, glColorMask, NULL, _gloffset_ColorMask), - NAME_FUNC_OFFSET( 2528, glDepthMask, glDepthMask, NULL, _gloffset_DepthMask), - NAME_FUNC_OFFSET( 2540, glIndexMask, glIndexMask, NULL, _gloffset_IndexMask), - NAME_FUNC_OFFSET( 2552, glAccum, glAccum, NULL, _gloffset_Accum), - NAME_FUNC_OFFSET( 2560, glDisable, glDisable, NULL, _gloffset_Disable), - NAME_FUNC_OFFSET( 2570, glEnable, glEnable, NULL, _gloffset_Enable), - NAME_FUNC_OFFSET( 2579, glFinish, glFinish, NULL, _gloffset_Finish), - NAME_FUNC_OFFSET( 2588, glFlush, glFlush, NULL, _gloffset_Flush), - NAME_FUNC_OFFSET( 2596, glPopAttrib, glPopAttrib, NULL, _gloffset_PopAttrib), - NAME_FUNC_OFFSET( 2608, glPushAttrib, glPushAttrib, NULL, _gloffset_PushAttrib), - NAME_FUNC_OFFSET( 2621, glMap1d, glMap1d, NULL, _gloffset_Map1d), - NAME_FUNC_OFFSET( 2629, glMap1f, glMap1f, NULL, _gloffset_Map1f), - NAME_FUNC_OFFSET( 2637, glMap2d, glMap2d, NULL, _gloffset_Map2d), - NAME_FUNC_OFFSET( 2645, glMap2f, glMap2f, NULL, _gloffset_Map2f), - NAME_FUNC_OFFSET( 2653, glMapGrid1d, glMapGrid1d, NULL, _gloffset_MapGrid1d), - NAME_FUNC_OFFSET( 2665, glMapGrid1f, glMapGrid1f, NULL, _gloffset_MapGrid1f), - NAME_FUNC_OFFSET( 2677, glMapGrid2d, glMapGrid2d, NULL, _gloffset_MapGrid2d), - NAME_FUNC_OFFSET( 2689, glMapGrid2f, glMapGrid2f, NULL, _gloffset_MapGrid2f), - NAME_FUNC_OFFSET( 2701, glEvalCoord1d, glEvalCoord1d, NULL, _gloffset_EvalCoord1d), - NAME_FUNC_OFFSET( 2715, glEvalCoord1dv, glEvalCoord1dv, NULL, _gloffset_EvalCoord1dv), - NAME_FUNC_OFFSET( 2730, glEvalCoord1f, glEvalCoord1f, NULL, _gloffset_EvalCoord1f), - NAME_FUNC_OFFSET( 2744, glEvalCoord1fv, glEvalCoord1fv, NULL, _gloffset_EvalCoord1fv), - NAME_FUNC_OFFSET( 2759, glEvalCoord2d, glEvalCoord2d, NULL, _gloffset_EvalCoord2d), - NAME_FUNC_OFFSET( 2773, glEvalCoord2dv, glEvalCoord2dv, NULL, _gloffset_EvalCoord2dv), - NAME_FUNC_OFFSET( 2788, glEvalCoord2f, glEvalCoord2f, NULL, _gloffset_EvalCoord2f), - NAME_FUNC_OFFSET( 2802, glEvalCoord2fv, glEvalCoord2fv, NULL, _gloffset_EvalCoord2fv), - NAME_FUNC_OFFSET( 2817, glEvalMesh1, glEvalMesh1, NULL, _gloffset_EvalMesh1), - NAME_FUNC_OFFSET( 2829, glEvalPoint1, glEvalPoint1, NULL, _gloffset_EvalPoint1), - NAME_FUNC_OFFSET( 2842, glEvalMesh2, glEvalMesh2, NULL, _gloffset_EvalMesh2), - NAME_FUNC_OFFSET( 2854, glEvalPoint2, glEvalPoint2, NULL, _gloffset_EvalPoint2), - NAME_FUNC_OFFSET( 2867, glAlphaFunc, glAlphaFunc, NULL, _gloffset_AlphaFunc), - NAME_FUNC_OFFSET( 2879, glBlendFunc, glBlendFunc, NULL, _gloffset_BlendFunc), - NAME_FUNC_OFFSET( 2891, glLogicOp, glLogicOp, NULL, _gloffset_LogicOp), - NAME_FUNC_OFFSET( 2901, glStencilFunc, glStencilFunc, NULL, _gloffset_StencilFunc), - NAME_FUNC_OFFSET( 2915, glStencilOp, glStencilOp, NULL, _gloffset_StencilOp), - NAME_FUNC_OFFSET( 2927, glDepthFunc, glDepthFunc, NULL, _gloffset_DepthFunc), - NAME_FUNC_OFFSET( 2939, glPixelZoom, glPixelZoom, NULL, _gloffset_PixelZoom), - NAME_FUNC_OFFSET( 2951, glPixelTransferf, glPixelTransferf, NULL, _gloffset_PixelTransferf), - NAME_FUNC_OFFSET( 2968, glPixelTransferi, glPixelTransferi, NULL, _gloffset_PixelTransferi), - NAME_FUNC_OFFSET( 2985, glPixelStoref, glPixelStoref, NULL, _gloffset_PixelStoref), - NAME_FUNC_OFFSET( 2999, glPixelStorei, glPixelStorei, NULL, _gloffset_PixelStorei), - NAME_FUNC_OFFSET( 3013, glPixelMapfv, glPixelMapfv, NULL, _gloffset_PixelMapfv), - NAME_FUNC_OFFSET( 3026, glPixelMapuiv, glPixelMapuiv, NULL, _gloffset_PixelMapuiv), - NAME_FUNC_OFFSET( 3040, glPixelMapusv, glPixelMapusv, NULL, _gloffset_PixelMapusv), - NAME_FUNC_OFFSET( 3054, glReadBuffer, glReadBuffer, NULL, _gloffset_ReadBuffer), - NAME_FUNC_OFFSET( 3067, glCopyPixels, glCopyPixels, NULL, _gloffset_CopyPixels), - NAME_FUNC_OFFSET( 3080, glReadPixels, glReadPixels, NULL, _gloffset_ReadPixels), - NAME_FUNC_OFFSET( 3093, glDrawPixels, glDrawPixels, NULL, _gloffset_DrawPixels), - NAME_FUNC_OFFSET( 3106, glGetBooleanv, glGetBooleanv, NULL, _gloffset_GetBooleanv), - NAME_FUNC_OFFSET( 3120, glGetClipPlane, glGetClipPlane, NULL, _gloffset_GetClipPlane), - NAME_FUNC_OFFSET( 3135, glGetDoublev, glGetDoublev, NULL, _gloffset_GetDoublev), - NAME_FUNC_OFFSET( 3148, glGetError, glGetError, NULL, _gloffset_GetError), - NAME_FUNC_OFFSET( 3159, glGetFloatv, glGetFloatv, NULL, _gloffset_GetFloatv), - NAME_FUNC_OFFSET( 3171, glGetIntegerv, glGetIntegerv, NULL, _gloffset_GetIntegerv), - NAME_FUNC_OFFSET( 3185, glGetLightfv, glGetLightfv, NULL, _gloffset_GetLightfv), - NAME_FUNC_OFFSET( 3198, glGetLightiv, glGetLightiv, NULL, _gloffset_GetLightiv), - NAME_FUNC_OFFSET( 3211, glGetMapdv, glGetMapdv, NULL, _gloffset_GetMapdv), - NAME_FUNC_OFFSET( 3222, glGetMapfv, glGetMapfv, NULL, _gloffset_GetMapfv), - NAME_FUNC_OFFSET( 3233, glGetMapiv, glGetMapiv, NULL, _gloffset_GetMapiv), - NAME_FUNC_OFFSET( 3244, glGetMaterialfv, glGetMaterialfv, NULL, _gloffset_GetMaterialfv), - NAME_FUNC_OFFSET( 3260, glGetMaterialiv, glGetMaterialiv, NULL, _gloffset_GetMaterialiv), - NAME_FUNC_OFFSET( 3276, glGetPixelMapfv, glGetPixelMapfv, NULL, _gloffset_GetPixelMapfv), - NAME_FUNC_OFFSET( 3292, glGetPixelMapuiv, glGetPixelMapuiv, NULL, _gloffset_GetPixelMapuiv), - NAME_FUNC_OFFSET( 3309, glGetPixelMapusv, glGetPixelMapusv, NULL, _gloffset_GetPixelMapusv), - NAME_FUNC_OFFSET( 3326, glGetPolygonStipple, glGetPolygonStipple, NULL, _gloffset_GetPolygonStipple), - NAME_FUNC_OFFSET( 3346, glGetString, glGetString, NULL, _gloffset_GetString), - NAME_FUNC_OFFSET( 3358, glGetTexEnvfv, glGetTexEnvfv, NULL, _gloffset_GetTexEnvfv), - NAME_FUNC_OFFSET( 3372, glGetTexEnviv, glGetTexEnviv, NULL, _gloffset_GetTexEnviv), - NAME_FUNC_OFFSET( 3386, glGetTexGendv, glGetTexGendv, NULL, _gloffset_GetTexGendv), - NAME_FUNC_OFFSET( 3400, glGetTexGenfv, glGetTexGenfv, NULL, _gloffset_GetTexGenfv), - NAME_FUNC_OFFSET( 3414, glGetTexGeniv, glGetTexGeniv, NULL, _gloffset_GetTexGeniv), - NAME_FUNC_OFFSET( 3428, glGetTexImage, glGetTexImage, NULL, _gloffset_GetTexImage), - NAME_FUNC_OFFSET( 3442, glGetTexParameterfv, glGetTexParameterfv, NULL, _gloffset_GetTexParameterfv), - NAME_FUNC_OFFSET( 3462, glGetTexParameteriv, glGetTexParameteriv, NULL, _gloffset_GetTexParameteriv), - NAME_FUNC_OFFSET( 3482, glGetTexLevelParameterfv, glGetTexLevelParameterfv, NULL, _gloffset_GetTexLevelParameterfv), - NAME_FUNC_OFFSET( 3507, glGetTexLevelParameteriv, glGetTexLevelParameteriv, NULL, _gloffset_GetTexLevelParameteriv), - NAME_FUNC_OFFSET( 3532, glIsEnabled, glIsEnabled, NULL, _gloffset_IsEnabled), - NAME_FUNC_OFFSET( 3544, glIsList, glIsList, NULL, _gloffset_IsList), - NAME_FUNC_OFFSET( 3553, glDepthRange, glDepthRange, NULL, _gloffset_DepthRange), - NAME_FUNC_OFFSET( 3566, glFrustum, glFrustum, NULL, _gloffset_Frustum), - NAME_FUNC_OFFSET( 3576, glLoadIdentity, glLoadIdentity, NULL, _gloffset_LoadIdentity), - NAME_FUNC_OFFSET( 3591, glLoadMatrixf, glLoadMatrixf, NULL, _gloffset_LoadMatrixf), - NAME_FUNC_OFFSET( 3605, glLoadMatrixd, glLoadMatrixd, NULL, _gloffset_LoadMatrixd), - NAME_FUNC_OFFSET( 3619, glMatrixMode, glMatrixMode, NULL, _gloffset_MatrixMode), - NAME_FUNC_OFFSET( 3632, glMultMatrixf, glMultMatrixf, NULL, _gloffset_MultMatrixf), - NAME_FUNC_OFFSET( 3646, glMultMatrixd, glMultMatrixd, NULL, _gloffset_MultMatrixd), - NAME_FUNC_OFFSET( 3660, glOrtho, glOrtho, NULL, _gloffset_Ortho), - NAME_FUNC_OFFSET( 3668, glPopMatrix, glPopMatrix, NULL, _gloffset_PopMatrix), - NAME_FUNC_OFFSET( 3680, glPushMatrix, glPushMatrix, NULL, _gloffset_PushMatrix), - NAME_FUNC_OFFSET( 3693, glRotated, glRotated, NULL, _gloffset_Rotated), - NAME_FUNC_OFFSET( 3703, glRotatef, glRotatef, NULL, _gloffset_Rotatef), - NAME_FUNC_OFFSET( 3713, glScaled, glScaled, NULL, _gloffset_Scaled), - NAME_FUNC_OFFSET( 3722, glScalef, glScalef, NULL, _gloffset_Scalef), - NAME_FUNC_OFFSET( 3731, glTranslated, glTranslated, NULL, _gloffset_Translated), - NAME_FUNC_OFFSET( 3744, glTranslatef, glTranslatef, NULL, _gloffset_Translatef), - NAME_FUNC_OFFSET( 3757, glViewport, glViewport, NULL, _gloffset_Viewport), - NAME_FUNC_OFFSET( 3768, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement), - NAME_FUNC_OFFSET( 3783, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture), - NAME_FUNC_OFFSET( 3797, glColorPointer, glColorPointer, NULL, _gloffset_ColorPointer), - NAME_FUNC_OFFSET( 3812, glDisableClientState, glDisableClientState, NULL, _gloffset_DisableClientState), - NAME_FUNC_OFFSET( 3833, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays), - NAME_FUNC_OFFSET( 3846, glDrawElements, glDrawElements, NULL, _gloffset_DrawElements), - NAME_FUNC_OFFSET( 3861, glEdgeFlagPointer, glEdgeFlagPointer, NULL, _gloffset_EdgeFlagPointer), - NAME_FUNC_OFFSET( 3879, glEnableClientState, glEnableClientState, NULL, _gloffset_EnableClientState), - NAME_FUNC_OFFSET( 3899, glIndexPointer, glIndexPointer, NULL, _gloffset_IndexPointer), - NAME_FUNC_OFFSET( 3914, glIndexub, glIndexub, NULL, _gloffset_Indexub), - NAME_FUNC_OFFSET( 3924, glIndexubv, glIndexubv, NULL, _gloffset_Indexubv), - NAME_FUNC_OFFSET( 3935, glInterleavedArrays, glInterleavedArrays, NULL, _gloffset_InterleavedArrays), - NAME_FUNC_OFFSET( 3955, glNormalPointer, glNormalPointer, NULL, _gloffset_NormalPointer), - NAME_FUNC_OFFSET( 3971, glPolygonOffset, glPolygonOffset, NULL, _gloffset_PolygonOffset), - NAME_FUNC_OFFSET( 3987, glTexCoordPointer, glTexCoordPointer, NULL, _gloffset_TexCoordPointer), - NAME_FUNC_OFFSET( 4005, glVertexPointer, glVertexPointer, NULL, _gloffset_VertexPointer), - NAME_FUNC_OFFSET( 4021, glAreTexturesResident, glAreTexturesResident, NULL, _gloffset_AreTexturesResident), - NAME_FUNC_OFFSET( 4043, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D), - NAME_FUNC_OFFSET( 4060, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D), - NAME_FUNC_OFFSET( 4077, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D), - NAME_FUNC_OFFSET( 4097, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D), - NAME_FUNC_OFFSET( 4117, glDeleteTextures, glDeleteTextures, NULL, _gloffset_DeleteTextures), - NAME_FUNC_OFFSET( 4134, glGenTextures, glGenTextures, NULL, _gloffset_GenTextures), - NAME_FUNC_OFFSET( 4148, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv), - NAME_FUNC_OFFSET( 4162, glIsTexture, glIsTexture, NULL, _gloffset_IsTexture), - NAME_FUNC_OFFSET( 4174, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures), - NAME_FUNC_OFFSET( 4195, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D), - NAME_FUNC_OFFSET( 4211, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D), - NAME_FUNC_OFFSET( 4227, glPopClientAttrib, glPopClientAttrib, NULL, _gloffset_PopClientAttrib), - NAME_FUNC_OFFSET( 4245, glPushClientAttrib, glPushClientAttrib, NULL, _gloffset_PushClientAttrib), - NAME_FUNC_OFFSET( 4264, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor), - NAME_FUNC_OFFSET( 4277, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation), - NAME_FUNC_OFFSET( 4293, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements), - NAME_FUNC_OFFSET( 4313, glColorTable, glColorTable, NULL, _gloffset_ColorTable), - NAME_FUNC_OFFSET( 4326, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv), - NAME_FUNC_OFFSET( 4350, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv), - NAME_FUNC_OFFSET( 4374, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable), - NAME_FUNC_OFFSET( 4391, glGetColorTable, glGetColorTable, NULL, _gloffset_GetColorTable), - NAME_FUNC_OFFSET( 4407, glGetColorTableParameterfv, glGetColorTableParameterfv, NULL, _gloffset_GetColorTableParameterfv), - NAME_FUNC_OFFSET( 4434, glGetColorTableParameteriv, glGetColorTableParameteriv, NULL, _gloffset_GetColorTableParameteriv), - NAME_FUNC_OFFSET( 4461, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable), - NAME_FUNC_OFFSET( 4477, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable), - NAME_FUNC_OFFSET( 4497, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D), - NAME_FUNC_OFFSET( 4519, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D), - NAME_FUNC_OFFSET( 4541, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf), - NAME_FUNC_OFFSET( 4565, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv), - NAME_FUNC_OFFSET( 4590, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri), - NAME_FUNC_OFFSET( 4614, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv), - NAME_FUNC_OFFSET( 4639, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D), - NAME_FUNC_OFFSET( 4665, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D), - NAME_FUNC_OFFSET( 4691, glGetConvolutionFilter, glGetConvolutionFilter, NULL, _gloffset_GetConvolutionFilter), - NAME_FUNC_OFFSET( 4714, glGetConvolutionParameterfv, glGetConvolutionParameterfv, NULL, _gloffset_GetConvolutionParameterfv), - NAME_FUNC_OFFSET( 4742, glGetConvolutionParameteriv, glGetConvolutionParameteriv, NULL, _gloffset_GetConvolutionParameteriv), - NAME_FUNC_OFFSET( 4770, glGetSeparableFilter, glGetSeparableFilter, NULL, _gloffset_GetSeparableFilter), - NAME_FUNC_OFFSET( 4791, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D), - NAME_FUNC_OFFSET( 4811, glGetHistogram, glGetHistogram, NULL, _gloffset_GetHistogram), - NAME_FUNC_OFFSET( 4826, glGetHistogramParameterfv, glGetHistogramParameterfv, NULL, _gloffset_GetHistogramParameterfv), - NAME_FUNC_OFFSET( 4852, glGetHistogramParameteriv, glGetHistogramParameteriv, NULL, _gloffset_GetHistogramParameteriv), - NAME_FUNC_OFFSET( 4878, glGetMinmax, glGetMinmax, NULL, _gloffset_GetMinmax), - NAME_FUNC_OFFSET( 4890, glGetMinmaxParameterfv, glGetMinmaxParameterfv, NULL, _gloffset_GetMinmaxParameterfv), - NAME_FUNC_OFFSET( 4913, glGetMinmaxParameteriv, glGetMinmaxParameteriv, NULL, _gloffset_GetMinmaxParameteriv), - NAME_FUNC_OFFSET( 4936, glHistogram, glHistogram, NULL, _gloffset_Histogram), - NAME_FUNC_OFFSET( 4948, glMinmax, glMinmax, NULL, _gloffset_Minmax), - NAME_FUNC_OFFSET( 4957, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram), - NAME_FUNC_OFFSET( 4974, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax), - NAME_FUNC_OFFSET( 4988, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D), - NAME_FUNC_OFFSET( 5001, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D), - NAME_FUNC_OFFSET( 5017, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D), - NAME_FUNC_OFFSET( 5037, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB), - NAME_FUNC_OFFSET( 5056, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB), - NAME_FUNC_OFFSET( 5081, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB), - NAME_FUNC_OFFSET( 5102, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB), - NAME_FUNC_OFFSET( 5124, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB), - NAME_FUNC_OFFSET( 5145, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB), - NAME_FUNC_OFFSET( 5167, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB), - NAME_FUNC_OFFSET( 5188, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB), - NAME_FUNC_OFFSET( 5210, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB), - NAME_FUNC_OFFSET( 5231, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB), - NAME_FUNC_OFFSET( 5253, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB), - NAME_FUNC_OFFSET( 5274, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB), - NAME_FUNC_OFFSET( 5296, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB), - NAME_FUNC_OFFSET( 5317, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB), - NAME_FUNC_OFFSET( 5339, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB), - NAME_FUNC_OFFSET( 5360, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB), - NAME_FUNC_OFFSET( 5382, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB), - NAME_FUNC_OFFSET( 5403, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB), - NAME_FUNC_OFFSET( 5425, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB), - NAME_FUNC_OFFSET( 5446, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB), - NAME_FUNC_OFFSET( 5468, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB), - NAME_FUNC_OFFSET( 5489, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB), - NAME_FUNC_OFFSET( 5511, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB), - NAME_FUNC_OFFSET( 5532, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB), - NAME_FUNC_OFFSET( 5554, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB), - NAME_FUNC_OFFSET( 5575, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB), - NAME_FUNC_OFFSET( 5597, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB), - NAME_FUNC_OFFSET( 5618, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB), - NAME_FUNC_OFFSET( 5640, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB), - NAME_FUNC_OFFSET( 5661, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB), - NAME_FUNC_OFFSET( 5683, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB), - NAME_FUNC_OFFSET( 5704, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB), - NAME_FUNC_OFFSET( 5726, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB), - NAME_FUNC_OFFSET( 5747, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB), - NAME_FUNC_OFFSET( 5769, glAttachShader, glAttachShader, NULL, _gloffset_AttachShader), - NAME_FUNC_OFFSET( 5784, glCreateProgram, glCreateProgram, NULL, _gloffset_CreateProgram), - NAME_FUNC_OFFSET( 5800, glCreateShader, glCreateShader, NULL, _gloffset_CreateShader), - NAME_FUNC_OFFSET( 5815, glDeleteProgram, glDeleteProgram, NULL, _gloffset_DeleteProgram), - NAME_FUNC_OFFSET( 5831, glDeleteShader, glDeleteShader, NULL, _gloffset_DeleteShader), - NAME_FUNC_OFFSET( 5846, glDetachShader, glDetachShader, NULL, _gloffset_DetachShader), - NAME_FUNC_OFFSET( 5861, glGetAttachedShaders, glGetAttachedShaders, NULL, _gloffset_GetAttachedShaders), - NAME_FUNC_OFFSET( 5882, glGetProgramInfoLog, glGetProgramInfoLog, NULL, _gloffset_GetProgramInfoLog), - NAME_FUNC_OFFSET( 5902, glGetProgramiv, glGetProgramiv, NULL, _gloffset_GetProgramiv), - NAME_FUNC_OFFSET( 5917, glGetShaderInfoLog, glGetShaderInfoLog, NULL, _gloffset_GetShaderInfoLog), - NAME_FUNC_OFFSET( 5936, glGetShaderiv, glGetShaderiv, NULL, _gloffset_GetShaderiv), - NAME_FUNC_OFFSET( 5950, glIsProgram, glIsProgram, NULL, _gloffset_IsProgram), - NAME_FUNC_OFFSET( 5962, glIsShader, glIsShader, NULL, _gloffset_IsShader), - NAME_FUNC_OFFSET( 5973, glStencilFuncSeparate, glStencilFuncSeparate, NULL, _gloffset_StencilFuncSeparate), - NAME_FUNC_OFFSET( 5995, glStencilMaskSeparate, glStencilMaskSeparate, NULL, _gloffset_StencilMaskSeparate), - NAME_FUNC_OFFSET( 6017, glStencilOpSeparate, glStencilOpSeparate, NULL, _gloffset_StencilOpSeparate), - NAME_FUNC_OFFSET( 6037, glUniformMatrix2x3fv, glUniformMatrix2x3fv, NULL, _gloffset_UniformMatrix2x3fv), - NAME_FUNC_OFFSET( 6058, glUniformMatrix2x4fv, glUniformMatrix2x4fv, NULL, _gloffset_UniformMatrix2x4fv), - NAME_FUNC_OFFSET( 6079, glUniformMatrix3x2fv, glUniformMatrix3x2fv, NULL, _gloffset_UniformMatrix3x2fv), - NAME_FUNC_OFFSET( 6100, glUniformMatrix3x4fv, glUniformMatrix3x4fv, NULL, _gloffset_UniformMatrix3x4fv), - NAME_FUNC_OFFSET( 6121, glUniformMatrix4x2fv, glUniformMatrix4x2fv, NULL, _gloffset_UniformMatrix4x2fv), - NAME_FUNC_OFFSET( 6142, glUniformMatrix4x3fv, glUniformMatrix4x3fv, NULL, _gloffset_UniformMatrix4x3fv), - NAME_FUNC_OFFSET( 6163, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced), - NAME_FUNC_OFFSET( 6185, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced), - NAME_FUNC_OFFSET( 6209, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB), - NAME_FUNC_OFFSET( 6235, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB), - NAME_FUNC_OFFSET( 6261, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB), - NAME_FUNC_OFFSET( 6287, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB), - NAME_FUNC_OFFSET( 6313, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB), - NAME_FUNC_OFFSET( 6333, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB), - NAME_FUNC_OFFSET( 6359, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB), - NAME_FUNC_OFFSET( 6385, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB), - NAME_FUNC_OFFSET( 6411, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB), - NAME_FUNC_OFFSET( 6440, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB), - NAME_FUNC_OFFSET( 6469, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB), - NAME_FUNC_OFFSET( 6498, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB), - NAME_FUNC_OFFSET( 6525, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB), - NAME_FUNC_OFFSET( 6555, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB), - NAME_FUNC_OFFSET( 6584, glGetProgramEnvParameterdvARB, glGetProgramEnvParameterdvARB, NULL, _gloffset_GetProgramEnvParameterdvARB), - NAME_FUNC_OFFSET( 6614, glGetProgramEnvParameterfvARB, glGetProgramEnvParameterfvARB, NULL, _gloffset_GetProgramEnvParameterfvARB), - NAME_FUNC_OFFSET( 6644, glGetProgramLocalParameterdvARB, glGetProgramLocalParameterdvARB, NULL, _gloffset_GetProgramLocalParameterdvARB), - NAME_FUNC_OFFSET( 6676, glGetProgramLocalParameterfvARB, glGetProgramLocalParameterfvARB, NULL, _gloffset_GetProgramLocalParameterfvARB), - NAME_FUNC_OFFSET( 6708, glGetProgramStringARB, glGetProgramStringARB, NULL, _gloffset_GetProgramStringARB), - NAME_FUNC_OFFSET( 6730, glGetProgramivARB, glGetProgramivARB, NULL, _gloffset_GetProgramivARB), - NAME_FUNC_OFFSET( 6748, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB), - NAME_FUNC_OFFSET( 6771, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB), - NAME_FUNC_OFFSET( 6794, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB), - NAME_FUNC_OFFSET( 6817, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, _gloffset_ProgramEnvParameter4dARB), - NAME_FUNC_OFFSET( 6844, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, _gloffset_ProgramEnvParameter4dvARB), - NAME_FUNC_OFFSET( 6872, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, _gloffset_ProgramEnvParameter4fARB), - NAME_FUNC_OFFSET( 6899, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, _gloffset_ProgramEnvParameter4fvARB), - NAME_FUNC_OFFSET( 6927, glProgramLocalParameter4dARB, glProgramLocalParameter4dARB, NULL, _gloffset_ProgramLocalParameter4dARB), - NAME_FUNC_OFFSET( 6956, glProgramLocalParameter4dvARB, glProgramLocalParameter4dvARB, NULL, _gloffset_ProgramLocalParameter4dvARB), - NAME_FUNC_OFFSET( 6986, glProgramLocalParameter4fARB, glProgramLocalParameter4fARB, NULL, _gloffset_ProgramLocalParameter4fARB), - NAME_FUNC_OFFSET( 7015, glProgramLocalParameter4fvARB, glProgramLocalParameter4fvARB, NULL, _gloffset_ProgramLocalParameter4fvARB), - NAME_FUNC_OFFSET( 7045, glProgramStringARB, glProgramStringARB, NULL, _gloffset_ProgramStringARB), - NAME_FUNC_OFFSET( 7064, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB), - NAME_FUNC_OFFSET( 7084, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB), - NAME_FUNC_OFFSET( 7105, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB), - NAME_FUNC_OFFSET( 7125, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB), - NAME_FUNC_OFFSET( 7146, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB), - NAME_FUNC_OFFSET( 7166, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB), - NAME_FUNC_OFFSET( 7187, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB), - NAME_FUNC_OFFSET( 7207, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB), - NAME_FUNC_OFFSET( 7228, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB), - NAME_FUNC_OFFSET( 7248, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB), - NAME_FUNC_OFFSET( 7269, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB), - NAME_FUNC_OFFSET( 7289, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB), - NAME_FUNC_OFFSET( 7310, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB), - NAME_FUNC_OFFSET( 7330, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB), - NAME_FUNC_OFFSET( 7351, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB), - NAME_FUNC_OFFSET( 7371, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB), - NAME_FUNC_OFFSET( 7392, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB), - NAME_FUNC_OFFSET( 7412, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB), - NAME_FUNC_OFFSET( 7433, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB), - NAME_FUNC_OFFSET( 7455, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB), - NAME_FUNC_OFFSET( 7477, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB), - NAME_FUNC_OFFSET( 7499, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB), - NAME_FUNC_OFFSET( 7521, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB), - NAME_FUNC_OFFSET( 7544, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB), - NAME_FUNC_OFFSET( 7567, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB), - NAME_FUNC_OFFSET( 7590, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, _gloffset_VertexAttrib4bvARB), - NAME_FUNC_OFFSET( 7611, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB), - NAME_FUNC_OFFSET( 7631, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB), - NAME_FUNC_OFFSET( 7652, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB), - NAME_FUNC_OFFSET( 7672, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB), - NAME_FUNC_OFFSET( 7693, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, _gloffset_VertexAttrib4ivARB), - NAME_FUNC_OFFSET( 7714, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB), - NAME_FUNC_OFFSET( 7734, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB), - NAME_FUNC_OFFSET( 7755, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, _gloffset_VertexAttrib4ubvARB), - NAME_FUNC_OFFSET( 7777, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, _gloffset_VertexAttrib4uivARB), - NAME_FUNC_OFFSET( 7799, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, _gloffset_VertexAttrib4usvARB), - NAME_FUNC_OFFSET( 7821, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB), - NAME_FUNC_OFFSET( 7846, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB), - NAME_FUNC_OFFSET( 7862, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB), - NAME_FUNC_OFFSET( 7878, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB), - NAME_FUNC_OFFSET( 7897, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB), - NAME_FUNC_OFFSET( 7916, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB), - NAME_FUNC_OFFSET( 7932, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB), - NAME_FUNC_OFFSET( 7958, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB), - NAME_FUNC_OFFSET( 7981, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB), - NAME_FUNC_OFFSET( 8003, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB), - NAME_FUNC_OFFSET( 8017, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB), - NAME_FUNC_OFFSET( 8032, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB), - NAME_FUNC_OFFSET( 8049, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB), - NAME_FUNC_OFFSET( 8065, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB), - NAME_FUNC_OFFSET( 8084, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB), - NAME_FUNC_OFFSET( 8098, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB), - NAME_FUNC_OFFSET( 8114, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB), - NAME_FUNC_OFFSET( 8136, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB), - NAME_FUNC_OFFSET( 8159, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB), - NAME_FUNC_OFFSET( 8175, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB), - NAME_FUNC_OFFSET( 8188, glAttachObjectARB, glAttachObjectARB, NULL, _gloffset_AttachObjectARB), - NAME_FUNC_OFFSET( 8206, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB), - NAME_FUNC_OFFSET( 8225, glCreateProgramObjectARB, glCreateProgramObjectARB, NULL, _gloffset_CreateProgramObjectARB), - NAME_FUNC_OFFSET( 8250, glCreateShaderObjectARB, glCreateShaderObjectARB, NULL, _gloffset_CreateShaderObjectARB), - NAME_FUNC_OFFSET( 8274, glDeleteObjectARB, glDeleteObjectARB, NULL, _gloffset_DeleteObjectARB), - NAME_FUNC_OFFSET( 8292, glDetachObjectARB, glDetachObjectARB, NULL, _gloffset_DetachObjectARB), - NAME_FUNC_OFFSET( 8310, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB), - NAME_FUNC_OFFSET( 8332, glGetAttachedObjectsARB, glGetAttachedObjectsARB, NULL, _gloffset_GetAttachedObjectsARB), - NAME_FUNC_OFFSET( 8356, glGetHandleARB, glGetHandleARB, NULL, _gloffset_GetHandleARB), - NAME_FUNC_OFFSET( 8371, glGetInfoLogARB, glGetInfoLogARB, NULL, _gloffset_GetInfoLogARB), - NAME_FUNC_OFFSET( 8387, glGetObjectParameterfvARB, glGetObjectParameterfvARB, NULL, _gloffset_GetObjectParameterfvARB), - NAME_FUNC_OFFSET( 8413, glGetObjectParameterivARB, glGetObjectParameterivARB, NULL, _gloffset_GetObjectParameterivARB), - NAME_FUNC_OFFSET( 8439, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB), - NAME_FUNC_OFFSET( 8460, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB), - NAME_FUNC_OFFSET( 8484, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB), - NAME_FUNC_OFFSET( 8502, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB), - NAME_FUNC_OFFSET( 8520, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB), - NAME_FUNC_OFFSET( 8537, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB), - NAME_FUNC_OFFSET( 8555, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB), - NAME_FUNC_OFFSET( 8570, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB), - NAME_FUNC_OFFSET( 8586, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB), - NAME_FUNC_OFFSET( 8601, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB), - NAME_FUNC_OFFSET( 8617, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB), - NAME_FUNC_OFFSET( 8632, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB), - NAME_FUNC_OFFSET( 8648, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB), - NAME_FUNC_OFFSET( 8663, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB), - NAME_FUNC_OFFSET( 8679, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB), - NAME_FUNC_OFFSET( 8694, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB), - NAME_FUNC_OFFSET( 8710, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB), - NAME_FUNC_OFFSET( 8725, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB), - NAME_FUNC_OFFSET( 8741, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB), - NAME_FUNC_OFFSET( 8756, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB), - NAME_FUNC_OFFSET( 8772, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB), - NAME_FUNC_OFFSET( 8787, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB), - NAME_FUNC_OFFSET( 8803, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB), - NAME_FUNC_OFFSET( 8825, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB), - NAME_FUNC_OFFSET( 8847, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB), - NAME_FUNC_OFFSET( 8869, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB), - NAME_FUNC_OFFSET( 8891, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB), - NAME_FUNC_OFFSET( 8912, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB), - NAME_FUNC_OFFSET( 8936, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB), - NAME_FUNC_OFFSET( 8957, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB), - NAME_FUNC_OFFSET( 8980, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB), - NAME_FUNC_OFFSET( 8997, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, _gloffset_RenderbufferStorageMultisample), - NAME_FUNC_OFFSET( 9030, glFramebufferTextureARB, glFramebufferTextureARB, NULL, _gloffset_FramebufferTextureARB), - NAME_FUNC_OFFSET( 9054, glFramebufferTextureFaceARB, glFramebufferTextureFaceARB, NULL, _gloffset_FramebufferTextureFaceARB), - NAME_FUNC_OFFSET( 9082, glProgramParameteriARB, glProgramParameteriARB, NULL, _gloffset_ProgramParameteriARB), - NAME_FUNC_OFFSET( 9105, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, _gloffset_FlushMappedBufferRange), - NAME_FUNC_OFFSET( 9130, glMapBufferRange, glMapBufferRange, NULL, _gloffset_MapBufferRange), - NAME_FUNC_OFFSET( 9147, glBindVertexArray, glBindVertexArray, NULL, _gloffset_BindVertexArray), - NAME_FUNC_OFFSET( 9165, glGenVertexArrays, glGenVertexArrays, NULL, _gloffset_GenVertexArrays), - NAME_FUNC_OFFSET( 9183, glCopyBufferSubData, glCopyBufferSubData, NULL, _gloffset_CopyBufferSubData), - NAME_FUNC_OFFSET( 9203, glClientWaitSync, glClientWaitSync, NULL, _gloffset_ClientWaitSync), - NAME_FUNC_OFFSET( 9220, glDeleteSync, glDeleteSync, NULL, _gloffset_DeleteSync), - NAME_FUNC_OFFSET( 9233, glFenceSync, glFenceSync, NULL, _gloffset_FenceSync), - NAME_FUNC_OFFSET( 9245, glGetInteger64v, glGetInteger64v, NULL, _gloffset_GetInteger64v), - NAME_FUNC_OFFSET( 9261, glGetSynciv, glGetSynciv, NULL, _gloffset_GetSynciv), - NAME_FUNC_OFFSET( 9273, glIsSync, glIsSync, NULL, _gloffset_IsSync), - NAME_FUNC_OFFSET( 9282, glWaitSync, glWaitSync, NULL, _gloffset_WaitSync), - NAME_FUNC_OFFSET( 9293, glDrawElementsBaseVertex, glDrawElementsBaseVertex, NULL, _gloffset_DrawElementsBaseVertex), - NAME_FUNC_OFFSET( 9318, glDrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, NULL, _gloffset_DrawRangeElementsBaseVertex), - NAME_FUNC_OFFSET( 9348, glMultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, NULL, _gloffset_MultiDrawElementsBaseVertex), - NAME_FUNC_OFFSET( 9378, glBindTransformFeedback, glBindTransformFeedback, NULL, _gloffset_BindTransformFeedback), - NAME_FUNC_OFFSET( 9402, glDeleteTransformFeedbacks, glDeleteTransformFeedbacks, NULL, _gloffset_DeleteTransformFeedbacks), - NAME_FUNC_OFFSET( 9429, glDrawTransformFeedback, glDrawTransformFeedback, NULL, _gloffset_DrawTransformFeedback), - NAME_FUNC_OFFSET( 9453, glGenTransformFeedbacks, glGenTransformFeedbacks, NULL, _gloffset_GenTransformFeedbacks), - NAME_FUNC_OFFSET( 9477, glIsTransformFeedback, glIsTransformFeedback, NULL, _gloffset_IsTransformFeedback), - NAME_FUNC_OFFSET( 9499, glPauseTransformFeedback, glPauseTransformFeedback, NULL, _gloffset_PauseTransformFeedback), - NAME_FUNC_OFFSET( 9524, glResumeTransformFeedback, glResumeTransformFeedback, NULL, _gloffset_ResumeTransformFeedback), - NAME_FUNC_OFFSET( 9550, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, _gloffset_PolygonOffsetEXT), - NAME_FUNC_OFFSET( 9569, gl_dispatch_stub_590, gl_dispatch_stub_590, NULL, _gloffset_GetPixelTexGenParameterfvSGIS), - NAME_FUNC_OFFSET( 9601, gl_dispatch_stub_591, gl_dispatch_stub_591, NULL, _gloffset_GetPixelTexGenParameterivSGIS), - NAME_FUNC_OFFSET( 9633, gl_dispatch_stub_592, gl_dispatch_stub_592, NULL, _gloffset_PixelTexGenParameterfSGIS), - NAME_FUNC_OFFSET( 9661, gl_dispatch_stub_593, gl_dispatch_stub_593, NULL, _gloffset_PixelTexGenParameterfvSGIS), - NAME_FUNC_OFFSET( 9690, gl_dispatch_stub_594, gl_dispatch_stub_594, NULL, _gloffset_PixelTexGenParameteriSGIS), - NAME_FUNC_OFFSET( 9718, gl_dispatch_stub_595, gl_dispatch_stub_595, NULL, _gloffset_PixelTexGenParameterivSGIS), - NAME_FUNC_OFFSET( 9747, gl_dispatch_stub_596, gl_dispatch_stub_596, NULL, _gloffset_SampleMaskSGIS), - NAME_FUNC_OFFSET( 9764, gl_dispatch_stub_597, gl_dispatch_stub_597, NULL, _gloffset_SamplePatternSGIS), - NAME_FUNC_OFFSET( 9784, glColorPointerEXT, glColorPointerEXT, NULL, _gloffset_ColorPointerEXT), - NAME_FUNC_OFFSET( 9802, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, _gloffset_EdgeFlagPointerEXT), - NAME_FUNC_OFFSET( 9823, glIndexPointerEXT, glIndexPointerEXT, NULL, _gloffset_IndexPointerEXT), - NAME_FUNC_OFFSET( 9841, glNormalPointerEXT, glNormalPointerEXT, NULL, _gloffset_NormalPointerEXT), - NAME_FUNC_OFFSET( 9860, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, _gloffset_TexCoordPointerEXT), - NAME_FUNC_OFFSET( 9881, glVertexPointerEXT, glVertexPointerEXT, NULL, _gloffset_VertexPointerEXT), - NAME_FUNC_OFFSET( 9900, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT), - NAME_FUNC_OFFSET( 9921, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT), - NAME_FUNC_OFFSET( 9943, glLockArraysEXT, glLockArraysEXT, NULL, _gloffset_LockArraysEXT), - NAME_FUNC_OFFSET( 9959, glUnlockArraysEXT, glUnlockArraysEXT, NULL, _gloffset_UnlockArraysEXT), - NAME_FUNC_OFFSET( 9977, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT), - NAME_FUNC_OFFSET( 9999, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT), - NAME_FUNC_OFFSET(10022, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT), - NAME_FUNC_OFFSET(10044, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT), - NAME_FUNC_OFFSET(10067, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT), - NAME_FUNC_OFFSET(10089, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT), - NAME_FUNC_OFFSET(10112, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT), - NAME_FUNC_OFFSET(10134, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT), - NAME_FUNC_OFFSET(10157, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT), - NAME_FUNC_OFFSET(10179, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT), - NAME_FUNC_OFFSET(10202, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT), - NAME_FUNC_OFFSET(10225, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT), - NAME_FUNC_OFFSET(10249, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT), - NAME_FUNC_OFFSET(10272, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT), - NAME_FUNC_OFFSET(10296, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT), - NAME_FUNC_OFFSET(10319, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT), - NAME_FUNC_OFFSET(10343, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT), - NAME_FUNC_OFFSET(10370, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT), - NAME_FUNC_OFFSET(10391, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT), - NAME_FUNC_OFFSET(10414, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT), - NAME_FUNC_OFFSET(10435, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT), - NAME_FUNC_OFFSET(10450, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT), - NAME_FUNC_OFFSET(10466, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT), - NAME_FUNC_OFFSET(10481, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT), - NAME_FUNC_OFFSET(10497, gl_dispatch_stub_632, gl_dispatch_stub_632, NULL, _gloffset_PixelTexGenSGIX), - NAME_FUNC_OFFSET(10515, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT), - NAME_FUNC_OFFSET(10538, glFlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, NULL, _gloffset_FlushVertexArrayRangeNV), - NAME_FUNC_OFFSET(10564, glVertexArrayRangeNV, glVertexArrayRangeNV, NULL, _gloffset_VertexArrayRangeNV), - NAME_FUNC_OFFSET(10585, glCombinerInputNV, glCombinerInputNV, NULL, _gloffset_CombinerInputNV), - NAME_FUNC_OFFSET(10603, glCombinerOutputNV, glCombinerOutputNV, NULL, _gloffset_CombinerOutputNV), - NAME_FUNC_OFFSET(10622, glCombinerParameterfNV, glCombinerParameterfNV, NULL, _gloffset_CombinerParameterfNV), - NAME_FUNC_OFFSET(10645, glCombinerParameterfvNV, glCombinerParameterfvNV, NULL, _gloffset_CombinerParameterfvNV), - NAME_FUNC_OFFSET(10669, glCombinerParameteriNV, glCombinerParameteriNV, NULL, _gloffset_CombinerParameteriNV), - NAME_FUNC_OFFSET(10692, glCombinerParameterivNV, glCombinerParameterivNV, NULL, _gloffset_CombinerParameterivNV), - NAME_FUNC_OFFSET(10716, glFinalCombinerInputNV, glFinalCombinerInputNV, NULL, _gloffset_FinalCombinerInputNV), - NAME_FUNC_OFFSET(10739, glGetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, NULL, _gloffset_GetCombinerInputParameterfvNV), - NAME_FUNC_OFFSET(10771, glGetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, NULL, _gloffset_GetCombinerInputParameterivNV), - NAME_FUNC_OFFSET(10803, glGetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, NULL, _gloffset_GetCombinerOutputParameterfvNV), - NAME_FUNC_OFFSET(10836, glGetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, NULL, _gloffset_GetCombinerOutputParameterivNV), - NAME_FUNC_OFFSET(10869, glGetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, NULL, _gloffset_GetFinalCombinerInputParameterfvNV), - NAME_FUNC_OFFSET(10906, glGetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, NULL, _gloffset_GetFinalCombinerInputParameterivNV), - NAME_FUNC_OFFSET(10943, glResizeBuffersMESA, glResizeBuffersMESA, NULL, _gloffset_ResizeBuffersMESA), - NAME_FUNC_OFFSET(10963, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA), - NAME_FUNC_OFFSET(10981, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA), - NAME_FUNC_OFFSET(11000, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA), - NAME_FUNC_OFFSET(11018, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA), - NAME_FUNC_OFFSET(11037, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA), - NAME_FUNC_OFFSET(11055, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA), - NAME_FUNC_OFFSET(11074, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA), - NAME_FUNC_OFFSET(11092, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA), - NAME_FUNC_OFFSET(11111, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA), - NAME_FUNC_OFFSET(11129, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA), - NAME_FUNC_OFFSET(11148, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA), - NAME_FUNC_OFFSET(11166, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA), - NAME_FUNC_OFFSET(11185, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA), - NAME_FUNC_OFFSET(11203, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA), - NAME_FUNC_OFFSET(11222, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA), - NAME_FUNC_OFFSET(11240, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA), - NAME_FUNC_OFFSET(11259, glWindowPos4dMESA, glWindowPos4dMESA, NULL, _gloffset_WindowPos4dMESA), - NAME_FUNC_OFFSET(11277, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, _gloffset_WindowPos4dvMESA), - NAME_FUNC_OFFSET(11296, glWindowPos4fMESA, glWindowPos4fMESA, NULL, _gloffset_WindowPos4fMESA), - NAME_FUNC_OFFSET(11314, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, _gloffset_WindowPos4fvMESA), - NAME_FUNC_OFFSET(11333, glWindowPos4iMESA, glWindowPos4iMESA, NULL, _gloffset_WindowPos4iMESA), - NAME_FUNC_OFFSET(11351, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, _gloffset_WindowPos4ivMESA), - NAME_FUNC_OFFSET(11370, glWindowPos4sMESA, glWindowPos4sMESA, NULL, _gloffset_WindowPos4sMESA), - NAME_FUNC_OFFSET(11388, glWindowPos4svMESA, glWindowPos4svMESA, NULL, _gloffset_WindowPos4svMESA), - NAME_FUNC_OFFSET(11407, gl_dispatch_stub_674, gl_dispatch_stub_674, NULL, _gloffset_MultiModeDrawArraysIBM), - NAME_FUNC_OFFSET(11432, gl_dispatch_stub_675, gl_dispatch_stub_675, NULL, _gloffset_MultiModeDrawElementsIBM), - NAME_FUNC_OFFSET(11459, gl_dispatch_stub_676, gl_dispatch_stub_676, NULL, _gloffset_DeleteFencesNV), - NAME_FUNC_OFFSET(11476, gl_dispatch_stub_677, gl_dispatch_stub_677, NULL, _gloffset_FinishFenceNV), - NAME_FUNC_OFFSET(11492, gl_dispatch_stub_678, gl_dispatch_stub_678, NULL, _gloffset_GenFencesNV), - NAME_FUNC_OFFSET(11506, gl_dispatch_stub_679, gl_dispatch_stub_679, NULL, _gloffset_GetFenceivNV), - NAME_FUNC_OFFSET(11521, gl_dispatch_stub_680, gl_dispatch_stub_680, NULL, _gloffset_IsFenceNV), - NAME_FUNC_OFFSET(11533, gl_dispatch_stub_681, gl_dispatch_stub_681, NULL, _gloffset_SetFenceNV), - NAME_FUNC_OFFSET(11546, gl_dispatch_stub_682, gl_dispatch_stub_682, NULL, _gloffset_TestFenceNV), - NAME_FUNC_OFFSET(11560, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, _gloffset_AreProgramsResidentNV), - NAME_FUNC_OFFSET(11584, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV), - NAME_FUNC_OFFSET(11600, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV), - NAME_FUNC_OFFSET(11619, glExecuteProgramNV, glExecuteProgramNV, NULL, _gloffset_ExecuteProgramNV), - NAME_FUNC_OFFSET(11638, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV), - NAME_FUNC_OFFSET(11654, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, _gloffset_GetProgramParameterdvNV), - NAME_FUNC_OFFSET(11680, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, _gloffset_GetProgramParameterfvNV), - NAME_FUNC_OFFSET(11706, glGetProgramStringNV, glGetProgramStringNV, NULL, _gloffset_GetProgramStringNV), - NAME_FUNC_OFFSET(11727, glGetProgramivNV, glGetProgramivNV, NULL, _gloffset_GetProgramivNV), - NAME_FUNC_OFFSET(11744, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, _gloffset_GetTrackMatrixivNV), - NAME_FUNC_OFFSET(11765, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV), - NAME_FUNC_OFFSET(11793, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, _gloffset_GetVertexAttribdvNV), - NAME_FUNC_OFFSET(11815, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, _gloffset_GetVertexAttribfvNV), - NAME_FUNC_OFFSET(11837, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, _gloffset_GetVertexAttribivNV), - NAME_FUNC_OFFSET(11859, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV), - NAME_FUNC_OFFSET(11873, glLoadProgramNV, glLoadProgramNV, NULL, _gloffset_LoadProgramNV), - NAME_FUNC_OFFSET(11889, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, _gloffset_ProgramParameters4dvNV), - NAME_FUNC_OFFSET(11914, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, _gloffset_ProgramParameters4fvNV), - NAME_FUNC_OFFSET(11939, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, _gloffset_RequestResidentProgramsNV), - NAME_FUNC_OFFSET(11967, glTrackMatrixNV, glTrackMatrixNV, NULL, _gloffset_TrackMatrixNV), - NAME_FUNC_OFFSET(11983, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, _gloffset_VertexAttrib1dNV), - NAME_FUNC_OFFSET(12002, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, _gloffset_VertexAttrib1dvNV), - NAME_FUNC_OFFSET(12022, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, _gloffset_VertexAttrib1fNV), - NAME_FUNC_OFFSET(12041, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, _gloffset_VertexAttrib1fvNV), - NAME_FUNC_OFFSET(12061, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, _gloffset_VertexAttrib1sNV), - NAME_FUNC_OFFSET(12080, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, _gloffset_VertexAttrib1svNV), - NAME_FUNC_OFFSET(12100, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, _gloffset_VertexAttrib2dNV), - NAME_FUNC_OFFSET(12119, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, _gloffset_VertexAttrib2dvNV), - NAME_FUNC_OFFSET(12139, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, _gloffset_VertexAttrib2fNV), - NAME_FUNC_OFFSET(12158, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, _gloffset_VertexAttrib2fvNV), - NAME_FUNC_OFFSET(12178, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, _gloffset_VertexAttrib2sNV), - NAME_FUNC_OFFSET(12197, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, _gloffset_VertexAttrib2svNV), - NAME_FUNC_OFFSET(12217, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, _gloffset_VertexAttrib3dNV), - NAME_FUNC_OFFSET(12236, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, _gloffset_VertexAttrib3dvNV), - NAME_FUNC_OFFSET(12256, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, _gloffset_VertexAttrib3fNV), - NAME_FUNC_OFFSET(12275, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, _gloffset_VertexAttrib3fvNV), - NAME_FUNC_OFFSET(12295, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, _gloffset_VertexAttrib3sNV), - NAME_FUNC_OFFSET(12314, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, _gloffset_VertexAttrib3svNV), - NAME_FUNC_OFFSET(12334, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, _gloffset_VertexAttrib4dNV), - NAME_FUNC_OFFSET(12353, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, _gloffset_VertexAttrib4dvNV), - NAME_FUNC_OFFSET(12373, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, _gloffset_VertexAttrib4fNV), - NAME_FUNC_OFFSET(12392, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, _gloffset_VertexAttrib4fvNV), - NAME_FUNC_OFFSET(12412, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, _gloffset_VertexAttrib4sNV), - NAME_FUNC_OFFSET(12431, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, _gloffset_VertexAttrib4svNV), - NAME_FUNC_OFFSET(12451, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, _gloffset_VertexAttrib4ubNV), - NAME_FUNC_OFFSET(12471, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, _gloffset_VertexAttrib4ubvNV), - NAME_FUNC_OFFSET(12492, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, _gloffset_VertexAttribPointerNV), - NAME_FUNC_OFFSET(12516, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, _gloffset_VertexAttribs1dvNV), - NAME_FUNC_OFFSET(12537, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, _gloffset_VertexAttribs1fvNV), - NAME_FUNC_OFFSET(12558, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, _gloffset_VertexAttribs1svNV), - NAME_FUNC_OFFSET(12579, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, _gloffset_VertexAttribs2dvNV), - NAME_FUNC_OFFSET(12600, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, _gloffset_VertexAttribs2fvNV), - NAME_FUNC_OFFSET(12621, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, _gloffset_VertexAttribs2svNV), - NAME_FUNC_OFFSET(12642, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, _gloffset_VertexAttribs3dvNV), - NAME_FUNC_OFFSET(12663, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, _gloffset_VertexAttribs3fvNV), - NAME_FUNC_OFFSET(12684, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, _gloffset_VertexAttribs3svNV), - NAME_FUNC_OFFSET(12705, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, _gloffset_VertexAttribs4dvNV), - NAME_FUNC_OFFSET(12726, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, _gloffset_VertexAttribs4fvNV), - NAME_FUNC_OFFSET(12747, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, _gloffset_VertexAttribs4svNV), - NAME_FUNC_OFFSET(12768, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, _gloffset_VertexAttribs4ubvNV), - NAME_FUNC_OFFSET(12790, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, _gloffset_GetTexBumpParameterfvATI), - NAME_FUNC_OFFSET(12817, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, _gloffset_GetTexBumpParameterivATI), - NAME_FUNC_OFFSET(12844, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, _gloffset_TexBumpParameterfvATI), - NAME_FUNC_OFFSET(12868, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, _gloffset_TexBumpParameterivATI), - NAME_FUNC_OFFSET(12892, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, _gloffset_AlphaFragmentOp1ATI), - NAME_FUNC_OFFSET(12914, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, _gloffset_AlphaFragmentOp2ATI), - NAME_FUNC_OFFSET(12936, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, _gloffset_AlphaFragmentOp3ATI), - NAME_FUNC_OFFSET(12958, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, _gloffset_BeginFragmentShaderATI), - NAME_FUNC_OFFSET(12983, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, _gloffset_BindFragmentShaderATI), - NAME_FUNC_OFFSET(13007, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, _gloffset_ColorFragmentOp1ATI), - NAME_FUNC_OFFSET(13029, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, _gloffset_ColorFragmentOp2ATI), - NAME_FUNC_OFFSET(13051, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, _gloffset_ColorFragmentOp3ATI), - NAME_FUNC_OFFSET(13073, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, _gloffset_DeleteFragmentShaderATI), - NAME_FUNC_OFFSET(13099, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, _gloffset_EndFragmentShaderATI), - NAME_FUNC_OFFSET(13122, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, _gloffset_GenFragmentShadersATI), - NAME_FUNC_OFFSET(13146, glPassTexCoordATI, glPassTexCoordATI, NULL, _gloffset_PassTexCoordATI), - NAME_FUNC_OFFSET(13164, glSampleMapATI, glSampleMapATI, NULL, _gloffset_SampleMapATI), - NAME_FUNC_OFFSET(13179, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, _gloffset_SetFragmentShaderConstantATI), - NAME_FUNC_OFFSET(13210, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV), - NAME_FUNC_OFFSET(13230, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV), - NAME_FUNC_OFFSET(13251, gl_dispatch_stub_763, gl_dispatch_stub_763, NULL, _gloffset_ActiveStencilFaceEXT), - NAME_FUNC_OFFSET(13274, gl_dispatch_stub_764, gl_dispatch_stub_764, NULL, _gloffset_BindVertexArrayAPPLE), - NAME_FUNC_OFFSET(13297, gl_dispatch_stub_765, gl_dispatch_stub_765, NULL, _gloffset_DeleteVertexArraysAPPLE), - NAME_FUNC_OFFSET(13323, gl_dispatch_stub_766, gl_dispatch_stub_766, NULL, _gloffset_GenVertexArraysAPPLE), - NAME_FUNC_OFFSET(13346, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_IsVertexArrayAPPLE), - NAME_FUNC_OFFSET(13367, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, _gloffset_GetProgramNamedParameterdvNV), - NAME_FUNC_OFFSET(13398, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, _gloffset_GetProgramNamedParameterfvNV), - NAME_FUNC_OFFSET(13429, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, _gloffset_ProgramNamedParameter4dNV), - NAME_FUNC_OFFSET(13457, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, _gloffset_ProgramNamedParameter4dvNV), - NAME_FUNC_OFFSET(13486, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, _gloffset_ProgramNamedParameter4fNV), - NAME_FUNC_OFFSET(13514, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, _gloffset_ProgramNamedParameter4fvNV), - NAME_FUNC_OFFSET(13543, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, _gloffset_PrimitiveRestartIndexNV), - NAME_FUNC_OFFSET(13569, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL, _gloffset_PrimitiveRestartNV), - NAME_FUNC_OFFSET(13590, gl_dispatch_stub_776, gl_dispatch_stub_776, NULL, _gloffset_DepthBoundsEXT), - NAME_FUNC_OFFSET(13607, gl_dispatch_stub_777, gl_dispatch_stub_777, NULL, _gloffset_BlendEquationSeparateEXT), - NAME_FUNC_OFFSET(13634, glBindFramebufferEXT, glBindFramebufferEXT, NULL, _gloffset_BindFramebufferEXT), - NAME_FUNC_OFFSET(13655, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, _gloffset_BindRenderbufferEXT), - NAME_FUNC_OFFSET(13677, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, _gloffset_CheckFramebufferStatusEXT), - NAME_FUNC_OFFSET(13705, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, _gloffset_DeleteFramebuffersEXT), - NAME_FUNC_OFFSET(13729, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, _gloffset_DeleteRenderbuffersEXT), - NAME_FUNC_OFFSET(13754, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, _gloffset_FramebufferRenderbufferEXT), - NAME_FUNC_OFFSET(13783, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, _gloffset_FramebufferTexture1DEXT), - NAME_FUNC_OFFSET(13809, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, _gloffset_FramebufferTexture2DEXT), - NAME_FUNC_OFFSET(13835, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, _gloffset_FramebufferTexture3DEXT), - NAME_FUNC_OFFSET(13861, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, _gloffset_GenFramebuffersEXT), - NAME_FUNC_OFFSET(13882, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, _gloffset_GenRenderbuffersEXT), - NAME_FUNC_OFFSET(13904, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, _gloffset_GenerateMipmapEXT), - NAME_FUNC_OFFSET(13924, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, _gloffset_GetFramebufferAttachmentParameterivEXT), - NAME_FUNC_OFFSET(13965, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, _gloffset_GetRenderbufferParameterivEXT), - NAME_FUNC_OFFSET(13997, glIsFramebufferEXT, glIsFramebufferEXT, NULL, _gloffset_IsFramebufferEXT), - NAME_FUNC_OFFSET(14016, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, _gloffset_IsRenderbufferEXT), - NAME_FUNC_OFFSET(14036, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, _gloffset_RenderbufferStorageEXT), - NAME_FUNC_OFFSET(14061, gl_dispatch_stub_795, gl_dispatch_stub_795, NULL, _gloffset_BlitFramebufferEXT), - NAME_FUNC_OFFSET(14082, gl_dispatch_stub_796, gl_dispatch_stub_796, NULL, _gloffset_BufferParameteriAPPLE), - NAME_FUNC_OFFSET(14106, gl_dispatch_stub_797, gl_dispatch_stub_797, NULL, _gloffset_FlushMappedBufferRangeAPPLE), - NAME_FUNC_OFFSET(14136, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, _gloffset_FramebufferTextureLayerEXT), - NAME_FUNC_OFFSET(14165, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, _gloffset_ColorMaskIndexedEXT), - NAME_FUNC_OFFSET(14187, glDisableIndexedEXT, glDisableIndexedEXT, NULL, _gloffset_DisableIndexedEXT), - NAME_FUNC_OFFSET(14207, glEnableIndexedEXT, glEnableIndexedEXT, NULL, _gloffset_EnableIndexedEXT), - NAME_FUNC_OFFSET(14226, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, _gloffset_GetBooleanIndexedvEXT), - NAME_FUNC_OFFSET(14250, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, _gloffset_GetIntegerIndexedvEXT), - NAME_FUNC_OFFSET(14274, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, _gloffset_IsEnabledIndexedEXT), - NAME_FUNC_OFFSET(14296, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, _gloffset_BeginConditionalRenderNV), - NAME_FUNC_OFFSET(14323, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, _gloffset_EndConditionalRenderNV), - NAME_FUNC_OFFSET(14348, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, _gloffset_BeginTransformFeedbackEXT), - NAME_FUNC_OFFSET(14376, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, _gloffset_BindBufferBaseEXT), - NAME_FUNC_OFFSET(14396, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, _gloffset_BindBufferOffsetEXT), - NAME_FUNC_OFFSET(14418, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, _gloffset_BindBufferRangeEXT), - NAME_FUNC_OFFSET(14439, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, _gloffset_EndTransformFeedbackEXT), - NAME_FUNC_OFFSET(14465, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, _gloffset_GetTransformFeedbackVaryingEXT), - NAME_FUNC_OFFSET(14498, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, _gloffset_TransformFeedbackVaryingsEXT), - NAME_FUNC_OFFSET(14529, glProvokingVertexEXT, glProvokingVertexEXT, NULL, _gloffset_ProvokingVertexEXT), - NAME_FUNC_OFFSET(14550, gl_dispatch_stub_815, gl_dispatch_stub_815, NULL, _gloffset_GetTexParameterPointervAPPLE), - NAME_FUNC_OFFSET(14581, gl_dispatch_stub_816, gl_dispatch_stub_816, NULL, _gloffset_TextureRangeAPPLE), - NAME_FUNC_OFFSET(14601, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, _gloffset_GetObjectParameterivAPPLE), - NAME_FUNC_OFFSET(14629, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, _gloffset_ObjectPurgeableAPPLE), - NAME_FUNC_OFFSET(14652, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, _gloffset_ObjectUnpurgeableAPPLE), - NAME_FUNC_OFFSET(14677, gl_dispatch_stub_820, gl_dispatch_stub_820, NULL, _gloffset_StencilFuncSeparateATI), - NAME_FUNC_OFFSET(14702, gl_dispatch_stub_821, gl_dispatch_stub_821, NULL, _gloffset_ProgramEnvParameters4fvEXT), - NAME_FUNC_OFFSET(14731, gl_dispatch_stub_822, gl_dispatch_stub_822, NULL, _gloffset_ProgramLocalParameters4fvEXT), - NAME_FUNC_OFFSET(14762, gl_dispatch_stub_823, gl_dispatch_stub_823, NULL, _gloffset_GetQueryObjecti64vEXT), - NAME_FUNC_OFFSET(14786, gl_dispatch_stub_824, gl_dispatch_stub_824, NULL, _gloffset_GetQueryObjectui64vEXT), - NAME_FUNC_OFFSET(14811, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, _gloffset_EGLImageTargetRenderbufferStorageOES), - NAME_FUNC_OFFSET(14850, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, _gloffset_EGLImageTargetTexture2DOES), - NAME_FUNC_OFFSET(14879, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement), - NAME_FUNC_OFFSET(14897, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture), - NAME_FUNC_OFFSET(14914, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays), - NAME_FUNC_OFFSET(14930, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, _gloffset_AreTexturesResident), - NAME_FUNC_OFFSET(14955, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D), - NAME_FUNC_OFFSET(14975, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D), - NAME_FUNC_OFFSET(14995, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D), - NAME_FUNC_OFFSET(15018, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D), - NAME_FUNC_OFFSET(15041, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, _gloffset_DeleteTextures), - NAME_FUNC_OFFSET(15061, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, _gloffset_GenTextures), - NAME_FUNC_OFFSET(15078, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv), - NAME_FUNC_OFFSET(15095, glIsTexture, glIsTextureEXT, glIsTextureEXT, _gloffset_IsTexture), - NAME_FUNC_OFFSET(15110, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures), - NAME_FUNC_OFFSET(15134, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D), - NAME_FUNC_OFFSET(15153, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D), - NAME_FUNC_OFFSET(15172, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor), - NAME_FUNC_OFFSET(15188, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation), - NAME_FUNC_OFFSET(15207, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements), - NAME_FUNC_OFFSET(15230, glColorTable, glColorTable, NULL, _gloffset_ColorTable), - NAME_FUNC_OFFSET(15246, glColorTable, glColorTable, NULL, _gloffset_ColorTable), - NAME_FUNC_OFFSET(15262, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv), - NAME_FUNC_OFFSET(15289, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv), - NAME_FUNC_OFFSET(15316, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable), - NAME_FUNC_OFFSET(15336, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable), - NAME_FUNC_OFFSET(15355, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable), - NAME_FUNC_OFFSET(15374, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv), - NAME_FUNC_OFFSET(15404, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv), - NAME_FUNC_OFFSET(15434, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv), - NAME_FUNC_OFFSET(15464, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv), - NAME_FUNC_OFFSET(15494, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable), - NAME_FUNC_OFFSET(15513, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable), - NAME_FUNC_OFFSET(15536, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D), - NAME_FUNC_OFFSET(15561, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D), - NAME_FUNC_OFFSET(15586, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf), - NAME_FUNC_OFFSET(15613, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv), - NAME_FUNC_OFFSET(15641, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri), - NAME_FUNC_OFFSET(15668, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv), - NAME_FUNC_OFFSET(15696, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D), - NAME_FUNC_OFFSET(15725, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D), - NAME_FUNC_OFFSET(15754, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, _gloffset_GetConvolutionFilter), - NAME_FUNC_OFFSET(15780, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, _gloffset_GetConvolutionParameterfv), - NAME_FUNC_OFFSET(15811, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, _gloffset_GetConvolutionParameteriv), - NAME_FUNC_OFFSET(15842, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, _gloffset_GetSeparableFilter), - NAME_FUNC_OFFSET(15866, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D), - NAME_FUNC_OFFSET(15889, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, _gloffset_GetHistogram), - NAME_FUNC_OFFSET(15907, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, _gloffset_GetHistogramParameterfv), - NAME_FUNC_OFFSET(15936, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, _gloffset_GetHistogramParameteriv), - NAME_FUNC_OFFSET(15965, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, _gloffset_GetMinmax), - NAME_FUNC_OFFSET(15980, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, _gloffset_GetMinmaxParameterfv), - NAME_FUNC_OFFSET(16006, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, _gloffset_GetMinmaxParameteriv), - NAME_FUNC_OFFSET(16032, glHistogram, glHistogram, NULL, _gloffset_Histogram), - NAME_FUNC_OFFSET(16047, glMinmax, glMinmax, NULL, _gloffset_Minmax), - NAME_FUNC_OFFSET(16059, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram), - NAME_FUNC_OFFSET(16079, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax), - NAME_FUNC_OFFSET(16096, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D), - NAME_FUNC_OFFSET(16112, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D), - NAME_FUNC_OFFSET(16131, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D), - NAME_FUNC_OFFSET(16154, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB), - NAME_FUNC_OFFSET(16170, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB), - NAME_FUNC_OFFSET(16192, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB), - NAME_FUNC_OFFSET(16210, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB), - NAME_FUNC_OFFSET(16229, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB), - NAME_FUNC_OFFSET(16247, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB), - NAME_FUNC_OFFSET(16266, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB), - NAME_FUNC_OFFSET(16284, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB), - NAME_FUNC_OFFSET(16303, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB), - NAME_FUNC_OFFSET(16321, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB), - NAME_FUNC_OFFSET(16340, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB), - NAME_FUNC_OFFSET(16358, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB), - NAME_FUNC_OFFSET(16377, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB), - NAME_FUNC_OFFSET(16395, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB), - NAME_FUNC_OFFSET(16414, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB), - NAME_FUNC_OFFSET(16432, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB), - NAME_FUNC_OFFSET(16451, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB), - NAME_FUNC_OFFSET(16469, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB), - NAME_FUNC_OFFSET(16488, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB), - NAME_FUNC_OFFSET(16506, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB), - NAME_FUNC_OFFSET(16525, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB), - NAME_FUNC_OFFSET(16543, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB), - NAME_FUNC_OFFSET(16562, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB), - NAME_FUNC_OFFSET(16580, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB), - NAME_FUNC_OFFSET(16599, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB), - NAME_FUNC_OFFSET(16617, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB), - NAME_FUNC_OFFSET(16636, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB), - NAME_FUNC_OFFSET(16654, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB), - NAME_FUNC_OFFSET(16673, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB), - NAME_FUNC_OFFSET(16691, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB), - NAME_FUNC_OFFSET(16710, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB), - NAME_FUNC_OFFSET(16728, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB), - NAME_FUNC_OFFSET(16747, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB), - NAME_FUNC_OFFSET(16765, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB), - NAME_FUNC_OFFSET(16784, glStencilOpSeparate, glStencilOpSeparate, NULL, _gloffset_StencilOpSeparate), - NAME_FUNC_OFFSET(16807, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced), - NAME_FUNC_OFFSET(16832, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced), - NAME_FUNC_OFFSET(16857, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced), - NAME_FUNC_OFFSET(16884, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced), - NAME_FUNC_OFFSET(16911, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB), - NAME_FUNC_OFFSET(16934, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB), - NAME_FUNC_OFFSET(16957, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB), - NAME_FUNC_OFFSET(16980, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB), - NAME_FUNC_OFFSET(17003, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB), - NAME_FUNC_OFFSET(17020, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB), - NAME_FUNC_OFFSET(17043, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB), - NAME_FUNC_OFFSET(17066, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB), - NAME_FUNC_OFFSET(17089, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB), - NAME_FUNC_OFFSET(17115, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB), - NAME_FUNC_OFFSET(17141, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB), - NAME_FUNC_OFFSET(17167, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB), - NAME_FUNC_OFFSET(17191, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB), - NAME_FUNC_OFFSET(17218, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB), - NAME_FUNC_OFFSET(17244, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB), - NAME_FUNC_OFFSET(17264, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB), - NAME_FUNC_OFFSET(17284, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB), - NAME_FUNC_OFFSET(17304, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, _gloffset_ProgramEnvParameter4dARB), - NAME_FUNC_OFFSET(17327, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, _gloffset_ProgramEnvParameter4dvARB), - NAME_FUNC_OFFSET(17351, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, _gloffset_ProgramEnvParameter4fARB), - NAME_FUNC_OFFSET(17374, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, _gloffset_ProgramEnvParameter4fvARB), - NAME_FUNC_OFFSET(17398, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB), - NAME_FUNC_OFFSET(17415, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB), - NAME_FUNC_OFFSET(17433, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB), - NAME_FUNC_OFFSET(17450, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB), - NAME_FUNC_OFFSET(17468, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB), - NAME_FUNC_OFFSET(17485, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB), - NAME_FUNC_OFFSET(17503, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB), - NAME_FUNC_OFFSET(17520, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB), - NAME_FUNC_OFFSET(17538, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB), - NAME_FUNC_OFFSET(17555, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB), - NAME_FUNC_OFFSET(17573, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB), - NAME_FUNC_OFFSET(17590, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB), - NAME_FUNC_OFFSET(17608, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB), - NAME_FUNC_OFFSET(17625, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB), - NAME_FUNC_OFFSET(17643, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB), - NAME_FUNC_OFFSET(17660, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB), - NAME_FUNC_OFFSET(17678, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB), - NAME_FUNC_OFFSET(17695, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB), - NAME_FUNC_OFFSET(17713, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB), - NAME_FUNC_OFFSET(17732, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB), - NAME_FUNC_OFFSET(17751, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB), - NAME_FUNC_OFFSET(17770, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB), - NAME_FUNC_OFFSET(17789, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB), - NAME_FUNC_OFFSET(17809, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB), - NAME_FUNC_OFFSET(17829, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB), - NAME_FUNC_OFFSET(17849, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, _gloffset_VertexAttrib4bvARB), - NAME_FUNC_OFFSET(17867, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB), - NAME_FUNC_OFFSET(17884, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB), - NAME_FUNC_OFFSET(17902, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB), - NAME_FUNC_OFFSET(17919, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB), - NAME_FUNC_OFFSET(17937, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, _gloffset_VertexAttrib4ivARB), - NAME_FUNC_OFFSET(17955, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB), - NAME_FUNC_OFFSET(17972, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB), - NAME_FUNC_OFFSET(17990, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, _gloffset_VertexAttrib4ubvARB), - NAME_FUNC_OFFSET(18009, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, _gloffset_VertexAttrib4uivARB), - NAME_FUNC_OFFSET(18028, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, _gloffset_VertexAttrib4usvARB), - NAME_FUNC_OFFSET(18047, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB), - NAME_FUNC_OFFSET(18069, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB), - NAME_FUNC_OFFSET(18082, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB), - NAME_FUNC_OFFSET(18095, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB), - NAME_FUNC_OFFSET(18111, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB), - NAME_FUNC_OFFSET(18127, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB), - NAME_FUNC_OFFSET(18140, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB), - NAME_FUNC_OFFSET(18163, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB), - NAME_FUNC_OFFSET(18183, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB), - NAME_FUNC_OFFSET(18202, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB), - NAME_FUNC_OFFSET(18213, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB), - NAME_FUNC_OFFSET(18225, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB), - NAME_FUNC_OFFSET(18239, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB), - NAME_FUNC_OFFSET(18252, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB), - NAME_FUNC_OFFSET(18268, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB), - NAME_FUNC_OFFSET(18279, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB), - NAME_FUNC_OFFSET(18292, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB), - NAME_FUNC_OFFSET(18311, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB), - NAME_FUNC_OFFSET(18331, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB), - NAME_FUNC_OFFSET(18344, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB), - NAME_FUNC_OFFSET(18354, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB), - NAME_FUNC_OFFSET(18370, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB), - NAME_FUNC_OFFSET(18389, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB), - NAME_FUNC_OFFSET(18407, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB), - NAME_FUNC_OFFSET(18428, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB), - NAME_FUNC_OFFSET(18443, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB), - NAME_FUNC_OFFSET(18458, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB), - NAME_FUNC_OFFSET(18472, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB), - NAME_FUNC_OFFSET(18487, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB), - NAME_FUNC_OFFSET(18499, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB), - NAME_FUNC_OFFSET(18512, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB), - NAME_FUNC_OFFSET(18524, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB), - NAME_FUNC_OFFSET(18537, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB), - NAME_FUNC_OFFSET(18549, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB), - NAME_FUNC_OFFSET(18562, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB), - NAME_FUNC_OFFSET(18574, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB), - NAME_FUNC_OFFSET(18587, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB), - NAME_FUNC_OFFSET(18599, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB), - NAME_FUNC_OFFSET(18612, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB), - NAME_FUNC_OFFSET(18624, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB), - NAME_FUNC_OFFSET(18637, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB), - NAME_FUNC_OFFSET(18649, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB), - NAME_FUNC_OFFSET(18662, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB), - NAME_FUNC_OFFSET(18674, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB), - NAME_FUNC_OFFSET(18687, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB), - NAME_FUNC_OFFSET(18706, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB), - NAME_FUNC_OFFSET(18725, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB), - NAME_FUNC_OFFSET(18744, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB), - NAME_FUNC_OFFSET(18757, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB), - NAME_FUNC_OFFSET(18775, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB), - NAME_FUNC_OFFSET(18796, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB), - NAME_FUNC_OFFSET(18814, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB), - NAME_FUNC_OFFSET(18834, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB), - NAME_FUNC_OFFSET(18848, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB), - NAME_FUNC_OFFSET(18865, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, _gloffset_RenderbufferStorageMultisample), - NAME_FUNC_OFFSET(18901, gl_dispatch_stub_596, gl_dispatch_stub_596, NULL, _gloffset_SampleMaskSGIS), - NAME_FUNC_OFFSET(18917, gl_dispatch_stub_597, gl_dispatch_stub_597, NULL, _gloffset_SamplePatternSGIS), - NAME_FUNC_OFFSET(18936, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT), - NAME_FUNC_OFFSET(18954, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT), - NAME_FUNC_OFFSET(18975, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT), - NAME_FUNC_OFFSET(18997, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT), - NAME_FUNC_OFFSET(19016, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT), - NAME_FUNC_OFFSET(19038, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT), - NAME_FUNC_OFFSET(19061, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT), - NAME_FUNC_OFFSET(19080, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT), - NAME_FUNC_OFFSET(19100, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT), - NAME_FUNC_OFFSET(19119, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT), - NAME_FUNC_OFFSET(19139, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT), - NAME_FUNC_OFFSET(19158, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT), - NAME_FUNC_OFFSET(19178, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT), - NAME_FUNC_OFFSET(19197, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT), - NAME_FUNC_OFFSET(19217, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT), - NAME_FUNC_OFFSET(19236, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT), - NAME_FUNC_OFFSET(19256, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT), - NAME_FUNC_OFFSET(19276, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT), - NAME_FUNC_OFFSET(19297, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT), - NAME_FUNC_OFFSET(19317, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT), - NAME_FUNC_OFFSET(19338, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT), - NAME_FUNC_OFFSET(19358, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT), - NAME_FUNC_OFFSET(19379, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT), - NAME_FUNC_OFFSET(19403, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT), - NAME_FUNC_OFFSET(19421, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT), - NAME_FUNC_OFFSET(19441, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT), - NAME_FUNC_OFFSET(19459, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT), - NAME_FUNC_OFFSET(19471, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT), - NAME_FUNC_OFFSET(19484, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT), - NAME_FUNC_OFFSET(19496, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT), - NAME_FUNC_OFFSET(19509, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT), - NAME_FUNC_OFFSET(19529, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT), - NAME_FUNC_OFFSET(19553, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA), - NAME_FUNC_OFFSET(19567, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA), - NAME_FUNC_OFFSET(19584, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA), - NAME_FUNC_OFFSET(19599, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA), - NAME_FUNC_OFFSET(19617, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA), - NAME_FUNC_OFFSET(19631, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA), - NAME_FUNC_OFFSET(19648, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA), - NAME_FUNC_OFFSET(19663, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA), - NAME_FUNC_OFFSET(19681, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA), - NAME_FUNC_OFFSET(19695, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA), - NAME_FUNC_OFFSET(19712, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA), - NAME_FUNC_OFFSET(19727, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA), - NAME_FUNC_OFFSET(19745, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA), - NAME_FUNC_OFFSET(19759, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA), - NAME_FUNC_OFFSET(19776, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA), - NAME_FUNC_OFFSET(19791, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA), - NAME_FUNC_OFFSET(19809, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA), - NAME_FUNC_OFFSET(19823, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA), - NAME_FUNC_OFFSET(19840, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA), - NAME_FUNC_OFFSET(19855, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA), - NAME_FUNC_OFFSET(19873, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA), - NAME_FUNC_OFFSET(19887, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA), - NAME_FUNC_OFFSET(19904, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA), - NAME_FUNC_OFFSET(19919, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA), - NAME_FUNC_OFFSET(19937, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA), - NAME_FUNC_OFFSET(19951, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA), - NAME_FUNC_OFFSET(19968, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA), - NAME_FUNC_OFFSET(19983, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA), - NAME_FUNC_OFFSET(20001, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA), - NAME_FUNC_OFFSET(20015, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA), - NAME_FUNC_OFFSET(20032, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA), - NAME_FUNC_OFFSET(20047, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA), - NAME_FUNC_OFFSET(20065, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV), - NAME_FUNC_OFFSET(20082, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV), - NAME_FUNC_OFFSET(20102, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV), - NAME_FUNC_OFFSET(20119, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV), - NAME_FUNC_OFFSET(20145, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV), - NAME_FUNC_OFFSET(20174, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV), - NAME_FUNC_OFFSET(20189, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV), - NAME_FUNC_OFFSET(20207, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV), - NAME_FUNC_OFFSET(20226, gl_dispatch_stub_765, gl_dispatch_stub_765, NULL, _gloffset_DeleteVertexArraysAPPLE), - NAME_FUNC_OFFSET(20247, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_IsVertexArrayAPPLE), - NAME_FUNC_OFFSET(20263, gl_dispatch_stub_777, gl_dispatch_stub_777, NULL, _gloffset_BlendEquationSeparateEXT), - NAME_FUNC_OFFSET(20287, gl_dispatch_stub_777, gl_dispatch_stub_777, NULL, _gloffset_BlendEquationSeparateEXT), - NAME_FUNC_OFFSET(20314, glBindFramebufferEXT, glBindFramebufferEXT, NULL, _gloffset_BindFramebufferEXT), - NAME_FUNC_OFFSET(20332, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, _gloffset_BindRenderbufferEXT), - NAME_FUNC_OFFSET(20351, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, _gloffset_CheckFramebufferStatusEXT), - NAME_FUNC_OFFSET(20376, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, _gloffset_DeleteFramebuffersEXT), - NAME_FUNC_OFFSET(20397, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, _gloffset_DeleteRenderbuffersEXT), - NAME_FUNC_OFFSET(20419, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, _gloffset_FramebufferRenderbufferEXT), - NAME_FUNC_OFFSET(20445, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, _gloffset_FramebufferTexture1DEXT), - NAME_FUNC_OFFSET(20468, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, _gloffset_FramebufferTexture2DEXT), - NAME_FUNC_OFFSET(20491, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, _gloffset_FramebufferTexture3DEXT), - NAME_FUNC_OFFSET(20514, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, _gloffset_GenFramebuffersEXT), - NAME_FUNC_OFFSET(20532, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, _gloffset_GenRenderbuffersEXT), - NAME_FUNC_OFFSET(20551, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, _gloffset_GenerateMipmapEXT), - NAME_FUNC_OFFSET(20568, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, _gloffset_GetFramebufferAttachmentParameterivEXT), - NAME_FUNC_OFFSET(20606, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, _gloffset_GetRenderbufferParameterivEXT), - NAME_FUNC_OFFSET(20635, glIsFramebufferEXT, glIsFramebufferEXT, NULL, _gloffset_IsFramebufferEXT), - NAME_FUNC_OFFSET(20651, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, _gloffset_IsRenderbufferEXT), - NAME_FUNC_OFFSET(20668, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, _gloffset_RenderbufferStorageEXT), - NAME_FUNC_OFFSET(20690, gl_dispatch_stub_795, gl_dispatch_stub_795, NULL, _gloffset_BlitFramebufferEXT), - NAME_FUNC_OFFSET(20708, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, _gloffset_FramebufferTextureLayerEXT), - NAME_FUNC_OFFSET(20734, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, _gloffset_BeginTransformFeedbackEXT), - NAME_FUNC_OFFSET(20759, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, _gloffset_BindBufferBaseEXT), - NAME_FUNC_OFFSET(20776, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, _gloffset_BindBufferRangeEXT), - NAME_FUNC_OFFSET(20794, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, _gloffset_EndTransformFeedbackEXT), - NAME_FUNC_OFFSET(20817, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, _gloffset_GetTransformFeedbackVaryingEXT), - NAME_FUNC_OFFSET(20847, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, _gloffset_TransformFeedbackVaryingsEXT), - NAME_FUNC_OFFSET(20875, glProvokingVertexEXT, glProvokingVertexEXT, NULL, _gloffset_ProvokingVertexEXT), + NAME_FUNC_OFFSET( 0, glNewList, glNewList, NULL, 0), + NAME_FUNC_OFFSET( 10, glEndList, glEndList, NULL, 1), + NAME_FUNC_OFFSET( 20, glCallList, glCallList, NULL, 2), + NAME_FUNC_OFFSET( 31, glCallLists, glCallLists, NULL, 3), + NAME_FUNC_OFFSET( 43, glDeleteLists, glDeleteLists, NULL, 4), + NAME_FUNC_OFFSET( 57, glGenLists, glGenLists, NULL, 5), + NAME_FUNC_OFFSET( 68, glListBase, glListBase, NULL, 6), + NAME_FUNC_OFFSET( 79, glBegin, glBegin, NULL, 7), + NAME_FUNC_OFFSET( 87, glBitmap, glBitmap, NULL, 8), + NAME_FUNC_OFFSET( 96, glColor3b, glColor3b, NULL, 9), + NAME_FUNC_OFFSET( 106, glColor3bv, glColor3bv, NULL, 10), + NAME_FUNC_OFFSET( 117, glColor3d, glColor3d, NULL, 11), + NAME_FUNC_OFFSET( 127, glColor3dv, glColor3dv, NULL, 12), + NAME_FUNC_OFFSET( 138, glColor3f, glColor3f, NULL, 13), + NAME_FUNC_OFFSET( 148, glColor3fv, glColor3fv, NULL, 14), + NAME_FUNC_OFFSET( 159, glColor3i, glColor3i, NULL, 15), + NAME_FUNC_OFFSET( 169, glColor3iv, glColor3iv, NULL, 16), + NAME_FUNC_OFFSET( 180, glColor3s, glColor3s, NULL, 17), + NAME_FUNC_OFFSET( 190, glColor3sv, glColor3sv, NULL, 18), + NAME_FUNC_OFFSET( 201, glColor3ub, glColor3ub, NULL, 19), + NAME_FUNC_OFFSET( 212, glColor3ubv, glColor3ubv, NULL, 20), + NAME_FUNC_OFFSET( 224, glColor3ui, glColor3ui, NULL, 21), + NAME_FUNC_OFFSET( 235, glColor3uiv, glColor3uiv, NULL, 22), + NAME_FUNC_OFFSET( 247, glColor3us, glColor3us, NULL, 23), + NAME_FUNC_OFFSET( 258, glColor3usv, glColor3usv, NULL, 24), + NAME_FUNC_OFFSET( 270, glColor4b, glColor4b, NULL, 25), + NAME_FUNC_OFFSET( 280, glColor4bv, glColor4bv, NULL, 26), + NAME_FUNC_OFFSET( 291, glColor4d, glColor4d, NULL, 27), + NAME_FUNC_OFFSET( 301, glColor4dv, glColor4dv, NULL, 28), + NAME_FUNC_OFFSET( 312, glColor4f, glColor4f, NULL, 29), + NAME_FUNC_OFFSET( 322, glColor4fv, glColor4fv, NULL, 30), + NAME_FUNC_OFFSET( 333, glColor4i, glColor4i, NULL, 31), + NAME_FUNC_OFFSET( 343, glColor4iv, glColor4iv, NULL, 32), + NAME_FUNC_OFFSET( 354, glColor4s, glColor4s, NULL, 33), + NAME_FUNC_OFFSET( 364, glColor4sv, glColor4sv, NULL, 34), + NAME_FUNC_OFFSET( 375, glColor4ub, glColor4ub, NULL, 35), + NAME_FUNC_OFFSET( 386, glColor4ubv, glColor4ubv, NULL, 36), + NAME_FUNC_OFFSET( 398, glColor4ui, glColor4ui, NULL, 37), + NAME_FUNC_OFFSET( 409, glColor4uiv, glColor4uiv, NULL, 38), + NAME_FUNC_OFFSET( 421, glColor4us, glColor4us, NULL, 39), + NAME_FUNC_OFFSET( 432, glColor4usv, glColor4usv, NULL, 40), + NAME_FUNC_OFFSET( 444, glEdgeFlag, glEdgeFlag, NULL, 41), + NAME_FUNC_OFFSET( 455, glEdgeFlagv, glEdgeFlagv, NULL, 42), + NAME_FUNC_OFFSET( 467, glEnd, glEnd, NULL, 43), + NAME_FUNC_OFFSET( 473, glIndexd, glIndexd, NULL, 44), + NAME_FUNC_OFFSET( 482, glIndexdv, glIndexdv, NULL, 45), + NAME_FUNC_OFFSET( 492, glIndexf, glIndexf, NULL, 46), + NAME_FUNC_OFFSET( 501, glIndexfv, glIndexfv, NULL, 47), + NAME_FUNC_OFFSET( 511, glIndexi, glIndexi, NULL, 48), + NAME_FUNC_OFFSET( 520, glIndexiv, glIndexiv, NULL, 49), + NAME_FUNC_OFFSET( 530, glIndexs, glIndexs, NULL, 50), + NAME_FUNC_OFFSET( 539, glIndexsv, glIndexsv, NULL, 51), + NAME_FUNC_OFFSET( 549, glNormal3b, glNormal3b, NULL, 52), + NAME_FUNC_OFFSET( 560, glNormal3bv, glNormal3bv, NULL, 53), + NAME_FUNC_OFFSET( 572, glNormal3d, glNormal3d, NULL, 54), + NAME_FUNC_OFFSET( 583, glNormal3dv, glNormal3dv, NULL, 55), + NAME_FUNC_OFFSET( 595, glNormal3f, glNormal3f, NULL, 56), + NAME_FUNC_OFFSET( 606, glNormal3fv, glNormal3fv, NULL, 57), + NAME_FUNC_OFFSET( 618, glNormal3i, glNormal3i, NULL, 58), + NAME_FUNC_OFFSET( 629, glNormal3iv, glNormal3iv, NULL, 59), + NAME_FUNC_OFFSET( 641, glNormal3s, glNormal3s, NULL, 60), + NAME_FUNC_OFFSET( 652, glNormal3sv, glNormal3sv, NULL, 61), + NAME_FUNC_OFFSET( 664, glRasterPos2d, glRasterPos2d, NULL, 62), + NAME_FUNC_OFFSET( 678, glRasterPos2dv, glRasterPos2dv, NULL, 63), + NAME_FUNC_OFFSET( 693, glRasterPos2f, glRasterPos2f, NULL, 64), + NAME_FUNC_OFFSET( 707, glRasterPos2fv, glRasterPos2fv, NULL, 65), + NAME_FUNC_OFFSET( 722, glRasterPos2i, glRasterPos2i, NULL, 66), + NAME_FUNC_OFFSET( 736, glRasterPos2iv, glRasterPos2iv, NULL, 67), + NAME_FUNC_OFFSET( 751, glRasterPos2s, glRasterPos2s, NULL, 68), + NAME_FUNC_OFFSET( 765, glRasterPos2sv, glRasterPos2sv, NULL, 69), + NAME_FUNC_OFFSET( 780, glRasterPos3d, glRasterPos3d, NULL, 70), + NAME_FUNC_OFFSET( 794, glRasterPos3dv, glRasterPos3dv, NULL, 71), + NAME_FUNC_OFFSET( 809, glRasterPos3f, glRasterPos3f, NULL, 72), + NAME_FUNC_OFFSET( 823, glRasterPos3fv, glRasterPos3fv, NULL, 73), + NAME_FUNC_OFFSET( 838, glRasterPos3i, glRasterPos3i, NULL, 74), + NAME_FUNC_OFFSET( 852, glRasterPos3iv, glRasterPos3iv, NULL, 75), + NAME_FUNC_OFFSET( 867, glRasterPos3s, glRasterPos3s, NULL, 76), + NAME_FUNC_OFFSET( 881, glRasterPos3sv, glRasterPos3sv, NULL, 77), + NAME_FUNC_OFFSET( 896, glRasterPos4d, glRasterPos4d, NULL, 78), + NAME_FUNC_OFFSET( 910, glRasterPos4dv, glRasterPos4dv, NULL, 79), + NAME_FUNC_OFFSET( 925, glRasterPos4f, glRasterPos4f, NULL, 80), + NAME_FUNC_OFFSET( 939, glRasterPos4fv, glRasterPos4fv, NULL, 81), + NAME_FUNC_OFFSET( 954, glRasterPos4i, glRasterPos4i, NULL, 82), + NAME_FUNC_OFFSET( 968, glRasterPos4iv, glRasterPos4iv, NULL, 83), + NAME_FUNC_OFFSET( 983, glRasterPos4s, glRasterPos4s, NULL, 84), + NAME_FUNC_OFFSET( 997, glRasterPos4sv, glRasterPos4sv, NULL, 85), + NAME_FUNC_OFFSET( 1012, glRectd, glRectd, NULL, 86), + NAME_FUNC_OFFSET( 1020, glRectdv, glRectdv, NULL, 87), + NAME_FUNC_OFFSET( 1029, glRectf, glRectf, NULL, 88), + NAME_FUNC_OFFSET( 1037, glRectfv, glRectfv, NULL, 89), + NAME_FUNC_OFFSET( 1046, glRecti, glRecti, NULL, 90), + NAME_FUNC_OFFSET( 1054, glRectiv, glRectiv, NULL, 91), + NAME_FUNC_OFFSET( 1063, glRects, glRects, NULL, 92), + NAME_FUNC_OFFSET( 1071, glRectsv, glRectsv, NULL, 93), + NAME_FUNC_OFFSET( 1080, glTexCoord1d, glTexCoord1d, NULL, 94), + NAME_FUNC_OFFSET( 1093, glTexCoord1dv, glTexCoord1dv, NULL, 95), + NAME_FUNC_OFFSET( 1107, glTexCoord1f, glTexCoord1f, NULL, 96), + NAME_FUNC_OFFSET( 1120, glTexCoord1fv, glTexCoord1fv, NULL, 97), + NAME_FUNC_OFFSET( 1134, glTexCoord1i, glTexCoord1i, NULL, 98), + NAME_FUNC_OFFSET( 1147, glTexCoord1iv, glTexCoord1iv, NULL, 99), + NAME_FUNC_OFFSET( 1161, glTexCoord1s, glTexCoord1s, NULL, 100), + NAME_FUNC_OFFSET( 1174, glTexCoord1sv, glTexCoord1sv, NULL, 101), + NAME_FUNC_OFFSET( 1188, glTexCoord2d, glTexCoord2d, NULL, 102), + NAME_FUNC_OFFSET( 1201, glTexCoord2dv, glTexCoord2dv, NULL, 103), + NAME_FUNC_OFFSET( 1215, glTexCoord2f, glTexCoord2f, NULL, 104), + NAME_FUNC_OFFSET( 1228, glTexCoord2fv, glTexCoord2fv, NULL, 105), + NAME_FUNC_OFFSET( 1242, glTexCoord2i, glTexCoord2i, NULL, 106), + NAME_FUNC_OFFSET( 1255, glTexCoord2iv, glTexCoord2iv, NULL, 107), + NAME_FUNC_OFFSET( 1269, glTexCoord2s, glTexCoord2s, NULL, 108), + NAME_FUNC_OFFSET( 1282, glTexCoord2sv, glTexCoord2sv, NULL, 109), + NAME_FUNC_OFFSET( 1296, glTexCoord3d, glTexCoord3d, NULL, 110), + NAME_FUNC_OFFSET( 1309, glTexCoord3dv, glTexCoord3dv, NULL, 111), + NAME_FUNC_OFFSET( 1323, glTexCoord3f, glTexCoord3f, NULL, 112), + NAME_FUNC_OFFSET( 1336, glTexCoord3fv, glTexCoord3fv, NULL, 113), + NAME_FUNC_OFFSET( 1350, glTexCoord3i, glTexCoord3i, NULL, 114), + NAME_FUNC_OFFSET( 1363, glTexCoord3iv, glTexCoord3iv, NULL, 115), + NAME_FUNC_OFFSET( 1377, glTexCoord3s, glTexCoord3s, NULL, 116), + NAME_FUNC_OFFSET( 1390, glTexCoord3sv, glTexCoord3sv, NULL, 117), + NAME_FUNC_OFFSET( 1404, glTexCoord4d, glTexCoord4d, NULL, 118), + NAME_FUNC_OFFSET( 1417, glTexCoord4dv, glTexCoord4dv, NULL, 119), + NAME_FUNC_OFFSET( 1431, glTexCoord4f, glTexCoord4f, NULL, 120), + NAME_FUNC_OFFSET( 1444, glTexCoord4fv, glTexCoord4fv, NULL, 121), + NAME_FUNC_OFFSET( 1458, glTexCoord4i, glTexCoord4i, NULL, 122), + NAME_FUNC_OFFSET( 1471, glTexCoord4iv, glTexCoord4iv, NULL, 123), + NAME_FUNC_OFFSET( 1485, glTexCoord4s, glTexCoord4s, NULL, 124), + NAME_FUNC_OFFSET( 1498, glTexCoord4sv, glTexCoord4sv, NULL, 125), + NAME_FUNC_OFFSET( 1512, glVertex2d, glVertex2d, NULL, 126), + NAME_FUNC_OFFSET( 1523, glVertex2dv, glVertex2dv, NULL, 127), + NAME_FUNC_OFFSET( 1535, glVertex2f, glVertex2f, NULL, 128), + NAME_FUNC_OFFSET( 1546, glVertex2fv, glVertex2fv, NULL, 129), + NAME_FUNC_OFFSET( 1558, glVertex2i, glVertex2i, NULL, 130), + NAME_FUNC_OFFSET( 1569, glVertex2iv, glVertex2iv, NULL, 131), + NAME_FUNC_OFFSET( 1581, glVertex2s, glVertex2s, NULL, 132), + NAME_FUNC_OFFSET( 1592, glVertex2sv, glVertex2sv, NULL, 133), + NAME_FUNC_OFFSET( 1604, glVertex3d, glVertex3d, NULL, 134), + NAME_FUNC_OFFSET( 1615, glVertex3dv, glVertex3dv, NULL, 135), + NAME_FUNC_OFFSET( 1627, glVertex3f, glVertex3f, NULL, 136), + NAME_FUNC_OFFSET( 1638, glVertex3fv, glVertex3fv, NULL, 137), + NAME_FUNC_OFFSET( 1650, glVertex3i, glVertex3i, NULL, 138), + NAME_FUNC_OFFSET( 1661, glVertex3iv, glVertex3iv, NULL, 139), + NAME_FUNC_OFFSET( 1673, glVertex3s, glVertex3s, NULL, 140), + NAME_FUNC_OFFSET( 1684, glVertex3sv, glVertex3sv, NULL, 141), + NAME_FUNC_OFFSET( 1696, glVertex4d, glVertex4d, NULL, 142), + NAME_FUNC_OFFSET( 1707, glVertex4dv, glVertex4dv, NULL, 143), + NAME_FUNC_OFFSET( 1719, glVertex4f, glVertex4f, NULL, 144), + NAME_FUNC_OFFSET( 1730, glVertex4fv, glVertex4fv, NULL, 145), + NAME_FUNC_OFFSET( 1742, glVertex4i, glVertex4i, NULL, 146), + NAME_FUNC_OFFSET( 1753, glVertex4iv, glVertex4iv, NULL, 147), + NAME_FUNC_OFFSET( 1765, glVertex4s, glVertex4s, NULL, 148), + NAME_FUNC_OFFSET( 1776, glVertex4sv, glVertex4sv, NULL, 149), + NAME_FUNC_OFFSET( 1788, glClipPlane, glClipPlane, NULL, 150), + NAME_FUNC_OFFSET( 1800, glColorMaterial, glColorMaterial, NULL, 151), + NAME_FUNC_OFFSET( 1816, glCullFace, glCullFace, NULL, 152), + NAME_FUNC_OFFSET( 1827, glFogf, glFogf, NULL, 153), + NAME_FUNC_OFFSET( 1834, glFogfv, glFogfv, NULL, 154), + NAME_FUNC_OFFSET( 1842, glFogi, glFogi, NULL, 155), + NAME_FUNC_OFFSET( 1849, glFogiv, glFogiv, NULL, 156), + NAME_FUNC_OFFSET( 1857, glFrontFace, glFrontFace, NULL, 157), + NAME_FUNC_OFFSET( 1869, glHint, glHint, NULL, 158), + NAME_FUNC_OFFSET( 1876, glLightf, glLightf, NULL, 159), + NAME_FUNC_OFFSET( 1885, glLightfv, glLightfv, NULL, 160), + NAME_FUNC_OFFSET( 1895, glLighti, glLighti, NULL, 161), + NAME_FUNC_OFFSET( 1904, glLightiv, glLightiv, NULL, 162), + NAME_FUNC_OFFSET( 1914, glLightModelf, glLightModelf, NULL, 163), + NAME_FUNC_OFFSET( 1928, glLightModelfv, glLightModelfv, NULL, 164), + NAME_FUNC_OFFSET( 1943, glLightModeli, glLightModeli, NULL, 165), + NAME_FUNC_OFFSET( 1957, glLightModeliv, glLightModeliv, NULL, 166), + NAME_FUNC_OFFSET( 1972, glLineStipple, glLineStipple, NULL, 167), + NAME_FUNC_OFFSET( 1986, glLineWidth, glLineWidth, NULL, 168), + NAME_FUNC_OFFSET( 1998, glMaterialf, glMaterialf, NULL, 169), + NAME_FUNC_OFFSET( 2010, glMaterialfv, glMaterialfv, NULL, 170), + NAME_FUNC_OFFSET( 2023, glMateriali, glMateriali, NULL, 171), + NAME_FUNC_OFFSET( 2035, glMaterialiv, glMaterialiv, NULL, 172), + NAME_FUNC_OFFSET( 2048, glPointSize, glPointSize, NULL, 173), + NAME_FUNC_OFFSET( 2060, glPolygonMode, glPolygonMode, NULL, 174), + NAME_FUNC_OFFSET( 2074, glPolygonStipple, glPolygonStipple, NULL, 175), + NAME_FUNC_OFFSET( 2091, glScissor, glScissor, NULL, 176), + NAME_FUNC_OFFSET( 2101, glShadeModel, glShadeModel, NULL, 177), + NAME_FUNC_OFFSET( 2114, glTexParameterf, glTexParameterf, NULL, 178), + NAME_FUNC_OFFSET( 2130, glTexParameterfv, glTexParameterfv, NULL, 179), + NAME_FUNC_OFFSET( 2147, glTexParameteri, glTexParameteri, NULL, 180), + NAME_FUNC_OFFSET( 2163, glTexParameteriv, glTexParameteriv, NULL, 181), + NAME_FUNC_OFFSET( 2180, glTexImage1D, glTexImage1D, NULL, 182), + NAME_FUNC_OFFSET( 2193, glTexImage2D, glTexImage2D, NULL, 183), + NAME_FUNC_OFFSET( 2206, glTexEnvf, glTexEnvf, NULL, 184), + NAME_FUNC_OFFSET( 2216, glTexEnvfv, glTexEnvfv, NULL, 185), + NAME_FUNC_OFFSET( 2227, glTexEnvi, glTexEnvi, NULL, 186), + NAME_FUNC_OFFSET( 2237, glTexEnviv, glTexEnviv, NULL, 187), + NAME_FUNC_OFFSET( 2248, glTexGend, glTexGend, NULL, 188), + NAME_FUNC_OFFSET( 2258, glTexGendv, glTexGendv, NULL, 189), + NAME_FUNC_OFFSET( 2269, glTexGenf, glTexGenf, NULL, 190), + NAME_FUNC_OFFSET( 2279, glTexGenfv, glTexGenfv, NULL, 191), + NAME_FUNC_OFFSET( 2290, glTexGeni, glTexGeni, NULL, 192), + NAME_FUNC_OFFSET( 2300, glTexGeniv, glTexGeniv, NULL, 193), + NAME_FUNC_OFFSET( 2311, glFeedbackBuffer, glFeedbackBuffer, NULL, 194), + NAME_FUNC_OFFSET( 2328, glSelectBuffer, glSelectBuffer, NULL, 195), + NAME_FUNC_OFFSET( 2343, glRenderMode, glRenderMode, NULL, 196), + NAME_FUNC_OFFSET( 2356, glInitNames, glInitNames, NULL, 197), + NAME_FUNC_OFFSET( 2368, glLoadName, glLoadName, NULL, 198), + NAME_FUNC_OFFSET( 2379, glPassThrough, glPassThrough, NULL, 199), + NAME_FUNC_OFFSET( 2393, glPopName, glPopName, NULL, 200), + NAME_FUNC_OFFSET( 2403, glPushName, glPushName, NULL, 201), + NAME_FUNC_OFFSET( 2414, glDrawBuffer, glDrawBuffer, NULL, 202), + NAME_FUNC_OFFSET( 2427, glClear, glClear, NULL, 203), + NAME_FUNC_OFFSET( 2435, glClearAccum, glClearAccum, NULL, 204), + NAME_FUNC_OFFSET( 2448, glClearIndex, glClearIndex, NULL, 205), + NAME_FUNC_OFFSET( 2461, glClearColor, glClearColor, NULL, 206), + NAME_FUNC_OFFSET( 2474, glClearStencil, glClearStencil, NULL, 207), + NAME_FUNC_OFFSET( 2489, glClearDepth, glClearDepth, NULL, 208), + NAME_FUNC_OFFSET( 2502, glStencilMask, glStencilMask, NULL, 209), + NAME_FUNC_OFFSET( 2516, glColorMask, glColorMask, NULL, 210), + NAME_FUNC_OFFSET( 2528, glDepthMask, glDepthMask, NULL, 211), + NAME_FUNC_OFFSET( 2540, glIndexMask, glIndexMask, NULL, 212), + NAME_FUNC_OFFSET( 2552, glAccum, glAccum, NULL, 213), + NAME_FUNC_OFFSET( 2560, glDisable, glDisable, NULL, 214), + NAME_FUNC_OFFSET( 2570, glEnable, glEnable, NULL, 215), + NAME_FUNC_OFFSET( 2579, glFinish, glFinish, NULL, 216), + NAME_FUNC_OFFSET( 2588, glFlush, glFlush, NULL, 217), + NAME_FUNC_OFFSET( 2596, glPopAttrib, glPopAttrib, NULL, 218), + NAME_FUNC_OFFSET( 2608, glPushAttrib, glPushAttrib, NULL, 219), + NAME_FUNC_OFFSET( 2621, glMap1d, glMap1d, NULL, 220), + NAME_FUNC_OFFSET( 2629, glMap1f, glMap1f, NULL, 221), + NAME_FUNC_OFFSET( 2637, glMap2d, glMap2d, NULL, 222), + NAME_FUNC_OFFSET( 2645, glMap2f, glMap2f, NULL, 223), + NAME_FUNC_OFFSET( 2653, glMapGrid1d, glMapGrid1d, NULL, 224), + NAME_FUNC_OFFSET( 2665, glMapGrid1f, glMapGrid1f, NULL, 225), + NAME_FUNC_OFFSET( 2677, glMapGrid2d, glMapGrid2d, NULL, 226), + NAME_FUNC_OFFSET( 2689, glMapGrid2f, glMapGrid2f, NULL, 227), + NAME_FUNC_OFFSET( 2701, glEvalCoord1d, glEvalCoord1d, NULL, 228), + NAME_FUNC_OFFSET( 2715, glEvalCoord1dv, glEvalCoord1dv, NULL, 229), + NAME_FUNC_OFFSET( 2730, glEvalCoord1f, glEvalCoord1f, NULL, 230), + NAME_FUNC_OFFSET( 2744, glEvalCoord1fv, glEvalCoord1fv, NULL, 231), + NAME_FUNC_OFFSET( 2759, glEvalCoord2d, glEvalCoord2d, NULL, 232), + NAME_FUNC_OFFSET( 2773, glEvalCoord2dv, glEvalCoord2dv, NULL, 233), + NAME_FUNC_OFFSET( 2788, glEvalCoord2f, glEvalCoord2f, NULL, 234), + NAME_FUNC_OFFSET( 2802, glEvalCoord2fv, glEvalCoord2fv, NULL, 235), + NAME_FUNC_OFFSET( 2817, glEvalMesh1, glEvalMesh1, NULL, 236), + NAME_FUNC_OFFSET( 2829, glEvalPoint1, glEvalPoint1, NULL, 237), + NAME_FUNC_OFFSET( 2842, glEvalMesh2, glEvalMesh2, NULL, 238), + NAME_FUNC_OFFSET( 2854, glEvalPoint2, glEvalPoint2, NULL, 239), + NAME_FUNC_OFFSET( 2867, glAlphaFunc, glAlphaFunc, NULL, 240), + NAME_FUNC_OFFSET( 2879, glBlendFunc, glBlendFunc, NULL, 241), + NAME_FUNC_OFFSET( 2891, glLogicOp, glLogicOp, NULL, 242), + NAME_FUNC_OFFSET( 2901, glStencilFunc, glStencilFunc, NULL, 243), + NAME_FUNC_OFFSET( 2915, glStencilOp, glStencilOp, NULL, 244), + NAME_FUNC_OFFSET( 2927, glDepthFunc, glDepthFunc, NULL, 245), + NAME_FUNC_OFFSET( 2939, glPixelZoom, glPixelZoom, NULL, 246), + NAME_FUNC_OFFSET( 2951, glPixelTransferf, glPixelTransferf, NULL, 247), + NAME_FUNC_OFFSET( 2968, glPixelTransferi, glPixelTransferi, NULL, 248), + NAME_FUNC_OFFSET( 2985, glPixelStoref, glPixelStoref, NULL, 249), + NAME_FUNC_OFFSET( 2999, glPixelStorei, glPixelStorei, NULL, 250), + NAME_FUNC_OFFSET( 3013, glPixelMapfv, glPixelMapfv, NULL, 251), + NAME_FUNC_OFFSET( 3026, glPixelMapuiv, glPixelMapuiv, NULL, 252), + NAME_FUNC_OFFSET( 3040, glPixelMapusv, glPixelMapusv, NULL, 253), + NAME_FUNC_OFFSET( 3054, glReadBuffer, glReadBuffer, NULL, 254), + NAME_FUNC_OFFSET( 3067, glCopyPixels, glCopyPixels, NULL, 255), + NAME_FUNC_OFFSET( 3080, glReadPixels, glReadPixels, NULL, 256), + NAME_FUNC_OFFSET( 3093, glDrawPixels, glDrawPixels, NULL, 257), + NAME_FUNC_OFFSET( 3106, glGetBooleanv, glGetBooleanv, NULL, 258), + NAME_FUNC_OFFSET( 3120, glGetClipPlane, glGetClipPlane, NULL, 259), + NAME_FUNC_OFFSET( 3135, glGetDoublev, glGetDoublev, NULL, 260), + NAME_FUNC_OFFSET( 3148, glGetError, glGetError, NULL, 261), + NAME_FUNC_OFFSET( 3159, glGetFloatv, glGetFloatv, NULL, 262), + NAME_FUNC_OFFSET( 3171, glGetIntegerv, glGetIntegerv, NULL, 263), + NAME_FUNC_OFFSET( 3185, glGetLightfv, glGetLightfv, NULL, 264), + NAME_FUNC_OFFSET( 3198, glGetLightiv, glGetLightiv, NULL, 265), + NAME_FUNC_OFFSET( 3211, glGetMapdv, glGetMapdv, NULL, 266), + NAME_FUNC_OFFSET( 3222, glGetMapfv, glGetMapfv, NULL, 267), + NAME_FUNC_OFFSET( 3233, glGetMapiv, glGetMapiv, NULL, 268), + NAME_FUNC_OFFSET( 3244, glGetMaterialfv, glGetMaterialfv, NULL, 269), + NAME_FUNC_OFFSET( 3260, glGetMaterialiv, glGetMaterialiv, NULL, 270), + NAME_FUNC_OFFSET( 3276, glGetPixelMapfv, glGetPixelMapfv, NULL, 271), + NAME_FUNC_OFFSET( 3292, glGetPixelMapuiv, glGetPixelMapuiv, NULL, 272), + NAME_FUNC_OFFSET( 3309, glGetPixelMapusv, glGetPixelMapusv, NULL, 273), + NAME_FUNC_OFFSET( 3326, glGetPolygonStipple, glGetPolygonStipple, NULL, 274), + NAME_FUNC_OFFSET( 3346, glGetString, glGetString, NULL, 275), + NAME_FUNC_OFFSET( 3358, glGetTexEnvfv, glGetTexEnvfv, NULL, 276), + NAME_FUNC_OFFSET( 3372, glGetTexEnviv, glGetTexEnviv, NULL, 277), + NAME_FUNC_OFFSET( 3386, glGetTexGendv, glGetTexGendv, NULL, 278), + NAME_FUNC_OFFSET( 3400, glGetTexGenfv, glGetTexGenfv, NULL, 279), + NAME_FUNC_OFFSET( 3414, glGetTexGeniv, glGetTexGeniv, NULL, 280), + NAME_FUNC_OFFSET( 3428, glGetTexImage, glGetTexImage, NULL, 281), + NAME_FUNC_OFFSET( 3442, glGetTexParameterfv, glGetTexParameterfv, NULL, 282), + NAME_FUNC_OFFSET( 3462, glGetTexParameteriv, glGetTexParameteriv, NULL, 283), + NAME_FUNC_OFFSET( 3482, glGetTexLevelParameterfv, glGetTexLevelParameterfv, NULL, 284), + NAME_FUNC_OFFSET( 3507, glGetTexLevelParameteriv, glGetTexLevelParameteriv, NULL, 285), + NAME_FUNC_OFFSET( 3532, glIsEnabled, glIsEnabled, NULL, 286), + NAME_FUNC_OFFSET( 3544, glIsList, glIsList, NULL, 287), + NAME_FUNC_OFFSET( 3553, glDepthRange, glDepthRange, NULL, 288), + NAME_FUNC_OFFSET( 3566, glFrustum, glFrustum, NULL, 289), + NAME_FUNC_OFFSET( 3576, glLoadIdentity, glLoadIdentity, NULL, 290), + NAME_FUNC_OFFSET( 3591, glLoadMatrixf, glLoadMatrixf, NULL, 291), + NAME_FUNC_OFFSET( 3605, glLoadMatrixd, glLoadMatrixd, NULL, 292), + NAME_FUNC_OFFSET( 3619, glMatrixMode, glMatrixMode, NULL, 293), + NAME_FUNC_OFFSET( 3632, glMultMatrixf, glMultMatrixf, NULL, 294), + NAME_FUNC_OFFSET( 3646, glMultMatrixd, glMultMatrixd, NULL, 295), + NAME_FUNC_OFFSET( 3660, glOrtho, glOrtho, NULL, 296), + NAME_FUNC_OFFSET( 3668, glPopMatrix, glPopMatrix, NULL, 297), + NAME_FUNC_OFFSET( 3680, glPushMatrix, glPushMatrix, NULL, 298), + NAME_FUNC_OFFSET( 3693, glRotated, glRotated, NULL, 299), + NAME_FUNC_OFFSET( 3703, glRotatef, glRotatef, NULL, 300), + NAME_FUNC_OFFSET( 3713, glScaled, glScaled, NULL, 301), + NAME_FUNC_OFFSET( 3722, glScalef, glScalef, NULL, 302), + NAME_FUNC_OFFSET( 3731, glTranslated, glTranslated, NULL, 303), + NAME_FUNC_OFFSET( 3744, glTranslatef, glTranslatef, NULL, 304), + NAME_FUNC_OFFSET( 3757, glViewport, glViewport, NULL, 305), + NAME_FUNC_OFFSET( 3768, glArrayElement, glArrayElement, NULL, 306), + NAME_FUNC_OFFSET( 3783, glBindTexture, glBindTexture, NULL, 307), + NAME_FUNC_OFFSET( 3797, glColorPointer, glColorPointer, NULL, 308), + NAME_FUNC_OFFSET( 3812, glDisableClientState, glDisableClientState, NULL, 309), + NAME_FUNC_OFFSET( 3833, glDrawArrays, glDrawArrays, NULL, 310), + NAME_FUNC_OFFSET( 3846, glDrawElements, glDrawElements, NULL, 311), + NAME_FUNC_OFFSET( 3861, glEdgeFlagPointer, glEdgeFlagPointer, NULL, 312), + NAME_FUNC_OFFSET( 3879, glEnableClientState, glEnableClientState, NULL, 313), + NAME_FUNC_OFFSET( 3899, glIndexPointer, glIndexPointer, NULL, 314), + NAME_FUNC_OFFSET( 3914, glIndexub, glIndexub, NULL, 315), + NAME_FUNC_OFFSET( 3924, glIndexubv, glIndexubv, NULL, 316), + NAME_FUNC_OFFSET( 3935, glInterleavedArrays, glInterleavedArrays, NULL, 317), + NAME_FUNC_OFFSET( 3955, glNormalPointer, glNormalPointer, NULL, 318), + NAME_FUNC_OFFSET( 3971, glPolygonOffset, glPolygonOffset, NULL, 319), + NAME_FUNC_OFFSET( 3987, glTexCoordPointer, glTexCoordPointer, NULL, 320), + NAME_FUNC_OFFSET( 4005, glVertexPointer, glVertexPointer, NULL, 321), + NAME_FUNC_OFFSET( 4021, glAreTexturesResident, glAreTexturesResident, NULL, 322), + NAME_FUNC_OFFSET( 4043, glCopyTexImage1D, glCopyTexImage1D, NULL, 323), + NAME_FUNC_OFFSET( 4060, glCopyTexImage2D, glCopyTexImage2D, NULL, 324), + NAME_FUNC_OFFSET( 4077, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325), + NAME_FUNC_OFFSET( 4097, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326), + NAME_FUNC_OFFSET( 4117, glDeleteTextures, glDeleteTextures, NULL, 327), + NAME_FUNC_OFFSET( 4134, glGenTextures, glGenTextures, NULL, 328), + NAME_FUNC_OFFSET( 4148, glGetPointerv, glGetPointerv, NULL, 329), + NAME_FUNC_OFFSET( 4162, glIsTexture, glIsTexture, NULL, 330), + NAME_FUNC_OFFSET( 4174, glPrioritizeTextures, glPrioritizeTextures, NULL, 331), + NAME_FUNC_OFFSET( 4195, glTexSubImage1D, glTexSubImage1D, NULL, 332), + NAME_FUNC_OFFSET( 4211, glTexSubImage2D, glTexSubImage2D, NULL, 333), + NAME_FUNC_OFFSET( 4227, glPopClientAttrib, glPopClientAttrib, NULL, 334), + NAME_FUNC_OFFSET( 4245, glPushClientAttrib, glPushClientAttrib, NULL, 335), + NAME_FUNC_OFFSET( 4264, glBlendColor, glBlendColor, NULL, 336), + NAME_FUNC_OFFSET( 4277, glBlendEquation, glBlendEquation, NULL, 337), + NAME_FUNC_OFFSET( 4293, glDrawRangeElements, glDrawRangeElements, NULL, 338), + NAME_FUNC_OFFSET( 4313, glColorTable, glColorTable, NULL, 339), + NAME_FUNC_OFFSET( 4326, glColorTableParameterfv, glColorTableParameterfv, NULL, 340), + NAME_FUNC_OFFSET( 4350, glColorTableParameteriv, glColorTableParameteriv, NULL, 341), + NAME_FUNC_OFFSET( 4374, glCopyColorTable, glCopyColorTable, NULL, 342), + NAME_FUNC_OFFSET( 4391, glGetColorTable, glGetColorTable, NULL, 343), + NAME_FUNC_OFFSET( 4407, glGetColorTableParameterfv, glGetColorTableParameterfv, NULL, 344), + NAME_FUNC_OFFSET( 4434, glGetColorTableParameteriv, glGetColorTableParameteriv, NULL, 345), + NAME_FUNC_OFFSET( 4461, glColorSubTable, glColorSubTable, NULL, 346), + NAME_FUNC_OFFSET( 4477, glCopyColorSubTable, glCopyColorSubTable, NULL, 347), + NAME_FUNC_OFFSET( 4497, glConvolutionFilter1D, glConvolutionFilter1D, NULL, 348), + NAME_FUNC_OFFSET( 4519, glConvolutionFilter2D, glConvolutionFilter2D, NULL, 349), + NAME_FUNC_OFFSET( 4541, glConvolutionParameterf, glConvolutionParameterf, NULL, 350), + NAME_FUNC_OFFSET( 4565, glConvolutionParameterfv, glConvolutionParameterfv, NULL, 351), + NAME_FUNC_OFFSET( 4590, glConvolutionParameteri, glConvolutionParameteri, NULL, 352), + NAME_FUNC_OFFSET( 4614, glConvolutionParameteriv, glConvolutionParameteriv, NULL, 353), + NAME_FUNC_OFFSET( 4639, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, 354), + NAME_FUNC_OFFSET( 4665, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, 355), + NAME_FUNC_OFFSET( 4691, glGetConvolutionFilter, glGetConvolutionFilter, NULL, 356), + NAME_FUNC_OFFSET( 4714, glGetConvolutionParameterfv, glGetConvolutionParameterfv, NULL, 357), + NAME_FUNC_OFFSET( 4742, glGetConvolutionParameteriv, glGetConvolutionParameteriv, NULL, 358), + NAME_FUNC_OFFSET( 4770, glGetSeparableFilter, glGetSeparableFilter, NULL, 359), + NAME_FUNC_OFFSET( 4791, glSeparableFilter2D, glSeparableFilter2D, NULL, 360), + NAME_FUNC_OFFSET( 4811, glGetHistogram, glGetHistogram, NULL, 361), + NAME_FUNC_OFFSET( 4826, glGetHistogramParameterfv, glGetHistogramParameterfv, NULL, 362), + NAME_FUNC_OFFSET( 4852, glGetHistogramParameteriv, glGetHistogramParameteriv, NULL, 363), + NAME_FUNC_OFFSET( 4878, glGetMinmax, glGetMinmax, NULL, 364), + NAME_FUNC_OFFSET( 4890, glGetMinmaxParameterfv, glGetMinmaxParameterfv, NULL, 365), + NAME_FUNC_OFFSET( 4913, glGetMinmaxParameteriv, glGetMinmaxParameteriv, NULL, 366), + NAME_FUNC_OFFSET( 4936, glHistogram, glHistogram, NULL, 367), + NAME_FUNC_OFFSET( 4948, glMinmax, glMinmax, NULL, 368), + NAME_FUNC_OFFSET( 4957, glResetHistogram, glResetHistogram, NULL, 369), + NAME_FUNC_OFFSET( 4974, glResetMinmax, glResetMinmax, NULL, 370), + NAME_FUNC_OFFSET( 4988, glTexImage3D, glTexImage3D, NULL, 371), + NAME_FUNC_OFFSET( 5001, glTexSubImage3D, glTexSubImage3D, NULL, 372), + NAME_FUNC_OFFSET( 5017, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373), + NAME_FUNC_OFFSET( 5037, glActiveTextureARB, glActiveTextureARB, NULL, 374), + NAME_FUNC_OFFSET( 5056, glClientActiveTextureARB, glClientActiveTextureARB, NULL, 375), + NAME_FUNC_OFFSET( 5081, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, 376), + NAME_FUNC_OFFSET( 5102, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, 377), + NAME_FUNC_OFFSET( 5124, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, 378), + NAME_FUNC_OFFSET( 5145, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, 379), + NAME_FUNC_OFFSET( 5167, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, 380), + NAME_FUNC_OFFSET( 5188, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, 381), + NAME_FUNC_OFFSET( 5210, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, 382), + NAME_FUNC_OFFSET( 5231, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, 383), + NAME_FUNC_OFFSET( 5253, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, 384), + NAME_FUNC_OFFSET( 5274, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, 385), + NAME_FUNC_OFFSET( 5296, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, 386), + NAME_FUNC_OFFSET( 5317, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, 387), + NAME_FUNC_OFFSET( 5339, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, 388), + NAME_FUNC_OFFSET( 5360, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, 389), + NAME_FUNC_OFFSET( 5382, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, 390), + NAME_FUNC_OFFSET( 5403, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, 391), + NAME_FUNC_OFFSET( 5425, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, 392), + NAME_FUNC_OFFSET( 5446, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, 393), + NAME_FUNC_OFFSET( 5468, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, 394), + NAME_FUNC_OFFSET( 5489, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, 395), + NAME_FUNC_OFFSET( 5511, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, 396), + NAME_FUNC_OFFSET( 5532, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, 397), + NAME_FUNC_OFFSET( 5554, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, 398), + NAME_FUNC_OFFSET( 5575, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, 399), + NAME_FUNC_OFFSET( 5597, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, 400), + NAME_FUNC_OFFSET( 5618, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, 401), + NAME_FUNC_OFFSET( 5640, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, 402), + NAME_FUNC_OFFSET( 5661, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, 403), + NAME_FUNC_OFFSET( 5683, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, 404), + NAME_FUNC_OFFSET( 5704, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, 405), + NAME_FUNC_OFFSET( 5726, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, 406), + NAME_FUNC_OFFSET( 5747, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, 407), + NAME_FUNC_OFFSET( 5769, glAttachShader, glAttachShader, NULL, 408), + NAME_FUNC_OFFSET( 5784, glCreateProgram, glCreateProgram, NULL, 409), + NAME_FUNC_OFFSET( 5800, glCreateShader, glCreateShader, NULL, 410), + NAME_FUNC_OFFSET( 5815, glDeleteProgram, glDeleteProgram, NULL, 411), + NAME_FUNC_OFFSET( 5831, glDeleteShader, glDeleteShader, NULL, 412), + NAME_FUNC_OFFSET( 5846, glDetachShader, glDetachShader, NULL, 413), + NAME_FUNC_OFFSET( 5861, glGetAttachedShaders, glGetAttachedShaders, NULL, 414), + NAME_FUNC_OFFSET( 5882, glGetProgramInfoLog, glGetProgramInfoLog, NULL, 415), + NAME_FUNC_OFFSET( 5902, glGetProgramiv, glGetProgramiv, NULL, 416), + NAME_FUNC_OFFSET( 5917, glGetShaderInfoLog, glGetShaderInfoLog, NULL, 417), + NAME_FUNC_OFFSET( 5936, glGetShaderiv, glGetShaderiv, NULL, 418), + NAME_FUNC_OFFSET( 5950, glIsProgram, glIsProgram, NULL, 419), + NAME_FUNC_OFFSET( 5962, glIsShader, glIsShader, NULL, 420), + NAME_FUNC_OFFSET( 5973, glStencilFuncSeparate, glStencilFuncSeparate, NULL, 421), + NAME_FUNC_OFFSET( 5995, glStencilMaskSeparate, glStencilMaskSeparate, NULL, 422), + NAME_FUNC_OFFSET( 6017, glStencilOpSeparate, glStencilOpSeparate, NULL, 423), + NAME_FUNC_OFFSET( 6037, glUniformMatrix2x3fv, glUniformMatrix2x3fv, NULL, 424), + NAME_FUNC_OFFSET( 6058, glUniformMatrix2x4fv, glUniformMatrix2x4fv, NULL, 425), + NAME_FUNC_OFFSET( 6079, glUniformMatrix3x2fv, glUniformMatrix3x2fv, NULL, 426), + NAME_FUNC_OFFSET( 6100, glUniformMatrix3x4fv, glUniformMatrix3x4fv, NULL, 427), + NAME_FUNC_OFFSET( 6121, glUniformMatrix4x2fv, glUniformMatrix4x2fv, NULL, 428), + NAME_FUNC_OFFSET( 6142, glUniformMatrix4x3fv, glUniformMatrix4x3fv, NULL, 429), + NAME_FUNC_OFFSET( 6163, glClampColor, glClampColor, NULL, 430), + NAME_FUNC_OFFSET( 6176, glClearBufferfi, glClearBufferfi, NULL, 431), + NAME_FUNC_OFFSET( 6192, glClearBufferfv, glClearBufferfv, NULL, 432), + NAME_FUNC_OFFSET( 6208, glClearBufferiv, glClearBufferiv, NULL, 433), + NAME_FUNC_OFFSET( 6224, glClearBufferuiv, glClearBufferuiv, NULL, 434), + NAME_FUNC_OFFSET( 6241, glGetStringi, glGetStringi, NULL, 435), + NAME_FUNC_OFFSET( 6254, glTexBuffer, glTexBuffer, NULL, 436), + NAME_FUNC_OFFSET( 6266, glFramebufferTexture, glFramebufferTexture, NULL, 437), + NAME_FUNC_OFFSET( 6287, glGetBufferParameteri64v, glGetBufferParameteri64v, NULL, 438), + NAME_FUNC_OFFSET( 6312, glGetInteger64i_v, glGetInteger64i_v, NULL, 439), + NAME_FUNC_OFFSET( 6330, glVertexAttribDivisor, glVertexAttribDivisor, NULL, 440), + NAME_FUNC_OFFSET( 6352, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, 441), + NAME_FUNC_OFFSET( 6378, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, 442), + NAME_FUNC_OFFSET( 6404, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, 443), + NAME_FUNC_OFFSET( 6430, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, 444), + NAME_FUNC_OFFSET( 6456, glSampleCoverageARB, glSampleCoverageARB, NULL, 445), + NAME_FUNC_OFFSET( 6476, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, 446), + NAME_FUNC_OFFSET( 6502, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, 447), + NAME_FUNC_OFFSET( 6528, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, 448), + NAME_FUNC_OFFSET( 6554, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, 449), + NAME_FUNC_OFFSET( 6583, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, 450), + NAME_FUNC_OFFSET( 6612, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, 451), + NAME_FUNC_OFFSET( 6641, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, 452), + NAME_FUNC_OFFSET( 6668, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, 453), + NAME_FUNC_OFFSET( 6698, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, 454), + NAME_FUNC_OFFSET( 6727, glGetProgramEnvParameterdvARB, glGetProgramEnvParameterdvARB, NULL, 455), + NAME_FUNC_OFFSET( 6757, glGetProgramEnvParameterfvARB, glGetProgramEnvParameterfvARB, NULL, 456), + NAME_FUNC_OFFSET( 6787, glGetProgramLocalParameterdvARB, glGetProgramLocalParameterdvARB, NULL, 457), + NAME_FUNC_OFFSET( 6819, glGetProgramLocalParameterfvARB, glGetProgramLocalParameterfvARB, NULL, 458), + NAME_FUNC_OFFSET( 6851, glGetProgramStringARB, glGetProgramStringARB, NULL, 459), + NAME_FUNC_OFFSET( 6873, glGetProgramivARB, glGetProgramivARB, NULL, 460), + NAME_FUNC_OFFSET( 6891, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, 461), + NAME_FUNC_OFFSET( 6914, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, 462), + NAME_FUNC_OFFSET( 6937, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, 463), + NAME_FUNC_OFFSET( 6960, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, 464), + NAME_FUNC_OFFSET( 6987, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, 465), + NAME_FUNC_OFFSET( 7015, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, 466), + NAME_FUNC_OFFSET( 7042, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, 467), + NAME_FUNC_OFFSET( 7070, glProgramLocalParameter4dARB, glProgramLocalParameter4dARB, NULL, 468), + NAME_FUNC_OFFSET( 7099, glProgramLocalParameter4dvARB, glProgramLocalParameter4dvARB, NULL, 469), + NAME_FUNC_OFFSET( 7129, glProgramLocalParameter4fARB, glProgramLocalParameter4fARB, NULL, 470), + NAME_FUNC_OFFSET( 7158, glProgramLocalParameter4fvARB, glProgramLocalParameter4fvARB, NULL, 471), + NAME_FUNC_OFFSET( 7188, glProgramStringARB, glProgramStringARB, NULL, 472), + NAME_FUNC_OFFSET( 7207, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, 473), + NAME_FUNC_OFFSET( 7227, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, 474), + NAME_FUNC_OFFSET( 7248, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 475), + NAME_FUNC_OFFSET( 7268, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, 476), + NAME_FUNC_OFFSET( 7289, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, 477), + NAME_FUNC_OFFSET( 7309, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, 478), + NAME_FUNC_OFFSET( 7330, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, 479), + NAME_FUNC_OFFSET( 7350, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, 480), + NAME_FUNC_OFFSET( 7371, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 481), + NAME_FUNC_OFFSET( 7391, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, 482), + NAME_FUNC_OFFSET( 7412, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, 483), + NAME_FUNC_OFFSET( 7432, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, 484), + NAME_FUNC_OFFSET( 7453, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, 485), + NAME_FUNC_OFFSET( 7473, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, 486), + NAME_FUNC_OFFSET( 7494, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 487), + NAME_FUNC_OFFSET( 7514, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, 488), + NAME_FUNC_OFFSET( 7535, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, 489), + NAME_FUNC_OFFSET( 7555, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, 490), + NAME_FUNC_OFFSET( 7576, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, 491), + NAME_FUNC_OFFSET( 7598, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, 492), + NAME_FUNC_OFFSET( 7620, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, 493), + NAME_FUNC_OFFSET( 7642, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, 494), + NAME_FUNC_OFFSET( 7664, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, 495), + NAME_FUNC_OFFSET( 7687, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, 496), + NAME_FUNC_OFFSET( 7710, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, 497), + NAME_FUNC_OFFSET( 7733, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, 498), + NAME_FUNC_OFFSET( 7754, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, 499), + NAME_FUNC_OFFSET( 7774, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, 500), + NAME_FUNC_OFFSET( 7795, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 501), + NAME_FUNC_OFFSET( 7815, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, 502), + NAME_FUNC_OFFSET( 7836, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, 503), + NAME_FUNC_OFFSET( 7857, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, 504), + NAME_FUNC_OFFSET( 7877, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, 505), + NAME_FUNC_OFFSET( 7898, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, 506), + NAME_FUNC_OFFSET( 7920, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, 507), + NAME_FUNC_OFFSET( 7942, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, 508), + NAME_FUNC_OFFSET( 7964, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, 509), + NAME_FUNC_OFFSET( 7989, glBindBufferARB, glBindBufferARB, NULL, 510), + NAME_FUNC_OFFSET( 8005, glBufferDataARB, glBufferDataARB, NULL, 511), + NAME_FUNC_OFFSET( 8021, glBufferSubDataARB, glBufferSubDataARB, NULL, 512), + NAME_FUNC_OFFSET( 8040, glDeleteBuffersARB, glDeleteBuffersARB, NULL, 513), + NAME_FUNC_OFFSET( 8059, glGenBuffersARB, glGenBuffersARB, NULL, 514), + NAME_FUNC_OFFSET( 8075, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, 515), + NAME_FUNC_OFFSET( 8101, glGetBufferPointervARB, glGetBufferPointervARB, NULL, 516), + NAME_FUNC_OFFSET( 8124, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, 517), + NAME_FUNC_OFFSET( 8146, glIsBufferARB, glIsBufferARB, NULL, 518), + NAME_FUNC_OFFSET( 8160, glMapBufferARB, glMapBufferARB, NULL, 519), + NAME_FUNC_OFFSET( 8175, glUnmapBufferARB, glUnmapBufferARB, NULL, 520), + NAME_FUNC_OFFSET( 8192, glBeginQueryARB, glBeginQueryARB, NULL, 521), + NAME_FUNC_OFFSET( 8208, glDeleteQueriesARB, glDeleteQueriesARB, NULL, 522), + NAME_FUNC_OFFSET( 8227, glEndQueryARB, glEndQueryARB, NULL, 523), + NAME_FUNC_OFFSET( 8241, glGenQueriesARB, glGenQueriesARB, NULL, 524), + NAME_FUNC_OFFSET( 8257, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, 525), + NAME_FUNC_OFFSET( 8279, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, 526), + NAME_FUNC_OFFSET( 8302, glGetQueryivARB, glGetQueryivARB, NULL, 527), + NAME_FUNC_OFFSET( 8318, glIsQueryARB, glIsQueryARB, NULL, 528), + NAME_FUNC_OFFSET( 8331, glAttachObjectARB, glAttachObjectARB, NULL, 529), + NAME_FUNC_OFFSET( 8349, glCompileShaderARB, glCompileShaderARB, NULL, 530), + NAME_FUNC_OFFSET( 8368, glCreateProgramObjectARB, glCreateProgramObjectARB, NULL, 531), + NAME_FUNC_OFFSET( 8393, glCreateShaderObjectARB, glCreateShaderObjectARB, NULL, 532), + NAME_FUNC_OFFSET( 8417, glDeleteObjectARB, glDeleteObjectARB, NULL, 533), + NAME_FUNC_OFFSET( 8435, glDetachObjectARB, glDetachObjectARB, NULL, 534), + NAME_FUNC_OFFSET( 8453, glGetActiveUniformARB, glGetActiveUniformARB, NULL, 535), + NAME_FUNC_OFFSET( 8475, glGetAttachedObjectsARB, glGetAttachedObjectsARB, NULL, 536), + NAME_FUNC_OFFSET( 8499, glGetHandleARB, glGetHandleARB, NULL, 537), + NAME_FUNC_OFFSET( 8514, glGetInfoLogARB, glGetInfoLogARB, NULL, 538), + NAME_FUNC_OFFSET( 8530, glGetObjectParameterfvARB, glGetObjectParameterfvARB, NULL, 539), + NAME_FUNC_OFFSET( 8556, glGetObjectParameterivARB, glGetObjectParameterivARB, NULL, 540), + NAME_FUNC_OFFSET( 8582, glGetShaderSourceARB, glGetShaderSourceARB, NULL, 541), + NAME_FUNC_OFFSET( 8603, glGetUniformLocationARB, glGetUniformLocationARB, NULL, 542), + NAME_FUNC_OFFSET( 8627, glGetUniformfvARB, glGetUniformfvARB, NULL, 543), + NAME_FUNC_OFFSET( 8645, glGetUniformivARB, glGetUniformivARB, NULL, 544), + NAME_FUNC_OFFSET( 8663, glLinkProgramARB, glLinkProgramARB, NULL, 545), + NAME_FUNC_OFFSET( 8680, glShaderSourceARB, glShaderSourceARB, NULL, 546), + NAME_FUNC_OFFSET( 8698, glUniform1fARB, glUniform1fARB, NULL, 547), + NAME_FUNC_OFFSET( 8713, glUniform1fvARB, glUniform1fvARB, NULL, 548), + NAME_FUNC_OFFSET( 8729, glUniform1iARB, glUniform1iARB, NULL, 549), + NAME_FUNC_OFFSET( 8744, glUniform1ivARB, glUniform1ivARB, NULL, 550), + NAME_FUNC_OFFSET( 8760, glUniform2fARB, glUniform2fARB, NULL, 551), + NAME_FUNC_OFFSET( 8775, glUniform2fvARB, glUniform2fvARB, NULL, 552), + NAME_FUNC_OFFSET( 8791, glUniform2iARB, glUniform2iARB, NULL, 553), + NAME_FUNC_OFFSET( 8806, glUniform2ivARB, glUniform2ivARB, NULL, 554), + NAME_FUNC_OFFSET( 8822, glUniform3fARB, glUniform3fARB, NULL, 555), + NAME_FUNC_OFFSET( 8837, glUniform3fvARB, glUniform3fvARB, NULL, 556), + NAME_FUNC_OFFSET( 8853, glUniform3iARB, glUniform3iARB, NULL, 557), + NAME_FUNC_OFFSET( 8868, glUniform3ivARB, glUniform3ivARB, NULL, 558), + NAME_FUNC_OFFSET( 8884, glUniform4fARB, glUniform4fARB, NULL, 559), + NAME_FUNC_OFFSET( 8899, glUniform4fvARB, glUniform4fvARB, NULL, 560), + NAME_FUNC_OFFSET( 8915, glUniform4iARB, glUniform4iARB, NULL, 561), + NAME_FUNC_OFFSET( 8930, glUniform4ivARB, glUniform4ivARB, NULL, 562), + NAME_FUNC_OFFSET( 8946, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, 563), + NAME_FUNC_OFFSET( 8968, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, 564), + NAME_FUNC_OFFSET( 8990, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, 565), + NAME_FUNC_OFFSET( 9012, glUseProgramObjectARB, glUseProgramObjectARB, NULL, 566), + NAME_FUNC_OFFSET( 9034, glValidateProgramARB, glValidateProgramARB, NULL, 567), + NAME_FUNC_OFFSET( 9055, glBindAttribLocationARB, glBindAttribLocationARB, NULL, 568), + NAME_FUNC_OFFSET( 9079, glGetActiveAttribARB, glGetActiveAttribARB, NULL, 569), + NAME_FUNC_OFFSET( 9100, glGetAttribLocationARB, glGetAttribLocationARB, NULL, 570), + NAME_FUNC_OFFSET( 9123, glDrawBuffersARB, glDrawBuffersARB, NULL, 571), + NAME_FUNC_OFFSET( 9140, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 572), + NAME_FUNC_OFFSET( 9165, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 573), + NAME_FUNC_OFFSET( 9192, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 574), + NAME_FUNC_OFFSET( 9225, glFramebufferTextureARB, glFramebufferTextureARB, NULL, 575), + NAME_FUNC_OFFSET( 9249, glFramebufferTextureFaceARB, glFramebufferTextureFaceARB, NULL, 576), + NAME_FUNC_OFFSET( 9277, glProgramParameteriARB, glProgramParameteriARB, NULL, 577), + NAME_FUNC_OFFSET( 9300, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, 578), + NAME_FUNC_OFFSET( 9325, glMapBufferRange, glMapBufferRange, NULL, 579), + NAME_FUNC_OFFSET( 9342, glBindVertexArray, glBindVertexArray, NULL, 580), + NAME_FUNC_OFFSET( 9360, glGenVertexArrays, glGenVertexArrays, NULL, 581), + NAME_FUNC_OFFSET( 9378, glCopyBufferSubData, glCopyBufferSubData, NULL, 582), + NAME_FUNC_OFFSET( 9398, glClientWaitSync, glClientWaitSync, NULL, 583), + NAME_FUNC_OFFSET( 9415, glDeleteSync, glDeleteSync, NULL, 584), + NAME_FUNC_OFFSET( 9428, glFenceSync, glFenceSync, NULL, 585), + NAME_FUNC_OFFSET( 9440, glGetInteger64v, glGetInteger64v, NULL, 586), + NAME_FUNC_OFFSET( 9456, glGetSynciv, glGetSynciv, NULL, 587), + NAME_FUNC_OFFSET( 9468, glIsSync, glIsSync, NULL, 588), + NAME_FUNC_OFFSET( 9477, glWaitSync, glWaitSync, NULL, 589), + NAME_FUNC_OFFSET( 9488, glDrawElementsBaseVertex, glDrawElementsBaseVertex, NULL, 590), + NAME_FUNC_OFFSET( 9513, glDrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, NULL, 591), + NAME_FUNC_OFFSET( 9543, glMultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, NULL, 592), + NAME_FUNC_OFFSET( 9573, glBindTransformFeedback, glBindTransformFeedback, NULL, 593), + NAME_FUNC_OFFSET( 9597, glDeleteTransformFeedbacks, glDeleteTransformFeedbacks, NULL, 594), + NAME_FUNC_OFFSET( 9624, glDrawTransformFeedback, glDrawTransformFeedback, NULL, 595), + NAME_FUNC_OFFSET( 9648, glGenTransformFeedbacks, glGenTransformFeedbacks, NULL, 596), + NAME_FUNC_OFFSET( 9672, glIsTransformFeedback, glIsTransformFeedback, NULL, 597), + NAME_FUNC_OFFSET( 9694, glPauseTransformFeedback, glPauseTransformFeedback, NULL, 598), + NAME_FUNC_OFFSET( 9719, glResumeTransformFeedback, glResumeTransformFeedback, NULL, 599), + NAME_FUNC_OFFSET( 9745, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, 600), + NAME_FUNC_OFFSET( 9764, gl_dispatch_stub_601, gl_dispatch_stub_601, NULL, 601), + NAME_FUNC_OFFSET( 9796, gl_dispatch_stub_602, gl_dispatch_stub_602, NULL, 602), + NAME_FUNC_OFFSET( 9828, gl_dispatch_stub_603, gl_dispatch_stub_603, NULL, 603), + NAME_FUNC_OFFSET( 9856, gl_dispatch_stub_604, gl_dispatch_stub_604, NULL, 604), + NAME_FUNC_OFFSET( 9885, gl_dispatch_stub_605, gl_dispatch_stub_605, NULL, 605), + NAME_FUNC_OFFSET( 9913, gl_dispatch_stub_606, gl_dispatch_stub_606, NULL, 606), + NAME_FUNC_OFFSET( 9942, gl_dispatch_stub_607, gl_dispatch_stub_607, NULL, 607), + NAME_FUNC_OFFSET( 9959, gl_dispatch_stub_608, gl_dispatch_stub_608, NULL, 608), + NAME_FUNC_OFFSET( 9979, glColorPointerEXT, glColorPointerEXT, NULL, 609), + NAME_FUNC_OFFSET( 9997, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, 610), + NAME_FUNC_OFFSET(10018, glIndexPointerEXT, glIndexPointerEXT, NULL, 611), + NAME_FUNC_OFFSET(10036, glNormalPointerEXT, glNormalPointerEXT, NULL, 612), + NAME_FUNC_OFFSET(10055, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, 613), + NAME_FUNC_OFFSET(10076, glVertexPointerEXT, glVertexPointerEXT, NULL, 614), + NAME_FUNC_OFFSET(10095, glPointParameterfEXT, glPointParameterfEXT, NULL, 615), + NAME_FUNC_OFFSET(10116, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 616), + NAME_FUNC_OFFSET(10138, glLockArraysEXT, glLockArraysEXT, NULL, 617), + NAME_FUNC_OFFSET(10154, glUnlockArraysEXT, glUnlockArraysEXT, NULL, 618), + NAME_FUNC_OFFSET(10172, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, 619), + NAME_FUNC_OFFSET(10194, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, 620), + NAME_FUNC_OFFSET(10217, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, 621), + NAME_FUNC_OFFSET(10239, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, 622), + NAME_FUNC_OFFSET(10262, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 623), + NAME_FUNC_OFFSET(10284, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 624), + NAME_FUNC_OFFSET(10307, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, 625), + NAME_FUNC_OFFSET(10329, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, 626), + NAME_FUNC_OFFSET(10352, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, 627), + NAME_FUNC_OFFSET(10374, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, 628), + NAME_FUNC_OFFSET(10397, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, 629), + NAME_FUNC_OFFSET(10420, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, 630), + NAME_FUNC_OFFSET(10444, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, 631), + NAME_FUNC_OFFSET(10467, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, 632), + NAME_FUNC_OFFSET(10491, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, 633), + NAME_FUNC_OFFSET(10514, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, 634), + NAME_FUNC_OFFSET(10538, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, 635), + NAME_FUNC_OFFSET(10565, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, 636), + NAME_FUNC_OFFSET(10586, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 637), + NAME_FUNC_OFFSET(10609, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, 638), + NAME_FUNC_OFFSET(10630, glFogCoorddEXT, glFogCoorddEXT, NULL, 639), + NAME_FUNC_OFFSET(10645, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 640), + NAME_FUNC_OFFSET(10661, glFogCoordfEXT, glFogCoordfEXT, NULL, 641), + NAME_FUNC_OFFSET(10676, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 642), + NAME_FUNC_OFFSET(10692, gl_dispatch_stub_643, gl_dispatch_stub_643, NULL, 643), + NAME_FUNC_OFFSET(10710, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 644), + NAME_FUNC_OFFSET(10733, glFlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, NULL, 645), + NAME_FUNC_OFFSET(10759, glVertexArrayRangeNV, glVertexArrayRangeNV, NULL, 646), + NAME_FUNC_OFFSET(10780, glCombinerInputNV, glCombinerInputNV, NULL, 647), + NAME_FUNC_OFFSET(10798, glCombinerOutputNV, glCombinerOutputNV, NULL, 648), + NAME_FUNC_OFFSET(10817, glCombinerParameterfNV, glCombinerParameterfNV, NULL, 649), + NAME_FUNC_OFFSET(10840, glCombinerParameterfvNV, glCombinerParameterfvNV, NULL, 650), + NAME_FUNC_OFFSET(10864, glCombinerParameteriNV, glCombinerParameteriNV, NULL, 651), + NAME_FUNC_OFFSET(10887, glCombinerParameterivNV, glCombinerParameterivNV, NULL, 652), + NAME_FUNC_OFFSET(10911, glFinalCombinerInputNV, glFinalCombinerInputNV, NULL, 653), + NAME_FUNC_OFFSET(10934, glGetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, NULL, 654), + NAME_FUNC_OFFSET(10966, glGetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, NULL, 655), + NAME_FUNC_OFFSET(10998, glGetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, NULL, 656), + NAME_FUNC_OFFSET(11031, glGetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, NULL, 657), + NAME_FUNC_OFFSET(11064, glGetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, NULL, 658), + NAME_FUNC_OFFSET(11101, glGetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, NULL, 659), + NAME_FUNC_OFFSET(11138, glResizeBuffersMESA, glResizeBuffersMESA, NULL, 660), + NAME_FUNC_OFFSET(11158, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 661), + NAME_FUNC_OFFSET(11176, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 662), + NAME_FUNC_OFFSET(11195, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 663), + NAME_FUNC_OFFSET(11213, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 664), + NAME_FUNC_OFFSET(11232, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 665), + NAME_FUNC_OFFSET(11250, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 666), + NAME_FUNC_OFFSET(11269, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 667), + NAME_FUNC_OFFSET(11287, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 668), + NAME_FUNC_OFFSET(11306, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 669), + NAME_FUNC_OFFSET(11324, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 670), + NAME_FUNC_OFFSET(11343, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 671), + NAME_FUNC_OFFSET(11361, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 672), + NAME_FUNC_OFFSET(11380, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 673), + NAME_FUNC_OFFSET(11398, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 674), + NAME_FUNC_OFFSET(11417, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 675), + NAME_FUNC_OFFSET(11435, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 676), + NAME_FUNC_OFFSET(11454, glWindowPos4dMESA, glWindowPos4dMESA, NULL, 677), + NAME_FUNC_OFFSET(11472, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, 678), + NAME_FUNC_OFFSET(11491, glWindowPos4fMESA, glWindowPos4fMESA, NULL, 679), + NAME_FUNC_OFFSET(11509, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, 680), + NAME_FUNC_OFFSET(11528, glWindowPos4iMESA, glWindowPos4iMESA, NULL, 681), + NAME_FUNC_OFFSET(11546, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, 682), + NAME_FUNC_OFFSET(11565, glWindowPos4sMESA, glWindowPos4sMESA, NULL, 683), + NAME_FUNC_OFFSET(11583, glWindowPos4svMESA, glWindowPos4svMESA, NULL, 684), + NAME_FUNC_OFFSET(11602, gl_dispatch_stub_685, gl_dispatch_stub_685, NULL, 685), + NAME_FUNC_OFFSET(11627, gl_dispatch_stub_686, gl_dispatch_stub_686, NULL, 686), + NAME_FUNC_OFFSET(11654, gl_dispatch_stub_687, gl_dispatch_stub_687, NULL, 687), + NAME_FUNC_OFFSET(11671, gl_dispatch_stub_688, gl_dispatch_stub_688, NULL, 688), + NAME_FUNC_OFFSET(11687, gl_dispatch_stub_689, gl_dispatch_stub_689, NULL, 689), + NAME_FUNC_OFFSET(11701, gl_dispatch_stub_690, gl_dispatch_stub_690, NULL, 690), + NAME_FUNC_OFFSET(11716, gl_dispatch_stub_691, gl_dispatch_stub_691, NULL, 691), + NAME_FUNC_OFFSET(11728, gl_dispatch_stub_692, gl_dispatch_stub_692, NULL, 692), + NAME_FUNC_OFFSET(11741, gl_dispatch_stub_693, gl_dispatch_stub_693, NULL, 693), + NAME_FUNC_OFFSET(11755, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, 694), + NAME_FUNC_OFFSET(11779, glBindProgramNV, glBindProgramNV, NULL, 695), + NAME_FUNC_OFFSET(11795, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 696), + NAME_FUNC_OFFSET(11814, glExecuteProgramNV, glExecuteProgramNV, NULL, 697), + NAME_FUNC_OFFSET(11833, glGenProgramsNV, glGenProgramsNV, NULL, 698), + NAME_FUNC_OFFSET(11849, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, 699), + NAME_FUNC_OFFSET(11875, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, 700), + NAME_FUNC_OFFSET(11901, glGetProgramStringNV, glGetProgramStringNV, NULL, 701), + NAME_FUNC_OFFSET(11922, glGetProgramivNV, glGetProgramivNV, NULL, 702), + NAME_FUNC_OFFSET(11939, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, 703), + NAME_FUNC_OFFSET(11960, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 704), + NAME_FUNC_OFFSET(11988, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, 705), + NAME_FUNC_OFFSET(12010, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, 706), + NAME_FUNC_OFFSET(12032, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, 707), + NAME_FUNC_OFFSET(12054, glIsProgramNV, glIsProgramNV, NULL, 708), + NAME_FUNC_OFFSET(12068, glLoadProgramNV, glLoadProgramNV, NULL, 709), + NAME_FUNC_OFFSET(12084, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, 710), + NAME_FUNC_OFFSET(12109, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, 711), + NAME_FUNC_OFFSET(12134, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, 712), + NAME_FUNC_OFFSET(12162, glTrackMatrixNV, glTrackMatrixNV, NULL, 713), + NAME_FUNC_OFFSET(12178, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, 714), + NAME_FUNC_OFFSET(12197, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, 715), + NAME_FUNC_OFFSET(12217, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, 716), + NAME_FUNC_OFFSET(12236, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, 717), + NAME_FUNC_OFFSET(12256, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, 718), + NAME_FUNC_OFFSET(12275, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, 719), + NAME_FUNC_OFFSET(12295, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, 720), + NAME_FUNC_OFFSET(12314, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, 721), + NAME_FUNC_OFFSET(12334, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, 722), + NAME_FUNC_OFFSET(12353, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, 723), + NAME_FUNC_OFFSET(12373, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, 724), + NAME_FUNC_OFFSET(12392, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, 725), + NAME_FUNC_OFFSET(12412, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, 726), + NAME_FUNC_OFFSET(12431, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, 727), + NAME_FUNC_OFFSET(12451, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, 728), + NAME_FUNC_OFFSET(12470, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, 729), + NAME_FUNC_OFFSET(12490, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, 730), + NAME_FUNC_OFFSET(12509, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, 731), + NAME_FUNC_OFFSET(12529, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, 732), + NAME_FUNC_OFFSET(12548, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, 733), + NAME_FUNC_OFFSET(12568, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, 734), + NAME_FUNC_OFFSET(12587, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, 735), + NAME_FUNC_OFFSET(12607, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, 736), + NAME_FUNC_OFFSET(12626, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, 737), + NAME_FUNC_OFFSET(12646, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, 738), + NAME_FUNC_OFFSET(12666, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, 739), + NAME_FUNC_OFFSET(12687, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, 740), + NAME_FUNC_OFFSET(12711, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, 741), + NAME_FUNC_OFFSET(12732, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, 742), + NAME_FUNC_OFFSET(12753, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, 743), + NAME_FUNC_OFFSET(12774, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, 744), + NAME_FUNC_OFFSET(12795, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, 745), + NAME_FUNC_OFFSET(12816, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, 746), + NAME_FUNC_OFFSET(12837, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, 747), + NAME_FUNC_OFFSET(12858, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, 748), + NAME_FUNC_OFFSET(12879, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, 749), + NAME_FUNC_OFFSET(12900, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, 750), + NAME_FUNC_OFFSET(12921, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, 751), + NAME_FUNC_OFFSET(12942, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, 752), + NAME_FUNC_OFFSET(12963, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, 753), + NAME_FUNC_OFFSET(12985, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, 754), + NAME_FUNC_OFFSET(13012, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, 755), + NAME_FUNC_OFFSET(13039, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, 756), + NAME_FUNC_OFFSET(13063, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, 757), + NAME_FUNC_OFFSET(13087, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, 758), + NAME_FUNC_OFFSET(13109, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, 759), + NAME_FUNC_OFFSET(13131, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, 760), + NAME_FUNC_OFFSET(13153, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, 761), + NAME_FUNC_OFFSET(13178, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, 762), + NAME_FUNC_OFFSET(13202, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, 763), + NAME_FUNC_OFFSET(13224, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, 764), + NAME_FUNC_OFFSET(13246, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, 765), + NAME_FUNC_OFFSET(13268, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, 766), + NAME_FUNC_OFFSET(13294, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, 767), + NAME_FUNC_OFFSET(13317, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, 768), + NAME_FUNC_OFFSET(13341, glPassTexCoordATI, glPassTexCoordATI, NULL, 769), + NAME_FUNC_OFFSET(13359, glSampleMapATI, glSampleMapATI, NULL, 770), + NAME_FUNC_OFFSET(13374, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, 771), + NAME_FUNC_OFFSET(13405, glPointParameteriNV, glPointParameteriNV, NULL, 772), + NAME_FUNC_OFFSET(13425, glPointParameterivNV, glPointParameterivNV, NULL, 773), + NAME_FUNC_OFFSET(13446, gl_dispatch_stub_774, gl_dispatch_stub_774, NULL, 774), + NAME_FUNC_OFFSET(13469, gl_dispatch_stub_775, gl_dispatch_stub_775, NULL, 775), + NAME_FUNC_OFFSET(13492, gl_dispatch_stub_776, gl_dispatch_stub_776, NULL, 776), + NAME_FUNC_OFFSET(13518, gl_dispatch_stub_777, gl_dispatch_stub_777, NULL, 777), + NAME_FUNC_OFFSET(13541, gl_dispatch_stub_778, gl_dispatch_stub_778, NULL, 778), + NAME_FUNC_OFFSET(13562, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, 779), + NAME_FUNC_OFFSET(13593, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, 780), + NAME_FUNC_OFFSET(13624, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, 781), + NAME_FUNC_OFFSET(13652, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, 782), + NAME_FUNC_OFFSET(13681, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, 783), + NAME_FUNC_OFFSET(13709, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, 784), + NAME_FUNC_OFFSET(13738, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, 785), + NAME_FUNC_OFFSET(13764, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL, 786), + NAME_FUNC_OFFSET(13785, gl_dispatch_stub_787, gl_dispatch_stub_787, NULL, 787), + NAME_FUNC_OFFSET(13802, gl_dispatch_stub_788, gl_dispatch_stub_788, NULL, 788), + NAME_FUNC_OFFSET(13829, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 789), + NAME_FUNC_OFFSET(13850, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 790), + NAME_FUNC_OFFSET(13872, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, 791), + NAME_FUNC_OFFSET(13900, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, 792), + NAME_FUNC_OFFSET(13924, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, 793), + NAME_FUNC_OFFSET(13949, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, 794), + NAME_FUNC_OFFSET(13978, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, 795), + NAME_FUNC_OFFSET(14004, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, 796), + NAME_FUNC_OFFSET(14030, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, 797), + NAME_FUNC_OFFSET(14056, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, 798), + NAME_FUNC_OFFSET(14077, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, 799), + NAME_FUNC_OFFSET(14099, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, 800), + NAME_FUNC_OFFSET(14119, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, 801), + NAME_FUNC_OFFSET(14160, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, 802), + NAME_FUNC_OFFSET(14192, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 803), + NAME_FUNC_OFFSET(14211, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, 804), + NAME_FUNC_OFFSET(14231, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, 805), + NAME_FUNC_OFFSET(14256, gl_dispatch_stub_806, gl_dispatch_stub_806, NULL, 806), + NAME_FUNC_OFFSET(14277, gl_dispatch_stub_807, gl_dispatch_stub_807, NULL, 807), + NAME_FUNC_OFFSET(14301, gl_dispatch_stub_808, gl_dispatch_stub_808, NULL, 808), + NAME_FUNC_OFFSET(14331, glBindFragDataLocationEXT, glBindFragDataLocationEXT, NULL, 809), + NAME_FUNC_OFFSET(14357, glGetFragDataLocationEXT, glGetFragDataLocationEXT, NULL, 810), + NAME_FUNC_OFFSET(14382, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 811), + NAME_FUNC_OFFSET(14401, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT, NULL, 812), + NAME_FUNC_OFFSET(14425, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, NULL, 813), + NAME_FUNC_OFFSET(14450, glUniform1uiEXT, glUniform1uiEXT, NULL, 814), + NAME_FUNC_OFFSET(14466, glUniform1uivEXT, glUniform1uivEXT, NULL, 815), + NAME_FUNC_OFFSET(14483, glUniform2uiEXT, glUniform2uiEXT, NULL, 816), + NAME_FUNC_OFFSET(14499, glUniform2uivEXT, glUniform2uivEXT, NULL, 817), + NAME_FUNC_OFFSET(14516, glUniform3uiEXT, glUniform3uiEXT, NULL, 818), + NAME_FUNC_OFFSET(14532, glUniform3uivEXT, glUniform3uivEXT, NULL, 819), + NAME_FUNC_OFFSET(14549, glUniform4uiEXT, glUniform4uiEXT, NULL, 820), + NAME_FUNC_OFFSET(14565, glUniform4uivEXT, glUniform4uivEXT, NULL, 821), + NAME_FUNC_OFFSET(14582, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 822), + NAME_FUNC_OFFSET(14603, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL, 823), + NAME_FUNC_OFFSET(14625, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 824), + NAME_FUNC_OFFSET(14647, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT, NULL, 825), + NAME_FUNC_OFFSET(14670, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 826), + NAME_FUNC_OFFSET(14691, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 827), + NAME_FUNC_OFFSET(14713, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 828), + NAME_FUNC_OFFSET(14735, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 829), + NAME_FUNC_OFFSET(14758, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 830), + NAME_FUNC_OFFSET(14779, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 831), + NAME_FUNC_OFFSET(14801, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 832), + NAME_FUNC_OFFSET(14823, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 833), + NAME_FUNC_OFFSET(14846, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL, 834), + NAME_FUNC_OFFSET(14868, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 835), + NAME_FUNC_OFFSET(14889, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 836), + NAME_FUNC_OFFSET(14911, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL, 837), + NAME_FUNC_OFFSET(14933, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, NULL, 838), + NAME_FUNC_OFFSET(14956, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 839), + NAME_FUNC_OFFSET(14978, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 840), + NAME_FUNC_OFFSET(15001, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT, NULL, 841), + NAME_FUNC_OFFSET(15024, glVertexAttribIPointerEXT, glVertexAttribIPointerEXT, NULL, 842), + NAME_FUNC_OFFSET(15050, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 843), + NAME_FUNC_OFFSET(15079, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, 844), + NAME_FUNC_OFFSET(15101, glDisableIndexedEXT, glDisableIndexedEXT, NULL, 845), + NAME_FUNC_OFFSET(15121, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 846), + NAME_FUNC_OFFSET(15140, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, 847), + NAME_FUNC_OFFSET(15164, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, 848), + NAME_FUNC_OFFSET(15188, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, 849), + NAME_FUNC_OFFSET(15210, glClearColorIiEXT, glClearColorIiEXT, NULL, 850), + NAME_FUNC_OFFSET(15228, glClearColorIuiEXT, glClearColorIuiEXT, NULL, 851), + NAME_FUNC_OFFSET(15247, glGetTexParameterIivEXT, glGetTexParameterIivEXT, NULL, 852), + NAME_FUNC_OFFSET(15271, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT, NULL, 853), + NAME_FUNC_OFFSET(15296, glTexParameterIivEXT, glTexParameterIivEXT, NULL, 854), + NAME_FUNC_OFFSET(15317, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL, 855), + NAME_FUNC_OFFSET(15339, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, 856), + NAME_FUNC_OFFSET(15366, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, 857), + NAME_FUNC_OFFSET(15391, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, 858), + NAME_FUNC_OFFSET(15419, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, 859), + NAME_FUNC_OFFSET(15439, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, 860), + NAME_FUNC_OFFSET(15461, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, 861), + NAME_FUNC_OFFSET(15482, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, 862), + NAME_FUNC_OFFSET(15508, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, 863), + NAME_FUNC_OFFSET(15541, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, 864), + NAME_FUNC_OFFSET(15572, glProvokingVertexEXT, glProvokingVertexEXT, NULL, 865), + NAME_FUNC_OFFSET(15593, gl_dispatch_stub_866, gl_dispatch_stub_866, NULL, 866), + NAME_FUNC_OFFSET(15624, gl_dispatch_stub_867, gl_dispatch_stub_867, NULL, 867), + NAME_FUNC_OFFSET(15644, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, 868), + NAME_FUNC_OFFSET(15672, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, 869), + NAME_FUNC_OFFSET(15695, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, 870), + NAME_FUNC_OFFSET(15720, glActiveProgramEXT, glActiveProgramEXT, NULL, 871), + NAME_FUNC_OFFSET(15739, glCreateShaderProgramEXT, glCreateShaderProgramEXT, NULL, 872), + NAME_FUNC_OFFSET(15764, glUseShaderProgramEXT, glUseShaderProgramEXT, NULL, 873), + NAME_FUNC_OFFSET(15786, gl_dispatch_stub_874, gl_dispatch_stub_874, NULL, 874), + NAME_FUNC_OFFSET(15811, gl_dispatch_stub_875, gl_dispatch_stub_875, NULL, 875), + NAME_FUNC_OFFSET(15840, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876), + NAME_FUNC_OFFSET(15871, gl_dispatch_stub_877, gl_dispatch_stub_877, NULL, 877), + NAME_FUNC_OFFSET(15895, gl_dispatch_stub_878, gl_dispatch_stub_878, NULL, 878), + NAME_FUNC_OFFSET(15920, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, 879), + NAME_FUNC_OFFSET(15959, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, 880), + NAME_FUNC_OFFSET(15988, glArrayElement, glArrayElement, NULL, 306), + NAME_FUNC_OFFSET(16006, glBindTexture, glBindTexture, NULL, 307), + NAME_FUNC_OFFSET(16023, glDrawArrays, glDrawArrays, NULL, 310), + NAME_FUNC_OFFSET(16039, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, 322), + NAME_FUNC_OFFSET(16064, glCopyTexImage1D, glCopyTexImage1D, NULL, 323), + NAME_FUNC_OFFSET(16084, glCopyTexImage2D, glCopyTexImage2D, NULL, 324), + NAME_FUNC_OFFSET(16104, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325), + NAME_FUNC_OFFSET(16127, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326), + NAME_FUNC_OFFSET(16150, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, 327), + NAME_FUNC_OFFSET(16170, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, 328), + NAME_FUNC_OFFSET(16187, glGetPointerv, glGetPointerv, NULL, 329), + NAME_FUNC_OFFSET(16204, glIsTexture, glIsTextureEXT, glIsTextureEXT, 330), + NAME_FUNC_OFFSET(16219, glPrioritizeTextures, glPrioritizeTextures, NULL, 331), + NAME_FUNC_OFFSET(16243, glTexSubImage1D, glTexSubImage1D, NULL, 332), + NAME_FUNC_OFFSET(16262, glTexSubImage2D, glTexSubImage2D, NULL, 333), + NAME_FUNC_OFFSET(16281, glBlendColor, glBlendColor, NULL, 336), + NAME_FUNC_OFFSET(16297, glBlendEquation, glBlendEquation, NULL, 337), + NAME_FUNC_OFFSET(16316, glDrawRangeElements, glDrawRangeElements, NULL, 338), + NAME_FUNC_OFFSET(16339, glColorTable, glColorTable, NULL, 339), + NAME_FUNC_OFFSET(16355, glColorTable, glColorTable, NULL, 339), + NAME_FUNC_OFFSET(16371, glColorTableParameterfv, glColorTableParameterfv, NULL, 340), + NAME_FUNC_OFFSET(16398, glColorTableParameteriv, glColorTableParameteriv, NULL, 341), + NAME_FUNC_OFFSET(16425, glCopyColorTable, glCopyColorTable, NULL, 342), + NAME_FUNC_OFFSET(16445, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343), + NAME_FUNC_OFFSET(16464, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343), + NAME_FUNC_OFFSET(16483, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344), + NAME_FUNC_OFFSET(16513, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344), + NAME_FUNC_OFFSET(16543, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345), + NAME_FUNC_OFFSET(16573, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345), + NAME_FUNC_OFFSET(16603, glColorSubTable, glColorSubTable, NULL, 346), + NAME_FUNC_OFFSET(16622, glCopyColorSubTable, glCopyColorSubTable, NULL, 347), + NAME_FUNC_OFFSET(16645, glConvolutionFilter1D, glConvolutionFilter1D, NULL, 348), + NAME_FUNC_OFFSET(16670, glConvolutionFilter2D, glConvolutionFilter2D, NULL, 349), + NAME_FUNC_OFFSET(16695, glConvolutionParameterf, glConvolutionParameterf, NULL, 350), + NAME_FUNC_OFFSET(16722, glConvolutionParameterfv, glConvolutionParameterfv, NULL, 351), + NAME_FUNC_OFFSET(16750, glConvolutionParameteri, glConvolutionParameteri, NULL, 352), + NAME_FUNC_OFFSET(16777, glConvolutionParameteriv, glConvolutionParameteriv, NULL, 353), + NAME_FUNC_OFFSET(16805, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, 354), + NAME_FUNC_OFFSET(16834, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, 355), + NAME_FUNC_OFFSET(16863, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, 356), + NAME_FUNC_OFFSET(16889, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, 357), + NAME_FUNC_OFFSET(16920, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, 358), + NAME_FUNC_OFFSET(16951, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, 359), + NAME_FUNC_OFFSET(16975, glSeparableFilter2D, glSeparableFilter2D, NULL, 360), + NAME_FUNC_OFFSET(16998, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, 361), + NAME_FUNC_OFFSET(17016, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, 362), + NAME_FUNC_OFFSET(17045, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, 363), + NAME_FUNC_OFFSET(17074, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, 364), + NAME_FUNC_OFFSET(17089, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, 365), + NAME_FUNC_OFFSET(17115, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, 366), + NAME_FUNC_OFFSET(17141, glHistogram, glHistogram, NULL, 367), + NAME_FUNC_OFFSET(17156, glMinmax, glMinmax, NULL, 368), + NAME_FUNC_OFFSET(17168, glResetHistogram, glResetHistogram, NULL, 369), + NAME_FUNC_OFFSET(17188, glResetMinmax, glResetMinmax, NULL, 370), + NAME_FUNC_OFFSET(17205, glTexImage3D, glTexImage3D, NULL, 371), + NAME_FUNC_OFFSET(17221, glTexSubImage3D, glTexSubImage3D, NULL, 372), + NAME_FUNC_OFFSET(17240, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373), + NAME_FUNC_OFFSET(17263, glActiveTextureARB, glActiveTextureARB, NULL, 374), + NAME_FUNC_OFFSET(17279, glClientActiveTextureARB, glClientActiveTextureARB, NULL, 375), + NAME_FUNC_OFFSET(17301, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, 376), + NAME_FUNC_OFFSET(17319, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, 377), + NAME_FUNC_OFFSET(17338, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, 378), + NAME_FUNC_OFFSET(17356, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, 379), + NAME_FUNC_OFFSET(17375, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, 380), + NAME_FUNC_OFFSET(17393, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, 381), + NAME_FUNC_OFFSET(17412, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, 382), + NAME_FUNC_OFFSET(17430, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, 383), + NAME_FUNC_OFFSET(17449, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, 384), + NAME_FUNC_OFFSET(17467, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, 385), + NAME_FUNC_OFFSET(17486, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, 386), + NAME_FUNC_OFFSET(17504, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, 387), + NAME_FUNC_OFFSET(17523, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, 388), + NAME_FUNC_OFFSET(17541, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, 389), + NAME_FUNC_OFFSET(17560, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, 390), + NAME_FUNC_OFFSET(17578, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, 391), + NAME_FUNC_OFFSET(17597, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, 392), + NAME_FUNC_OFFSET(17615, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, 393), + NAME_FUNC_OFFSET(17634, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, 394), + NAME_FUNC_OFFSET(17652, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, 395), + NAME_FUNC_OFFSET(17671, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, 396), + NAME_FUNC_OFFSET(17689, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, 397), + NAME_FUNC_OFFSET(17708, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, 398), + NAME_FUNC_OFFSET(17726, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, 399), + NAME_FUNC_OFFSET(17745, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, 400), + NAME_FUNC_OFFSET(17763, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, 401), + NAME_FUNC_OFFSET(17782, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, 402), + NAME_FUNC_OFFSET(17800, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, 403), + NAME_FUNC_OFFSET(17819, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, 404), + NAME_FUNC_OFFSET(17837, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, 405), + NAME_FUNC_OFFSET(17856, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, 406), + NAME_FUNC_OFFSET(17874, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, 407), + NAME_FUNC_OFFSET(17893, glStencilOpSeparate, glStencilOpSeparate, NULL, 423), + NAME_FUNC_OFFSET(17916, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, 441), + NAME_FUNC_OFFSET(17939, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, 442), + NAME_FUNC_OFFSET(17962, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, 443), + NAME_FUNC_OFFSET(17985, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, 444), + NAME_FUNC_OFFSET(18008, glSampleCoverageARB, glSampleCoverageARB, NULL, 445), + NAME_FUNC_OFFSET(18025, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, 446), + NAME_FUNC_OFFSET(18048, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, 447), + NAME_FUNC_OFFSET(18071, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, 448), + NAME_FUNC_OFFSET(18094, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, 449), + NAME_FUNC_OFFSET(18120, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, 450), + NAME_FUNC_OFFSET(18146, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, 451), + NAME_FUNC_OFFSET(18172, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, 452), + NAME_FUNC_OFFSET(18196, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, 453), + NAME_FUNC_OFFSET(18223, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, 454), + NAME_FUNC_OFFSET(18249, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, 461), + NAME_FUNC_OFFSET(18269, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, 462), + NAME_FUNC_OFFSET(18289, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, 463), + NAME_FUNC_OFFSET(18309, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, 464), + NAME_FUNC_OFFSET(18332, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, 465), + NAME_FUNC_OFFSET(18356, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, 466), + NAME_FUNC_OFFSET(18379, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, 467), + NAME_FUNC_OFFSET(18403, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, 473), + NAME_FUNC_OFFSET(18420, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, 474), + NAME_FUNC_OFFSET(18438, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 475), + NAME_FUNC_OFFSET(18455, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, 476), + NAME_FUNC_OFFSET(18473, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, 477), + NAME_FUNC_OFFSET(18490, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, 478), + NAME_FUNC_OFFSET(18508, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, 479), + NAME_FUNC_OFFSET(18525, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, 480), + NAME_FUNC_OFFSET(18543, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 481), + NAME_FUNC_OFFSET(18560, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, 482), + NAME_FUNC_OFFSET(18578, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, 483), + NAME_FUNC_OFFSET(18595, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, 484), + NAME_FUNC_OFFSET(18613, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, 485), + NAME_FUNC_OFFSET(18630, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, 486), + NAME_FUNC_OFFSET(18648, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 487), + NAME_FUNC_OFFSET(18665, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, 488), + NAME_FUNC_OFFSET(18683, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, 489), + NAME_FUNC_OFFSET(18700, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, 490), + NAME_FUNC_OFFSET(18718, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, 491), + NAME_FUNC_OFFSET(18737, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, 492), + NAME_FUNC_OFFSET(18756, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, 493), + NAME_FUNC_OFFSET(18775, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, 494), + NAME_FUNC_OFFSET(18794, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, 495), + NAME_FUNC_OFFSET(18814, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, 496), + NAME_FUNC_OFFSET(18834, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, 497), + NAME_FUNC_OFFSET(18854, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, 498), + NAME_FUNC_OFFSET(18872, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, 499), + NAME_FUNC_OFFSET(18889, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, 500), + NAME_FUNC_OFFSET(18907, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 501), + NAME_FUNC_OFFSET(18924, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, 502), + NAME_FUNC_OFFSET(18942, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, 503), + NAME_FUNC_OFFSET(18960, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, 504), + NAME_FUNC_OFFSET(18977, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, 505), + NAME_FUNC_OFFSET(18995, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, 506), + NAME_FUNC_OFFSET(19014, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, 507), + NAME_FUNC_OFFSET(19033, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, 508), + NAME_FUNC_OFFSET(19052, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, 509), + NAME_FUNC_OFFSET(19074, glBindBufferARB, glBindBufferARB, NULL, 510), + NAME_FUNC_OFFSET(19087, glBufferDataARB, glBufferDataARB, NULL, 511), + NAME_FUNC_OFFSET(19100, glBufferSubDataARB, glBufferSubDataARB, NULL, 512), + NAME_FUNC_OFFSET(19116, glDeleteBuffersARB, glDeleteBuffersARB, NULL, 513), + NAME_FUNC_OFFSET(19132, glGenBuffersARB, glGenBuffersARB, NULL, 514), + NAME_FUNC_OFFSET(19145, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, 515), + NAME_FUNC_OFFSET(19168, glGetBufferPointervARB, glGetBufferPointervARB, NULL, 516), + NAME_FUNC_OFFSET(19188, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, 517), + NAME_FUNC_OFFSET(19207, glIsBufferARB, glIsBufferARB, NULL, 518), + NAME_FUNC_OFFSET(19218, glMapBufferARB, glMapBufferARB, NULL, 519), + NAME_FUNC_OFFSET(19230, glUnmapBufferARB, glUnmapBufferARB, NULL, 520), + NAME_FUNC_OFFSET(19244, glBeginQueryARB, glBeginQueryARB, NULL, 521), + NAME_FUNC_OFFSET(19257, glDeleteQueriesARB, glDeleteQueriesARB, NULL, 522), + NAME_FUNC_OFFSET(19273, glEndQueryARB, glEndQueryARB, NULL, 523), + NAME_FUNC_OFFSET(19284, glGenQueriesARB, glGenQueriesARB, NULL, 524), + NAME_FUNC_OFFSET(19297, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, 525), + NAME_FUNC_OFFSET(19316, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, 526), + NAME_FUNC_OFFSET(19336, glGetQueryivARB, glGetQueryivARB, NULL, 527), + NAME_FUNC_OFFSET(19349, glIsQueryARB, glIsQueryARB, NULL, 528), + NAME_FUNC_OFFSET(19359, glCompileShaderARB, glCompileShaderARB, NULL, 530), + NAME_FUNC_OFFSET(19375, glGetActiveUniformARB, glGetActiveUniformARB, NULL, 535), + NAME_FUNC_OFFSET(19394, glGetShaderSourceARB, glGetShaderSourceARB, NULL, 541), + NAME_FUNC_OFFSET(19412, glGetUniformLocationARB, glGetUniformLocationARB, NULL, 542), + NAME_FUNC_OFFSET(19433, glGetUniformfvARB, glGetUniformfvARB, NULL, 543), + NAME_FUNC_OFFSET(19448, glGetUniformivARB, glGetUniformivARB, NULL, 544), + NAME_FUNC_OFFSET(19463, glLinkProgramARB, glLinkProgramARB, NULL, 545), + NAME_FUNC_OFFSET(19477, glShaderSourceARB, glShaderSourceARB, NULL, 546), + NAME_FUNC_OFFSET(19492, glUniform1fARB, glUniform1fARB, NULL, 547), + NAME_FUNC_OFFSET(19504, glUniform1fvARB, glUniform1fvARB, NULL, 548), + NAME_FUNC_OFFSET(19517, glUniform1iARB, glUniform1iARB, NULL, 549), + NAME_FUNC_OFFSET(19529, glUniform1ivARB, glUniform1ivARB, NULL, 550), + NAME_FUNC_OFFSET(19542, glUniform2fARB, glUniform2fARB, NULL, 551), + NAME_FUNC_OFFSET(19554, glUniform2fvARB, glUniform2fvARB, NULL, 552), + NAME_FUNC_OFFSET(19567, glUniform2iARB, glUniform2iARB, NULL, 553), + NAME_FUNC_OFFSET(19579, glUniform2ivARB, glUniform2ivARB, NULL, 554), + NAME_FUNC_OFFSET(19592, glUniform3fARB, glUniform3fARB, NULL, 555), + NAME_FUNC_OFFSET(19604, glUniform3fvARB, glUniform3fvARB, NULL, 556), + NAME_FUNC_OFFSET(19617, glUniform3iARB, glUniform3iARB, NULL, 557), + NAME_FUNC_OFFSET(19629, glUniform3ivARB, glUniform3ivARB, NULL, 558), + NAME_FUNC_OFFSET(19642, glUniform4fARB, glUniform4fARB, NULL, 559), + NAME_FUNC_OFFSET(19654, glUniform4fvARB, glUniform4fvARB, NULL, 560), + NAME_FUNC_OFFSET(19667, glUniform4iARB, glUniform4iARB, NULL, 561), + NAME_FUNC_OFFSET(19679, glUniform4ivARB, glUniform4ivARB, NULL, 562), + NAME_FUNC_OFFSET(19692, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, 563), + NAME_FUNC_OFFSET(19711, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, 564), + NAME_FUNC_OFFSET(19730, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, 565), + NAME_FUNC_OFFSET(19749, glUseProgramObjectARB, glUseProgramObjectARB, NULL, 566), + NAME_FUNC_OFFSET(19762, glValidateProgramARB, glValidateProgramARB, NULL, 567), + NAME_FUNC_OFFSET(19780, glBindAttribLocationARB, glBindAttribLocationARB, NULL, 568), + NAME_FUNC_OFFSET(19801, glGetActiveAttribARB, glGetActiveAttribARB, NULL, 569), + NAME_FUNC_OFFSET(19819, glGetAttribLocationARB, glGetAttribLocationARB, NULL, 570), + NAME_FUNC_OFFSET(19839, glDrawBuffersARB, glDrawBuffersARB, NULL, 571), + NAME_FUNC_OFFSET(19853, glDrawBuffersARB, glDrawBuffersARB, NULL, 571), + NAME_FUNC_OFFSET(19870, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 572), + NAME_FUNC_OFFSET(19895, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 572), + NAME_FUNC_OFFSET(19917, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 573), + NAME_FUNC_OFFSET(19944, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 573), + NAME_FUNC_OFFSET(19968, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 574), + NAME_FUNC_OFFSET(20004, gl_dispatch_stub_607, gl_dispatch_stub_607, NULL, 607), + NAME_FUNC_OFFSET(20020, gl_dispatch_stub_608, gl_dispatch_stub_608, NULL, 608), + NAME_FUNC_OFFSET(20039, glPointParameterfEXT, glPointParameterfEXT, NULL, 615), + NAME_FUNC_OFFSET(20057, glPointParameterfEXT, glPointParameterfEXT, NULL, 615), + NAME_FUNC_OFFSET(20078, glPointParameterfEXT, glPointParameterfEXT, NULL, 615), + NAME_FUNC_OFFSET(20100, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 616), + NAME_FUNC_OFFSET(20119, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 616), + NAME_FUNC_OFFSET(20141, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 616), + NAME_FUNC_OFFSET(20164, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, 619), + NAME_FUNC_OFFSET(20183, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, 620), + NAME_FUNC_OFFSET(20203, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, 621), + NAME_FUNC_OFFSET(20222, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, 622), + NAME_FUNC_OFFSET(20242, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 623), + NAME_FUNC_OFFSET(20261, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 624), + NAME_FUNC_OFFSET(20281, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, 625), + NAME_FUNC_OFFSET(20300, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, 626), + NAME_FUNC_OFFSET(20320, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, 627), + NAME_FUNC_OFFSET(20339, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, 628), + NAME_FUNC_OFFSET(20359, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, 629), + NAME_FUNC_OFFSET(20379, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, 630), + NAME_FUNC_OFFSET(20400, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, 631), + NAME_FUNC_OFFSET(20420, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, 632), + NAME_FUNC_OFFSET(20441, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, 633), + NAME_FUNC_OFFSET(20461, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, 634), + NAME_FUNC_OFFSET(20482, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, 635), + NAME_FUNC_OFFSET(20506, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, 636), + NAME_FUNC_OFFSET(20524, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 637), + NAME_FUNC_OFFSET(20544, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, 638), + NAME_FUNC_OFFSET(20562, glFogCoorddEXT, glFogCoorddEXT, NULL, 639), + NAME_FUNC_OFFSET(20574, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 640), + NAME_FUNC_OFFSET(20587, glFogCoordfEXT, glFogCoordfEXT, NULL, 641), + NAME_FUNC_OFFSET(20599, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 642), + NAME_FUNC_OFFSET(20612, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 644), + NAME_FUNC_OFFSET(20632, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 644), + NAME_FUNC_OFFSET(20656, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 661), + NAME_FUNC_OFFSET(20670, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 661), + NAME_FUNC_OFFSET(20687, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 662), + NAME_FUNC_OFFSET(20702, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 662), + NAME_FUNC_OFFSET(20720, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 663), + NAME_FUNC_OFFSET(20734, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 663), + NAME_FUNC_OFFSET(20751, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 664), + NAME_FUNC_OFFSET(20766, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 664), + NAME_FUNC_OFFSET(20784, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 665), + NAME_FUNC_OFFSET(20798, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 665), + NAME_FUNC_OFFSET(20815, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 666), + NAME_FUNC_OFFSET(20830, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 666), + NAME_FUNC_OFFSET(20848, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 667), + NAME_FUNC_OFFSET(20862, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 667), + NAME_FUNC_OFFSET(20879, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 668), + NAME_FUNC_OFFSET(20894, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 668), + NAME_FUNC_OFFSET(20912, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 669), + NAME_FUNC_OFFSET(20926, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 669), + NAME_FUNC_OFFSET(20943, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 670), + NAME_FUNC_OFFSET(20958, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 670), + NAME_FUNC_OFFSET(20976, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 671), + NAME_FUNC_OFFSET(20990, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 671), + NAME_FUNC_OFFSET(21007, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 672), + NAME_FUNC_OFFSET(21022, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 672), + NAME_FUNC_OFFSET(21040, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 673), + NAME_FUNC_OFFSET(21054, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 673), + NAME_FUNC_OFFSET(21071, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 674), + NAME_FUNC_OFFSET(21086, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 674), + NAME_FUNC_OFFSET(21104, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 675), + NAME_FUNC_OFFSET(21118, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 675), + NAME_FUNC_OFFSET(21135, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 676), + NAME_FUNC_OFFSET(21150, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 676), + NAME_FUNC_OFFSET(21168, glBindProgramNV, glBindProgramNV, NULL, 695), + NAME_FUNC_OFFSET(21185, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 696), + NAME_FUNC_OFFSET(21205, glGenProgramsNV, glGenProgramsNV, NULL, 698), + NAME_FUNC_OFFSET(21222, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 704), + NAME_FUNC_OFFSET(21248, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 704), + NAME_FUNC_OFFSET(21277, glIsProgramNV, glIsProgramNV, NULL, 708), + NAME_FUNC_OFFSET(21292, glPointParameteriNV, glPointParameteriNV, NULL, 772), + NAME_FUNC_OFFSET(21310, glPointParameterivNV, glPointParameterivNV, NULL, 773), + NAME_FUNC_OFFSET(21329, gl_dispatch_stub_776, gl_dispatch_stub_776, NULL, 776), + NAME_FUNC_OFFSET(21350, gl_dispatch_stub_778, gl_dispatch_stub_778, NULL, 778), + NAME_FUNC_OFFSET(21366, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, 785), + NAME_FUNC_OFFSET(21390, gl_dispatch_stub_788, gl_dispatch_stub_788, NULL, 788), + NAME_FUNC_OFFSET(21414, gl_dispatch_stub_788, gl_dispatch_stub_788, NULL, 788), + NAME_FUNC_OFFSET(21441, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 789), + NAME_FUNC_OFFSET(21459, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 790), + NAME_FUNC_OFFSET(21478, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, 791), + NAME_FUNC_OFFSET(21503, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, 792), + NAME_FUNC_OFFSET(21524, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, 793), + NAME_FUNC_OFFSET(21546, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, 794), + NAME_FUNC_OFFSET(21572, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, 795), + NAME_FUNC_OFFSET(21595, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, 796), + NAME_FUNC_OFFSET(21618, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, 797), + NAME_FUNC_OFFSET(21641, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, 798), + NAME_FUNC_OFFSET(21659, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, 799), + NAME_FUNC_OFFSET(21678, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, 800), + NAME_FUNC_OFFSET(21695, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, 801), + NAME_FUNC_OFFSET(21733, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, 802), + NAME_FUNC_OFFSET(21762, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 803), + NAME_FUNC_OFFSET(21778, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, 804), + NAME_FUNC_OFFSET(21795, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, 805), + NAME_FUNC_OFFSET(21817, gl_dispatch_stub_806, gl_dispatch_stub_806, NULL, 806), + NAME_FUNC_OFFSET(21835, glBindFragDataLocationEXT, glBindFragDataLocationEXT, NULL, 809), + NAME_FUNC_OFFSET(21858, glGetFragDataLocationEXT, glGetFragDataLocationEXT, NULL, 810), + NAME_FUNC_OFFSET(21880, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 811), + NAME_FUNC_OFFSET(21896, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT, NULL, 812), + NAME_FUNC_OFFSET(21917, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, NULL, 813), + NAME_FUNC_OFFSET(21939, glUniform1uiEXT, glUniform1uiEXT, NULL, 814), + NAME_FUNC_OFFSET(21952, glUniform1uivEXT, glUniform1uivEXT, NULL, 815), + NAME_FUNC_OFFSET(21966, glUniform2uiEXT, glUniform2uiEXT, NULL, 816), + NAME_FUNC_OFFSET(21979, glUniform2uivEXT, glUniform2uivEXT, NULL, 817), + NAME_FUNC_OFFSET(21993, glUniform3uiEXT, glUniform3uiEXT, NULL, 818), + NAME_FUNC_OFFSET(22006, glUniform3uivEXT, glUniform3uivEXT, NULL, 819), + NAME_FUNC_OFFSET(22020, glUniform4uiEXT, glUniform4uiEXT, NULL, 820), + NAME_FUNC_OFFSET(22033, glUniform4uivEXT, glUniform4uivEXT, NULL, 821), + NAME_FUNC_OFFSET(22047, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 822), + NAME_FUNC_OFFSET(22065, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL, 823), + NAME_FUNC_OFFSET(22084, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 824), + NAME_FUNC_OFFSET(22103, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT, NULL, 825), + NAME_FUNC_OFFSET(22123, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 826), + NAME_FUNC_OFFSET(22141, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 827), + NAME_FUNC_OFFSET(22160, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 828), + NAME_FUNC_OFFSET(22179, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 829), + NAME_FUNC_OFFSET(22199, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 830), + NAME_FUNC_OFFSET(22217, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 831), + NAME_FUNC_OFFSET(22236, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 832), + NAME_FUNC_OFFSET(22255, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 833), + NAME_FUNC_OFFSET(22275, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL, 834), + NAME_FUNC_OFFSET(22294, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 835), + NAME_FUNC_OFFSET(22312, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 836), + NAME_FUNC_OFFSET(22331, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL, 837), + NAME_FUNC_OFFSET(22350, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, NULL, 838), + NAME_FUNC_OFFSET(22370, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 839), + NAME_FUNC_OFFSET(22389, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 840), + NAME_FUNC_OFFSET(22409, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT, NULL, 841), + NAME_FUNC_OFFSET(22429, glVertexAttribIPointerEXT, glVertexAttribIPointerEXT, NULL, 842), + NAME_FUNC_OFFSET(22452, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 843), + NAME_FUNC_OFFSET(22478, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, 844), + NAME_FUNC_OFFSET(22491, glDisableIndexedEXT, glDisableIndexedEXT, NULL, 845), + NAME_FUNC_OFFSET(22502, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 846), + NAME_FUNC_OFFSET(22512, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, 847), + NAME_FUNC_OFFSET(22528, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, 848), + NAME_FUNC_OFFSET(22544, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, 849), + NAME_FUNC_OFFSET(22557, glGetTexParameterIivEXT, glGetTexParameterIivEXT, NULL, 852), + NAME_FUNC_OFFSET(22578, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT, NULL, 853), + NAME_FUNC_OFFSET(22600, glTexParameterIivEXT, glTexParameterIivEXT, NULL, 854), + NAME_FUNC_OFFSET(22618, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL, 855), + NAME_FUNC_OFFSET(22637, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, 856), + NAME_FUNC_OFFSET(22662, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, 857), + NAME_FUNC_OFFSET(22685, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, 858), + NAME_FUNC_OFFSET(22710, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, 859), + NAME_FUNC_OFFSET(22727, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, 861), + NAME_FUNC_OFFSET(22745, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, 862), + NAME_FUNC_OFFSET(22768, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, 863), + NAME_FUNC_OFFSET(22798, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, 864), + NAME_FUNC_OFFSET(22826, glProvokingVertexEXT, glProvokingVertexEXT, NULL, 865), NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0) }; diff --git a/src/mapi/vgapi/.gitignore b/src/mapi/vgapi/.gitignore new file mode 100644 index 0000000000..5becb99386 --- /dev/null +++ b/src/mapi/vgapi/.gitignore @@ -0,0 +1 @@ +vgapi_tmp.h diff --git a/src/mesa/Makefile b/src/mesa/Makefile index 7a6936e210..8b0756b84e 100644 --- a/src/mesa/Makefile +++ b/src/mesa/Makefile @@ -35,8 +35,8 @@ ES2_CPPFLAGS := -DFEATURE_ES2=1 $(DEFINES) # append include dirs MESA_CPPFLAGS += $(INCLUDE_DIRS) $(TALLOC_CFLAGS) -ES1_CPPFLAGS += -I$(TOP)/src/mapi/es1api $(INCLUDE_DIRS) -ES2_CPPFLAGS += -I$(TOP)/src/mapi/es2api $(INCLUDE_DIRS) +ES1_CPPFLAGS += -I$(TOP)/src/mapi/es1api $(INCLUDE_DIRS) $(TALLOC_CFLAGS) +ES2_CPPFLAGS += -I$(TOP)/src/mapi/es2api $(INCLUDE_DIRS) $(TALLOC_CFLAGS) # tidy compiler flags CFLAGS := $(filter-out $(DEFINES), $(CFLAGS)) diff --git a/src/mesa/SConscript b/src/mesa/SConscript index c89e635aab..08d731de2d 100644 --- a/src/mesa/SConscript +++ b/src/mesa/SConscript @@ -4,320 +4,328 @@ Import('*') -if env['platform'] != 'winddk': +env = env.Clone() - env = env.Clone() - - env.Append(CPPPATH = [ - '#/src/mapi', - '#/src/glsl', - '#/src/mesa', - ]) - - if env['platform'] == 'windows': - env.Append(CPPDEFINES = [ - '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers - 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers - 'WIN32_THREADS', # use Win32 thread API - ]) - env.Prepend(CPPPATH = ['#src/talloc']) +env.Append(CPPPATH = [ + '#/src/mapi', + '#/src/glsl', + '#/src/mesa', +]) - # - # Source files - # - - main_sources = [ - 'main/api_arrayelt.c', - 'main/api_exec.c', - 'main/api_loopback.c', - 'main/api_noop.c', - 'main/api_validate.c', - 'main/accum.c', - 'main/arbprogram.c', - 'main/atifragshader.c', - 'main/attrib.c', - 'main/arrayobj.c', - 'main/blend.c', - 'main/bufferobj.c', - 'main/buffers.c', - 'main/clear.c', - 'main/clip.c', - 'main/colortab.c', - 'main/condrender.c', - 'main/context.c', - 'main/convolve.c', - 'main/cpuinfo.c', - 'main/debug.c', - 'main/depth.c', - 'main/depthstencil.c', - 'main/dlist.c', - 'main/dlopen.c', - 'main/drawpix.c', - 'main/drawtex.c', - 'main/enable.c', - 'main/enums.c', - 'main/eval.c', - 'main/execmem.c', - 'main/extensions.c', - 'main/fbobject.c', - 'main/feedback.c', - 'main/ffvertex_prog.c', - 'main/fog.c', - 'main/formats.c', - 'main/framebuffer.c', - 'main/get.c', - 'main/getstring.c', - 'main/hash.c', - 'main/hint.c', - 'main/histogram.c', - 'main/image.c', - 'main/imports.c', - 'main/light.c', - 'main/lines.c', - 'main/matrix.c', - 'main/mipmap.c', - 'main/mm.c', - 'main/multisample.c', - 'main/nvprogram.c', - 'main/pixel.c', - 'main/pixelstore.c', - 'main/points.c', - 'main/polygon.c', - 'main/querymatrix.c', - 'main/queryobj.c', - 'main/rastpos.c', - 'main/readpix.c', - 'main/remap.c', - 'main/renderbuffer.c', - 'main/scissor.c', - 'main/shaderapi.c', - 'main/shaderobj.c', - 'main/shared.c', - 'main/state.c', - 'main/stencil.c', - 'main/syncobj.c', - 'main/texcompress.c', - 'main/texcompress_s3tc.c', - 'main/texcompress_fxt1.c', - 'main/texenv.c', - 'main/texenvprogram.c', - 'main/texfetch.c', - 'main/texformat.c', - 'main/texgen.c', - 'main/texgetimage.c', - 'main/teximage.c', - 'main/texobj.c', - 'main/texpal.c', - 'main/texparam.c', - 'main/texrender.c', - 'main/texstate.c', - 'main/texstore.c', - 'main/transformfeedback.c', - 'main/uniforms.c', - 'main/varray.c', - 'main/version.c', - 'main/viewport.c', - 'main/vtxfmt.c', - ] - - math_sources = [ - 'math/m_debug_clip.c', - 'math/m_debug_norm.c', - 'math/m_debug_xform.c', - 'math/m_eval.c', - 'math/m_matrix.c', - 'math/m_translate.c', - 'math/m_vector.c', - 'math/m_xform.c', - ] - - vbo_sources = [ - 'vbo/vbo_context.c', - 'vbo/vbo_exec.c', - 'vbo/vbo_exec_api.c', - 'vbo/vbo_exec_array.c', - 'vbo/vbo_exec_draw.c', - 'vbo/vbo_exec_eval.c', - 'vbo/vbo_rebase.c', - 'vbo/vbo_split.c', - 'vbo/vbo_split_copy.c', - 'vbo/vbo_split_inplace.c', - 'vbo/vbo_save.c', - 'vbo/vbo_save_api.c', - 'vbo/vbo_save_draw.c', - 'vbo/vbo_save_loopback.c', - ] - - vf_sources = [ - 'vf/vf.c', - 'vf/vf_generic.c', - 'vf/vf_sse.c', - ] - - statetracker_sources = [ - 'state_tracker/st_atom.c', - 'state_tracker/st_atom_blend.c', - 'state_tracker/st_atom_clip.c', - 'state_tracker/st_atom_constbuf.c', - 'state_tracker/st_atom_depth.c', - 'state_tracker/st_atom_framebuffer.c', - 'state_tracker/st_atom_msaa.c', - 'state_tracker/st_atom_pixeltransfer.c', - 'state_tracker/st_atom_sampler.c', - 'state_tracker/st_atom_scissor.c', - 'state_tracker/st_atom_shader.c', - 'state_tracker/st_atom_rasterizer.c', - 'state_tracker/st_atom_stipple.c', - 'state_tracker/st_atom_texture.c', - 'state_tracker/st_atom_viewport.c', - 'state_tracker/st_cb_accum.c', - 'state_tracker/st_cb_bitmap.c', - 'state_tracker/st_cb_blit.c', - 'state_tracker/st_cb_bufferobjects.c', - 'state_tracker/st_cb_clear.c', - 'state_tracker/st_cb_condrender.c', - 'state_tracker/st_cb_flush.c', - 'state_tracker/st_cb_drawpixels.c', - 'state_tracker/st_cb_drawtex.c', - 'state_tracker/st_cb_eglimage.c', - 'state_tracker/st_cb_fbo.c', - 'state_tracker/st_cb_feedback.c', - 'state_tracker/st_cb_program.c', - 'state_tracker/st_cb_queryobj.c', - 'state_tracker/st_cb_rasterpos.c', - 'state_tracker/st_cb_readpixels.c', - 'state_tracker/st_cb_strings.c', - 'state_tracker/st_cb_texture.c', - 'state_tracker/st_cb_viewport.c', - 'state_tracker/st_cb_xformfb.c', - 'state_tracker/st_context.c', - 'state_tracker/st_debug.c', - 'state_tracker/st_draw.c', - 'state_tracker/st_draw_feedback.c', - 'state_tracker/st_extensions.c', - 'state_tracker/st_format.c', - 'state_tracker/st_gen_mipmap.c', - 'state_tracker/st_manager.c', - 'state_tracker/st_mesa_to_tgsi.c', - 'state_tracker/st_program.c', - 'state_tracker/st_texture.c', - ] - - program_sources = [ - 'program/arbprogparse.c', - 'program/hash_table.c', - 'program/ir_to_mesa.cpp', - 'program/lex.yy.c', - 'program/nvfragparse.c', - 'program/nvvertparse.c', - 'program/program.c', - 'program/program_parse.tab.c', - 'program/program_parse_extra.c', - 'program/prog_cache.c', - 'program/prog_execute.c', - 'program/prog_instruction.c', - 'program/prog_noise.c', - 'program/prog_optimize.c', - 'program/prog_parameter.c', - 'program/prog_parameter_layout.c', - 'program/prog_print.c', - 'program/prog_statevars.c', - 'program/prog_uniform.c', - 'program/programopt.c', - 'program/sampler.cpp', - 'program/symbol_table.c', - ] - - mesa_sources = ( - main_sources + - math_sources + - program_sources + - vbo_sources + - vf_sources + - statetracker_sources - ) +if env['platform'] == 'windows': + env.Append(CPPDEFINES = [ + '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers + 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers + 'WIN32_THREADS', # use Win32 thread API + ]) + env.Prepend(CPPPATH = ['#src/talloc']) +else: + env.Append(CPPDEFINES = [ + 'IN_DRI_DRIVER', # enable the remap table (for DRI drivers) + ]) - # - # Assembly sources - # - if gcc and env['machine'] == 'x86': - env.Append(CPPDEFINES = [ - 'USE_X86_ASM', - 'USE_MMX_ASM', - 'USE_3DNOW_ASM', - 'USE_SSE_ASM', - ]) - mesa_sources += [ - 'x86/common_x86.c', - 'x86/x86_xform.c', - 'x86/3dnow.c', - 'x86/sse.c', - 'x86/common_x86_asm.S', - 'x86/x86_xform2.S', - 'x86/x86_xform3.S', - 'x86/x86_xform4.S', - 'x86/x86_cliptest.S', - 'x86/mmx_blend.S', - 'x86/3dnow_xform1.S', - 'x86/3dnow_xform2.S', - 'x86/3dnow_xform3.S', - 'x86/3dnow_xform4.S', - 'x86/3dnow_normal.S', - 'x86/sse_xform1.S', - 'x86/sse_xform2.S', - 'x86/sse_xform3.S', - 'x86/sse_xform4.S', - 'x86/sse_normal.S', - 'x86/read_rgba_span_x86.S', - ] - elif gcc and env['machine'] == 'x86_64': - env.Append(CPPDEFINES = [ - 'USE_X86_64_ASM', - ]) - mesa_sources += [ - 'x86-64/x86-64.c', - 'x86-64/xform4.S', - ] - elif gcc and env['machine'] == 'ppc': - env.Append(CPPDEFINES = [ - 'USE_PPC_ASM', - 'USE_VMX_ASM', - ]) - mesa_sources += [ - 'ppc/common_ppc.c', - ] - elif gcc and env['machine'] == 'sparc': - mesa_sources += [ - 'sparc/sparc.c', - 'sparc/clip.S', - 'sparc/norm.S', - 'sparc/xform.S', - ] - else: - pass - - # Generate matypes.h - if gcc and env['machine'] in ('x86', 'x86_64'): - # See http://www.scons.org/wiki/UsingCodeGenerators - gen_matypes = env.Program( - target = 'gen_matypes', - source = 'x86/gen_matypes.c', - ) - matypes = env.Command( - 'matypes.h', - gen_matypes, - gen_matypes[0].abspath + ' > $TARGET', - ) - # Add the dir containing the generated header (somewhere inside the - # build dir) to the include path - env.Append(CPPPATH = [matypes[0].dir]) +# +# Source files +# - # - # Libraries - # +main_sources = [ + 'main/api_arrayelt.c', + 'main/api_exec.c', + 'main/api_loopback.c', + 'main/api_noop.c', + 'main/api_validate.c', + 'main/accum.c', + 'main/arbprogram.c', + 'main/atifragshader.c', + 'main/attrib.c', + 'main/arrayobj.c', + 'main/blend.c', + 'main/bufferobj.c', + 'main/buffers.c', + 'main/clear.c', + 'main/clip.c', + 'main/colortab.c', + 'main/condrender.c', + 'main/context.c', + 'main/convolve.c', + 'main/cpuinfo.c', + 'main/debug.c', + 'main/depth.c', + 'main/depthstencil.c', + 'main/dlist.c', + 'main/dlopen.c', + 'main/drawpix.c', + 'main/drawtex.c', + 'main/enable.c', + 'main/enums.c', + 'main/eval.c', + 'main/execmem.c', + 'main/extensions.c', + 'main/fbobject.c', + 'main/feedback.c', + 'main/ffvertex_prog.c', + 'main/fog.c', + 'main/formats.c', + 'main/framebuffer.c', + 'main/get.c', + 'main/getstring.c', + 'main/hash.c', + 'main/hint.c', + 'main/histogram.c', + 'main/image.c', + 'main/imports.c', + 'main/light.c', + 'main/lines.c', + 'main/matrix.c', + 'main/mipmap.c', + 'main/mm.c', + 'main/multisample.c', + 'main/nvprogram.c', + 'main/pack.c', + 'main/pixel.c', + 'main/pixelstore.c', + 'main/pixeltransfer.c', + 'main/points.c', + 'main/polygon.c', + 'main/querymatrix.c', + 'main/queryobj.c', + 'main/rastpos.c', + 'main/readpix.c', + 'main/remap.c', + 'main/renderbuffer.c', + 'main/scissor.c', + 'main/shaderapi.c', + 'main/shaderobj.c', + 'main/shared.c', + 'main/state.c', + 'main/stencil.c', + 'main/syncobj.c', + 'main/texcompress.c', + 'main/texcompress_s3tc.c', + 'main/texcompress_fxt1.c', + 'main/texenv.c', + 'main/texenvprogram.c', + 'main/texfetch.c', + 'main/texformat.c', + 'main/texgen.c', + 'main/texgetimage.c', + 'main/teximage.c', + 'main/texobj.c', + 'main/texpal.c', + 'main/texparam.c', + 'main/texrender.c', + 'main/texstate.c', + 'main/texstore.c', + 'main/transformfeedback.c', + 'main/uniforms.c', + 'main/varray.c', + 'main/version.c', + 'main/viewport.c', + 'main/vtxfmt.c', +] - mesa = env.ConvenienceLibrary( - target = 'mesa', - source = mesa_sources, - ) - Export('mesa') +math_sources = [ + 'math/m_debug_clip.c', + 'math/m_debug_norm.c', + 'math/m_debug_xform.c', + 'math/m_eval.c', + 'math/m_matrix.c', + 'math/m_translate.c', + 'math/m_vector.c', + 'math/m_xform.c', +] + +vbo_sources = [ + 'vbo/vbo_context.c', + 'vbo/vbo_exec.c', + 'vbo/vbo_exec_api.c', + 'vbo/vbo_exec_array.c', + 'vbo/vbo_exec_draw.c', + 'vbo/vbo_exec_eval.c', + 'vbo/vbo_rebase.c', + 'vbo/vbo_split.c', + 'vbo/vbo_split_copy.c', + 'vbo/vbo_split_inplace.c', + 'vbo/vbo_save.c', + 'vbo/vbo_save_api.c', + 'vbo/vbo_save_draw.c', + 'vbo/vbo_save_loopback.c', +] + +vf_sources = [ + 'vf/vf.c', + 'vf/vf_generic.c', + 'vf/vf_sse.c', +] + +statetracker_sources = [ + 'state_tracker/st_atom.c', + 'state_tracker/st_atom_blend.c', + 'state_tracker/st_atom_clip.c', + 'state_tracker/st_atom_constbuf.c', + 'state_tracker/st_atom_depth.c', + 'state_tracker/st_atom_framebuffer.c', + 'state_tracker/st_atom_msaa.c', + 'state_tracker/st_atom_pixeltransfer.c', + 'state_tracker/st_atom_sampler.c', + 'state_tracker/st_atom_scissor.c', + 'state_tracker/st_atom_shader.c', + 'state_tracker/st_atom_rasterizer.c', + 'state_tracker/st_atom_stipple.c', + 'state_tracker/st_atom_texture.c', + 'state_tracker/st_atom_viewport.c', + 'state_tracker/st_cb_accum.c', + 'state_tracker/st_cb_bitmap.c', + 'state_tracker/st_cb_blit.c', + 'state_tracker/st_cb_bufferobjects.c', + 'state_tracker/st_cb_clear.c', + 'state_tracker/st_cb_condrender.c', + 'state_tracker/st_cb_flush.c', + 'state_tracker/st_cb_drawpixels.c', + 'state_tracker/st_cb_drawtex.c', + 'state_tracker/st_cb_eglimage.c', + 'state_tracker/st_cb_fbo.c', + 'state_tracker/st_cb_feedback.c', + 'state_tracker/st_cb_program.c', + 'state_tracker/st_cb_queryobj.c', + 'state_tracker/st_cb_rasterpos.c', + 'state_tracker/st_cb_readpixels.c', + 'state_tracker/st_cb_strings.c', + 'state_tracker/st_cb_texture.c', + 'state_tracker/st_cb_viewport.c', + 'state_tracker/st_cb_xformfb.c', + 'state_tracker/st_context.c', + 'state_tracker/st_debug.c', + 'state_tracker/st_draw.c', + 'state_tracker/st_draw_feedback.c', + 'state_tracker/st_extensions.c', + 'state_tracker/st_format.c', + 'state_tracker/st_gen_mipmap.c', + 'state_tracker/st_manager.c', + 'state_tracker/st_mesa_to_tgsi.c', + 'state_tracker/st_program.c', + 'state_tracker/st_texture.c', +] + +program_sources = [ + 'program/arbprogparse.c', + 'program/hash_table.c', + 'program/ir_to_mesa.cpp', + 'program/lex.yy.c', + 'program/nvfragparse.c', + 'program/nvvertparse.c', + 'program/program.c', + 'program/program_parse.tab.c', + 'program/program_parse_extra.c', + 'program/prog_cache.c', + 'program/prog_execute.c', + 'program/prog_instruction.c', + 'program/prog_noise.c', + 'program/prog_optimize.c', + 'program/prog_parameter.c', + 'program/prog_parameter_layout.c', + 'program/prog_print.c', + 'program/prog_statevars.c', + 'program/prog_uniform.c', + 'program/programopt.c', + 'program/sampler.cpp', + 'program/symbol_table.c', +] + +mesa_sources = ( + main_sources + + math_sources + + program_sources + + vbo_sources + + vf_sources + + statetracker_sources +) + +# +# Assembly sources +# +if env['gcc'] and env['platform'] != 'windows': + if env['machine'] == 'x86': + env.Append(CPPDEFINES = [ + 'USE_X86_ASM', + 'USE_MMX_ASM', + 'USE_3DNOW_ASM', + 'USE_SSE_ASM', + ]) + mesa_sources += [ + 'x86/common_x86.c', + 'x86/x86_xform.c', + 'x86/3dnow.c', + 'x86/sse.c', + 'x86/common_x86_asm.S', + 'x86/x86_xform2.S', + 'x86/x86_xform3.S', + 'x86/x86_xform4.S', + 'x86/x86_cliptest.S', + 'x86/mmx_blend.S', + 'x86/3dnow_xform1.S', + 'x86/3dnow_xform2.S', + 'x86/3dnow_xform3.S', + 'x86/3dnow_xform4.S', + 'x86/3dnow_normal.S', + 'x86/sse_xform1.S', + 'x86/sse_xform2.S', + 'x86/sse_xform3.S', + 'x86/sse_xform4.S', + 'x86/sse_normal.S', + 'x86/read_rgba_span_x86.S', + ] + elif env['machine'] == 'x86_64': + env.Append(CPPDEFINES = [ + 'USE_X86_64_ASM', + ]) + mesa_sources += [ + 'x86-64/x86-64.c', + 'x86-64/xform4.S', + ] + elif env['machine'] == 'ppc': + env.Append(CPPDEFINES = [ + 'USE_PPC_ASM', + 'USE_VMX_ASM', + ]) + mesa_sources += [ + 'ppc/common_ppc.c', + ] + elif env['machine'] == 'sparc': + mesa_sources += [ + 'sparc/sparc.c', + 'sparc/clip.S', + 'sparc/norm.S', + 'sparc/xform.S', + ] + else: + pass + + # Generate matypes.h + if env['machine'] in ('x86', 'x86_64'): + # See http://www.scons.org/wiki/UsingCodeGenerators + gen_matypes = env.Program( + target = 'gen_matypes', + source = 'x86/gen_matypes.c', + ) + matypes = env.Command( + 'matypes.h', + gen_matypes, + gen_matypes[0].abspath + ' > $TARGET', + ) + # Add the dir containing the generated header (somewhere inside the + # build dir) to the include path + env.Append(CPPPATH = [matypes[0].dir]) + +# +# Libraries +# + +mesa = env.ConvenienceLibrary( + target = 'mesa', + source = mesa_sources, +) + +env.Alias('mesa', mesa) + +Export('mesa') diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 9946bf1990..ba8be12571 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -52,6 +52,7 @@ #include "main/readpix.h" #include "main/scissor.h" #include "main/shaderapi.h" +#include "main/shaderobj.h" #include "main/state.h" #include "main/stencil.h" #include "main/texobj.h" @@ -103,6 +104,8 @@ struct save_state /** META_ALPHA_TEST */ GLboolean AlphaEnabled; + GLenum AlphaFunc; + GLclampf AlphaRef; /** META_BLEND */ GLbitfield BlendEnabled; @@ -143,7 +146,10 @@ struct save_state struct gl_vertex_program *VertexProgram; GLboolean FragmentProgramEnabled; struct gl_fragment_program *FragmentProgram; - GLuint Shader; + struct gl_shader_program *VertexShader; + struct gl_shader_program *GeometryShader; + struct gl_shader_program *FragmentShader; + struct gl_shader_program *ActiveShader; /** META_STENCIL_TEST */ struct gl_stencil_attrib Stencil; @@ -324,6 +330,8 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) if (state & META_ALPHA_TEST) { save->AlphaEnabled = ctx->Color.AlphaEnabled; + save->AlphaFunc = ctx->Color.AlphaFunc; + save->AlphaRef = ctx->Color.AlphaRef; if (ctx->Color.AlphaEnabled) _mesa_set_enable(ctx, GL_ALPHA_TEST, GL_FALSE); } @@ -433,8 +441,15 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) } if (ctx->Extensions.ARB_shader_objects) { - save->Shader = ctx->Shader.CurrentProgram ? - ctx->Shader.CurrentProgram->Name : 0; + _mesa_reference_shader_program(ctx, &save->VertexShader, + ctx->Shader.CurrentVertexProgram); + _mesa_reference_shader_program(ctx, &save->GeometryShader, + ctx->Shader.CurrentGeometryProgram); + _mesa_reference_shader_program(ctx, &save->FragmentShader, + ctx->Shader.CurrentFragmentProgram); + _mesa_reference_shader_program(ctx, &save->ActiveShader, + ctx->Shader.CurrentFragmentProgram); + _mesa_UseProgramObjectARB(0); } } @@ -463,7 +478,8 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) _mesa_set_enable(ctx, GL_TEXTURE_1D, GL_FALSE); _mesa_set_enable(ctx, GL_TEXTURE_2D, GL_FALSE); _mesa_set_enable(ctx, GL_TEXTURE_3D, GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE); + if (ctx->Extensions.ARB_texture_cube_map) + _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE); _mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE, GL_FALSE); _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, GL_FALSE); _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, GL_FALSE); @@ -565,6 +581,7 @@ _mesa_meta_end(struct gl_context *ctx) if (state & META_ALPHA_TEST) { if (ctx->Color.AlphaEnabled != save->AlphaEnabled) _mesa_set_enable(ctx, GL_ALPHA_TEST, save->AlphaEnabled); + _mesa_AlphaFunc(save->AlphaFunc, save->AlphaRef); } if (state & META_BLEND) { @@ -664,9 +681,19 @@ _mesa_meta_end(struct gl_context *ctx) _mesa_reference_fragprog(ctx, &save->FragmentProgram, NULL); } - if (ctx->Extensions.ARB_shader_objects) { - _mesa_UseProgramObjectARB(save->Shader); - } + if (ctx->Extensions.ARB_vertex_shader) + _mesa_use_shader_program(ctx, GL_VERTEX_SHADER, save->VertexShader); + + if (ctx->Extensions.ARB_geometry_shader4) + _mesa_use_shader_program(ctx, GL_GEOMETRY_SHADER_ARB, + save->GeometryShader); + + if (ctx->Extensions.ARB_fragment_shader) + _mesa_use_shader_program(ctx, GL_FRAGMENT_SHADER, + save->FragmentShader); + + _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, + save->ActiveShader); } if (state & META_STENCIL_TEST) { @@ -1953,13 +1980,39 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, _mesa_meta_end(ctx); } +static GLboolean +alpha_test_raster_color(struct gl_context *ctx) +{ + GLfloat alpha = ctx->Current.RasterColor[ACOMP]; + GLfloat ref = ctx->Color.AlphaRef; + + switch (ctx->Color.AlphaFunc) { + case GL_NEVER: + return GL_FALSE; + case GL_LESS: + return alpha < ref; + case GL_EQUAL: + return alpha == ref; + case GL_LEQUAL: + return alpha <= ref; + case GL_GREATER: + return alpha > ref; + case GL_NOTEQUAL: + return alpha != ref; + case GL_GEQUAL: + return alpha >= ref; + case GL_ALWAYS: + return GL_TRUE; + default: + assert(0); + return GL_FALSE; + } +} /** - * Do glBitmap with a alpha texture quad. Use the alpha test to - * cull the 'off' bits. If alpha test is already enabled, fall back - * to swrast (should be a rare case). - * A bitmap cache as in the gallium/mesa state tracker would - * improve performance a lot. + * Do glBitmap with a alpha texture quad. Use the alpha test to cull + * the 'off' bits. A bitmap cache as in the gallium/mesa state + * tracker would improve performance a lot. */ void _mesa_meta_Bitmap(struct gl_context *ctx, @@ -1971,6 +2024,7 @@ _mesa_meta_Bitmap(struct gl_context *ctx, struct temp_texture *tex = get_bitmap_temp_texture(ctx); const GLenum texIntFormat = GL_ALPHA; const struct gl_pixelstore_attrib unpackSave = *unpack; + GLubyte fg, bg; struct vertex { GLfloat x, y, z, s, t, r, g, b, a; }; @@ -1982,7 +2036,7 @@ _mesa_meta_Bitmap(struct gl_context *ctx, * Check if swrast fallback is needed. */ if (ctx->_ImageTransferState || - ctx->Color.AlphaEnabled || + ctx->FragmentProgram._Enabled || ctx->Fog.Enabled || ctx->Texture._EnabledUnits || width > tex->MaxSize || @@ -1991,6 +2045,9 @@ _mesa_meta_Bitmap(struct gl_context *ctx, return; } + if (ctx->Color.AlphaEnabled && !alpha_test_raster_color(ctx)) + return; + /* Most GL state applies to glBitmap (like blending, stencil, etc), * but a there's a few things we need to override: */ @@ -2072,21 +2129,26 @@ _mesa_meta_Bitmap(struct gl_context *ctx, _mesa_BufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); } + /* choose different foreground/background alpha values */ + CLAMPED_FLOAT_TO_UBYTE(fg, ctx->Current.RasterColor[ACOMP]); + bg = (fg > 127 ? 0 : 255); + bitmap1 = _mesa_map_pbo_source(ctx, &unpackSave, bitmap1); if (!bitmap1) { _mesa_meta_end(ctx); return; } - bitmap8 = (GLubyte *) calloc(1, width * height); + bitmap8 = (GLubyte *) malloc(width * height); if (bitmap8) { + memset(bitmap8, bg, width * height); _mesa_expand_bitmap(width, height, &unpackSave, bitmap1, - bitmap8, width, 0xff); + bitmap8, width, fg); _mesa_set_enable(ctx, tex->Target, GL_TRUE); _mesa_set_enable(ctx, GL_ALPHA_TEST, GL_TRUE); - _mesa_AlphaFunc(GL_GREATER, 0.0); + _mesa_AlphaFunc(GL_NOTEQUAL, UBYTE_TO_FLOAT(bg)); setup_drawpix_texture(ctx, tex, newTex, texIntFormat, width, height, GL_ALPHA, GL_UNSIGNED_BYTE, bitmap8); @@ -2531,7 +2593,6 @@ copy_tex_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, { struct gl_texture_object *texObj; struct gl_texture_image *texImage; - GLsizei postConvWidth = width, postConvHeight = height; GLenum format, type; GLint bpp; void *buf; @@ -2539,6 +2600,7 @@ copy_tex_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, texObj = _mesa_get_current_tex_object(ctx, target); texImage = _mesa_get_tex_image(ctx, texObj, target, level); + /* Choose format/type for temporary image buffer */ format = _mesa_base_tex_format(ctx, internalFormat); type = get_temp_image_type(ctx, format); bpp = _mesa_bytes_per_pixel(format, type); @@ -2570,12 +2632,8 @@ copy_tex_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, ctx->Driver.FreeTexImageData(ctx, texImage); } - _mesa_init_teximage_fields(ctx, target, texImage, - postConvWidth, postConvHeight, 1, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + /* The texture's format was already chosen in _mesa_CopyTexImage() */ + ASSERT(texImage->TexFormat != MESA_FORMAT_NONE); /* * Store texture data (with pixel transfer ops) @@ -2628,7 +2686,8 @@ _mesa_meta_CopyTexImage2D(struct gl_context *ctx, GLenum target, GLint level, * Have to be careful with locking and meta state for pixel transfer. */ static void -copy_tex_sub_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, +copy_tex_sub_image(struct gl_context *ctx, + GLuint dims, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) @@ -2642,6 +2701,7 @@ copy_tex_sub_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint lev texObj = _mesa_get_current_tex_object(ctx, target); texImage = _mesa_select_tex_image(ctx, texObj, target, level); + /* Choose format/type for temporary image buffer */ format = _mesa_get_format_base_format(texImage->TexFormat); type = get_temp_image_type(ctx, format); bpp = _mesa_bytes_per_pixel(format, type); diff --git a/src/mesa/drivers/dri/Makefile.template b/src/mesa/drivers/dri/Makefile.template index a00018cafa..4ecddbc048 100644 --- a/src/mesa/drivers/dri/Makefile.template +++ b/src/mesa/drivers/dri/Makefile.template @@ -86,11 +86,12 @@ subdirs: symlinks: -depend: $(C_SOURCES) $(ASM_SOURCES) $(SYMLINKS) +depend: $(C_SOURCES) $(CXX_SOURCES) $(ASM_SOURCES) $(SYMLINKS) @ echo "running $(MKDEP)" @ rm -f depend @ touch depend - @ $(MKDEP) $(MKDEP_OPTIONS) $(DRIVER_DEFINES) $(INCLUDES) $(C_SOURCES) \ + @ $(MKDEP) $(MKDEP_OPTIONS) $(DRIVER_DEFINES) $(INCLUDES) \ + $(C_SOURCES) $(CXX_SOURCES) \ $(ASM_SOURCES) > /dev/null 2>/dev/null diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index c195c4fd8f..42be77fd7c 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -738,12 +738,18 @@ static const struct { unsigned int attrib, offset; } attribMap[] = { #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) + +/** + * Return the value of a configuration attribute. The attribute is + * indicated by the index. + */ static int driGetConfigAttribIndex(const __DRIconfig *config, unsigned int index, unsigned int *value) { switch (attribMap[index].attrib) { case __DRI_ATTRIB_RENDER_TYPE: + /* no support for color index mode */ *value = __DRI_ATTRIB_RGBA_BIT; break; case __DRI_ATTRIB_CONFIG_CAVEAT: @@ -755,13 +761,16 @@ driGetConfigAttribIndex(const __DRIconfig *config, *value = 0; break; case __DRI_ATTRIB_SWAP_METHOD: + /* XXX no return value??? */ break; case __DRI_ATTRIB_FLOAT_MODE: + /* this field is not int-sized */ *value = config->modes.floatMode; break; default: + /* any other int-sized field */ *value = *(unsigned int *) ((char *) &config->modes + attribMap[index].offset); @@ -771,6 +780,13 @@ driGetConfigAttribIndex(const __DRIconfig *config, return GL_TRUE; } + +/** + * Get the value of a configuration attribute. + * \param attrib the attribute (one of the _DRI_ATTRIB_x tokens) + * \param value returns the attribute's value + * \return 1 for success, 0 for failure + */ int driGetConfigAttrib(const __DRIconfig *config, unsigned int attrib, unsigned int *value) @@ -784,6 +800,14 @@ driGetConfigAttrib(const __DRIconfig *config, return GL_FALSE; } + +/** + * Get a configuration attribute name and value, given an index. + * \param index which field of the __DRIconfig to query + * \param attrib returns the attribute name (one of the _DRI_ATTRIB_x tokens) + * \param value returns the attribute's value + * \return 1 for success, 0 for failure + */ int driIndexConfigAttrib(const __DRIconfig *config, int index, unsigned int *attrib, unsigned int *value) diff --git a/src/mesa/drivers/dri/common/xmlpool/Makefile b/src/mesa/drivers/dri/common/xmlpool/Makefile index 62ec919ea6..b71629e9f1 100644 --- a/src/mesa/drivers/dri/common/xmlpool/Makefile +++ b/src/mesa/drivers/dri/common/xmlpool/Makefile @@ -62,7 +62,7 @@ clean: # Default target options.h options.h: t_options.h mo - python gen_xmlpool.py $(LANGS) > options.h + $(PYTHON2) $(PYTHON_FLAGS) gen_xmlpool.py $(LANGS) > options.h # Update .mo files from the corresponding .po files. mo: diff --git a/src/mesa/drivers/dri/i915/intel_structs.h b/src/mesa/drivers/dri/i915/intel_structs.h deleted file mode 100644 index 522e3bd92c..0000000000 --- a/src/mesa/drivers/dri/i915/intel_structs.h +++ /dev/null @@ -1,132 +0,0 @@ -#ifndef INTEL_STRUCTS_H -#define INTEL_STRUCTS_H - -struct br0 { - GLuint length:8; - GLuint pad0:3; - GLuint dst_tiled:1; - GLuint pad1:8; - GLuint write_rgb:1; - GLuint write_alpha:1; - GLuint opcode:7; - GLuint client:3; -}; - - -struct br13 { - GLint dest_pitch:16; - GLuint rop:8; - GLuint color_depth:2; - GLuint pad1:3; - GLuint mono_source_transparency:1; - GLuint clipping_enable:1; - GLuint pad0:1; -}; - - - -/* This is an attempt to move some of the 2D interaction in this - * driver to using structs for packets rather than a bunch of #defines - * and dwords. - */ -struct xy_color_blit { - struct br0 br0; - struct br13 br13; - - struct { - GLuint dest_x1:16; - GLuint dest_y1:16; - } dw2; - - struct { - GLuint dest_x2:16; - GLuint dest_y2:16; - } dw3; - - GLuint dest_base_addr; - GLuint color; -}; - -struct xy_src_copy_blit { - struct br0 br0; - struct br13 br13; - - struct { - GLuint dest_x1:16; - GLuint dest_y1:16; - } dw2; - - struct { - GLuint dest_x2:16; - GLuint dest_y2:16; - } dw3; - - GLuint dest_base_addr; - - struct { - GLuint src_x1:16; - GLuint src_y1:16; - } dw5; - - struct { - GLint src_pitch:16; - GLuint pad:16; - } dw6; - - GLuint src_base_addr; -}; - -struct xy_setup_blit { - struct br0 br0; - struct br13 br13; - - struct { - GLuint clip_x1:16; - GLuint clip_y1:16; - } dw2; - - struct { - GLuint clip_x2:16; - GLuint clip_y2:16; - } dw3; - - GLuint dest_base_addr; - GLuint background_color; - GLuint foreground_color; - GLuint pattern_base_addr; -}; - - -struct xy_text_immediate_blit { - struct { - GLuint length:8; - GLuint pad2:3; - GLuint dst_tiled:1; - GLuint pad1:4; - GLuint byte_packed:1; - GLuint pad0:5; - GLuint opcode:7; - GLuint client:3; - } dw0; - - struct { - GLuint dest_x1:16; - GLuint dest_y1:16; - } dw1; - - struct { - GLuint dest_x2:16; - GLuint dest_y2:16; - } dw2; - - /* Src bitmap data follows as inline dwords. - */ -}; - - -#define CLIENT_2D 0x2 -#define OPCODE_XY_SETUP_BLT 0x1 -#define OPCODE_XY_COLOR_BLT 0x50 -#define OPCODE_XY_TEXT_IMMEDIATE_BLT 0x31 - -#endif diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c index 00418760da..a8369b07c3 100644 --- a/src/mesa/drivers/dri/i965/brw_cc.c +++ b/src/mesa/drivers/dri/i965/brw_cc.c @@ -204,7 +204,7 @@ static void upload_cc_unit(struct brw_context *brw) cc.cc2.depth_write_enable = ctx->Depth.Mask; } - if (intel->stats_wm || (INTEL_DEBUG & DEBUG_STATS)) + if (intel->stats_wm || unlikely(INTEL_DEBUG & DEBUG_STATS)) cc.cc5.statistics_enable = 1; /* CACHE_NEW_CC_VP */ diff --git a/src/mesa/drivers/dri/i965/brw_clip.c b/src/mesa/drivers/dri/i965/brw_clip.c index 15e60bf3ce..1be165cc9a 100644 --- a/src/mesa/drivers/dri/i965/brw_clip.c +++ b/src/mesa/drivers/dri/i965/brw_clip.c @@ -133,13 +133,13 @@ static void compile_clip_prog( struct brw_context *brw, */ program = brw_get_program(&c.func, &program_size); - if (INTEL_DEBUG & DEBUG_CLIP) { + if (unlikely(INTEL_DEBUG & DEBUG_CLIP)) { printf("clip:\n"); for (i = 0; i < program_size / sizeof(struct brw_instruction); i++) brw_disasm(stdout, &((struct brw_instruction *)program)[i], intel->gen); printf("\n"); - } + } /* Upload */ diff --git a/src/mesa/drivers/dri/i965/brw_clip_state.c b/src/mesa/drivers/dri/i965/brw_clip_state.c index 885167da90..60fd5fa7d9 100644 --- a/src/mesa/drivers/dri/i965/brw_clip_state.c +++ b/src/mesa/drivers/dri/i965/brw_clip_state.c @@ -114,10 +114,10 @@ clip_unit_create_from_key(struct brw_context *brw, clip.thread4.max_threads = 1 - 1; } - if (INTEL_DEBUG & DEBUG_SINGLE_THREAD) + if (unlikely(INTEL_DEBUG & DEBUG_SINGLE_THREAD)) clip.thread4.max_threads = 0; - if (INTEL_DEBUG & DEBUG_STATS) + if (unlikely(INTEL_DEBUG & DEBUG_STATS)) clip.thread4.stats_enable = 1; clip.clip5.userclip_enable_flags = 0x7f; diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 3c4ae8a7a4..cb0a8b96c9 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -124,7 +124,7 @@ GLboolean brwCreateContext( int api, (i == MESA_SHADER_FRAGMENT); if (intel->gen == 6) - ctx->ShaderCompilerOptions[i].EmitNoIfs = GL_TRUE; + ctx->ShaderCompilerOptions[i].EmitNoIfs = (i == MESA_SHADER_VERTEX); } ctx->Const.VertexProgram.MaxNativeInstructions = (16 * 1024); diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index f205c07a72..335339515a 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -173,8 +173,6 @@ struct brw_fragment_program { GLuint id; /**< serial no. to identify frag progs, never re-used */ GLboolean isGLSL; /**< really, any IF/LOOP/CONT/BREAK instructions */ - GLboolean use_const_buffer; - /** for debugging, which texture units are referenced */ GLbitfield tex_units_used; }; @@ -190,6 +188,13 @@ struct brw_shader_program { struct gl_shader_program base; }; +enum param_conversion { + PARAM_NO_CONVERT, + PARAM_CONVERT_F2I, + PARAM_CONVERT_F2U, + PARAM_CONVERT_F2B, +}; + /* Data about a particular attempt to compile a program. Note that * there can be many of these, each in a different GL state * corresponding to a different brw_wm_prog_key struct, with different @@ -204,12 +209,16 @@ struct brw_wm_prog_data { GLuint total_scratch; GLuint nr_params; /**< number of float params/constants */ + GLuint nr_pull_params; GLboolean error; /* Pointer to tracked values (only valid once * _mesa_load_state_parameters has been called at runtime). */ - const GLfloat *param[BRW_MAX_CURBE]; + const float *param[MAX_UNIFORMS * 4]; /* should be: BRW_MAX_CURBE */ + enum param_conversion param_convert[MAX_UNIFORMS * 4]; + const float *pull_param[MAX_UNIFORMS * 4]; + enum param_conversion pull_param_convert[MAX_UNIFORMS * 4]; }; struct brw_sf_prog_data { @@ -800,6 +809,35 @@ brw_fragment_program_const(const struct gl_fragment_program *p) return (const struct brw_fragment_program *) p; } +static inline +float convert_param(enum param_conversion conversion, float param) +{ + union { + float f; + uint32_t u; + int32_t i; + } fi; + + switch (conversion) { + case PARAM_NO_CONVERT: + return param; + case PARAM_CONVERT_F2I: + fi.i = param; + return fi.f; + case PARAM_CONVERT_F2U: + fi.u = param; + return fi.f; + case PARAM_CONVERT_F2B: + if (param != 0.0) + fi.i = 1; + else + fi.i = 0; + return fi.f; + default: + return param; + } +} + GLboolean brw_do_cubemap_normalize(struct exec_list *instructions); #endif diff --git a/src/mesa/drivers/dri/i965/brw_curbe.c b/src/mesa/drivers/dri/i965/brw_curbe.c index 9ce0d8decd..7b823eb201 100644 --- a/src/mesa/drivers/dri/i965/brw_curbe.c +++ b/src/mesa/drivers/dri/i965/brw_curbe.c @@ -199,8 +199,10 @@ static void prepare_constant_buffer(struct brw_context *brw) GLuint offset = brw->curbe.wm_start * 16; /* copy float constants */ - for (i = 0; i < brw->wm.prog_data->nr_params; i++) - buf[offset + i] = *brw->wm.prog_data->param[i]; + for (i = 0; i < brw->wm.prog_data->nr_params; i++) { + buf[offset + i] = convert_param(brw->wm.prog_data->param_convert[i], + *brw->wm.prog_data->param[i]); + } } diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h index 9633c95ff5..239586a036 100644 --- a/src/mesa/drivers/dri/i965/brw_defines.h +++ b/src/mesa/drivers/dri/i965/brw_defines.h @@ -551,6 +551,7 @@ #define BRW_OPCODE_POP 47 #define BRW_OPCODE_WAIT 48 #define BRW_OPCODE_SEND 49 +#define BRW_OPCODE_SENDC 50 #define BRW_OPCODE_MATH 56 #define BRW_OPCODE_ADD 64 #define BRW_OPCODE_MUL 65 @@ -929,6 +930,11 @@ #define CMD_3D_CLIP_STATE 0x7812 /* GEN6+ */ /* DW1 */ # define GEN6_CLIP_STATISTICS_ENABLE (1 << 10) +/** + * Just does cheap culling based on the clip distance. Bits must be + * disjoint with USER_CLIP_CLIP_DISTANCE bits. + */ +# define GEN6_USER_CLIP_CULL_DISTANCES_SHIFT 0 /* DW2 */ # define GEN6_CLIP_ENABLE (1 << 31) # define GEN6_CLIP_API_OGL (0 << 30) @@ -936,6 +942,8 @@ # define GEN6_CLIP_XY_TEST (1 << 28) # define GEN6_CLIP_Z_TEST (1 << 27) # define GEN6_CLIP_GB_TEST (1 << 26) +/** 8-bit field of which user clip distances to clip aganist. */ +# define GEN6_USER_CLIP_CLIP_DISTANCES_SHIFT 16 # define GEN6_CLIP_MODE_NORMAL (0 << 13) # define GEN6_CLIP_MODE_REJECT_ALL (3 << 13) # define GEN6_CLIP_MODE_ACCEPT_ALL (4 << 13) diff --git a/src/mesa/drivers/dri/i965/brw_disasm.c b/src/mesa/drivers/dri/i965/brw_disasm.c index 12b8f2e467..962c04128b 100644 --- a/src/mesa/drivers/dri/i965/brw_disasm.c +++ b/src/mesa/drivers/dri/i965/brw_disasm.c @@ -72,6 +72,7 @@ struct { [BRW_OPCODE_CMPN] = { .name = "cmpn", .nsrc = 2, .ndst = 1 }, [BRW_OPCODE_SEND] = { .name = "send", .nsrc = 1, .ndst = 1 }, + [BRW_OPCODE_SENDC] = { .name = "sendc", .nsrc = 1, .ndst = 1 }, [BRW_OPCODE_NOP] = { .name = "nop", .nsrc = 0, .ndst = 0 }, [BRW_OPCODE_JMPI] = { .name = "jmpi", .nsrc = 1, .ndst = 0 }, [BRW_OPCODE_IF] = { .name = "if", .nsrc = 2, .ndst = 0 }, @@ -460,6 +461,9 @@ static int reg (FILE *file, GLuint _reg_file, GLuint _reg_nr) case BRW_ARF_ACCUMULATOR: format (file, "acc%d", _reg_nr & 0x0f); break; + case BRW_ARF_FLAG: + format (file, "f%d", _reg_nr & 0x0f); + break; case BRW_ARF_MASK: format (file, "mask%d", _reg_nr & 0x0f); break; @@ -876,7 +880,8 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen) string (file, " "); err |= control (file, "function", math_function, inst->header.destreg__conditionalmod, NULL); - } else if (inst->header.opcode != BRW_OPCODE_SEND) + } else if (inst->header.opcode != BRW_OPCODE_SEND && + inst->header.opcode != BRW_OPCODE_SENDC) err |= control (file, "conditional modifier", conditional_modifier, inst->header.destreg__conditionalmod, NULL); @@ -907,7 +912,8 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen) err |= src1 (file, inst); } - if (inst->header.opcode == BRW_OPCODE_SEND) { + if (inst->header.opcode == BRW_OPCODE_SEND || + inst->header.opcode == BRW_OPCODE_SENDC) { int target; if (gen >= 6) @@ -1070,7 +1076,8 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen) err |= control (file, "thread control", thread_ctrl, inst->header.thread_control, &space); if (gen >= 6) err |= control (file, "acc write control", accwr, inst->header.acc_wr_control, &space); - if (inst->header.opcode == BRW_OPCODE_SEND) + if (inst->header.opcode == BRW_OPCODE_SEND || + inst->header.opcode == BRW_OPCODE_SENDC) err |= control (file, "end of thread", end_of_thread, inst->bits3.generic.end_of_thread, &space); if (space) diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index 04bc8cb2db..a1f403ca4e 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -42,7 +42,7 @@ #include "intel_batchbuffer.h" -#define FILE_DEBUG_FLAG DEBUG_BATCH +#define FILE_DEBUG_FLAG DEBUG_PRIMS static GLuint prim_to_hw_prim[GL_POLYGON+1] = { _3DPRIM_POINTLIST, @@ -83,8 +83,7 @@ static GLuint brw_set_prim(struct brw_context *brw, struct gl_context *ctx = &brw->intel.ctx; GLenum mode = prim->mode; - if (INTEL_DEBUG & DEBUG_PRIMS) - printf("PRIM: %s\n", _mesa_lookup_enum_by_nr(prim->mode)); + DBG("PRIM: %s\n", _mesa_lookup_enum_by_nr(prim->mode)); /* Slight optimization to avoid the GS program when not needed: */ @@ -133,9 +132,8 @@ static void brw_emit_prim(struct brw_context *brw, struct brw_3d_primitive prim_packet; struct intel_context *intel = &brw->intel; - if (INTEL_DEBUG & DEBUG_PRIMS) - printf("PRIM: %s %d %d\n", _mesa_lookup_enum_by_nr(prim->mode), - prim->start, prim->count); + DBG("PRIM: %s %d %d\n", _mesa_lookup_enum_by_nr(prim->mode), + prim->start, prim->count); prim_packet.header.opcode = CMD_3D_PRIM; prim_packet.header.length = sizeof(prim_packet)/4 - 2; diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index c4654360d4..2cefe614dd 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -168,7 +168,7 @@ static GLuint byte_types_scale[5] = { static GLuint get_surface_type( GLenum type, GLuint size, GLenum format, GLboolean normalized ) { - if (INTEL_DEBUG & DEBUG_VERTS) + if (unlikely(INTEL_DEBUG & DEBUG_VERTS)) printf("type %s size %d normalized %d\n", _mesa_lookup_enum_by_nr(type), size, normalized); diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h index 0e3ccfa46c..b4538e6e8a 100644 --- a/src/mesa/drivers/dri/i965/brw_eu.h +++ b/src/mesa/drivers/dri/i965/brw_eu.h @@ -900,14 +900,24 @@ void brw_math2(struct brw_compile *p, void brw_oword_block_read(struct brw_compile *p, struct brw_reg dest, struct brw_reg mrf, - int num_regs, - GLuint offset); + uint32_t offset, + uint32_t bind_table_index); -void brw_dp_READ_4( struct brw_compile *p, - struct brw_reg dest, - GLboolean relAddr, - GLuint location, - GLuint bind_table_index ); +void brw_oword_block_read_scratch(struct brw_compile *p, + struct brw_reg dest, + struct brw_reg mrf, + int num_regs, + GLuint offset); + +void brw_oword_block_write_scratch(struct brw_compile *p, + struct brw_reg mrf, + int num_regs, + GLuint offset); + +void brw_dword_scattered_read(struct brw_compile *p, + struct brw_reg dest, + struct brw_reg mrf, + uint32_t bind_table_index); void brw_dp_READ_4_vs( struct brw_compile *p, struct brw_reg dest, @@ -920,11 +930,6 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, GLuint offset, GLuint bind_table_index); -void brw_oword_block_write(struct brw_compile *p, - struct brw_reg mrf, - int num_regs, - GLuint offset); - /* If/else/endif. Works by manipulating the execution flags on each * channel. */ diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c index 6fbc39672f..9cb941dacf 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c @@ -496,20 +496,34 @@ static void brw_set_dp_write_message( struct brw_context *brw, } } -static void brw_set_dp_read_message( struct brw_context *brw, - struct brw_instruction *insn, - GLuint binding_table_index, - GLuint msg_control, - GLuint msg_type, - GLuint target_cache, - GLuint msg_length, - GLuint response_length, - GLuint end_of_thread ) +static void +brw_set_dp_read_message(struct brw_context *brw, + struct brw_instruction *insn, + GLuint binding_table_index, + GLuint msg_control, + GLuint msg_type, + GLuint target_cache, + GLuint msg_length, + GLuint response_length) { struct intel_context *intel = &brw->intel; brw_set_src1(insn, brw_imm_d(0)); - if (intel->gen == 5) { + if (intel->gen >= 6) { + insn->bits3.dp_render_cache.binding_table_index = binding_table_index; + insn->bits3.dp_render_cache.msg_control = msg_control; + insn->bits3.dp_render_cache.pixel_scoreboard_clear = 0; + insn->bits3.dp_render_cache.msg_type = msg_type; + insn->bits3.dp_render_cache.send_commit_msg = 0; + insn->bits3.dp_render_cache.header_present = 1; + insn->bits3.dp_render_cache.response_length = response_length; + insn->bits3.dp_render_cache.msg_length = msg_length; + insn->bits3.dp_render_cache.end_of_thread = 0; + insn->header.destreg__conditionalmod = BRW_MESSAGE_TARGET_DATAPORT_READ; + /* XXX really need below? */ + insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_READ; + insn->bits2.send_gen5.end_of_thread = 0; + } else if (intel->gen == 5) { insn->bits3.dp_read_gen5.binding_table_index = binding_table_index; insn->bits3.dp_read_gen5.msg_control = msg_control; insn->bits3.dp_read_gen5.msg_type = msg_type; @@ -518,9 +532,9 @@ static void brw_set_dp_read_message( struct brw_context *brw, insn->bits3.dp_read_gen5.response_length = response_length; insn->bits3.dp_read_gen5.msg_length = msg_length; insn->bits3.dp_read_gen5.pad1 = 0; - insn->bits3.dp_read_gen5.end_of_thread = end_of_thread; + insn->bits3.dp_read_gen5.end_of_thread = 0; insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_READ; - insn->bits2.send_gen5.end_of_thread = end_of_thread; + insn->bits2.send_gen5.end_of_thread = 0; } else { insn->bits3.dp_read.binding_table_index = binding_table_index; /*0:7*/ insn->bits3.dp_read.msg_control = msg_control; /*8:11*/ @@ -530,7 +544,7 @@ static void brw_set_dp_read_message( struct brw_context *brw, insn->bits3.dp_read.msg_length = msg_length; /*20:23*/ insn->bits3.dp_read.msg_target = BRW_MESSAGE_TARGET_DATAPORT_READ; /*24:27*/ insn->bits3.dp_read.pad1 = 0; /*28:30*/ - insn->bits3.dp_read.end_of_thread = end_of_thread; /*31*/ + insn->bits3.dp_read.end_of_thread = 0; /*31*/ } } @@ -955,7 +969,7 @@ void brw_ENDIF(struct brw_compile *p, brw_set_src0(insn, retype(brw_vec4_grf(0,0), BRW_REGISTER_TYPE_UD)); brw_set_src1(insn, brw_imm_d(0x0)); } else { - brw_set_dest(insn, retype(brw_vec4_grf(0,0), BRW_REGISTER_TYPE_W)); + brw_set_dest(insn, brw_imm_w(0)); brw_set_src0(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); brw_set_src1(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); } @@ -1359,10 +1373,10 @@ void brw_math_16( struct brw_compile *p, * The offset must be aligned to oword size (16 bytes). Used for * register spilling. */ -void brw_oword_block_write(struct brw_compile *p, - struct brw_reg mrf, - int num_regs, - GLuint offset) +void brw_oword_block_write_scratch(struct brw_compile *p, + struct brw_reg mrf, + int num_regs, + GLuint offset) { struct intel_context *intel = &p->brw->intel; uint32_t msg_control; @@ -1458,11 +1472,11 @@ void brw_oword_block_write(struct brw_compile *p, * spilling. */ void -brw_oword_block_read(struct brw_compile *p, - struct brw_reg dest, - struct brw_reg mrf, - int num_regs, - GLuint offset) +brw_oword_block_read_scratch(struct brw_compile *p, + struct brw_reg dest, + struct brw_reg mrf, + int num_regs, + GLuint offset) { uint32_t msg_control; int rlen; @@ -1512,69 +1526,108 @@ brw_oword_block_read(struct brw_compile *p, BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, /* msg_type */ 1, /* target cache (render/scratch) */ 1, /* msg_length */ - rlen, - 0); /* eot */ + rlen); } } - /** * Read a float[4] vector from the data port Data Cache (const buffer). * Location (in buffer) should be a multiple of 16. * Used for fetching shader constants. - * If relAddr is true, we'll do an indirect fetch using the address register. */ -void brw_dp_READ_4( struct brw_compile *p, - struct brw_reg dest, - GLboolean relAddr, - GLuint location, - GLuint bind_table_index ) +void brw_oword_block_read(struct brw_compile *p, + struct brw_reg dest, + struct brw_reg mrf, + uint32_t offset, + uint32_t bind_table_index) { - /* XXX: relAddr not implemented */ - GLuint msg_reg_nr = 1; - { - struct brw_reg b; - brw_push_insn_state(p); - brw_set_predicate_control(p, BRW_PREDICATE_NONE); - brw_set_compression_control(p, BRW_COMPRESSION_NONE); - brw_set_mask_control(p, BRW_MASK_DISABLE); + struct intel_context *intel = &p->brw->intel; - /* Setup MRF[1] with location/offset into const buffer */ - b = brw_message_reg(msg_reg_nr); - b = retype(b, BRW_REGISTER_TYPE_UD); - /* XXX I think we're setting all the dwords of MRF[1] to 'location'. - * when the docs say only dword[2] should be set. Hmmm. But it works. - */ - brw_MOV(p, b, brw_imm_ud(location)); - brw_pop_insn_state(p); - } + /* On newer hardware, offset is in units of owords. */ + if (intel->gen >= 6) + offset /= 16; - { - struct brw_instruction *insn = next_insn(p, BRW_OPCODE_SEND); - - insn->header.predicate_control = BRW_PREDICATE_NONE; - insn->header.compression_control = BRW_COMPRESSION_NONE; - insn->header.destreg__conditionalmod = msg_reg_nr; - insn->header.mask_control = BRW_MASK_DISABLE; - - /* cast dest to a uword[8] vector */ - dest = retype(vec8(dest), BRW_REGISTER_TYPE_UW); + mrf = retype(mrf, BRW_REGISTER_TYPE_UD); - brw_set_dest(insn, dest); - brw_set_src0(insn, brw_null_reg()); + brw_push_insn_state(p); + brw_set_predicate_control(p, BRW_PREDICATE_NONE); + brw_set_compression_control(p, BRW_COMPRESSION_NONE); + brw_set_mask_control(p, BRW_MASK_DISABLE); - brw_set_dp_read_message(p->brw, - insn, - bind_table_index, - 0, /* msg_control (0 means 1 Oword) */ - BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, /* msg_type */ - 0, /* source cache = data cache */ - 1, /* msg_length */ - 1, /* response_length (1 Oword) */ - 0); /* eot */ + brw_MOV(p, mrf, retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD)); + + /* set message header global offset field (reg 0, element 2) */ + brw_MOV(p, + retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, + mrf.nr, + 2), BRW_REGISTER_TYPE_UD), + brw_imm_ud(offset)); + + struct brw_instruction *insn = next_insn(p, BRW_OPCODE_SEND); + insn->header.destreg__conditionalmod = mrf.nr; + + /* cast dest to a uword[8] vector */ + dest = retype(vec8(dest), BRW_REGISTER_TYPE_UW); + + brw_set_dest(insn, dest); + if (intel->gen >= 6) { + brw_set_src0(insn, mrf); + } else { + brw_set_src0(insn, brw_null_reg()); } + + brw_set_dp_read_message(p->brw, + insn, + bind_table_index, + BRW_DATAPORT_OWORD_BLOCK_1_OWORDLOW, + BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, + 0, /* source cache = data cache */ + 1, /* msg_length */ + 1); /* response_length (1 reg, 2 owords!) */ + + brw_pop_insn_state(p); } +/** + * Read a set of dwords from the data port Data Cache (const buffer). + * + * Location (in buffer) appears as UD offsets in the register after + * the provided mrf header reg. + */ +void brw_dword_scattered_read(struct brw_compile *p, + struct brw_reg dest, + struct brw_reg mrf, + uint32_t bind_table_index) +{ + mrf = retype(mrf, BRW_REGISTER_TYPE_UD); + + brw_push_insn_state(p); + brw_set_predicate_control(p, BRW_PREDICATE_NONE); + brw_set_compression_control(p, BRW_COMPRESSION_NONE); + brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_MOV(p, mrf, retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD)); + brw_pop_insn_state(p); + + struct brw_instruction *insn = next_insn(p, BRW_OPCODE_SEND); + insn->header.destreg__conditionalmod = mrf.nr; + + /* cast dest to a uword[8] vector */ + dest = retype(vec8(dest), BRW_REGISTER_TYPE_UW); + + brw_set_dest(insn, dest); + brw_set_src0(insn, brw_null_reg()); + + brw_set_dp_read_message(p->brw, + insn, + bind_table_index, + BRW_DATAPORT_DWORD_SCATTERED_BLOCK_8DWORDS, + BRW_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ, + 0, /* source cache = data cache */ + 2, /* msg_length */ + 1); /* response_length */ +} + + /** * Read float[4] constant(s) from VS constant buffer. @@ -1628,8 +1681,7 @@ void brw_dp_READ_4_vs(struct brw_compile *p, BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, /* msg_type */ 0, /* source cache = data cache */ 1, /* msg_length */ - 1, /* response_length (1 Oword) */ - 0); /* eot */ + 1); /* response_length (1 Oword) */ } /** @@ -1682,8 +1734,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, msg_type, 0, /* source cache = data cache */ 2, /* msg_length */ - 1, /* response_length */ - 0); /* eot */ + 1); /* response_length */ } @@ -1703,8 +1754,13 @@ void brw_fb_WRITE(struct brw_compile *p, GLuint msg_control, msg_type; GLboolean header_present = GL_TRUE; - insn = next_insn(p, BRW_OPCODE_SEND); - insn->header.predicate_control = 0; /* XXX */ + if (intel->gen >= 6 && binding_table_index == 0) { + insn = next_insn(p, BRW_OPCODE_SENDC); + } else { + insn = next_insn(p, BRW_OPCODE_SEND); + } + /* The execution mask is ignored for render target writes. */ + insn->header.predicate_control = 0; insn->header.compression_control = BRW_COMPRESSION_NONE; if (intel->gen >= 6) { diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 174f622d59..edb02fabb2 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -89,8 +89,6 @@ brw_compile_shader(struct gl_context *ctx, struct gl_shader *shader) GLboolean brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) { - struct intel_context *intel = intel_context(ctx); - struct brw_shader *shader = (struct brw_shader *)prog->_LinkedShaders[MESA_SHADER_FRAGMENT]; if (shader != NULL) { @@ -103,10 +101,12 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) clone_ir_list(mem_ctx, shader->ir, shader->base.ir); do_mat_op_to_vec(shader->ir); - do_mod_to_fract(shader->ir); - do_div_to_mul_rcp(shader->ir); - do_sub_to_add_neg(shader->ir); - do_explog_to_explog2(shader->ir); + lower_instructions(shader->ir, + MOD_TO_FRACT | + DIV_TO_MUL_RCP | + SUB_TO_ADD_NEG | + EXP_TO_EXP2 | + LOG_TO_LOG2); do_lower_texture_projection(shader->ir); brw_do_cubemap_normalize(shader->ir); @@ -132,9 +132,7 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) GL_TRUE, /* temp */ GL_TRUE /* uniform */ ) || progress; - if (intel->gen == 6) { - progress = do_if_to_cond_assign(shader->ir) || progress; - } + progress = lower_quadop_vector(shader->ir, false) || progress; } while (progress); validate_ir_tree(shader->ir); @@ -179,6 +177,46 @@ type_size(const struct glsl_type *type) } } +/** + * Returns how many MRFs an FS opcode will write over. + * + * Note that this is not the 0 or 1 implied writes in an actual gen + * instruction -- the FS opcodes often generate MOVs in addition. + */ +int +fs_visitor::implied_mrf_writes(fs_inst *inst) +{ + if (inst->mlen == 0) + return 0; + + switch (inst->opcode) { + case FS_OPCODE_RCP: + case FS_OPCODE_RSQ: + case FS_OPCODE_SQRT: + case FS_OPCODE_EXP2: + case FS_OPCODE_LOG2: + case FS_OPCODE_SIN: + case FS_OPCODE_COS: + return 1; + case FS_OPCODE_POW: + return 2; + case FS_OPCODE_TEX: + case FS_OPCODE_TXB: + case FS_OPCODE_TXL: + return 1; + case FS_OPCODE_FB_WRITE: + return 2; + case FS_OPCODE_PULL_CONSTANT_LOAD: + case FS_OPCODE_UNSPILL: + return 1; + case FS_OPCODE_SPILL: + return 2; + default: + assert(!"not reached"); + return inst->mlen; + } +} + int fs_visitor::virtual_grf_alloc(int size) { @@ -228,6 +266,7 @@ brw_type_for_base_type(const struct glsl_type *type) return BRW_REGISTER_TYPE_UD; case GLSL_TYPE_ARRAY: case GLSL_TYPE_STRUCT: + case GLSL_TYPE_SAMPLER: /* These should be overridden with the type of the member when * dereferenced into. BRW_REGISTER_TYPE_UD seems like a likely * way to trip up if we don't. @@ -286,7 +325,30 @@ fs_visitor::setup_uniform_values(int loc, const glsl_type *type) case GLSL_TYPE_BOOL: vec_values = fp->Base.Parameters->ParameterValues[loc]; for (unsigned int i = 0; i < type->vector_elements; i++) { - c->prog_data.param[c->prog_data.nr_params++] = &vec_values[i]; + unsigned int param = c->prog_data.nr_params++; + + assert(param < ARRAY_SIZE(c->prog_data.param)); + + switch (type->base_type) { + case GLSL_TYPE_FLOAT: + c->prog_data.param_convert[param] = PARAM_NO_CONVERT; + break; + case GLSL_TYPE_UINT: + c->prog_data.param_convert[param] = PARAM_CONVERT_F2U; + break; + case GLSL_TYPE_INT: + c->prog_data.param_convert[param] = PARAM_CONVERT_F2I; + break; + case GLSL_TYPE_BOOL: + c->prog_data.param_convert[param] = PARAM_CONVERT_F2B; + break; + default: + assert(!"not reached"); + c->prog_data.param_convert[param] = PARAM_NO_CONVERT; + break; + } + + c->prog_data.param[param] = &vec_values[i]; } return 1; @@ -370,6 +432,8 @@ fs_visitor::setup_builtin_uniform_values(ir_variable *ir) break; last_swiz = swiz; + c->prog_data.param_convert[c->prog_data.nr_params] = + PARAM_NO_CONVERT; c->prog_data.param[c->prog_data.nr_params++] = &vec_values[swiz]; } } @@ -383,6 +447,7 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir) fs_reg wpos = *reg; fs_reg neg_y = this->pixel_y; neg_y.negate = true; + bool flip = !ir->origin_upper_left ^ c->key.render_to_fbo; /* gl_FragCoord.x */ if (ir->pixel_center_integer) { @@ -393,13 +458,13 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir) wpos.reg_offset++; /* gl_FragCoord.y */ - if (ir->origin_upper_left && ir->pixel_center_integer) { + if (!flip && ir->pixel_center_integer) { emit(fs_inst(BRW_OPCODE_MOV, wpos, this->pixel_y)); } else { fs_reg pixel_y = this->pixel_y; float offset = (ir->pixel_center_integer ? 0.0 : 0.5); - if (!ir->origin_upper_left) { + if (flip) { pixel_y.negate = true; offset += c->key.drawable_height - 1.0; } @@ -624,6 +689,7 @@ fs_visitor::visit(ir_variable *ir) } reg = new(this->mem_ctx) fs_reg(UNIFORM, param_index); + reg->type = brw_type_for_base_type(ir->type); } if (!reg) @@ -678,6 +744,27 @@ fs_visitor::visit(ir_dereference_array *ir) } } +/* Instruction selection: Produce a MOV.sat instead of + * MIN(MAX(val, 0), 1) when possible. + */ +bool +fs_visitor::try_emit_saturate(ir_expression *ir) +{ + ir_rvalue *sat_val = ir->as_rvalue_to_saturate(); + + if (!sat_val) + return false; + + sat_val->accept(this); + fs_reg src = this->result; + + this->result = fs_reg(this, ir->type); + fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, src)); + inst->saturate = true; + + return true; +} + void fs_visitor::visit(ir_expression *ir) { @@ -685,6 +772,11 @@ fs_visitor::visit(ir_expression *ir) fs_reg op[2], temp; fs_inst *inst; + assert(ir->get_num_operands() <= 2); + + if (try_emit_saturate(ir)) + return; + for (operand = 0; operand < ir->get_num_operands(); operand++) { ir->operands[operand]->accept(this); if (this->result.file == BAD_FILE) { @@ -755,9 +847,11 @@ fs_visitor::visit(ir_expression *ir) assert(!"not reached: should be handled by ir_explog_to_explog2"); break; case ir_unop_sin: + case ir_unop_sin_reduced: emit_math(FS_OPCODE_SIN, this->result, op[0]); break; case ir_unop_cos: + case ir_unop_cos_reduced: emit_math(FS_OPCODE_COS, this->result, op[0]); break; @@ -831,7 +925,6 @@ fs_visitor::visit(ir_expression *ir) break; case ir_binop_dot: - case ir_binop_cross: case ir_unop_any: assert(!"not reached: should be handled by brw_fs_channel_expressions"); break; @@ -900,12 +993,21 @@ fs_visitor::visit(ir_expression *ir) break; case ir_unop_bit_not: - case ir_unop_u2f: - case ir_binop_lshift: - case ir_binop_rshift: + inst = emit(fs_inst(BRW_OPCODE_NOT, this->result, op[0])); + break; case ir_binop_bit_and: + inst = emit(fs_inst(BRW_OPCODE_AND, this->result, op[0], op[1])); + break; case ir_binop_bit_xor: + inst = emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], op[1])); + break; case ir_binop_bit_or: + inst = emit(fs_inst(BRW_OPCODE_OR, this->result, op[0], op[1])); + break; + + case ir_unop_u2f: + case ir_binop_lshift: + case ir_binop_rshift: assert(!"GLSL 1.30 features unsupported"); break; } @@ -1185,7 +1287,7 @@ fs_visitor::visit(ir_texture *ir) assert(!ir->projector); sampler = _mesa_get_sampler_uniform_value(ir->sampler, - ctx->Shader.CurrentProgram, + ctx->Shader.CurrentFragmentProgram, &brw->fragment_program->Base); sampler = c->fp->program.Base.SamplerUnits[sampler]; @@ -1203,6 +1305,11 @@ fs_visitor::visit(ir_texture *ir) 0 }; + c->prog_data.param_convert[c->prog_data.nr_params] = + PARAM_NO_CONVERT; + c->prog_data.param_convert[c->prog_data.nr_params + 1] = + PARAM_NO_CONVERT; + fs_reg scale_x = fs_reg(UNIFORM, c->prog_data.nr_params); fs_reg scale_y = fs_reg(UNIFORM, c->prog_data.nr_params + 1); GLuint index = _mesa_add_state_reference(params, @@ -1349,6 +1456,7 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir) fs_reg op[2]; fs_inst *inst; + assert(expr->get_num_operands() <= 2); for (unsigned int i = 0; i < expr->get_num_operands(); i++) { assert(expr->operands[i]->type->is_scalar()); @@ -1456,6 +1564,7 @@ fs_visitor::emit_if_gen6(ir_if *ir) fs_inst *inst; fs_reg temp; + assert(expr->get_num_operands() <= 2); for (unsigned int i = 0; i < expr->get_num_operands(); i++) { assert(expr->operands[i]->type->is_scalar()); @@ -1960,6 +2069,20 @@ fs_visitor::generate_fb_write(fs_inst *inst) brw_MOV(p, brw_message_reg(inst->base_mrf), brw_vec8_grf(0, 0)); + + if (inst->target > 0) { + /* Set the render target index for choosing BLEND_STATE. */ + brw_MOV(p, retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 0, 2), + BRW_REGISTER_TYPE_UD), + brw_imm_ud(inst->target)); + } + + /* Clear viewport index, render target array index. */ + brw_AND(p, retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 0, 0), + BRW_REGISTER_TYPE_UD), + retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UD), + brw_imm_ud(0xf7ff)); + implied_header = brw_null_reg(); } else { implied_header = retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UW); @@ -2204,22 +2327,53 @@ fs_visitor::generate_ddy(fs_inst *inst, struct brw_reg dst, struct brw_reg src) void fs_visitor::generate_discard_not(fs_inst *inst, struct brw_reg mask) { - brw_push_insn_state(p); - brw_set_mask_control(p, BRW_MASK_DISABLE); - brw_NOT(p, mask, brw_mask_reg(1)); /* IMASK */ - brw_pop_insn_state(p); + if (intel->gen >= 6) { + /* Gen6 no longer has the mask reg for us to just read the + * active channels from. However, cmp updates just the channels + * of the flag reg that are enabled, so we can get at the + * channel enables that way. In this step, make a reg of ones + * we'll compare to. + */ + brw_MOV(p, mask, brw_imm_ud(1)); + } else { + brw_push_insn_state(p); + brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_NOT(p, mask, brw_mask_reg(1)); /* IMASK */ + brw_pop_insn_state(p); + } } void fs_visitor::generate_discard_and(fs_inst *inst, struct brw_reg mask) { - struct brw_reg g0 = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW); - mask = brw_uw1_reg(mask.file, mask.nr, 0); + if (intel->gen >= 6) { + struct brw_reg f0 = brw_flag_reg(); + struct brw_reg g1 = retype(brw_vec1_grf(1, 7), BRW_REGISTER_TYPE_UW); - brw_push_insn_state(p); - brw_set_mask_control(p, BRW_MASK_DISABLE); - brw_AND(p, g0, mask, g0); - brw_pop_insn_state(p); + brw_push_insn_state(p); + brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_MOV(p, f0, brw_imm_uw(0xffff)); /* inactive channels undiscarded */ + brw_pop_insn_state(p); + + brw_CMP(p, retype(brw_null_reg(), BRW_REGISTER_TYPE_UD), + BRW_CONDITIONAL_Z, mask, brw_imm_ud(0)); /* active channels fail test */ + /* Undo CMP's whacking of predication*/ + brw_set_predicate_control(p, BRW_PREDICATE_NONE); + + brw_push_insn_state(p); + brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_AND(p, g1, f0, g1); + brw_pop_insn_state(p); + } else { + struct brw_reg g0 = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW); + + mask = brw_uw1_reg(mask.file, mask.nr, 0); + + brw_push_insn_state(p); + brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_AND(p, g0, mask, g0); + brw_pop_insn_state(p); + } } void @@ -2230,7 +2384,8 @@ fs_visitor::generate_spill(fs_inst *inst, struct brw_reg src) brw_MOV(p, retype(brw_message_reg(inst->base_mrf + 1), BRW_REGISTER_TYPE_UD), retype(src, BRW_REGISTER_TYPE_UD)); - brw_oword_block_write(p, brw_message_reg(inst->base_mrf), 1, inst->offset); + brw_oword_block_write_scratch(p, brw_message_reg(inst->base_mrf), 1, + inst->offset); } void @@ -2251,8 +2406,39 @@ fs_visitor::generate_unspill(fs_inst *inst, struct brw_reg dst) if (intel->gen == 4 && !intel->is_g4x) brw_MOV(p, brw_null_reg(), dst); - brw_oword_block_read(p, dst, brw_message_reg(inst->base_mrf), 1, - inst->offset); + brw_oword_block_read_scratch(p, dst, brw_message_reg(inst->base_mrf), 1, + inst->offset); + + if (intel->gen == 4 && !intel->is_g4x) { + /* gen4 errata: destination from a send can't be used as a + * destination until it's been read. Just read it so we don't + * have to worry. + */ + brw_MOV(p, brw_null_reg(), dst); + } +} + + +void +fs_visitor::generate_pull_constant_load(fs_inst *inst, struct brw_reg dst) +{ + assert(inst->mlen != 0); + + /* Clear any post destination dependencies that would be ignored by + * the block read. See the B-Spec for pre-gen5 send instruction. + * + * This could use a better solution, since texture sampling and + * math reads could potentially run into it as well -- anywhere + * that we have a SEND with a destination that is a register that + * was written but not read within the last N instructions (what's + * N? unsure). This is rare because of dead code elimination, but + * not impossible. + */ + if (intel->gen == 4 && !intel->is_g4x) + brw_MOV(p, brw_null_reg(), dst); + + brw_oword_block_read(p, dst, brw_message_reg(inst->base_mrf), + inst->offset, SURF_INDEX_FRAG_CONST_BUFFER); if (intel->gen == 4 && !intel->is_g4x) { /* gen4 errata: destination from a send can't be used as a @@ -2281,7 +2467,7 @@ fs_visitor::assign_curb_setup() constant_nr % 8); inst->src[i].file = FIXED_HW_REG; - inst->src[i].fixed_hw_reg = brw_reg; + inst->src[i].fixed_hw_reg = retype(brw_reg, inst->src[i].type); } } } @@ -2406,6 +2592,7 @@ fs_visitor::split_virtual_grfs() for (int j = 2; j < this->virtual_grf_sizes[i]; j++) { int reg = virtual_grf_alloc(1); assert(reg == new_virtual_grf[i] + j - 1); + (void) reg; } this->virtual_grf_sizes[i] = 1; } @@ -2433,6 +2620,68 @@ fs_visitor::split_virtual_grfs() } } +/** + * Choose accesses from the UNIFORM file to demote to using the pull + * constant buffer. + * + * We allow a fragment shader to have more than the specified minimum + * maximum number of fragment shader uniform components (64). If + * there are too many of these, they'd fill up all of register space. + * So, this will push some of them out to the pull constant buffer and + * update the program to load them. + */ +void +fs_visitor::setup_pull_constants() +{ + /* Only allow 16 registers (128 uniform components) as push constants. */ + unsigned int max_uniform_components = 16 * 8; + if (c->prog_data.nr_params <= max_uniform_components) + return; + + /* Just demote the end of the list. We could probably do better + * here, demoting things that are rarely used in the program first. + */ + int pull_uniform_base = max_uniform_components; + int pull_uniform_count = c->prog_data.nr_params - pull_uniform_base; + + foreach_iter(exec_list_iterator, iter, this->instructions) { + fs_inst *inst = (fs_inst *)iter.get(); + + for (int i = 0; i < 3; i++) { + if (inst->src[i].file != UNIFORM) + continue; + + int uniform_nr = inst->src[i].hw_reg + inst->src[i].reg_offset; + if (uniform_nr < pull_uniform_base) + continue; + + fs_reg dst = fs_reg(this, glsl_type::float_type); + fs_inst *pull = new(mem_ctx) fs_inst(FS_OPCODE_PULL_CONSTANT_LOAD, + dst); + pull->offset = ((uniform_nr - pull_uniform_base) * 4) & ~15; + pull->ir = inst->ir; + pull->annotation = inst->annotation; + pull->base_mrf = 14; + pull->mlen = 1; + + inst->insert_before(pull); + + inst->src[i].file = GRF; + inst->src[i].reg = dst.reg; + inst->src[i].reg_offset = 0; + inst->src[i].smear = (uniform_nr - pull_uniform_base) & 3; + } + } + + for (int i = 0; i < pull_uniform_count; i++) { + c->prog_data.pull_param[i] = c->prog_data.param[pull_uniform_base + i]; + c->prog_data.pull_param_convert[i] = + c->prog_data.param_convert[pull_uniform_base + i]; + } + c->prog_data.nr_params -= pull_uniform_count; + c->prog_data.nr_pull_params = pull_uniform_count; +} + void fs_visitor::calculate_live_intervals() { @@ -2597,6 +2846,7 @@ fs_visitor::propagate_constants() } break; case BRW_OPCODE_CMP: + case BRW_OPCODE_SEL: if (i == 1) { scan_inst->src[i] = inst->src[0]; progress = true; @@ -2625,26 +2875,17 @@ bool fs_visitor::dead_code_eliminate() { bool progress = false; - int num_vars = this->virtual_grf_next; - bool dead[num_vars]; - - for (int i = 0; i < num_vars; i++) { - dead[i] = this->virtual_grf_def[i] >= this->virtual_grf_use[i]; - - if (dead[i]) { - /* Mark off its interval so it won't interfere with anything. */ - this->virtual_grf_def[i] = -1; - this->virtual_grf_use[i] = -1; - } - } + int pc = 0; foreach_iter(exec_list_iterator, iter, this->instructions) { fs_inst *inst = (fs_inst *)iter.get(); - if (inst->dst.file == GRF && dead[inst->dst.reg]) { + if (inst->dst.file == GRF && this->virtual_grf_use[inst->dst.reg] <= pc) { inst->remove(); progress = true; } + + pc++; } return progress; @@ -2721,6 +2962,7 @@ fs_visitor::register_coalesce() scan_inst->src[i].reg_offset = inst->src[0].reg_offset; scan_inst->src[i].abs |= inst->src[0].abs; scan_inst->src[i].negate ^= inst->src[0].negate; + scan_inst->src[i].smear = inst->src[0].smear; } } } @@ -2749,7 +2991,7 @@ fs_visitor::compute_to_mrf() inst->predicated || inst->dst.file != MRF || inst->src[0].file != GRF || inst->dst.type != inst->src[0].type || - inst->src[0].abs || inst->src[0].negate) + inst->src[0].abs || inst->src[0].negate || inst->src[0].smear != -1) continue; /* Can't compute-to-MRF this GRF if someone else was going to @@ -2761,11 +3003,60 @@ fs_visitor::compute_to_mrf() /* Found a move of a GRF to a MRF. Let's see if we can go * rewrite the thing that made this GRF to write into the MRF. */ - bool found = false; fs_inst *scan_inst; for (scan_inst = (fs_inst *)inst->prev; scan_inst->prev != NULL; scan_inst = (fs_inst *)scan_inst->prev) { + if (scan_inst->dst.file == GRF && + scan_inst->dst.reg == inst->src[0].reg) { + /* Found the last thing to write our reg we want to turn + * into a compute-to-MRF. + */ + + if (scan_inst->opcode == FS_OPCODE_TEX) { + /* texturing writes several continuous regs, so we can't + * compute-to-mrf that. + */ + break; + } + + /* If it's predicated, it (probably) didn't populate all + * the channels. + */ + if (scan_inst->predicated) + break; + + /* SEND instructions can't have MRF as a destination. */ + if (scan_inst->mlen) + break; + + if (intel->gen >= 6) { + /* gen6 math instructions must have the destination be + * GRF, so no compute-to-MRF for them. + */ + if (scan_inst->opcode == FS_OPCODE_RCP || + scan_inst->opcode == FS_OPCODE_RSQ || + scan_inst->opcode == FS_OPCODE_SQRT || + scan_inst->opcode == FS_OPCODE_EXP2 || + scan_inst->opcode == FS_OPCODE_LOG2 || + scan_inst->opcode == FS_OPCODE_SIN || + scan_inst->opcode == FS_OPCODE_COS || + scan_inst->opcode == FS_OPCODE_POW) { + break; + } + } + + if (scan_inst->dst.reg_offset == inst->src[0].reg_offset) { + /* Found the creator of our MRF's source value. */ + scan_inst->dst.file = MRF; + scan_inst->dst.hw_reg = inst->dst.hw_reg; + scan_inst->saturate |= inst->saturate; + inst->remove(); + progress = true; + } + break; + } + /* We don't handle flow control here. Most computation of * values that end up in MRFs are shortly before the MRF * write anyway. @@ -2799,71 +3090,88 @@ fs_visitor::compute_to_mrf() } if (scan_inst->mlen > 0) { - /* Found a SEND instruction, which will do some amount of - * implied write that may overwrite our MRF that we were - * hoping to compute-to-MRF somewhere above it. Nothing - * we have implied-writes more than 2 MRFs from base_mrf, - * though. + /* Found a SEND instruction, which means that there are + * live values in MRFs from base_mrf to base_mrf + + * scan_inst->mlen - 1. Don't go pushing our MRF write up + * above it. */ - int implied_write_len = MIN2(scan_inst->mlen, 2); if (inst->dst.hw_reg >= scan_inst->base_mrf && - inst->dst.hw_reg < scan_inst->base_mrf + implied_write_len) { + inst->dst.hw_reg < scan_inst->base_mrf + scan_inst->mlen) { break; } } + } + } - if (scan_inst->dst.file == GRF && - scan_inst->dst.reg == inst->src[0].reg) { - /* Found the last thing to write our reg we want to turn - * into a compute-to-MRF. - */ + return progress; +} - if (scan_inst->opcode == FS_OPCODE_TEX) { - /* texturing writes several continuous regs, so we can't - * compute-to-mrf that. - */ - break; - } +/** + * Walks through basic blocks, locking for repeated MRF writes and + * removing the later ones. + */ +bool +fs_visitor::remove_duplicate_mrf_writes() +{ + fs_inst *last_mrf_move[16]; + bool progress = false; - /* If it's predicated, it (probably) didn't populate all - * the channels. - */ - if (scan_inst->predicated) - break; + memset(last_mrf_move, 0, sizeof(last_mrf_move)); - /* SEND instructions can't have MRF as a destination. */ - if (scan_inst->mlen) - break; + foreach_iter(exec_list_iterator, iter, this->instructions) { + fs_inst *inst = (fs_inst *)iter.get(); - if (intel->gen >= 6) { - /* gen6 math instructions must have the destination be - * GRF, so no compute-to-MRF for them. - */ - if (scan_inst->opcode == FS_OPCODE_RCP || - scan_inst->opcode == FS_OPCODE_RSQ || - scan_inst->opcode == FS_OPCODE_SQRT || - scan_inst->opcode == FS_OPCODE_EXP2 || - scan_inst->opcode == FS_OPCODE_LOG2 || - scan_inst->opcode == FS_OPCODE_SIN || - scan_inst->opcode == FS_OPCODE_COS || - scan_inst->opcode == FS_OPCODE_POW) { - break; - } - } + switch (inst->opcode) { + case BRW_OPCODE_DO: + case BRW_OPCODE_WHILE: + case BRW_OPCODE_IF: + case BRW_OPCODE_ELSE: + case BRW_OPCODE_ENDIF: + memset(last_mrf_move, 0, sizeof(last_mrf_move)); + continue; + default: + break; + } - if (scan_inst->dst.reg_offset == inst->src[0].reg_offset) { - /* Found the creator of our MRF's source value. */ - found = true; - break; + if (inst->opcode == BRW_OPCODE_MOV && + inst->dst.file == MRF) { + fs_inst *prev_inst = last_mrf_move[inst->dst.hw_reg]; + if (prev_inst && inst->equals(prev_inst)) { + inst->remove(); + progress = true; + continue; + } + } + + /* Clear out the last-write records for MRFs that were overwritten. */ + if (inst->dst.file == MRF) { + last_mrf_move[inst->dst.hw_reg] = NULL; + } + + if (inst->mlen > 0) { + /* Found a SEND instruction, which will include two of fewer + * implied MRF writes. We could do better here. + */ + for (int i = 0; i < implied_mrf_writes(inst); i++) { + last_mrf_move[inst->base_mrf + i] = NULL; + } + } + + /* Clear out any MRF move records whose sources got overwritten. */ + if (inst->dst.file == GRF) { + for (unsigned int i = 0; i < Elements(last_mrf_move); i++) { + if (last_mrf_move[i] && + last_mrf_move[i]->src[0].reg == inst->dst.reg) { + last_mrf_move[i] = NULL; } } } - if (found) { - scan_inst->dst.file = MRF; - scan_inst->dst.hw_reg = inst->dst.hw_reg; - scan_inst->saturate |= inst->saturate; - inst->remove(); - progress = true; + + if (inst->opcode == BRW_OPCODE_MOV && + inst->dst.file == MRF && + inst->src[0].file == GRF && + !inst->predicated) { + last_mrf_move[inst->dst.hw_reg] = inst; } } @@ -2897,8 +3205,13 @@ static struct brw_reg brw_reg_from_fs_reg(fs_reg *reg) case GRF: case ARF: case MRF: - brw_reg = brw_vec8_reg(reg->file, - reg->hw_reg, 0); + if (reg->smear == -1) { + brw_reg = brw_vec8_reg(reg->file, + reg->hw_reg, 0); + } else { + brw_reg = brw_vec1_reg(reg->file, + reg->hw_reg, reg->smear); + } brw_reg = retype(brw_reg, reg->type); break; case IMM: @@ -2940,11 +3253,17 @@ static struct brw_reg brw_reg_from_fs_reg(fs_reg *reg) void fs_visitor::generate_code() { - unsigned int annotation_len = 0; int last_native_inst = 0; struct brw_instruction *if_stack[16], *loop_stack[16]; int if_stack_depth = 0, loop_stack_depth = 0; int if_depth_in_loop[16]; + const char *last_annotation_string = NULL; + ir_instruction *last_annotation_ir = NULL; + + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { + printf("Native code for fragment shader %d:\n", + ctx->Shader.CurrentFragmentProgram->Name); + } if_depth_in_loop[loop_stack_depth] = 0; @@ -2953,6 +3272,22 @@ fs_visitor::generate_code() fs_inst *inst = (fs_inst *)iter.get(); struct brw_reg src[3], dst; + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { + if (last_annotation_ir != inst->ir) { + last_annotation_ir = inst->ir; + if (last_annotation_ir) { + printf(" "); + last_annotation_ir->print(); + printf("\n"); + } + } + if (last_annotation_string != inst->annotation) { + last_annotation_string = inst->annotation; + if (last_annotation_string) + printf(" %s\n", last_annotation_string); + } + } + for (unsigned int i = 0; i < 3; i++) { src[i] = brw_reg_from_fs_reg(&inst->src[i]); } @@ -2960,6 +3295,7 @@ fs_visitor::generate_code() brw_set_conditionalmod(p, inst->conditional_mod); brw_set_predicate_control(p, inst->predicated); + brw_set_saturate(p, inst->saturate); switch (inst->opcode) { case BRW_OPCODE_MOV: @@ -3037,6 +3373,10 @@ fs_visitor::generate_code() break; case BRW_OPCODE_DO: + /* FINISHME: We need to write the loop instruction support still. */ + if (intel->gen >= 6) + this->fail = true; + loop_stack[loop_stack_depth++] = brw_DO(p, BRW_EXECUTE_8); if_depth_in_loop[loop_stack_depth] = 0; break; @@ -3114,6 +3454,10 @@ fs_visitor::generate_code() generate_unspill(inst, dst); break; + case FS_OPCODE_PULL_CONSTANT_LOAD: + generate_pull_constant_load(inst, dst); + break; + case FS_OPCODE_FB_WRITE: generate_fb_write(inst); break; @@ -3127,25 +3471,19 @@ fs_visitor::generate_code() this->fail = true; } - if (annotation_len < p->nr_insn) { - annotation_len *= 2; - if (annotation_len < 16) - annotation_len = 16; - - this->annotation_string = talloc_realloc(this->mem_ctx, - annotation_string, - const char *, - annotation_len); - this->annotation_ir = talloc_realloc(this->mem_ctx, - annotation_ir, - ir_instruction *, - annotation_len); + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { + for (unsigned int i = last_native_inst; i < p->nr_insn; i++) { + if (0) { + printf("0x%08x 0x%08x 0x%08x 0x%08x ", + ((uint32_t *)&p->store[i])[3], + ((uint32_t *)&p->store[i])[2], + ((uint32_t *)&p->store[i])[1], + ((uint32_t *)&p->store[i])[0]); + } + brw_disasm(stdout, &p->store[i], intel->gen); + } } - for (unsigned int i = last_native_inst; i < p->nr_insn; i++) { - this->annotation_string[i] = inst->annotation; - this->annotation_ir[i] = inst->ir; - } last_native_inst = p->nr_insn; } } @@ -3153,10 +3491,9 @@ fs_visitor::generate_code() GLboolean brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) { - struct brw_compile *p = &c->func; struct intel_context *intel = &brw->intel; struct gl_context *ctx = &intel->ctx; - struct gl_shader_program *prog = ctx->Shader.CurrentProgram; + struct gl_shader_program *prog = ctx->Shader.CurrentFragmentProgram; if (!prog) return GL_FALSE; @@ -3174,7 +3511,7 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) */ c->dispatch_width = 8; - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { printf("GLSL IR for native fragment shader %d:\n", prog->Name); _mesa_print_ir(shader->ir, NULL); printf("\n"); @@ -3205,6 +3542,7 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) v.emit_fb_writes(); v.split_virtual_grfs(); + v.setup_pull_constants(); v.assign_curb_setup(); v.assign_urb_setup(); @@ -3212,6 +3550,9 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) bool progress; do { progress = false; + + progress = v.remove_duplicate_mrf_writes() || progress; + v.calculate_live_intervals(); progress = v.propagate_constants() || progress; progress = v.register_coalesce() || progress; @@ -3248,37 +3589,6 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) if (v.fail) return GL_FALSE; - if (INTEL_DEBUG & DEBUG_WM) { - const char *last_annotation_string = NULL; - ir_instruction *last_annotation_ir = NULL; - - printf("Native code for fragment shader %d:\n", prog->Name); - for (unsigned int i = 0; i < p->nr_insn; i++) { - if (last_annotation_ir != v.annotation_ir[i]) { - last_annotation_ir = v.annotation_ir[i]; - if (last_annotation_ir) { - printf(" "); - last_annotation_ir->print(); - printf("\n"); - } - } - if (last_annotation_string != v.annotation_string[i]) { - last_annotation_string = v.annotation_string[i]; - if (last_annotation_string) - printf(" %s\n", last_annotation_string); - } - if (0) { - printf("0x%08x 0x%08x 0x%08x 0x%08x ", - ((uint32_t *)&p->store[i])[3], - ((uint32_t *)&p->store[i])[2], - ((uint32_t *)&p->store[i])[1], - ((uint32_t *)&p->store[i])[0]); - } - brw_disasm(stdout, &p->store[i], intel->gen); - } - printf("\n"); - } - c->prog_data.total_grf = v.grf_used; return GL_TRUE; diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index de7137a7db..de7b15312a 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -76,6 +76,7 @@ enum fs_opcodes { FS_OPCODE_DISCARD_AND, FS_OPCODE_SPILL, FS_OPCODE_UNSPILL, + FS_OPCODE_PULL_CONSTANT_LOAD, }; @@ -95,11 +96,9 @@ public: void init() { - this->reg = 0; - this->reg_offset = 0; - this->negate = 0; - this->abs = 0; + memset(this, 0, sizeof(*this)); this->hw_reg = -1; + this->smear = -1; } /** Generic unset register constructor. */ @@ -149,6 +148,21 @@ public: fs_reg(enum register_file file, int hw_reg, uint32_t type); fs_reg(class fs_visitor *v, const struct glsl_type *type); + bool equals(fs_reg *r) + { + return (file == r->file && + reg == r->reg && + reg_offset == r->reg_offset && + hw_reg == r->hw_reg && + type == r->type && + negate == r->negate && + abs == r->abs && + memcmp(&fixed_hw_reg, &r->fixed_hw_reg, + sizeof(fixed_hw_reg)) == 0 && + smear == r->smear && + imm.u == r->imm.u); + } + /** Register file: ARF, GRF, MRF, IMM. */ enum register_file file; /** virtual register number. 0 = fixed hw reg */ @@ -162,6 +176,7 @@ public: bool negate; bool abs; struct brw_reg fixed_hw_reg; + int smear; /* -1, or a channel of the reg to smear to all channels. */ /** Value for file == BRW_IMMMEDIATE_FILE */ union { @@ -171,6 +186,10 @@ public: } imm; }; +static const fs_reg reg_undef; +static const fs_reg reg_null_f(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_F); +static const fs_reg reg_null_d(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_D); + class fs_inst : public exec_node { public: /* Callers of this talloc-based new need not call delete. It's @@ -187,18 +206,14 @@ public: void init() { + memset(this, 0, sizeof(*this)); this->opcode = BRW_OPCODE_NOP; - this->saturate = false; this->conditional_mod = BRW_CONDITIONAL_NONE; - this->predicated = false; - this->sampler = 0; - this->target = 0; - this->eot = false; - this->header_present = false; - this->shadow_compare = false; - this->mlen = 0; - this->base_mrf = 0; - this->offset = 0; + + this->dst = reg_undef; + this->src[0] = reg_undef; + this->src[1] = reg_undef; + this->src[2] = reg_undef; } fs_inst() @@ -270,6 +285,26 @@ public: assert(src[2].reg_offset >= 0); } + bool equals(fs_inst *inst) + { + return (opcode == inst->opcode && + dst.equals(&inst->dst) && + src[0].equals(&inst->src[0]) && + src[1].equals(&inst->src[1]) && + src[2].equals(&inst->src[2]) && + saturate == inst->saturate && + predicated == inst->predicated && + conditional_mod == inst->conditional_mod && + mlen == inst->mlen && + base_mrf == inst->base_mrf && + sampler == inst->sampler && + target == inst->target && + eot == inst->eot && + header_present == inst->header_present && + shadow_compare == inst->shadow_compare && + offset == inst->offset); + } + int opcode; /* BRW_OPCODE_* or FS_OPCODE_* */ fs_reg dst; fs_reg src[3]; @@ -319,8 +354,6 @@ public: this->first_non_payload_grf = 0; this->current_annotation = NULL; - this->annotation_string = NULL; - this->annotation_ir = NULL; this->base_ir = NULL; this->virtual_grf_sizes = NULL; @@ -368,11 +401,13 @@ public: int choose_spill_reg(struct ra_graph *g); void spill_reg(int spill_reg); void split_virtual_grfs(); + void setup_pull_constants(); void calculate_live_intervals(); bool propagate_constants(); bool register_coalesce(); bool compute_to_mrf(); bool dead_code_eliminate(); + bool remove_duplicate_mrf_writes(); bool virtual_grf_interferes(int a, int b); void generate_code(); void generate_fb_write(fs_inst *inst); @@ -386,6 +421,7 @@ public: void generate_ddy(fs_inst *inst, struct brw_reg dst, struct brw_reg src); void generate_spill(fs_inst *inst, struct brw_reg src); void generate_unspill(fs_inst *inst, struct brw_reg dst); + void generate_pull_constant_load(fs_inst *inst, struct brw_reg dst); void emit_dummy_fs(); fs_reg *emit_fragcoord_interpolation(ir_variable *ir); @@ -397,6 +433,7 @@ public: fs_inst *emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate); fs_inst *emit_math(fs_opcodes op, fs_reg dst, fs_reg src0); fs_inst *emit_math(fs_opcodes op, fs_reg dst, fs_reg src0, fs_reg src1); + bool try_emit_saturate(ir_expression *ir); void emit_bool_to_cond_code(ir_rvalue *condition); void emit_if_gen6(ir_if *ir); void emit_unspill(fs_inst *inst, fs_reg reg, uint32_t spill_offset); @@ -408,6 +445,7 @@ public: struct brw_reg interp_reg(int location, int channel); int setup_uniform_values(int loc, const glsl_type *type); void setup_builtin_uniform_values(ir_variable *ir); + int implied_mrf_writes(fs_inst *inst); struct brw_context *brw; const struct gl_fragment_program *fp; @@ -434,8 +472,6 @@ public: /** @{ debug annotation info */ const char *current_annotation; ir_instruction *base_ir; - const char **annotation_string; - ir_instruction **annotation_ir; /** @} */ bool fail; @@ -453,9 +489,5 @@ public: int grf_used; }; -static const fs_reg reg_undef; -static const fs_reg reg_null_f(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_F); -static const fs_reg reg_null_d(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_D); - GLboolean brw_do_channel_expressions(struct exec_list *instructions); GLboolean brw_do_vector_splitting(struct exec_list *instructions); diff --git a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp index 4aac1b5a05..3b7b03a05b 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp @@ -202,6 +202,7 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir) case ir_unop_ceil: case ir_unop_floor: case ir_unop_fract: + case ir_unop_round_even: case ir_unop_sin: case ir_unop_cos: case ir_unop_dFdx: @@ -287,34 +288,6 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir) break; } - case ir_binop_cross: { - for (i = 0; i < vector_elements; i++) { - int swiz0 = (i + 1) % 3; - int swiz1 = (i + 2) % 3; - ir_expression *temp1, *temp2; - - temp1 = new(mem_ctx) ir_expression(ir_binop_mul, - element_type, - get_element(op_var[0], swiz0), - get_element(op_var[1], swiz1)); - - temp2 = new(mem_ctx) ir_expression(ir_binop_mul, - element_type, - get_element(op_var[1], swiz0), - get_element(op_var[0], swiz1)); - - temp2 = new(mem_ctx) ir_expression(ir_unop_neg, - element_type, - temp2, - NULL); - - assign(ir, i, new(mem_ctx) ir_expression(ir_binop_add, - element_type, - temp1, temp2)); - } - break; - } - case ir_binop_logic_and: case ir_binop_logic_xor: case ir_binop_logic_or: diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp index b5bfd00d5f..bbb210cd44 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp @@ -225,7 +225,7 @@ fs_visitor::assign_regs() * loop back into here to try again. */ int reg = choose_spill_reg(g); - if (reg == -1) { + if (reg == -1 || intel->gen >= 6) { this->fail = true; } else { spill_reg(reg); @@ -401,6 +401,7 @@ fs_visitor::spill_reg(int spill_reg) spill_src.reg_offset = 0; spill_src.abs = false; spill_src.negate = false; + spill_src.smear = -1; for (int chan = 0; chan < size; chan++) { fs_inst *spill_inst = new(mem_ctx) fs_inst(FS_OPCODE_SPILL, diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c index cfcc8ea4d6..b0c76f4094 100644 --- a/src/mesa/drivers/dri/i965/brw_gs.c +++ b/src/mesa/drivers/dri/i965/brw_gs.c @@ -127,8 +127,8 @@ static void compile_gs_prog( struct brw_context *brw, */ program = brw_get_program(&c.func, &program_size); - if (INTEL_DEBUG & DEBUG_GS) { - int i; + if (unlikely(INTEL_DEBUG & DEBUG_GS)) { + int i; printf("gs:\n"); for (i = 0; i < program_size / sizeof(struct brw_instruction); i++) diff --git a/src/mesa/drivers/dri/i965/brw_gs_state.c b/src/mesa/drivers/dri/i965/brw_gs_state.c index 63562ebcfc..69a5f7a666 100644 --- a/src/mesa/drivers/dri/i965/brw_gs_state.c +++ b/src/mesa/drivers/dri/i965/brw_gs_state.c @@ -101,7 +101,7 @@ gs_unit_create_from_key(struct brw_context *brw, struct brw_gs_unit_key *key) if (intel->gen == 5) gs.thread4.rendering_enable = 1; - if (INTEL_DEBUG & DEBUG_STATS) + if (unlikely(INTEL_DEBUG & DEBUG_STATS)) gs.thread4.stats_enable = 1; bo = brw_upload_cache(&brw->cache, BRW_GS_UNIT, diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index 24041e57b0..1d350bc041 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -555,7 +555,7 @@ static void upload_invarient_state( struct brw_context *brw ) memset(&vfs, 0, sizeof(vfs)); vfs.opcode = brw->CMD_VF_STATISTICS; - if (INTEL_DEBUG & DEBUG_STATS) + if (unlikely(INTEL_DEBUG & DEBUG_STATS)) vfs.statistics_enable = 1; BRW_BATCH_STRUCT(brw, &vfs); diff --git a/src/mesa/drivers/dri/i965/brw_sf.c b/src/mesa/drivers/dri/i965/brw_sf.c index 7dbd70daae..6da155b1a9 100644 --- a/src/mesa/drivers/dri/i965/brw_sf.c +++ b/src/mesa/drivers/dri/i965/brw_sf.c @@ -108,7 +108,7 @@ static void compile_sf_prog( struct brw_context *brw, */ program = brw_get_program(&c.func, &program_size); - if (INTEL_DEBUG & DEBUG_SF) { + if (unlikely(INTEL_DEBUG & DEBUG_SF)) { printf("sf:\n"); for (i = 0; i < program_size / sizeof(struct brw_instruction); i++) brw_disasm(stdout, &((struct brw_instruction *)program)[i], diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c index 6ad9e1b48a..bd3a21ed9e 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_state.c +++ b/src/mesa/drivers/dri/i965/brw_sf_state.c @@ -210,10 +210,10 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key, sf.thread4.max_threads = MIN2(chipset_max_threads, key->nr_urb_entries) - 1; - if (INTEL_DEBUG & DEBUG_SINGLE_THREAD) + if (unlikely(INTEL_DEBUG & DEBUG_SINGLE_THREAD)) sf.thread4.max_threads = 0; - if (INTEL_DEBUG & DEBUG_STATS) + if (unlikely(INTEL_DEBUG & DEBUG_STATS)) sf.thread4.stats_enable = 1; /* CACHE_NEW_SF_VP */ diff --git a/src/mesa/drivers/dri/i965/brw_state_cache.c b/src/mesa/drivers/dri/i965/brw_state_cache.c index b31d84953a..58ff528d44 100644 --- a/src/mesa/drivers/dri/i965/brw_state_cache.c +++ b/src/mesa/drivers/dri/i965/brw_state_cache.c @@ -61,6 +61,7 @@ #include "intel_batchbuffer.h" #include "brw_wm.h" +#define FILE_DEBUG_FLAG DEBUG_STATE static GLuint hash_key(struct brw_cache_item *item) @@ -265,10 +266,9 @@ brw_upload_cache_with_auxdata(struct brw_cache *cache, *(void **)aux_return = (void *)((char *)item->key + item->key_size); } - if (INTEL_DEBUG & DEBUG_STATE) - printf("upload %s: %d bytes to cache id %d\n", - cache->name[cache_id], - data_size, cache_id); + DBG("upload %s: %d bytes to cache id %d\n", + cache->name[cache_id], + data_size, cache_id); /* Copy data to the buffer */ drm_intel_bo_subdata(bo, 0, data_size, data); @@ -407,8 +407,7 @@ brw_clear_cache(struct brw_context *brw, struct brw_cache *cache) struct brw_cache_item *c, *next; GLuint i; - if (INTEL_DEBUG & DEBUG_STATE) - printf("%s\n", __FUNCTION__); + DBG("%s\n", __FUNCTION__); for (i = 0; i < cache->size; i++) { for (c = cache->items[i]; c; c = next) { @@ -434,8 +433,7 @@ brw_clear_cache(struct brw_context *brw, struct brw_cache *cache) void brw_state_cache_check_size(struct brw_context *brw) { - if (INTEL_DEBUG & DEBUG_STATE) - printf("%s (n_items=%d)\n", __FUNCTION__, brw->cache.n_items); + DBG("%s (n_items=%d)\n", __FUNCTION__, brw->cache.n_items); /* un-tuned guess. Each object is generally a page, so 1000 of them is 4 MB of * state cache. @@ -450,8 +448,7 @@ brw_destroy_cache(struct brw_context *brw, struct brw_cache *cache) { GLuint i; - if (INTEL_DEBUG & DEBUG_STATE) - printf("%s\n", __FUNCTION__); + DBG("%s\n", __FUNCTION__); brw_clear_cache(brw, cache); for (i = 0; i < BRW_MAX_CACHE; i++) { diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c index b79b33c2e3..e262887471 100644 --- a/src/mesa/drivers/dri/i965/brw_state_dump.c +++ b/src/mesa/drivers/dri/i965/brw_state_dump.c @@ -107,14 +107,14 @@ static void dump_wm_surface_state(struct brw_context *brw) char name[20]; if (surf_bo == NULL) { - fprintf(stderr, " WM SS%d: NULL\n", i); + fprintf(stderr, "WM SURF%d: NULL\n", i); continue; } drm_intel_bo_map(surf_bo, GL_FALSE); surfoff = surf_bo->offset + brw->wm.surf_offset[i]; surf = (struct brw_surface_state *)(surf_bo->virtual + brw->wm.surf_offset[i]); - sprintf(name, "WM SS%d", i); + sprintf(name, "WM SURF%d", i); state_out(name, surf, surfoff, 0, "%s %s\n", get_965_surfacetype(surf->ss0.surface_type), get_965_surface_format(surf->ss0.surface_format)); @@ -132,6 +132,53 @@ static void dump_wm_surface_state(struct brw_context *brw) } } + +static void dump_wm_sampler_state(struct brw_context *brw) +{ + struct gl_context *ctx = &brw->intel.ctx; + int i; + + if (!brw->wm.sampler_bo) { + fprintf(stderr, "WM_SAMPLER: NULL\n"); + return; + } + + drm_intel_bo_map(brw->wm.sampler_bo, GL_FALSE); + for (i = 0; i < BRW_MAX_TEX_UNIT; i++) { + unsigned int offset; + struct brw_sampler_state *samp; + struct brw_sampler_default_color *sdc; + char name[20]; + + if (!ctx->Texture.Unit[i]._ReallyEnabled) { + fprintf(stderr, "WM SAMP%d: disabled\n", i); + continue; + } + + offset = brw->wm.sampler_bo->offset + + i * sizeof(struct brw_sampler_state); + samp = (struct brw_sampler_state *)(brw->wm.sampler_bo->virtual + + i * sizeof(struct brw_sampler_state)); + + sprintf(name, "WM SAMP%d", i); + state_out(name, samp, offset, 0, "filtering\n"); + state_out(name, samp, offset, 1, "wrapping, lod\n"); + state_out(name, samp, offset, 2, "default color pointer\n"); + state_out(name, samp, offset, 3, "chroma key, aniso\n"); + + sprintf(name, " WM SDC%d", i); + + drm_intel_bo_map(brw->wm.sdc_bo[i], GL_FALSE); + sdc = (struct brw_sampler_default_color *)(brw->wm.sdc_bo[i]->virtual); + state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 0, "r\n"); + state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 1, "g\n"); + state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 2, "b\n"); + state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 3, "a\n"); + drm_intel_bo_unmap(brw->wm.sdc_bo[i]); + } + drm_intel_bo_unmap(brw->wm.sampler_bo); +} + static void dump_sf_viewport_state(struct brw_context *brw) { const char *name = "SF VP"; @@ -324,6 +371,7 @@ void brw_debug_batch(struct intel_context *intel) state_struct_out("WM bind", brw->wm.bind_bo, 4 * brw->wm.nr_surfaces); dump_wm_surface_state(brw); + dump_wm_sampler_state(brw); if (intel->gen < 6) state_struct_out("VS", brw->vs.state_bo, sizeof(struct brw_vs_unit_state)); diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c index 73940a5156..338f3876b3 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -128,6 +128,7 @@ const struct brw_tracked_state *gen6_atoms[] = &gen6_cc_state_pointers, &brw_vs_constants, /* Before vs_surfaces and constant_buffer */ + &brw_wm_constants, /* Before wm_surfaces and constant_buffer */ &gen6_wm_constants, /* Before wm_surfaces and constant_buffer */ &brw_vs_surfaces, /* must do before unit */ @@ -434,7 +435,7 @@ void brw_upload_state(struct brw_context *brw) brw_clear_validated_bos(brw); - if (INTEL_DEBUG) { + if (unlikely(INTEL_DEBUG)) { /* Debug version which enforces various sanity checks on the * state flags which are generated and checked to help ensure * state atoms are ordered correctly in the list. @@ -486,7 +487,7 @@ void brw_upload_state(struct brw_context *brw) } } - if (INTEL_DEBUG & DEBUG_STATE) { + if (unlikely(INTEL_DEBUG & DEBUG_STATE)) { brw_update_dirty_count(mesa_bits, state->mesa); brw_update_dirty_count(brw_bits, state->brw); brw_update_dirty_count(cache_bits, state->cache); diff --git a/src/mesa/drivers/dri/i965/brw_urb.c b/src/mesa/drivers/dri/i965/brw_urb.c index 0f597184b4..dfc1551aca 100644 --- a/src/mesa/drivers/dri/i965/brw_urb.c +++ b/src/mesa/drivers/dri/i965/brw_urb.c @@ -190,12 +190,12 @@ static void recalculate_urb_fence( struct brw_context *brw ) exit(1); } - if (INTEL_DEBUG & (DEBUG_URB|DEBUG_FALLBACKS)) + if (unlikely(INTEL_DEBUG & (DEBUG_URB|DEBUG_FALLBACKS))) printf("URB CONSTRAINED\n"); } done: - if (INTEL_DEBUG & DEBUG_URB) + if (unlikely(INTEL_DEBUG & DEBUG_URB)) printf("URB fence: %d ..VS.. %d ..GS.. %d ..CLP.. %d ..SF.. %d ..CS.. %d\n", brw->urb.vs_start, brw->urb.gs_start, diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index ce33479996..7e43324a1f 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c @@ -165,13 +165,20 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c ) /* User clip planes from curbe: */ if (c->key.nr_userclip) { - for (i = 0; i < c->key.nr_userclip; i++) { - c->userplane[i] = stride( brw_vec4_grf(reg+3+i/2, (i%2) * 4), 0, 4, 1); - } + if (intel->gen >= 6) { + for (i = 0; i < c->key.nr_userclip; i++) { + c->userplane[i] = stride(brw_vec4_grf(reg + i / 2, + (i % 2) * 4), 0, 4, 1); + } + reg += ALIGN(c->key.nr_userclip, 2) / 2; + } else { + for (i = 0; i < c->key.nr_userclip; i++) { + c->userplane[i] = stride(brw_vec4_grf(reg + (6 + i) / 2, + (i % 2) * 4), 0, 4, 1); + } + reg += (ALIGN(6 + c->key.nr_userclip, 4) / 4) * 2; + } - /* Deal with curbe alignment: - */ - reg += ((6 + c->key.nr_userclip + 3) / 4) * 2; } /* Vertex program parameters from curbe: @@ -253,9 +260,11 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c ) c->first_output = reg; c->first_overflow_output = 0; - if (intel->gen >= 6) - mrf = 3; /* no more pos store in attribute */ - else if (intel->gen == 5) + if (intel->gen >= 6) { + mrf = 3; + if (c->key.nr_userclip) + mrf += 2; + } else if (intel->gen == 5) mrf = 8; else mrf = 4; @@ -372,16 +381,20 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c ) /* See emit_vertex_write() for where the VUE's overhead on top of the * attributes comes from. */ - if (intel->gen >= 6) - c->prog_data.urb_entry_size = (attributes_in_vue + 2 + 7) / 8; - else if (intel->gen == 5) + if (intel->gen >= 6) { + int header_regs = 2; + if (c->key.nr_userclip) + header_regs += 2; + + c->prog_data.urb_entry_size = (attributes_in_vue + header_regs + 7) / 8; + } else if (intel->gen == 5) c->prog_data.urb_entry_size = (attributes_in_vue + 6 + 3) / 4; else c->prog_data.urb_entry_size = (attributes_in_vue + 2 + 3) / 4; c->prog_data.total_grf = reg; - if (INTEL_DEBUG & DEBUG_VS) { + if (unlikely(INTEL_DEBUG & DEBUG_VS)) { printf("%s NumAddrRegs %d\n", __FUNCTION__, c->vp->program.Base.NumAddressRegs); printf("%s NumTemps %d\n", __FUNCTION__, c->vp->program.Base.NumTemporaries); printf("%s reg = %d\n", __FUNCTION__, reg); @@ -576,12 +589,11 @@ static void emit_min( struct brw_compile *p, brw_set_predicate_control(p, BRW_PREDICATE_NONE); } - -static void emit_math1( struct brw_vs_compile *c, - GLuint function, - struct brw_reg dst, - struct brw_reg arg0, - GLuint precision) +static void emit_math1_gen4(struct brw_vs_compile *c, + GLuint function, + struct brw_reg dst, + struct brw_reg arg0, + GLuint precision) { /* There are various odd behaviours with SEND on the simulator. In * addition there are documented issues with the fact that the GEN4 @@ -591,14 +603,11 @@ static void emit_math1( struct brw_vs_compile *c, * whether that turns out to be a simulator bug or not: */ struct brw_compile *p = &c->func; - struct intel_context *intel = &p->brw->intel; struct brw_reg tmp = dst; GLboolean need_tmp = GL_FALSE; - if (dst.file != BRW_GENERAL_REGISTER_FILE) - need_tmp = GL_TRUE; - - if (intel->gen < 6 && dst.dw1.bits.writemask != 0xf) + if (dst.file != BRW_GENERAL_REGISTER_FILE || + dst.dw1.bits.writemask != 0xf) need_tmp = GL_TRUE; if (need_tmp) @@ -619,6 +628,57 @@ static void emit_math1( struct brw_vs_compile *c, } } +static void +emit_math1_gen6(struct brw_vs_compile *c, + GLuint function, + struct brw_reg dst, + struct brw_reg arg0, + GLuint precision) +{ + struct brw_compile *p = &c->func; + struct brw_reg tmp_src, tmp_dst; + + /* Something is strange on gen6 math in 16-wide mode, though the + * docs say it's supposed to work. Punt to using align1 mode, + * which doesn't do writemasking and swizzles. + */ + tmp_src = get_tmp(c); + tmp_dst = get_tmp(c); + + brw_MOV(p, tmp_src, arg0); + + brw_set_access_mode(p, BRW_ALIGN_1); + brw_math(p, + tmp_dst, + function, + BRW_MATH_SATURATE_NONE, + 2, + tmp_src, + BRW_MATH_DATA_SCALAR, + precision); + brw_set_access_mode(p, BRW_ALIGN_16); + + brw_MOV(p, dst, tmp_dst); + + release_tmp(c, tmp_src); + release_tmp(c, tmp_dst); +} + +static void +emit_math1(struct brw_vs_compile *c, + GLuint function, + struct brw_reg dst, + struct brw_reg arg0, + GLuint precision) +{ + struct brw_compile *p = &c->func; + struct intel_context *intel = &p->brw->intel; + + if (intel->gen >= 6) + emit_math1_gen6(c, function, dst, arg0, precision); + else + emit_math1_gen4(c, function, dst, arg0, precision); +} static void emit_math2( struct brw_vs_compile *c, GLuint function, @@ -1392,9 +1452,33 @@ static void emit_vertex_write( struct brw_vs_compile *c) /* Update the header for point size, user clipping flags, and -ve rhw * workaround. */ - if ((c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_PSIZ)) || - c->key.nr_userclip || brw->has_negative_rhw_bug) - { + if (intel->gen >= 6) { + struct brw_reg m1 = brw_message_reg(1); + + /* On gen6, m1 has each value in a separate dword, so we never + * need to mess with a temporary for computing the m1 value. + */ + brw_MOV(p, retype(m1, BRW_REGISTER_TYPE_UD), brw_imm_ud(0)); + if (c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_PSIZ)) { + brw_MOV(p, brw_writemask(m1, WRITEMASK_W), + brw_swizzle1(c->regs[PROGRAM_OUTPUT][VERT_RESULT_PSIZ], 0)); + } + + /* Set the user clip distances in dword 8-15. (m3-4)*/ + if (c->key.nr_userclip) { + for (i = 0; i < c->key.nr_userclip; i++) { + struct brw_reg m; + if (i < 4) + m = brw_message_reg(3); + else + m = brw_message_reg(4); + + brw_DP4(p, brw_writemask(m, (1 << (i & 7))),pos, c->userplane[i]); + } + } + } else if ((c->prog_data.outputs_written & + BITFIELD64_BIT(VERT_RESULT_PSIZ)) || + c->key.nr_userclip || brw->has_negative_rhw_bug) { struct brw_reg header1 = retype(get_tmp(c), BRW_REGISTER_TYPE_UD); GLuint i; @@ -1404,11 +1488,10 @@ static void emit_vertex_write( struct brw_vs_compile *c) if (c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_PSIZ)) { struct brw_reg psiz = c->regs[PROGRAM_OUTPUT][VERT_RESULT_PSIZ]; - if (intel->gen < 6) { - brw_MUL(p, brw_writemask(header1, WRITEMASK_W), brw_swizzle1(psiz, 0), brw_imm_f(1<<11)); - brw_AND(p, brw_writemask(header1, WRITEMASK_W), header1, brw_imm_ud(0x7ff<<8)); - } else - brw_MOV(p, brw_writemask(header1, WRITEMASK_W), brw_swizzle1(psiz, 0)); + brw_MUL(p, brw_writemask(header1, WRITEMASK_W), + brw_swizzle1(psiz, 0), brw_imm_f(1<<11)); + brw_AND(p, brw_writemask(header1, WRITEMASK_W), + header1, brw_imm_ud(0x7ff<<8)); } for (i = 0; i < c->key.nr_userclip; i++) { @@ -1461,12 +1544,14 @@ static void emit_vertex_write( struct brw_vs_compile *c) * dword 0-3 (m1) of the header is indices, point width, clip flags. * dword 4-7 (m2) is the 4D space position * dword 8-15 (m3,m4) of the vertex header is the user clip distance if - * enabled. We don't use it, so skip it. - * m3 is the first vertex element data we fill, which is the vertex - * position. + * enabled. + * m3 or 5 is the first vertex element data we fill, which is + * the vertex position. */ brw_MOV(p, brw_message_reg(2), pos); len_vertex_header = 1; + if (c->key.nr_userclip > 0) + len_vertex_header += 2; } else if (intel->gen == 5) { /* There are 20 DWs (D0-D19) in VUE header on Ironlake: * dword 0-3 (m1) of the header is indices, point width, clip flags. @@ -1640,17 +1725,13 @@ void brw_vs_emit(struct brw_vs_compile *c ) GLuint index; GLuint file; - if (INTEL_DEBUG & DEBUG_VS) { + if (unlikely(INTEL_DEBUG & DEBUG_VS)) { printf("vs-mesa:\n"); _mesa_fprint_program_opt(stdout, &c->vp->program.Base, PROG_PRINT_DEBUG, GL_TRUE); printf("\n"); } - /* FIXME Need to fix conditional instruction to remove this */ - if (intel->gen >= 6) - p->single_program_flow = GL_TRUE; - brw_set_compression_control(p, BRW_COMPRESSION_NONE); brw_set_access_mode(p, BRW_ALIGN_16); if_depth_in_loop[loop_depth] = 0; @@ -2010,7 +2091,7 @@ void brw_vs_emit(struct brw_vs_compile *c ) brw_optimize(p); - if (INTEL_DEBUG & DEBUG_VS) { + if (unlikely(INTEL_DEBUG & DEBUG_VS)) { int i; printf("vs-native:\n"); diff --git a/src/mesa/drivers/dri/i965/brw_vs_state.c b/src/mesa/drivers/dri/i965/brw_vs_state.c index ebae94269f..be92313861 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_state.c +++ b/src/mesa/drivers/dri/i965/brw_vs_state.c @@ -154,7 +154,7 @@ vs_unit_create_from_key(struct brw_context *brw, struct brw_vs_unit_key *key) */ vs.vs5.sampler_count = 0; - if (INTEL_DEBUG & DEBUG_STATS) + if (unlikely(INTEL_DEBUG & DEBUG_STATS)) vs.thread4.stats_enable = 1; /* Vertex program always enabled: diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index 7f3ba5f058..ccdc18e0b8 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -198,7 +198,7 @@ static void do_wm_prog( struct brw_context *brw, c->prog_data.total_scratch = 0; } - if (INTEL_DEBUG & DEBUG_WM) + if (unlikely(INTEL_DEBUG & DEBUG_WM)) fprintf(stderr, "\n"); /* get the program @@ -423,6 +423,7 @@ static void brw_wm_populate_key( struct brw_context *brw, */ if (fp->program.Base.InputsRead & FRAG_BIT_WPOS) { key->drawable_height = ctx->DrawBuffer->Height; + key->render_to_fbo = ctx->DrawBuffer->Name != 0; } key->nr_color_regions = brw->state.nr_color_regions; diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h index 99bd15c187..2ca685784f 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.h +++ b/src/mesa/drivers/dri/i965/brw_wm.h @@ -70,7 +70,8 @@ struct brw_wm_prog_key { GLuint linear_color:1; /**< linear interpolation vs perspective interp */ GLuint runtime_check_aads_emit:1; GLuint nr_color_regions:5; - + GLuint render_to_fbo:1; + GLbitfield proj_attrib_mask; /**< one bit per fragment program attribute */ GLuint shadowtex_mask:16; GLuint yuvtex_mask:16; diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c b/src/mesa/drivers/dri/i965/brw_wm_emit.c index 88bc64e5dd..96fecc97ee 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_emit.c +++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c @@ -83,6 +83,7 @@ brw_wm_arg_can_be_immediate(enum prog_opcode opcode, int arg) [OPCODE_SLE] = 2, [OPCODE_SLT] = 2, [OPCODE_SNE] = 2, + [OPCODE_SWZ] = 1, [OPCODE_XPD] = 2, }; @@ -895,11 +896,12 @@ void emit_math1(struct brw_wm_compile *c, BRW_MATH_SATURATE_NONE); struct brw_reg src; - if (intel->gen >= 6 && arg0[0].hstride == BRW_HORIZONTAL_STRIDE_0) { - /* Gen6 math requires that source and dst horizontal stride be 1. - * + if (intel->gen >= 6 && (arg0[0].hstride == BRW_HORIZONTAL_STRIDE_0 || + arg0[0].file != BRW_GENERAL_REGISTER_FILE)) { + /* Gen6 math requires that source and dst horizontal stride be 1, + * and that the argument be in the GRF. */ - src = *dst; + src = dst[dst_chan]; brw_MOV(p, src, arg0[0]); } else { src = arg0[0]; @@ -1576,7 +1578,7 @@ static void emit_spill( struct brw_wm_compile *c, mov (1) r0.2<1>:d 0x00000080:d { Align1 NoMask } send (16) null.0<1>:uw m1 r0.0<8;8,1>:uw 0x053003ff:ud { Align1 } */ - brw_oword_block_write(p, brw_message_reg(1), 2, slot); + brw_oword_block_write_scratch(p, brw_message_reg(1), 2, slot); } @@ -1920,7 +1922,7 @@ void brw_wm_emit( struct brw_wm_compile *c ) brw_remove_grf_to_mrf_moves(p); } - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { int i; printf("wm-native:\n"); diff --git a/src/mesa/drivers/dri/i965/brw_wm_fp.c b/src/mesa/drivers/dri/i965/brw_wm_fp.c index 15a238cda6..2cae698880 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_fp.c +++ b/src/mesa/drivers/dri/i965/brw_wm_fp.c @@ -663,7 +663,7 @@ static void precalc_tex( struct brw_wm_compile *c, const struct prog_instruction *inst ) { struct prog_src_register coord; - struct prog_dst_register tmpcoord; + struct prog_dst_register tmpcoord = { 0 }; const GLuint unit = c->fp->program.Base.SamplerUnits[inst->TexSrcUnit]; assert(unit < BRW_MAX_TEX_UNIT); @@ -963,7 +963,7 @@ static void emit_render_target_writes( struct brw_wm_compile *c ) struct prog_src_register outcolor; GLuint i; - struct prog_instruction *inst, *last_inst; + struct prog_instruction *inst, *last_inst = NULL; /* The inst->Aux field is used for FB write target and the EOT marker */ @@ -1058,7 +1058,7 @@ void brw_wm_pass_fp( struct brw_wm_compile *c ) struct brw_fragment_program *fp = c->fp; GLuint insn; - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { printf("pre-fp:\n"); _mesa_fprint_program_opt(stdout, &fp->program.Base, PROG_PRINT_DEBUG, GL_TRUE); @@ -1174,7 +1174,7 @@ void brw_wm_pass_fp( struct brw_wm_compile *c ) } } - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { printf("pass_fp:\n"); print_insns( c->prog_instructions, c->nr_fp_insns ); printf("\n"); diff --git a/src/mesa/drivers/dri/i965/brw_wm_glsl.c b/src/mesa/drivers/dri/i965/brw_wm_glsl.c index 55aceea9b5..7fe8ab1f33 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c +++ b/src/mesa/drivers/dri/i965/brw_wm_glsl.c @@ -19,7 +19,7 @@ GLboolean brw_wm_is_glsl(const struct gl_fragment_program *fp) { int i; - if (INTEL_DEBUG & DEBUG_GLSL_FORCE) + if (unlikely(INTEL_DEBUG & DEBUG_GLSL_FORCE)) return GL_TRUE; for (i = 0; i < fp->Base.NumInstructions; i++) { @@ -307,21 +307,20 @@ static void prealloc_reg(struct brw_wm_compile *c) /* use a real constant buffer, or just use a section of the GRF? */ /* XXX this heuristic may need adjustment... */ - if ((nr_params + nr_temps) * 4 + reg_index > 80) - c->fp->use_const_buffer = GL_TRUE; - else - c->fp->use_const_buffer = GL_FALSE; - /*printf("WM use_const_buffer = %d\n", c->fp->use_const_buffer);*/ + if ((nr_params + nr_temps) * 4 + reg_index > 80) { + for (i = 0; i < nr_params; i++) { + float *pv = c->fp->program.Base.Parameters->ParameterValues[i]; + for (j = 0; j < 4; j++) { + c->prog_data.pull_param[c->prog_data.nr_pull_params] = &pv[j]; + c->prog_data.nr_pull_params++; + } + } - if (c->fp->use_const_buffer) { - /* We'll use a real constant buffer and fetch constants from - * it with a dataport read message. - */ + c->prog_data.nr_params = 0; + } + /*printf("WM use_const_buffer = %d\n", c->fp->use_const_buffer);*/ - /* number of float constants in CURBE */ - c->prog_data.nr_params = 0; - } - else { + if (!c->prog_data.nr_pull_params) { const struct gl_program_parameter_list *plist = c->fp->program.Base.Parameters; int index = 0; @@ -463,7 +462,7 @@ static void prealloc_reg(struct brw_wm_compile *c) * They'll be found in these registers. * XXX alloc these on demand! */ - if (c->fp->use_const_buffer) { + if (c->prog_data.nr_pull_params) { for (i = 0; i < 3; i++) { c->current_const[i].index = -1; c->current_const[i].reg = brw_vec8_grf(alloc_grf(c), 0); @@ -501,12 +500,11 @@ static void fetch_constants(struct brw_wm_compile *c, #endif /* need to fetch the constant now */ - brw_dp_READ_4(p, - c->current_const[i].reg, /* writeback dest */ - src->RelAddr, /* relative indexing? */ - 16 * src->Index, /* byte offset */ - SURF_INDEX_FRAG_CONST_BUFFER/* binding table index */ - ); + brw_oword_block_read(p, + c->current_const[i].reg, + brw_message_reg(1), + 16 * src->Index, + SURF_INDEX_FRAG_CONST_BUFFER); } } } @@ -606,7 +604,7 @@ static struct brw_reg get_src_reg(struct brw_wm_compile *c, } } - if (c->fp->use_const_buffer && + if (c->prog_data.nr_pull_params && (src->File == PROGRAM_STATE_VAR || src->File == PROGRAM_CONSTANT || src->File == PROGRAM_UNIFORM)) { @@ -729,7 +727,7 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c) #endif /* fetch any constants that this instruction needs */ - if (c->fp->use_const_buffer) + if (c->prog_data.nr_pull_params) fetch_constants(c, inst); if (inst->Opcode != OPCODE_ARL) { @@ -1004,7 +1002,7 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c) } post_wm_emit(c); - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { printf("wm-native:\n"); for (i = 0; i < p->nr_insn; i++) brw_disasm(stdout, &p->store[i], intel->gen); @@ -1018,7 +1016,7 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c) */ void brw_wm_glsl_emit(struct brw_context *brw, struct brw_wm_compile *c) { - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { printf("brw_wm_glsl_emit:\n"); } @@ -1028,7 +1026,7 @@ void brw_wm_glsl_emit(struct brw_context *brw, struct brw_wm_compile *c) /* actual code generation */ brw_wm_emit_glsl(brw, c); - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { brw_wm_print_program(c, "brw_wm_glsl_emit done"); } diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass0.c b/src/mesa/drivers/dri/i965/brw_wm_pass0.c index 8fc960b445..83152526b3 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_pass0.c +++ b/src/mesa/drivers/dri/i965/brw_wm_pass0.c @@ -113,6 +113,7 @@ static const struct brw_wm_ref *get_param_ref( struct brw_wm_compile *c, struct brw_wm_ref *ref = get_ref(c); c->prog_data.param[i] = param_ptr; + c->prog_data.param_convert[i] = PARAM_NO_CONVERT; c->nr_creg = (i+16)/16; /* Push the offsets into hw_reg. These will be added to the @@ -439,7 +440,7 @@ void brw_wm_pass0( struct brw_wm_compile *c ) } } - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { brw_wm_print_program(c, "pass0"); } } diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass1.c b/src/mesa/drivers/dri/i965/brw_wm_pass1.c index 962515a99e..3a2874b6dd 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_pass1.c +++ b/src/mesa/drivers/dri/i965/brw_wm_pass1.c @@ -291,7 +291,7 @@ void brw_wm_pass1( struct brw_wm_compile *c ) track_arg(c, inst, 2, read2); } - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { brw_wm_print_program(c, "pass1"); } } diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass2.c b/src/mesa/drivers/dri/i965/brw_wm_pass2.c index 54acb3038b..44e3953814 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_pass2.c +++ b/src/mesa/drivers/dri/i965/brw_wm_pass2.c @@ -331,13 +331,13 @@ void brw_wm_pass2( struct brw_wm_compile *c ) } } - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { brw_wm_print_program(c, "pass2"); } c->state = PASS2_DONE; - if (INTEL_DEBUG & DEBUG_WM) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { brw_wm_print_program(c, "pass2/done"); } } diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c index 433ccc66f0..76de7b7b6f 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_state.c @@ -137,9 +137,9 @@ wm_unit_populate_key(struct brw_context *brw, struct brw_wm_unit_key *key) /* If using the fragment shader backend, the program is always * 8-wide. */ - if (ctx->Shader.CurrentProgram) { + if (ctx->Shader.CurrentFragmentProgram) { struct brw_shader *shader = (struct brw_shader *) - ctx->Shader.CurrentProgram->_LinkedShaders[MESA_SHADER_FRAGMENT]; + ctx->Shader.CurrentFragmentProgram->_LinkedShaders[MESA_SHADER_FRAGMENT]; if (shader != NULL && shader->ir != NULL) { key->is_glsl = GL_TRUE; @@ -249,7 +249,7 @@ wm_unit_create_from_key(struct brw_context *brw, struct brw_wm_unit_key *key, wm.wm5.line_stipple = key->line_stipple; - if (INTEL_DEBUG & DEBUG_STATS || key->stats_wm) + if (unlikely(INTEL_DEBUG & DEBUG_STATS) || key->stats_wm) wm.wm4.stats_enable = 1; bo = brw_upload_cache(&brw->cache, BRW_WM_UNIT, diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 5588702afc..76fc94df1f 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -319,13 +319,14 @@ prepare_wm_constants(struct brw_context *brw) struct intel_context *intel = &brw->intel; struct brw_fragment_program *fp = (struct brw_fragment_program *) brw->fragment_program; - const struct gl_program_parameter_list *params = fp->program.Base.Parameters; - const int size = params->NumParameters * 4 * sizeof(GLfloat); + const int size = brw->wm.prog_data->nr_pull_params * sizeof(float); + float *constants; + unsigned int i; _mesa_load_state_parameters(ctx, fp->program.Base.Parameters); /* BRW_NEW_FRAGMENT_PROGRAM */ - if (!fp->use_const_buffer) { + if (brw->wm.prog_data->nr_pull_params == 0) { if (brw->wm.const_bo) { drm_intel_bo_unreference(brw->wm.const_bo); brw->wm.const_bo = NULL; @@ -335,11 +336,19 @@ prepare_wm_constants(struct brw_context *brw) } drm_intel_bo_unreference(brw->wm.const_bo); - brw->wm.const_bo = drm_intel_bo_alloc(intel->bufmgr, "vp_const_buffer", + brw->wm.const_bo = drm_intel_bo_alloc(intel->bufmgr, "WM const bo", size, 64); /* _NEW_PROGRAM_CONSTANTS */ - drm_intel_bo_subdata(brw->wm.const_bo, 0, size, params->ParameterValues); + drm_intel_gem_bo_map_gtt(brw->wm.const_bo); + constants = brw->wm.const_bo->virtual; + for (i = 0; i < brw->wm.prog_data->nr_pull_params; i++) { + constants[i] = convert_param(brw->wm.prog_data->pull_param_convert[i], + *brw->wm.prog_data->pull_param[i]); + } + drm_intel_gem_bo_unmap_gtt(brw->wm.const_bo); + + brw->state.dirty.brw |= BRW_NEW_WM_CONSTBUF; } const struct brw_tracked_state brw_wm_constants = { diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c index 0d6e923f73..800a255521 100644 --- a/src/mesa/drivers/dri/i965/gen6_cc.c +++ b/src/mesa/drivers/dri/i965/gen6_cc.c @@ -254,7 +254,7 @@ prepare_color_calc_state(struct brw_context *brw) const struct brw_tracked_state gen6_color_calc_state = { .dirty = { - .mesa = _NEW_COLOR, + .mesa = _NEW_COLOR | _NEW_STENCIL, .brw = 0, .cache = 0, }, diff --git a/src/mesa/drivers/dri/i965/gen6_clip_state.c b/src/mesa/drivers/dri/i965/gen6_clip_state.c index cd2ac9d92f..c65b41e2b6 100644 --- a/src/mesa/drivers/dri/i965/gen6_clip_state.c +++ b/src/mesa/drivers/dri/i965/gen6_clip_state.c @@ -28,6 +28,7 @@ #include "brw_context.h" #include "brw_state.h" #include "brw_defines.h" +#include "brw_util.h" #include "intel_batchbuffer.h" static void @@ -36,7 +37,7 @@ upload_clip_state(struct brw_context *brw) struct intel_context *intel = &brw->intel; struct gl_context *ctx = &intel->ctx; uint32_t depth_clamp = 0; - uint32_t provoking; + uint32_t provoking, userclip; if (!ctx->Transform.DepthClamp) depth_clamp = GEN6_CLIP_Z_TEST; @@ -50,6 +51,9 @@ upload_clip_state(struct brw_context *brw) (1 << GEN6_CLIP_LINE_PROVOKE_SHIFT); } + /* _NEW_TRANSFORM */ + userclip = (1 << brw_count_bits(ctx->Transform.ClipPlanesEnabled)) - 1; + BEGIN_BATCH(4); OUT_BATCH(CMD_3D_CLIP_STATE << 16 | (4 - 2)); OUT_BATCH(GEN6_CLIP_STATISTICS_ENABLE); @@ -57,6 +61,7 @@ upload_clip_state(struct brw_context *brw) GEN6_CLIP_API_OGL | GEN6_CLIP_MODE_NORMAL | GEN6_CLIP_XY_TEST | + userclip << GEN6_USER_CLIP_CLIP_DISTANCES_SHIFT | depth_clamp | provoking); OUT_BATCH(GEN6_CLIP_FORCE_ZERO_RTAINDEX); diff --git a/src/mesa/drivers/dri/i965/gen6_sf_state.c b/src/mesa/drivers/dri/i965/gen6_sf_state.c index 55a70bea62..471067e8f0 100644 --- a/src/mesa/drivers/dri/i965/gen6_sf_state.c +++ b/src/mesa/drivers/dri/i965/gen6_sf_state.c @@ -73,12 +73,19 @@ upload_sf_state(struct brw_context *brw) /* _NEW_BUFFER */ GLboolean render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0; int attr = 0; + int urb_start; + + /* _NEW_TRANSFORM */ + if (ctx->Transform.ClipPlanesEnabled) + urb_start = 2; + else + urb_start = 1; dw1 = GEN6_SF_SWIZZLE_ENABLE | num_outputs << GEN6_SF_NUM_OUTPUTS_SHIFT | (num_inputs + 1) / 2 << GEN6_SF_URB_ENTRY_READ_LENGTH_SHIFT | - 1 << GEN6_SF_URB_ENTRY_READ_OFFSET_SHIFT; + urb_start << GEN6_SF_URB_ENTRY_READ_OFFSET_SHIFT; dw2 = GEN6_SF_VIEWPORT_TRANSFORM_ENABLE | GEN6_SF_STATISTICS_ENABLE; dw3 = 0; @@ -195,7 +202,9 @@ const struct brw_tracked_state gen6_sf_state = { _NEW_POLYGON | _NEW_LINE | _NEW_SCISSOR | - _NEW_BUFFERS), + _NEW_BUFFERS | + _NEW_POINT | + _NEW_TRANSFORM), .brw = BRW_NEW_CONTEXT, .cache = CACHE_NEW_VS_PROG }, diff --git a/src/mesa/drivers/dri/i965/gen6_urb.c b/src/mesa/drivers/dri/i965/gen6_urb.c index 0a264fcd90..a34123478f 100644 --- a/src/mesa/drivers/dri/i965/gen6_urb.c +++ b/src/mesa/drivers/dri/i965/gen6_urb.c @@ -40,7 +40,7 @@ prepare_urb( struct brw_context *brw ) else brw->urb.nr_gs_entries = 0; /* CACHE_NEW_VS_PROG */ - brw->urb.vs_size = MIN2(brw->vs.prog_data->urb_entry_size, 1); + brw->urb.vs_size = MAX2(brw->vs.prog_data->urb_entry_size, 1); /* Check that the number of URB rows (8 floats each) allocated is less * than the URB space. diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c index 304eaddf40..e94d0c0ddb 100644 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c @@ -40,11 +40,11 @@ upload_vs_state(struct brw_context *brw) struct gl_context *ctx = &intel->ctx; const struct brw_vertex_program *vp = brw_vertex_program_const(brw->vertex_program); - unsigned int nr_params = vp->program.Base.Parameters->NumParameters; + unsigned int nr_params = brw->vs.prog_data->nr_params / 4; drm_intel_bo *constant_bo; int i; - if (vp->use_const_buffer || nr_params == 0) { + if (brw->vs.prog_data->nr_params == 0 && !ctx->Transform.ClipPlanesEnabled) { /* Disable the push constant buffers. */ BEGIN_BATCH(5); OUT_BATCH(CMD_3D_CONSTANT_VS_STATE << 16 | (5 - 2)); @@ -54,6 +54,9 @@ upload_vs_state(struct brw_context *brw) OUT_BATCH(0); ADVANCE_BATCH(); } else { + int params_uploaded = 0; + float *param; + if (brw->vertex_program->IsNVProgram) _mesa_load_tracked_matrices(ctx); @@ -63,14 +66,55 @@ upload_vs_state(struct brw_context *brw) _mesa_load_state_parameters(ctx, vp->program.Base.Parameters); constant_bo = drm_intel_bo_alloc(intel->bufmgr, "VS constant_bo", - nr_params * 4 * sizeof(float), + (MAX_CLIP_PLANES + nr_params) * + 4 * sizeof(float), 4096); drm_intel_gem_bo_map_gtt(constant_bo); - for (i = 0; i < nr_params; i++) { - memcpy((char *)constant_bo->virtual + i * 4 * sizeof(float), - vp->program.Base.Parameters->ParameterValues[i], - 4 * sizeof(float)); + param = constant_bo->virtual; + + /* This should be loaded like any other param, but it's ad-hoc + * until we redo the VS backend. + */ + for (i = 0; i < MAX_CLIP_PLANES; i++) { + if (ctx->Transform.ClipPlanesEnabled & (1 << i)) { + memcpy(param, ctx->Transform._ClipUserPlane[i], 4 * sizeof(float)); + param += 4; + params_uploaded++; + } } + /* Align to a reg for convenience for brw_vs_emit.c */ + if (params_uploaded & 1) { + param += 4; + params_uploaded++; + } + + if (vp->use_const_buffer) { + for (i = 0; i < vp->program.Base.Parameters->NumParameters; i++) { + if (brw->vs.constant_map[i] != -1) { + memcpy(param + brw->vs.constant_map[i] * 4, + vp->program.Base.Parameters->ParameterValues[i], + 4 * sizeof(float)); + params_uploaded++; + } + } + } else { + for (i = 0; i < nr_params; i++) { + memcpy(param, vp->program.Base.Parameters->ParameterValues[i], + 4 * sizeof(float)); + param += 4; + params_uploaded++; + } + } + + if (0) { + printf("VS constant buffer:\n"); + for (i = 0; i < params_uploaded; i++) { + float *buf = (float *)constant_bo->virtual + i * 4; + printf("%d: %f %f %f %f\n", + i, buf[0], buf[1], buf[2], buf[3]); + } + } + drm_intel_gem_bo_unmap_gtt(constant_bo); BEGIN_BATCH(5); @@ -79,7 +123,7 @@ upload_vs_state(struct brw_context *brw) (5 - 2)); OUT_RELOC(constant_bo, I915_GEM_DOMAIN_RENDER, 0, /* XXX: bad domain */ - ALIGN(nr_params, 2) / 2 - 1); + ALIGN(params_uploaded, 2) / 2 - 1); OUT_BATCH(0); OUT_BATCH(0); OUT_BATCH(0); @@ -91,7 +135,7 @@ upload_vs_state(struct brw_context *brw) BEGIN_BATCH(6); OUT_BATCH(CMD_3D_VS_STATE << 16 | (6 - 2)); OUT_RELOC(brw->vs.prog_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); - OUT_BATCH(GEN6_VS_SPF_MODE | (0 << GEN6_VS_SAMPLER_COUNT_SHIFT) | + OUT_BATCH((0 << GEN6_VS_SAMPLER_COUNT_SHIFT) | (brw->vs.nr_surfaces << GEN6_VS_BINDING_TABLE_ENTRY_COUNT_SHIFT)); OUT_BATCH(0); /* scratch space base offset */ OUT_BATCH((1 << GEN6_VS_DISPATCH_START_GRF_SHIFT) | diff --git a/src/mesa/drivers/dri/i965/gen6_wm_state.c b/src/mesa/drivers/dri/i965/gen6_wm_state.c index 21059be965..ea5418bacf 100644 --- a/src/mesa/drivers/dri/i965/gen6_wm_state.c +++ b/src/mesa/drivers/dri/i965/gen6_wm_state.c @@ -63,7 +63,8 @@ prepare_wm_constants(struct brw_context *brw) drm_intel_gem_bo_map_gtt(brw->wm.push_const_bo); constants = brw->wm.push_const_bo->virtual; for (i = 0; i < brw->wm.prog_data->nr_params; i++) { - constants[i] = *brw->wm.prog_data->param[i]; + constants[i] = convert_param(brw->wm.prog_data->param_convert[i], + *brw->wm.prog_data->param[i]); } drm_intel_gem_bo_unmap_gtt(brw->wm.push_const_bo); } @@ -72,7 +73,7 @@ prepare_wm_constants(struct brw_context *brw) const struct brw_tracked_state gen6_wm_constants = { .dirty = { .mesa = _NEW_PROGRAM_CONSTANTS, - .brw = 0, + .brw = BRW_NEW_FRAGMENT_PROGRAM, .cache = 0, }, .prepare = prepare_wm_constants, @@ -87,7 +88,7 @@ upload_wm_state(struct brw_context *brw) brw_fragment_program_const(brw->fragment_program); uint32_t dw2, dw4, dw5, dw6; - if (fp->use_const_buffer || brw->wm.prog_data->nr_params == 0) { + if (brw->wm.prog_data->nr_params == 0) { /* Disable the push constant buffers. */ BEGIN_BATCH(5); OUT_BATCH(CMD_3D_CONSTANT_PS_STATE << 16 | (5 - 2)); @@ -115,7 +116,7 @@ upload_wm_state(struct brw_context *brw) dw5 |= GEN6_WM_LINE_AA_WIDTH_1_0; dw5 |= GEN6_WM_LINE_END_CAP_AA_WIDTH_0_5; - /* BRW_NEW_NR_SURFACES */ + /* BRW_NEW_NR_WM_SURFACES */ dw2 |= brw->wm.nr_surfaces << GEN6_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT; /* CACHE_NEW_SAMPLER */ diff --git a/src/mesa/drivers/dri/i965/intel_structs.h b/src/mesa/drivers/dri/i965/intel_structs.h deleted file mode 100644 index 522e3bd92c..0000000000 --- a/src/mesa/drivers/dri/i965/intel_structs.h +++ /dev/null @@ -1,132 +0,0 @@ -#ifndef INTEL_STRUCTS_H -#define INTEL_STRUCTS_H - -struct br0 { - GLuint length:8; - GLuint pad0:3; - GLuint dst_tiled:1; - GLuint pad1:8; - GLuint write_rgb:1; - GLuint write_alpha:1; - GLuint opcode:7; - GLuint client:3; -}; - - -struct br13 { - GLint dest_pitch:16; - GLuint rop:8; - GLuint color_depth:2; - GLuint pad1:3; - GLuint mono_source_transparency:1; - GLuint clipping_enable:1; - GLuint pad0:1; -}; - - - -/* This is an attempt to move some of the 2D interaction in this - * driver to using structs for packets rather than a bunch of #defines - * and dwords. - */ -struct xy_color_blit { - struct br0 br0; - struct br13 br13; - - struct { - GLuint dest_x1:16; - GLuint dest_y1:16; - } dw2; - - struct { - GLuint dest_x2:16; - GLuint dest_y2:16; - } dw3; - - GLuint dest_base_addr; - GLuint color; -}; - -struct xy_src_copy_blit { - struct br0 br0; - struct br13 br13; - - struct { - GLuint dest_x1:16; - GLuint dest_y1:16; - } dw2; - - struct { - GLuint dest_x2:16; - GLuint dest_y2:16; - } dw3; - - GLuint dest_base_addr; - - struct { - GLuint src_x1:16; - GLuint src_y1:16; - } dw5; - - struct { - GLint src_pitch:16; - GLuint pad:16; - } dw6; - - GLuint src_base_addr; -}; - -struct xy_setup_blit { - struct br0 br0; - struct br13 br13; - - struct { - GLuint clip_x1:16; - GLuint clip_y1:16; - } dw2; - - struct { - GLuint clip_x2:16; - GLuint clip_y2:16; - } dw3; - - GLuint dest_base_addr; - GLuint background_color; - GLuint foreground_color; - GLuint pattern_base_addr; -}; - - -struct xy_text_immediate_blit { - struct { - GLuint length:8; - GLuint pad2:3; - GLuint dst_tiled:1; - GLuint pad1:4; - GLuint byte_packed:1; - GLuint pad0:5; - GLuint opcode:7; - GLuint client:3; - } dw0; - - struct { - GLuint dest_x1:16; - GLuint dest_y1:16; - } dw1; - - struct { - GLuint dest_x2:16; - GLuint dest_y2:16; - } dw2; - - /* Src bitmap data follows as inline dwords. - */ -}; - - -#define CLIENT_2D 0x2 -#define OPCODE_XY_SETUP_BLT 0x1 -#define OPCODE_XY_COLOR_BLT 0x50 -#define OPCODE_XY_TEXT_IMMEDIATE_BLT 0x31 - -#endif diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c index 9b39823917..4b498f8c5b 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c @@ -44,7 +44,9 @@ intel_batchbuffer_reset(struct intel_batchbuffer *batch) batch->buf = drm_intel_bo_alloc(intel->bufmgr, "batchbuffer", intel->maxBatchSize, 4096); - batch->map = batch->buffer; + drm_intel_gem_bo_map_gtt(batch->buf); + batch->map = batch->buf->virtual; + batch->size = intel->maxBatchSize; batch->ptr = batch->map; batch->reserved_space = BATCH_RESERVED; @@ -58,7 +60,6 @@ intel_batchbuffer_alloc(struct intel_context *intel) struct intel_batchbuffer *batch = calloc(sizeof(*batch), 1); batch->intel = intel; - batch->buffer = malloc(intel->maxBatchSize); intel_batchbuffer_reset(batch); return batch; @@ -67,8 +68,11 @@ intel_batchbuffer_alloc(struct intel_context *intel) void intel_batchbuffer_free(struct intel_batchbuffer *batch) { - free (batch->buffer); - drm_intel_bo_unreference(batch->buf); + if (batch->map) { + drm_intel_gem_bo_unmap_gtt(batch->buf); + batch->map = NULL; + } + dri_bo_unreference(batch->buf); batch->buf = NULL; free(batch); } @@ -84,13 +88,7 @@ do_flush_locked(struct intel_batchbuffer *batch, GLuint used) int ret = 0; int x_off = 0, y_off = 0; - drm_intel_bo_subdata(batch->buf, 0, used, batch->buffer); - if (batch->state_batch_offset != batch->size) { - drm_intel_bo_subdata(batch->buf, - batch->state_batch_offset, - batch->size - batch->state_batch_offset, - batch->buffer + batch->state_batch_offset); - } + drm_intel_gem_bo_unmap_gtt(batch->buf); batch->ptr = NULL; @@ -99,7 +97,7 @@ do_flush_locked(struct intel_batchbuffer *batch, GLuint used) (x_off & 0xffff) | (y_off << 16)); } - if (INTEL_DEBUG & DEBUG_BATCH) { + if (unlikely(INTEL_DEBUG & DEBUG_BATCH)) { drm_intel_bo_map(batch->buf, GL_FALSE); intel_decode(batch->buf->virtual, used / 4, batch->buf->offset, intel->intelScreen->deviceID, GL_TRUE); @@ -130,7 +128,7 @@ _intel_batchbuffer_flush(struct intel_batchbuffer *batch, const char *file, if (used == 0) return; - if (INTEL_DEBUG & DEBUG_BATCH) + if (unlikely(INTEL_DEBUG & DEBUG_BATCH)) fprintf(stderr, "%s:%d: Batchbuffer flush with %db used\n", file, line, used); @@ -174,7 +172,7 @@ _intel_batchbuffer_flush(struct intel_batchbuffer *batch, const char *file, do_flush_locked(batch, used); - if (INTEL_DEBUG & DEBUG_SYNC) { + if (unlikely(INTEL_DEBUG & DEBUG_SYNC)) { fprintf(stderr, "waiting for idle\n"); drm_intel_bo_map(batch->buf, GL_TRUE); drm_intel_bo_unmap(batch->buf); diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.h b/src/mesa/drivers/dri/intel/intel_batchbuffer.h index ae53f45511..428c027c2f 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.h +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.h @@ -17,8 +17,6 @@ struct intel_batchbuffer drm_intel_bo *buf; - GLubyte *buffer; - GLubyte *map; GLubyte *ptr; diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c index a74e21720f..c2917e9b07 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.c +++ b/src/mesa/drivers/dri/intel/intel_blit.c @@ -483,8 +483,11 @@ intel_emit_linear_blit(struct intel_context *intel, /* Blits are in a different ringbuffer so we don't use them. */ assert(intel->gen < 6); - /* The pitch is a signed value. */ - pitch = MIN2(size, (1 << 15) - 1); + /* The pitch given to the GPU must be DWORD aligned, and + * we want width to match pitch. Max width is (1 << 15 - 1), + * rounding that down to the nearest DWORD is 1 << 15 - 4 + */ + pitch = MIN2(size, (1 << 15) - 4); height = size / pitch; ok = intelEmitCopyBlit(intel, 1, pitch, src_bo, src_offset, I915_TILING_NONE, @@ -499,6 +502,7 @@ intel_emit_linear_blit(struct intel_context *intel, dst_offset += pitch * height; size -= pitch * height; assert (size < (1 << 15)); + assert ((size & 3) == 0); /* Pitch must be DWORD aligned */ if (size != 0) { ok = intelEmitCopyBlit(intel, 1, size, src_bo, src_offset, I915_TILING_NONE, diff --git a/src/mesa/drivers/dri/intel/intel_chipset.h b/src/mesa/drivers/dri/intel/intel_chipset.h index 1e7ceed32a..4fecdbed20 100644 --- a/src/mesa/drivers/dri/intel/intel_chipset.h +++ b/src/mesa/drivers/dri/intel/intel_chipset.h @@ -67,6 +67,7 @@ #define PCI_CHIP_G45_G 0x2E22 #define PCI_CHIP_G41_G 0x2E32 #define PCI_CHIP_B43_G 0x2E42 +#define PCI_CHIP_B43_G1 0x2E92 #define PCI_CHIP_ILD_G 0x0042 #define PCI_CHIP_ILM_G 0x0046 @@ -93,7 +94,8 @@ devid == PCI_CHIP_Q45_G || \ devid == PCI_CHIP_G45_G || \ devid == PCI_CHIP_G41_G || \ - devid == PCI_CHIP_B43_G) + devid == PCI_CHIP_B43_G || \ + devid == PCI_CHIP_B43_G1) #define IS_GM45(devid) (devid == PCI_CHIP_GM45_GM) #define IS_G4X(devid) (IS_G45(devid) || IS_GM45(devid)) diff --git a/src/mesa/drivers/dri/intel/intel_clear.c b/src/mesa/drivers/dri/intel/intel_clear.c index d7814635b7..fa451f0045 100644 --- a/src/mesa/drivers/dri/intel/intel_clear.c +++ b/src/mesa/drivers/dri/intel/intel_clear.c @@ -58,6 +58,21 @@ static const char *buffer_names[] = { [BUFFER_COLOR7] = "color7", }; +static void +debug_mask(const char *name, GLbitfield mask) +{ + GLuint i; + + if (unlikely(INTEL_DEBUG & DEBUG_BLIT)) { + DBG("%s clear:", name); + for (i = 0; i < BUFFER_COUNT; i++) { + if (mask & (1 << i)) + DBG(" %s", buffer_names[i]); + } + DBG("\n"); + } +} + /** * Called by ctx->Driver.Clear. */ @@ -70,7 +85,6 @@ intelClear(struct gl_context *ctx, GLbitfield mask) GLbitfield blit_mask = 0; GLbitfield swrast_mask = 0; struct gl_framebuffer *fb = ctx->DrawBuffer; - GLuint i; if (mask & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_FRONT_RIGHT)) { intel->front_buffer_dirty = GL_TRUE; @@ -162,39 +176,17 @@ intelClear(struct gl_context *ctx, GLbitfield mask) } if (blit_mask) { - if (INTEL_DEBUG & DEBUG_BLIT) { - DBG("blit clear:"); - for (i = 0; i < BUFFER_COUNT; i++) { - if (blit_mask & (1 << i)) - DBG(" %s", buffer_names[i]); - } - DBG("\n"); - } + debug_mask("blit", blit_mask); intelClearWithBlit(ctx, blit_mask); } if (tri_mask) { - if (INTEL_DEBUG & DEBUG_BLIT) { - DBG("tri clear:"); - for (i = 0; i < BUFFER_COUNT; i++) { - if (tri_mask & (1 << i)) - DBG(" %s", buffer_names[i]); - } - DBG("\n"); - } - + debug_mask("tri", tri_mask); _mesa_meta_Clear(&intel->ctx, tri_mask); } if (swrast_mask) { - if (INTEL_DEBUG & DEBUG_BLIT) { - DBG("swrast clear:"); - for (i = 0; i < BUFFER_COUNT; i++) { - if (swrast_mask & (1 << i)) - DBG(" %s", buffer_names[i]); - } - DBG("\n"); - } + debug_mask("swrast", swrast_mask); _swrast_Clear(ctx, swrast_mask); } } diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index 7ace50bde9..152cdcaf37 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -155,6 +155,7 @@ intelGetString(struct gl_context * ctx, GLenum name) chipset = "Intel(R) G41"; break; case PCI_CHIP_B43_G: + case PCI_CHIP_B43_G1: chipset = "Intel(R) B43"; break; case PCI_CHIP_ILD_G: @@ -249,7 +250,7 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable) * thus ignore the invalidate. */ drawable->lastStamp = drawable->dri2.stamp; - if (INTEL_DEBUG & DEBUG_DRI) + if (unlikely(INTEL_DEBUG & DEBUG_DRI)) fprintf(stderr, "enter %s, drawable %p\n", __func__, drawable); screen = intel->intelScreen->driScrnPriv; @@ -378,14 +379,14 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable) if (rb->region && rb->region->name == buffers[i].name) continue; - if (INTEL_DEBUG & DEBUG_DRI) + if (unlikely(INTEL_DEBUG & DEBUG_DRI)) fprintf(stderr, "attaching buffer %d, at %d, cpp %d, pitch %d\n", buffers[i].name, buffers[i].attachment, buffers[i].cpp, buffers[i].pitch); if (buffers[i].attachment == __DRI_BUFFER_STENCIL && depth_region) { - if (INTEL_DEBUG & DEBUG_DRI) + if (unlikely(INTEL_DEBUG & DEBUG_DRI)) fprintf(stderr, "(reusing depth buffer as stencil)\n"); intel_region_reference(®ion, depth_region); } diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index 46d10d74ba..9d5139c000 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -98,6 +98,16 @@ extern void intelFallback(struct intel_context *intel, GLbitfield bit, #define INTEL_MAX_FIXUP 64 +#ifndef likely +#ifdef __GNUC__ +#define likely(expr) (__builtin_expect(expr, 1)) +#define unlikely(expr) (__builtin_expect(expr, 0)) +#else +#define likely(expr) (expr) +#define unlikely(expr) (expr) +#endif +#endif + struct intel_sync_object { struct gl_sync_object Base; @@ -180,9 +190,6 @@ struct intel_context } prim; GLuint stats_wm; - GLboolean locked; - char *prevLockFile; - int prevLockLine; /* Offsets of fields within the current vertex: */ @@ -359,10 +366,15 @@ extern int INTEL_DEBUG; #define DEBUG_CLIP 0x8000000 #define DBG(...) do { \ - if (INTEL_DEBUG & FILE_DEBUG_FLAG) \ + if (unlikely(INTEL_DEBUG & FILE_DEBUG_FLAG)) \ printf(__VA_ARGS__); \ } while(0) +#define fallback_debug(...) do { \ + if (unlikely(INTEL_DEBUG & DEBUG_FALLBACKS)) \ + printf(__VA_ARGS__); \ +} while(0) + #define PCI_CHIP_845_G 0x2562 #define PCI_CHIP_I830_M 0x3577 #define PCI_CHIP_I855_GM 0x3582 diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c index 974045730b..556a4195bd 100644 --- a/src/mesa/drivers/dri/intel/intel_extensions.c +++ b/src/mesa/drivers/dri/intel/intel_extensions.c @@ -55,6 +55,7 @@ #define need_GL_EXT_point_parameters #define need_GL_EXT_provoking_vertex #define need_GL_EXT_secondary_color +#define need_GL_EXT_separate_shader_objects #define need_GL_EXT_stencil_two_side #define need_GL_EXT_timer_query #define need_GL_APPLE_vertex_array_object @@ -114,6 +115,7 @@ static const struct dri_extension card_extensions[] = { { "GL_EXT_packed_depth_stencil", NULL }, { "GL_EXT_provoking_vertex", GL_EXT_provoking_vertex_functions }, { "GL_EXT_secondary_color", GL_EXT_secondary_color_functions }, + { "GL_EXT_separate_shader_objects", GL_EXT_separate_shader_objects_functions }, { "GL_EXT_stencil_wrap", NULL }, { "GL_EXT_texture_edge_clamp", NULL }, { "GL_EXT_texture_env_combine", NULL }, diff --git a/src/mesa/drivers/dri/intel/intel_pixel.c b/src/mesa/drivers/dri/intel/intel_pixel.c index 60583ef4c0..d5c35775ce 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel.c +++ b/src/mesa/drivers/dri/intel/intel_pixel.c @@ -147,10 +147,9 @@ intel_check_blit_format(struct intel_region * region, return GL_TRUE; } - if (INTEL_DEBUG & DEBUG_PIXEL) - fprintf(stderr, "%s: bad format for blit (cpp %d, type %s format %s)\n", - __FUNCTION__, region->cpp, - _mesa_lookup_enum_by_nr(type), _mesa_lookup_enum_by_nr(format)); + DBG("%s: bad format for blit (cpp %d, type %s format %s)\n", + __FUNCTION__, region->cpp, + _mesa_lookup_enum_by_nr(type), _mesa_lookup_enum_by_nr(format)); return GL_FALSE; } diff --git a/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c b/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c index 63fb4b37b1..e7356a6da0 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c @@ -113,9 +113,8 @@ static GLuint get_bitmap_rect(GLsizei width, GLsizei height, GLint incr; GLuint count = 0; - if (INTEL_DEBUG & DEBUG_PIXEL) - printf("%s %d,%d %dx%d bitmap %dx%d skip %d src_offset %d mask %d\n", - __FUNCTION__, x,y,w,h,width,height,unpack->SkipPixels, src_offset, mask); + DBG("%s %d,%d %dx%d bitmap %dx%d skip %d src_offset %d mask %d\n", + __FUNCTION__, x,y,w,h,width,height,unpack->SkipPixels, src_offset, mask); if (invert) { first = h-1; @@ -285,7 +284,7 @@ do_blit_bitmap( struct gl_context *ctx, } out: - if (INTEL_DEBUG & DEBUG_SYNC) + if (unlikely(INTEL_DEBUG & DEBUG_SYNC)) intel_batchbuffer_flush(intel->batch); if (_mesa_is_bufferobj(unpack->BufferObj)) { @@ -299,6 +298,7 @@ out: return GL_TRUE; } + /* There are a large number of possible ways to implement bitmap on * this hardware, most of them have some sort of drawback. Here are a * few that spring to mind: diff --git a/src/mesa/drivers/dri/intel/intel_pixel_copy.c b/src/mesa/drivers/dri/intel/intel_pixel_copy.c index c6b36ed429..a7ca780e94 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_copy.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_copy.c @@ -119,8 +119,7 @@ do_blit_copypixels(struct gl_context * ctx, GLboolean flip = GL_FALSE; if (type == GL_DEPTH || type == GL_STENCIL) { - if (INTEL_DEBUG & DEBUG_FALLBACKS) - fprintf(stderr, "glCopyPixels() fallback: GL_DEPTH || GL_STENCIL\n"); + fallback_debug("glCopyPixels() fallback: GL_DEPTH || GL_STENCIL\n"); return GL_FALSE; } @@ -203,8 +202,7 @@ intelCopyPixels(struct gl_context * ctx, GLsizei width, GLsizei height, GLint destx, GLint desty, GLenum type) { - if (INTEL_DEBUG & DEBUG_PIXEL) - fprintf(stderr, "%s\n", __FUNCTION__); + DBG("%s\n", __FUNCTION__); if (do_blit_copypixels(ctx, srcx, srcy, width, height, destx, desty, type)) return; diff --git a/src/mesa/drivers/dri/intel/intel_pixel_read.c b/src/mesa/drivers/dri/intel/intel_pixel_read.c index b249f9a5a0..54da29236d 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_read.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_read.c @@ -42,6 +42,8 @@ #include "intel_pixel.h" #include "intel_buffer_objects.h" +#define FILE_DEBUG_FLAG DEBUG_PIXEL + /* For many applications, the new ability to pull the source buffers * back out of the GTT and then do the packing/conversion operations * in software will be as much of an improvement as trying to get the @@ -79,8 +81,7 @@ do_blit_readpixels(struct gl_context * ctx, GLboolean all; GLint dst_x, dst_y; - if (INTEL_DEBUG & DEBUG_PIXEL) - printf("%s\n", __FUNCTION__); + DBG("%s\n", __FUNCTION__); if (!src) return GL_FALSE; @@ -88,22 +89,19 @@ do_blit_readpixels(struct gl_context * ctx, if (!_mesa_is_bufferobj(pack->BufferObj)) { /* PBO only for now: */ - if (INTEL_DEBUG & DEBUG_PIXEL) - printf("%s - not PBO\n", __FUNCTION__); + DBG("%s - not PBO\n", __FUNCTION__); return GL_FALSE; } if (ctx->_ImageTransferState || !intel_check_blit_format(src, format, type)) { - if (INTEL_DEBUG & DEBUG_PIXEL) - printf("%s - bad format for blit\n", __FUNCTION__); + DBG("%s - bad format for blit\n", __FUNCTION__); return GL_FALSE; } if (pack->Alignment != 1 || pack->SwapBytes || pack->LsbFirst) { - if (INTEL_DEBUG & DEBUG_PIXEL) - printf("%s: bad packing params\n", __FUNCTION__); + DBG("%s: bad packing params\n", __FUNCTION__); return GL_FALSE; } @@ -113,8 +111,7 @@ do_blit_readpixels(struct gl_context * ctx, rowLength = width; if (pack->Invert) { - if (INTEL_DEBUG & DEBUG_PIXEL) - printf("%s: MESA_PACK_INVERT not done yet\n", __FUNCTION__); + DBG("%s: MESA_PACK_INVERT not done yet\n", __FUNCTION__); return GL_FALSE; } else { @@ -158,8 +155,7 @@ do_blit_readpixels(struct gl_context * ctx, return GL_FALSE; } - if (INTEL_DEBUG & DEBUG_PIXEL) - printf("%s - DONE\n", __FUNCTION__); + DBG("%s - DONE\n", __FUNCTION__); return GL_TRUE; } @@ -173,8 +169,7 @@ intelReadPixels(struct gl_context * ctx, struct intel_context *intel = intel_context(ctx); GLboolean dirty; - if (INTEL_DEBUG & DEBUG_PIXEL) - fprintf(stderr, "%s\n", __FUNCTION__); + DBG("%s\n", __FUNCTION__); intel_flush(ctx); @@ -188,8 +183,7 @@ intelReadPixels(struct gl_context * ctx, (ctx, x, y, width, height, format, type, pack, pixels)) return; - if (INTEL_DEBUG & DEBUG_PIXEL) - printf("%s: fallback to swrast\n", __FUNCTION__); + fallback_debug("%s: fallback to swrast\n", __FUNCTION__); /* Update Mesa state before calling down into _swrast_ReadPixels, as * the spans code requires the computed buffer states to be up to date, diff --git a/src/mesa/drivers/dri/intel/intel_tex.c b/src/mesa/drivers/dri/intel/intel_tex.c index 3d9a2549db..2c21ea0576 100644 --- a/src/mesa/drivers/dri/intel/intel_tex.c +++ b/src/mesa/drivers/dri/intel/intel_tex.c @@ -61,88 +61,6 @@ intelFreeTextureImageData(struct gl_context * ctx, struct gl_texture_image *texI } } - -/* The system memcpy (at least on ubuntu 5.10) has problems copying - * to agp (writecombined) memory from a source which isn't 64-byte - * aligned - there is a 4x performance falloff. - * - * The x86 __memcpy is immune to this but is slightly slower - * (10%-ish) than the system memcpy. - * - * The sse_memcpy seems to have a slight cliff at 64/32 bytes, but - * isn't much faster than x86_memcpy for agp copies. - * - * TODO: switch dynamically. - */ -static void * -do_memcpy(void *dest, const void *src, size_t n) -{ - if ((((unsigned long) src) & 63) || (((unsigned long) dest) & 63)) { - return __memcpy(dest, src, n); - } - else - return memcpy(dest, src, n); -} - - -#if DO_DEBUG && !defined(__ia64__) - -#ifndef __x86_64__ -static unsigned -fastrdtsc(void) -{ - unsigned eax; - __asm__ volatile ("\t" - "pushl %%ebx\n\t" - "cpuid\n\t" ".byte 0x0f, 0x31\n\t" - "popl %%ebx\n":"=a" (eax) - :"0"(0) - :"ecx", "edx", "cc"); - - return eax; -} -#else -static unsigned -fastrdtsc(void) -{ - unsigned eax; - __asm__ volatile ("\t" "cpuid\n\t" ".byte 0x0f, 0x31\n\t":"=a" (eax) - :"0"(0) - :"ecx", "edx", "ebx", "cc"); - - return eax; -} -#endif - -static unsigned -time_diff(unsigned t, unsigned t2) -{ - return ((t < t2) ? t2 - t : 0xFFFFFFFFU - (t - t2 - 1)); -} - - -static void * -timed_memcpy(void *dest, const void *src, size_t n) -{ - void *ret; - unsigned t1, t2; - double rate; - - if ((((unsigned) src) & 63) || (((unsigned) dest) & 63)) - printf("Warning - non-aligned texture copy!\n"); - - t1 = fastrdtsc(); - ret = do_memcpy(dest, src, n); - t2 = fastrdtsc(); - - rate = time_diff(t1, t2); - rate /= (double) n; - printf("timed_memcpy: %u %u --> %f clocks/byte\n", t1, t2, rate); - return ret; -} -#endif /* DO_DEBUG */ - - /** * Called via ctx->Driver.GenerateMipmap() * This is basically a wrapper for _mesa_meta_GenerateMipmap() which checks @@ -158,8 +76,7 @@ intelGenerateMipmap(struct gl_context *ctx, GLenum target, struct intel_context *intel = intel_context(ctx); struct intel_texture_object *intelObj = intel_texture_object(texObj); - if (INTEL_DEBUG & DEBUG_FALLBACKS) - fprintf(stderr, "%s - fallback to swrast\n", __FUNCTION__); + fallback_debug("%s - fallback to swrast\n", __FUNCTION__); intel_tex_map_level_images(intel, intelObj, texObj->BaseLevel); _mesa_generate_mipmap(ctx, target, texObj); @@ -203,11 +120,4 @@ intelInitTextureFuncs(struct dd_function_table *functions) functions->NewTextureImage = intelNewTextureImage; functions->DeleteTexture = intelDeleteTextureObject; functions->FreeTexImageData = intelFreeTextureImageData; - -#if DO_DEBUG && !defined(__ia64__) - if (INTEL_DEBUG & DEBUG_BUFMGR) - functions->TextureMemCpy = timed_memcpy; - else -#endif - functions->TextureMemCpy = do_memcpy; } diff --git a/src/mesa/drivers/dri/intel/intel_tex_copy.c b/src/mesa/drivers/dri/intel/intel_tex_copy.c index 2d046fd52d..87b31bf078 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_copy.c +++ b/src/mesa/drivers/dri/intel/intel_tex_copy.c @@ -30,7 +30,6 @@ #include "main/image.h" #include "main/teximage.h" #include "main/texstate.h" -#include "main/mipmap.h" #include "drivers/common/meta.h" @@ -105,16 +104,15 @@ do_copy_texsubimage(struct intel_context *intel, const struct intel_region *src = get_teximage_source(intel, internalFormat); if (!intelImage->mt || !src || !src->buffer) { - if (INTEL_DEBUG & DEBUG_FALLBACKS) + if (unlikely(INTEL_DEBUG & DEBUG_FALLBACKS)) fprintf(stderr, "%s fail %p %p (0x%08x)\n", __FUNCTION__, intelImage->mt, src, internalFormat); return GL_FALSE; } if (intelImage->mt->cpp != src->cpp) { - if (INTEL_DEBUG & DEBUG_FALLBACKS) - fprintf(stderr, "%s fail %d vs %d cpp\n", - __FUNCTION__, intelImage->mt->cpp, src->cpp); + fallback_debug("%s fail %d vs %d cpp\n", + __FUNCTION__, intelImage->mt->cpp, src->cpp); return GL_FALSE; } @@ -212,8 +210,7 @@ intelCopyTexImage1D(struct gl_context * ctx, GLenum target, GLint level, return; fail: - if (INTEL_DEBUG & DEBUG_FALLBACKS) - fprintf(stderr, "%s - fallback to swrast\n", __FUNCTION__); + fallback_debug("%s - fallback to swrast\n", __FUNCTION__); _mesa_meta_CopyTexImage1D(ctx, target, level, internalFormat, x, y, width, border); } @@ -261,8 +258,7 @@ intelCopyTexImage2D(struct gl_context * ctx, GLenum target, GLint level, return; fail: - if (INTEL_DEBUG & DEBUG_FALLBACKS) - fprintf(stderr, "%s - fallback to swrast\n", __FUNCTION__); + fallback_debug("%s - fallback to swrast\n", __FUNCTION__); _mesa_meta_CopyTexImage2D(ctx, target, level, internalFormat, x, y, width, height, border); } @@ -287,8 +283,7 @@ intelCopyTexSubImage1D(struct gl_context * ctx, GLenum target, GLint level, if (!do_copy_texsubimage(intel_context(ctx), target, intel_texture_image(texImage), internalFormat, xoffset, 0, x, y, width, 1)) { - if (INTEL_DEBUG & DEBUG_FALLBACKS) - fprintf(stderr, "%s - fallback to swrast\n", __FUNCTION__); + fallback_debug("%s - fallback to swrast\n", __FUNCTION__); _mesa_meta_CopyTexSubImage1D(ctx, target, level, xoffset, x, y, width); } } @@ -314,8 +309,7 @@ intelCopyTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level, internalFormat, xoffset, yoffset, x, y, width, height)) { - if (INTEL_DEBUG & DEBUG_FALLBACKS) - fprintf(stderr, "%s - fallback to swrast\n", __FUNCTION__); + fallback_debug("%s - fallback to swrast\n", __FUNCTION__); _mesa_meta_CopyTexSubImage2D(ctx, target, level, xoffset, yoffset, x, y, width, height); } diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c index 35f3d7d382..41cdbfd2cb 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_image.c +++ b/src/mesa/drivers/dri/intel/intel_tex_image.c @@ -66,7 +66,6 @@ guess_and_alloc_mipmap_tree(struct intel_context *intel, GLuint width = intelImage->base.Width; GLuint height = intelImage->base.Height; GLuint depth = intelImage->base.Depth; - GLuint l2width, l2height, l2depth; GLuint i, comp_byte = 0; GLuint texelBytes; @@ -114,10 +113,7 @@ guess_and_alloc_mipmap_tree(struct intel_context *intel, lastLevel = firstLevel; } else { - l2width = logbase2(width); - l2height = logbase2(height); - l2depth = logbase2(depth); - lastLevel = firstLevel + MAX2(MAX2(l2width, l2height), l2depth); + lastLevel = firstLevel + logbase2(MAX2(MAX2(width, height), depth)); } assert(!intelObj->mt); @@ -347,21 +343,6 @@ intelTexImage(struct gl_context * ctx, texImage->Data = NULL; } - /* If this is the only texture image in the tree, could call - * bmBufferData with NULL data to free the old block and avoid - * waiting on any outstanding fences. - */ - if (intelObj->mt && - intelObj->mt->first_level == level && - intelObj->mt->last_level == level && - intelObj->mt->target != GL_TEXTURE_CUBE_MAP_ARB && - !intel_miptree_match_image(intelObj->mt, &intelImage->base)) { - - DBG("release it\n"); - intel_miptree_release(intel, &intelObj->mt); - assert(!intelObj->mt); - } - if (!intelObj->mt) { guess_and_alloc_mipmap_tree(intel, intelObj, intelImage, pixels == NULL); if (!intelObj->mt) { @@ -701,6 +682,7 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, struct gl_texture_object *texObj; struct gl_texture_image *texImage; int level = 0, internalFormat; + gl_format texFormat; texObj = _mesa_get_current_tex_object(ctx, target); intelObj = intel_texture_object(texObj); @@ -719,10 +701,14 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, if (rb->region == NULL) return; - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) + if (texture_format == __DRI_TEXTURE_FORMAT_RGB) { internalFormat = GL_RGB; - else + texFormat = MESA_FORMAT_XRGB8888; + } + else { internalFormat = GL_RGBA; + texFormat = MESA_FORMAT_ARGB8888; + } mt = intel_miptree_create_for_region(intel, target, internalFormat, @@ -743,16 +729,13 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, intel_miptree_release(intel, &intelObj->mt); intelObj->mt = mt; + _mesa_init_teximage_fields(&intel->ctx, target, texImage, rb->region->width, rb->region->height, 1, - 0, internalFormat); + 0, internalFormat, texFormat); intelImage->face = target_to_face(target); intelImage->level = level; - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) - texImage->TexFormat = MESA_FORMAT_XRGB8888; - else - texImage->TexFormat = MESA_FORMAT_ARGB8888; texImage->RowStride = rb->region->pitch; intel_miptree_reference(&intelImage->mt, intelObj->mt); @@ -808,11 +791,10 @@ intel_image_target_texture_2d(struct gl_context *ctx, GLenum target, intelObj->mt = mt; _mesa_init_teximage_fields(&intel->ctx, target, texImage, image->region->width, image->region->height, 1, - 0, image->internal_format); + 0, image->internal_format, image->format); intelImage->face = target_to_face(target); intelImage->level = 0; - texImage->TexFormat = image->format; texImage->RowStride = image->region->pitch; intel_miptree_reference(&intelImage->mt, intelObj->mt); diff --git a/src/mesa/drivers/dri/nouveau/Makefile b/src/mesa/drivers/dri/nouveau/Makefile index 7be19b26fd..3b506a91ff 100644 --- a/src/mesa/drivers/dri/nouveau/Makefile +++ b/src/mesa/drivers/dri/nouveau/Makefile @@ -19,6 +19,8 @@ DRIVER_SOURCES = \ nouveau_bo_state.c \ nouveau_texture.c \ nouveau_surface.c \ + nouveau_scratch.c \ + nouveau_array.c \ nv04_context.c \ nv04_render.c \ nv04_state_fb.c \ diff --git a/src/mesa/drivers/dri/nouveau/nouveau_array.c b/src/mesa/drivers/dri/nouveau/nouveau_array.c new file mode 100644 index 0000000000..17e6d163a0 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nouveau_array.c @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2009-2010 Francisco Jerez. + * 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 (including the + * next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. + * + */ + +#include "main/bufferobj.h" +#include "nouveau_driver.h" +#include "nouveau_array.h" +#include "nouveau_bufferobj.h" + +static void +get_array_extract(struct nouveau_array *a, extract_u_t *extract_u, + extract_f_t *extract_f) +{ +#define EXTRACT(in_t, out_t, k) \ + ({ \ + auto out_t f(struct nouveau_array *, int, int); \ + out_t f(struct nouveau_array *a, int i, int j) { \ + in_t x = ((in_t *)(a->buf + i * a->stride))[j]; \ + \ + return (out_t)x / (k); \ + }; \ + f; \ + }); + + switch (a->type) { + case GL_BYTE: + *extract_u = EXTRACT(char, unsigned, 1); + *extract_f = EXTRACT(char, float, SCHAR_MAX); + break; + case GL_UNSIGNED_BYTE: + *extract_u = EXTRACT(unsigned char, unsigned, 1); + *extract_f = EXTRACT(unsigned char, float, UCHAR_MAX); + break; + case GL_SHORT: + *extract_u = EXTRACT(short, unsigned, 1); + *extract_f = EXTRACT(short, float, SHRT_MAX); + break; + case GL_UNSIGNED_SHORT: + *extract_u = EXTRACT(unsigned short, unsigned, 1); + *extract_f = EXTRACT(unsigned short, float, USHRT_MAX); + break; + case GL_INT: + *extract_u = EXTRACT(int, unsigned, 1); + *extract_f = EXTRACT(int, float, INT_MAX); + break; + case GL_UNSIGNED_INT: + *extract_u = EXTRACT(unsigned int, unsigned, 1); + *extract_f = EXTRACT(unsigned int, float, UINT_MAX); + break; + case GL_FLOAT: + *extract_u = EXTRACT(float, unsigned, 1.0 / UINT_MAX); + *extract_f = EXTRACT(float, float, 1); + break; + default: + assert(0); + } +} + +void +nouveau_init_array(struct nouveau_array *a, int attr, int stride, + int fields, int type, struct gl_buffer_object *obj, + const void *ptr, GLboolean map) +{ + a->attr = attr; + a->stride = stride; + a->fields = fields; + a->type = type; + a->buf = NULL; + + if (obj) { + if (nouveau_bufferobj_hw(obj)) { + struct nouveau_bufferobj *nbo = + to_nouveau_bufferobj(obj); + + nouveau_bo_ref(nbo->bo, &a->bo); + a->offset = (intptr_t)ptr; + + if (map) { + nouveau_bo_map(a->bo, NOUVEAU_BO_RD); + a->buf = a->bo->map + a->offset; + } + + } else { + nouveau_bo_ref(NULL, &a->bo); + a->offset = 0; + + if (map) + a->buf = ADD_POINTERS( + nouveau_bufferobj_sys(obj), ptr); + } + } + + if (a->buf) + get_array_extract(a, &a->extract_u, &a->extract_f); +} + +void +nouveau_deinit_array(struct nouveau_array *a) +{ + if (a->bo) { + if (a->bo->map) + nouveau_bo_unmap(a->bo); + } + + a->buf = NULL; + a->fields = 0; +} + +void +nouveau_cleanup_array(struct nouveau_array *a) +{ + nouveau_deinit_array(a); + nouveau_bo_ref(NULL, &a->bo); +} diff --git a/src/mesa/drivers/dri/nouveau/nouveau_array.h b/src/mesa/drivers/dri/nouveau/nouveau_array.h new file mode 100644 index 0000000000..ad3d69b33d --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nouveau_array.h @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2009-2010 Francisco Jerez. + * 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 (including the + * next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. + * + */ + +#ifndef __NOUVEAU_ARRAY_H__ +#define __NOUVEAU_ARRAY_H__ + +struct nouveau_array; + +typedef unsigned (*extract_u_t)(struct nouveau_array *, int, int); +typedef float (*extract_f_t)(struct nouveau_array *, int, int); + +struct nouveau_array { + int attr; + int stride, fields, type; + + struct nouveau_bo *bo; + unsigned offset; + const void *buf; + + extract_u_t extract_u; + extract_f_t extract_f; +}; + +void +nouveau_init_array(struct nouveau_array *a, int attr, int stride, + int fields, int type, struct gl_buffer_object *obj, + const void *ptr, GLboolean map); + +void +nouveau_deinit_array(struct nouveau_array *a); + +void +nouveau_cleanup_array(struct nouveau_array *a); + +#endif diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c index f31772fe1d..7eef8c1ee8 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c @@ -126,13 +126,13 @@ void nouveau_bo_context_reset(struct nouveau_bo_context *bctx) { struct nouveau_bo_state *s = &to_nouveau_context(bctx->ctx)->bo; - int i; - - for (i = 0; i < bctx->count; i++) - nouveau_bo_ref(NULL, &bctx->marker[i].bo); + int i, n = bctx->count; - s->count -= bctx->count; + s->count -= n; bctx->count = 0; + + for (i = 0; i < n; i++) + nouveau_bo_ref(NULL, &bctx->marker[i].bo); } GLboolean diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h index 6119a8336e..388a16a56e 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h @@ -29,7 +29,7 @@ enum { NOUVEAU_BO_CONTEXT_FRAMEBUFFER = 0, - NOUVEAU_BO_CONTEXT_LMA_DEPTH, + NOUVEAU_BO_CONTEXT_HIERZ, NOUVEAU_BO_CONTEXT_SURFACE, NOUVEAU_BO_CONTEXT_TEXTURE0, NOUVEAU_BO_CONTEXT_TEXTURE1, diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c index ad6e5bd805..e60b91f64b 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c @@ -30,6 +30,23 @@ #include "main/bufferobj.h" +static inline char * +get_bufferobj_map(struct gl_buffer_object *obj, unsigned flags) +{ + struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj); + void *map = NULL; + + if (nbo->sys) { + map = nbo->sys; + } else if (nbo->bo) { + nouveau_bo_map(nbo->bo, flags); + map = nbo->bo->map; + nouveau_bo_unmap(nbo->bo); + } + + return map; +} + static struct gl_buffer_object * nouveau_bufferobj_new(struct gl_context *ctx, GLuint buffer, GLenum target) { @@ -50,6 +67,7 @@ nouveau_bufferobj_del(struct gl_context *ctx, struct gl_buffer_object *obj) struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj); nouveau_bo_ref(NULL, &nbo->bo); + FREE(nbo->sys); FREE(nbo); } @@ -64,18 +82,27 @@ nouveau_bufferobj_data(struct gl_context *ctx, GLenum target, GLsizeiptrARB size obj->Size = size; obj->Usage = usage; + /* Free previous storage */ nouveau_bo_ref(NULL, &nbo->bo); - ret = nouveau_bo_new(context_dev(ctx), - NOUVEAU_BO_GART | NOUVEAU_BO_MAP, 0, - size, &nbo->bo); - assert(!ret); + FREE(nbo->sys); - if (data) { - nouveau_bo_map(nbo->bo, NOUVEAU_BO_WR); - memcpy(nbo->bo->map, data, size); - nouveau_bo_unmap(nbo->bo); + if (target == GL_ELEMENT_ARRAY_BUFFER_ARB || + (size < 512 && usage == GL_DYNAMIC_DRAW_ARB) || + context_chipset(ctx) < 0x10) { + /* Heuristic: keep it in system ram */ + nbo->sys = MALLOC(size); + + } else { + /* Get a hardware BO */ + ret = nouveau_bo_new(context_dev(ctx), + NOUVEAU_BO_GART | NOUVEAU_BO_MAP, 0, + size, &nbo->bo); + assert(!ret); } + if (data) + memcpy(get_bufferobj_map(obj, NOUVEAU_BO_WR), data, size); + return GL_TRUE; } @@ -84,11 +111,7 @@ nouveau_bufferobj_subdata(struct gl_context *ctx, GLenum target, GLintptrARB off GLsizeiptrARB size, const GLvoid *data, struct gl_buffer_object *obj) { - struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj); - - nouveau_bo_map(nbo->bo, NOUVEAU_BO_WR); - memcpy(nbo->bo->map + offset, data, size); - nouveau_bo_unmap(nbo->bo); + memcpy(get_bufferobj_map(obj, NOUVEAU_BO_WR) + offset, data, size); } static void @@ -96,44 +119,48 @@ nouveau_bufferobj_get_subdata(struct gl_context *ctx, GLenum target, GLintptrARB GLsizeiptrARB size, GLvoid *data, struct gl_buffer_object *obj) { - struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj); - - nouveau_bo_map(nbo->bo, NOUVEAU_BO_RD); - memcpy(data, nbo->bo->map + offset, size); - nouveau_bo_unmap(nbo->bo); + memcpy(data, get_bufferobj_map(obj, NOUVEAU_BO_RD) + offset, size); } static void * nouveau_bufferobj_map(struct gl_context *ctx, GLenum target, GLenum access, struct gl_buffer_object *obj) { - return ctx->Driver.MapBufferRange(ctx, target, 0, obj->Size, access, + unsigned flags = 0; + + if (access == GL_READ_ONLY_ARB || + access == GL_READ_WRITE_ARB) + flags |= GL_MAP_READ_BIT; + if (access == GL_WRITE_ONLY_ARB || + access == GL_READ_WRITE_ARB) + flags |= GL_MAP_WRITE_BIT; + + return ctx->Driver.MapBufferRange(ctx, target, 0, obj->Size, flags, obj); } static void * nouveau_bufferobj_map_range(struct gl_context *ctx, GLenum target, GLintptr offset, - GLsizeiptr length, GLenum access, + GLsizeiptr length, GLbitfield access, struct gl_buffer_object *obj) { - struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj); - uint32_t flags = 0; + unsigned flags = 0; + char *map; assert(!obj->Pointer); - if (!nbo->bo) - return NULL; - - if (access == GL_READ_ONLY_ARB || - access == GL_READ_WRITE_ARB) + if (access & GL_MAP_READ_BIT) flags |= NOUVEAU_BO_RD; - if (access == GL_WRITE_ONLY_ARB || - access == GL_READ_WRITE_ARB) + if (access & GL_MAP_WRITE_BIT) flags |= NOUVEAU_BO_WR; + if (access & GL_MAP_UNSYNCHRONIZED_BIT) + flags |= NOUVEAU_BO_NOSYNC; - nouveau_bo_map_range(nbo->bo, offset, length, flags); + map = get_bufferobj_map(obj, flags); + if (!map) + return NULL; - obj->Pointer = nbo->bo->map; + obj->Pointer = map + offset; obj->Offset = offset; obj->Length = length; obj->AccessFlags = access; @@ -144,12 +171,8 @@ nouveau_bufferobj_map_range(struct gl_context *ctx, GLenum target, GLintptr offs static GLboolean nouveau_bufferobj_unmap(struct gl_context *ctx, GLenum target, struct gl_buffer_object *obj) { - struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj); - assert(obj->Pointer); - nouveau_bo_unmap(nbo->bo); - obj->Pointer = NULL; obj->Offset = 0; obj->Length = 0; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.h b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.h index acfc4cb9a9..01ef0bad0f 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.h @@ -30,9 +30,16 @@ struct nouveau_bufferobj { struct gl_buffer_object base; struct nouveau_bo *bo; + void *sys; }; #define to_nouveau_bufferobj(x) ((struct nouveau_bufferobj *)(x)) +#define nouveau_bufferobj_hw(x) \ + (_mesa_is_bufferobj(x) ? to_nouveau_bufferobj(x)->bo : NULL) + +#define nouveau_bufferobj_sys(x) \ + (_mesa_is_bufferobj(x) ? to_nouveau_bufferobj(x)->sys : NULL) + void nouveau_bufferobj_functions_init(struct dd_function_table *functions); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_class.h b/src/mesa/drivers/dri/nouveau/nouveau_class.h deleted file mode 100644 index d41d431f79..0000000000 --- a/src/mesa/drivers/dri/nouveau/nouveau_class.h +++ /dev/null @@ -1,4959 +0,0 @@ -/************************************************************************* - - Autogenerated file, do not edit ! - - This file was generated by renouveau-gen from renouveau.xml, the - XML database of nvidia objects and methods. renouveau-gen and - renouveau.xml can be found in CVS module renouveau of sourceforge.net - project nouveau: - -cvs -z3 -d:pserver:anonymous@nouveau.cvs.sourceforge.net:/cvsroot/nouveau co -P renouveau - -************************************************************************** - - Copyright (C) 2006-2008 : - Dmitry Baryshkov, - Laurent Carlier, - Matthieu Castet, - Dawid Gajownik, - Jeremy Kolb, - Stephane Loeuillet, - Patrice Mandin, - Stephane Marchesin, - Serge Martin, - Sylvain Munaut, - Simon Raffeiner, - Ben Skeggs, - Erik Waling, - koala_br, - -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 (including the -next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. - -*************************************************************************/ - - -#ifndef NOUVEAU_REG_H -#define NOUVEAU_REG_H 1 - - -#define NV01_ROOT 0x00000001 - - - -#define NV01_CONTEXT_DMA 0x00000002 - - - -#define NV01_DEVICE 0x00000003 - - - -#define NV01_TIMER 0x00000004 - -#define NV01_TIMER_SYNCHRONIZE 0x00000100 -#define NV01_TIMER_STOP_ALARM 0x00000104 -#define NV01_TIMER_DMA_NOTIFY 0x00000180 -#define NV01_TIMER_TIME(x) (0x00000300+((x)*4)) -#define NV01_TIMER_TIME__SIZE 0x00000002 -#define NV01_TIMER_ALARM_NOTIFY 0x00000308 - - -#define NV01_CONTEXT_BETA1 0x00000012 - -#define NV01_CONTEXT_BETA1_NOP 0x00000100 -#define NV01_CONTEXT_BETA1_NOTIFY 0x00000104 -#define NV01_CONTEXT_BETA1_DMA_NOTIFY 0x00000180 -#define NV01_CONTEXT_BETA1_BETA_1D31 0x00000300 - - -#define NV01_CONTEXT_COLOR_KEY 0x00000017 - -#define NV01_CONTEXT_COLOR_KEY_NOP 0x00000100 -#define NV01_CONTEXT_COLOR_KEY_NOTIFY 0x00000104 -#define NV01_CONTEXT_COLOR_KEY_DMA_NOTIFY 0x00000180 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT 0x00000300 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16A8Y8 0x00000001 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X24Y8 0x00000002 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16A1R5G5B5 0x00000003 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X17R5G5B5 0x00000004 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A8R8G8B8 0x00000005 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X8R8G8B8 0x00000006 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A16Y16 0x00000007 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16Y16 0x00000008 -#define NV01_CONTEXT_COLOR_KEY_COLOR 0x00000304 - - -#define NV04_CONTEXT_COLOR_KEY 0x00000057 - - - -#define NV01_CONTEXT_PATTERN 0x00000018 - -#define NV01_CONTEXT_PATTERN_NOP 0x00000100 -#define NV01_CONTEXT_PATTERN_NOTIFY 0x00000104 -#define NV01_CONTEXT_PATTERN_DMA_NOTIFY 0x00000180 -#define NV01_CONTEXT_PATTERN_COLOR_FORMAT 0x00000300 -#define NV01_CONTEXT_PATTERN_MONOCHROME_FORMAT 0x00000304 -#define NV01_CONTEXT_PATTERN_SHAPE 0x00000308 -#define NV01_CONTEXT_PATTERN_COLOR(x) (0x00000310+((x)*4)) -#define NV01_CONTEXT_PATTERN_COLOR__SIZE 0x00000002 -#define NV01_CONTEXT_PATTERN_PATTERN(x) (0x00000318+((x)*4)) -#define NV01_CONTEXT_PATTERN_PATTERN__SIZE 0x00000002 - - -#define NV01_CONTEXT_CLIP_RECTANGLE 0x00000019 - -#define NV01_CONTEXT_CLIP_RECTANGLE_NOP 0x00000100 -#define NV01_CONTEXT_CLIP_RECTANGLE_NOTIFY 0x00000104 -#define NV01_CONTEXT_CLIP_RECTANGLE_DMA_NOTIFY 0x00000180 -#define NV01_CONTEXT_CLIP_RECTANGLE_POINT 0x00000300 -#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X_SHIFT 0 -#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X_MASK 0x0000ffff -#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y_SHIFT 16 -#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y_MASK 0xffff0000 -#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE 0x00000304 -#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W_SHIFT 0 -#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W_MASK 0x0000ffff -#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H_SHIFT 16 -#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H_MASK 0xffff0000 - - -#define NV01_RENDER_SOLID_LINE 0x0000001c - -#define NV01_RENDER_SOLID_LINE_NOP 0x00000100 -#define NV01_RENDER_SOLID_LINE_NOTIFY 0x00000104 -#define NV01_RENDER_SOLID_LINE_PATCH 0x0000010c -#define NV01_RENDER_SOLID_LINE_DMA_NOTIFY 0x00000180 -#define NV01_RENDER_SOLID_LINE_CLIP_RECTANGLE 0x00000184 -#define NV01_RENDER_SOLID_LINE_PATTERN 0x00000188 -#define NV01_RENDER_SOLID_LINE_ROP 0x0000018c -#define NV01_RENDER_SOLID_LINE_BETA1 0x00000190 -#define NV01_RENDER_SOLID_LINE_SURFACE 0x00000194 -#define NV01_RENDER_SOLID_LINE_OPERATION 0x000002fc -#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_AND 0x00000000 -#define NV01_RENDER_SOLID_LINE_OPERATION_ROP_AND 0x00000001 -#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_AND 0x00000002 -#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY 0x00000003 -#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_PREMULT 0x00000005 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT 0x00000300 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16A8Y8 0x00000001 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X24Y8 0x00000002 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16A1R5G5B5 0x00000003 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X17R5G5B5 0x00000004 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A8R8G8B8 0x00000005 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X8R8G8B8 0x00000006 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A16Y16 0x00000007 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16Y16 0x00000008 -#define NV01_RENDER_SOLID_LINE_COLOR 0x00000304 -#define NV01_RENDER_SOLID_LINE_LINE_POINT0(x) (0x00000400+((x)*8)) -#define NV01_RENDER_SOLID_LINE_LINE_POINT0__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X_SHIFT 0 -#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y_SHIFT 16 -#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_LINE_LINE_POINT1(x) (0x00000404+((x)*8)) -#define NV01_RENDER_SOLID_LINE_LINE_POINT1__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X_SHIFT 0 -#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y_SHIFT 16 -#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X(x) (0x00000480+((x)*16)) -#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y(x) (0x00000484+((x)*16)) -#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X(x) (0x00000488+((x)*16)) -#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y(x) (0x0000048c+((x)*16)) -#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_POLYLINE(x) (0x00000500+((x)*4)) -#define NV01_RENDER_SOLID_LINE_POLYLINE__SIZE 0x00000020 -#define NV01_RENDER_SOLID_LINE_POLYLINE_X_SHIFT 0 -#define NV01_RENDER_SOLID_LINE_POLYLINE_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_LINE_POLYLINE_Y_SHIFT 16 -#define NV01_RENDER_SOLID_LINE_POLYLINE_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X(x) (0x00000580+((x)*8)) -#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y(x) (0x00000584+((x)*8)) -#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR(x) (0x00000600+((x)*8)) -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT(x) (0x00000604+((x)*8)) -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X_SHIFT 0 -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y_SHIFT 16 -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y_MASK 0xffff0000 - - -#define NV04_RENDER_SOLID_LINE 0x0000005c - -#define NV04_RENDER_SOLID_LINE_BETA4 0x00000194 -#define NV04_RENDER_SOLID_LINE_SURFACE 0x00000198 - - -#define NV01_RENDER_SOLID_TRIANGLE 0x0000001d - -#define NV01_RENDER_SOLID_TRIANGLE_NOP 0x00000100 -#define NV01_RENDER_SOLID_TRIANGLE_NOTIFY 0x00000104 -#define NV01_RENDER_SOLID_TRIANGLE_PATCH 0x0000010c -#define NV01_RENDER_SOLID_TRIANGLE_DMA_NOTIFY 0x00000180 -#define NV01_RENDER_SOLID_TRIANGLE_CLIP_RECTANGLE 0x00000184 -#define NV01_RENDER_SOLID_TRIANGLE_PATTERN 0x00000188 -#define NV01_RENDER_SOLID_TRIANGLE_ROP 0x0000018c -#define NV01_RENDER_SOLID_TRIANGLE_BETA1 0x00000190 -#define NV01_RENDER_SOLID_TRIANGLE_SURFACE 0x00000194 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION 0x000002fc -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_AND 0x00000000 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_ROP_AND 0x00000001 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_AND 0x00000002 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY 0x00000003 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_PREMULT 0x00000005 -#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT 0x00000300 -#define NV01_RENDER_SOLID_TRIANGLE_COLOR 0x00000304 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0 0x00000310 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1 0x00000314 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2 0x00000318 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_X 0x00000320 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_Y 0x00000324 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_X 0x00000328 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_Y 0x0000032c -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_X 0x00000330 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_Y 0x00000334 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH(x) (0x00000400+((x)*4)) -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__SIZE 0x00000020 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X(x) (0x00000480+((x)*8)) -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__SIZE 0x00000010 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y(x) (0x00000484+((x)*8)) -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__SIZE 0x00000010 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR(x) (0x00000500+((x)*16)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__SIZE 0x00000008 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0(x) (0x00000504+((x)*16)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__SIZE 0x00000008 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1(x) (0x00000508+((x)*16)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__SIZE 0x00000008 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2(x) (0x0000050c+((x)*16)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__SIZE 0x00000008 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR(x) (0x00000580+((x)*8)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__SIZE 0x00000010 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT(x) (0x00000584+((x)*8)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__SIZE 0x00000010 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y_MASK 0xffff0000 - - -#define NV04_RENDER_SOLID_TRIANGLE 0x0000005d - -#define NV04_RENDER_SOLID_TRIANGLE_BETA4 0x00000194 -#define NV04_RENDER_SOLID_TRIANGLE_SURFACE 0x00000198 - - -#define NV01_RENDER_SOLID_RECTANGLE 0x0000001e - -#define NV01_RENDER_SOLID_RECTANGLE_NOP 0x00000100 -#define NV01_RENDER_SOLID_RECTANGLE_NOTIFY 0x00000104 -#define NV01_RENDER_SOLID_RECTANGLE_PATCH 0x0000010c -#define NV01_RENDER_SOLID_RECTANGLE_DMA_NOTIFY 0x00000180 -#define NV01_RENDER_SOLID_RECTANGLE_CLIP_RECTANGLE 0x00000184 -#define NV01_RENDER_SOLID_RECTANGLE_PATTERN 0x00000188 -#define NV01_RENDER_SOLID_RECTANGLE_ROP 0x0000018c -#define NV01_RENDER_SOLID_RECTANGLE_BETA1 0x00000190 -#define NV01_RENDER_SOLID_RECTANGLE_SURFACE 0x00000194 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION 0x000002fc -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_AND 0x00000000 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_ROP_AND 0x00000001 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_AND 0x00000002 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY 0x00000003 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_PREMULT 0x00000005 -#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT 0x00000300 -#define NV01_RENDER_SOLID_RECTANGLE_COLOR 0x00000304 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT(x) (0x00000400+((x)*8)) -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__SIZE 0x00000010 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X_SHIFT 0 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y_SHIFT 16 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE(x) (0x00000404+((x)*8)) -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__SIZE 0x00000010 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W_SHIFT 0 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W_MASK 0x0000ffff -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H_SHIFT 16 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H_MASK 0xffff0000 - - -#define NV04_RENDER_SOLID_RECTANGLE 0x0000005e - -#define NV04_RENDER_SOLID_RECTANGLE_BETA4 0x00000194 -#define NV04_RENDER_SOLID_RECTANGLE_SURFACE 0x00000198 - - -#define NV01_IMAGE_BLIT 0x0000001f - -#define NV01_IMAGE_BLIT_NOP 0x00000100 -#define NV01_IMAGE_BLIT_NOTIFY 0x00000104 -#define NV01_IMAGE_BLIT_PATCH 0x0000010c -#define NV01_IMAGE_BLIT_DMA_NOTIFY 0x00000180 -#define NV01_IMAGE_BLIT_COLOR_KEY 0x00000184 -#define NV01_IMAGE_BLIT_CLIP_RECTANGLE 0x00000188 -#define NV01_IMAGE_BLIT_PATTERN 0x0000018c -#define NV01_IMAGE_BLIT_ROP 0x00000190 -#define NV01_IMAGE_BLIT_BETA1 0x00000194 -#define NV01_IMAGE_BLIT_SURFACE 0x0000019c -#define NV01_IMAGE_BLIT_OPERATION 0x000002fc -#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_AND 0x00000000 -#define NV01_IMAGE_BLIT_OPERATION_ROP_AND 0x00000001 -#define NV01_IMAGE_BLIT_OPERATION_BLEND_AND 0x00000002 -#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY 0x00000003 -#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV01_IMAGE_BLIT_OPERATION_BLEND_PREMULT 0x00000005 -#define NV01_IMAGE_BLIT_IMAGE_INPUT 0x00000204 -#define NV01_IMAGE_BLIT_POINT_IN 0x00000300 -#define NV01_IMAGE_BLIT_POINT_IN_X_SHIFT 0 -#define NV01_IMAGE_BLIT_POINT_IN_X_MASK 0x0000ffff -#define NV01_IMAGE_BLIT_POINT_IN_Y_SHIFT 16 -#define NV01_IMAGE_BLIT_POINT_IN_Y_MASK 0xffff0000 -#define NV01_IMAGE_BLIT_POINT_OUT 0x00000304 -#define NV01_IMAGE_BLIT_POINT_OUT_X_SHIFT 0 -#define NV01_IMAGE_BLIT_POINT_OUT_X_MASK 0x0000ffff -#define NV01_IMAGE_BLIT_POINT_OUT_Y_SHIFT 16 -#define NV01_IMAGE_BLIT_POINT_OUT_Y_MASK 0xffff0000 -#define NV01_IMAGE_BLIT_SIZE 0x00000308 -#define NV01_IMAGE_BLIT_SIZE_W_SHIFT 0 -#define NV01_IMAGE_BLIT_SIZE_W_MASK 0x0000ffff -#define NV01_IMAGE_BLIT_SIZE_H_SHIFT 16 -#define NV01_IMAGE_BLIT_SIZE_H_MASK 0xffff0000 - - -#define NV04_IMAGE_BLIT 0x0000005f - -#define NV04_IMAGE_BLIT_ROP 0x00000190 -#define NV04_IMAGE_BLIT_BETA4 0x00000198 -#define NV04_IMAGE_BLIT_SURFACE 0x0000019c - - -#define NV12_IMAGE_BLIT 0x0000009f - -#define NV12_IMAGE_BLIT_WAIT_FOR_IDLE 0x00000108 - - -#define NV01_IMAGE_FROM_CPU 0x00000021 - -#define NV01_IMAGE_FROM_CPU_NOP 0x00000100 -#define NV01_IMAGE_FROM_CPU_NOTIFY 0x00000104 -#define NV01_IMAGE_FROM_CPU_PATCH 0x0000010c -#define NV01_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 -#define NV01_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 -#define NV01_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x00000188 -#define NV01_IMAGE_FROM_CPU_PATTERN 0x0000018c -#define NV01_IMAGE_FROM_CPU_ROP 0x00000190 -#define NV01_IMAGE_FROM_CPU_BETA1 0x00000194 -#define NV01_IMAGE_FROM_CPU_SURFACE 0x00000198 -#define NV01_IMAGE_FROM_CPU_OPERATION 0x000002fc -#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_AND 0x00000000 -#define NV01_IMAGE_FROM_CPU_OPERATION_ROP_AND 0x00000001 -#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_AND 0x00000002 -#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY 0x00000003 -#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_PREMULT 0x00000005 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_Y8 0x00000001 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A1R5G5B5 0x00000002 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X1R5G5B5 0x00000003 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A8R8G8B8 0x00000004 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X8R8G8B8 0x00000005 -#define NV01_IMAGE_FROM_CPU_POINT 0x00000304 -#define NV01_IMAGE_FROM_CPU_POINT_X_SHIFT 0 -#define NV01_IMAGE_FROM_CPU_POINT_X_MASK 0x0000ffff -#define NV01_IMAGE_FROM_CPU_POINT_Y_SHIFT 16 -#define NV01_IMAGE_FROM_CPU_POINT_Y_MASK 0xffff0000 -#define NV01_IMAGE_FROM_CPU_SIZE_OUT 0x00000308 -#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W_SHIFT 0 -#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W_MASK 0x0000ffff -#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H_SHIFT 16 -#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H_MASK 0xffff0000 -#define NV01_IMAGE_FROM_CPU_SIZE_IN 0x0000030c -#define NV01_IMAGE_FROM_CPU_SIZE_IN_W_SHIFT 0 -#define NV01_IMAGE_FROM_CPU_SIZE_IN_W_MASK 0x0000ffff -#define NV01_IMAGE_FROM_CPU_SIZE_IN_H_SHIFT 16 -#define NV01_IMAGE_FROM_CPU_SIZE_IN_H_MASK 0xffff0000 -#define NV01_IMAGE_FROM_CPU_COLOR(x) (0x00000400+((x)*4)) -#define NV01_IMAGE_FROM_CPU_COLOR__SIZE 0x00000020 - - -#define NV04_IMAGE_FROM_CPU 0x00000061 - -#define NV04_IMAGE_FROM_CPU_BETA4 0x00000198 -#define NV04_IMAGE_FROM_CPU_SURFACE 0x0000019c - - -#define NV05_IMAGE_FROM_CPU 0x00000065 - -#define NV05_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8 - - -#define NV10_IMAGE_FROM_CPU 0x0000008a - -#define NV10_IMAGE_FROM_CPU_WAIT_FOR_IDLE 0x00000108 - - -#define NV30_IMAGE_FROM_CPU 0x0000038a - - - -#define NV40_IMAGE_FROM_CPU 0x0000308a - - - -#define NV01_NULL 0x00000030 - - - -#define NV03_STRETCHED_IMAGE_FROM_CPU 0x00000036 - -#define NV03_STRETCHED_IMAGE_FROM_CPU_NOP 0x00000100 -#define NV03_STRETCHED_IMAGE_FROM_CPU_NOTIFY 0x00000104 -#define NV03_STRETCHED_IMAGE_FROM_CPU_PATCH 0x0000010c -#define NV03_STRETCHED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 -#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 -#define NV03_STRETCHED_IMAGE_FROM_CPU_PATTERN 0x00000188 -#define NV03_STRETCHED_IMAGE_FROM_CPU_ROP 0x0000018c -#define NV03_STRETCHED_IMAGE_FROM_CPU_BETA1 0x00000190 -#define NV03_STRETCHED_IMAGE_FROM_CPU_SURFACE 0x00000194 -#define NV03_STRETCHED_IMAGE_FROM_CPU_OPERATION 0x000002fc -#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300 -#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN 0x00000304 -#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W_SHIFT 0 -#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W_MASK 0x0000ffff -#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H_SHIFT 16 -#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H_MASK 0xffff0000 -#define NV03_STRETCHED_IMAGE_FROM_CPU_DX_DU 0x00000308 -#define NV03_STRETCHED_IMAGE_FROM_CPU_DY_DV 0x0000030c -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT 0x00000310 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X_SHIFT 0 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X_MASK 0x0000ffff -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y_SHIFT 16 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y_MASK 0xffff0000 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE 0x00000314 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W_SHIFT 0 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W_MASK 0x0000ffff -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H_SHIFT 16 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H_MASK 0xffff0000 -#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4 0x00000318 -#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X_SHIFT 0 -#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X_MASK 0x0000ffff -#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y_SHIFT 16 -#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y_MASK 0xffff0000 -#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR(x) (0x00000400+((x)*4)) -#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__SIZE 0x00000020 - - -#define NV04_STRETCHED_IMAGE_FROM_CPU 0x00000076 - -#define NV04_STRETCHED_IMAGE_FROM_CPU_BETA4 0x00000194 -#define NV04_STRETCHED_IMAGE_FROM_CPU_SURFACE 0x00000198 - - -#define NV05_STRETCHED_IMAGE_FROM_CPU 0x00000066 - -#define NV05_STRETCHED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8 - - -#define NV30_STRETCHED_IMAGE_FROM_CPU 0x00000366 - - - -#define NV40_STRETCHED_IMAGE_FROM_CPU 0x00003066 - - - -#define NV03_SCALED_IMAGE_FROM_MEMORY 0x00000037 - -#define NV03_SCALED_IMAGE_FROM_MEMORY_NOP 0x00000100 -#define NV03_SCALED_IMAGE_FROM_MEMORY_NOTIFY 0x00000104 -#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_NOTIFY 0x00000180 -#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_IMAGE 0x00000184 -#define NV03_SCALED_IMAGE_FROM_MEMORY_PATTERN 0x00000188 -#define NV03_SCALED_IMAGE_FROM_MEMORY_ROP 0x0000018c -#define NV03_SCALED_IMAGE_FROM_MEMORY_BETA1 0x00000190 -#define NV03_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000194 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT 0x00000300 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A1R5G5B5 0x00000001 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X1R5G5B5 0x00000002 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A8R8G8B8 0x00000003 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X8R8G8B8 0x00000004 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_V8YB8U8YA8 0x00000005 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_YB8V8YA8U8 0x00000006 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_R5G6B5 0x00000007 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_Y8 0x00000008 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_AY8 0x00000009 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION 0x00000304 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_AND 0x00000000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_ROP_AND 0x00000001 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_AND 0x00000002 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY 0x00000003 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_PREMULT 0x00000005 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT 0x00000308 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y_MASK 0xffff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE 0x0000030c -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H_MASK 0xffff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT 0x00000310 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y_MASK 0xffff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE 0x00000314 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H_MASK 0xffff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_DU_DX 0x00000318 -#define NV03_SCALED_IMAGE_FROM_MEMORY_DV_DY 0x0000031c -#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE 0x00000400 -#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H_MASK 0xffff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT 0x00000404 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_MASK 0x00ff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CENTER 0x00010000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CORNER 0x00020000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_SHIFT 24 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_MASK 0xff000000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_POINT_SAMPLE 0x00000000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_BILINEAR 0x01000000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OFFSET 0x00000408 -#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT 0x0000040c -#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V_MASK 0xffff0000 - - -#define NV04_SCALED_IMAGE_FROM_MEMORY 0x00000077 - -#define NV04_SCALED_IMAGE_FROM_MEMORY_BETA4 0x00000194 -#define NV04_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000198 - - -#define NV05_SCALED_IMAGE_FROM_MEMORY 0x00000063 - -#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION 0x000002fc -#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_DITHER 0x00000000 -#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_TRUNCATE 0x00000001 -#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_SUBTR_TRUNCATE 0x00000002 - - -#define NV10_SCALED_IMAGE_FROM_MEMORY 0x00000089 - -#define NV10_SCALED_IMAGE_FROM_MEMORY_WAIT_FOR_IDLE 0x00000108 - - -#define NV30_SCALED_IMAGE_FROM_MEMORY 0x00000389 - - - -#define NV40_SCALED_IMAGE_FROM_MEMORY 0x00003089 - - - -#define NV04_DVD_SUBPICTURE 0x00000038 - -#define NV04_DVD_SUBPICTURE_NOP 0x00000100 -#define NV04_DVD_SUBPICTURE_NOTIFY 0x00000104 -#define NV04_DVD_SUBPICTURE_DMA_NOTIFY 0x00000180 -#define NV04_DVD_SUBPICTURE_DMA_OVERLAY 0x00000184 -#define NV04_DVD_SUBPICTURE_DMA_IMAGEIN 0x00000188 -#define NV04_DVD_SUBPICTURE_DMA_IMAGEOUT 0x0000018c -#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT 0x00000300 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_X_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_X_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_Y_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_Y_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE 0x00000304 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_W_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_W_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_H_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_H_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT 0x00000308 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_PITCH_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_PITCH_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_COLOR_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_COLOR_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_OFFSET 0x0000030c -#define NV04_DVD_SUBPICTURE_IMAGEIN_DELTA_DU_DX 0x00000310 -#define NV04_DVD_SUBPICTURE_IMAGEIN_DELTA_DV_DY 0x00000314 -#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE 0x00000318 -#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_W_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_W_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_H_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_H_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT 0x0000031c -#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_PITCH_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_PITCH_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_COLOR_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_COLOR_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_IMAGEIN_OFFSET 0x00000320 -#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT 0x00000324 -#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_U_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_U_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_V_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_V_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_OVERLAY_DELTA_DU_DX 0x00000328 -#define NV04_DVD_SUBPICTURE_OVERLAY_DELTA_DV_DY 0x0000032c -#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE 0x00000330 -#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_W_SHIFT 0 -#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_W_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_H_SHIFT 16 -#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_H_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT 0x00000334 -#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_PITCH_SHIFT 0 -#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_PITCH_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_COLOR_SHIFT 16 -#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_COLOR_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_OVERLAY_OFFSET 0x00000338 -#define NV04_DVD_SUBPICTURE_OVERLAY_POINT 0x0000033c -#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_U_SHIFT 0 -#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_U_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_V_SHIFT 16 -#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_V_MASK 0xffff0000 - - -#define NV10_DVD_SUBPICTURE 0x00000088 - -#define NV10_DVD_SUBPICTURE_WAIT_FOR_IDLE 0x00000108 - - -#define NV04_MEMORY_TO_MEMORY_FORMAT 0x00000039 - -#define NV04_MEMORY_TO_MEMORY_FORMAT_NOP 0x00000100 -#define NV04_MEMORY_TO_MEMORY_FORMAT_NOTIFY 0x00000104 -#define NV04_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY 0x00000180 -#define NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_IN 0x00000184 -#define NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_OUT 0x00000188 -#define NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN 0x0000030c -#define NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT 0x00000310 -#define NV04_MEMORY_TO_MEMORY_FORMAT_PITCH_IN 0x00000314 -#define NV04_MEMORY_TO_MEMORY_FORMAT_PITCH_OUT 0x00000318 -#define NV04_MEMORY_TO_MEMORY_FORMAT_LINE_LENGTH_IN 0x0000031c -#define NV04_MEMORY_TO_MEMORY_FORMAT_LINE_COUNT 0x00000320 -#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT 0x00000324 -#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_INPUT_INC_SHIFT 0 -#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_INPUT_INC_MASK 0x000000ff -#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_OUTPUT_INC_SHIFT 8 -#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_OUTPUT_INC_MASK 0x0000ff00 -#define NV04_MEMORY_TO_MEMORY_FORMAT_BUF_NOTIFY 0x00000328 - - -#define NV50_MEMORY_TO_MEMORY_FORMAT 0x00005039 - -#define NV50_MEMORY_TO_MEMORY_FORMAT_SERIALIZE 0x00000110 -#define NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_IN 0x00000200 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_MODE_IN 0x00000204 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_PITCH_IN 0x00000208 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_HEIGHT_IN 0x0000020c -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_DEPTH_IN 0x00000210 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Z 0x00000214 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN 0x00000218 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_X_SHIFT 0 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_X_MASK 0x0000ffff -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Y_SHIFT 16 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Y_MASK 0xffff0000 -#define NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_OUT 0x0000021c -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_MODE_OUT 0x00000220 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_PITCH_OUT 0x00000224 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_HEIGHT_OUT 0x00000228 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_DEPTH_OUT 0x0000022c -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Z 0x00000230 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT 0x00000234 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_X_SHIFT 0 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_X_MASK 0x0000ffff -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Y_SHIFT 16 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Y_MASK 0xffff0000 -#define NV50_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN_HIGH 0x00000238 -#define NV50_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT_HIGH 0x0000023c - - -#define NV01_MEMORY_LOCAL_BANKED 0x0000003d - - - -#define NV01_MAPPING_SYSTEM 0x0000003e - - - -#define NV03_MEMORY_LOCAL_CURSOR 0x0000003f - - - -#define NV01_MEMORY_LOCAL_LINEAR 0x00000040 - - - -#define NV01_MAPPING_LOCAL 0x00000041 - - - -#define NV04_CONTEXT_SURFACES_2D 0x00000042 - -#define NV04_CONTEXT_SURFACES_2D_NOP 0x00000100 -#define NV04_CONTEXT_SURFACES_2D_NOTIFY 0x00000104 -#define NV04_CONTEXT_SURFACES_2D_PM_TRIGGER 0x00000140 -#define NV04_CONTEXT_SURFACES_2D_DMA_NOTIFY 0x00000180 -#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_SOURCE 0x00000184 -#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_DESTIN 0x00000188 -#define NV04_CONTEXT_SURFACES_2D_FORMAT 0x00000300 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y8 0x00000001 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_Z1R5G5B5 0x00000002 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_X1R5G5B5 0x00000003 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_R5G6B5 0x00000004 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y16 0x00000005 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_Z8R8G8B8 0x00000006 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_X8R8G8B8 0x00000007 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_Z1A7R8G8B8 0x00000008 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_X1A7R8G8B8 0x00000009 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_A8R8G8B8 0x0000000a -#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y32 0x0000000b -#define NV04_CONTEXT_SURFACES_2D_PITCH 0x00000304 -#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE_SHIFT 0 -#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE_MASK 0x0000ffff -#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN_SHIFT 16 -#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN_MASK 0xffff0000 -#define NV04_CONTEXT_SURFACES_2D_OFFSET_SOURCE 0x00000308 -#define NV04_CONTEXT_SURFACES_2D_OFFSET_DESTIN 0x0000030c - - -#define NV10_CONTEXT_SURFACES_2D 0x00000062 - - - -#define NV30_CONTEXT_SURFACES_2D 0x00000362 - - - -#define NV40_CONTEXT_SURFACES_2D 0x00003062 - - - -#define NV03_CONTEXT_ROP 0x00000043 - -#define NV03_CONTEXT_ROP_NOP 0x00000100 -#define NV03_CONTEXT_ROP_NOTIFY 0x00000104 -#define NV03_CONTEXT_ROP_DMA_NOTIFY 0x00000180 -#define NV03_CONTEXT_ROP_ROP 0x00000300 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_SHIFT 0 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_MASK 0x0000000f -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_CLEAR 0x00000000 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_NOR 0x00000001 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_AND_INVERTED 0x00000002 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_COPY_INVERTED 0x00000003 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_AND_REVERSE 0x00000004 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_INVERT 0x00000005 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_XOR 0x00000006 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_NAND 0x00000007 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_AND 0x00000008 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_EQUI 0x00000009 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_NOOP 0x0000000a -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_OR_INVERTED 0x0000000b -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_COPY 0x0000000c -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_OR_REVERSE 0x0000000d -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_OR 0x0000000e -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_SET 0x0000000f -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_SHIFT 4 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_MASK 0x000000f0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_CLEAR 0x00000000 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_NOR 0x00000010 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_AND_INVERTED 0x00000020 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_COPY_INVERTED 0x00000030 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_AND_REVERSE 0x00000040 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_INVERT 0x00000050 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_XOR 0x00000060 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_NAND 0x00000070 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_AND 0x00000080 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_EQUI 0x00000090 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_NOOP 0x000000a0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_OR_INVERTED 0x000000b0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_COPY 0x000000c0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_OR_REVERSE 0x000000d0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_OR 0x000000e0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_SET 0x000000f0 - - -#define NV04_IMAGE_PATTERN 0x00000044 - -#define NV04_IMAGE_PATTERN_NOP 0x00000100 -#define NV04_IMAGE_PATTERN_NOTIFY 0x00000104 -#define NV04_IMAGE_PATTERN_DMA_NOTIFY 0x00000180 -#define NV04_IMAGE_PATTERN_COLOR_FORMAT 0x00000300 -#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A16R5G6B5 0x00000001 -#define NV04_IMAGE_PATTERN_COLOR_FORMAT_X16A1R5G5B5 0x00000002 -#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A8R8G8B8 0x00000003 -#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT 0x00000304 -#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_CGA6 0x00000001 -#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_LE 0x00000002 -#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE 0x00000308 -#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_8X8 0x00000000 -#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_64X1 0x00000001 -#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_1X64 0x00000002 -#define NV04_IMAGE_PATTERN_PATTERN_SELECT 0x0000030c -#define NV04_IMAGE_PATTERN_PATTERN_SELECT_MONO 0x00000001 -#define NV04_IMAGE_PATTERN_PATTERN_SELECT_COLOR 0x00000002 -#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR0 0x00000310 -#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR1 0x00000314 -#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN0 0x00000318 -#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN1 0x0000031c -#define NV04_IMAGE_PATTERN_PATTERN_Y8(x) (0x00000400+((x)*4)) -#define NV04_IMAGE_PATTERN_PATTERN_Y8__SIZE 0x00000010 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0_SHIFT 0 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0_MASK 0x000000ff -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1_SHIFT 8 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1_MASK 0x0000ff00 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2_SHIFT 16 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2_MASK 0x00ff0000 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3_SHIFT 24 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3_MASK 0xff000000 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5(x) (0x00000500+((x)*4)) -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__SIZE 0x00000020 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0_SHIFT 0 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0_MASK 0x0000001f -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0_SHIFT 5 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0_MASK 0x000007e0 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0_SHIFT 11 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0_MASK 0x0000f800 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1_SHIFT 16 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1_MASK 0x001f0000 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1_SHIFT 21 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1_MASK 0x07e00000 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1_SHIFT 27 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1_MASK 0xf8000000 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5(x) (0x00000600+((x)*4)) -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__SIZE 0x00000020 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0_SHIFT 0 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0_MASK 0x0000001f -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0_SHIFT 5 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0_MASK 0x000003e0 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0_SHIFT 10 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0_MASK 0x00007c00 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1_SHIFT 16 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1_MASK 0x001f0000 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1_SHIFT 21 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1_MASK 0x03e00000 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1_SHIFT 26 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1_MASK 0x7c000000 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8(x) (0x00000700+((x)*4)) -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__SIZE 0x00000040 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B_SHIFT 0 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B_MASK 0x000000ff -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G_SHIFT 8 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G_MASK 0x0000ff00 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R_SHIFT 16 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R_MASK 0x00ff0000 - - -#define NV03_VIDEO_LUT_CURSOR_DAC 0x00000046 - -#define NV03_VIDEO_LUT_CURSOR_DAC_SYNCHRONIZE 0x00000100 -#define NV03_VIDEO_LUT_CURSOR_DAC_STOP_IMAGE 0x00000104 -#define NV03_VIDEO_LUT_CURSOR_DAC_STOP_CURSOR 0x00000108 -#define NV03_VIDEO_LUT_CURSOR_DAC_STOP_DAC 0x0000010c -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_NOTIFY 0x00000180 -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_IMAGE(x) (0x00000184+((x)*4)) -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_IMAGE__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_LUT(x) (0x0000018c+((x)*4)) -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_LUT__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_CURSOR(x) (0x00000194+((x)*4)) -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_CURSOR__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_GET 0x000002fc -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_OFFSET(x) (0x00000300+((x)*8)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_OFFSET__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT(x) (0x00000304+((x)*8)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_PITCH_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_PITCH_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_COLOR_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_COLOR_MASK 0x0fff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_NOTIFY_SHIFT 28 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_NOTIFY_MASK 0xf0000000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_OFFSET(x) (0x00000340+((x)*12)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_OFFSET__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT(x) (0x00000344+((x)*12)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_X_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_X_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_Y_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_Y_MASK 0xffff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_FORMAT(x) (0x00000348+((x)*12)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_FORMAT__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A 0x00000358 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_X_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_X_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_Y_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_Y_MASK 0xffff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE(x) (0x00000380+((x)*16)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_W_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_W_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_H_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_H_MASK 0xffff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC(x) (0x00000384+((x)*16)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_START_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_START_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_WIDTH_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_WIDTH_MASK 0x0fff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_POLARITY_SHIFT 28 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_POLARITY_MASK 0xf0000000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC(x) (0x00000388+((x)*16)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_START_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_START_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_WIDTH_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_WIDTH_MASK 0x0fff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_POLARITY_SHIFT 28 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_POLARITY_MASK 0xf0000000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE(x) (0x0000038c+((x)*16)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_WIDTH_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_WIDTH_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_HEIGHT_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_HEIGHT_MASK 0x0fff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_NOTIFY_SHIFT 28 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_NOTIFY_MASK 0xf0000000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_PIXEL_CLOCK 0x000003a0 - - -#define NV03_TEXTURED_TRIANGLE 0x00000048 - -#define NV03_TEXTURED_TRIANGLE_NOP 0x00000100 -#define NV03_TEXTURED_TRIANGLE_NOTIFY 0x00000104 -#define NV03_TEXTURED_TRIANGLE_PATCH 0x0000010c -#define NV03_TEXTURED_TRIANGLE_DMA_NOTIFY 0x00000180 -#define NV03_TEXTURED_TRIANGLE_DMA_TEXTURE 0x00000184 -#define NV03_TEXTURED_TRIANGLE_CLIP_RECTANGLE 0x00000188 -#define NV03_TEXTURED_TRIANGLE_SURFACE 0x0000018c -#define NV03_TEXTURED_TRIANGLE_TEXTURE_OFFSET 0x00000304 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT 0x00000308 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_MASK_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_MASK_MASK 0x0000ffff -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_ENABLE_SHIFT 16 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_ENABLE_MASK 0x000f0000 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_SHIFT 20 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_MASK 0x00f00000 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MIN_SHIFT 24 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MIN_MASK 0x0f000000 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MAX_SHIFT 28 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MAX_MASK 0xf0000000 -#define NV03_TEXTURED_TRIANGLE_FILTER 0x0000030c -#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_X_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_X_MASK 0x0000001f -#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_Y_SHIFT 8 -#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_Y_MASK 0x00001f00 -#define NV03_TEXTURED_TRIANGLE_FILTER_SIZE_ADJUST_SHIFT 16 -#define NV03_TEXTURED_TRIANGLE_FILTER_SIZE_ADJUST_MASK 0x00ff0000 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR 0x00000310 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_B_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_B_MASK 0x000000ff -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_G_SHIFT 8 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_G_MASK 0x0000ff00 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_R_SHIFT 16 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_R_MASK 0x00ff0000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT 0x00000314 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_INTERPOLATOR_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_INTERPOLATOR_MASK 0x0000000f -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_U_SHIFT 4 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_U_MASK 0x00000030 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_V_SHIFT 6 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_V_MASK 0x000000c0 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_SOURCE_COLOR_SHIFT 8 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_SOURCE_COLOR_MASK 0x00000f00 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_CULLING_SHIFT 12 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_CULLING_MASK 0x00007000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_PERSPECTIVE_ENABLE (1 << 15) -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_FUNC_SHIFT 16 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_FUNC_MASK 0x000f0000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_WRITE_ENABLE_SHIFT 20 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_WRITE_ENABLE_MASK 0x00f00000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_COLOR_WRITE_ENABLE_SHIFT 24 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_COLOR_WRITE_ENABLE_MASK 0x07000000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_ROP_SHIFT 27 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_ROP_MASK 0x18000000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_BETA (1 << 29) -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_DST_BLEND (1 << 30) -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_SRC_BLEND (1 << 31) -#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL 0x00000318 -#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_REF_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_REF_MASK 0x000000ff -#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_FUNC_SHIFT 8 -#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_FUNC_MASK 0xffffff00 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR(x) (0x00001000+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I0_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I0_MASK 0x0000000f -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I1_SHIFT 4 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I1_MASK 0x000000f0 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I2_SHIFT 8 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I2_MASK 0x00000f00 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I3_SHIFT 12 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I3_MASK 0x0000f000 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I4_SHIFT 16 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I4_MASK 0x000f0000 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I5_SHIFT 20 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I5_MASK 0x00f00000 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_SHIFT 24 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_MASK 0xff000000 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_COLOR(x) (0x00001004+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_COLOR__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SX(x) (0x00001008+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SX__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SY(x) (0x0000100c+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SY__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SZ(x) (0x00001010+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SZ__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_RHW(x) (0x00001014+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_RHW__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TU(x) (0x00001018+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TU__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TV(x) (0x0000101c+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TV__SIZE 0x00000080 - - -#define NV04_GDI_RECTANGLE_TEXT 0x0000004a - -#define NV04_GDI_RECTANGLE_TEXT_NOP 0x00000100 -#define NV04_GDI_RECTANGLE_TEXT_NOTIFY 0x00000104 -#define NV04_GDI_RECTANGLE_TEXT_PATCH 0x0000010c -#define NV04_GDI_RECTANGLE_TEXT_PM_TRIGGER 0x00000140 -#define NV04_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180 -#define NV04_GDI_RECTANGLE_TEXT_DMA_FONTS 0x00000184 -#define NV04_GDI_RECTANGLE_TEXT_PATTERN 0x00000188 -#define NV04_GDI_RECTANGLE_TEXT_ROP 0x0000018c -#define NV04_GDI_RECTANGLE_TEXT_BETA1 0x00000190 -#define NV04_GDI_RECTANGLE_TEXT_BETA4 0x00000194 -#define NV04_GDI_RECTANGLE_TEXT_SURFACE 0x00000198 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_AND 0x00000000 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_ROP_AND 0x00000001 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_AND 0x00000002 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY 0x00000003 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_PREMULT 0x00000005 -#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300 -#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A16R5G6B5 0x00000001 -#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_X16A1R5G5B5 0x00000002 -#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A8R8G8B8 0x00000003 -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304 -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_CGA6 0x00000001 -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_LE 0x00000002 -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT(x) (0x00000400+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__SIZE 0x00000020 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE(x) (0x00000404+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__SIZE 0x00000020 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0 0x000005f4 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1 0x000005f8 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_B 0x000005fc -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0(x) (0x00000600+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__SIZE 0x00000020 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1(x) (0x00000604+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__SIZE 0x00000020 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x000007ec -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x000007f0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_C 0x000007f4 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_C 0x000007f8 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_POINT_C 0x000007fc -#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(x) (0x00000800+((x)*4)) -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__SIZE 0x00000080 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x00000be4 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x00000be8 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_COLOR0_E 0x00000bec -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_E 0x00000bf0 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x00000bf4 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x00000bf8 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_POINT_E 0x00000bfc -#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(x) (0x00000c00+((x)*4)) -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__SIZE 0x00000080 -#define NV04_GDI_RECTANGLE_TEXT_FONT_F 0x00000ff0 -#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET_MASK 0x0fffffff -#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH_SHIFT 28 -#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH_MASK 0xf0000000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0 0x00000ff4 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1 0x00000ff8 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_F 0x00000ffc -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F(x) (0x00001000+((x)*4)) -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__SIZE 0x00000100 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX_MASK 0x000000ff -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X_SHIFT 8 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X_MASK 0x000fff00 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y_SHIFT 20 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y_MASK 0xfff00000 -#define NV04_GDI_RECTANGLE_TEXT_FONT_G 0x000017f0 -#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET_MASK 0x0fffffff -#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH_SHIFT 28 -#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH_MASK 0xf0000000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0 0x000017f4 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1 0x000017f8 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_G 0x000017fc -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT(x) (0x00001800+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__SIZE 0x00000100 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX(x) (0x00001804+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__SIZE 0x00000100 - - -#define NV03_GDI_RECTANGLE_TEXT 0x0000004b - -#define NV03_GDI_RECTANGLE_TEXT_NOP 0x00000100 -#define NV03_GDI_RECTANGLE_TEXT_NOTIFY 0x00000104 -#define NV03_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180 -#define NV03_GDI_RECTANGLE_TEXT_PATTERN 0x00000184 -#define NV03_GDI_RECTANGLE_TEXT_ROP 0x00000188 -#define NV03_GDI_RECTANGLE_TEXT_BETA1 0x0000018c -#define NV03_GDI_RECTANGLE_TEXT_SURFACE 0x00000190 -#define NV03_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc -#define NV03_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300 -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304 -#define NV03_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT 0x00000400 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE 0x00000404 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B 0x000007f4 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B 0x000007f8 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_COLOR1_B 0x000007fc -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0 0x00000800 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1 0x00000804 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x00000bec -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x00000bf0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_COLOR1_C 0x00000bf4 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_C 0x00000bf8 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_POINT_C 0x00000bfc -#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(x) (0x00000c00+((x)*4)) -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__SIZE 0x00000020 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0 0x00000fe8 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1 0x00000fec -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_COLOR1_D 0x00000ff0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D 0x00000ff4 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D 0x00000ff8 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_POINT_D 0x00000ffc -#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D(x) (0x00001000+((x)*4)) -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__SIZE 0x00000020 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x000013e4 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x000013e8 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_COLOR0_E 0x000013ec -#define NV03_GDI_RECTANGLE_TEXT_COLOR1_E 0x000013f0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x000013f4 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x000013f8 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_POINT_E 0x000013fc -#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(x) (0x00001400+((x)*4)) -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__SIZE 0x00000020 - - -#define NV04_SWIZZLED_SURFACE 0x00000052 - -#define NV04_SWIZZLED_SURFACE_NOP 0x00000100 -#define NV04_SWIZZLED_SURFACE_NOTIFY 0x00000104 -#define NV04_SWIZZLED_SURFACE_DMA_NOTIFY 0x00000180 -#define NV04_SWIZZLED_SURFACE_DMA_IMAGE 0x00000184 -#define NV04_SWIZZLED_SURFACE_FORMAT 0x00000300 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_SHIFT 0 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_MASK 0x000000ff -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y8 0x00000001 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000002 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000003 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_R5G6B5 0x00000004 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y16 0x00000005 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000006 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000007 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000008 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000009 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_A8R8G8B8 0x0000000a -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y32 0x0000000b -#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U_SHIFT 16 -#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U_MASK 0x00ff0000 -#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V_SHIFT 24 -#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V_MASK 0xff000000 -#define NV04_SWIZZLED_SURFACE_OFFSET 0x00000304 - - -#define NV20_SWIZZLED_SURFACE 0x0000009e - - - -#define NV30_SWIZZLED_SURFACE 0x0000039e - - - -#define NV40_SWIZZLED_SURFACE 0x0000309e - - - -#define NV04_CONTEXT_SURFACES_3D 0x00000053 - -#define NV04_CONTEXT_SURFACES_3D_NOP 0x00000100 -#define NV04_CONTEXT_SURFACES_3D_NOTIFY 0x00000104 -#define NV04_CONTEXT_SURFACES_3D_DMA_NOTIFY 0x00000180 -#define NV04_CONTEXT_SURFACES_3D_DMA_COLOR 0x00000184 -#define NV04_CONTEXT_SURFACES_3D_DMA_ZETA 0x00000188 -#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL 0x000002f8 -#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X_SHIFT 0 -#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X_MASK 0x0000ffff -#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W_SHIFT 16 -#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W_MASK 0xffff0000 -#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL 0x000002fc -#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y_SHIFT 0 -#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y_MASK 0x0000ffff -#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H_SHIFT 16 -#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H_MASK 0xffff0000 -#define NV04_CONTEXT_SURFACES_3D_FORMAT 0x00000300 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_SHIFT 0 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_MASK 0x000000ff -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000001 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000002 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_R5G6B5 0x00000003 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000004 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000005 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000006 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000007 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_A8R8G8B8 0x00000008 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_SHIFT 8 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_MASK 0x0000ff00 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_PITCH 0x00000100 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_SWIZZLE 0x00000200 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U_SHIFT 16 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U_MASK 0x00ff0000 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V_SHIFT 24 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V_MASK 0xff000000 -#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE 0x00000304 -#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W_SHIFT 0 -#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W_MASK 0x0000ffff -#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H_SHIFT 16 -#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H_MASK 0xffff0000 -#define NV04_CONTEXT_SURFACES_3D_PITCH 0x00000308 -#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR_SHIFT 0 -#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR_MASK 0x0000ffff -#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA_SHIFT 16 -#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA_MASK 0xffff0000 -#define NV04_CONTEXT_SURFACES_3D_OFFSET_COLOR 0x0000030c -#define NV04_CONTEXT_SURFACES_3D_OFFSET_ZETA 0x00000310 - - -#define NV10_CONTEXT_SURFACES_3D 0x00000093 - - - -#define NV04_TEXTURED_TRIANGLE 0x00000054 - -#define NV04_TEXTURED_TRIANGLE_NOP 0x00000100 -#define NV04_TEXTURED_TRIANGLE_NOTIFY 0x00000104 -#define NV04_TEXTURED_TRIANGLE_DMA_NOTIFY 0x00000180 -#define NV04_TEXTURED_TRIANGLE_DMA_A 0x00000184 -#define NV04_TEXTURED_TRIANGLE_DMA_B 0x00000188 -#define NV04_TEXTURED_TRIANGLE_SURFACE 0x0000018c -#define NV04_TEXTURED_TRIANGLE_COLORKEY 0x00000300 -#define NV04_TEXTURED_TRIANGLE_OFFSET 0x00000304 -#define NV04_TEXTURED_TRIANGLE_FORMAT 0x00000308 -#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_A (1 << 0) -#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_B (1 << 1) -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_KEY_MATCH_SHIFT 2 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_KEY_MATCH_MASK 0x0000000c -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_SHIFT 4 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_MASK 0x00000030 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER 0x00000010 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER 0x00000020 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_SHIFT 6 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_MASK 0x000000c0 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER 0x00000040 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER 0x00000080 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_MASK 0x00000f00 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_Y8 0x00000100 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A1R5G5B5 0x00000200 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X1R5G5B5 0x00000300 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A4R4G4B4 0x00000400 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_R5G6B5 0x00000500 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A8R8G8B8 0x00000600 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X8R8G8B8 0x00000700 -#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS_SHIFT 12 -#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS_MASK 0x0000f000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U_MASK 0x000f0000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V_SHIFT 20 -#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V_MASK 0x00f00000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_MASK 0x07000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_REPEAT 0x01000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT 0x02000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE 0x03000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER 0x04000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP 0x05000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPU (1 << 27) -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_SHIFT 28 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_MASK 0x70000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_REPEAT 0x10000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT 0x20000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE 0x30000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER 0x40000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP 0x50000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPV (1 << 31) -#define NV04_TEXTURED_TRIANGLE_FILTER 0x0000030c -#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X_MASK 0x000000ff -#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y_MASK 0x00007f00 -#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE (1 << 15) -#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS_MASK 0x00ff0000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_MASK 0x07000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST 0x01000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR 0x02000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE (1 << 27) -#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_SHIFT 28 -#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_MASK 0x70000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_NEAREST 0x10000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_LINEAR 0x20000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE (1 << 31) -#define NV04_TEXTURED_TRIANGLE_BLEND 0x00000310 -#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MASK 0x0000000f -#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_SHIFT 4 -#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_MASK 0x00000030 -#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_SHIFT 6 -#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_MASK 0x000000c0 -#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040 -#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080 -#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0 -#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE (1 << 8) -#define NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE (1 << 12) -#define NV04_TEXTURED_TRIANGLE_BLEND_FOG_ENABLE (1 << 16) -#define NV04_TEXTURED_TRIANGLE_BLEND_BLEND_ENABLE (1 << 20) -#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_MASK 0x0f000000 -#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SHIFT 28 -#define NV04_TEXTURED_TRIANGLE_BLEND_DST_MASK 0xf0000000 -#define NV04_TEXTURED_TRIANGLE_CONTROL 0x00000314 -#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF_MASK 0x000000ff -#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_MASK 0x00000f00 -#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_ENABLE (1 << 12) -#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN (1 << 13) -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_ENABLE (1 << 14) -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_MASK 0x000f0000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_SHIFT 20 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_MASK 0x00300000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_BOTH 0x00000000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_NONE 0x00100000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CW 0x00200000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CCW 0x00300000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_DITHER_ENABLE (1 << 22) -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_PERSPECTIVE_ENABLE (1 << 23) -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_WRITE (1 << 24) -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_SHIFT 30 -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_MASK 0xc0000000 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR 0x00000318 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B_MASK 0x000000ff -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G_MASK 0x0000ff00 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R_MASK 0x00ff0000 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A_MASK 0xff000000 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SX(x) (0x00000400+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SX__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SY(x) (0x00000404+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SY__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SZ(x) (0x00000408+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SZ__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_RHW(x) (0x0000040c+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_RHW__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR(x) (0x00000410+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B_MASK 0x000000ff -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G_MASK 0x0000ff00 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R_MASK 0x00ff0000 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A_MASK 0xff000000 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR(x) (0x00000414+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B_MASK 0x000000ff -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G_MASK 0x0000ff00 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R_MASK 0x00ff0000 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_MASK 0xff000000 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TU(x) (0x00000418+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TU__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TV(x) (0x0000041c+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TV__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE(x) (0x00000600+((x)*4)) -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__SIZE 0x00000040 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0_MASK 0x0000000f -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1_SHIFT 4 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1_MASK 0x000000f0 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2_MASK 0x00000f00 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3_SHIFT 12 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3_MASK 0x0000f000 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4_MASK 0x000f0000 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5_SHIFT 20 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5_MASK 0x00f00000 - - -#define NV10_TEXTURED_TRIANGLE 0x00000094 - - - -#define NV04_MULTITEX_TRIANGLE 0x00000055 - -#define NV04_MULTITEX_TRIANGLE_NOP 0x00000100 -#define NV04_MULTITEX_TRIANGLE_NOTIFY 0x00000104 -#define NV04_MULTITEX_TRIANGLE_DMA_NOTIFY 0x00000180 -#define NV04_MULTITEX_TRIANGLE_DMA_A 0x00000184 -#define NV04_MULTITEX_TRIANGLE_DMA_B 0x00000188 -#define NV04_MULTITEX_TRIANGLE_SURFACE 0x0000018c -#define NV04_MULTITEX_TRIANGLE_OFFSET(x) (0x00000308+((x)*4)) -#define NV04_MULTITEX_TRIANGLE_OFFSET__SIZE 0x00000002 -#define NV04_MULTITEX_TRIANGLE_FORMAT(x) (0x00000310+((x)*4)) -#define NV04_MULTITEX_TRIANGLE_FORMAT__SIZE 0x00000002 -#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_A (1 << 0) -#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_B (1 << 1) -#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_SHIFT 4 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_MASK 0x00000030 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_SHIFT 6 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_MASK 0x000000c0 -#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_MASK 0x00000f00 -#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS_SHIFT 12 -#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS_MASK 0x0000f000 -#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U_MASK 0x000f0000 -#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V_SHIFT 20 -#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V_MASK 0x00f00000 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_MASK 0x07000000 -#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPU (1 << 27) -#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_SHIFT 28 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_MASK 0x70000000 -#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPV (1 << 31) -#define NV04_MULTITEX_TRIANGLE_FILTER(x) (0x00000318+((x)*4)) -#define NV04_MULTITEX_TRIANGLE_FILTER__SIZE 0x00000002 -#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y_MASK 0x00007f00 -#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE (1 << 15) -#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_MASK 0x07000000 -#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE (1 << 27) -#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_SHIFT 28 -#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_MASK 0x70000000 -#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE (1 << 31) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA(x) (0x00000320+((x)*12)) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__SIZE 0x00000002 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE0 (1 << 0) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_SHIFT 2 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_MASK 0x000000fc -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_ZERO 0x00000004 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_CONSTANT 0x00000008 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PRIMARY_COLOR 0x0000000c -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PREVIOUS 0x00000010 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE0 0x00000014 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE1 0x00000018 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE1 (1 << 8) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_SHIFT 10 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_MASK 0x0000fc00 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_ZERO 0x00000400 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_CONSTANT 0x00000800 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PRIMARY_COLOR 0x00000c00 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PREVIOUS 0x00001000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE0 0x00001400 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE1 0x00001800 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE2 (1 << 16) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_SHIFT 18 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_MASK 0x00fc0000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_ZERO 0x00040000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_CONSTANT 0x00080000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PRIMARY_COLOR 0x000c0000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PREVIOUS 0x00100000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE0 0x00140000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE1 0x00180000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE3 (1 << 24) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_SHIFT 26 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_MASK 0x1c000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_ZERO 0x04000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_CONSTANT 0x08000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PRIMARY_COLOR 0x0c000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PREVIOUS 0x10000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE0 0x14000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE1 0x18000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SHIFT 29 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_MASK 0xe0000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_IDENTITY 0x20000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE2 0x40000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE4 0x60000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS 0x80000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS_SCALE2 0xe0000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR(x) (0x00000324+((x)*12)) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__SIZE 0x00000002 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE0 (1 << 0) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA0 (1 << 1) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_SHIFT 2 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_MASK 0x000000fc -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_ZERO 0x00000004 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_CONSTANT 0x00000008 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PRIMARY_COLOR 0x0000000c -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PREVIOUS 0x00000010 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE0 0x00000014 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE1 0x00000018 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE1 (1 << 8) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA1 (1 << 9) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_SHIFT 10 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_MASK 0x0000fc00 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_ZERO 0x00000400 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_CONSTANT 0x00000800 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PRIMARY_COLOR 0x00000c00 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PREVIOUS 0x00001000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE0 0x00001400 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE1 0x00001800 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE2 (1 << 16) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA2 (1 << 17) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_SHIFT 18 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_MASK 0x00fc0000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_ZERO 0x00040000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_CONSTANT 0x00080000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PRIMARY_COLOR 0x000c0000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PREVIOUS 0x00100000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE0 0x00140000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE1 0x00180000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE3 (1 << 24) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA3 (1 << 25) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_SHIFT 26 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_MASK 0x1c000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_ZERO 0x04000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_CONSTANT 0x08000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PRIMARY_COLOR 0x0c000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PREVIOUS 0x10000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE0 0x14000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE1 0x18000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SHIFT 29 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_MASK 0xe0000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_IDENTITY 0x20000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE2 0x40000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE4 0x60000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS 0x80000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS_SCALE2 0xe0000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR 0x00000334 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G_MASK 0x0000ff00 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A_MASK 0xff000000 -#define NV04_MULTITEX_TRIANGLE_BLEND 0x00000338 -#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_SHIFT 4 -#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_MASK 0x00000030 -#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_SHIFT 6 -#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_MASK 0x000000c0 -#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040 -#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080 -#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0 -#define NV04_MULTITEX_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE (1 << 8) -#define NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE (1 << 12) -#define NV04_MULTITEX_TRIANGLE_BLEND_FOG_ENABLE (1 << 16) -#define NV04_MULTITEX_TRIANGLE_BLEND_BLEND_ENABLE (1 << 20) -#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_MASK 0x0f000000 -#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SHIFT 28 -#define NV04_MULTITEX_TRIANGLE_BLEND_DST_MASK 0xf0000000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0 0x0000033c -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_MASK 0x00000f00 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_ENABLE (1 << 12) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN (1 << 13) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_ENABLE (1 << 14) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_MASK 0x000f0000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_SHIFT 20 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_MASK 0x00300000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_BOTH 0x00000000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_NONE 0x00100000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CW 0x00200000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CCW 0x00300000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_DITHER_ENABLE (1 << 22) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_PERSPECTIVE_ENABLE (1 << 23) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_WRITE (1 << 24) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_STENCIL_WRITE (1 << 25) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_WRITE (1 << 26) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_RED_WRITE (1 << 27) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_GREEN_WRITE (1 << 28) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_BLUE_WRITE (1 << 29) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_SHIFT 30 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_MASK 0xc0000000 -#define NV04_MULTITEX_TRIANGLE_CONTROL1 0x00000340 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_ENABLE (1 << 0) -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC_SHIFT 4 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC_MASK 0x000000f0 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF_MASK 0x0000ff00 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE_MASK 0xff000000 -#define NV04_MULTITEX_TRIANGLE_CONTROL2 0x00000344 -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL_MASK 0x0000000f -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL_SHIFT 4 -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL_MASK 0x000000f0 -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS_MASK 0x00000f00 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR 0x00000348 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G_MASK 0x0000ff00 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A_MASK 0xff000000 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SX(x) (0x00000400+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SX__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SY(x) (0x00000404+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SY__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SZ(x) (0x00000408+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SZ__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_RHW(x) (0x0000040c+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_RHW__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR(x) (0x00000410+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G_MASK 0x0000ff00 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A_MASK 0xff000000 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR(x) (0x00000414+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G_MASK 0x0000ff00 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG_MASK 0xff000000 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU0(x) (0x00000418+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU0__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV0(x) (0x0000041c+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV0__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU1(x) (0x00000420+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU1__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV1(x) (0x00000424+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV1__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE(x) (0x00000540+((x)*4)) -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__SIZE 0x00000030 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0_MASK 0x0000000f -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1_SHIFT 4 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1_MASK 0x000000f0 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2_MASK 0x00000f00 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3_SHIFT 12 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3_MASK 0x0000f000 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4_MASK 0x000f0000 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5_SHIFT 20 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5_MASK 0x00f00000 - - -#define NV10_MULTITEX_TRIANGLE 0x00000095 - - - -#define NV10TCL 0x00000056 - -#define NV10TCL_NOP 0x00000100 -#define NV10TCL_NOTIFY 0x00000104 -#define NV10TCL_DMA_NOTIFY 0x00000180 -#define NV10TCL_DMA_IN_MEMORY0 0x00000184 -#define NV10TCL_DMA_IN_MEMORY1 0x00000188 -#define NV10TCL_DMA_VTXBUF0 0x0000018c -#define NV10TCL_DMA_IN_MEMORY2 0x00000194 -#define NV10TCL_DMA_IN_MEMORY3 0x00000198 -#define NV10TCL_RT_HORIZ 0x00000200 -#define NV10TCL_RT_HORIZ_X_SHIFT 0 -#define NV10TCL_RT_HORIZ_X_MASK 0x0000ffff -#define NV10TCL_RT_HORIZ_W_SHIFT 16 -#define NV10TCL_RT_HORIZ_W_MASK 0xffff0000 -#define NV10TCL_RT_VERT 0x00000204 -#define NV10TCL_RT_VERT_Y_SHIFT 0 -#define NV10TCL_RT_VERT_Y_MASK 0x0000ffff -#define NV10TCL_RT_VERT_H_SHIFT 16 -#define NV10TCL_RT_VERT_H_MASK 0xffff0000 -#define NV10TCL_RT_FORMAT 0x00000208 -#define NV10TCL_RT_FORMAT_TYPE_SHIFT 8 -#define NV10TCL_RT_FORMAT_TYPE_MASK 0x00000f00 -#define NV10TCL_RT_FORMAT_TYPE_LINEAR 0x00000100 -#define NV10TCL_RT_FORMAT_TYPE_SWIZZLED 0x00000200 -#define NV10TCL_RT_FORMAT_COLOR_SHIFT 0 -#define NV10TCL_RT_FORMAT_COLOR_MASK 0x0000001f -#define NV10TCL_RT_FORMAT_COLOR_R5G6B5 0x00000003 -#define NV10TCL_RT_FORMAT_COLOR_X8R8G8B8 0x00000005 -#define NV10TCL_RT_FORMAT_COLOR_A8R8G8B8 0x00000008 -#define NV10TCL_RT_FORMAT_COLOR_B8 0x00000009 -#define NV10TCL_RT_FORMAT_COLOR_UNKNOWN 0x0000000d -#define NV10TCL_RT_FORMAT_COLOR_X8B8G8R8 0x0000000f -#define NV10TCL_RT_FORMAT_COLOR_A8B8G8R8 0x00000010 -#define NV10TCL_RT_PITCH 0x0000020c -#define NV10TCL_RT_PITCH_COLOR_PITCH_SHIFT 0 -#define NV10TCL_RT_PITCH_COLOR_PITCH_MASK 0x0000ffff -#define NV10TCL_RT_PITCH_ZETA_PITCH_SHIFT 16 -#define NV10TCL_RT_PITCH_ZETA_PITCH_MASK 0xffff0000 -#define NV10TCL_COLOR_OFFSET 0x00000210 -#define NV10TCL_ZETA_OFFSET 0x00000214 -#define NV10TCL_TX_OFFSET(x) (0x00000218+((x)*4)) -#define NV10TCL_TX_OFFSET__SIZE 0x00000002 -#define NV10TCL_TX_FORMAT(x) (0x00000220+((x)*4)) -#define NV10TCL_TX_FORMAT__SIZE 0x00000002 -#define NV10TCL_TX_FORMAT_DMA0 (1 << 0) -#define NV10TCL_TX_FORMAT_DMA1 (1 << 1) -#define NV10TCL_TX_FORMAT_CUBE_MAP (1 << 2) -#define NV10TCL_TX_FORMAT_FORMAT_SHIFT 7 -#define NV10TCL_TX_FORMAT_FORMAT_MASK 0x00000f80 -#define NV10TCL_TX_FORMAT_FORMAT_L8 0x00000000 -#define NV10TCL_TX_FORMAT_FORMAT_A8 0x00000080 -#define NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5 0x00000100 -#define NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4 0x00000200 -#define NV10TCL_TX_FORMAT_FORMAT_R5G6B5 0x00000280 -#define NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8 0x00000300 -#define NV10TCL_TX_FORMAT_FORMAT_X8R8G8B8 0x00000380 -#define NV10TCL_TX_FORMAT_FORMAT_INDEX8 0x00000580 -#define NV10TCL_TX_FORMAT_FORMAT_DXT1 0x00000600 -#define NV10TCL_TX_FORMAT_FORMAT_DXT3 0x00000700 -#define NV10TCL_TX_FORMAT_FORMAT_DXT5 0x00000780 -#define NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00000800 -#define NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT 0x00000880 -#define NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00000900 -#define NV10TCL_TX_FORMAT_FORMAT_A8_RECT 0x00000980 -#define NV10TCL_TX_FORMAT_MIPMAP (1 << 15) -#define NV10TCL_TX_FORMAT_BASE_SIZE_U_SHIFT 16 -#define NV10TCL_TX_FORMAT_BASE_SIZE_U_MASK 0x000f0000 -#define NV10TCL_TX_FORMAT_BASE_SIZE_V_SHIFT 20 -#define NV10TCL_TX_FORMAT_BASE_SIZE_V_MASK 0x00f00000 -#define NV10TCL_TX_FORMAT_WRAP_S_SHIFT 24 -#define NV10TCL_TX_FORMAT_WRAP_S_MASK 0x0f000000 -#define NV10TCL_TX_FORMAT_WRAP_S_REPEAT 0x01000000 -#define NV10TCL_TX_FORMAT_WRAP_S_MIRRORED_REPEAT 0x02000000 -#define NV10TCL_TX_FORMAT_WRAP_S_CLAMP_TO_EDGE 0x03000000 -#define NV10TCL_TX_FORMAT_WRAP_S_CLAMP_TO_BORDER 0x04000000 -#define NV10TCL_TX_FORMAT_WRAP_S_CLAMP 0x05000000 -#define NV10TCL_TX_FORMAT_WRAP_T_SHIFT 28 -#define NV10TCL_TX_FORMAT_WRAP_T_MASK 0xf0000000 -#define NV10TCL_TX_FORMAT_WRAP_T_REPEAT 0x10000000 -#define NV10TCL_TX_FORMAT_WRAP_T_MIRRORED_REPEAT 0x20000000 -#define NV10TCL_TX_FORMAT_WRAP_T_CLAMP_TO_EDGE 0x30000000 -#define NV10TCL_TX_FORMAT_WRAP_T_CLAMP_TO_BORDER 0x40000000 -#define NV10TCL_TX_FORMAT_WRAP_T_CLAMP 0x50000000 -#define NV10TCL_TX_ENABLE(x) (0x00000228+((x)*4)) -#define NV10TCL_TX_ENABLE__SIZE 0x00000002 -#define NV10TCL_TX_ENABLE_CULL_SHIFT 0 -#define NV10TCL_TX_ENABLE_CULL_MASK 0x0000000f -#define NV10TCL_TX_ENABLE_CULL_DISABLED 0x00000000 -#define NV10TCL_TX_ENABLE_CULL_TEST_ALL 0x00000003 -#define NV10TCL_TX_ENABLE_CULL_TEST_ALPHA 0x00000004 -#define NV10TCL_TX_ENABLE_ANISOTROPY_SHIFT 4 -#define NV10TCL_TX_ENABLE_ANISOTROPY_MASK 0x00000030 -#define NV10TCL_TX_ENABLE_MIPMAP_MAX_LOD_SHIFT 14 -#define NV10TCL_TX_ENABLE_MIPMAP_MAX_LOD_MASK 0x0003c000 -#define NV10TCL_TX_ENABLE_MIPMAP_MIN_LOD_SHIFT 26 -#define NV10TCL_TX_ENABLE_MIPMAP_MIN_LOD_MASK 0x3c000000 -#define NV10TCL_TX_ENABLE_ENABLE (1 << 30) -#define NV10TCL_TX_NPOT_PITCH(x) (0x00000230+((x)*4)) -#define NV10TCL_TX_NPOT_PITCH__SIZE 0x00000002 -#define NV10TCL_TX_NPOT_PITCH_PITCH_SHIFT 16 -#define NV10TCL_TX_NPOT_PITCH_PITCH_MASK 0xffff0000 -#define NV10TCL_TX_NPOT_SIZE(x) (0x00000240+((x)*4)) -#define NV10TCL_TX_NPOT_SIZE__SIZE 0x00000002 -#define NV10TCL_TX_NPOT_SIZE_H_SHIFT 0 -#define NV10TCL_TX_NPOT_SIZE_H_MASK 0x0000ffff -#define NV10TCL_TX_NPOT_SIZE_W_SHIFT 16 -#define NV10TCL_TX_NPOT_SIZE_W_MASK 0xffff0000 -#define NV10TCL_TX_FILTER(x) (0x00000248+((x)*4)) -#define NV10TCL_TX_FILTER__SIZE 0x00000002 -#define NV10TCL_TX_FILTER_LOD_BIAS_SHIFT 8 -#define NV10TCL_TX_FILTER_LOD_BIAS_MASK 0x00000f00 -#define NV10TCL_TX_FILTER_MINIFY_SHIFT 24 -#define NV10TCL_TX_FILTER_MINIFY_MASK 0x0f000000 -#define NV10TCL_TX_FILTER_MINIFY_NEAREST 0x01000000 -#define NV10TCL_TX_FILTER_MINIFY_LINEAR 0x02000000 -#define NV10TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000 -#define NV10TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000 -#define NV10TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000 -#define NV10TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000 -#define NV10TCL_TX_FILTER_MAGNIFY_SHIFT 28 -#define NV10TCL_TX_FILTER_MAGNIFY_MASK 0xf0000000 -#define NV10TCL_TX_FILTER_MAGNIFY_NEAREST 0x10000000 -#define NV10TCL_TX_FILTER_MAGNIFY_LINEAR 0x20000000 -#define NV10TCL_TX_PALETTE_OFFSET(x) (0x00000250+((x)*4)) -#define NV10TCL_TX_PALETTE_OFFSET__SIZE 0x00000002 -#define NV10TCL_RC_IN_ALPHA(x) (0x00000260+((x)*4)) -#define NV10TCL_RC_IN_ALPHA__SIZE 0x00000002 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_SHIFT 0 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_MASK 0x0000000f -#define NV10TCL_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_FOG 0x00000003 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c -#define NV10TCL_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d -#define NV10TCL_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV10TCL_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f -#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a -#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b -#define NV10TCL_RC_IN_ALPHA_D_COMPONENT_USAGE (1 << 4) -#define NV10TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000 -#define NV10TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_SHIFT 5 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_MASK 0x000000e0 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_SHIFT 8 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_MASK 0x00000f00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_FOG 0x00000300 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_IN_ALPHA_C_COMPONENT_USAGE (1 << 12) -#define NV10TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000 -#define NV10TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_SHIFT 13 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_MASK 0x0000e000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_SHIFT 16 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_MASK 0x000f0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_FOG 0x00030000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000 -#define NV10TCL_RC_IN_ALPHA_B_COMPONENT_USAGE (1 << 20) -#define NV10TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000 -#define NV10TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_SHIFT 21 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_MASK 0x00e00000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_SHIFT 24 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_MASK 0x0f000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_FOG 0x03000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000 -#define NV10TCL_RC_IN_ALPHA_A_COMPONENT_USAGE (1 << 28) -#define NV10TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000 -#define NV10TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_SHIFT 29 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_MASK 0xe0000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV10TCL_RC_IN_RGB(x) (0x00000268+((x)*4)) -#define NV10TCL_RC_IN_RGB__SIZE 0x00000002 -#define NV10TCL_RC_IN_RGB_D_INPUT_SHIFT 0 -#define NV10TCL_RC_IN_RGB_D_INPUT_MASK 0x0000000f -#define NV10TCL_RC_IN_RGB_D_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV10TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV10TCL_RC_IN_RGB_D_INPUT_FOG 0x00000003 -#define NV10TCL_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV10TCL_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008 -#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009 -#define NV10TCL_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c -#define NV10TCL_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d -#define NV10TCL_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV10TCL_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f -#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a -#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b -#define NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE (1 << 4) -#define NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV10TCL_RC_IN_RGB_D_MAPPING_SHIFT 5 -#define NV10TCL_RC_IN_RGB_D_MAPPING_MASK 0x000000e0 -#define NV10TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV10TCL_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV10TCL_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV10TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV10TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV10TCL_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV10TCL_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV10TCL_RC_IN_RGB_C_INPUT_SHIFT 8 -#define NV10TCL_RC_IN_RGB_C_INPUT_MASK 0x00000f00 -#define NV10TCL_RC_IN_RGB_C_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_IN_RGB_C_INPUT_FOG 0x00000300 -#define NV10TCL_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_IN_RGB_C_COMPONENT_USAGE (1 << 12) -#define NV10TCL_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_SHIFT 13 -#define NV10TCL_RC_IN_RGB_C_MAPPING_MASK 0x0000e000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV10TCL_RC_IN_RGB_B_INPUT_SHIFT 16 -#define NV10TCL_RC_IN_RGB_B_INPUT_MASK 0x000f0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV10TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV10TCL_RC_IN_RGB_B_INPUT_FOG 0x00030000 -#define NV10TCL_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV10TCL_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000 -#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000 -#define NV10TCL_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000 -#define NV10TCL_RC_IN_RGB_B_COMPONENT_USAGE (1 << 20) -#define NV10TCL_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_SHIFT 21 -#define NV10TCL_RC_IN_RGB_B_MAPPING_MASK 0x00e00000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV10TCL_RC_IN_RGB_A_INPUT_SHIFT 24 -#define NV10TCL_RC_IN_RGB_A_INPUT_MASK 0x0f000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_FOG 0x03000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000 -#define NV10TCL_RC_IN_RGB_A_COMPONENT_USAGE (1 << 28) -#define NV10TCL_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_SHIFT 29 -#define NV10TCL_RC_IN_RGB_A_MAPPING_MASK 0xe0000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV10TCL_RC_COLOR(x) (0x00000270+((x)*4)) -#define NV10TCL_RC_COLOR__SIZE 0x00000002 -#define NV10TCL_RC_COLOR_B_SHIFT 0 -#define NV10TCL_RC_COLOR_B_MASK 0x000000ff -#define NV10TCL_RC_COLOR_G_SHIFT 8 -#define NV10TCL_RC_COLOR_G_MASK 0x0000ff00 -#define NV10TCL_RC_COLOR_R_SHIFT 16 -#define NV10TCL_RC_COLOR_R_MASK 0x00ff0000 -#define NV10TCL_RC_COLOR_A_SHIFT 24 -#define NV10TCL_RC_COLOR_A_MASK 0xff000000 -#define NV10TCL_RC_OUT_ALPHA(x) (0x00000278+((x)*4)) -#define NV10TCL_RC_OUT_ALPHA__SIZE 0x00000002 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SHIFT 0 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_MASK 0x0000000f -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SHIFT 4 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_MASK 0x000000f0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SHIFT 8 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_MASK 0x00000f00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_OUT_ALPHA_CD_DOT_PRODUCT (1 << 12) -#define NV10TCL_RC_OUT_ALPHA_AB_DOT_PRODUCT (1 << 13) -#define NV10TCL_RC_OUT_ALPHA_MUX_SUM (1 << 14) -#define NV10TCL_RC_OUT_ALPHA_BIAS (1 << 15) -#define NV10TCL_RC_OUT_ALPHA_BIAS_NONE 0x00000000 -#define NV10TCL_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 -#define NV10TCL_RC_OUT_ALPHA_SCALE_SHIFT 16 -#define NV10TCL_RC_OUT_ALPHA_SCALE_MASK 0x00030000 -#define NV10TCL_RC_OUT_ALPHA_SCALE_NONE 0x00000000 -#define NV10TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000 -#define NV10TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000 -#define NV10TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000 -#define NV10TCL_RC_OUT_RGB(x) (0x00000280+((x)*4)) -#define NV10TCL_RC_OUT_RGB__SIZE 0x00000002 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SHIFT 0 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_MASK 0x0000000f -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SHIFT 4 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_MASK 0x000000f0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SHIFT 8 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_MASK 0x00000f00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_OUT_RGB_CD_DOT_PRODUCT (1 << 12) -#define NV10TCL_RC_OUT_RGB_AB_DOT_PRODUCT (1 << 13) -#define NV10TCL_RC_OUT_RGB_MUX_SUM (1 << 14) -#define NV10TCL_RC_OUT_RGB_BIAS (1 << 15) -#define NV10TCL_RC_OUT_RGB_BIAS_NONE 0x00000000 -#define NV10TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 -#define NV10TCL_RC_OUT_RGB_SCALE_SHIFT 16 -#define NV10TCL_RC_OUT_RGB_SCALE_MASK 0x00030000 -#define NV10TCL_RC_OUT_RGB_SCALE_NONE 0x00000000 -#define NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000 -#define NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000 -#define NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000 -#define NV10TCL_RC_OUT_RGB_OPERATION_SHIFT 27 -#define NV10TCL_RC_OUT_RGB_OPERATION_MASK 0x38000000 -#define NV10TCL_RC_FINAL0 0x00000288 -#define NV10TCL_RC_FINAL0_D_INPUT_SHIFT 0 -#define NV10TCL_RC_FINAL0_D_INPUT_MASK 0x0000000f -#define NV10TCL_RC_FINAL0_D_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV10TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV10TCL_RC_FINAL0_D_INPUT_FOG 0x00000003 -#define NV10TCL_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV10TCL_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008 -#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009 -#define NV10TCL_RC_FINAL0_D_INPUT_SPARE0 0x0000000c -#define NV10TCL_RC_FINAL0_D_INPUT_SPARE1 0x0000000d -#define NV10TCL_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV10TCL_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f -#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a -#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b -#define NV10TCL_RC_FINAL0_D_COMPONENT_USAGE (1 << 4) -#define NV10TCL_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV10TCL_RC_FINAL0_D_MAPPING_SHIFT 5 -#define NV10TCL_RC_FINAL0_D_MAPPING_MASK 0x000000e0 -#define NV10TCL_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV10TCL_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV10TCL_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV10TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV10TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV10TCL_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV10TCL_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV10TCL_RC_FINAL0_C_INPUT_SHIFT 8 -#define NV10TCL_RC_FINAL0_C_INPUT_MASK 0x00000f00 -#define NV10TCL_RC_FINAL0_C_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_FINAL0_C_INPUT_FOG 0x00000300 -#define NV10TCL_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_FINAL0_C_INPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_FINAL0_C_INPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_FINAL0_C_COMPONENT_USAGE (1 << 12) -#define NV10TCL_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV10TCL_RC_FINAL0_C_MAPPING_SHIFT 13 -#define NV10TCL_RC_FINAL0_C_MAPPING_MASK 0x0000e000 -#define NV10TCL_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV10TCL_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV10TCL_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV10TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV10TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV10TCL_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV10TCL_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV10TCL_RC_FINAL0_B_INPUT_SHIFT 16 -#define NV10TCL_RC_FINAL0_B_INPUT_MASK 0x000f0000 -#define NV10TCL_RC_FINAL0_B_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV10TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV10TCL_RC_FINAL0_B_INPUT_FOG 0x00030000 -#define NV10TCL_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV10TCL_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000 -#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000 -#define NV10TCL_RC_FINAL0_B_INPUT_SPARE0 0x000c0000 -#define NV10TCL_RC_FINAL0_B_INPUT_SPARE1 0x000d0000 -#define NV10TCL_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV10TCL_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000 -#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000 -#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000 -#define NV10TCL_RC_FINAL0_B_COMPONENT_USAGE (1 << 20) -#define NV10TCL_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV10TCL_RC_FINAL0_B_MAPPING_SHIFT 21 -#define NV10TCL_RC_FINAL0_B_MAPPING_MASK 0x00e00000 -#define NV10TCL_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV10TCL_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV10TCL_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV10TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV10TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV10TCL_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV10TCL_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV10TCL_RC_FINAL0_A_INPUT_SHIFT 24 -#define NV10TCL_RC_FINAL0_A_INPUT_MASK 0x0f000000 -#define NV10TCL_RC_FINAL0_A_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV10TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV10TCL_RC_FINAL0_A_INPUT_FOG 0x03000000 -#define NV10TCL_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV10TCL_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000 -#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000 -#define NV10TCL_RC_FINAL0_A_INPUT_SPARE0 0x0c000000 -#define NV10TCL_RC_FINAL0_A_INPUT_SPARE1 0x0d000000 -#define NV10TCL_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV10TCL_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000 -#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000 -#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000 -#define NV10TCL_RC_FINAL0_A_COMPONENT_USAGE (1 << 28) -#define NV10TCL_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_SHIFT 29 -#define NV10TCL_RC_FINAL0_A_MAPPING_MASK 0xe0000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV10TCL_RC_FINAL1 0x0000028c -#define NV10TCL_RC_FINAL1_COLOR_SUM_CLAMP (1 << 7) -#define NV10TCL_RC_FINAL1_G_INPUT_SHIFT 8 -#define NV10TCL_RC_FINAL1_G_INPUT_MASK 0x00000f00 -#define NV10TCL_RC_FINAL1_G_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_FINAL1_G_INPUT_FOG 0x00000300 -#define NV10TCL_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_FINAL1_G_INPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_FINAL1_G_INPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_FINAL1_G_COMPONENT_USAGE (1 << 12) -#define NV10TCL_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV10TCL_RC_FINAL1_G_MAPPING_SHIFT 13 -#define NV10TCL_RC_FINAL1_G_MAPPING_MASK 0x0000e000 -#define NV10TCL_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV10TCL_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV10TCL_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV10TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV10TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV10TCL_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV10TCL_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV10TCL_RC_FINAL1_F_INPUT_SHIFT 16 -#define NV10TCL_RC_FINAL1_F_INPUT_MASK 0x000f0000 -#define NV10TCL_RC_FINAL1_F_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV10TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV10TCL_RC_FINAL1_F_INPUT_FOG 0x00030000 -#define NV10TCL_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000 -#define NV10TCL_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000 -#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000 -#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000 -#define NV10TCL_RC_FINAL1_F_INPUT_SPARE0 0x000c0000 -#define NV10TCL_RC_FINAL1_F_INPUT_SPARE1 0x000d0000 -#define NV10TCL_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV10TCL_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000 -#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000 -#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000 -#define NV10TCL_RC_FINAL1_F_COMPONENT_USAGE (1 << 20) -#define NV10TCL_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV10TCL_RC_FINAL1_F_MAPPING_SHIFT 21 -#define NV10TCL_RC_FINAL1_F_MAPPING_MASK 0x00e00000 -#define NV10TCL_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV10TCL_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV10TCL_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV10TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV10TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV10TCL_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV10TCL_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV10TCL_RC_FINAL1_E_INPUT_SHIFT 24 -#define NV10TCL_RC_FINAL1_E_INPUT_MASK 0x0f000000 -#define NV10TCL_RC_FINAL1_E_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV10TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV10TCL_RC_FINAL1_E_INPUT_FOG 0x03000000 -#define NV10TCL_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000 -#define NV10TCL_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000 -#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000 -#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000 -#define NV10TCL_RC_FINAL1_E_INPUT_SPARE0 0x0c000000 -#define NV10TCL_RC_FINAL1_E_INPUT_SPARE1 0x0d000000 -#define NV10TCL_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV10TCL_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000 -#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000 -#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000 -#define NV10TCL_RC_FINAL1_E_COMPONENT_USAGE (1 << 28) -#define NV10TCL_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_SHIFT 29 -#define NV10TCL_RC_FINAL1_E_MAPPING_MASK 0xe0000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV10TCL_LIGHT_MODEL 0x00000294 -#define NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR (1 << 0) -#define NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR (1 << 1) -#define NV10TCL_LIGHT_MODEL_LOCAL_VIEWER (1 << 16) -#define NV10TCL_COLOR_MATERIAL 0x00000298 -#define NV10TCL_COLOR_MATERIAL_EMISSION (1 << 0) -#define NV10TCL_COLOR_MATERIAL_AMBIENT (1 << 1) -#define NV10TCL_COLOR_MATERIAL_DIFFUSE (1 << 2) -#define NV10TCL_COLOR_MATERIAL_SPECULAR (1 << 3) -#define NV10TCL_FOG_MODE 0x0000029c -#define NV10TCL_FOG_MODE_LINEAR 0x00002601 -#define NV10TCL_FOG_MODE_EXP 0x00000800 -#define NV10TCL_FOG_MODE_EXP_ABS 0x00000802 -#define NV10TCL_FOG_MODE_EXP2 0x00000803 -#define NV10TCL_FOG_COORD 0x000002a0 -#define NV10TCL_FOG_COORD_FOG 0x00000000 -#define NV10TCL_FOG_COORD_DIST_RADIAL 0x00000001 -#define NV10TCL_FOG_COORD_DIST_ORTHOGONAL 0x00000002 -#define NV10TCL_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003 -#define NV10TCL_FOG_ENABLE 0x000002a4 -#define NV10TCL_FOG_COLOR 0x000002a8 -#define NV10TCL_FOG_COLOR_R_SHIFT 0 -#define NV10TCL_FOG_COLOR_R_MASK 0x000000ff -#define NV10TCL_FOG_COLOR_G_SHIFT 8 -#define NV10TCL_FOG_COLOR_G_MASK 0x0000ff00 -#define NV10TCL_FOG_COLOR_B_SHIFT 16 -#define NV10TCL_FOG_COLOR_B_MASK 0x00ff0000 -#define NV10TCL_FOG_COLOR_A_SHIFT 24 -#define NV10TCL_FOG_COLOR_A_MASK 0xff000000 -#define NV10TCL_VIEWPORT_CLIP_MODE 0x000002b4 -#define NV10TCL_VIEWPORT_CLIP_HORIZ(x) (0x000002c0+((x)*4)) -#define NV10TCL_VIEWPORT_CLIP_HORIZ__SIZE 0x00000008 -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_L_SHIFT 0 -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_L_MASK 0x000007ff -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_LEFT_ENABLE (1 << 11) -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_R_SHIFT 16 -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_R_MASK 0x07ff0000 -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_RIGHT_ENABLE (1 << 27) -#define NV10TCL_VIEWPORT_CLIP_VERT(x) (0x000002e0+((x)*4)) -#define NV10TCL_VIEWPORT_CLIP_VERT__SIZE 0x00000008 -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_T_SHIFT 0 -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_T_MASK 0x000007ff -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_TOP_ENABLE (1 << 11) -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_B_SHIFT 16 -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_B_MASK 0x07ff0000 -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_BOTTOM_ENABLE (1 << 27) -#define NV10TCL_ALPHA_FUNC_ENABLE 0x00000300 -#define NV10TCL_BLEND_FUNC_ENABLE 0x00000304 -#define NV10TCL_CULL_FACE_ENABLE 0x00000308 -#define NV10TCL_DEPTH_TEST_ENABLE 0x0000030c -#define NV10TCL_DITHER_ENABLE 0x00000310 -#define NV10TCL_LIGHTING_ENABLE 0x00000314 -#define NV10TCL_POINT_PARAMETERS_ENABLE 0x00000318 -#define NV10TCL_POINT_SMOOTH_ENABLE 0x0000031c -#define NV10TCL_LINE_SMOOTH_ENABLE 0x00000320 -#define NV10TCL_POLYGON_SMOOTH_ENABLE 0x00000324 -#define NV10TCL_VERTEX_WEIGHT_ENABLE 0x00000328 -#define NV10TCL_STENCIL_ENABLE 0x0000032c -#define NV10TCL_POLYGON_OFFSET_POINT_ENABLE 0x00000330 -#define NV10TCL_POLYGON_OFFSET_LINE_ENABLE 0x00000334 -#define NV10TCL_POLYGON_OFFSET_FILL_ENABLE 0x00000338 -#define NV10TCL_ALPHA_FUNC_FUNC 0x0000033c -#define NV10TCL_ALPHA_FUNC_FUNC_NEVER 0x00000200 -#define NV10TCL_ALPHA_FUNC_FUNC_LESS 0x00000201 -#define NV10TCL_ALPHA_FUNC_FUNC_EQUAL 0x00000202 -#define NV10TCL_ALPHA_FUNC_FUNC_LEQUAL 0x00000203 -#define NV10TCL_ALPHA_FUNC_FUNC_GREATER 0x00000204 -#define NV10TCL_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205 -#define NV10TCL_ALPHA_FUNC_FUNC_GEQUAL 0x00000206 -#define NV10TCL_ALPHA_FUNC_FUNC_ALWAYS 0x00000207 -#define NV10TCL_ALPHA_FUNC_REF 0x00000340 -#define NV10TCL_BLEND_FUNC_SRC 0x00000344 -#define NV10TCL_BLEND_FUNC_SRC_ZERO 0x00000000 -#define NV10TCL_BLEND_FUNC_SRC_ONE 0x00000001 -#define NV10TCL_BLEND_FUNC_SRC_SRC_COLOR 0x00000300 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301 -#define NV10TCL_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303 -#define NV10TCL_BLEND_FUNC_SRC_DST_ALPHA 0x00000304 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305 -#define NV10TCL_BLEND_FUNC_SRC_DST_COLOR 0x00000306 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307 -#define NV10TCL_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308 -#define NV10TCL_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002 -#define NV10TCL_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004 -#define NV10TCL_BLEND_FUNC_DST 0x00000348 -#define NV10TCL_BLEND_FUNC_DST_ZERO 0x00000000 -#define NV10TCL_BLEND_FUNC_DST_ONE 0x00000001 -#define NV10TCL_BLEND_FUNC_DST_SRC_COLOR 0x00000300 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301 -#define NV10TCL_BLEND_FUNC_DST_SRC_ALPHA 0x00000302 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303 -#define NV10TCL_BLEND_FUNC_DST_DST_ALPHA 0x00000304 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305 -#define NV10TCL_BLEND_FUNC_DST_DST_COLOR 0x00000306 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307 -#define NV10TCL_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308 -#define NV10TCL_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002 -#define NV10TCL_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004 -#define NV10TCL_BLEND_COLOR 0x0000034c -#define NV10TCL_BLEND_COLOR_B_SHIFT 0 -#define NV10TCL_BLEND_COLOR_B_MASK 0x000000ff -#define NV10TCL_BLEND_COLOR_G_SHIFT 8 -#define NV10TCL_BLEND_COLOR_G_MASK 0x0000ff00 -#define NV10TCL_BLEND_COLOR_R_SHIFT 16 -#define NV10TCL_BLEND_COLOR_R_MASK 0x00ff0000 -#define NV10TCL_BLEND_COLOR_A_SHIFT 24 -#define NV10TCL_BLEND_COLOR_A_MASK 0xff000000 -#define NV10TCL_BLEND_EQUATION 0x00000350 -#define NV10TCL_BLEND_EQUATION_FUNC_ADD 0x00008006 -#define NV10TCL_BLEND_EQUATION_MIN 0x00008007 -#define NV10TCL_BLEND_EQUATION_MAX 0x00008008 -#define NV10TCL_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a -#define NV10TCL_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b -#define NV10TCL_DEPTH_FUNC 0x00000354 -#define NV10TCL_DEPTH_FUNC_NEVER 0x00000200 -#define NV10TCL_DEPTH_FUNC_LESS 0x00000201 -#define NV10TCL_DEPTH_FUNC_EQUAL 0x00000202 -#define NV10TCL_DEPTH_FUNC_LEQUAL 0x00000203 -#define NV10TCL_DEPTH_FUNC_GREATER 0x00000204 -#define NV10TCL_DEPTH_FUNC_NOTEQUAL 0x00000205 -#define NV10TCL_DEPTH_FUNC_GEQUAL 0x00000206 -#define NV10TCL_DEPTH_FUNC_ALWAYS 0x00000207 -#define NV10TCL_COLOR_MASK 0x00000358 -#define NV10TCL_COLOR_MASK_B (1 << 0) -#define NV10TCL_COLOR_MASK_G (1 << 8) -#define NV10TCL_COLOR_MASK_R (1 << 16) -#define NV10TCL_COLOR_MASK_A (1 << 24) -#define NV10TCL_DEPTH_WRITE_ENABLE 0x0000035c -#define NV10TCL_STENCIL_MASK 0x00000360 -#define NV10TCL_STENCIL_FUNC_FUNC 0x00000364 -#define NV10TCL_STENCIL_FUNC_FUNC_NEVER 0x00000200 -#define NV10TCL_STENCIL_FUNC_FUNC_LESS 0x00000201 -#define NV10TCL_STENCIL_FUNC_FUNC_EQUAL 0x00000202 -#define NV10TCL_STENCIL_FUNC_FUNC_LEQUAL 0x00000203 -#define NV10TCL_STENCIL_FUNC_FUNC_GREATER 0x00000204 -#define NV10TCL_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205 -#define NV10TCL_STENCIL_FUNC_FUNC_GEQUAL 0x00000206 -#define NV10TCL_STENCIL_FUNC_FUNC_ALWAYS 0x00000207 -#define NV10TCL_STENCIL_FUNC_REF 0x00000368 -#define NV10TCL_STENCIL_FUNC_MASK 0x0000036c -#define NV10TCL_STENCIL_OP_FAIL 0x00000370 -#define NV10TCL_STENCIL_OP_FAIL_ZERO 0x00000000 -#define NV10TCL_STENCIL_OP_FAIL_INVERT 0x0000150a -#define NV10TCL_STENCIL_OP_FAIL_KEEP 0x00001e00 -#define NV10TCL_STENCIL_OP_FAIL_REPLACE 0x00001e01 -#define NV10TCL_STENCIL_OP_FAIL_INCR 0x00001e02 -#define NV10TCL_STENCIL_OP_FAIL_DECR 0x00001e03 -#define NV10TCL_STENCIL_OP_FAIL_INCR_WRAP 0x00008507 -#define NV10TCL_STENCIL_OP_FAIL_DECR_WRAP 0x00008508 -#define NV10TCL_STENCIL_OP_ZFAIL 0x00000374 -#define NV10TCL_STENCIL_OP_ZFAIL_ZERO 0x00000000 -#define NV10TCL_STENCIL_OP_ZFAIL_INVERT 0x0000150a -#define NV10TCL_STENCIL_OP_ZFAIL_KEEP 0x00001e00 -#define NV10TCL_STENCIL_OP_ZFAIL_REPLACE 0x00001e01 -#define NV10TCL_STENCIL_OP_ZFAIL_INCR 0x00001e02 -#define NV10TCL_STENCIL_OP_ZFAIL_DECR 0x00001e03 -#define NV10TCL_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507 -#define NV10TCL_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508 -#define NV10TCL_STENCIL_OP_ZPASS 0x00000378 -#define NV10TCL_STENCIL_OP_ZPASS_ZERO 0x00000000 -#define NV10TCL_STENCIL_OP_ZPASS_INVERT 0x0000150a -#define NV10TCL_STENCIL_OP_ZPASS_KEEP 0x00001e00 -#define NV10TCL_STENCIL_OP_ZPASS_REPLACE 0x00001e01 -#define NV10TCL_STENCIL_OP_ZPASS_INCR 0x00001e02 -#define NV10TCL_STENCIL_OP_ZPASS_DECR 0x00001e03 -#define NV10TCL_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507 -#define NV10TCL_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508 -#define NV10TCL_SHADE_MODEL 0x0000037c -#define NV10TCL_SHADE_MODEL_FLAT 0x00001d00 -#define NV10TCL_SHADE_MODEL_SMOOTH 0x00001d01 -#define NV10TCL_LINE_WIDTH 0x00000380 -#define NV10TCL_POLYGON_OFFSET_FACTOR 0x00000384 -#define NV10TCL_POLYGON_OFFSET_UNITS 0x00000388 -#define NV10TCL_POLYGON_MODE_FRONT 0x0000038c -#define NV10TCL_POLYGON_MODE_FRONT_POINT 0x00001b00 -#define NV10TCL_POLYGON_MODE_FRONT_LINE 0x00001b01 -#define NV10TCL_POLYGON_MODE_FRONT_FILL 0x00001b02 -#define NV10TCL_POLYGON_MODE_BACK 0x00000390 -#define NV10TCL_POLYGON_MODE_BACK_POINT 0x00001b00 -#define NV10TCL_POLYGON_MODE_BACK_LINE 0x00001b01 -#define NV10TCL_POLYGON_MODE_BACK_FILL 0x00001b02 -#define NV10TCL_DEPTH_RANGE_NEAR 0x00000394 -#define NV10TCL_DEPTH_RANGE_FAR 0x00000398 -#define NV10TCL_CULL_FACE 0x0000039c -#define NV10TCL_CULL_FACE_FRONT 0x00000404 -#define NV10TCL_CULL_FACE_BACK 0x00000405 -#define NV10TCL_CULL_FACE_FRONT_AND_BACK 0x00000408 -#define NV10TCL_FRONT_FACE 0x000003a0 -#define NV10TCL_FRONT_FACE_CW 0x00000900 -#define NV10TCL_FRONT_FACE_CCW 0x00000901 -#define NV10TCL_NORMALIZE_ENABLE 0x000003a4 -#define NV10TCL_MATERIAL_FACTOR_R 0x000003a8 -#define NV10TCL_MATERIAL_FACTOR_G 0x000003ac -#define NV10TCL_MATERIAL_FACTOR_B 0x000003b0 -#define NV10TCL_MATERIAL_FACTOR_A 0x000003b4 -#define NV10TCL_SEPARATE_SPECULAR_ENABLE 0x000003b8 -#define NV10TCL_ENABLED_LIGHTS 0x000003bc -#define NV10TCL_ENABLED_LIGHTS_0_SHIFT 0 -#define NV10TCL_ENABLED_LIGHTS_0_MASK 0x00000003 -#define NV10TCL_ENABLED_LIGHTS_0_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001 -#define NV10TCL_ENABLED_LIGHTS_0_POSITIONAL 0x00000002 -#define NV10TCL_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003 -#define NV10TCL_ENABLED_LIGHTS_1_SHIFT 2 -#define NV10TCL_ENABLED_LIGHTS_1_MASK 0x0000000c -#define NV10TCL_ENABLED_LIGHTS_1_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004 -#define NV10TCL_ENABLED_LIGHTS_1_POSITIONAL 0x00000008 -#define NV10TCL_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c -#define NV10TCL_ENABLED_LIGHTS_2_SHIFT 4 -#define NV10TCL_ENABLED_LIGHTS_2_MASK 0x00000030 -#define NV10TCL_ENABLED_LIGHTS_2_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010 -#define NV10TCL_ENABLED_LIGHTS_2_POSITIONAL 0x00000020 -#define NV10TCL_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030 -#define NV10TCL_ENABLED_LIGHTS_3_SHIFT 6 -#define NV10TCL_ENABLED_LIGHTS_3_MASK 0x000000c0 -#define NV10TCL_ENABLED_LIGHTS_3_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040 -#define NV10TCL_ENABLED_LIGHTS_3_POSITIONAL 0x00000080 -#define NV10TCL_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0 -#define NV10TCL_ENABLED_LIGHTS_4_SHIFT 8 -#define NV10TCL_ENABLED_LIGHTS_4_MASK 0x00000300 -#define NV10TCL_ENABLED_LIGHTS_4_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100 -#define NV10TCL_ENABLED_LIGHTS_4_POSITIONAL 0x00000200 -#define NV10TCL_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300 -#define NV10TCL_ENABLED_LIGHTS_5_SHIFT 10 -#define NV10TCL_ENABLED_LIGHTS_5_MASK 0x00000c00 -#define NV10TCL_ENABLED_LIGHTS_5_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400 -#define NV10TCL_ENABLED_LIGHTS_5_POSITIONAL 0x00000800 -#define NV10TCL_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00 -#define NV10TCL_ENABLED_LIGHTS_6_SHIFT 12 -#define NV10TCL_ENABLED_LIGHTS_6_MASK 0x00003000 -#define NV10TCL_ENABLED_LIGHTS_6_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000 -#define NV10TCL_ENABLED_LIGHTS_6_POSITIONAL 0x00002000 -#define NV10TCL_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000 -#define NV10TCL_ENABLED_LIGHTS_7_SHIFT 14 -#define NV10TCL_ENABLED_LIGHTS_7_MASK 0x0000c000 -#define NV10TCL_ENABLED_LIGHTS_7_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000 -#define NV10TCL_ENABLED_LIGHTS_7_POSITIONAL 0x00008000 -#define NV10TCL_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000 -#define NV10TCL_TX_GEN_MODE_S(x) (0x000003c0+((x)*16)) -#define NV10TCL_TX_GEN_MODE_S__SIZE 0x00000002 -#define NV10TCL_TX_GEN_MODE_S_FALSE 0x00000000 -#define NV10TCL_TX_GEN_MODE_S_EYE_LINEAR 0x00002400 -#define NV10TCL_TX_GEN_MODE_S_OBJECT_LINEAR 0x00002401 -#define NV10TCL_TX_GEN_MODE_S_SPHERE_MAP 0x00002402 -#define NV10TCL_TX_GEN_MODE_S_NORMAL_MAP 0x00008511 -#define NV10TCL_TX_GEN_MODE_S_REFLECTION_MAP 0x00008512 -#define NV10TCL_TX_GEN_MODE_T(x) (0x000003c4+((x)*16)) -#define NV10TCL_TX_GEN_MODE_T__SIZE 0x00000002 -#define NV10TCL_TX_GEN_MODE_T_FALSE 0x00000000 -#define NV10TCL_TX_GEN_MODE_T_EYE_LINEAR 0x00002400 -#define NV10TCL_TX_GEN_MODE_T_OBJECT_LINEAR 0x00002401 -#define NV10TCL_TX_GEN_MODE_T_SPHERE_MAP 0x00002402 -#define NV10TCL_TX_GEN_MODE_T_NORMAL_MAP 0x00008511 -#define NV10TCL_TX_GEN_MODE_T_REFLECTION_MAP 0x00008512 -#define NV10TCL_TX_GEN_MODE_R(x) (0x000003c8+((x)*16)) -#define NV10TCL_TX_GEN_MODE_R__SIZE 0x00000002 -#define NV10TCL_TX_GEN_MODE_R_FALSE 0x00000000 -#define NV10TCL_TX_GEN_MODE_R_EYE_LINEAR 0x00002400 -#define NV10TCL_TX_GEN_MODE_R_OBJECT_LINEAR 0x00002401 -#define NV10TCL_TX_GEN_MODE_R_SPHERE_MAP 0x00002402 -#define NV10TCL_TX_GEN_MODE_R_NORMAL_MAP 0x00008511 -#define NV10TCL_TX_GEN_MODE_R_REFLECTION_MAP 0x00008512 -#define NV10TCL_TX_GEN_MODE_Q(x) (0x000003cc+((x)*16)) -#define NV10TCL_TX_GEN_MODE_Q__SIZE 0x00000002 -#define NV10TCL_TX_GEN_MODE_Q_FALSE 0x00000000 -#define NV10TCL_TX_GEN_MODE_Q_EYE_LINEAR 0x00002400 -#define NV10TCL_TX_GEN_MODE_Q_OBJECT_LINEAR 0x00002401 -#define NV10TCL_TX_GEN_MODE_Q_SPHERE_MAP 0x00002402 -#define NV10TCL_TX_GEN_MODE_Q_NORMAL_MAP 0x00008511 -#define NV10TCL_TX_GEN_MODE_Q_REFLECTION_MAP 0x00008512 -#define NV10TCL_TX_MATRIX_ENABLE(x) (0x000003e0+((x)*4)) -#define NV10TCL_TX_MATRIX_ENABLE__SIZE 0x00000002 -#define NV10TCL_VIEW_MATRIX_ENABLE 0x000003e8 -#define NV10TCL_VIEW_MATRIX_ENABLE_MODELVIEW1 (1 << 0) -#define NV10TCL_VIEW_MATRIX_ENABLE_MODELVIEW0 (1 << 1) -#define NV10TCL_VIEW_MATRIX_ENABLE_PROJECTION (1 << 2) -#define NV10TCL_POINT_SIZE 0x000003ec -#define NV10TCL_MODELVIEW0_MATRIX(x) (0x00000400+((x)*4)) -#define NV10TCL_MODELVIEW0_MATRIX__SIZE 0x00000010 -#define NV10TCL_MODELVIEW1_MATRIX(x) (0x00000440+((x)*4)) -#define NV10TCL_MODELVIEW1_MATRIX__SIZE 0x00000010 -#define NV10TCL_INVERSE_MODELVIEW0_MATRIX(x) (0x00000480+((x)*4)) -#define NV10TCL_INVERSE_MODELVIEW0_MATRIX__SIZE 0x00000010 -#define NV10TCL_INVERSE_MODELVIEW1_MATRIX(x) (0x000004c0+((x)*4)) -#define NV10TCL_INVERSE_MODELVIEW1_MATRIX__SIZE 0x00000010 -#define NV10TCL_PROJECTION_MATRIX(x) (0x00000500+((x)*4)) -#define NV10TCL_PROJECTION_MATRIX__SIZE 0x00000010 -#define NV10TCL_TX0_MATRIX(x) (0x00000540+((x)*4)) -#define NV10TCL_TX0_MATRIX__SIZE 0x00000010 -#define NV10TCL_TX1_MATRIX(x) (0x00000580+((x)*4)) -#define NV10TCL_TX1_MATRIX__SIZE 0x00000010 -#define NV10TCL_TX_GEN_COEFF_S_A(x) (0x00000600+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_S_A__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_S_B(x) (0x00000604+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_S_B__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_S_C(x) (0x00000608+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_S_C__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_S_D(x) (0x0000060c+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_S_D__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_T_A(x) (0x00000610+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_T_A__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_T_B(x) (0x00000614+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_T_B__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_T_C(x) (0x00000618+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_T_C__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_T_D(x) (0x0000061c+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_T_D__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_R_A(x) (0x00000620+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_R_A__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_R_B(x) (0x00000624+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_R_B__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_R_C(x) (0x00000628+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_R_C__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_R_D(x) (0x0000062c+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_R_D__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_Q_A(x) (0x00000630+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_Q_A__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_Q_B(x) (0x00000634+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_Q_B__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_Q_C(x) (0x00000638+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_Q_C__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_Q_D(x) (0x0000063c+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_Q_D__SIZE 0x00000002 -#define NV10TCL_FOG_EQUATION_CONSTANT 0x00000680 -#define NV10TCL_FOG_EQUATION_LINEAR 0x00000684 -#define NV10TCL_FOG_EQUATION_QUADRATIC 0x00000688 -#define NV10TCL_MATERIAL_SHININESS(x) (0x000006a0+((x)*4)) -#define NV10TCL_MATERIAL_SHININESS__SIZE 0x00000006 -#define NV10TCL_LIGHT_MODEL_AMBIENT_R 0x000006c4 -#define NV10TCL_LIGHT_MODEL_AMBIENT_G 0x000006c8 -#define NV10TCL_LIGHT_MODEL_AMBIENT_B 0x000006cc -#define NV10TCL_VIEWPORT_TRANSLATE_X 0x000006e8 -#define NV10TCL_VIEWPORT_TRANSLATE_Y 0x000006ec -#define NV10TCL_VIEWPORT_TRANSLATE_Z 0x000006f0 -#define NV10TCL_VIEWPORT_TRANSLATE_W 0x000006f4 -#define NV10TCL_POINT_PARAMETER(x) (0x000006f8+((x)*4)) -#define NV10TCL_POINT_PARAMETER__SIZE 0x00000008 -#define NV10TCL_LIGHT_AMBIENT_R(x) (0x00000800+((x)*128)) -#define NV10TCL_LIGHT_AMBIENT_R__SIZE 0x00000008 -#define NV10TCL_LIGHT_AMBIENT_G(x) (0x00000804+((x)*128)) -#define NV10TCL_LIGHT_AMBIENT_G__SIZE 0x00000008 -#define NV10TCL_LIGHT_AMBIENT_B(x) (0x00000808+((x)*128)) -#define NV10TCL_LIGHT_AMBIENT_B__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIFFUSE_R(x) (0x0000080c+((x)*128)) -#define NV10TCL_LIGHT_DIFFUSE_R__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIFFUSE_G(x) (0x00000810+((x)*128)) -#define NV10TCL_LIGHT_DIFFUSE_G__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIFFUSE_B(x) (0x00000814+((x)*128)) -#define NV10TCL_LIGHT_DIFFUSE_B__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPECULAR_R(x) (0x00000818+((x)*128)) -#define NV10TCL_LIGHT_SPECULAR_R__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPECULAR_G(x) (0x0000081c+((x)*128)) -#define NV10TCL_LIGHT_SPECULAR_G__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPECULAR_B(x) (0x00000820+((x)*128)) -#define NV10TCL_LIGHT_SPECULAR_B__SIZE 0x00000008 -#define NV10TCL_LIGHT_HALF_VECTOR_X(x) (0x00000828+((x)*128)) -#define NV10TCL_LIGHT_HALF_VECTOR_X__SIZE 0x00000008 -#define NV10TCL_LIGHT_HALF_VECTOR_Y(x) (0x0000082c+((x)*128)) -#define NV10TCL_LIGHT_HALF_VECTOR_Y__SIZE 0x00000008 -#define NV10TCL_LIGHT_HALF_VECTOR_Z(x) (0x00000830+((x)*128)) -#define NV10TCL_LIGHT_HALF_VECTOR_Z__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIRECTION_X(x) (0x00000834+((x)*128)) -#define NV10TCL_LIGHT_DIRECTION_X__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIRECTION_Y(x) (0x00000838+((x)*128)) -#define NV10TCL_LIGHT_DIRECTION_Y__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIRECTION_Z(x) (0x0000083c+((x)*128)) -#define NV10TCL_LIGHT_DIRECTION_Z__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_CUTOFF_A(x) (0x00000840+((x)*128)) -#define NV10TCL_LIGHT_SPOT_CUTOFF_A__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_CUTOFF_B(x) (0x00000844+((x)*128)) -#define NV10TCL_LIGHT_SPOT_CUTOFF_B__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_CUTOFF_C(x) (0x00000848+((x)*128)) -#define NV10TCL_LIGHT_SPOT_CUTOFF_C__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_DIR_X(x) (0x0000084c+((x)*128)) -#define NV10TCL_LIGHT_SPOT_DIR_X__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_DIR_Y(x) (0x00000850+((x)*128)) -#define NV10TCL_LIGHT_SPOT_DIR_Y__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_DIR_Z(x) (0x00000854+((x)*128)) -#define NV10TCL_LIGHT_SPOT_DIR_Z__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_CUTOFF_D(x) (0x00000858+((x)*128)) -#define NV10TCL_LIGHT_SPOT_CUTOFF_D__SIZE 0x00000008 -#define NV10TCL_LIGHT_POSITION_X(x) (0x0000085c+((x)*128)) -#define NV10TCL_LIGHT_POSITION_X__SIZE 0x00000008 -#define NV10TCL_LIGHT_POSITION_Y(x) (0x00000860+((x)*128)) -#define NV10TCL_LIGHT_POSITION_Y__SIZE 0x00000008 -#define NV10TCL_LIGHT_POSITION_Z(x) (0x00000864+((x)*128)) -#define NV10TCL_LIGHT_POSITION_Z__SIZE 0x00000008 -#define NV10TCL_LIGHT_ATTENUATION_CONSTANT(x) (0x00000868+((x)*128)) -#define NV10TCL_LIGHT_ATTENUATION_CONSTANT__SIZE 0x00000008 -#define NV10TCL_LIGHT_ATTENUATION_LINEAR(x) (0x0000086c+((x)*128)) -#define NV10TCL_LIGHT_ATTENUATION_LINEAR__SIZE 0x00000008 -#define NV10TCL_LIGHT_ATTENUATION_QUADRATIC(x) (0x00000870+((x)*128)) -#define NV10TCL_LIGHT_ATTENUATION_QUADRATIC__SIZE 0x00000008 -#define NV10TCL_VERTEX_POS_3F_X 0x00000c00 -#define NV10TCL_VERTEX_POS_3F_Y 0x00000c04 -#define NV10TCL_VERTEX_POS_3F_Z 0x00000c08 -#define NV10TCL_VERTEX_POS_4F_X 0x00000c18 -#define NV10TCL_VERTEX_POS_4F_Y 0x00000c1c -#define NV10TCL_VERTEX_POS_4F_Z 0x00000c20 -#define NV10TCL_VERTEX_POS_4F_W 0x00000c24 -#define NV10TCL_VERTEX_NOR_3F_X 0x00000c30 -#define NV10TCL_VERTEX_NOR_3F_Y 0x00000c34 -#define NV10TCL_VERTEX_NOR_3F_Z 0x00000c38 -#define NV10TCL_VERTEX_NOR_3I_XY 0x00000c40 -#define NV10TCL_VERTEX_NOR_3I_XY_X_SHIFT 0 -#define NV10TCL_VERTEX_NOR_3I_XY_X_MASK 0x0000ffff -#define NV10TCL_VERTEX_NOR_3I_XY_Y_SHIFT 16 -#define NV10TCL_VERTEX_NOR_3I_XY_Y_MASK 0xffff0000 -#define NV10TCL_VERTEX_NOR_3I_Z 0x00000c44 -#define NV10TCL_VERTEX_NOR_3I_Z_Z_SHIFT 0 -#define NV10TCL_VERTEX_NOR_3I_Z_Z_MASK 0x0000ffff -#define NV10TCL_VERTEX_COL_4F_R 0x00000c50 -#define NV10TCL_VERTEX_COL_4F_G 0x00000c54 -#define NV10TCL_VERTEX_COL_4F_B 0x00000c58 -#define NV10TCL_VERTEX_COL_4F_A 0x00000c5c -#define NV10TCL_VERTEX_COL_3F_R 0x00000c60 -#define NV10TCL_VERTEX_COL_3F_G 0x00000c64 -#define NV10TCL_VERTEX_COL_3F_B 0x00000c68 -#define NV10TCL_VERTEX_COL_4I 0x00000c6c -#define NV10TCL_VERTEX_COL_4I_R_SHIFT 0 -#define NV10TCL_VERTEX_COL_4I_R_MASK 0x000000ff -#define NV10TCL_VERTEX_COL_4I_G_SHIFT 8 -#define NV10TCL_VERTEX_COL_4I_G_MASK 0x0000ff00 -#define NV10TCL_VERTEX_COL_4I_B_SHIFT 16 -#define NV10TCL_VERTEX_COL_4I_B_MASK 0x00ff0000 -#define NV10TCL_VERTEX_COL_4I_A_SHIFT 24 -#define NV10TCL_VERTEX_COL_4I_A_MASK 0xff000000 -#define NV10TCL_VERTEX_COL2_3F_R 0x00000c80 -#define NV10TCL_VERTEX_COL2_3F_G 0x00000c84 -#define NV10TCL_VERTEX_COL2_3F_B 0x00000c88 -#define NV10TCL_VERTEX_COL2_3I 0x00000c8c -#define NV10TCL_VERTEX_COL2_3I_R_SHIFT 0 -#define NV10TCL_VERTEX_COL2_3I_R_MASK 0x000000ff -#define NV10TCL_VERTEX_COL2_3I_G_SHIFT 8 -#define NV10TCL_VERTEX_COL2_3I_G_MASK 0x0000ff00 -#define NV10TCL_VERTEX_COL2_3I_B_SHIFT 16 -#define NV10TCL_VERTEX_COL2_3I_B_MASK 0x00ff0000 -#define NV10TCL_VERTEX_TX0_2F_S 0x00000c90 -#define NV10TCL_VERTEX_TX0_2F_T 0x00000c94 -#define NV10TCL_VERTEX_TX0_2I 0x00000c98 -#define NV10TCL_VERTEX_TX0_2I_S_SHIFT 0 -#define NV10TCL_VERTEX_TX0_2I_S_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX0_2I_T_SHIFT 16 -#define NV10TCL_VERTEX_TX0_2I_T_MASK 0xffff0000 -#define NV10TCL_VERTEX_TX0_4F_S 0x00000ca0 -#define NV10TCL_VERTEX_TX0_4F_T 0x00000ca4 -#define NV10TCL_VERTEX_TX0_4F_R 0x00000ca8 -#define NV10TCL_VERTEX_TX0_4F_Q 0x00000cac -#define NV10TCL_VERTEX_TX0_4I_ST 0x00000cb0 -#define NV10TCL_VERTEX_TX0_4I_ST_S_SHIFT 0 -#define NV10TCL_VERTEX_TX0_4I_ST_S_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX0_4I_ST_T_SHIFT 16 -#define NV10TCL_VERTEX_TX0_4I_ST_T_MASK 0xffff0000 -#define NV10TCL_VERTEX_TX0_4I_RQ 0x00000cb4 -#define NV10TCL_VERTEX_TX0_4I_RQ_R_SHIFT 0 -#define NV10TCL_VERTEX_TX0_4I_RQ_R_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX0_4I_RQ_Q_SHIFT 16 -#define NV10TCL_VERTEX_TX0_4I_RQ_Q_MASK 0xffff0000 -#define NV10TCL_VERTEX_TX1_2F_S 0x00000cb8 -#define NV10TCL_VERTEX_TX1_2F_T 0x00000cbc -#define NV10TCL_VERTEX_TX1_2I 0x00000cc0 -#define NV10TCL_VERTEX_TX1_2I_S_SHIFT 0 -#define NV10TCL_VERTEX_TX1_2I_S_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX1_2I_T_SHIFT 16 -#define NV10TCL_VERTEX_TX1_2I_T_MASK 0xffff0000 -#define NV10TCL_VERTEX_TX1_4F_S 0x00000cc8 -#define NV10TCL_VERTEX_TX1_4F_T 0x00000ccc -#define NV10TCL_VERTEX_TX1_4F_R 0x00000cd0 -#define NV10TCL_VERTEX_TX1_4F_Q 0x00000cd4 -#define NV10TCL_VERTEX_TX1_4I_ST 0x00000cd8 -#define NV10TCL_VERTEX_TX1_4I_ST_S_SHIFT 0 -#define NV10TCL_VERTEX_TX1_4I_ST_S_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX1_4I_ST_T_SHIFT 16 -#define NV10TCL_VERTEX_TX1_4I_ST_T_MASK 0xffff0000 -#define NV10TCL_VERTEX_TX1_4I_RQ 0x00000cdc -#define NV10TCL_VERTEX_TX1_4I_RQ_R_SHIFT 0 -#define NV10TCL_VERTEX_TX1_4I_RQ_R_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX1_4I_RQ_Q_SHIFT 16 -#define NV10TCL_VERTEX_TX1_4I_RQ_Q_MASK 0xffff0000 -#define NV10TCL_VERTEX_FOG_1F 0x00000ce0 -#define NV10TCL_VERTEX_WGH_1F 0x00000ce4 -#define NV10TCL_EDGEFLAG_ENABLE 0x00000cec -#define NV10TCL_VERTEX_ARRAY_VALIDATE 0x00000cf0 -#define NV10TCL_VTXBUF_ADDRESS(x) (0x00000d00+((x)*8)) -#define NV10TCL_VTXBUF_ADDRESS__SIZE 0x00000008 -#define NV10TCL_VTXFMT(x) (0x00000d04+((x)*8)) -#define NV10TCL_VTXFMT__SIZE 0x00000008 -#define NV10TCL_VTXFMT_TYPE_SHIFT 0 -#define NV10TCL_VTXFMT_TYPE_MASK 0x0000000f -#define NV10TCL_VTXFMT_TYPE_BYTE_BGRA 0x00000000 -#define NV10TCL_VTXFMT_TYPE_SHORT 0x00000001 -#define NV10TCL_VTXFMT_TYPE_FLOAT 0x00000002 -#define NV10TCL_VTXFMT_TYPE_BYTE_RGBA 0x00000004 -#define NV10TCL_VTXFMT_FIELDS_SHIFT 4 -#define NV10TCL_VTXFMT_FIELDS_MASK 0x000000f0 -#define NV10TCL_VTXFMT_STRIDE_SHIFT 8 -#define NV10TCL_VTXFMT_STRIDE_MASK 0x0000ff00 -#define NV10TCL_VTXFMT_POS_HOMOGENEOUS (1 << 24) -#define NV10TCL_VERTEX_BEGIN_END 0x00000dfc -#define NV10TCL_VERTEX_BEGIN_END_STOP 0x00000000 -#define NV10TCL_VERTEX_BEGIN_END_POINTS 0x00000001 -#define NV10TCL_VERTEX_BEGIN_END_LINES 0x00000002 -#define NV10TCL_VERTEX_BEGIN_END_LINE_LOOP 0x00000003 -#define NV10TCL_VERTEX_BEGIN_END_LINE_STRIP 0x00000004 -#define NV10TCL_VERTEX_BEGIN_END_TRIANGLES 0x00000005 -#define NV10TCL_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006 -#define NV10TCL_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007 -#define NV10TCL_VERTEX_BEGIN_END_QUADS 0x00000008 -#define NV10TCL_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009 -#define NV10TCL_VERTEX_BEGIN_END_POLYGON 0x0000000a -#define NV10TCL_VB_ELEMENT_U16 0x00000e00 -#define NV10TCL_VB_ELEMENT_U16_I0_SHIFT 0 -#define NV10TCL_VB_ELEMENT_U16_I0_MASK 0x0000ffff -#define NV10TCL_VB_ELEMENT_U16_I1_SHIFT 16 -#define NV10TCL_VB_ELEMENT_U16_I1_MASK 0xffff0000 -#define NV10TCL_VB_ELEMENT_U32 0x00001100 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END 0x000013fc -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_STOP 0x00000000 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_POINTS 0x00000001 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_LINES 0x00000002 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_LINE_LOOP 0x00000003 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_LINE_STRIP 0x00000004 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_TRIANGLES 0x00000005 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_TRIANGLE_STRIP 0x00000006 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_TRIANGLE_FAN 0x00000007 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_QUADS 0x00000008 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_QUAD_STRIP 0x00000009 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_POLYGON 0x0000000a -#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS 0x00001400 -#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_FIRST_SHIFT 0 -#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_FIRST_MASK 0x0000ffff -#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_LAST_SHIFT 24 -#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_LAST_MASK 0xff000000 -#define NV10TCL_VERTEX_ARRAY_DATA 0x00001800 - - -#define NV11TCL 0x00000096 - -#define NV11TCL_COLOR_LOGIC_OP_ENABLE 0x00000d40 -#define NV11TCL_COLOR_LOGIC_OP_OP 0x00000d44 -#define NV11TCL_COLOR_LOGIC_OP_OP_CLEAR 0x00001500 -#define NV11TCL_COLOR_LOGIC_OP_OP_AND 0x00001501 -#define NV11TCL_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502 -#define NV11TCL_COLOR_LOGIC_OP_OP_COPY 0x00001503 -#define NV11TCL_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504 -#define NV11TCL_COLOR_LOGIC_OP_OP_NOOP 0x00001505 -#define NV11TCL_COLOR_LOGIC_OP_OP_XOR 0x00001506 -#define NV11TCL_COLOR_LOGIC_OP_OP_OR 0x00001507 -#define NV11TCL_COLOR_LOGIC_OP_OP_NOR 0x00001508 -#define NV11TCL_COLOR_LOGIC_OP_OP_EQUIV 0x00001509 -#define NV11TCL_COLOR_LOGIC_OP_OP_INVERT 0x0000150a -#define NV11TCL_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b -#define NV11TCL_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c -#define NV11TCL_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d -#define NV11TCL_COLOR_LOGIC_OP_OP_NAND 0x0000150e -#define NV11TCL_COLOR_LOGIC_OP_OP_SET 0x0000150f - - -#define NV17TCL 0x00000099 - -#define NV17TCL_DMA_IN_MEMORY4 0x000001ac -#define NV17TCL_DMA_IN_MEMORY5 0x000001b0 -#define NV17TCL_COLOR_MASK_ENABLE 0x000002bc -#define NV17TCL_ZCLEAR_ENABLE 0x000003f8 -#define NV17TCL_ZCLEAR_VALUE 0x000003fc -#define NV17TCL_ZCLEAR_VALUE_DEPTH_SHIFT 8 -#define NV17TCL_ZCLEAR_VALUE_DEPTH_MASK 0xffffff00 -#define NV17TCL_ZCLEAR_VALUE_SEQUENCE_SHIFT 0 -#define NV17TCL_ZCLEAR_VALUE_SEQUENCE_MASK 0x000000ff -#define NV17TCL_LMA_DEPTH_BUFFER_PITCH 0x00000d5c -#define NV17TCL_LMA_DEPTH_BUFFER_OFFSET 0x00000d60 -#define NV17TCL_LMA_DEPTH_FILL_VALUE 0x00000d68 -#define NV17TCL_LMA_DEPTH_BUFFER_CLEAR 0x00000d6c -#define NV17TCL_LMA_DEPTH_WINDOW_X 0x00001638 -#define NV17TCL_LMA_DEPTH_WINDOW_Y 0x0000163c -#define NV17TCL_LMA_DEPTH_WINDOW_Z 0x00001640 -#define NV17TCL_LMA_DEPTH_WINDOW_W 0x00001644 -#define NV17TCL_LMA_DEPTH_ENABLE 0x00001658 - - -#define NV03_CONTEXT_SURFACES_2D 0x00000058 - -#define NV03_CONTEXT_SURFACES_2D_SYNCHRONIZE 0x00000100 -#define NV03_CONTEXT_SURFACES_2D_DMA_NOTIFY 0x00000180 -#define NV03_CONTEXT_SURFACES_2D_DMA_SOURCE 0x00000184 -#define NV03_CONTEXT_SURFACES_2D_DMA_DESTIN 0x00000188 -#define NV03_CONTEXT_SURFACES_2D_COLOR_FORMAT 0x00000300 -#define NV03_CONTEXT_SURFACES_2D_PITCH 0x00000304 -#define NV03_CONTEXT_SURFACES_2D_PITCH_SOURCE_SHIFT 0 -#define NV03_CONTEXT_SURFACES_2D_PITCH_SOURCE_MASK 0x0000ffff -#define NV03_CONTEXT_SURFACES_2D_PITCH_DESTIN_SHIFT 16 -#define NV03_CONTEXT_SURFACES_2D_PITCH_DESTIN_MASK 0xffff0000 -#define NV03_CONTEXT_SURFACES_2D_OFFSET_SOURCE 0x00000308 -#define NV03_CONTEXT_SURFACES_2D_OFFSET_DESTIN 0x0000030c - - -#define NV03_CONTEXT_SURFACES_3D 0x0000005a - -#define NV03_CONTEXT_SURFACES_3D_SYNCHRONIZE 0x00000100 -#define NV03_CONTEXT_SURFACES_3D_DMA_NOTIFY 0x00000180 -#define NV03_CONTEXT_SURFACES_3D_DMA_SURFACE 0x00000184 -#define NV03_CONTEXT_SURFACES_3D_PITCH 0x00000300 -#define NV03_CONTEXT_SURFACES_3D_OFFSET_COLOR 0x00000304 -#define NV03_CONTEXT_SURFACES_3D_OFFSET_ZETA 0x00000308 - - -#define NV04_INDEXED_IMAGE_FROM_CPU 0x00000060 - -#define NV04_INDEXED_IMAGE_FROM_CPU_NOP 0x00000100 -#define NV04_INDEXED_IMAGE_FROM_CPU_NOTIFY 0x00000104 -#define NV04_INDEXED_IMAGE_FROM_CPU_PATCH 0x0000010c -#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 -#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_LUT 0x00000184 -#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_KEY 0x00000188 -#define NV04_INDEXED_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x0000018c -#define NV04_INDEXED_IMAGE_FROM_CPU_PATTERN 0x00000190 -#define NV04_INDEXED_IMAGE_FROM_CPU_ROP 0x00000194 -#define NV04_INDEXED_IMAGE_FROM_CPU_BETA1 0x00000198 -#define NV04_INDEXED_IMAGE_FROM_CPU_BETA4 0x0000019c -#define NV04_INDEXED_IMAGE_FROM_CPU_SURFACE 0x000001a0 -#define NV04_INDEXED_IMAGE_FROM_CPU_OPERATION 0x000003e4 -#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_FORMAT 0x000003e8 -#define NV04_INDEXED_IMAGE_FROM_CPU_INDEX_FORMAT 0x000003ec -#define NV04_INDEXED_IMAGE_FROM_CPU_LUT_OFFSET 0x000003f0 -#define NV04_INDEXED_IMAGE_FROM_CPU_POINT 0x000003f4 -#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_OUT 0x000003f8 -#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_IN 0x000003fc -#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR(x) (0x00000400+((x)*4)) -#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__SIZE 0x00000700 - - -#define NV05_INDEXED_IMAGE_FROM_CPU 0x00000064 - -#define NV05_INDEXED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000003e0 - - -#define NV03_CHANNEL_PIO 0x0000006a - - - -#define NV03_CHANNEL_DMA 0x0000006b - - - -#define NV04_BETA_SOLID 0x00000072 - -#define NV04_BETA_SOLID_NOP 0x00000100 -#define NV04_BETA_SOLID_NOTIFY 0x00000104 -#define NV04_BETA_SOLID_DMA_NOTIFY 0x00000180 -#define NV04_BETA_SOLID_BETA_OUTPUT 0x00000200 -#define NV04_BETA_SOLID_BETA_FACTOR 0x00000300 - - -#define NV10_TEXTURE_FROM_CPU 0x0000007b - -#define NV10_TEXTURE_FROM_CPU_NOP 0x00000100 -#define NV10_TEXTURE_FROM_CPU_NOTIFY 0x00000104 -#define NV10_TEXTURE_FROM_CPU_WAIT_FOR_IDLE 0x00000108 -#define NV10_TEXTURE_FROM_CPU_PM_TRIGGER 0x00000140 -#define NV10_TEXTURE_FROM_CPU_DMA_NOTIFY 0x00000180 -#define NV10_TEXTURE_FROM_CPU_SURFACE 0x00000184 -#define NV10_TEXTURE_FROM_CPU_COLOR_FORMAT 0x00000300 -#define NV10_TEXTURE_FROM_CPU_POINT 0x00000304 -#define NV10_TEXTURE_FROM_CPU_POINT_X_SHIFT 0 -#define NV10_TEXTURE_FROM_CPU_POINT_X_MASK 0x0000ffff -#define NV10_TEXTURE_FROM_CPU_POINT_Y_SHIFT 16 -#define NV10_TEXTURE_FROM_CPU_POINT_Y_MASK 0xffff0000 -#define NV10_TEXTURE_FROM_CPU_SIZE 0x00000308 -#define NV10_TEXTURE_FROM_CPU_SIZE_W_SHIFT 0 -#define NV10_TEXTURE_FROM_CPU_SIZE_W_MASK 0x0000ffff -#define NV10_TEXTURE_FROM_CPU_SIZE_H_SHIFT 16 -#define NV10_TEXTURE_FROM_CPU_SIZE_H_MASK 0xffff0000 -#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL 0x0000030c -#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X_SHIFT 0 -#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X_MASK 0x0000ffff -#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W_SHIFT 16 -#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W_MASK 0xffff0000 -#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL 0x00000310 -#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y_SHIFT 0 -#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y_MASK 0x0000ffff -#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H_SHIFT 16 -#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H_MASK 0xffff0000 -#define NV10_TEXTURE_FROM_CPU_COLOR(x) (0x00000400+((x)*4)) -#define NV10_TEXTURE_FROM_CPU_COLOR__SIZE 0x00000700 - - -#define NV30_TEXTURE_FROM_CPU 0x0000037b - - - -#define NV40_TEXTURE_FROM_CPU 0x0000307b - - - -#define NV10_VIDEO_DISPLAY 0x0000007c - - - -#define NV20TCL 0x00000097 - -#define NV20TCL_NOP 0x00000100 -#define NV20TCL_NOTIFY 0x00000104 -#define NV20TCL_DMA_NOTIFY 0x00000180 -#define NV20TCL_DMA_TEXTURE0 0x00000184 -#define NV20TCL_DMA_TEXTURE1 0x00000188 -#define NV20TCL_DMA_COLOR 0x00000194 -#define NV20TCL_DMA_ZETA 0x00000198 -#define NV20TCL_DMA_VTXBUF0 0x0000019c -#define NV20TCL_DMA_VTXBUF1 0x000001a0 -#define NV20TCL_DMA_FENCE 0x000001a4 -#define NV20TCL_DMA_QUERY 0x000001a8 -#define NV20TCL_RT_HORIZ 0x00000200 -#define NV20TCL_RT_HORIZ_X_SHIFT 0 -#define NV20TCL_RT_HORIZ_X_MASK 0x0000ffff -#define NV20TCL_RT_HORIZ_W_SHIFT 16 -#define NV20TCL_RT_HORIZ_W_MASK 0xffff0000 -#define NV20TCL_RT_VERT 0x00000204 -#define NV20TCL_RT_VERT_Y_SHIFT 0 -#define NV20TCL_RT_VERT_Y_MASK 0x0000ffff -#define NV20TCL_RT_VERT_H_SHIFT 16 -#define NV20TCL_RT_VERT_H_MASK 0xffff0000 -#define NV20TCL_RT_FORMAT 0x00000208 -#define NV20TCL_RT_FORMAT_TYPE_SHIFT 8 -#define NV20TCL_RT_FORMAT_TYPE_MASK 0x00000f00 -#define NV20TCL_RT_FORMAT_TYPE_LINEAR 0x00000100 -#define NV20TCL_RT_FORMAT_TYPE_SWIZZLED 0x00000200 -#define NV20TCL_RT_FORMAT_COLOR_SHIFT 0 -#define NV20TCL_RT_FORMAT_COLOR_MASK 0x0000001f -#define NV20TCL_RT_FORMAT_COLOR_R5G6B5 0x00000003 -#define NV20TCL_RT_FORMAT_COLOR_X8R8G8B8 0x00000005 -#define NV20TCL_RT_FORMAT_COLOR_A8R8G8B8 0x00000008 -#define NV20TCL_RT_FORMAT_COLOR_B8 0x00000009 -#define NV20TCL_RT_FORMAT_COLOR_UNKNOWN 0x0000000d -#define NV20TCL_RT_FORMAT_COLOR_X8B8G8R8 0x0000000f -#define NV20TCL_RT_FORMAT_COLOR_A8B8G8R8 0x00000010 -#define NV20TCL_RT_PITCH 0x0000020c -#define NV20TCL_RT_PITCH_COLOR_PITCH_SHIFT 0 -#define NV20TCL_RT_PITCH_COLOR_PITCH_MASK 0x0000ffff -#define NV20TCL_RT_PITCH_ZETA_PITCH_SHIFT 16 -#define NV20TCL_RT_PITCH_ZETA_PITCH_MASK 0xffff0000 -#define NV20TCL_COLOR_OFFSET 0x00000210 -#define NV20TCL_ZETA_OFFSET 0x00000214 -#define NV20TCL_RC_IN_ALPHA(x) (0x00000260+((x)*4)) -#define NV20TCL_RC_IN_ALPHA__SIZE 0x00000008 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_SHIFT 0 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_MASK 0x0000000f -#define NV20TCL_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_FOG 0x00000003 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c -#define NV20TCL_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d -#define NV20TCL_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV20TCL_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f -#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a -#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b -#define NV20TCL_RC_IN_ALPHA_D_COMPONENT_USAGE (1 << 4) -#define NV20TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000 -#define NV20TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_SHIFT 5 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_MASK 0x000000e0 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_SHIFT 8 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_MASK 0x00000f00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_FOG 0x00000300 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_IN_ALPHA_C_COMPONENT_USAGE (1 << 12) -#define NV20TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000 -#define NV20TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_SHIFT 13 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_MASK 0x0000e000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_SHIFT 16 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_MASK 0x000f0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_FOG 0x00030000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000 -#define NV20TCL_RC_IN_ALPHA_B_COMPONENT_USAGE (1 << 20) -#define NV20TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000 -#define NV20TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_SHIFT 21 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_MASK 0x00e00000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_SHIFT 24 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_MASK 0x0f000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_FOG 0x03000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000 -#define NV20TCL_RC_IN_ALPHA_A_COMPONENT_USAGE (1 << 28) -#define NV20TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000 -#define NV20TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_SHIFT 29 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_MASK 0xe0000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV20TCL_RC_FINAL0 0x00000288 -#define NV20TCL_RC_FINAL0_D_INPUT_SHIFT 0 -#define NV20TCL_RC_FINAL0_D_INPUT_MASK 0x0000000f -#define NV20TCL_RC_FINAL0_D_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV20TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV20TCL_RC_FINAL0_D_INPUT_FOG 0x00000003 -#define NV20TCL_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV20TCL_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008 -#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009 -#define NV20TCL_RC_FINAL0_D_INPUT_SPARE0 0x0000000c -#define NV20TCL_RC_FINAL0_D_INPUT_SPARE1 0x0000000d -#define NV20TCL_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV20TCL_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f -#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a -#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b -#define NV20TCL_RC_FINAL0_D_COMPONENT_USAGE (1 << 4) -#define NV20TCL_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV20TCL_RC_FINAL0_D_MAPPING_SHIFT 5 -#define NV20TCL_RC_FINAL0_D_MAPPING_MASK 0x000000e0 -#define NV20TCL_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV20TCL_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV20TCL_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV20TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV20TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV20TCL_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV20TCL_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV20TCL_RC_FINAL0_C_INPUT_SHIFT 8 -#define NV20TCL_RC_FINAL0_C_INPUT_MASK 0x00000f00 -#define NV20TCL_RC_FINAL0_C_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_FINAL0_C_INPUT_FOG 0x00000300 -#define NV20TCL_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_FINAL0_C_INPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_FINAL0_C_INPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_FINAL0_C_COMPONENT_USAGE (1 << 12) -#define NV20TCL_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV20TCL_RC_FINAL0_C_MAPPING_SHIFT 13 -#define NV20TCL_RC_FINAL0_C_MAPPING_MASK 0x0000e000 -#define NV20TCL_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV20TCL_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV20TCL_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV20TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV20TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV20TCL_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV20TCL_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV20TCL_RC_FINAL0_B_INPUT_SHIFT 16 -#define NV20TCL_RC_FINAL0_B_INPUT_MASK 0x000f0000 -#define NV20TCL_RC_FINAL0_B_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV20TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV20TCL_RC_FINAL0_B_INPUT_FOG 0x00030000 -#define NV20TCL_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV20TCL_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000 -#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000 -#define NV20TCL_RC_FINAL0_B_INPUT_SPARE0 0x000c0000 -#define NV20TCL_RC_FINAL0_B_INPUT_SPARE1 0x000d0000 -#define NV20TCL_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV20TCL_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000 -#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000 -#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000 -#define NV20TCL_RC_FINAL0_B_COMPONENT_USAGE (1 << 20) -#define NV20TCL_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV20TCL_RC_FINAL0_B_MAPPING_SHIFT 21 -#define NV20TCL_RC_FINAL0_B_MAPPING_MASK 0x00e00000 -#define NV20TCL_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV20TCL_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV20TCL_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV20TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV20TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV20TCL_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV20TCL_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV20TCL_RC_FINAL0_A_INPUT_SHIFT 24 -#define NV20TCL_RC_FINAL0_A_INPUT_MASK 0x0f000000 -#define NV20TCL_RC_FINAL0_A_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV20TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV20TCL_RC_FINAL0_A_INPUT_FOG 0x03000000 -#define NV20TCL_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV20TCL_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000 -#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000 -#define NV20TCL_RC_FINAL0_A_INPUT_SPARE0 0x0c000000 -#define NV20TCL_RC_FINAL0_A_INPUT_SPARE1 0x0d000000 -#define NV20TCL_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV20TCL_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000 -#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000 -#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000 -#define NV20TCL_RC_FINAL0_A_COMPONENT_USAGE (1 << 28) -#define NV20TCL_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_SHIFT 29 -#define NV20TCL_RC_FINAL0_A_MAPPING_MASK 0xe0000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV20TCL_RC_FINAL1 0x0000028c -#define NV20TCL_RC_FINAL1_COLOR_SUM_CLAMP (1 << 7) -#define NV20TCL_RC_FINAL1_G_INPUT_SHIFT 8 -#define NV20TCL_RC_FINAL1_G_INPUT_MASK 0x00000f00 -#define NV20TCL_RC_FINAL1_G_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_FINAL1_G_INPUT_FOG 0x00000300 -#define NV20TCL_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_FINAL1_G_INPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_FINAL1_G_INPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_FINAL1_G_COMPONENT_USAGE (1 << 12) -#define NV20TCL_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV20TCL_RC_FINAL1_G_MAPPING_SHIFT 13 -#define NV20TCL_RC_FINAL1_G_MAPPING_MASK 0x0000e000 -#define NV20TCL_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV20TCL_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV20TCL_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV20TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV20TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV20TCL_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV20TCL_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV20TCL_RC_FINAL1_F_INPUT_SHIFT 16 -#define NV20TCL_RC_FINAL1_F_INPUT_MASK 0x000f0000 -#define NV20TCL_RC_FINAL1_F_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV20TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV20TCL_RC_FINAL1_F_INPUT_FOG 0x00030000 -#define NV20TCL_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000 -#define NV20TCL_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000 -#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000 -#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000 -#define NV20TCL_RC_FINAL1_F_INPUT_SPARE0 0x000c0000 -#define NV20TCL_RC_FINAL1_F_INPUT_SPARE1 0x000d0000 -#define NV20TCL_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV20TCL_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000 -#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000 -#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000 -#define NV20TCL_RC_FINAL1_F_COMPONENT_USAGE (1 << 20) -#define NV20TCL_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV20TCL_RC_FINAL1_F_MAPPING_SHIFT 21 -#define NV20TCL_RC_FINAL1_F_MAPPING_MASK 0x00e00000 -#define NV20TCL_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV20TCL_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV20TCL_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV20TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV20TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV20TCL_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV20TCL_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV20TCL_RC_FINAL1_E_INPUT_SHIFT 24 -#define NV20TCL_RC_FINAL1_E_INPUT_MASK 0x0f000000 -#define NV20TCL_RC_FINAL1_E_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV20TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV20TCL_RC_FINAL1_E_INPUT_FOG 0x03000000 -#define NV20TCL_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000 -#define NV20TCL_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000 -#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000 -#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000 -#define NV20TCL_RC_FINAL1_E_INPUT_SPARE0 0x0c000000 -#define NV20TCL_RC_FINAL1_E_INPUT_SPARE1 0x0d000000 -#define NV20TCL_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV20TCL_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000 -#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000 -#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000 -#define NV20TCL_RC_FINAL1_E_COMPONENT_USAGE (1 << 28) -#define NV20TCL_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_SHIFT 29 -#define NV20TCL_RC_FINAL1_E_MAPPING_MASK 0xe0000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV20TCL_LIGHT_MODEL 0x00000294 -#define NV20TCL_LIGHT_MODEL_VIEWER_SHIFT 16 -#define NV20TCL_LIGHT_MODEL_VIEWER_MASK 0x00030000 -#define NV20TCL_LIGHT_MODEL_VIEWER_NONLOCAL 0x00020000 -#define NV20TCL_LIGHT_MODEL_VIEWER_LOCAL 0x00030000 -#define NV20TCL_LIGHT_MODEL_SEPARATE_SPECULAR (1 << 0) -#define NV20TCL_COLOR_MATERIAL 0x00000298 -#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_SHIFT 0 -#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_MASK 0x00000003 -#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_COL1 0x00000001 -#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_COL2 0x00000002 -#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_SHIFT 2 -#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_MASK 0x0000000c -#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_COL1 0x00000004 -#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_COL2 0x00000008 -#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_SHIFT 4 -#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_MASK 0x00000030 -#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_COL1 0x00000010 -#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_COL2 0x00000020 -#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_SHIFT 6 -#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_MASK 0x000000c0 -#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_COL1 0x00000040 -#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_COL2 0x00000080 -#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_SHIFT 8 -#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_MASK 0x00000300 -#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_COL1 0x00000100 -#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_COL2 0x00000200 -#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_SHIFT 10 -#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_MASK 0x00000c00 -#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_COL1 0x00000400 -#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_COL2 0x00000800 -#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_SHIFT 12 -#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_MASK 0x00003000 -#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_COL1 0x00001000 -#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_COL2 0x00002000 -#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_SHIFT 14 -#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_MASK 0x0000c000 -#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_COL1 0x00004000 -#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_COL2 0x00008000 -#define NV20TCL_FOG_MODE 0x0000029c -#define NV20TCL_FOG_MODE_LINEAR_UNSIGNED 0x00000804 -#define NV20TCL_FOG_MODE_LINEAR_SIGNED 0x00002601 -#define NV20TCL_FOG_MODE_EXP_UNSIGNED 0x00000802 -#define NV20TCL_FOG_MODE_EXP_SIGNED 0x00000800 -#define NV20TCL_FOG_MODE_EXP2_UNSIGNED 0x00000803 -#define NV20TCL_FOG_MODE_EXP2_SIGNED 0x00000801 -#define NV20TCL_FOG_COORD 0x000002a0 -#define NV20TCL_FOG_COORD_DIST_RADIAL 0x00000001 -#define NV20TCL_FOG_COORD_DIST_ORTHOGONAL 0x00000002 -#define NV20TCL_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003 -#define NV20TCL_FOG_COORD_FOG 0x00000006 -#define NV20TCL_FOG_ENABLE 0x000002a4 -#define NV20TCL_FOG_COLOR 0x000002a8 -#define NV20TCL_FOG_COLOR_R_SHIFT 0 -#define NV20TCL_FOG_COLOR_R_MASK 0x000000ff -#define NV20TCL_FOG_COLOR_G_SHIFT 8 -#define NV20TCL_FOG_COLOR_G_MASK 0x0000ff00 -#define NV20TCL_FOG_COLOR_B_SHIFT 16 -#define NV20TCL_FOG_COLOR_B_MASK 0x00ff0000 -#define NV20TCL_FOG_COLOR_A_SHIFT 24 -#define NV20TCL_FOG_COLOR_A_MASK 0xff000000 -#define NV20TCL_VIEWPORT_CLIP_MODE 0x000002b4 -#define NV20TCL_VIEWPORT_CLIP_HORIZ(x) (0x000002c0+((x)*4)) -#define NV20TCL_VIEWPORT_CLIP_HORIZ__SIZE 0x00000008 -#define NV20TCL_VIEWPORT_CLIP_VERT(x) (0x000002e0+((x)*4)) -#define NV20TCL_VIEWPORT_CLIP_VERT__SIZE 0x00000008 -#define NV20TCL_ALPHA_FUNC_ENABLE 0x00000300 -#define NV20TCL_BLEND_FUNC_ENABLE 0x00000304 -#define NV20TCL_CULL_FACE_ENABLE 0x00000308 -#define NV20TCL_DEPTH_TEST_ENABLE 0x0000030c -#define NV20TCL_DITHER_ENABLE 0x00000310 -#define NV20TCL_LIGHTING_ENABLE 0x00000314 -#define NV20TCL_POINT_PARAMETERS_ENABLE 0x00000318 -#define NV20TCL_POINT_SMOOTH_ENABLE 0x0000031c -#define NV20TCL_LINE_SMOOTH_ENABLE 0x00000320 -#define NV20TCL_POLYGON_SMOOTH_ENABLE 0x00000324 -#define NV20TCL_STENCIL_ENABLE 0x0000032c -#define NV20TCL_POLYGON_OFFSET_POINT_ENABLE 0x00000330 -#define NV20TCL_POLYGON_OFFSET_LINE_ENABLE 0x00000334 -#define NV20TCL_POLYGON_OFFSET_FILL_ENABLE 0x00000338 -#define NV20TCL_ALPHA_FUNC_FUNC 0x0000033c -#define NV20TCL_ALPHA_FUNC_FUNC_NEVER 0x00000200 -#define NV20TCL_ALPHA_FUNC_FUNC_LESS 0x00000201 -#define NV20TCL_ALPHA_FUNC_FUNC_EQUAL 0x00000202 -#define NV20TCL_ALPHA_FUNC_FUNC_LEQUAL 0x00000203 -#define NV20TCL_ALPHA_FUNC_FUNC_GREATER 0x00000204 -#define NV20TCL_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205 -#define NV20TCL_ALPHA_FUNC_FUNC_GEQUAL 0x00000206 -#define NV20TCL_ALPHA_FUNC_FUNC_ALWAYS 0x00000207 -#define NV20TCL_ALPHA_FUNC_REF 0x00000340 -#define NV20TCL_BLEND_FUNC_SRC 0x00000344 -#define NV20TCL_BLEND_FUNC_SRC_ZERO 0x00000000 -#define NV20TCL_BLEND_FUNC_SRC_ONE 0x00000001 -#define NV20TCL_BLEND_FUNC_SRC_SRC_COLOR 0x00000300 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301 -#define NV20TCL_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303 -#define NV20TCL_BLEND_FUNC_SRC_DST_ALPHA 0x00000304 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305 -#define NV20TCL_BLEND_FUNC_SRC_DST_COLOR 0x00000306 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307 -#define NV20TCL_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308 -#define NV20TCL_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002 -#define NV20TCL_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004 -#define NV20TCL_BLEND_FUNC_DST 0x00000348 -#define NV20TCL_BLEND_FUNC_DST_ZERO 0x00000000 -#define NV20TCL_BLEND_FUNC_DST_ONE 0x00000001 -#define NV20TCL_BLEND_FUNC_DST_SRC_COLOR 0x00000300 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301 -#define NV20TCL_BLEND_FUNC_DST_SRC_ALPHA 0x00000302 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303 -#define NV20TCL_BLEND_FUNC_DST_DST_ALPHA 0x00000304 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305 -#define NV20TCL_BLEND_FUNC_DST_DST_COLOR 0x00000306 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307 -#define NV20TCL_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308 -#define NV20TCL_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002 -#define NV20TCL_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004 -#define NV20TCL_BLEND_COLOR 0x0000034c -#define NV20TCL_BLEND_COLOR_B_SHIFT 0 -#define NV20TCL_BLEND_COLOR_B_MASK 0x000000ff -#define NV20TCL_BLEND_COLOR_G_SHIFT 8 -#define NV20TCL_BLEND_COLOR_G_MASK 0x0000ff00 -#define NV20TCL_BLEND_COLOR_R_SHIFT 16 -#define NV20TCL_BLEND_COLOR_R_MASK 0x00ff0000 -#define NV20TCL_BLEND_COLOR_A_SHIFT 24 -#define NV20TCL_BLEND_COLOR_A_MASK 0xff000000 -#define NV20TCL_BLEND_EQUATION 0x00000350 -#define NV20TCL_BLEND_EQUATION_FUNC_ADD 0x00008006 -#define NV20TCL_BLEND_EQUATION_MIN 0x00008007 -#define NV20TCL_BLEND_EQUATION_MAX 0x00008008 -#define NV20TCL_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a -#define NV20TCL_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b -#define NV20TCL_DEPTH_FUNC 0x00000354 -#define NV20TCL_DEPTH_FUNC_NEVER 0x00000200 -#define NV20TCL_DEPTH_FUNC_LESS 0x00000201 -#define NV20TCL_DEPTH_FUNC_EQUAL 0x00000202 -#define NV20TCL_DEPTH_FUNC_LEQUAL 0x00000203 -#define NV20TCL_DEPTH_FUNC_GREATER 0x00000204 -#define NV20TCL_DEPTH_FUNC_NOTEQUAL 0x00000205 -#define NV20TCL_DEPTH_FUNC_GEQUAL 0x00000206 -#define NV20TCL_DEPTH_FUNC_ALWAYS 0x00000207 -#define NV20TCL_COLOR_MASK 0x00000358 -#define NV20TCL_COLOR_MASK_B (1 << 0) -#define NV20TCL_COLOR_MASK_G (1 << 8) -#define NV20TCL_COLOR_MASK_R (1 << 16) -#define NV20TCL_COLOR_MASK_A (1 << 24) -#define NV20TCL_DEPTH_WRITE_ENABLE 0x0000035c -#define NV20TCL_STENCIL_MASK 0x00000360 -#define NV20TCL_STENCIL_FUNC_FUNC 0x00000364 -#define NV20TCL_STENCIL_FUNC_FUNC_NEVER 0x00000200 -#define NV20TCL_STENCIL_FUNC_FUNC_LESS 0x00000201 -#define NV20TCL_STENCIL_FUNC_FUNC_EQUAL 0x00000202 -#define NV20TCL_STENCIL_FUNC_FUNC_LEQUAL 0x00000203 -#define NV20TCL_STENCIL_FUNC_FUNC_GREATER 0x00000204 -#define NV20TCL_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205 -#define NV20TCL_STENCIL_FUNC_FUNC_GEQUAL 0x00000206 -#define NV20TCL_STENCIL_FUNC_FUNC_ALWAYS 0x00000207 -#define NV20TCL_STENCIL_FUNC_REF 0x00000368 -#define NV20TCL_STENCIL_FUNC_MASK 0x0000036c -#define NV20TCL_STENCIL_OP_FAIL 0x00000370 -#define NV20TCL_STENCIL_OP_FAIL_ZERO 0x00000000 -#define NV20TCL_STENCIL_OP_FAIL_INVERT 0x0000150a -#define NV20TCL_STENCIL_OP_FAIL_KEEP 0x00001e00 -#define NV20TCL_STENCIL_OP_FAIL_REPLACE 0x00001e01 -#define NV20TCL_STENCIL_OP_FAIL_INCR 0x00001e02 -#define NV20TCL_STENCIL_OP_FAIL_DECR 0x00001e03 -#define NV20TCL_STENCIL_OP_FAIL_INCR_WRAP 0x00008507 -#define NV20TCL_STENCIL_OP_FAIL_DECR_WRAP 0x00008508 -#define NV20TCL_STENCIL_OP_ZFAIL 0x00000374 -#define NV20TCL_STENCIL_OP_ZFAIL_ZERO 0x00000000 -#define NV20TCL_STENCIL_OP_ZFAIL_INVERT 0x0000150a -#define NV20TCL_STENCIL_OP_ZFAIL_KEEP 0x00001e00 -#define NV20TCL_STENCIL_OP_ZFAIL_REPLACE 0x00001e01 -#define NV20TCL_STENCIL_OP_ZFAIL_INCR 0x00001e02 -#define NV20TCL_STENCIL_OP_ZFAIL_DECR 0x00001e03 -#define NV20TCL_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507 -#define NV20TCL_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508 -#define NV20TCL_STENCIL_OP_ZPASS 0x00000378 -#define NV20TCL_STENCIL_OP_ZPASS_ZERO 0x00000000 -#define NV20TCL_STENCIL_OP_ZPASS_INVERT 0x0000150a -#define NV20TCL_STENCIL_OP_ZPASS_KEEP 0x00001e00 -#define NV20TCL_STENCIL_OP_ZPASS_REPLACE 0x00001e01 -#define NV20TCL_STENCIL_OP_ZPASS_INCR 0x00001e02 -#define NV20TCL_STENCIL_OP_ZPASS_DECR 0x00001e03 -#define NV20TCL_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507 -#define NV20TCL_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508 -#define NV20TCL_SHADE_MODEL 0x0000037c -#define NV20TCL_SHADE_MODEL_FLAT 0x00001d00 -#define NV20TCL_SHADE_MODEL_SMOOTH 0x00001d01 -#define NV20TCL_LINE_WIDTH 0x00000380 -#define NV20TCL_POLYGON_OFFSET_FACTOR 0x00000384 -#define NV20TCL_POLYGON_OFFSET_UNITS 0x00000388 -#define NV20TCL_POLYGON_MODE_FRONT 0x0000038c -#define NV20TCL_POLYGON_MODE_FRONT_POINT 0x00001b00 -#define NV20TCL_POLYGON_MODE_FRONT_LINE 0x00001b01 -#define NV20TCL_POLYGON_MODE_FRONT_FILL 0x00001b02 -#define NV20TCL_POLYGON_MODE_BACK 0x00000390 -#define NV20TCL_POLYGON_MODE_BACK_POINT 0x00001b00 -#define NV20TCL_POLYGON_MODE_BACK_LINE 0x00001b01 -#define NV20TCL_POLYGON_MODE_BACK_FILL 0x00001b02 -#define NV20TCL_DEPTH_RANGE_NEAR 0x00000394 -#define NV20TCL_DEPTH_RANGE_FAR 0x00000398 -#define NV20TCL_CULL_FACE 0x0000039c -#define NV20TCL_CULL_FACE_FRONT 0x00000404 -#define NV20TCL_CULL_FACE_BACK 0x00000405 -#define NV20TCL_CULL_FACE_FRONT_AND_BACK 0x00000408 -#define NV20TCL_FRONT_FACE 0x000003a0 -#define NV20TCL_FRONT_FACE_CW 0x00000900 -#define NV20TCL_FRONT_FACE_CCW 0x00000901 -#define NV20TCL_NORMALIZE_ENABLE 0x000003a4 -#define NV20TCL_MATERIAL_FACTOR_FRONT_R 0x000003a8 -#define NV20TCL_MATERIAL_FACTOR_FRONT_G 0x000003ac -#define NV20TCL_MATERIAL_FACTOR_FRONT_B 0x000003b0 -#define NV20TCL_MATERIAL_FACTOR_FRONT_A 0x000003b4 -#define NV20TCL_SEPARATE_SPECULAR_ENABLE 0x000003b8 -#define NV20TCL_ENABLED_LIGHTS 0x000003bc -#define NV20TCL_ENABLED_LIGHTS_0_SHIFT 0 -#define NV20TCL_ENABLED_LIGHTS_0_MASK 0x00000003 -#define NV20TCL_ENABLED_LIGHTS_0_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001 -#define NV20TCL_ENABLED_LIGHTS_0_POSITIONAL 0x00000002 -#define NV20TCL_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003 -#define NV20TCL_ENABLED_LIGHTS_1_SHIFT 2 -#define NV20TCL_ENABLED_LIGHTS_1_MASK 0x0000000c -#define NV20TCL_ENABLED_LIGHTS_1_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004 -#define NV20TCL_ENABLED_LIGHTS_1_POSITIONAL 0x00000008 -#define NV20TCL_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c -#define NV20TCL_ENABLED_LIGHTS_2_SHIFT 4 -#define NV20TCL_ENABLED_LIGHTS_2_MASK 0x00000030 -#define NV20TCL_ENABLED_LIGHTS_2_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010 -#define NV20TCL_ENABLED_LIGHTS_2_POSITIONAL 0x00000020 -#define NV20TCL_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030 -#define NV20TCL_ENABLED_LIGHTS_3_SHIFT 6 -#define NV20TCL_ENABLED_LIGHTS_3_MASK 0x000000c0 -#define NV20TCL_ENABLED_LIGHTS_3_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040 -#define NV20TCL_ENABLED_LIGHTS_3_POSITIONAL 0x00000080 -#define NV20TCL_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0 -#define NV20TCL_ENABLED_LIGHTS_4_SHIFT 8 -#define NV20TCL_ENABLED_LIGHTS_4_MASK 0x00000300 -#define NV20TCL_ENABLED_LIGHTS_4_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100 -#define NV20TCL_ENABLED_LIGHTS_4_POSITIONAL 0x00000200 -#define NV20TCL_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300 -#define NV20TCL_ENABLED_LIGHTS_5_SHIFT 10 -#define NV20TCL_ENABLED_LIGHTS_5_MASK 0x00000c00 -#define NV20TCL_ENABLED_LIGHTS_5_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400 -#define NV20TCL_ENABLED_LIGHTS_5_POSITIONAL 0x00000800 -#define NV20TCL_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00 -#define NV20TCL_ENABLED_LIGHTS_6_SHIFT 12 -#define NV20TCL_ENABLED_LIGHTS_6_MASK 0x00003000 -#define NV20TCL_ENABLED_LIGHTS_6_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000 -#define NV20TCL_ENABLED_LIGHTS_6_POSITIONAL 0x00002000 -#define NV20TCL_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000 -#define NV20TCL_ENABLED_LIGHTS_7_SHIFT 14 -#define NV20TCL_ENABLED_LIGHTS_7_MASK 0x0000c000 -#define NV20TCL_ENABLED_LIGHTS_7_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000 -#define NV20TCL_ENABLED_LIGHTS_7_POSITIONAL 0x00008000 -#define NV20TCL_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000 -#define NV20TCL_TX_GEN_MODE_S(x) (0x000003c0+((x)*16)) -#define NV20TCL_TX_GEN_MODE_S__SIZE 0x00000004 -#define NV20TCL_TX_GEN_MODE_S_FALSE 0x00000000 -#define NV20TCL_TX_GEN_MODE_S_EYE_LINEAR 0x00002400 -#define NV20TCL_TX_GEN_MODE_S_OBJECT_LINEAR 0x00002401 -#define NV20TCL_TX_GEN_MODE_S_SPHERE_MAP 0x00002402 -#define NV20TCL_TX_GEN_MODE_S_NORMAL_MAP 0x00008511 -#define NV20TCL_TX_GEN_MODE_S_REFLECTION_MAP 0x00008512 -#define NV20TCL_TX_GEN_MODE_T(x) (0x000003c4+((x)*16)) -#define NV20TCL_TX_GEN_MODE_T__SIZE 0x00000004 -#define NV20TCL_TX_GEN_MODE_T_FALSE 0x00000000 -#define NV20TCL_TX_GEN_MODE_T_EYE_LINEAR 0x00002400 -#define NV20TCL_TX_GEN_MODE_T_OBJECT_LINEAR 0x00002401 -#define NV20TCL_TX_GEN_MODE_T_SPHERE_MAP 0x00002402 -#define NV20TCL_TX_GEN_MODE_T_NORMAL_MAP 0x00008511 -#define NV20TCL_TX_GEN_MODE_T_REFLECTION_MAP 0x00008512 -#define NV20TCL_TX_GEN_MODE_R(x) (0x000003c8+((x)*16)) -#define NV20TCL_TX_GEN_MODE_R__SIZE 0x00000004 -#define NV20TCL_TX_GEN_MODE_R_FALSE 0x00000000 -#define NV20TCL_TX_GEN_MODE_R_EYE_LINEAR 0x00002400 -#define NV20TCL_TX_GEN_MODE_R_OBJECT_LINEAR 0x00002401 -#define NV20TCL_TX_GEN_MODE_R_SPHERE_MAP 0x00002402 -#define NV20TCL_TX_GEN_MODE_R_NORMAL_MAP 0x00008511 -#define NV20TCL_TX_GEN_MODE_R_REFLECTION_MAP 0x00008512 -#define NV20TCL_TX_GEN_MODE_Q(x) (0x000003cc+((x)*16)) -#define NV20TCL_TX_GEN_MODE_Q__SIZE 0x00000004 -#define NV20TCL_TX_GEN_MODE_Q_FALSE 0x00000000 -#define NV20TCL_TX_GEN_MODE_Q_EYE_LINEAR 0x00002400 -#define NV20TCL_TX_GEN_MODE_Q_OBJECT_LINEAR 0x00002401 -#define NV20TCL_TX_GEN_MODE_Q_SPHERE_MAP 0x00002402 -#define NV20TCL_TX_GEN_MODE_Q_NORMAL_MAP 0x00008511 -#define NV20TCL_TX_GEN_MODE_Q_REFLECTION_MAP 0x00008512 -#define NV20TCL_TX_MATRIX_ENABLE(x) (0x00000420+((x)*4)) -#define NV20TCL_TX_MATRIX_ENABLE__SIZE 0x00000004 -#define NV20TCL_POINT_SIZE 0x0000043c -#define NV20TCL_MODELVIEW0_MATRIX(x) (0x00000480+((x)*4)) -#define NV20TCL_MODELVIEW0_MATRIX__SIZE 0x00000010 -#define NV20TCL_MODELVIEW1_MATRIX(x) (0x000004c0+((x)*4)) -#define NV20TCL_MODELVIEW1_MATRIX__SIZE 0x00000010 -#define NV20TCL_MODELVIEW2_MATRIX(x) (0x00000500+((x)*4)) -#define NV20TCL_MODELVIEW2_MATRIX__SIZE 0x00000010 -#define NV20TCL_MODELVIEW3_MATRIX(x) (0x00000540+((x)*4)) -#define NV20TCL_MODELVIEW3_MATRIX__SIZE 0x00000010 -#define NV20TCL_INVERSE_MODELVIEW0_MATRIX(x) (0x00000580+((x)*4)) -#define NV20TCL_INVERSE_MODELVIEW0_MATRIX__SIZE 0x00000010 -#define NV20TCL_INVERSE_MODELVIEW1_MATRIX(x) (0x000005c0+((x)*4)) -#define NV20TCL_INVERSE_MODELVIEW1_MATRIX__SIZE 0x00000010 -#define NV20TCL_INVERSE_MODELVIEW2_MATRIX(x) (0x00000600+((x)*4)) -#define NV20TCL_INVERSE_MODELVIEW2_MATRIX__SIZE 0x00000010 -#define NV20TCL_INVERSE_MODELVIEW3_MATRIX(x) (0x00000640+((x)*4)) -#define NV20TCL_INVERSE_MODELVIEW3_MATRIX__SIZE 0x00000010 -#define NV20TCL_PROJECTION_MATRIX(x) (0x00000680+((x)*4)) -#define NV20TCL_PROJECTION_MATRIX__SIZE 0x00000010 -#define NV20TCL_TX0_MATRIX(x) (0x000006c0+((x)*4)) -#define NV20TCL_TX0_MATRIX__SIZE 0x00000010 -#define NV20TCL_TX1_MATRIX(x) (0x00000700+((x)*4)) -#define NV20TCL_TX1_MATRIX__SIZE 0x00000010 -#define NV20TCL_TX2_MATRIX(x) (0x00000740+((x)*4)) -#define NV20TCL_TX2_MATRIX__SIZE 0x00000010 -#define NV20TCL_TX3_MATRIX(x) (0x00000780+((x)*4)) -#define NV20TCL_TX3_MATRIX__SIZE 0x00000010 -#define NV20TCL_TX_GEN_COEFF_S_A(x) (0x00000840+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_S_A__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_S_B(x) (0x00000844+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_S_B__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_S_C(x) (0x00000848+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_S_C__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_S_D(x) (0x0000084c+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_S_D__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_T_A(x) (0x00000850+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_T_A__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_T_B(x) (0x00000854+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_T_B__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_T_C(x) (0x00000858+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_T_C__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_T_D(x) (0x0000085c+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_T_D__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_R_A(x) (0x00000860+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_R_A__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_R_B(x) (0x00000864+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_R_B__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_R_C(x) (0x00000868+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_R_C__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_R_D(x) (0x0000086c+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_R_D__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_Q_A(x) (0x00000870+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_Q_A__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_Q_B(x) (0x00000874+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_Q_B__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_Q_C(x) (0x00000878+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_Q_C__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_Q_D(x) (0x0000087c+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_Q_D__SIZE 0x00000004 -#define NV20TCL_FOG_EQUATION_CONSTANT 0x000009c0 -#define NV20TCL_FOG_EQUATION_LINEAR 0x000009c4 -#define NV20TCL_FOG_EQUATION_QUADRATIC 0x000009c8 -#define NV20TCL_FRONT_MATERIAL_SHININESS(x) (0x000009e0+((x)*4)) -#define NV20TCL_FRONT_MATERIAL_SHININESS__SIZE 0x00000006 -#define NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_R 0x00000a10 -#define NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_G 0x00000a14 -#define NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_B 0x00000a18 -#define NV20TCL_VIEWPORT_TRANSLATE_X 0x00000a20 -#define NV20TCL_VIEWPORT_TRANSLATE_Y 0x00000a24 -#define NV20TCL_VIEWPORT_TRANSLATE_Z 0x00000a28 -#define NV20TCL_VIEWPORT_TRANSLATE_W 0x00000a2c -#define NV20TCL_POINT_PARAMETER(x) (0x00000a30+((x)*4)) -#define NV20TCL_POINT_PARAMETER__SIZE 0x00000008 -#define NV20TCL_RC_CONSTANT_COLOR0(x) (0x00000a60+((x)*4)) -#define NV20TCL_RC_CONSTANT_COLOR0__SIZE 0x00000008 -#define NV20TCL_RC_CONSTANT_COLOR0_B_SHIFT 0 -#define NV20TCL_RC_CONSTANT_COLOR0_B_MASK 0x000000ff -#define NV20TCL_RC_CONSTANT_COLOR0_G_SHIFT 8 -#define NV20TCL_RC_CONSTANT_COLOR0_G_MASK 0x0000ff00 -#define NV20TCL_RC_CONSTANT_COLOR0_R_SHIFT 16 -#define NV20TCL_RC_CONSTANT_COLOR0_R_MASK 0x00ff0000 -#define NV20TCL_RC_CONSTANT_COLOR0_A_SHIFT 24 -#define NV20TCL_RC_CONSTANT_COLOR0_A_MASK 0xff000000 -#define NV20TCL_RC_CONSTANT_COLOR1(x) (0x00000a80+((x)*4)) -#define NV20TCL_RC_CONSTANT_COLOR1__SIZE 0x00000008 -#define NV20TCL_RC_CONSTANT_COLOR1_B_SHIFT 0 -#define NV20TCL_RC_CONSTANT_COLOR1_B_MASK 0x000000ff -#define NV20TCL_RC_CONSTANT_COLOR1_G_SHIFT 8 -#define NV20TCL_RC_CONSTANT_COLOR1_G_MASK 0x0000ff00 -#define NV20TCL_RC_CONSTANT_COLOR1_R_SHIFT 16 -#define NV20TCL_RC_CONSTANT_COLOR1_R_MASK 0x00ff0000 -#define NV20TCL_RC_CONSTANT_COLOR1_A_SHIFT 24 -#define NV20TCL_RC_CONSTANT_COLOR1_A_MASK 0xff000000 -#define NV20TCL_RC_OUT_ALPHA(x) (0x00000aa0+((x)*4)) -#define NV20TCL_RC_OUT_ALPHA__SIZE 0x00000008 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SHIFT 0 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_MASK 0x0000000f -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SHIFT 4 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_MASK 0x000000f0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SHIFT 8 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_MASK 0x00000f00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_OUT_ALPHA_CD_DOT_PRODUCT (1 << 12) -#define NV20TCL_RC_OUT_ALPHA_AB_DOT_PRODUCT (1 << 13) -#define NV20TCL_RC_OUT_ALPHA_MUX_SUM (1 << 14) -#define NV20TCL_RC_OUT_ALPHA_BIAS (1 << 15) -#define NV20TCL_RC_OUT_ALPHA_BIAS_NONE 0x00000000 -#define NV20TCL_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 -#define NV20TCL_RC_OUT_ALPHA_SCALE_SHIFT 16 -#define NV20TCL_RC_OUT_ALPHA_SCALE_MASK 0x00030000 -#define NV20TCL_RC_OUT_ALPHA_SCALE_NONE 0x00000000 -#define NV20TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000 -#define NV20TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000 -#define NV20TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000 -#define NV20TCL_RC_IN_RGB(x) (0x00000ac0+((x)*4)) -#define NV20TCL_RC_IN_RGB__SIZE 0x00000008 -#define NV20TCL_RC_IN_RGB_D_INPUT_SHIFT 0 -#define NV20TCL_RC_IN_RGB_D_INPUT_MASK 0x0000000f -#define NV20TCL_RC_IN_RGB_D_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV20TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV20TCL_RC_IN_RGB_D_INPUT_FOG 0x00000003 -#define NV20TCL_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV20TCL_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008 -#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009 -#define NV20TCL_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c -#define NV20TCL_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d -#define NV20TCL_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV20TCL_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f -#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a -#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b -#define NV20TCL_RC_IN_RGB_D_COMPONENT_USAGE (1 << 4) -#define NV20TCL_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV20TCL_RC_IN_RGB_D_MAPPING_SHIFT 5 -#define NV20TCL_RC_IN_RGB_D_MAPPING_MASK 0x000000e0 -#define NV20TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV20TCL_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV20TCL_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV20TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV20TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV20TCL_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV20TCL_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV20TCL_RC_IN_RGB_C_INPUT_SHIFT 8 -#define NV20TCL_RC_IN_RGB_C_INPUT_MASK 0x00000f00 -#define NV20TCL_RC_IN_RGB_C_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_IN_RGB_C_INPUT_FOG 0x00000300 -#define NV20TCL_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_IN_RGB_C_COMPONENT_USAGE (1 << 12) -#define NV20TCL_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_SHIFT 13 -#define NV20TCL_RC_IN_RGB_C_MAPPING_MASK 0x0000e000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV20TCL_RC_IN_RGB_B_INPUT_SHIFT 16 -#define NV20TCL_RC_IN_RGB_B_INPUT_MASK 0x000f0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV20TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV20TCL_RC_IN_RGB_B_INPUT_FOG 0x00030000 -#define NV20TCL_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV20TCL_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000 -#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000 -#define NV20TCL_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000 -#define NV20TCL_RC_IN_RGB_B_COMPONENT_USAGE (1 << 20) -#define NV20TCL_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_SHIFT 21 -#define NV20TCL_RC_IN_RGB_B_MAPPING_MASK 0x00e00000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV20TCL_RC_IN_RGB_A_INPUT_SHIFT 24 -#define NV20TCL_RC_IN_RGB_A_INPUT_MASK 0x0f000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_FOG 0x03000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000 -#define NV20TCL_RC_IN_RGB_A_COMPONENT_USAGE (1 << 28) -#define NV20TCL_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_SHIFT 29 -#define NV20TCL_RC_IN_RGB_A_MAPPING_MASK 0xe0000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV20TCL_VIEWPORT_SCALE_X 0x00000af0 -#define NV20TCL_VIEWPORT_SCALE_Y 0x00000af4 -#define NV20TCL_VIEWPORT_SCALE_Z 0x00000af8 -#define NV20TCL_VIEWPORT_SCALE_W 0x00000afc -#define NV20TCL_VP_UPLOAD_INST(x) (0x00000b00+((x)*4)) -#define NV20TCL_VP_UPLOAD_INST__SIZE 0x00000004 -#define NV20TCL_VP_UPLOAD_CONST(x) (0x00000b80+((x)*4)) -#define NV20TCL_VP_UPLOAD_CONST__SIZE 0x00000004 -#define NV20TCL_LIGHT_BACK_AMBIENT_R(x) (0x00000c00+((x)*64)) -#define NV20TCL_LIGHT_BACK_AMBIENT_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_AMBIENT_G(x) (0x00000c04+((x)*64)) -#define NV20TCL_LIGHT_BACK_AMBIENT_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_AMBIENT_B(x) (0x00000c08+((x)*64)) -#define NV20TCL_LIGHT_BACK_AMBIENT_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_DIFFUSE_R(x) (0x00000c0c+((x)*64)) -#define NV20TCL_LIGHT_BACK_DIFFUSE_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_DIFFUSE_G(x) (0x00000c10+((x)*64)) -#define NV20TCL_LIGHT_BACK_DIFFUSE_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_DIFFUSE_B(x) (0x00000c14+((x)*64)) -#define NV20TCL_LIGHT_BACK_DIFFUSE_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_SPECULAR_R(x) (0x00000c18+((x)*64)) -#define NV20TCL_LIGHT_BACK_SPECULAR_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_SPECULAR_G(x) (0x00000c1c+((x)*64)) -#define NV20TCL_LIGHT_BACK_SPECULAR_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_SPECULAR_B(x) (0x00000c20+((x)*64)) -#define NV20TCL_LIGHT_BACK_SPECULAR_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_AMBIENT_R(x) (0x00001000+((x)*128)) -#define NV20TCL_LIGHT_FRONT_AMBIENT_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_AMBIENT_G(x) (0x00001004+((x)*128)) -#define NV20TCL_LIGHT_FRONT_AMBIENT_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_AMBIENT_B(x) (0x00001008+((x)*128)) -#define NV20TCL_LIGHT_FRONT_AMBIENT_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_DIFFUSE_R(x) (0x0000100c+((x)*128)) -#define NV20TCL_LIGHT_FRONT_DIFFUSE_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_DIFFUSE_G(x) (0x00001010+((x)*128)) -#define NV20TCL_LIGHT_FRONT_DIFFUSE_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_DIFFUSE_B(x) (0x00001014+((x)*128)) -#define NV20TCL_LIGHT_FRONT_DIFFUSE_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_SPECULAR_R(x) (0x00001018+((x)*128)) -#define NV20TCL_LIGHT_FRONT_SPECULAR_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_SPECULAR_G(x) (0x0000101c+((x)*128)) -#define NV20TCL_LIGHT_FRONT_SPECULAR_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_SPECULAR_B(x) (0x00001020+((x)*128)) -#define NV20TCL_LIGHT_FRONT_SPECULAR_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_HALF_VECTOR_X(x) (0x00001028+((x)*128)) -#define NV20TCL_LIGHT_HALF_VECTOR_X__SIZE 0x00000008 -#define NV20TCL_LIGHT_HALF_VECTOR_Y(x) (0x0000102c+((x)*128)) -#define NV20TCL_LIGHT_HALF_VECTOR_Y__SIZE 0x00000008 -#define NV20TCL_LIGHT_HALF_VECTOR_Z(x) (0x00001030+((x)*128)) -#define NV20TCL_LIGHT_HALF_VECTOR_Z__SIZE 0x00000008 -#define NV20TCL_LIGHT_DIRECTION_X(x) (0x00001034+((x)*128)) -#define NV20TCL_LIGHT_DIRECTION_X__SIZE 0x00000008 -#define NV20TCL_LIGHT_DIRECTION_Y(x) (0x00001038+((x)*128)) -#define NV20TCL_LIGHT_DIRECTION_Y__SIZE 0x00000008 -#define NV20TCL_LIGHT_DIRECTION_Z(x) (0x0000103c+((x)*128)) -#define NV20TCL_LIGHT_DIRECTION_Z__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_CUTOFF_A(x) (0x00001040+((x)*128)) -#define NV20TCL_LIGHT_SPOT_CUTOFF_A__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_CUTOFF_B(x) (0x00001044+((x)*128)) -#define NV20TCL_LIGHT_SPOT_CUTOFF_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_CUTOFF_C(x) (0x00001048+((x)*128)) -#define NV20TCL_LIGHT_SPOT_CUTOFF_C__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_DIR_X(x) (0x0000104c+((x)*128)) -#define NV20TCL_LIGHT_SPOT_DIR_X__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_DIR_Y(x) (0x00001050+((x)*128)) -#define NV20TCL_LIGHT_SPOT_DIR_Y__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_DIR_Z(x) (0x00001054+((x)*128)) -#define NV20TCL_LIGHT_SPOT_DIR_Z__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_CUTOFF_D(x) (0x00001058+((x)*128)) -#define NV20TCL_LIGHT_SPOT_CUTOFF_D__SIZE 0x00000008 -#define NV20TCL_LIGHT_POSITION_X(x) (0x0000105c+((x)*128)) -#define NV20TCL_LIGHT_POSITION_X__SIZE 0x00000008 -#define NV20TCL_LIGHT_POSITION_Y(x) (0x00001060+((x)*128)) -#define NV20TCL_LIGHT_POSITION_Y__SIZE 0x00000008 -#define NV20TCL_LIGHT_POSITION_Z(x) (0x00001064+((x)*128)) -#define NV20TCL_LIGHT_POSITION_Z__SIZE 0x00000008 -#define NV20TCL_LIGHT_ATTENUATION_CONSTANT(x) (0x00001068+((x)*128)) -#define NV20TCL_LIGHT_ATTENUATION_CONSTANT__SIZE 0x00000008 -#define NV20TCL_LIGHT_ATTENUATION_LINEAR(x) (0x0000106c+((x)*128)) -#define NV20TCL_LIGHT_ATTENUATION_LINEAR__SIZE 0x00000008 -#define NV20TCL_LIGHT_ATTENUATION_QUADRATIC(x) (0x00001070+((x)*128)) -#define NV20TCL_LIGHT_ATTENUATION_QUADRATIC__SIZE 0x00000008 -#define NV20TCL_POLYGON_STIPPLE_ENABLE 0x0000147c -#define NV20TCL_POLYGON_STIPPLE_PATTERN(x) (0x00001480+((x)*4)) -#define NV20TCL_POLYGON_STIPPLE_PATTERN__SIZE 0x00000020 -#define NV20TCL_VERTEX_POS_3F_X 0x00001500 -#define NV20TCL_VERTEX_POS_3F_Y 0x00001504 -#define NV20TCL_VERTEX_POS_3F_Z 0x00001508 -#define NV20TCL_VERTEX_POS_4F_X 0x00001518 -#define NV20TCL_VERTEX_POS_4F_Y 0x0000151c -#define NV20TCL_VERTEX_POS_4F_Z 0x00001520 -#define NV20TCL_VERTEX_POS_3I_XY 0x00001528 -#define NV20TCL_VERTEX_POS_3I_XY_X_SHIFT 0 -#define NV20TCL_VERTEX_POS_3I_XY_X_MASK 0x0000ffff -#define NV20TCL_VERTEX_POS_3I_XY_Y_SHIFT 16 -#define NV20TCL_VERTEX_POS_3I_XY_Y_MASK 0xffff0000 -#define NV20TCL_VERTEX_POS_3I_Z 0x0000152c -#define NV20TCL_VERTEX_POS_3I_Z_Z_SHIFT 0 -#define NV20TCL_VERTEX_POS_3I_Z_Z_MASK 0x0000ffff -#define NV20TCL_VERTEX_NOR_3F_X 0x00001530 -#define NV20TCL_VERTEX_NOR_3F_Y 0x00001534 -#define NV20TCL_VERTEX_NOR_3F_Z 0x00001538 -#define NV20TCL_VERTEX_NOR_3I_XY 0x00001540 -#define NV20TCL_VERTEX_NOR_3I_XY_X_SHIFT 0 -#define NV20TCL_VERTEX_NOR_3I_XY_X_MASK 0x0000ffff -#define NV20TCL_VERTEX_NOR_3I_XY_Y_SHIFT 16 -#define NV20TCL_VERTEX_NOR_3I_XY_Y_MASK 0xffff0000 -#define NV20TCL_VERTEX_NOR_3I_Z 0x00001544 -#define NV20TCL_VERTEX_NOR_3I_Z_Z_SHIFT 0 -#define NV20TCL_VERTEX_NOR_3I_Z_Z_MASK 0x0000ffff -#define NV20TCL_VERTEX_COL_4F_X 0x00001550 -#define NV20TCL_VERTEX_COL_4F_Y 0x00001554 -#define NV20TCL_VERTEX_COL_4F_Z 0x00001558 -#define NV20TCL_VERTEX_COL_4F_W 0x0000155c -#define NV20TCL_VERTEX_COL_3F_X 0x00001560 -#define NV20TCL_VERTEX_COL_3F_Y 0x00001564 -#define NV20TCL_VERTEX_COL_3F_Z 0x00001568 -#define NV20TCL_VERTEX_COL_4I 0x0000156c -#define NV20TCL_VERTEX_COL_4I_R_SHIFT 0 -#define NV20TCL_VERTEX_COL_4I_R_MASK 0x000000ff -#define NV20TCL_VERTEX_COL_4I_G_SHIFT 8 -#define NV20TCL_VERTEX_COL_4I_G_MASK 0x0000ff00 -#define NV20TCL_VERTEX_COL_4I_B_SHIFT 16 -#define NV20TCL_VERTEX_COL_4I_B_MASK 0x00ff0000 -#define NV20TCL_VERTEX_COL_4I_A_SHIFT 24 -#define NV20TCL_VERTEX_COL_4I_A_MASK 0xff000000 -#define NV20TCL_VERTEX_COL2_3F_X 0x00001580 -#define NV20TCL_VERTEX_COL2_3F_Y 0x00001584 -#define NV20TCL_VERTEX_COL2_3F_Z 0x00001588 -#define NV20TCL_VERTEX_COL2_4I 0x0000158c -#define NV20TCL_VERTEX_COL2_4I_R_SHIFT 0 -#define NV20TCL_VERTEX_COL2_4I_R_MASK 0x000000ff -#define NV20TCL_VERTEX_COL2_4I_G_SHIFT 8 -#define NV20TCL_VERTEX_COL2_4I_G_MASK 0x0000ff00 -#define NV20TCL_VERTEX_COL2_4I_B_SHIFT 16 -#define NV20TCL_VERTEX_COL2_4I_B_MASK 0x00ff0000 -#define NV20TCL_VERTEX_COL2_4I_A_SHIFT 24 -#define NV20TCL_VERTEX_COL2_4I_A_MASK 0xff000000 -#define NV20TCL_VERTEX_TX0_2F_S 0x00001590 -#define NV20TCL_VERTEX_TX0_2F_T 0x00001594 -#define NV20TCL_VERTEX_TX0_2I 0x00001598 -#define NV20TCL_VERTEX_TX0_2I_S_SHIFT 0 -#define NV20TCL_VERTEX_TX0_2I_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX0_2I_T_SHIFT 16 -#define NV20TCL_VERTEX_TX0_2I_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX0_4F_S 0x000015a0 -#define NV20TCL_VERTEX_TX0_4F_T 0x000015a4 -#define NV20TCL_VERTEX_TX0_4F_R 0x000015a8 -#define NV20TCL_VERTEX_TX0_4F_Q 0x000015ac -#define NV20TCL_VERTEX_TX0_4I_ST 0x000015b0 -#define NV20TCL_VERTEX_TX0_4I_ST_S_SHIFT 0 -#define NV20TCL_VERTEX_TX0_4I_ST_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX0_4I_ST_T_SHIFT 16 -#define NV20TCL_VERTEX_TX0_4I_ST_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX0_4I_RQ 0x000015b4 -#define NV20TCL_VERTEX_TX0_4I_RQ_R_SHIFT 0 -#define NV20TCL_VERTEX_TX0_4I_RQ_R_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX0_4I_RQ_Q_SHIFT 16 -#define NV20TCL_VERTEX_TX0_4I_RQ_Q_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX1_2F_S 0x000015b8 -#define NV20TCL_VERTEX_TX1_2F_T 0x000015bc -#define NV20TCL_VERTEX_TX1_2I 0x000015c0 -#define NV20TCL_VERTEX_TX1_2I_S_SHIFT 0 -#define NV20TCL_VERTEX_TX1_2I_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX1_2I_T_SHIFT 16 -#define NV20TCL_VERTEX_TX1_2I_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX1_4F_S 0x000015c8 -#define NV20TCL_VERTEX_TX1_4F_T 0x000015cc -#define NV20TCL_VERTEX_TX1_4F_R 0x000015d0 -#define NV20TCL_VERTEX_TX1_4F_Q 0x000015d4 -#define NV20TCL_VERTEX_TX1_4I_ST 0x000015d8 -#define NV20TCL_VERTEX_TX1_4I_ST_S_SHIFT 0 -#define NV20TCL_VERTEX_TX1_4I_ST_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX1_4I_ST_T_SHIFT 16 -#define NV20TCL_VERTEX_TX1_4I_ST_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX1_4I_RQ 0x000015dc -#define NV20TCL_VERTEX_TX1_4I_RQ_R_SHIFT 0 -#define NV20TCL_VERTEX_TX1_4I_RQ_R_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX1_4I_RQ_Q_SHIFT 16 -#define NV20TCL_VERTEX_TX1_4I_RQ_Q_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX2_2F_S 0x000015e0 -#define NV20TCL_VERTEX_TX2_2F_T 0x000015e4 -#define NV20TCL_VERTEX_TX2_2I 0x000015e8 -#define NV20TCL_VERTEX_TX2_2I_S_SHIFT 0 -#define NV20TCL_VERTEX_TX2_2I_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX2_2I_T_SHIFT 16 -#define NV20TCL_VERTEX_TX2_2I_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX2_4F_S 0x000015f0 -#define NV20TCL_VERTEX_TX2_4F_T 0x000015f4 -#define NV20TCL_VERTEX_TX2_4F_R 0x000015f8 -#define NV20TCL_VERTEX_TX2_4F_Q 0x000015fc -#define NV20TCL_VERTEX_TX2_4I_ST 0x00001600 -#define NV20TCL_VERTEX_TX2_4I_ST_S_SHIFT 0 -#define NV20TCL_VERTEX_TX2_4I_ST_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX2_4I_ST_T_SHIFT 16 -#define NV20TCL_VERTEX_TX2_4I_ST_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX2_4I_RQ 0x00001604 -#define NV20TCL_VERTEX_TX2_4I_RQ_R_SHIFT 0 -#define NV20TCL_VERTEX_TX2_4I_RQ_R_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX2_4I_RQ_Q_SHIFT 16 -#define NV20TCL_VERTEX_TX2_4I_RQ_Q_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX3_2F_S 0x00001608 -#define NV20TCL_VERTEX_TX3_2F_T 0x0000160c -#define NV20TCL_VERTEX_TX3_2I 0x00001610 -#define NV20TCL_VERTEX_TX3_2I_S_SHIFT 0 -#define NV20TCL_VERTEX_TX3_2I_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX3_2I_T_SHIFT 16 -#define NV20TCL_VERTEX_TX3_2I_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX3_4F_S 0x00001620 -#define NV20TCL_VERTEX_TX3_4F_T 0x00001624 -#define NV20TCL_VERTEX_TX3_4F_R 0x00001628 -#define NV20TCL_VERTEX_TX3_4F_Q 0x0000162c -#define NV20TCL_VERTEX_TX3_4I_ST 0x00001630 -#define NV20TCL_VERTEX_TX3_4I_ST_S_SHIFT 0 -#define NV20TCL_VERTEX_TX3_4I_ST_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX3_4I_ST_T_SHIFT 16 -#define NV20TCL_VERTEX_TX3_4I_ST_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX3_4I_RQ 0x00001634 -#define NV20TCL_VERTEX_TX3_4I_RQ_R_SHIFT 0 -#define NV20TCL_VERTEX_TX3_4I_RQ_R_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX3_4I_RQ_Q_SHIFT 16 -#define NV20TCL_VERTEX_TX3_4I_RQ_Q_MASK 0xffff0000 -#define NV20TCL_VERTEX_FOG_1F 0x00001698 -#define NV20TCL_EDGEFLAG_ENABLE 0x000016bc -#define NV20TCL_VTX_CACHE_INVALIDATE 0x00001710 -#define NV20TCL_VTXBUF_ADDRESS(x) (0x00001720+((x)*4)) -#define NV20TCL_VTXBUF_ADDRESS__SIZE 0x00000010 -#define NV20TCL_VTXBUF_ADDRESS_DMA1 (1 << 31) -#define NV20TCL_VTXBUF_ADDRESS_OFFSET_SHIFT 0 -#define NV20TCL_VTXBUF_ADDRESS_OFFSET_MASK 0x0fffffff -#define NV20TCL_VTXFMT(x) (0x00001760+((x)*4)) -#define NV20TCL_VTXFMT__SIZE 0x00000010 -#define NV20TCL_VTXFMT_TYPE_SHIFT 0 -#define NV20TCL_VTXFMT_TYPE_MASK 0x0000000f -#define NV20TCL_VTXFMT_TYPE_FLOAT 0x00000002 -#define NV20TCL_VTXFMT_TYPE_UBYTE 0x00000004 -#define NV20TCL_VTXFMT_TYPE_USHORT 0x00000005 -#define NV20TCL_VTXFMT_SIZE_SHIFT 4 -#define NV20TCL_VTXFMT_SIZE_MASK 0x000000f0 -#define NV20TCL_VTXFMT_STRIDE_SHIFT 8 -#define NV20TCL_VTXFMT_STRIDE_MASK 0x0000ff00 -#define NV20TCL_LIGHT_MODEL_BACK_AMBIENT_R 0x000017a0 -#define NV20TCL_LIGHT_MODEL_BACK_AMBIENT_G 0x000017a4 -#define NV20TCL_LIGHT_MODEL_BACK_AMBIENT_B 0x000017a8 -#define NV20TCL_MATERIAL_FACTOR_BACK_A 0x000017ac -#define NV20TCL_MATERIAL_FACTOR_BACK_R 0x000017b0 -#define NV20TCL_MATERIAL_FACTOR_BACK_G 0x000017b4 -#define NV20TCL_MATERIAL_FACTOR_BACK_B 0x000017b8 -#define NV20TCL_COLOR_LOGIC_OP_ENABLE 0x000017bc -#define NV20TCL_COLOR_LOGIC_OP_OP 0x000017c0 -#define NV20TCL_COLOR_LOGIC_OP_OP_CLEAR 0x00001500 -#define NV20TCL_COLOR_LOGIC_OP_OP_AND 0x00001501 -#define NV20TCL_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502 -#define NV20TCL_COLOR_LOGIC_OP_OP_COPY 0x00001503 -#define NV20TCL_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504 -#define NV20TCL_COLOR_LOGIC_OP_OP_NOOP 0x00001505 -#define NV20TCL_COLOR_LOGIC_OP_OP_XOR 0x00001506 -#define NV20TCL_COLOR_LOGIC_OP_OP_OR 0x00001507 -#define NV20TCL_COLOR_LOGIC_OP_OP_NOR 0x00001508 -#define NV20TCL_COLOR_LOGIC_OP_OP_EQUIV 0x00001509 -#define NV20TCL_COLOR_LOGIC_OP_OP_INVERT 0x0000150a -#define NV20TCL_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b -#define NV20TCL_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c -#define NV20TCL_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d -#define NV20TCL_COLOR_LOGIC_OP_OP_NAND 0x0000150e -#define NV20TCL_COLOR_LOGIC_OP_OP_SET 0x0000150f -#define NV20TCL_LIGHT_MODEL_TWO_SIDE_ENABLE 0x000017c4 -#define NV20TCL_TX_SHADER_CULL_MODE 0x000017f8 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_S (1 << 0) -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_S_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_S_LESS 0x00000001 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_T (1 << 1) -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_T_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_T_LESS 0x00000002 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_R (1 << 2) -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_R_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_R_LESS 0x00000004 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_Q (1 << 3) -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_Q_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_Q_LESS 0x00000008 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_S (1 << 4) -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_S_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_S_LESS 0x00000010 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_T (1 << 5) -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_T_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_T_LESS 0x00000020 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_R (1 << 6) -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_R_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_R_LESS 0x00000040 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_Q (1 << 7) -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_Q_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_Q_LESS 0x00000080 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_S (1 << 8) -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_S_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_S_LESS 0x00000100 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_T (1 << 9) -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_T_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_T_LESS 0x00000200 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_R (1 << 10) -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_R_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_R_LESS 0x00000400 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_Q (1 << 11) -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_Q_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_Q_LESS 0x00000800 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_S (1 << 12) -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_S_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_S_LESS 0x00001000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_T (1 << 13) -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_T_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_T_LESS 0x00002000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_R (1 << 14) -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_R_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_R_LESS 0x00004000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_Q (1 << 15) -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_Q_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_Q_LESS 0x00008000 -#define NV20TCL_VERTEX_BEGIN_END 0x000017fc -#define NV20TCL_VERTEX_BEGIN_END_STOP 0x00000000 -#define NV20TCL_VERTEX_BEGIN_END_POINTS 0x00000001 -#define NV20TCL_VERTEX_BEGIN_END_LINES 0x00000002 -#define NV20TCL_VERTEX_BEGIN_END_LINE_LOOP 0x00000003 -#define NV20TCL_VERTEX_BEGIN_END_LINE_STRIP 0x00000004 -#define NV20TCL_VERTEX_BEGIN_END_TRIANGLES 0x00000005 -#define NV20TCL_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006 -#define NV20TCL_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007 -#define NV20TCL_VERTEX_BEGIN_END_QUADS 0x00000008 -#define NV20TCL_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009 -#define NV20TCL_VERTEX_BEGIN_END_POLYGON 0x0000000a -#define NV20TCL_VB_ELEMENT_U16 0x00001800 -#define NV20TCL_VB_ELEMENT_U16_I0_SHIFT 0 -#define NV20TCL_VB_ELEMENT_U16_I0_MASK 0x0000ffff -#define NV20TCL_VB_ELEMENT_U16_I1_SHIFT 16 -#define NV20TCL_VB_ELEMENT_U16_I1_MASK 0xffff0000 -#define NV20TCL_VB_ELEMENT_U32 0x00001808 -#define NV20TCL_VB_VERTEX_BATCH 0x00001810 -#define NV20TCL_VB_VERTEX_BATCH_OFFSET_SHIFT 0 -#define NV20TCL_VB_VERTEX_BATCH_OFFSET_MASK 0x00ffffff -#define NV20TCL_VB_VERTEX_BATCH_COUNT_SHIFT 24 -#define NV20TCL_VB_VERTEX_BATCH_COUNT_MASK 0xff000000 -#define NV20TCL_VERTEX_DATA 0x00001818 -#define NV20TCL_TX_SHADER_CONST_EYE_X 0x0000181c -#define NV20TCL_TX_SHADER_CONST_EYE_Y 0x00001820 -#define NV20TCL_TX_SHADER_CONST_EYE_Z 0x00001824 -#define NV20TCL_VTX_ATTR_4F_X(x) (0x00001a00+((x)*16)) -#define NV20TCL_VTX_ATTR_4F_X__SIZE 0x00000010 -#define NV20TCL_VTX_ATTR_4F_Y(x) (0x00001a04+((x)*16)) -#define NV20TCL_VTX_ATTR_4F_Y__SIZE 0x00000010 -#define NV20TCL_VTX_ATTR_4F_Z(x) (0x00001a08+((x)*16)) -#define NV20TCL_VTX_ATTR_4F_Z__SIZE 0x00000010 -#define NV20TCL_VTX_ATTR_4F_W(x) (0x00001a0c+((x)*16)) -#define NV20TCL_VTX_ATTR_4F_W__SIZE 0x00000010 -#define NV20TCL_TX_OFFSET(x) (0x00001b00+((x)*64)) -#define NV20TCL_TX_OFFSET__SIZE 0x00000004 -#define NV20TCL_TX_FORMAT(x) (0x00001b04+((x)*64)) -#define NV20TCL_TX_FORMAT__SIZE 0x00000004 -#define NV20TCL_TX_FORMAT_DMA0 (1 << 0) -#define NV20TCL_TX_FORMAT_DMA1 (1 << 1) -#define NV20TCL_TX_FORMAT_CUBIC (1 << 2) -#define NV20TCL_TX_FORMAT_NO_BORDER (1 << 3) -#define NV20TCL_TX_FORMAT_DIMS_SHIFT 4 -#define NV20TCL_TX_FORMAT_DIMS_MASK 0x000000f0 -#define NV20TCL_TX_FORMAT_DIMS_1D 0x00000010 -#define NV20TCL_TX_FORMAT_DIMS_2D 0x00000020 -#define NV20TCL_TX_FORMAT_DIMS_3D 0x00000030 -#define NV20TCL_TX_FORMAT_FORMAT_SHIFT 8 -#define NV20TCL_TX_FORMAT_FORMAT_MASK 0x0000ff00 -#define NV20TCL_TX_FORMAT_FORMAT_L8 0x00000000 -#define NV20TCL_TX_FORMAT_FORMAT_A8 0x00000100 -#define NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5 0x00000200 -#define NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4 0x00000400 -#define NV20TCL_TX_FORMAT_FORMAT_R5G6B5 0x00000500 -#define NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8 0x00000600 -#define NV20TCL_TX_FORMAT_FORMAT_X8R8G8B8 0x00000700 -#define NV20TCL_TX_FORMAT_FORMAT_INDEX8 0x00000b00 -#define NV20TCL_TX_FORMAT_FORMAT_DXT1 0x00000c00 -#define NV20TCL_TX_FORMAT_FORMAT_DXT3 0x00000e00 -#define NV20TCL_TX_FORMAT_FORMAT_DXT5 0x00000f00 -#define NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00001000 -#define NV20TCL_TX_FORMAT_FORMAT_R5G6B5_RECT 0x00001100 -#define NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00001200 -#define NV20TCL_TX_FORMAT_FORMAT_L8_RECT 0x00001300 -#define NV20TCL_TX_FORMAT_FORMAT_DSDT8_RECT 0x00001700 -#define NV20TCL_TX_FORMAT_FORMAT_A8L8 0x00001a00 -#define NV20TCL_TX_FORMAT_FORMAT_A8_RECT 0x00001b00 -#define NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4_RECT 0x00001d00 -#define NV20TCL_TX_FORMAT_FORMAT_R8G8B8_RECT 0x00001e00 -#define NV20TCL_TX_FORMAT_FORMAT_A8L8_RECT 0x00002000 -#define NV20TCL_TX_FORMAT_FORMAT_DSDT8 0x00002800 -#define NV20TCL_TX_FORMAT_FORMAT_HILO16 0x00003300 -#define NV20TCL_TX_FORMAT_FORMAT_HILO16_RECT 0x00003600 -#define NV20TCL_TX_FORMAT_FORMAT_HILO8 0x00004400 -#define NV20TCL_TX_FORMAT_FORMAT_SIGNED_HILO8 0x00004500 -#define NV20TCL_TX_FORMAT_FORMAT_HILO8_RECT 0x00004600 -#define NV20TCL_TX_FORMAT_FORMAT_SIGNED_HILO8_RECT 0x00004700 -#define NV20TCL_TX_FORMAT_FORMAT_A16 0x00003200 -#define NV20TCL_TX_FORMAT_FORMAT_A16_RECT 0x00003500 -#define NV20TCL_TX_FORMAT_FORMAT_FLOAT_RGBA16_NV 0x00004a00 -#define NV20TCL_TX_FORMAT_FORMAT_FLOAT_RGBA32_NV 0x00004b00 -#define NV20TCL_TX_FORMAT_FORMAT_FLOAT_R32_NV 0x00004c00 -#define NV20TCL_TX_FORMAT_MIPMAP (1 << 19) -#define NV20TCL_TX_FORMAT_BASE_SIZE_U_SHIFT 20 -#define NV20TCL_TX_FORMAT_BASE_SIZE_U_MASK 0x00f00000 -#define NV20TCL_TX_FORMAT_BASE_SIZE_V_SHIFT 24 -#define NV20TCL_TX_FORMAT_BASE_SIZE_V_MASK 0x0f000000 -#define NV20TCL_TX_FORMAT_BASE_SIZE_W_SHIFT 28 -#define NV20TCL_TX_FORMAT_BASE_SIZE_W_MASK 0xf0000000 -#define NV20TCL_TX_WRAP(x) (0x00001b08+((x)*64)) -#define NV20TCL_TX_WRAP__SIZE 0x00000004 -#define NV20TCL_TX_WRAP_S_SHIFT 0 -#define NV20TCL_TX_WRAP_S_MASK 0x000000ff -#define NV20TCL_TX_WRAP_S_REPEAT 0x00000001 -#define NV20TCL_TX_WRAP_S_MIRRORED_REPEAT 0x00000002 -#define NV20TCL_TX_WRAP_S_CLAMP_TO_EDGE 0x00000003 -#define NV20TCL_TX_WRAP_S_CLAMP_TO_BORDER 0x00000004 -#define NV20TCL_TX_WRAP_S_CLAMP 0x00000005 -#define NV20TCL_TX_WRAP_T_SHIFT 8 -#define NV20TCL_TX_WRAP_T_MASK 0x00000f00 -#define NV20TCL_TX_WRAP_T_REPEAT 0x00000100 -#define NV20TCL_TX_WRAP_T_MIRRORED_REPEAT 0x00000200 -#define NV20TCL_TX_WRAP_T_CLAMP_TO_EDGE 0x00000300 -#define NV20TCL_TX_WRAP_T_CLAMP_TO_BORDER 0x00000400 -#define NV20TCL_TX_WRAP_T_CLAMP 0x00000500 -#define NV20TCL_TX_WRAP_R_SHIFT 16 -#define NV20TCL_TX_WRAP_R_MASK 0x000f0000 -#define NV20TCL_TX_WRAP_R_REPEAT 0x00010000 -#define NV20TCL_TX_WRAP_R_MIRRORED_REPEAT 0x00020000 -#define NV20TCL_TX_WRAP_R_CLAMP_TO_EDGE 0x00030000 -#define NV20TCL_TX_WRAP_R_CLAMP_TO_BORDER 0x00040000 -#define NV20TCL_TX_WRAP_R_CLAMP 0x00050000 -#define NV20TCL_TX_ENABLE(x) (0x00001b0c+((x)*64)) -#define NV20TCL_TX_ENABLE__SIZE 0x00000004 -#define NV20TCL_TX_ENABLE_ANISO_SHIFT 4 -#define NV20TCL_TX_ENABLE_ANISO_MASK 0x00000030 -#define NV20TCL_TX_ENABLE_ANISO_NONE 0x00000000 -#define NV20TCL_TX_ENABLE_ANISO_2X 0x00000010 -#define NV20TCL_TX_ENABLE_ANISO_4X 0x00000020 -#define NV20TCL_TX_ENABLE_ANISO_8X 0x00000030 -#define NV20TCL_TX_ENABLE_MIPMAP_MAX_LOD_SHIFT 14 -#define NV20TCL_TX_ENABLE_MIPMAP_MAX_LOD_MASK 0x0003c000 -#define NV20TCL_TX_ENABLE_MIPMAP_MIN_LOD_SHIFT 26 -#define NV20TCL_TX_ENABLE_MIPMAP_MIN_LOD_MASK 0x3c000000 -#define NV20TCL_TX_ENABLE_ENABLE (1 << 30) -#define NV20TCL_TX_NPOT_PITCH(x) (0x00001b10+((x)*64)) -#define NV20TCL_TX_NPOT_PITCH__SIZE 0x00000004 -#define NV20TCL_TX_NPOT_PITCH_PITCH_SHIFT 16 -#define NV20TCL_TX_NPOT_PITCH_PITCH_MASK 0xffff0000 -#define NV20TCL_TX_FILTER(x) (0x00001b14+((x)*64)) -#define NV20TCL_TX_FILTER__SIZE 0x00000004 -#define NV20TCL_TX_FILTER_LOD_BIAS_SHIFT 8 -#define NV20TCL_TX_FILTER_LOD_BIAS_MASK 0x00000f00 -#define NV20TCL_TX_FILTER_MINIFY_SHIFT 16 -#define NV20TCL_TX_FILTER_MINIFY_MASK 0x000f0000 -#define NV20TCL_TX_FILTER_MINIFY_NEAREST 0x00010000 -#define NV20TCL_TX_FILTER_MINIFY_LINEAR 0x00020000 -#define NV20TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x00030000 -#define NV20TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x00040000 -#define NV20TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x00050000 -#define NV20TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x00060000 -#define NV20TCL_TX_FILTER_MAGNIFY_SHIFT 24 -#define NV20TCL_TX_FILTER_MAGNIFY_MASK 0x0f000000 -#define NV20TCL_TX_FILTER_MAGNIFY_NEAREST 0x01000000 -#define NV20TCL_TX_FILTER_MAGNIFY_LINEAR 0x02000000 -#define NV20TCL_TX_NPOT_SIZE(x) (0x00001b1c+((x)*64)) -#define NV20TCL_TX_NPOT_SIZE__SIZE 0x00000004 -#define NV20TCL_TX_NPOT_SIZE_H_SHIFT 0 -#define NV20TCL_TX_NPOT_SIZE_H_MASK 0x0000ffff -#define NV20TCL_TX_NPOT_SIZE_W_SHIFT 16 -#define NV20TCL_TX_NPOT_SIZE_W_MASK 0xffff0000 -#define NV20TCL_TX_PALETTE_OFFSET(x) (0x00001b20+((x)*64)) -#define NV20TCL_TX_PALETTE_OFFSET__SIZE 0x00000004 -#define NV20TCL_TX_BORDER_COLOR(x) (0x00001b24+((x)*64)) -#define NV20TCL_TX_BORDER_COLOR__SIZE 0x00000004 -#define NV20TCL_TX_BORDER_COLOR_B_SHIFT 0 -#define NV20TCL_TX_BORDER_COLOR_B_MASK 0x000000ff -#define NV20TCL_TX_BORDER_COLOR_G_SHIFT 8 -#define NV20TCL_TX_BORDER_COLOR_G_MASK 0x0000ff00 -#define NV20TCL_TX_BORDER_COLOR_R_SHIFT 16 -#define NV20TCL_TX_BORDER_COLOR_R_MASK 0x00ff0000 -#define NV20TCL_TX_BORDER_COLOR_A_SHIFT 24 -#define NV20TCL_TX_BORDER_COLOR_A_MASK 0xff000000 -#define NV20TCL_TX_SHADER_OFFSET_MATRIX00(x) (0x00001b28+((x)*64)) -#define NV20TCL_TX_SHADER_OFFSET_MATRIX00__SIZE 0x00000004 -#define NV20TCL_TX_SHADER_OFFSET_MATRIX01(x) (0x00001b2c+((x)*64)) -#define NV20TCL_TX_SHADER_OFFSET_MATRIX01__SIZE 0x00000004 -#define NV20TCL_TX_SHADER_OFFSET_MATRIX11(x) (0x00001b30+((x)*64)) -#define NV20TCL_TX_SHADER_OFFSET_MATRIX11__SIZE 0x00000004 -#define NV20TCL_TX_SHADER_OFFSET_MATRIX10(x) (0x00001b34+((x)*64)) -#define NV20TCL_TX_SHADER_OFFSET_MATRIX10__SIZE 0x00000004 -#define NV20TCL_DEPTH_UNK17D8 0x00001d78 -#define NV20TCL_DEPTH_UNK17D8_CLAMP_SHIFT 4 -#define NV20TCL_DEPTH_UNK17D8_CLAMP_MASK 0x000000f0 -#define NV20TCL_MULTISAMPLE_CONTROL 0x00001d7c -#define NV20TCL_CLEAR_DEPTH_VALUE 0x00001d8c -#define NV20TCL_CLEAR_VALUE 0x00001d90 -#define NV20TCL_CLEAR_BUFFERS 0x00001d94 -#define NV20TCL_CLEAR_BUFFERS_COLOR_A (1 << 7) -#define NV20TCL_CLEAR_BUFFERS_COLOR_B (1 << 6) -#define NV20TCL_CLEAR_BUFFERS_COLOR_G (1 << 5) -#define NV20TCL_CLEAR_BUFFERS_COLOR_R (1 << 4) -#define NV20TCL_CLEAR_BUFFERS_STENCIL (1 << 1) -#define NV20TCL_CLEAR_BUFFERS_DEPTH (1 << 0) -#define NV20TCL_RC_COLOR0 0x00001e20 -#define NV20TCL_RC_COLOR0_B_SHIFT 0 -#define NV20TCL_RC_COLOR0_B_MASK 0x000000ff -#define NV20TCL_RC_COLOR0_G_SHIFT 8 -#define NV20TCL_RC_COLOR0_G_MASK 0x0000ff00 -#define NV20TCL_RC_COLOR0_R_SHIFT 16 -#define NV20TCL_RC_COLOR0_R_MASK 0x00ff0000 -#define NV20TCL_RC_COLOR0_A_SHIFT 24 -#define NV20TCL_RC_COLOR0_A_MASK 0xff000000 -#define NV20TCL_RC_COLOR1 0x00001e24 -#define NV20TCL_RC_COLOR1_B_SHIFT 0 -#define NV20TCL_RC_COLOR1_B_MASK 0x000000ff -#define NV20TCL_RC_COLOR1_G_SHIFT 8 -#define NV20TCL_RC_COLOR1_G_MASK 0x0000ff00 -#define NV20TCL_RC_COLOR1_R_SHIFT 16 -#define NV20TCL_RC_COLOR1_R_MASK 0x00ff0000 -#define NV20TCL_RC_COLOR1_A_SHIFT 24 -#define NV20TCL_RC_COLOR1_A_MASK 0xff000000 -#define NV20TCL_BACK_MATERIAL_SHININESS(x) (0x00001e28+((x)*4)) -#define NV20TCL_BACK_MATERIAL_SHININESS__SIZE 0x00000006 -#define NV20TCL_RC_OUT_RGB(x) (0x00001e40+((x)*4)) -#define NV20TCL_RC_OUT_RGB__SIZE 0x00000008 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SHIFT 0 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_MASK 0x0000000f -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SHIFT 4 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_MASK 0x000000f0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SHIFT 8 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_MASK 0x00000f00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_OUT_RGB_CD_DOT_PRODUCT (1 << 12) -#define NV20TCL_RC_OUT_RGB_AB_DOT_PRODUCT (1 << 13) -#define NV20TCL_RC_OUT_RGB_MUX_SUM (1 << 14) -#define NV20TCL_RC_OUT_RGB_BIAS (1 << 15) -#define NV20TCL_RC_OUT_RGB_BIAS_NONE 0x00000000 -#define NV20TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 -#define NV20TCL_RC_OUT_RGB_SCALE_SHIFT 16 -#define NV20TCL_RC_OUT_RGB_SCALE_MASK 0x00030000 -#define NV20TCL_RC_OUT_RGB_SCALE_NONE 0x00000000 -#define NV20TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000 -#define NV20TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000 -#define NV20TCL_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000 -#define NV20TCL_RC_ENABLE 0x00001e60 -#define NV20TCL_RC_ENABLE_NUM_COMBINERS_SHIFT 0 -#define NV20TCL_RC_ENABLE_NUM_COMBINERS_MASK 0x0000000f -#define NV20TCL_TX_RCOMP 0x00001e6c -#define NV20TCL_TX_RCOMP_NEVER 0x00000000 -#define NV20TCL_TX_RCOMP_GREATER 0x00000001 -#define NV20TCL_TX_RCOMP_EQUAL 0x00000002 -#define NV20TCL_TX_RCOMP_GEQUAL 0x00000003 -#define NV20TCL_TX_RCOMP_LESS 0x00000004 -#define NV20TCL_TX_RCOMP_NOTEQUAL 0x00000005 -#define NV20TCL_TX_RCOMP_LEQUAL 0x00000006 -#define NV20TCL_TX_RCOMP_ALWAYS 0x00000007 -#define NV20TCL_TX_SHADER_OP 0x00001e70 -#define NV20TCL_TX_SHADER_OP_TX0_SHIFT 0 -#define NV20TCL_TX_SHADER_OP_TX0_MASK 0x0000001f -#define NV20TCL_TX_SHADER_OP_TX0_NONE 0x00000000 -#define NV20TCL_TX_SHADER_OP_TX0_TEXTURE_2D 0x00000001 -#define NV20TCL_TX_SHADER_OP_TX0_PASS_THROUGH 0x00000004 -#define NV20TCL_TX_SHADER_OP_TX0_CULL_FRAGMENT 0x00000005 -#define NV20TCL_TX_SHADER_OP_TX0_OFFSET_TEXTURE_2D 0x00000006 -#define NV20TCL_TX_SHADER_OP_TX0_DOT_PRODUCT_TEXTURE_2D 0x00000009 -#define NV20TCL_TX_SHADER_OP_TX0_DOT_PRODUCT_DEPTH_REPLACE 0x0000000a -#define NV20TCL_TX_SHADER_OP_TX0_DEPENDANT_AR_TEXTURE_2D 0x0000000f -#define NV20TCL_TX_SHADER_OP_TX0_DEPENDANT_GB_TEXTURE_2D 0x00000010 -#define NV20TCL_TX_SHADER_OP_TX0_DOT_PRODUCT 0x00000011 -#define NV20TCL_TX_SHADER_OP_TX1_SHIFT 5 -#define NV20TCL_TX_SHADER_OP_TX1_MASK 0x000003e0 -#define NV20TCL_TX_SHADER_OP_TX1_NONE 0x00000000 -#define NV20TCL_TX_SHADER_OP_TX1_TEXTURE_2D 0x00000020 -#define NV20TCL_TX_SHADER_OP_TX1_PASS_THROUGH 0x00000080 -#define NV20TCL_TX_SHADER_OP_TX1_CULL_FRAGMENT 0x000000a0 -#define NV20TCL_TX_SHADER_OP_TX1_OFFSET_TEXTURE_2D 0x000000c0 -#define NV20TCL_TX_SHADER_OP_TX1_DOT_PRODUCT_TEXTURE_2D 0x00000120 -#define NV20TCL_TX_SHADER_OP_TX1_DOT_PRODUCT_DEPTH_REPLACE 0x00000140 -#define NV20TCL_TX_SHADER_OP_TX1_DEPENDANT_AR_TEXTURE_2D 0x000001e0 -#define NV20TCL_TX_SHADER_OP_TX1_DEPENDANT_GB_TEXTURE_2D 0x00000200 -#define NV20TCL_TX_SHADER_OP_TX1_DOT_PRODUCT 0x00000220 -#define NV20TCL_TX_SHADER_OP_TX2_SHIFT 10 -#define NV20TCL_TX_SHADER_OP_TX2_MASK 0x00007c00 -#define NV20TCL_TX_SHADER_OP_TX2_NONE 0x00000000 -#define NV20TCL_TX_SHADER_OP_TX2_TEXTURE_2D 0x00000400 -#define NV20TCL_TX_SHADER_OP_TX2_PASS_THROUGH 0x00001000 -#define NV20TCL_TX_SHADER_OP_TX2_CULL_FRAGMENT 0x00001400 -#define NV20TCL_TX_SHADER_OP_TX2_OFFSET_TEXTURE_2D 0x00001800 -#define NV20TCL_TX_SHADER_OP_TX2_DOT_PRODUCT_TEXTURE_2D 0x00002400 -#define NV20TCL_TX_SHADER_OP_TX2_DOT_PRODUCT_DEPTH_REPLACE 0x00002800 -#define NV20TCL_TX_SHADER_OP_TX2_DEPENDANT_AR_TEXTURE_2D 0x00003c00 -#define NV20TCL_TX_SHADER_OP_TX2_DEPENDANT_GB_TEXTURE_2D 0x00004000 -#define NV20TCL_TX_SHADER_OP_TX2_DOT_PRODUCT 0x00004400 -#define NV20TCL_TX_SHADER_OP_TX3_SHIFT 15 -#define NV20TCL_TX_SHADER_OP_TX3_MASK 0x000f8000 -#define NV20TCL_TX_SHADER_OP_TX3_NONE 0x00000000 -#define NV20TCL_TX_SHADER_OP_TX3_TEXTURE_2D 0x00008000 -#define NV20TCL_TX_SHADER_OP_TX3_PASS_THROUGH 0x00020000 -#define NV20TCL_TX_SHADER_OP_TX3_CULL_FRAGMENT 0x00028000 -#define NV20TCL_TX_SHADER_OP_TX3_OFFSET_TEXTURE_2D 0x00030000 -#define NV20TCL_TX_SHADER_OP_TX3_DOT_PRODUCT_TEXTURE_2D 0x00048000 -#define NV20TCL_TX_SHADER_OP_TX3_DOT_PRODUCT_DEPTH_REPLACE 0x00050000 -#define NV20TCL_TX_SHADER_OP_TX3_DEPENDANT_AR_TEXTURE_2D 0x00078000 -#define NV20TCL_TX_SHADER_OP_TX3_DEPENDANT_GB_TEXTURE_2D 0x00080000 -#define NV20TCL_TX_SHADER_OP_TX3_DOT_PRODUCT 0x00088000 -#define NV20TCL_TX_SHADER_DOTMAPPING 0x00001e74 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX0_SHIFT 0 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX0_MASK 0x0000000f -#define NV20TCL_TX_SHADER_DOTMAPPING_TX1_SHIFT 4 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX1_MASK 0x000000f0 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX2_SHIFT 8 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX2_MASK 0x00000f00 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX3_SHIFT 12 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX3_MASK 0x0000f000 -#define NV20TCL_TX_SHADER_PREVIOUS 0x00001e78 -#define NV20TCL_TX_SHADER_PREVIOUS_TX0_SHIFT 8 -#define NV20TCL_TX_SHADER_PREVIOUS_TX0_MASK 0x00000f00 -#define NV20TCL_TX_SHADER_PREVIOUS_TX1_SHIFT 12 -#define NV20TCL_TX_SHADER_PREVIOUS_TX1_MASK 0x0000f000 -#define NV20TCL_TX_SHADER_PREVIOUS_TX2_SHIFT 16 -#define NV20TCL_TX_SHADER_PREVIOUS_TX2_MASK 0x00030000 -#define NV20TCL_TX_SHADER_PREVIOUS_TX3_SHIFT 20 -#define NV20TCL_TX_SHADER_PREVIOUS_TX3_MASK 0x00300000 -#define NV20TCL_ENGINE 0x00001e94 -#define NV20TCL_ENGINE_VP (1 << 1) -#define NV20TCL_ENGINE_FIXED (1 << 2) -#define NV20TCL_VP_UPLOAD_FROM_ID 0x00001e9c -#define NV20TCL_VP_START_FROM_ID 0x00001ea0 -#define NV20TCL_VP_UPLOAD_CONST_ID 0x00001ea4 - - -#define NV25TCL 0x00000597 - -#define NV25TCL_DMA_IN_MEMORY4 0x0000019c -#define NV25TCL_DMA_IN_MEMORY5 0x000001a0 -#define NV25TCL_DMA_IN_MEMORY8 0x000001ac -#define NV25TCL_DMA_IN_MEMORY9 0x000001b0 - -#endif /* NOUVEAU_REG_H */ - diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index 0ace139b88..53a121420d 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -119,6 +119,7 @@ nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen, nouveau_state_init(ctx); nouveau_bo_state_init(ctx); + nouveau_scratch_init(ctx); _mesa_meta_init(ctx); _swrast_CreateContext(ctx); _vbo_CreateContext(ctx); @@ -163,6 +164,7 @@ nouveau_context_deinit(struct gl_context *ctx) if (nctx->hw.chan) nouveau_channel_free(&nctx->hw.chan); + nouveau_scratch_destroy(ctx); nouveau_bo_state_destroy(ctx); _mesa_free_context_data(ctx); } @@ -312,7 +314,7 @@ nouveau_context_make_current(__DRIcontext *dri_ctx, __DRIdrawable *dri_draw, GLboolean nouveau_context_unbind(__DRIcontext *dri_ctx) { - /* Unset current context and dispath table */ + /* Unset current context and dispatch table */ _mesa_make_current(NULL, NULL, NULL); return GL_TRUE; @@ -325,10 +327,12 @@ nouveau_fallback(struct gl_context *ctx, enum nouveau_fallback mode) nctx->fallback = MAX2(HWTNL, mode); - if (mode < SWRAST) + if (mode < SWRAST) { nouveau_state_emit(ctx); - else + nouveau_bo_state_emit(ctx); + } else { FIRE_RING(context_chan(ctx)); + } } static void @@ -365,5 +369,6 @@ nouveau_validate_framebuffer(struct gl_context *ctx) validate_framebuffer(dri_ctx, dri_read, &dri_ctx->dri2.read_stamp); - nouveau_state_emit(ctx); + if (ctx->NewState & _NEW_BUFFERS) + _mesa_update_state(ctx); } diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.h b/src/mesa/drivers/dri/nouveau/nouveau_context.h index 23a8725672..7ebc676379 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.h @@ -30,6 +30,7 @@ #include "nouveau_screen.h" #include "nouveau_state.h" #include "nouveau_bo_state.h" +#include "nouveau_scratch.h" #include "nouveau_render.h" #include "main/bitset.h" @@ -67,6 +68,7 @@ struct nouveau_context { struct nouveau_hw_state hw; struct nouveau_bo_state bo; struct nouveau_render_state render; + struct nouveau_scratch_state scratch; struct { GLboolean clear_blocked; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_render.h b/src/mesa/drivers/dri/nouveau/nouveau_render.h index 81c6119fcc..0539c37758 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_render.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_render.h @@ -28,46 +28,22 @@ #define __NOUVEAU_RENDER_H__ #include "vbo/vbo_context.h" - -struct nouveau_array_state; +#include "nouveau_array.h" typedef void (*dispatch_t)(struct gl_context *, unsigned int, int, unsigned int); -typedef unsigned (*extract_u_t)(struct nouveau_array_state *, int, int); -typedef float (*extract_f_t)(struct nouveau_array_state *, int, int); +typedef void (*emit_t)(struct gl_context *, struct nouveau_array *, const void *); struct nouveau_attr_info { int vbo_index; int imm_method; int imm_fields; - void (*emit)(struct gl_context *, struct nouveau_array_state *, const void *); -}; - -struct nouveau_array_state { - int attr; - int stride, fields, type; - - struct nouveau_bo *bo; - unsigned offset; - const void *buf; - - extract_u_t extract_u; - extract_f_t extract_f; -}; - -#define RENDER_SCRATCH_COUNT 2 -#define RENDER_SCRATCH_SIZE 2*1024*1024 - -struct nouveau_scratch_state { - struct nouveau_bo *bo[RENDER_SCRATCH_COUNT]; - - int index; - int offset; - void *buf; + emit_t emit; }; struct nouveau_swtnl_state { struct nouveau_bo *vbo; + unsigned offset; void *buf; unsigned vertex_count; GLenum primitive; @@ -79,8 +55,8 @@ struct nouveau_render_state { IMM } mode; - struct nouveau_array_state ib; - struct nouveau_array_state attrs[VERT_ATTRIB_MAX]; + struct nouveau_array ib; + struct nouveau_array attrs[VERT_ATTRIB_MAX]; /* Maps a HW VBO index or IMM emission order to an index in * the attrs array above (or -1 if unused). */ @@ -89,10 +65,16 @@ struct nouveau_render_state { int attr_count; int vertex_size; - struct nouveau_scratch_state scratch; struct nouveau_swtnl_state swtnl; }; #define to_render_state(ctx) (&to_nouveau_context(ctx)->render) +#define FOR_EACH_ATTR(render, i, attr) \ + for (i = 0; attr = (render)->map[i], i < NUM_VERTEX_ATTRS; i++) + +#define FOR_EACH_BOUND_ATTR(render, i, attr) \ + for (i = 0; attr = (render)->map[i], i < render->attr_count; i++) \ + if (attr >= 0) + #endif diff --git a/src/mesa/drivers/dri/nouveau/nouveau_render_t.c b/src/mesa/drivers/dri/nouveau/nouveau_render_t.c index dd38c14aa7..e0cf727d11 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_render_t.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_render_t.c @@ -100,8 +100,8 @@ /* * Select an appropriate dispatch function for the given index buffer. */ -static void -get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch) +static dispatch_t +get_array_dispatch(struct nouveau_array *a) { if (!a->fields) { auto void f(struct gl_context *, unsigned int, int, unsigned int); @@ -114,7 +114,7 @@ get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch) EMIT_VBO(L, ctx, start, delta, n); }; - *dispatch = f; + return f; } else if (a->type == GL_UNSIGNED_INT) { auto void f(struct gl_context *, unsigned int, int, unsigned int); @@ -127,7 +127,7 @@ get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch) EMIT_VBO(I32, ctx, start, delta, n); }; - *dispatch = f; + return f; } else { auto void f(struct gl_context *, unsigned int, int, unsigned int); @@ -141,115 +141,11 @@ get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch) EMIT_VBO(I16, ctx, start, delta, n & ~1); }; - *dispatch = f; + return f; } } /* - * Select appropriate element extraction functions for the given - * array. - */ -static void -get_array_extract(struct nouveau_array_state *a, - extract_u_t *extract_u, extract_f_t *extract_f) -{ -#define EXTRACT(in_t, out_t, k) \ - ({ \ - auto out_t f(struct nouveau_array_state *, int, int); \ - out_t f(struct nouveau_array_state *a, int i, int j) { \ - in_t x = ((in_t *)(a->buf + i * a->stride))[j]; \ - \ - return (out_t)x / (k); \ - }; \ - f; \ - }); - - switch (a->type) { - case GL_BYTE: - *extract_u = EXTRACT(char, unsigned, 1); - *extract_f = EXTRACT(char, float, SCHAR_MAX); - break; - case GL_UNSIGNED_BYTE: - *extract_u = EXTRACT(unsigned char, unsigned, 1); - *extract_f = EXTRACT(unsigned char, float, UCHAR_MAX); - break; - case GL_SHORT: - *extract_u = EXTRACT(short, unsigned, 1); - *extract_f = EXTRACT(short, float, SHRT_MAX); - break; - case GL_UNSIGNED_SHORT: - *extract_u = EXTRACT(unsigned short, unsigned, 1); - *extract_f = EXTRACT(unsigned short, float, USHRT_MAX); - break; - case GL_INT: - *extract_u = EXTRACT(int, unsigned, 1); - *extract_f = EXTRACT(int, float, INT_MAX); - break; - case GL_UNSIGNED_INT: - *extract_u = EXTRACT(unsigned int, unsigned, 1); - *extract_f = EXTRACT(unsigned int, float, UINT_MAX); - break; - case GL_FLOAT: - *extract_u = EXTRACT(float, unsigned, 1.0 / UINT_MAX); - *extract_f = EXTRACT(float, float, 1); - break; - - default: - assert(0); - } -} - -/* - * Returns a pointer to a chunk of <size> bytes long GART memory. <bo> - * will be updated with the buffer object the memory is located in. - * - * If <offset> is provided, it will be updated with the offset within - * <bo> of the allocated memory. Otherwise the returned memory will - * always be located right at the beginning of <bo>. - */ -static inline void * -get_scratch_vbo(struct gl_context *ctx, unsigned size, struct nouveau_bo **bo, - unsigned *offset) -{ - struct nouveau_scratch_state *scratch = &to_render_state(ctx)->scratch; - void *buf; - - if (scratch->buf && offset && - size <= RENDER_SCRATCH_SIZE - scratch->offset) { - nouveau_bo_ref(scratch->bo[scratch->index], bo); - - buf = scratch->buf + scratch->offset; - *offset = scratch->offset; - scratch->offset += size; - - } else if (size <= RENDER_SCRATCH_SIZE) { - scratch->index = (scratch->index + 1) % RENDER_SCRATCH_COUNT; - nouveau_bo_ref(scratch->bo[scratch->index], bo); - - nouveau_bo_map(*bo, NOUVEAU_BO_WR); - buf = scratch->buf = (*bo)->map; - nouveau_bo_unmap(*bo); - - if (offset) - *offset = 0; - scratch->offset = size; - - } else { - nouveau_bo_new(context_dev(ctx), - NOUVEAU_BO_MAP | NOUVEAU_BO_GART, 0, size, bo); - - nouveau_bo_map(*bo, NOUVEAU_BO_WR); - buf = (*bo)->map; - nouveau_bo_unmap(*bo); - - if (offset) - *offset = 0; - } - - return buf; -} - -/* * Returns how many vertices you can draw using <n> pushbuf dwords. */ static inline unsigned @@ -277,6 +173,11 @@ get_max_vertices(struct gl_context *ctx, const struct _mesa_index_buffer *ib, case GL_UNSIGNED_BYTE: max_out = MAX_OUT_I16; break; + + default: + assert(0); + max_out = 0; + break; } } else { max_out = MAX_OUT_L; @@ -286,76 +187,26 @@ get_max_vertices(struct gl_context *ctx, const struct _mesa_index_buffer *ib, } } -#include "nouveau_vbo_t.c" -#include "nouveau_swtnl_t.c" - static void -TAG(emit_material)(struct gl_context *ctx, struct nouveau_array_state *a, +TAG(emit_material)(struct gl_context *ctx, struct nouveau_array *a, const void *v) { - const int attr = a->attr - VERT_ATTRIB_GENERIC0; - const int state = ((int []) { - NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT, - NOUVEAU_STATE_MATERIAL_BACK_AMBIENT, - NOUVEAU_STATE_MATERIAL_FRONT_DIFFUSE, - NOUVEAU_STATE_MATERIAL_BACK_DIFFUSE, - NOUVEAU_STATE_MATERIAL_FRONT_SPECULAR, - NOUVEAU_STATE_MATERIAL_BACK_SPECULAR, - NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT, - NOUVEAU_STATE_MATERIAL_BACK_AMBIENT, - NOUVEAU_STATE_MATERIAL_FRONT_SHININESS, - NOUVEAU_STATE_MATERIAL_BACK_SHININESS - }) [attr]; + int attr = a->attr - VERT_ATTRIB_GENERIC0; + int state = ((int []) { + NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT, + NOUVEAU_STATE_MATERIAL_BACK_AMBIENT, + NOUVEAU_STATE_MATERIAL_FRONT_DIFFUSE, + NOUVEAU_STATE_MATERIAL_BACK_DIFFUSE, + NOUVEAU_STATE_MATERIAL_FRONT_SPECULAR, + NOUVEAU_STATE_MATERIAL_BACK_SPECULAR, + NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT, + NOUVEAU_STATE_MATERIAL_BACK_AMBIENT, + NOUVEAU_STATE_MATERIAL_FRONT_SHININESS, + NOUVEAU_STATE_MATERIAL_BACK_SHININESS + }) [attr]; COPY_4V(ctx->Light.Material.Attrib[attr], (float *)v); _mesa_update_material(ctx, 1 << attr); context_drv(ctx)->emit[state](ctx, state); } - -static void -TAG(render_prims)(struct gl_context *ctx, const struct gl_client_array **arrays, - const struct _mesa_prim *prims, GLuint nr_prims, - const struct _mesa_index_buffer *ib, - GLboolean index_bounds_valid, - GLuint min_index, GLuint max_index) -{ - struct nouveau_context *nctx = to_nouveau_context(ctx); - - nouveau_validate_framebuffer(ctx); - - if (nctx->fallback == HWTNL) - TAG(vbo_render_prims)(ctx, arrays, prims, nr_prims, ib, - index_bounds_valid, min_index, max_index); - - if (nctx->fallback == SWTNL) - _tnl_vbo_draw_prims(ctx, arrays, prims, nr_prims, ib, - index_bounds_valid, min_index, max_index); -} - -void -TAG(render_init)(struct gl_context *ctx) -{ - struct nouveau_render_state *render = to_render_state(ctx); - struct nouveau_scratch_state *scratch = &render->scratch; - int ret, i; - - for (i = 0; i < RENDER_SCRATCH_COUNT; i++) { - ret = nouveau_bo_new(context_dev(ctx), - NOUVEAU_BO_MAP | NOUVEAU_BO_GART, - 0, RENDER_SCRATCH_SIZE, &scratch->bo[i]); - assert(!ret); - } - - for (i = 0; i < VERT_ATTRIB_MAX; i++) - render->map[i] = -1; - - TAG(swtnl_init)(ctx); - vbo_set_draw_func(ctx, TAG(render_prims)); -} - -void -TAG(render_destroy)(struct gl_context *ctx) -{ - TAG(swtnl_destroy)(ctx); -} diff --git a/src/mesa/drivers/dri/nouveau/nouveau_scratch.c b/src/mesa/drivers/dri/nouveau/nouveau_scratch.c new file mode 100644 index 0000000000..ddda67b2f1 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nouveau_scratch.c @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2009-2010 Francisco Jerez. + * 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 (including the + * next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. + * + */ + +#include "nouveau_driver.h" +#include "nouveau_context.h" + +/* + * Returns a pointer to a chunk of 'size' bytes long GART memory. 'bo' + * and 'offset' will point to the returned memory. + */ +void * +nouveau_get_scratch(struct gl_context *ctx, unsigned size, + struct nouveau_bo **bo, unsigned *offset) +{ + struct nouveau_scratch_state *scratch = + &to_nouveau_context(ctx)->scratch; + void *buf; + + if (scratch->buf && size <= NOUVEAU_SCRATCH_SIZE - scratch->offset) { + nouveau_bo_ref(scratch->bo[scratch->index], bo); + + buf = scratch->buf + scratch->offset; + *offset = scratch->offset; + scratch->offset += size; + + } else if (size <= NOUVEAU_SCRATCH_SIZE) { + scratch->index = (scratch->index + 1) % NOUVEAU_SCRATCH_COUNT; + nouveau_bo_ref(scratch->bo[scratch->index], bo); + + nouveau_bo_map(*bo, NOUVEAU_BO_WR); + buf = scratch->buf = (*bo)->map; + nouveau_bo_unmap(*bo); + + *offset = 0; + scratch->offset = size; + + } else { + nouveau_bo_new(context_dev(ctx), + NOUVEAU_BO_MAP | NOUVEAU_BO_GART, 0, size, bo); + + nouveau_bo_map(*bo, NOUVEAU_BO_WR); + buf = (*bo)->map; + nouveau_bo_unmap(*bo); + + *offset = 0; + } + + return buf; +} + +void +nouveau_scratch_init(struct gl_context *ctx) +{ + struct nouveau_scratch_state *scratch = + &to_nouveau_context(ctx)->scratch; + int ret, i; + + for (i = 0; i < NOUVEAU_SCRATCH_COUNT; i++) { + ret = nouveau_bo_new(context_dev(ctx), + NOUVEAU_BO_MAP | NOUVEAU_BO_GART, + 0, NOUVEAU_SCRATCH_SIZE, &scratch->bo[i]); + assert(!ret); + } +} + +void +nouveau_scratch_destroy(struct gl_context *ctx) +{ + struct nouveau_scratch_state *scratch = + &to_nouveau_context(ctx)->scratch; + int i; + + for (i = 0; i < NOUVEAU_SCRATCH_COUNT; i++) + nouveau_bo_ref(NULL, &scratch->bo[i]); +} diff --git a/src/mesa/drivers/dri/nouveau/nouveau_scratch.h b/src/mesa/drivers/dri/nouveau/nouveau_scratch.h new file mode 100644 index 0000000000..b60b33dd1a --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nouveau_scratch.h @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2009-2010 Francisco Jerez. + * 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 (including the + * next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. + * + */ + +#ifndef __NOUVEAU_SCRATCH_H__ +#define __NOUVEAU_SCRATCH_H__ + +#define NOUVEAU_SCRATCH_COUNT 2 +#define NOUVEAU_SCRATCH_SIZE 3*1024*1024 + +struct nouveau_scratch_state { + struct nouveau_bo *bo[NOUVEAU_SCRATCH_COUNT]; + + int index; + int offset; + void *buf; +}; + +void * +nouveau_get_scratch(struct gl_context *ctx, unsigned size, + struct nouveau_bo **bo, unsigned *offset); + +void +nouveau_scratch_init(struct gl_context *ctx); + +void +nouveau_scratch_destroy(struct gl_context *ctx); + +#endif diff --git a/src/mesa/drivers/dri/nouveau/nouveau_state.c b/src/mesa/drivers/dri/nouveau/nouveau_state.c index 7b7ddd2f54..1579d29efc 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_state.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_state.c @@ -113,6 +113,12 @@ nouveau_depth_range(struct gl_context *ctx, GLclampd nearval, GLclampd farval) } static void +nouveau_read_buffer(struct gl_context *ctx, GLenum buffer) +{ + nouveau_validate_framebuffer(ctx); +} + +static void nouveau_draw_buffers(struct gl_context *ctx, GLsizei n, const GLenum *buffers) { nouveau_validate_framebuffer(ctx); @@ -512,6 +518,7 @@ nouveau_state_init(struct gl_context *ctx) ctx->Driver.DepthFunc = nouveau_depth_func; ctx->Driver.DepthMask = nouveau_depth_mask; ctx->Driver.DepthRange = nouveau_depth_range; + ctx->Driver.ReadBuffer = nouveau_read_buffer; ctx->Driver.DrawBuffers = nouveau_draw_buffers; ctx->Driver.Enable = nouveau_enable; ctx->Driver.Fogfv = nouveau_fog; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c b/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c index b3588e8fd3..f084f89d29 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c @@ -28,6 +28,8 @@ #include "tnl/t_pipeline.h" #include "tnl/t_vertex.h" +#define SWTNL_VBO_SIZE 65536 + static enum tnl_attr_format swtnl_get_format(int type, int fields) { switch (type) { @@ -105,7 +107,7 @@ swtnl_choose_attrs(struct gl_context *ctx) TNLcontext *tnl = TNL_CONTEXT(ctx); struct tnl_clipspace *vtx = &tnl->clipspace; static struct tnl_attr_map map[NUM_VERTEX_ATTRS]; - int fields, i, n = 0; + int fields, attr, i, n = 0; render->mode = VBO; render->attr_count = NUM_VERTEX_ATTRS; @@ -116,7 +118,7 @@ swtnl_choose_attrs(struct gl_context *ctx) for (i = 0; i < VERT_ATTRIB_MAX; i++) { struct nouveau_attr_info *ha = &TAG(vertex_attrs)[i]; struct swtnl_attr_info *sa = &swtnl_attrs[i]; - struct nouveau_array_state *a = &render->attrs[i]; + struct nouveau_array *a = &render->attrs[i]; if (!sa->fields) continue; /* Unsupported attribute. */ @@ -141,13 +143,8 @@ swtnl_choose_attrs(struct gl_context *ctx) _tnl_install_attrs(ctx, map, n, NULL, 0); - for (i = 0; i < vtx->attr_count; i++) { - struct tnl_clipspace_attr *ta = &vtx->attr[i]; - struct nouveau_array_state *a = &render->attrs[ta->attrib]; - - a->stride = vtx->vertex_size; - a->offset = ta->vertoffset; - } + FOR_EACH_BOUND_ATTR(render, i, attr) + render->attrs[attr].stride = vtx->vertex_size; TAG(render_set_format)(ctx); } @@ -158,8 +155,8 @@ swtnl_alloc_vertices(struct gl_context *ctx) struct nouveau_swtnl_state *swtnl = &to_render_state(ctx)->swtnl; nouveau_bo_ref(NULL, &swtnl->vbo); - swtnl->buf = get_scratch_vbo(ctx, RENDER_SCRATCH_SIZE, - &swtnl->vbo, NULL); + swtnl->buf = nouveau_get_scratch(ctx, SWTNL_VBO_SIZE, &swtnl->vbo, + &swtnl->offset); swtnl->vertex_count = 0; } @@ -168,14 +165,15 @@ swtnl_bind_vertices(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_swtnl_state *swtnl = &render->swtnl; + struct tnl_clipspace *vtx = &TNL_CONTEXT(ctx)->clipspace; int i; - for (i = 0; i < render->attr_count; i++) { - int attr = render->map[i]; + for (i = 0; i < vtx->attr_count; i++) { + struct tnl_clipspace_attr *ta = &vtx->attr[i]; + struct nouveau_array *a = &render->attrs[ta->attrib]; - if (attr >= 0) - nouveau_bo_ref(swtnl->vbo, - &render->attrs[attr].bo); + nouveau_bo_ref(swtnl->vbo, &a->bo); + a->offset = swtnl->offset + ta->vertoffset; } TAG(render_bind_vertices)(ctx); @@ -185,15 +183,11 @@ static void swtnl_unbind_vertices(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); - int i; - - for (i = 0; i < render->attr_count; i++) { - int *attr = &render->map[i]; + int i, attr; - if (*attr >= 0) { - nouveau_bo_ref(NULL, &render->attrs[*attr].bo); - *attr = -1; - } + FOR_EACH_BOUND_ATTR(render, i, attr) { + nouveau_bo_ref(NULL, &render->attrs[attr].bo); + render->map[i] = -1; } render->attr_count = 0; @@ -260,7 +254,7 @@ swtnl_reset_stipple(struct gl_context *ctx) struct nouveau_swtnl_state *swtnl = &to_render_state(ctx)->swtnl; \ int vertex_len = TNL_CONTEXT(ctx)->clipspace.vertex_size; \ \ - if (swtnl->vertex_count + (n) > swtnl->vbo->size/vertex_len \ + if (swtnl->vertex_count + (n) > SWTNL_VBO_SIZE/vertex_len \ || (swtnl->vertex_count && swtnl->primitive != p)) \ swtnl_flush_vertices(ctx); \ \ @@ -280,7 +274,7 @@ swtnl_points(struct gl_context *ctx, GLuint first, GLuint last) while (first < last) { BEGIN_PRIMITIVE(GL_POINTS, last - first); - count = MIN2(swtnl->vbo->size / vertex_len, last - first); + count = MIN2(SWTNL_VBO_SIZE / vertex_len, last - first); for (i = 0; i < count; i++) OUT_VERTEX(first + i); @@ -316,7 +310,7 @@ swtnl_quad(struct gl_context *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint v4) } /* TnL initialization. */ -static void +void TAG(swtnl_init)(struct gl_context *ctx) { TNLcontext *tnl = TNL_CONTEXT(ctx); @@ -347,7 +341,7 @@ TAG(swtnl_init)(struct gl_context *ctx) swtnl_alloc_vertices(ctx); } -static void +void TAG(swtnl_destroy)(struct gl_context *ctx) { nouveau_bo_ref(NULL, &to_render_state(ctx)->swtnl.vbo); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c index cd063702af..2480b1ea50 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c @@ -79,26 +79,65 @@ nouveau_teximage_free(struct gl_context *ctx, struct gl_texture_image *ti) } static void -nouveau_teximage_map(struct gl_context *ctx, struct gl_texture_image *ti) +nouveau_teximage_map(struct gl_context *ctx, struct gl_texture_image *ti, + int access, int x, int y, int w, int h) { - struct nouveau_surface *s = &to_nouveau_teximage(ti)->surface; - int ret; + struct nouveau_teximage *nti = to_nouveau_teximage(ti); + struct nouveau_surface *s = &nti->surface; + struct nouveau_surface *st = &nti->transfer.surface; if (s->bo) { - ret = nouveau_bo_map(s->bo, NOUVEAU_BO_RDWR); - assert(!ret); + if (!(access & GL_MAP_READ_BIT) && + nouveau_bo_pending(s->bo)) { + /* + * Heuristic: use a bounce buffer to pipeline + * teximage transfers. + */ + st->layout = LINEAR; + st->format = s->format; + st->cpp = s->cpp; + st->width = w; + st->height = h; + st->pitch = s->pitch; + nti->transfer.x = x; + nti->transfer.y = y; + + ti->Data = nouveau_get_scratch(ctx, st->pitch * h, + &st->bo, &st->offset); - ti->Data = s->bo->map; + } else { + int ret, flags = 0; + + if (access & GL_MAP_READ_BIT) + flags |= NOUVEAU_BO_RD; + if (access & GL_MAP_WRITE_BIT) + flags |= NOUVEAU_BO_WR; + + ret = nouveau_bo_map(s->bo, flags); + assert(!ret); + + ti->Data = s->bo->map + y * s->pitch + x * s->cpp; + } } } static void nouveau_teximage_unmap(struct gl_context *ctx, struct gl_texture_image *ti) { - struct nouveau_surface *s = &to_nouveau_teximage(ti)->surface; + struct nouveau_teximage *nti = to_nouveau_teximage(ti); + struct nouveau_surface *s = &nti->surface; + struct nouveau_surface *st = &nti->transfer.surface; + + if (st->bo) { + context_drv(ctx)->surface_copy(ctx, s, st, nti->transfer.x, + nti->transfer.y, 0, 0, + st->width, st->height); + nouveau_surface_ref(NULL, st); - if (s->bo) + } else if (s->bo) { nouveau_bo_unmap(s->bo); + } + ti->Data = NULL; } @@ -115,6 +154,7 @@ nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat, case GL_RGBA12: case GL_RGBA16: case GL_RGB10_A2: + case GL_COMPRESSED_RGBA: return MESA_FORMAT_ARGB8888; case GL_RGB5_A1: return MESA_FORMAT_ARGB1555; @@ -124,6 +164,7 @@ nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat, case GL_RGB10: case GL_RGB12: case GL_RGB16: + case GL_COMPRESSED_RGB: return MESA_FORMAT_XRGB8888; case 3: case GL_R3_G3_B2: @@ -139,6 +180,7 @@ nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat, case GL_LUMINANCE12_ALPHA12: case GL_LUMINANCE16_ALPHA16: case GL_LUMINANCE8_ALPHA8: + case GL_COMPRESSED_LUMINANCE_ALPHA: return MESA_FORMAT_ARGB8888; case 1: @@ -147,6 +189,7 @@ nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat, case GL_LUMINANCE12: case GL_LUMINANCE16: case GL_LUMINANCE8: + case GL_COMPRESSED_LUMINANCE: return MESA_FORMAT_L8; case GL_ALPHA: @@ -154,6 +197,7 @@ nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat, case GL_ALPHA12: case GL_ALPHA16: case GL_ALPHA8: + case GL_COMPRESSED_ALPHA: return MESA_FORMAT_A8; case GL_INTENSITY: @@ -356,7 +400,8 @@ nouveau_teximage(struct gl_context *ctx, GLint dims, GLenum target, GLint level, "glTexImage"); if (pixels) { /* Store the pixel data. */ - nouveau_teximage_map(ctx, ti); + nouveau_teximage_map(ctx, ti, GL_MAP_WRITE_BIT, + 0, 0, width, height); ret = _mesa_texstore(ctx, dims, ti->_BaseFormat, ti->TexFormat, ti->Data, @@ -443,13 +488,13 @@ nouveau_texsubimage(struct gl_context *ctx, GLint dims, GLenum target, GLint lev format, type, pixels, packing, "glTexSubImage"); if (pixels) { - nouveau_teximage_map(ctx, ti); + nouveau_teximage_map(ctx, ti, GL_MAP_WRITE_BIT, + xoffset, yoffset, width, height); ret = _mesa_texstore(ctx, 3, ti->_BaseFormat, ti->TexFormat, - ti->Data, xoffset, yoffset, zoffset, - s->pitch, ti->ImageOffsets, - width, height, depth, format, type, - pixels, packing); + ti->Data, 0, 0, 0, s->pitch, + ti->ImageOffsets, width, height, depth, + format, type, pixels, packing); assert(ret); nouveau_teximage_unmap(ctx, ti); @@ -508,7 +553,8 @@ nouveau_get_teximage(struct gl_context *ctx, GLenum target, GLint level, struct gl_texture_object *t, struct gl_texture_image *ti) { - nouveau_teximage_map(ctx, ti); + nouveau_teximage_map(ctx, ti, GL_MAP_READ_BIT, + 0, 0, ti->Width, ti->Height); _mesa_get_teximage(ctx, target, level, format, type, pixels, t, ti); nouveau_teximage_unmap(ctx, ti); @@ -557,11 +603,12 @@ nouveau_set_texbuffer(__DRIcontext *dri_ctx, nouveau_update_renderbuffers(dri_ctx, draw); nouveau_surface_ref(&to_nouveau_renderbuffer(rb)->surface, s); + s->format = get_texbuffer_format(rb, format); + /* Update the image fields. */ _mesa_init_teximage_fields(ctx, target, ti, s->width, s->height, - 1, 0, s->cpp); + 1, 0, s->cpp, s->format); ti->RowStride = s->pitch / s->cpp; - ti->TexFormat = s->format = get_texbuffer_format(rb, format); /* Try to validate it. */ if (!validate_teximage(ctx, t, 0, 0, 0, 0, s->width, s->height, 1)) @@ -579,8 +626,11 @@ nouveau_texture_map(struct gl_context *ctx, struct gl_texture_object *t) int i; for (i = t->BaseLevel; i < t->_MaxLevel; i++) { - if (t->Image[0][i]) - nouveau_teximage_map(ctx, t->Image[0][i]); + struct gl_texture_image *ti = t->Image[0][i]; + + if (ti) + nouveau_teximage_map(ctx, ti, GL_MAP_READ_BIT, + 0, 0, ti->Width, ti->Height); } } @@ -630,7 +680,8 @@ nouveau_generate_mipmap(struct gl_context *ctx, GLenum target, if (_mesa_meta_check_generate_mipmap_fallback(ctx, target, t)) { struct gl_texture_image *base = t->Image[0][t->BaseLevel]; - nouveau_teximage_map(ctx, base); + nouveau_teximage_map(ctx, base, GL_MAP_READ_BIT, + 0, 0, base->Width, base->Height); _mesa_generate_mipmap(ctx, target, t); nouveau_teximage_unmap(ctx, base); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.h b/src/mesa/drivers/dri/nouveau/nouveau_texture.h index fc170215f3..56e61c7337 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_texture.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.h @@ -30,6 +30,10 @@ struct nouveau_teximage { struct gl_texture_image base; struct nouveau_surface surface; + struct { + struct nouveau_surface surface; + int x, y; + } transfer; }; #define to_nouveau_teximage(x) ((struct nouveau_teximage *)(x)) diff --git a/src/mesa/drivers/dri/nouveau/nouveau_util.h b/src/mesa/drivers/dri/nouveau/nouveau_util.h index 8df8867d14..6d01934dad 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_util.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_util.h @@ -164,6 +164,12 @@ get_viewport_translate(struct gl_context *ctx, float a[4]) } static inline void +OUT_RINGb(struct nouveau_channel *chan, GLboolean x) +{ + OUT_RING(chan, x ? 1 : 0); +} + +static inline void OUT_RINGm(struct nouveau_channel *chan, float m[16]) { int i, j; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c index 394f3c9b50..d8b331cca7 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c @@ -31,59 +31,11 @@ #include "main/image.h" /* Arbitrary pushbuf length we can assume we can get with a single - * WAIT_RING. */ + * call to WAIT_RING. */ #define PUSHBUF_DWORDS 65536 -/* Functions to set up struct nouveau_array_state from something like - * a GL array or index buffer. */ - -static void -vbo_init_array(struct nouveau_array_state *a, int attr, int stride, - int fields, int type, struct gl_buffer_object *obj, - const void *ptr, GLboolean map) -{ - a->attr = attr; - a->stride = stride; - a->fields = fields; - a->type = type; - - if (_mesa_is_bufferobj(obj)) { - nouveau_bo_ref(to_nouveau_bufferobj(obj)->bo, &a->bo); - a->offset = (intptr_t)ptr; - - if (map) { - nouveau_bo_map(a->bo, NOUVEAU_BO_RD); - a->buf = a->bo->map + a->offset; - } else { - a->buf = NULL; - } - - } else { - nouveau_bo_ref(NULL, &a->bo); - a->offset = 0; - - if (map) - a->buf = ptr; - else - a->buf = NULL; - } - - if (a->buf) - get_array_extract(a, &a->extract_u, &a->extract_f); -} - -static void -vbo_deinit_array(struct nouveau_array_state *a) -{ - if (a->bo) { - if (a->bo->map) - nouveau_bo_unmap(a->bo); - nouveau_bo_ref(NULL, &a->bo); - } - - a->buf = NULL; - a->fields = 0; -} +/* Functions to turn GL arrays or index buffers into nouveau_array + * structures. */ static int get_array_stride(struct gl_context *ctx, const struct gl_client_array *a) @@ -102,48 +54,45 @@ vbo_init_arrays(struct gl_context *ctx, const struct _mesa_index_buffer *ib, const struct gl_client_array **arrays) { struct nouveau_render_state *render = to_render_state(ctx); - int i; + GLboolean imm = (render->mode == IMM); + int i, attr; if (ib) - vbo_init_array(&render->ib, 0, 0, ib->count, ib->type, - ib->obj, ib->ptr, GL_TRUE); + nouveau_init_array(&render->ib, 0, 0, ib->count, ib->type, + ib->obj, ib->ptr, GL_TRUE); - for (i = 0; i < render->attr_count; i++) { - int attr = render->map[i]; + FOR_EACH_BOUND_ATTR(render, i, attr) { + const struct gl_client_array *array = arrays[attr]; - if (attr >= 0) { - const struct gl_client_array *array = arrays[attr]; - - vbo_init_array(&render->attrs[attr], attr, - get_array_stride(ctx, array), - array->Size, array->Type, - array->BufferObj, array->Ptr, - render->mode == IMM); - } + nouveau_init_array(&render->attrs[attr], attr, + get_array_stride(ctx, array), + array->Size, array->Type, + imm ? array->BufferObj : NULL, + array->Ptr, imm); } } static void vbo_deinit_arrays(struct gl_context *ctx, const struct _mesa_index_buffer *ib, - const struct gl_client_array **arrays) + const struct gl_client_array **arrays) { struct nouveau_render_state *render = to_render_state(ctx); - int i; + int i, attr; if (ib) - vbo_deinit_array(&render->ib); + nouveau_cleanup_array(&render->ib); - for (i = 0; i < render->attr_count; i++) { - int *attr = &render->map[i]; + FOR_EACH_BOUND_ATTR(render, i, attr) { + struct nouveau_array *a = &render->attrs[attr]; - if (*attr >= 0) { - vbo_deinit_array(&render->attrs[*attr]); - *attr = -1; - } + if (render->mode == IMM) + nouveau_bo_ref(NULL, &a->bo); + + nouveau_deinit_array(a); + render->map[i] = -1; } render->attr_count = 0; - context_bctx(ctx, VERTEX); } /* Make some rendering decisions from the GL context. */ @@ -164,20 +113,16 @@ vbo_choose_render_mode(struct gl_context *ctx, const struct gl_client_array **ar } } } - - if (render->mode == VBO) - render->attr_count = NUM_VERTEX_ATTRS; - else - render->attr_count = 0; } static void -vbo_emit_attr(struct gl_context *ctx, const struct gl_client_array **arrays, int attr) +vbo_emit_attr(struct gl_context *ctx, const struct gl_client_array **arrays, + int attr) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_render_state *render = to_render_state(ctx); const struct gl_client_array *array = arrays[attr]; - struct nouveau_array_state *a = &render->attrs[attr]; + struct nouveau_array *a = &render->attrs[attr]; RENDER_LOCALS(ctx); if (!array->StrideB) { @@ -186,11 +131,11 @@ vbo_emit_attr(struct gl_context *ctx, const struct gl_client_array **arrays, int return; /* Constant attribute. */ - vbo_init_array(a, attr, array->StrideB, array->Size, - array->Type, array->BufferObj, array->Ptr, - GL_TRUE); + nouveau_init_array(a, attr, array->StrideB, array->Size, + array->Type, array->BufferObj, array->Ptr, + GL_TRUE); EMIT_IMM(ctx, a, 0); - vbo_deinit_array(a); + nouveau_deinit_array(a); } else { /* Varying attribute. */ @@ -199,6 +144,8 @@ vbo_emit_attr(struct gl_context *ctx, const struct gl_client_array **arrays, int if (render->mode == VBO) { render->map[info->vbo_index] = attr; render->vertex_size += array->_ElementSize; + render->attr_count = MAX2(render->attr_count, + info->vbo_index + 1); } else { render->map[render->attr_count++] = attr; render->vertex_size += 4 * info->imm_fields; @@ -216,6 +163,7 @@ vbo_choose_attrs(struct gl_context *ctx, const struct gl_client_array **arrays) /* Reset the vertex size. */ render->vertex_size = 0; + render->attr_count = 0; vbo_emit_attr(ctx, arrays, VERT_ATTRIB_COLOR0); if (ctx->Fog.ColorSumEnabled && !ctx->Light.Enabled) @@ -233,7 +181,7 @@ vbo_choose_attrs(struct gl_context *ctx, const struct gl_client_array **arrays) (ctx->Texture._GenFlags & TEXGEN_NEED_NORMALS)) vbo_emit_attr(ctx, arrays, VERT_ATTRIB_NORMAL); - if (ctx->Light.Enabled) { + if (ctx->Light.Enabled && render->mode == IMM) { vbo_emit_attr(ctx, arrays, MAT(FRONT_AMBIENT)); vbo_emit_attr(ctx, arrays, MAT(FRONT_DIFFUSE)); vbo_emit_attr(ctx, arrays, MAT(FRONT_SPECULAR)); @@ -254,17 +202,13 @@ static int get_max_client_stride(struct gl_context *ctx, const struct gl_client_array **arrays) { struct nouveau_render_state *render = to_render_state(ctx); - int i, s = 0; - - for (i = 0; i < render->attr_count; i++) { - int attr = render->map[i]; + int i, attr, s = 0; - if (attr >= 0) { - const struct gl_client_array *a = arrays[attr]; + FOR_EACH_BOUND_ATTR(render, i, attr) { + const struct gl_client_array *a = arrays[attr]; - if (!_mesa_is_bufferobj(a->BufferObj)) - s = MAX2(s, get_array_stride(ctx, a)); - } + if (!_mesa_is_bufferobj(a->BufferObj)) + s = MAX2(s, get_array_stride(ctx, a)); } return s; @@ -295,7 +239,7 @@ vbo_maybe_split(struct gl_context *ctx, const struct gl_client_array **arrays, if (render->mode == VBO && (stride = get_max_client_stride(ctx, arrays))) vert_avail = MIN2(vert_avail, - RENDER_SCRATCH_SIZE / stride); + NOUVEAU_SCRATCH_SIZE / stride); if (max_index - min_index > vert_avail || (ib && ib->count > idx_avail)) { @@ -315,42 +259,93 @@ vbo_maybe_split(struct gl_context *ctx, const struct gl_client_array **arrays, /* VBO rendering path. */ +static GLboolean +check_update_array(struct nouveau_array *a, unsigned offset, + struct nouveau_bo *bo, int *pdelta) +{ + int delta = *pdelta; + GLboolean dirty; + + if (a->bo == bo) { + if (delta < 0) + delta = ((int)offset - (int)a->offset) / a->stride; + + dirty = (delta < 0 || + offset != (a->offset + delta * a->stride)); + } else { + dirty = GL_TRUE; + } + + *pdelta = (dirty ? 0 : delta); + return dirty; +} + static void vbo_bind_vertices(struct gl_context *ctx, const struct gl_client_array **arrays, - GLint basevertex, GLuint min_index, GLuint max_index) + int base, unsigned min_index, unsigned max_index, int *pdelta) { struct nouveau_render_state *render = to_render_state(ctx); - int i; + struct nouveau_channel *chan = context_chan(ctx); + struct nouveau_bo *bo[NUM_VERTEX_ATTRS]; + unsigned offset[NUM_VERTEX_ATTRS]; + GLboolean dirty = GL_FALSE; + int i, j, attr; + RENDER_LOCALS(ctx); - for (i = 0; i < NUM_VERTEX_ATTRS; i++) { - int attr = render->map[i]; + *pdelta = -1; - if (attr >= 0) { - const struct gl_client_array *array = arrays[attr]; - struct nouveau_array_state *a = &render->attrs[attr]; - unsigned delta = (basevertex + min_index) - * array->StrideB; + FOR_EACH_BOUND_ATTR(render, i, attr) { + const struct gl_client_array *array = arrays[attr]; + struct gl_buffer_object *obj = array->BufferObj; + struct nouveau_array *a = &render->attrs[attr]; + unsigned delta = (base + min_index) * array->StrideB; - if (a->bo) { - /* Array in a buffer obj. */ - a->offset = (intptr_t)array->Ptr + delta; - } else { - int j, n = max_index - min_index + 1; - char *sp = (char *)array->Ptr + delta; - char *dp = get_scratch_vbo(ctx, n * a->stride, - &a->bo, &a->offset); + bo[i] = NULL; - /* Array in client memory, move it to - * a scratch buffer obj. */ - for (j = 0; j < n; j++) - memcpy(dp + j * a->stride, - sp + j * array->StrideB, - a->stride); - } + if (nouveau_bufferobj_hw(obj)) { + /* Array in a buffer obj. */ + nouveau_bo_ref(to_nouveau_bufferobj(obj)->bo, &bo[i]); + offset[i] = delta + (intptr_t)array->Ptr; + + } else { + int n = max_index - min_index + 1; + char *sp = (char *)ADD_POINTERS( + nouveau_bufferobj_sys(obj), array->Ptr) + delta; + char *dp = nouveau_get_scratch(ctx, n * a->stride, + &bo[i], &offset[i]); + + /* Array in client memory, move it to a + * scratch buffer obj. */ + for (j = 0; j < n; j++) + memcpy(dp + j * a->stride, + sp + j * array->StrideB, + a->stride); + } + + dirty |= check_update_array(a, offset[i], bo[i], pdelta); + } + + *pdelta -= min_index; + + if (dirty) { + /* Buffers changed, update the attribute binding. */ + FOR_EACH_BOUND_ATTR(render, i, attr) { + struct nouveau_array *a = &render->attrs[attr]; + + nouveau_bo_ref(NULL, &a->bo); + a->offset = offset[i]; + a->bo = bo[i]; } + + TAG(render_bind_vertices)(ctx); + + } else { + /* Just cleanup. */ + FOR_EACH_BOUND_ATTR(render, i, attr) + nouveau_bo_ref(NULL, &bo[i]); } - TAG(render_bind_vertices)(ctx); + BATCH_VALIDATE(); } static void @@ -360,12 +355,10 @@ vbo_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays, GLuint max_index) { struct nouveau_channel *chan = context_chan(ctx); - dispatch_t dispatch; - int delta = -min_index, basevertex = 0, i; + dispatch_t dispatch = get_array_dispatch(&to_render_state(ctx)->ib); + int i, delta = 0, basevertex = 0; RENDER_LOCALS(ctx); - get_array_dispatch(&to_render_state(ctx)->ib, &dispatch); - TAG(render_set_format)(ctx); for (i = 0; i < nr_prims; i++) { @@ -374,8 +367,8 @@ vbo_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays, if (i == 0 || basevertex != prims[i].basevertex) { basevertex = prims[i].basevertex; - vbo_bind_vertices(ctx, arrays, basevertex, - min_index, max_index); + vbo_bind_vertices(ctx, arrays, basevertex, min_index, + max_index, &delta); } if (count > get_max_vertices(ctx, ib, AVAIL_RING(chan))) @@ -390,7 +383,7 @@ vbo_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays, /* Immediate rendering path. */ static unsigned -extract_id(struct nouveau_array_state *a, int i, int j) +extract_id(struct nouveau_array *a, int i, int j) { return j; } @@ -404,7 +397,7 @@ vbo_draw_imm(struct gl_context *ctx, const struct gl_client_array **arrays, struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_channel *chan = context_chan(ctx); extract_u_t extract = ib ? render->ib.extract_u : extract_id; - int i, j, k; + int i, j, k, attr; RENDER_LOCALS(ctx); for (i = 0; i < nr_prims; i++) { @@ -421,9 +414,8 @@ vbo_draw_imm(struct gl_context *ctx, const struct gl_client_array **arrays, j = prims[i].basevertex + extract(&render->ib, 0, start); - for (k = 0; k < render->attr_count; k++) - EMIT_IMM(ctx, &render->attrs[render->map[k]], - j); + FOR_EACH_BOUND_ATTR(render, k, attr) + EMIT_IMM(ctx, &render->attrs[attr], j); } BATCH_END(); @@ -433,7 +425,8 @@ vbo_draw_imm(struct gl_context *ctx, const struct gl_client_array **arrays, /* draw_prims entry point when we're doing hw-tnl. */ static void -TAG(vbo_render_prims)(struct gl_context *ctx, const struct gl_client_array **arrays, +TAG(vbo_render_prims)(struct gl_context *ctx, + const struct gl_client_array **arrays, const struct _mesa_prim *prims, GLuint nr_prims, const struct _mesa_index_buffer *ib, GLboolean index_bounds_valid, @@ -462,3 +455,44 @@ TAG(vbo_render_prims)(struct gl_context *ctx, const struct gl_client_array **arr vbo_deinit_arrays(ctx, ib, arrays); } + +/* VBO rendering entry points. */ + +static void +TAG(vbo_check_render_prims)(struct gl_context *ctx, + const struct gl_client_array **arrays, + const struct _mesa_prim *prims, GLuint nr_prims, + const struct _mesa_index_buffer *ib, + GLboolean index_bounds_valid, + GLuint min_index, GLuint max_index) +{ + struct nouveau_context *nctx = to_nouveau_context(ctx); + + nouveau_validate_framebuffer(ctx); + + if (nctx->fallback == HWTNL) + TAG(vbo_render_prims)(ctx, arrays, prims, nr_prims, ib, + index_bounds_valid, min_index, max_index); + + if (nctx->fallback == SWTNL) + _tnl_vbo_draw_prims(ctx, arrays, prims, nr_prims, ib, + index_bounds_valid, min_index, max_index); +} + +void +TAG(vbo_init)(struct gl_context *ctx) +{ + struct nouveau_render_state *render = to_render_state(ctx); + int i; + + for (i = 0; i < VERT_ATTRIB_MAX; i++) + render->map[i] = -1; + + vbo_set_draw_func(ctx, TAG(vbo_check_render_prims)); + vbo_use_buffer_objects(ctx); +} + +void +TAG(vbo_destroy)(struct gl_context *ctx) +{ +} diff --git a/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h b/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h new file mode 100644 index 0000000000..3390da089b --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h @@ -0,0 +1,1343 @@ +#ifndef NV01_2D_XML +#define NV01_2D_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv01_2d.xml ( 33509 bytes, from 2010-11-13 23:32:57) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <arthur.huillet@free.fr> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <koala_br@users.sourceforge.net> (koala_br) +- Carlos Martin <carlosmn@users.sf.net> (carlosmn) +- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr) +- Dawid Gajownik <gajownik@users.sf.net> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag) +- EdB <edb_@users.sf.net> (edb_) +- Erik Waling <erikwailing@users.sf.net> (erikwaling) +- Francisco Jerez <currojerez@riseup.net> (curro) +- imirkin <imirkin@users.sf.net> (imirkin) +- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome) +- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy) +- Laurent Carlier <lordheavym@gmail.com> (lordheavy) +- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1) +- Maarten Maathuis <madman2003@gmail.com> (stillunknown) +- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin) +- Mark Carey <mark.carey@gmail.com> (careym) +- Matthieu Castet <matthieu.castet@parrot.com> (mat-c) +- nvidiaman <nvidiaman@users.sf.net> (nvidiaman) +- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata) +- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen) +- Peter Popov <ironpeter@users.sf.net> (ironpeter) +- Richard Hughes <hughsient@users.sf.net> (hughsient) +- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <leroutier@users.sf.net> (leroutier) +- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu) +- sturmflut <sturmflut@users.sf.net> (sturmflut) +- Sylvain Munaut <tnt@246tNt.com> +- Victor Stinner <victor.stinner@haypocalc.com> (haypo) +- Wladmir van der Laan <laanwj@gmail.com> (miathan6) +- Younes Manton <younes.m@gmail.com> (ymanton) + +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 (including the +next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. +*/ + + + +#define NV01_CONTEXT_BETA1_DMA_NOTIFY 0x00000180 + +#define NV01_CONTEXT_BETA1_BETA_1D31 0x00000300 + + +#define NV04_BETA_SOLID_DMA_NOTIFY 0x00000180 + +#define NV04_BETA_SOLID_BETA_FACTOR 0x00000300 + + +#define NV01_CONTEXT_COLOR_KEY_DMA_NOTIFY 0x00000180 + +#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT 0x00000300 +#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV01_CONTEXT_COLOR_KEY_COLOR 0x00000304 + + +#define NV01_CONTEXT_PATTERN_DMA_NOTIFY 0x00000180 + +#define NV01_CONTEXT_PATTERN_COLOR_FORMAT 0x00000300 + +#define NV01_CONTEXT_PATTERN_MONOCHROME_FORMAT 0x00000304 + +#define NV01_CONTEXT_PATTERN_SHAPE 0x00000308 + +#define NV01_CONTEXT_PATTERN_COLOR(i0) (0x00000310 + 0x4*(i0)) +#define NV01_CONTEXT_PATTERN_COLOR__ESIZE 0x00000004 +#define NV01_CONTEXT_PATTERN_COLOR__LEN 0x00000002 + +#define NV01_CONTEXT_PATTERN_PATTERN(i0) (0x00000318 + 0x4*(i0)) +#define NV01_CONTEXT_PATTERN_PATTERN__ESIZE 0x00000004 +#define NV01_CONTEXT_PATTERN_PATTERN__LEN 0x00000002 + + +#define NV01_CONTEXT_CLIP_RECTANGLE_DMA_NOTIFY 0x00000180 + +#define NV01_CONTEXT_CLIP_RECTANGLE_POINT 0x00000300 +#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X__MASK 0x0000ffff +#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X__SHIFT 0 +#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y__MASK 0xffff0000 +#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y__SHIFT 16 + +#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE 0x00000304 +#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W__MASK 0x0000ffff +#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W__SHIFT 0 +#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H__MASK 0xffff0000 +#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H__SHIFT 16 + + +#define NV04_CONTEXT_SURFACES_2D_DMA_NOTIFY 0x00000180 + +#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_SOURCE 0x00000184 + +#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_DESTIN 0x00000188 + + +#define NV50_CONTEXT_SURFACES_2D_SRC_LINEAR 0x00000200 + +#define NV50_CONTEXT_SURFACES_2D_SRC_TILE_MODE 0x00000204 + +#define NV50_CONTEXT_SURFACES_2D_SRC_WIDTH 0x00000208 + +#define NV50_CONTEXT_SURFACES_2D_SRC_HEIGHT 0x0000020c + +#define NV50_CONTEXT_SURFACES_2D_UNK0210 0x00000210 + +#define NV50_CONTEXT_SURFACES_2D_UNK0214 0x00000214 + +#define NV50_CONTEXT_SURFACES_2D_DST_LINEAR 0x00000218 + +#define NV50_CONTEXT_SURFACES_2D_DST_TILE_MODE 0x0000021c + +#define NV50_CONTEXT_SURFACES_2D_DST_WIDTH 0x00000220 + +#define NV50_CONTEXT_SURFACES_2D_DST_HEIGHT 0x00000224 + +#define NV50_CONTEXT_SURFACES_2D_UNK0228 0x00000228 + +#define NV50_CONTEXT_SURFACES_2D_UNK022C 0x0000022c + +#define NV50_CONTEXT_SURFACES_2D_OFFSET_SOURCE_HIGH 0x00000230 + +#define NV50_CONTEXT_SURFACES_2D_OFFSET_DESTIN_HIGH 0x00000234 + +#define NV04_CONTEXT_SURFACES_2D_FORMAT 0x00000300 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y8 0x00000001 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_Z1R5G5B5 0x00000002 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_X1R5G5B5 0x00000003 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_R5G6B5 0x00000004 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y16 0x00000005 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_Z8R8G8B8 0x00000006 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_X8R8G8B8 0x00000007 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_Z1A7R8G8B8 0x00000008 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_X1A7R8G8B8 0x00000009 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_A8R8G8B8 0x0000000a +#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y32 0x0000000b + +#define NV04_CONTEXT_SURFACES_2D_PITCH 0x00000304 +#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE__MASK 0x0000ffff +#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE__SHIFT 0 +#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN__MASK 0xffff0000 +#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN__SHIFT 16 + +#define NV04_CONTEXT_SURFACES_2D_OFFSET_SOURCE 0x00000308 + +#define NV04_CONTEXT_SURFACES_2D_OFFSET_DESTIN 0x0000030c + + +#define NV04_SWIZZLED_SURFACE_DMA_NOTIFY 0x00000180 + +#define NV04_SWIZZLED_SURFACE_DMA_IMAGE 0x00000184 + +#define NV04_SWIZZLED_SURFACE_FORMAT 0x00000300 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR__MASK 0x000000ff +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR__SHIFT 0 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y8 0x00000001 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000002 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000003 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_R5G6B5 0x00000004 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y16 0x00000005 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000006 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000007 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000008 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000009 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_A8R8G8B8 0x0000000a +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y32 0x0000000b +#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U__MASK 0x00ff0000 +#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U__SHIFT 16 +#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V__MASK 0xff000000 +#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V__SHIFT 24 + +#define NV04_SWIZZLED_SURFACE_OFFSET 0x00000304 + + +#define NV03_CONTEXT_ROP_DMA_NOTIFY 0x00000180 + +#define NV03_CONTEXT_ROP_ROP 0x00000300 + + +#define NV04_IMAGE_PATTERN_DMA_NOTIFY 0x00000180 + +#define NV04_IMAGE_PATTERN_COLOR_FORMAT 0x00000300 +#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV04_IMAGE_PATTERN_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT 0x00000304 +#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_CGA6 0x00000001 +#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_LE 0x00000002 + +#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE 0x00000308 +#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_8X8 0x00000000 +#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_64X1 0x00000001 +#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_1X64 0x00000002 + +#define NV04_IMAGE_PATTERN_PATTERN_SELECT 0x0000030c +#define NV04_IMAGE_PATTERN_PATTERN_SELECT_MONO 0x00000001 +#define NV04_IMAGE_PATTERN_PATTERN_SELECT_COLOR 0x00000002 + +#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR0 0x00000310 + +#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR1 0x00000314 + +#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN0 0x00000318 + +#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN1 0x0000031c + +#define NV04_IMAGE_PATTERN_PATTERN_Y8(i0) (0x00000400 + 0x4*(i0)) +#define NV04_IMAGE_PATTERN_PATTERN_Y8__ESIZE 0x00000004 +#define NV04_IMAGE_PATTERN_PATTERN_Y8__LEN 0x00000010 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0__MASK 0x000000ff +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0__SHIFT 0 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1__MASK 0x0000ff00 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1__SHIFT 8 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2__MASK 0x00ff0000 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2__SHIFT 16 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3__MASK 0xff000000 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3__SHIFT 24 + +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5(i0) (0x00000500 + 0x4*(i0)) +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__ESIZE 0x00000004 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__LEN 0x00000020 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0__MASK 0x0000001f +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0__SHIFT 0 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0__MASK 0x000007e0 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0__SHIFT 5 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0__MASK 0x0000f800 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0__SHIFT 11 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1__MASK 0x001f0000 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1__SHIFT 16 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1__MASK 0x07e00000 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1__SHIFT 21 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1__MASK 0xf8000000 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1__SHIFT 27 + +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5(i0) (0x00000600 + 0x4*(i0)) +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__ESIZE 0x00000004 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__LEN 0x00000020 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0__MASK 0x0000001f +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0__SHIFT 0 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0__MASK 0x000003e0 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0__SHIFT 5 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0__MASK 0x00007c00 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0__SHIFT 10 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1__MASK 0x001f0000 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1__SHIFT 16 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1__MASK 0x03e00000 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1__SHIFT 21 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1__MASK 0x7c000000 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1__SHIFT 26 + +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8(i0) (0x00000700 + 0x4*(i0)) +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__ESIZE 0x00000004 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__LEN 0x00000040 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B__MASK 0x000000ff +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B__SHIFT 0 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G__MASK 0x0000ff00 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G__SHIFT 8 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R__MASK 0x00ff0000 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R__SHIFT 16 + + +#define NV01_RENDER_SOLID_LINE_PATCH 0x0000010c + +#define NV01_RENDER_SOLID_LINE_DMA_NOTIFY 0x00000180 + +#define NV01_RENDER_SOLID_LINE_CLIP_RECTANGLE 0x00000184 + +#define NV01_RENDER_SOLID_LINE_PATTERN 0x00000188 + +#define NV04_RENDER_SOLID_LINE_PATTERN 0x00000188 + +#define NV01_RENDER_SOLID_LINE_ROP 0x0000018c + +#define NV01_RENDER_SOLID_LINE_BETA1 0x00000190 + +#define NV01_RENDER_SOLID_LINE_SURFACE_DST 0x00000194 + + +#define NV04_RENDER_SOLID_LINE_BETA4 0x00000194 + +#define NV04_RENDER_SOLID_LINE_SURFACE 0x00000198 + +#define NV01_RENDER_SOLID_LINE_OPERATION 0x000002fc +#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_AND 0x00000000 +#define NV01_RENDER_SOLID_LINE_OPERATION_ROP_AND 0x00000001 +#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_AND 0x00000002 +#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY 0x00000003 +#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT 0x00000300 +#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV01_RENDER_SOLID_LINE_COLOR 0x00000304 + +#define NV01_RENDER_SOLID_LINE_LINE_POINT0(i0) (0x00000400 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE_POINT0__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_LINE_POINT0__LEN 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X__SHIFT 0 +#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_LINE_LINE_POINT1(i0) (0x00000404 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE_POINT1__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_LINE_POINT1__LEN 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X__SHIFT 0 +#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X(i0) (0x00000480 + 0x10*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y(i0) (0x00000484 + 0x10*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X(i0) (0x00000488 + 0x10*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y(i0) (0x0000048c + 0x10*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_POLYLINE(i0) (0x00000500 + 0x4*(i0)) +#define NV01_RENDER_SOLID_LINE_POLYLINE__ESIZE 0x00000004 +#define NV01_RENDER_SOLID_LINE_POLYLINE__LEN 0x00000020 +#define NV01_RENDER_SOLID_LINE_POLYLINE_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_LINE_POLYLINE_X__SHIFT 0 +#define NV01_RENDER_SOLID_LINE_POLYLINE_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_LINE_POLYLINE_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X(i0) (0x00000580 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y(i0) (0x00000584 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR(i0) (0x00000600 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT(i0) (0x00000604 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__LEN 0x00000010 +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X__SHIFT 0 +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y__SHIFT 16 + + +#define NV01_RENDER_SOLID_TRIANGLE_PATCH 0x0000010c + +#define NV01_RENDER_SOLID_TRIANGLE_DMA_NOTIFY 0x00000180 + +#define NV01_RENDER_SOLID_TRIANGLE_CLIP_RECTANGLE 0x00000184 + +#define NV01_RENDER_SOLID_TRIANGLE_PATTERN 0x00000188 + +#define NV04_RENDER_SOLID_TRIANGLE_PATTERN 0x00000188 + +#define NV01_RENDER_SOLID_TRIANGLE_ROP 0x0000018c + +#define NV01_RENDER_SOLID_TRIANGLE_BETA1 0x00000190 + +#define NV01_RENDER_SOLID_TRIANGLE_SURFACE_DST 0x00000194 + + +#define NV04_RENDER_SOLID_TRIANGLE_BETA4 0x00000194 + +#define NV04_RENDER_SOLID_TRIANGLE_SURFACE 0x00000198 + +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION 0x000002fc +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_AND 0x00000000 +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_ROP_AND 0x00000001 +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_AND 0x00000002 +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY 0x00000003 +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT 0x00000300 +#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV01_RENDER_SOLID_TRIANGLE_COLOR 0x00000304 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0 0x00000310 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1 0x00000314 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2 0x00000318 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_X 0x00000320 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_Y 0x00000324 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_X 0x00000328 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_Y 0x0000032c + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_X 0x00000330 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_Y 0x00000334 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH(i0) (0x00000400 + 0x4*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__ESIZE 0x00000004 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__LEN 0x00000020 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X(i0) (0x00000480 + 0x8*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__LEN 0x00000010 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y(i0) (0x00000484 + 0x8*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__LEN 0x00000010 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR(i0) (0x00000500 + 0x10*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__LEN 0x00000008 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0(i0) (0x00000504 + 0x10*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__LEN 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1(i0) (0x00000508 + 0x10*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__LEN 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2(i0) (0x0000050c + 0x10*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__LEN 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR(i0) (0x00000580 + 0x8*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__LEN 0x00000010 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT(i0) (0x00000584 + 0x8*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__LEN 0x00000010 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y__SHIFT 16 + + +#define NV01_RENDER_SOLID_RECTANGLE_PATCH 0x0000010c + +#define NV01_RENDER_SOLID_RECTANGLE_DMA_NOTIFY 0x00000180 + +#define NV01_RENDER_SOLID_RECTANGLE_CLIP_RECTANGLE 0x00000184 + +#define NV01_RENDER_SOLID_RECTANGLE_PATTERN 0x00000188 + +#define NV04_RENDER_SOLID_RECTANGLE_PATTERN 0x00000188 + +#define NV01_RENDER_SOLID_RECTANGLE_ROP 0x0000018c + +#define NV01_RENDER_SOLID_RECTANGLE_BETA1 0x00000190 + +#define NV01_RENDER_SOLID_RECTANGLE_SURFACE_DST 0x00000194 + + +#define NV04_RENDER_SOLID_RECTANGLE_BETA4 0x00000194 + +#define NV04_RENDER_SOLID_RECTANGLE_SURFACE 0x00000198 + +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION 0x000002fc +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_AND 0x00000000 +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_ROP_AND 0x00000001 +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_AND 0x00000002 +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY 0x00000003 +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT 0x00000300 +#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV01_RENDER_SOLID_RECTANGLE_COLOR 0x00000304 + +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT(i0) (0x00000400 + 0x8*(i0)) +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__LEN 0x00000010 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X__SHIFT 0 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE(i0) (0x00000404 + 0x8*(i0)) +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__LEN 0x00000010 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W__MASK 0x0000ffff +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W__SHIFT 0 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H__MASK 0xffff0000 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H__SHIFT 16 + + +#define NV01_IMAGE_BLIT_PATCH 0x0000010c + + +#define NV11_IMAGE_BLIT_WAIT_FOR_IDLE 0x00000108 + +#define NV11_IMAGE_BLIT_FLIP_SET_READ 0x00000120 + +#define NV11_IMAGE_BLIT_FLIP_SET_WRITE 0x00000124 + +#define NV11_IMAGE_BLIT_FLIP_MAX 0x00000128 + +#define NV11_IMAGE_BLIT_FLIP_INCR_WRITE 0x0000012c + +#define NV11_IMAGE_BLIT_FLIP_WAIT 0x00000130 + +#define NV11_IMAGE_BLIT_FLIP_CRTC_INCR_READ 0x00000134 + +#define NV01_IMAGE_BLIT_DMA_NOTIFY 0x00000180 + +#define NV01_IMAGE_BLIT_COLOR_KEY 0x00000184 + +#define NV04_IMAGE_BLIT_COLOR_KEY 0x00000184 + +#define NV01_IMAGE_BLIT_CLIP_RECTANGLE 0x00000188 + +#define NV01_IMAGE_BLIT_PATTERN 0x0000018c + +#define NV04_IMAGE_BLIT_PATTERN 0x0000018c + +#define NV01_IMAGE_BLIT_ROP 0x00000190 + +#define NV01_IMAGE_BLIT_BETA1 0x00000194 + + +#define NV01_IMAGE_BLIT_SURFACE_SRC 0x00000198 + +#define NV01_IMAGE_BLIT_SURFACE_DST 0x0000019c + + +#define NV04_IMAGE_BLIT_BETA4 0x00000198 + +#define NV04_IMAGE_BLIT_SURFACES 0x0000019c + +#define NV01_IMAGE_BLIT_OPERATION 0x000002fc +#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_AND 0x00000000 +#define NV01_IMAGE_BLIT_OPERATION_ROP_AND 0x00000001 +#define NV01_IMAGE_BLIT_OPERATION_BLEND_AND 0x00000002 +#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY 0x00000003 +#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV01_IMAGE_BLIT_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV01_IMAGE_BLIT_POINT_IN 0x00000300 +#define NV01_IMAGE_BLIT_POINT_IN_X__MASK 0x0000ffff +#define NV01_IMAGE_BLIT_POINT_IN_X__SHIFT 0 +#define NV01_IMAGE_BLIT_POINT_IN_Y__MASK 0xffff0000 +#define NV01_IMAGE_BLIT_POINT_IN_Y__SHIFT 16 + +#define NV01_IMAGE_BLIT_POINT_OUT 0x00000304 +#define NV01_IMAGE_BLIT_POINT_OUT_X__MASK 0x0000ffff +#define NV01_IMAGE_BLIT_POINT_OUT_X__SHIFT 0 +#define NV01_IMAGE_BLIT_POINT_OUT_Y__MASK 0xffff0000 +#define NV01_IMAGE_BLIT_POINT_OUT_Y__SHIFT 16 + +#define NV01_IMAGE_BLIT_SIZE 0x00000308 +#define NV01_IMAGE_BLIT_SIZE_W__MASK 0x0000ffff +#define NV01_IMAGE_BLIT_SIZE_W__SHIFT 0 +#define NV01_IMAGE_BLIT_SIZE_H__MASK 0xffff0000 +#define NV01_IMAGE_BLIT_SIZE_H__SHIFT 16 + + +#define NV04_INDEXED_IMAGE_FROM_CPU_PATCH 0x0000010c + +#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 + +#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_LUT 0x00000184 + +#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_KEY 0x00000188 + +#define NV04_INDEXED_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x0000018c + +#define NV04_INDEXED_IMAGE_FROM_CPU_PATTERN 0x00000190 + +#define NV04_INDEXED_IMAGE_FROM_CPU_ROP 0x00000194 + +#define NV04_INDEXED_IMAGE_FROM_CPU_BETA1 0x00000198 + +#define NV04_INDEXED_IMAGE_FROM_CPU_BETA4 0x0000019c + +#define NV04_INDEXED_IMAGE_FROM_CPU_SURFACE 0x000001a0 + +#define NV05_INDEXED_IMAGE_FROM_CPU_SURFACE 0x000001a0 + +#define NV05_INDEXED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000003e0 + +#define NV04_INDEXED_IMAGE_FROM_CPU_OPERATION 0x000003e4 + +#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_FORMAT 0x000003e8 + +#define NV04_INDEXED_IMAGE_FROM_CPU_INDEX_FORMAT 0x000003ec + +#define NV04_INDEXED_IMAGE_FROM_CPU_LUT_OFFSET 0x000003f0 + +#define NV04_INDEXED_IMAGE_FROM_CPU_POINT 0x000003f4 + +#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_OUT 0x000003f8 + +#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_IN 0x000003fc + +#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0)) +#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004 +#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__LEN 0x00000700 + + +#define NV10_IMAGE_FROM_CPU_WAIT_FOR_IDLE 0x00000108 + +#define NV01_IMAGE_FROM_CPU_PATCH 0x0000010c + +#define NV01_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 + +#define NV01_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 + +#define NV04_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 + +#define NV01_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x00000188 + +#define NV01_IMAGE_FROM_CPU_PATTERN 0x0000018c + +#define NV04_IMAGE_FROM_CPU_PATTERN 0x0000018c + +#define NV01_IMAGE_FROM_CPU_ROP 0x00000190 + +#define NV01_IMAGE_FROM_CPU_BETA1 0x00000194 + + +#define NV01_IMAGE_FROM_CPU_SURFACE_DST 0x00000198 + + +#define NV04_IMAGE_FROM_CPU_BETA4 0x00000198 + +#define NV04_IMAGE_FROM_CPU_SURFACE 0x0000019c + +#define NV05_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8 + +#define NV01_IMAGE_FROM_CPU_OPERATION 0x000002fc +#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_AND 0x00000000 +#define NV01_IMAGE_FROM_CPU_OPERATION_ROP_AND 0x00000001 +#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_AND 0x00000002 +#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY 0x00000003 +#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300 +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_R5G6G5 0x00000001 +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A1R5G5B5 0x00000002 +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X1R5G5B5 0x00000003 +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A8R8G8B8 0x00000004 +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X8R8G8B8 0x00000005 + +#define NV01_IMAGE_FROM_CPU_POINT 0x00000304 +#define NV01_IMAGE_FROM_CPU_POINT_X__MASK 0x0000ffff +#define NV01_IMAGE_FROM_CPU_POINT_X__SHIFT 0 +#define NV01_IMAGE_FROM_CPU_POINT_Y__MASK 0xffff0000 +#define NV01_IMAGE_FROM_CPU_POINT_Y__SHIFT 16 + +#define NV01_IMAGE_FROM_CPU_SIZE_OUT 0x00000308 +#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W__MASK 0x0000ffff +#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W__SHIFT 0 +#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H__MASK 0xffff0000 +#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H__SHIFT 16 + +#define NV01_IMAGE_FROM_CPU_SIZE_IN 0x0000030c +#define NV01_IMAGE_FROM_CPU_SIZE_IN_W__MASK 0x0000ffff +#define NV01_IMAGE_FROM_CPU_SIZE_IN_W__SHIFT 0 +#define NV01_IMAGE_FROM_CPU_SIZE_IN_H__MASK 0xffff0000 +#define NV01_IMAGE_FROM_CPU_SIZE_IN_H__SHIFT 16 + +#define NV01_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0)) +#define NV01_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004 +#define NV01_IMAGE_FROM_CPU_COLOR__LEN 0x00000020 + +#define NV04_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0)) +#define NV04_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004 +#define NV04_IMAGE_FROM_CPU_COLOR__LEN 0x00000700 + + +#define NV03_STRETCHED_IMAGE_FROM_CPU_PATCH 0x0000010c + +#define NV03_STRETCHED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 + +#define NV04_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_PATTERN 0x00000188 + +#define NV04_STRETCHED_IMAGE_FROM_CPU_PATTERN 0x00000188 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_ROP 0x0000018c + +#define NV03_STRETCHED_IMAGE_FROM_CPU_BETA1 0x00000190 + + +#define NV03_STRETCHED_IMAGE_FROM_CPU_SURFACE_DST 0x00000194 + + +#define NV04_STRETCHED_IMAGE_FROM_CPU_BETA4 0x00000194 + +#define NV04_STRETCHED_IMAGE_FROM_CPU_SURFACE 0x00000198 + +#define NV05_STRETCHED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_OPERATION 0x000002fc + +#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN 0x00000304 +#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W__MASK 0x0000ffff +#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W__SHIFT 0 +#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H__MASK 0xffff0000 +#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H__SHIFT 16 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_DX_DU 0x00000308 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_DY_DV 0x0000030c + +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT 0x00000310 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X__MASK 0x0000ffff +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X__SHIFT 0 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y__MASK 0xffff0000 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y__SHIFT 16 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE 0x00000314 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W__MASK 0x0000ffff +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W__SHIFT 0 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H__MASK 0xffff0000 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H__SHIFT 16 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4 0x00000318 +#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X__MASK 0x0000ffff +#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X__SHIFT 0 +#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y__MASK 0xffff0000 +#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y__SHIFT 16 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0)) +#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004 +#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__LEN 0x00000700 + + +#define NV10_SCALED_IMAGE_FROM_MEMORY_WAIT_FOR_IDLE 0x00000108 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_NOTIFY 0x00000180 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_IMAGE 0x00000184 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_PATTERN 0x00000188 + +#define NV04_SCALED_IMAGE_FROM_MEMORY_PATTERN 0x00000188 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_ROP 0x0000018c + +#define NV03_SCALED_IMAGE_FROM_MEMORY_BETA1 0x00000190 + + +#define NV03_SCALED_IMAGE_FROM_MEMORY_SURFACE_DST 0x00000194 + + +#define NV04_SCALED_IMAGE_FROM_MEMORY_BETA4 0x00000194 + +#define NV04_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000198 + +#define NV05_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000198 + +#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION 0x000002fc +#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_DITHER 0x00000000 +#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_TRUNCATE 0x00000001 +#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_SUBTR_TRUNCATE 0x00000002 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT 0x00000300 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A1R5G5B5 0x00000001 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X1R5G5B5 0x00000002 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A8R8G8B8 0x00000003 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X8R8G8B8 0x00000004 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_V8YB8U8YA8 0x00000005 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_YB8V8YA8U8 0x00000006 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_R5G6B5 0x00000007 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_Y8 0x00000008 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_AY8 0x00000009 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION 0x00000304 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_AND 0x00000000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_ROP_AND 0x00000001 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_AND 0x00000002 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY 0x00000003 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT 0x00000308 +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y__SHIFT 16 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE 0x0000030c +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H__SHIFT 16 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT 0x00000310 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y__SHIFT 16 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE 0x00000314 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H__SHIFT 16 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_DU_DX 0x00000318 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_DV_DY 0x0000031c + +#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE 0x00000400 +#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H__SHIFT 16 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT 0x00000404 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN__MASK 0x00ff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN__SHIFT 16 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CENTER 0x00010000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CORNER 0x00020000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER__MASK 0xff000000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER__SHIFT 24 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_POINT_SAMPLE 0x00000000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_BILINEAR 0x01000000 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_OFFSET 0x00000408 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT 0x0000040c +#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V__SHIFT 16 + + +#define NV50_SCALED_IMAGE_FROM_MEMORY_OFFSET_HIGH 0x00000410 + +#define NV50_SCALED_IMAGE_FROM_MEMORY_SRC_LINEAR 0x00000414 + +#define NV50_SCALED_IMAGE_FROM_MEMORY_SRC_TILE_MODE 0x00000418 + + +#define NV03_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180 + +#define NV03_GDI_RECTANGLE_TEXT_PATTERN 0x00000184 + +#define NV03_GDI_RECTANGLE_TEXT_ROP 0x00000188 + +#define NV03_GDI_RECTANGLE_TEXT_BETA1 0x0000019c + +#define NV03_GDI_RECTANGLE_TEXT_SURFACE_DST 0x00000190 + +#define NV03_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc + +#define NV03_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300 + +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304 + +#define NV03_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc + +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT 0x00000400 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE 0x00000404 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B 0x000007f4 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B 0x000007f8 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_COLOR1_B 0x000007fc + +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0 0x00000800 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1 0x00000804 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x00000bec +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x00000bf0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_COLOR1_C 0x00000bf4 + +#define NV03_GDI_RECTANGLE_TEXT_SIZE_C 0x00000bf8 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_POINT_C 0x00000bfc +#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(i0) (0x00000c00 + 0x4*(i0)) +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__ESIZE 0x00000004 +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__LEN 0x00000020 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0 0x00000fe8 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1 0x00000fec +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_COLOR1_D 0x00000ff0 + +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D 0x00000ff4 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D 0x00000ff8 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_POINT_D 0x00000ffc +#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D(i0) (0x00001000 + 0x4*(i0)) +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__ESIZE 0x00000004 +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__LEN 0x00000020 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x000013e4 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x000013e8 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_COLOR0_E 0x000013ec + +#define NV03_GDI_RECTANGLE_TEXT_COLOR1_E 0x000013f0 + +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x000013f4 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x000013f8 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_POINT_E 0x000013fc +#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(i0) (0x00001400 + 0x4*(i0)) +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__ESIZE 0x00000004 +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__LEN 0x00000020 + + +#define NV04_GDI_RECTANGLE_TEXT_PATCH 0x0000010c + +#define NV04_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180 + +#define NV04_GDI_RECTANGLE_TEXT_DMA_FONTS 0x00000184 + +#define NV04_GDI_RECTANGLE_TEXT_PATTERN 0x00000188 + +#define NV04_GDI_RECTANGLE_TEXT_ROP 0x0000018c + +#define NV04_GDI_RECTANGLE_TEXT_BETA1 0x00000190 + +#define NV04_GDI_RECTANGLE_TEXT_BETA4 0x00000194 + +#define NV04_GDI_RECTANGLE_TEXT_SURFACE 0x00000198 + +#define NV04_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_AND 0x00000000 +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_ROP_AND 0x00000001 +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_AND 0x00000002 +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY 0x00000003 +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300 +#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304 +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_CGA6 0x00000001 +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_LE 0x00000002 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc + +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT(i0) (0x00000400 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__LEN 0x00000020 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE(i0) (0x00000404 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__LEN 0x00000020 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0 0x000005f4 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1 0x000005f8 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_B 0x000005fc + +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0(i0) (0x00000600 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__LEN 0x00000020 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1(i0) (0x00000604 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__LEN 0x00000020 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x000007ec +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x000007f0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_C 0x000007f4 + +#define NV04_GDI_RECTANGLE_TEXT_SIZE_C 0x000007f8 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_POINT_C 0x000007fc +#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(i0) (0x00000800 + 0x4*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__ESIZE 0x00000004 +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__LEN 0x00000080 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x00000be4 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x00000be8 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR0_E 0x00000bec + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_E 0x00000bf0 + +#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x00000bf4 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x00000bf8 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_POINT_E 0x00000bfc +#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(i0) (0x00000c00 + 0x4*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__ESIZE 0x00000004 +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__LEN 0x00000080 + +#define NV04_GDI_RECTANGLE_TEXT_FONT_F 0x00000ff0 +#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET__MASK 0x0fffffff +#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH__MASK 0xf0000000 +#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH__SHIFT 28 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0 0x00000ff4 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1 0x00000ff8 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_F 0x00000ffc + +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F(i0) (0x00001000 + 0x4*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__ESIZE 0x00000004 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__LEN 0x00000100 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX__MASK 0x000000ff +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X__MASK 0x000fff00 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X__SHIFT 8 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y__MASK 0xfff00000 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y__SHIFT 20 + +#define NV04_GDI_RECTANGLE_TEXT_FONT_G 0x000017f0 +#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET__MASK 0x0fffffff +#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH__MASK 0xf0000000 +#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH__SHIFT 28 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0 0x000017f4 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1 0x000017f8 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_G 0x000017fc + +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT(i0) (0x00001800 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__LEN 0x00000100 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX(i0) (0x00001804 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__LEN 0x00000100 + + +#define NV10_TEXTURE_FROM_CPU_WAIT_FOR_IDLE 0x00000108 + +#define NV10_TEXTURE_FROM_CPU_DMA_NOTIFY 0x00000180 + +#define NV10_TEXTURE_FROM_CPU_SURFACE 0x00000184 + +#define NV10_TEXTURE_FROM_CPU_COLOR_FORMAT 0x00000300 + +#define NV10_TEXTURE_FROM_CPU_POINT 0x00000304 +#define NV10_TEXTURE_FROM_CPU_POINT_X__MASK 0x0000ffff +#define NV10_TEXTURE_FROM_CPU_POINT_X__SHIFT 0 +#define NV10_TEXTURE_FROM_CPU_POINT_Y__MASK 0xffff0000 +#define NV10_TEXTURE_FROM_CPU_POINT_Y__SHIFT 16 + +#define NV10_TEXTURE_FROM_CPU_SIZE 0x00000308 +#define NV10_TEXTURE_FROM_CPU_SIZE_W__MASK 0x0000ffff +#define NV10_TEXTURE_FROM_CPU_SIZE_W__SHIFT 0 +#define NV10_TEXTURE_FROM_CPU_SIZE_H__MASK 0xffff0000 +#define NV10_TEXTURE_FROM_CPU_SIZE_H__SHIFT 16 + +#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL 0x0000030c +#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X__MASK 0x0000ffff +#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X__SHIFT 0 +#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W__MASK 0xffff0000 +#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W__SHIFT 16 + +#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL 0x00000310 +#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y__MASK 0x0000ffff +#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y__SHIFT 0 +#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H__MASK 0xffff0000 +#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H__SHIFT 16 + +#define NV10_TEXTURE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0)) +#define NV10_TEXTURE_FROM_CPU_COLOR__ESIZE 0x00000004 +#define NV10_TEXTURE_FROM_CPU_COLOR__LEN 0x00000700 + + +#endif /* NV01_2D_XML */ diff --git a/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h new file mode 100644 index 0000000000..d4fb680a36 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h @@ -0,0 +1,738 @@ +#ifndef NV04_3D_XML +#define NV04_3D_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv04_3d.xml ( 17839 bytes, from 2010-11-15 02:23:48) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) +- nv_3ddefs.xml ( 16394 bytes, from 2010-11-01 00:28:46) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <arthur.huillet@free.fr> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <koala_br@users.sourceforge.net> (koala_br) +- Carlos Martin <carlosmn@users.sf.net> (carlosmn) +- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr) +- Dawid Gajownik <gajownik@users.sf.net> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag) +- EdB <edb_@users.sf.net> (edb_) +- Erik Waling <erikwailing@users.sf.net> (erikwaling) +- Francisco Jerez <currojerez@riseup.net> (curro) +- imirkin <imirkin@users.sf.net> (imirkin) +- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome) +- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy) +- Laurent Carlier <lordheavym@gmail.com> (lordheavy) +- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1) +- Maarten Maathuis <madman2003@gmail.com> (stillunknown) +- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin) +- Mark Carey <mark.carey@gmail.com> (careym) +- Matthieu Castet <matthieu.castet@parrot.com> (mat-c) +- nvidiaman <nvidiaman@users.sf.net> (nvidiaman) +- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata) +- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen) +- Peter Popov <ironpeter@users.sf.net> (ironpeter) +- Richard Hughes <hughsient@users.sf.net> (hughsient) +- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <leroutier@users.sf.net> (leroutier) +- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu) +- sturmflut <sturmflut@users.sf.net> (sturmflut) +- Sylvain Munaut <tnt@246tNt.com> +- Victor Stinner <victor.stinner@haypocalc.com> (haypo) +- Wladmir van der Laan <laanwj@gmail.com> (miathan6) +- Younes Manton <younes.m@gmail.com> (ymanton) + +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 (including the +next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. +*/ + + + +#define NV04_CONTEXT_SURFACES_3D_DMA_NOTIFY 0x00000180 + +#define NV04_CONTEXT_SURFACES_3D_DMA_COLOR 0x00000184 + +#define NV04_CONTEXT_SURFACES_3D_DMA_ZETA 0x00000188 + +#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL 0x000002f8 +#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X__MASK 0x0000ffff +#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X__SHIFT 0 +#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W__MASK 0xffff0000 +#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W__SHIFT 16 + +#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL 0x000002fc +#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y__MASK 0x0000ffff +#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y__SHIFT 0 +#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H__MASK 0xffff0000 +#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H__SHIFT 16 + +#define NV04_CONTEXT_SURFACES_3D_FORMAT 0x00000300 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR__MASK 0x000000ff +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR__SHIFT 0 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000001 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000002 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_R5G6B5 0x00000003 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000004 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000005 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000006 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000007 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_A8R8G8B8 0x00000008 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE__MASK 0x0000ff00 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE__SHIFT 8 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_PITCH 0x00000100 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_SWIZZLE 0x00000200 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U__MASK 0x00ff0000 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U__SHIFT 16 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V__MASK 0xff000000 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V__SHIFT 24 + +#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE 0x00000304 +#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W__MASK 0x0000ffff +#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W__SHIFT 0 +#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H__MASK 0xffff0000 +#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H__SHIFT 16 + +#define NV04_CONTEXT_SURFACES_3D_PITCH 0x00000308 +#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR__MASK 0x0000ffff +#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR__SHIFT 0 +#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA__MASK 0xffff0000 +#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA__SHIFT 16 + +#define NV04_CONTEXT_SURFACES_3D_OFFSET_COLOR 0x0000030c + +#define NV04_CONTEXT_SURFACES_3D_OFFSET_ZETA 0x00000310 + + +#define NV04_TEXTURED_TRIANGLE_DMA_NOTIFY 0x00000180 + +#define NV04_TEXTURED_TRIANGLE_DMA_A 0x00000184 + +#define NV04_TEXTURED_TRIANGLE_DMA_B 0x00000188 + +#define NV04_TEXTURED_TRIANGLE_SURFACES 0x0000018c + +#define NV04_TEXTURED_TRIANGLE_COLORKEY 0x00000300 + +#define NV04_TEXTURED_TRIANGLE_OFFSET 0x00000304 + +#define NV04_TEXTURED_TRIANGLE_FORMAT 0x00000308 +#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_A 0x00000001 +#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_B 0x00000002 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_KEY_ENABLE 0x00000004 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH__MASK 0x00000030 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH__SHIFT 4 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER 0x00000010 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER 0x00000020 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH__MASK 0x000000c0 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH__SHIFT 6 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER 0x00000040 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER 0x00000080 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR__MASK 0x00000f00 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_Y8 0x00000100 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A1R5G5B5 0x00000200 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X1R5G5B5 0x00000300 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A4R4G4B4 0x00000400 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_R5G6B5 0x00000500 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A8R8G8B8 0x00000600 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X8R8G8B8 0x00000700 +#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS__MASK 0x0000f000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS__SHIFT 12 +#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U__MASK 0x000f0000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V__MASK 0x00f00000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V__SHIFT 20 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU__MASK 0x07000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU__SHIFT 24 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_REPEAT 0x01000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT 0x02000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE 0x03000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER 0x04000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPU 0x08000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV__MASK 0x70000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV__SHIFT 28 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_REPEAT 0x10000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT 0x20000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE 0x30000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER 0x40000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPV 0x80000000 + +#define NV04_TEXTURED_TRIANGLE_FILTER 0x0000030c +#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X__MASK 0x000000ff +#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y__MASK 0x00007f00 +#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE 0x00008000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS__MASK 0x00ff0000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY__MASK 0x07000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY__SHIFT 24 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST 0x01000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR 0x02000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE 0x08000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY__MASK 0x70000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY__SHIFT 28 +#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_NEAREST 0x10000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_LINEAR 0x20000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE 0x80000000 + +#define NV04_TEXTURED_TRIANGLE_BLEND 0x00000310 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP__MASK 0x0000000f +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECAL 0x00000001 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATE 0x00000002 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECALALPHA 0x00000003 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATEALPHA 0x00000004 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECALMASK 0x00000005 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATEMASK 0x00000006 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_COPY 0x00000007 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_ADD 0x00000008 +#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT__MASK 0x00000030 +#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT__SHIFT 4 +#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_LSB 0x00000010 +#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_MSB 0x00000020 +#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE__MASK 0x000000c0 +#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE__SHIFT 6 +#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040 +#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080 +#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE 0x00000100 +#define NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE 0x00001000 +#define NV04_TEXTURED_TRIANGLE_BLEND_FOG_ENABLE 0x00010000 +#define NV04_TEXTURED_TRIANGLE_BLEND_BLEND_ENABLE 0x00100000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC__MASK 0x0f000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC__SHIFT 24 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ZERO 0x01000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE 0x02000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_COLOR 0x03000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_COLOR 0x04000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_ALPHA 0x05000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_ALPHA 0x06000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_DST_ALPHA 0x07000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_ALPHA 0x08000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_DST_COLOR 0x09000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_COLOR 0x0a000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_ALPHA_SATURATE 0x0b000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST__MASK 0xf0000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST__SHIFT 28 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ZERO 0x10000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE 0x20000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_COLOR 0x30000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_COLOR 0x40000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_ALPHA 0x50000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_ALPHA 0x60000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_DST_ALPHA 0x70000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_DST_ALPHA 0x80000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_DST_COLOR 0x90000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_DST_COLOR 0xa0000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_ALPHA_SATURATE 0xb0000000 + +#define NV04_TEXTURED_TRIANGLE_CONTROL 0x00000314 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF__MASK 0x000000ff +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC__MASK 0x00000f00 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_NEVER 0x00000100 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_LESS 0x00000200 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_EQUAL 0x00000300 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_LEQUAL 0x00000400 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_GREATER 0x00000500 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_NOTEQUAL 0x00000600 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_GEQUAL 0x00000700 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_ALWAYS 0x00000800 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_ENABLE 0x00001000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN__MASK 0x00002000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN__SHIFT 13 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CENTER 0x00000000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CORNER 0x00002000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_ENABLE 0x00004000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC__MASK 0x000f0000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_NEVER 0x00010000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_LESS 0x00020000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_EQUAL 0x00030000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_LEQUAL 0x00040000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_GREATER 0x00050000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_NOTEQUAL 0x00060000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_GEQUAL 0x00070000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_ALWAYS 0x00080000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE__MASK 0x00300000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE__SHIFT 20 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_BOTH 0x00000000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_NONE 0x00100000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CW 0x00200000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CCW 0x00300000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_DITHER_ENABLE 0x00400000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_PERSPECTIVE_ENABLE 0x00800000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_WRITE 0x01000000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT__MASK 0xc0000000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT__SHIFT 30 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_FIXED 0x40000000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_FLOAT 0x80000000 + +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR 0x00000318 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B__MASK 0x000000ff +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G__MASK 0x0000ff00 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R__MASK 0x00ff0000 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A__MASK 0xff000000 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A__SHIFT 24 + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX(i0) (0x00000400 + 0x20*(i0)) +#define NV04_TEXTURED_TRIANGLE_TLVERTEX__ESIZE 0x00000020 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX__LEN 0x00000010 + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SX(i0) (0x00000400 + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SY(i0) (0x00000404 + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SZ(i0) (0x00000408 + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_RHW(i0) (0x0000040c + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR(i0) (0x00000410 + 0x20*(i0)) +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B__MASK 0x000000ff +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G__MASK 0x0000ff00 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R__MASK 0x00ff0000 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A__MASK 0xff000000 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A__SHIFT 24 + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR(i0) (0x00000414 + 0x20*(i0)) +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B__MASK 0x000000ff +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G__MASK 0x0000ff00 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R__MASK 0x00ff0000 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG__MASK 0xff000000 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG__SHIFT 24 + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TU(i0) (0x00000418 + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TV(i0) (0x0000041c + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE(i0) (0x00000600 + 0x4*(i0)) +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__ESIZE 0x00000004 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__LEN 0x00000040 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0__MASK 0x0000000f +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1__MASK 0x000000f0 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1__SHIFT 4 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2__MASK 0x00000f00 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3__MASK 0x0000f000 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3__SHIFT 12 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4__MASK 0x000f0000 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5__MASK 0x00f00000 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5__SHIFT 20 + + +#define NV04_MULTITEX_TRIANGLE_DMA_NOTIFY 0x00000180 + +#define NV04_MULTITEX_TRIANGLE_DMA_A 0x00000184 + +#define NV04_MULTITEX_TRIANGLE_DMA_B 0x00000188 + +#define NV04_MULTITEX_TRIANGLE_SURFACES 0x0000018c + +#define NV04_MULTITEX_TRIANGLE_OFFSET(i0) (0x00000308 + 0x4*(i0)) +#define NV04_MULTITEX_TRIANGLE_OFFSET__ESIZE 0x00000004 +#define NV04_MULTITEX_TRIANGLE_OFFSET__LEN 0x00000002 + +#define NV04_MULTITEX_TRIANGLE_FORMAT(i0) (0x00000310 + 0x4*(i0)) +#define NV04_MULTITEX_TRIANGLE_FORMAT__ESIZE 0x00000004 +#define NV04_MULTITEX_TRIANGLE_FORMAT__LEN 0x00000002 +#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_A 0x00000001 +#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_B 0x00000002 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH__MASK 0x00000030 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH__SHIFT 4 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER 0x00000010 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER 0x00000020 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH__MASK 0x000000c0 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH__SHIFT 6 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER 0x00000040 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER 0x00000080 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR__MASK 0x00000f00 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_Y8 0x00000100 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A1R5G5B5 0x00000200 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_X1R5G5B5 0x00000300 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A4R4G4B4 0x00000400 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_R5G6B5 0x00000500 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A8R8G8B8 0x00000600 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_X8R8G8B8 0x00000700 +#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS__MASK 0x0000f000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS__SHIFT 12 +#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U__MASK 0x000f0000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V__MASK 0x00f00000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V__SHIFT 20 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU__MASK 0x07000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU__SHIFT 24 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_REPEAT 0x01000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT 0x02000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE 0x03000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER 0x04000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPU 0x08000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV__MASK 0x70000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV__SHIFT 28 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_REPEAT 0x10000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT 0x20000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE 0x30000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER 0x40000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPV 0x80000000 + +#define NV04_MULTITEX_TRIANGLE_FILTER(i0) (0x00000318 + 0x4*(i0)) +#define NV04_MULTITEX_TRIANGLE_FILTER__ESIZE 0x00000004 +#define NV04_MULTITEX_TRIANGLE_FILTER__LEN 0x00000002 +#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y__MASK 0x00007f00 +#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE 0x00008000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY__MASK 0x07000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY__SHIFT 24 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST 0x01000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR 0x02000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE 0x08000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY__MASK 0x70000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY__SHIFT 28 +#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_NEAREST 0x10000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_LINEAR 0x20000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE 0x80000000 + +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA(i0) (0x00000320 + 0xc*(i0)) +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__ESIZE 0x0000000c +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__LEN 0x00000002 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE0 0x00000001 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0__MASK 0x000000fc +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0__SHIFT 2 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_ZERO 0x00000004 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_CONSTANT 0x00000008 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PRIMARY_COLOR 0x0000000c +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PREVIOUS 0x00000010 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE0 0x00000014 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE1 0x00000018 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURELOD 0x0000001c +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE1 0x00000100 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1__MASK 0x0000fc00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1__SHIFT 10 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_ZERO 0x00000400 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_CONSTANT 0x00000800 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PRIMARY_COLOR 0x00000c00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PREVIOUS 0x00001000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE0 0x00001400 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE1 0x00001800 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURELOD 0x00001c00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE2 0x00010000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2__MASK 0x00fc0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2__SHIFT 18 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_ZERO 0x00040000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_CONSTANT 0x00080000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PRIMARY_COLOR 0x000c0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PREVIOUS 0x00100000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE0 0x00140000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE1 0x00180000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURELOD 0x001c0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE3 0x01000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3__MASK 0x1c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3__SHIFT 26 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_ZERO 0x04000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_CONSTANT 0x08000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PRIMARY_COLOR 0x0c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PREVIOUS 0x10000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE0 0x14000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE1 0x18000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURELOD 0x1c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP__MASK 0xe0000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP__SHIFT 29 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_IDENTITY 0x20000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE2 0x40000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE4 0x60000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS 0x80000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS_SCALE2 0xe0000000 + +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR(i0) (0x00000324 + 0xc*(i0)) +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__ESIZE 0x0000000c +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__LEN 0x00000002 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE0 0x00000001 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA0 0x00000002 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__MASK 0x000000fc +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__SHIFT 2 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_ZERO 0x00000004 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_CONSTANT 0x00000008 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PRIMARY_COLOR 0x0000000c +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PREVIOUS 0x00000010 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE0 0x00000014 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE1 0x00000018 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURELOD 0x0000001c +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE1 0x00000100 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA1 0x00000200 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1__MASK 0x0000fc00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1__SHIFT 10 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_ZERO 0x00000400 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_CONSTANT 0x00000800 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PRIMARY_COLOR 0x00000c00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PREVIOUS 0x00001000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE0 0x00001400 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE1 0x00001800 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURELOD 0x00001c00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE2 0x00010000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA2 0x00020000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2__MASK 0x00fc0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2__SHIFT 18 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_ZERO 0x00040000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_CONSTANT 0x00080000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PRIMARY_COLOR 0x000c0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PREVIOUS 0x00100000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE0 0x00140000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE1 0x00180000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURELOD 0x001c0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE3 0x01000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA3 0x02000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3__MASK 0x1c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3__SHIFT 26 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_ZERO 0x04000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_CONSTANT 0x08000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PRIMARY_COLOR 0x0c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PREVIOUS 0x10000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE0 0x14000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE1 0x18000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURELOD 0x1c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP__MASK 0xe0000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP__SHIFT 29 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_IDENTITY 0x20000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE2 0x40000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE4 0x60000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS 0x80000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS_SCALE2 0xe0000000 + +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR 0x00000334 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G__MASK 0x0000ff00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A__MASK 0xff000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A__SHIFT 24 + +#define NV04_MULTITEX_TRIANGLE_BLEND 0x00000338 +#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT__MASK 0x00000030 +#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT__SHIFT 4 +#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_LSB 0x00000010 +#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_MSB 0x00000020 +#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE__MASK 0x000000c0 +#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE__SHIFT 6 +#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040 +#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080 +#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0 +#define NV04_MULTITEX_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE 0x00000100 +#define NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE 0x00001000 +#define NV04_MULTITEX_TRIANGLE_BLEND_FOG_ENABLE 0x00010000 +#define NV04_MULTITEX_TRIANGLE_BLEND_BLEND_ENABLE 0x00100000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC__MASK 0x0f000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC__SHIFT 24 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ZERO 0x01000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE 0x02000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_COLOR 0x03000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_COLOR 0x04000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_ALPHA 0x05000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_ALPHA 0x06000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_DST_ALPHA 0x07000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_ALPHA 0x08000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_DST_COLOR 0x09000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_COLOR 0x0a000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_ALPHA_SATURATE 0x0b000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST__MASK 0xf0000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST__SHIFT 28 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ZERO 0x10000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE 0x20000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_COLOR 0x30000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_COLOR 0x40000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_ALPHA 0x50000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_ALPHA 0x60000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_DST_ALPHA 0x70000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_DST_ALPHA 0x80000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_DST_COLOR 0x90000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_DST_COLOR 0xa0000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_ALPHA_SATURATE 0xb0000000 + +#define NV04_MULTITEX_TRIANGLE_CONTROL0 0x0000033c +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC__MASK 0x00000f00 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_NEVER 0x00000100 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_LESS 0x00000200 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_EQUAL 0x00000300 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_LEQUAL 0x00000400 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_GREATER 0x00000500 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_NOTEQUAL 0x00000600 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_GEQUAL 0x00000700 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_ALWAYS 0x00000800 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_ENABLE 0x00001000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN__MASK 0x00002000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN__SHIFT 13 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CENTER 0x00000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CORNER 0x00002000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_ENABLE 0x00004000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC__MASK 0x000f0000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_NEVER 0x00010000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_LESS 0x00020000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_EQUAL 0x00030000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_LEQUAL 0x00040000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_GREATER 0x00050000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_NOTEQUAL 0x00060000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_GEQUAL 0x00070000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_ALWAYS 0x00080000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE__MASK 0x00300000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE__SHIFT 20 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_BOTH 0x00000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_NONE 0x00100000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CW 0x00200000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CCW 0x00300000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_DITHER_ENABLE 0x00400000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_PERSPECTIVE_ENABLE 0x00800000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_WRITE 0x01000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_STENCIL_WRITE 0x02000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_WRITE 0x04000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_RED_WRITE 0x08000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_GREEN_WRITE 0x10000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_BLUE_WRITE 0x20000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT__MASK 0xc0000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT__SHIFT 30 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_FIXED 0x40000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_FLOAT 0x80000000 + +#define NV04_MULTITEX_TRIANGLE_CONTROL1 0x00000340 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_ENABLE 0x00000001 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC__MASK 0x000000f0 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC__SHIFT 4 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF__MASK 0x0000ff00 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE__MASK 0xff000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE__SHIFT 24 + +#define NV04_MULTITEX_TRIANGLE_CONTROL2 0x00000344 +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL__MASK 0x0000000f +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL__MASK 0x000000f0 +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL__SHIFT 4 +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS__MASK 0x00000f00 +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS__SHIFT 8 + +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR 0x00000348 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G__MASK 0x0000ff00 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A__MASK 0xff000000 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A__SHIFT 24 + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX(i0) (0x00000400 + 0x28*(i0)) +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX__ESIZE 0x00000028 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX__LEN 0x00000008 + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SX(i0) (0x00000400 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SY(i0) (0x00000404 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SZ(i0) (0x00000408 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_RHW(i0) (0x0000040c + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR(i0) (0x00000410 + 0x28*(i0)) +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G__MASK 0x0000ff00 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A__MASK 0xff000000 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A__SHIFT 24 + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR(i0) (0x00000414 + 0x28*(i0)) +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G__MASK 0x0000ff00 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG__MASK 0xff000000 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG__SHIFT 24 + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU0(i0) (0x00000418 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV0(i0) (0x0000041c + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU1(i0) (0x00000420 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV1(i0) (0x00000424 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE(i0) (0x00000540 + 0x4*(i0)) +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__ESIZE 0x00000004 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__LEN 0x00000030 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0__MASK 0x0000000f +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1__MASK 0x000000f0 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1__SHIFT 4 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2__MASK 0x00000f00 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3__MASK 0x0000f000 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3__SHIFT 12 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4__MASK 0x000f0000 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5__MASK 0x00f00000 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5__SHIFT 20 + + +#endif /* NV04_3D_XML */ diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.c b/src/mesa/drivers/dri/nouveau/nv04_context.c index 8683343b39..3140af56fd 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_context.c +++ b/src/mesa/drivers/dri/nouveau/nv04_context.c @@ -28,7 +28,7 @@ #include "nouveau_context.h" #include "nouveau_fbo.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" static GLboolean diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.h b/src/mesa/drivers/dri/nouveau/nv04_context.h index 45e70d2bc3..960a6550dc 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_context.h +++ b/src/mesa/drivers/dri/nouveau/nv04_context.h @@ -28,6 +28,7 @@ #define __NV04_CONTEXT_H__ #include "nouveau_context.h" +#include "nv_object.xml.h" struct nv04_context { struct nouveau_context base; diff --git a/src/mesa/drivers/dri/nouveau/nv04_render.c b/src/mesa/drivers/dri/nouveau/nv04_render.c index 47bad24f9d..ad45093edd 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_render.c +++ b/src/mesa/drivers/dri/nouveau/nv04_render.c @@ -27,7 +27,7 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" #include "tnl/tnl.h" diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c index a3e343660f..854571d07e 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c @@ -28,7 +28,7 @@ #include "nouveau_context.h" #include "nouveau_fbo.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" static inline unsigned @@ -36,11 +36,11 @@ get_rt_format(gl_format format) { switch (format) { case MESA_FORMAT_XRGB8888: - return 0x05; + return NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_X8R8G8B8; case MESA_FORMAT_ARGB8888: - return 0x08; + return NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_A8R8G8B8; case MESA_FORMAT_RGB565: - return 0x03; + return NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_R5G6B5; default: assert(0); } diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c index 658b23a4d9..21478de262 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c @@ -27,12 +27,13 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" #define COMBINER_SHIFT(in) \ - (NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT##in##_SHIFT \ - - NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_SHIFT) + (NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT##in##__SHIFT \ + - NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__SHIFT) #define COMBINER_SOURCE(reg) \ NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_##reg #define COMBINER_INVERT \ diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c index a114f44b22..98f2f98f1d 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c @@ -27,7 +27,8 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" static unsigned @@ -142,7 +143,7 @@ nv04_emit_control(struct gl_context *ctx, int emit) int cull_mode = ctx->Polygon.CullFaceMode; int front_face = ctx->Polygon.FrontFace; uint32_t ctrl0 = 1 << 30 | - NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN; + NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CORNER; uint32_t ctrl1 = 0, ctrl2 = 0; /* Color mask. */ @@ -210,7 +211,7 @@ nv04_emit_control(struct gl_context *ctx, int emit) int cull_mode = ctx->Polygon.CullFaceMode; int front_face = ctx->Polygon.FrontFace; uint32_t ctrl = 1 << 30 | - NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN; + NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CORNER; /* Dithering. */ if (ctx->Color.DitherFlag) diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c index 1fe47a30e4..5ed8b14755 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c @@ -29,7 +29,8 @@ #include "nouveau_texture.h" #include "nouveau_util.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" static uint32_t diff --git a/src/mesa/drivers/dri/nouveau/nv04_surface.c b/src/mesa/drivers/dri/nouveau/nv04_surface.c index 6d3ffa26d3..c1eda8b7f3 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_surface.c +++ b/src/mesa/drivers/dri/nouveau/nv04_surface.c @@ -25,7 +25,10 @@ */ #include "nouveau_driver.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv_m2mf.xml.h" +#include "nv01_2d.xml.h" +#include "nv04_3d.xml.h" #include "nouveau_context.h" #include "nouveau_util.h" #include "nv04_driver.h" @@ -283,9 +286,9 @@ nv04_surface_copy_m2mf(struct gl_context *ctx, unsigned dst_offset = dst->offset + dy * dst->pitch + dx * dst->cpp; unsigned src_offset = src->offset + sy * src->pitch + sx * src->cpp; - nouveau_bo_marko(bctx, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_IN, + nouveau_bo_marko(bctx, m2mf, NV04_M2MF_DMA_BUFFER_IN, src->bo, bo_flags | NOUVEAU_BO_RD); - nouveau_bo_marko(bctx, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_OUT, + nouveau_bo_marko(bctx, m2mf, NV04_M2MF_DMA_BUFFER_OUT, dst->bo, bo_flags | NOUVEAU_BO_WR); while (h) { @@ -293,7 +296,7 @@ nv04_surface_copy_m2mf(struct gl_context *ctx, MARK_RING(chan, 9, 2); - BEGIN_RING(chan, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 8); + BEGIN_RING(chan, m2mf, NV04_M2MF_OFFSET_IN, 8); OUT_RELOCl(chan, src->bo, src_offset, bo_flags | NOUVEAU_BO_RD); OUT_RELOCl(chan, dst->bo, dst_offset, @@ -488,12 +491,11 @@ nv04_surface_init(struct gl_context *ctx) goto fail; /* Memory to memory format. */ - ret = nouveau_grobj_alloc(chan, handle++, NV04_MEMORY_TO_MEMORY_FORMAT, - &hw->m2mf); + ret = nouveau_grobj_alloc(chan, handle++, NV04_M2MF, &hw->m2mf); if (ret) goto fail; - BEGIN_RING(chan, hw->m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY, 1); + BEGIN_RING(chan, hw->m2mf, NV04_M2MF_DMA_NOTIFY, 1); OUT_RING (chan, hw->ntfy->handle); /* Context surfaces 2D. */ diff --git a/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h new file mode 100644 index 0000000000..cdc61f4573 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h @@ -0,0 +1,1619 @@ +#ifndef NV10_3D_XML +#define NV10_3D_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv10_3d.xml ( 18437 bytes, from 2010-11-15 15:30:21) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) +- nv_3ddefs.xml ( 16394 bytes, from 2010-11-01 00:28:46) +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <arthur.huillet@free.fr> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <koala_br@users.sourceforge.net> (koala_br) +- Carlos Martin <carlosmn@users.sf.net> (carlosmn) +- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr) +- Dawid Gajownik <gajownik@users.sf.net> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag) +- EdB <edb_@users.sf.net> (edb_) +- Erik Waling <erikwailing@users.sf.net> (erikwaling) +- Francisco Jerez <currojerez@riseup.net> (curro) +- imirkin <imirkin@users.sf.net> (imirkin) +- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome) +- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy) +- Laurent Carlier <lordheavym@gmail.com> (lordheavy) +- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1) +- Maarten Maathuis <madman2003@gmail.com> (stillunknown) +- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin) +- Mark Carey <mark.carey@gmail.com> (careym) +- Matthieu Castet <matthieu.castet@parrot.com> (mat-c) +- nvidiaman <nvidiaman@users.sf.net> (nvidiaman) +- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata) +- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen) +- Peter Popov <ironpeter@users.sf.net> (ironpeter) +- Richard Hughes <hughsient@users.sf.net> (hughsient) +- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <leroutier@users.sf.net> (leroutier) +- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu) +- sturmflut <sturmflut@users.sf.net> (sturmflut) +- Sylvain Munaut <tnt@246tNt.com> +- Victor Stinner <victor.stinner@haypocalc.com> (haypo) +- Wladmir van der Laan <laanwj@gmail.com> (miathan6) +- Younes Manton <younes.m@gmail.com> (ymanton) + +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 (including the +next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. +*/ + + +#define NV10_VERTEX_ATTR_POS 0x00000000 +#define NV10_VERTEX_ATTR_COLOR0 0x00000001 +#define NV10_VERTEX_ATTR_COLOR1 0x00000002 +#define NV10_VERTEX_ATTR_TEX0 0x00000003 +#define NV10_VERTEX_ATTR_TEX1 0x00000004 +#define NV10_VERTEX_ATTR_NORMAL 0x00000005 +#define NV10_VERTEX_ATTR_WEIGHT 0x00000006 +#define NV10_VERTEX_ATTR_FOG 0x00000007 + + + +#define NV11_3D_FLIP_SET_READ 0x00000120 + +#define NV11_3D_FLIP_SET_WRITE 0x00000124 + +#define NV11_3D_FLIP_MAX 0x00000128 + +#define NV11_3D_FLIP_INCR_WRITE 0x0000012c + +#define NV11_3D_FLIP_WAIT 0x00000130 + +#define NV10_3D_DMA_NOTIFY 0x00000180 + +#define NV10_3D_DMA_TEXTURE0 0x00000184 + +#define NV10_3D_DMA_TEXTURE1 0x00000188 + +#define NV10_3D_DMA_COLOR 0x00000194 + +#define NV10_3D_DMA_ZETA 0x00000198 + +#define NV10_3D_RT_HORIZ 0x00000200 +#define NV10_3D_RT_HORIZ_X__MASK 0x0000ffff +#define NV10_3D_RT_HORIZ_X__SHIFT 0 +#define NV10_3D_RT_HORIZ_W__MASK 0xffff0000 +#define NV10_3D_RT_HORIZ_W__SHIFT 16 + +#define NV10_3D_RT_VERT 0x00000204 +#define NV10_3D_RT_VERT_Y__MASK 0x0000ffff +#define NV10_3D_RT_VERT_Y__SHIFT 0 +#define NV10_3D_RT_VERT_H__MASK 0xffff0000 +#define NV10_3D_RT_VERT_H__SHIFT 16 + +#define NV10_3D_RT_FORMAT 0x00000208 +#define NV10_3D_RT_FORMAT_TYPE__MASK 0x00000f00 +#define NV10_3D_RT_FORMAT_TYPE__SHIFT 8 +#define NV10_3D_RT_FORMAT_TYPE_LINEAR 0x00000100 +#define NV10_3D_RT_FORMAT_TYPE_SWIZZLED 0x00000200 +#define NV10_3D_RT_FORMAT_DEPTH__MASK 0x00000030 +#define NV10_3D_RT_FORMAT_DEPTH__SHIFT 4 +#define NV10_3D_RT_FORMAT_DEPTH_Z24S8 0x00000000 +#define NV10_3D_RT_FORMAT_DEPTH_Z16 0x00000010 +#define NV10_3D_RT_FORMAT_COLOR__MASK 0x0000000f +#define NV10_3D_RT_FORMAT_COLOR__SHIFT 0 +#define NV10_3D_RT_FORMAT_COLOR_R5G6B5 0x00000003 +#define NV10_3D_RT_FORMAT_COLOR_X8R8G8B8 0x00000005 +#define NV10_3D_RT_FORMAT_COLOR_A8R8G8B8 0x00000008 +#define NV10_3D_RT_FORMAT_COLOR_B8 0x00000009 + +#define NV10_3D_RT_PITCH 0x0000020c +#define NV10_3D_RT_PITCH_COLOR_PITCH__MASK 0x0000ffff +#define NV10_3D_RT_PITCH_COLOR_PITCH__SHIFT 0 +#define NV10_3D_RT_PITCH_ZETA_PITCH__MASK 0xffff0000 +#define NV10_3D_RT_PITCH_ZETA_PITCH__SHIFT 16 + +#define NV10_3D_COLOR_OFFSET 0x00000210 + +#define NV10_3D_ZETA_OFFSET 0x00000214 + +#define NV10_3D_UNK0290 0x00000290 + +#define NV10_3D_VIEWPORT_CLIP_MODE 0x000002b4 + +#define NV10_3D_VIEWPORT_CLIP_HORIZ(i0) (0x000002c0 + 0x4*(i0)) +#define NV10_3D_VIEWPORT_CLIP_HORIZ__ESIZE 0x00000004 +#define NV10_3D_VIEWPORT_CLIP_HORIZ__LEN 0x00000008 +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__MASK 0x000007ff +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__SHIFT 0 +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_LEFT_ENABLE 0x00000800 +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__MASK 0x07ff0000 +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__SHIFT 16 +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_RIGHT_ENABLE 0x08000000 + +#define NV10_3D_VIEWPORT_CLIP_VERT(i0) (0x000002e0 + 0x4*(i0)) +#define NV10_3D_VIEWPORT_CLIP_VERT__ESIZE 0x00000004 +#define NV10_3D_VIEWPORT_CLIP_VERT__LEN 0x00000008 +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_T__MASK 0x000007ff +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_T__SHIFT 0 +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_TOP_ENABLE 0x00000800 +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_B__MASK 0x07ff0000 +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_B__SHIFT 16 +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_BOTTOM_ENABLE 0x08000000 + +#define NV10_3D_ALPHA_FUNC_ENABLE 0x00000300 + +#define NV10_3D_BLEND_FUNC_ENABLE 0x00000304 + +#define NV10_3D_CULL_FACE_ENABLE 0x00000308 + +#define NV10_3D_DEPTH_TEST_ENABLE 0x0000030c + +#define NV10_3D_DITHER_ENABLE 0x00000310 + +#define NV10_3D_LIGHTING_ENABLE 0x00000314 + +#define NV10_3D_POINT_PARAMETERS_ENABLE 0x00000318 + +#define NV10_3D_POINT_SMOOTH_ENABLE 0x0000031c + +#define NV10_3D_LINE_SMOOTH_ENABLE 0x00000320 + +#define NV10_3D_POLYGON_SMOOTH_ENABLE 0x00000324 + +#define NV10_3D_STENCIL_ENABLE 0x0000032c + +#define NV10_3D_POLYGON_OFFSET_POINT_ENABLE 0x00000330 + +#define NV10_3D_POLYGON_OFFSET_LINE_ENABLE 0x00000334 + +#define NV10_3D_POLYGON_OFFSET_FILL_ENABLE 0x00000338 + +#define NV10_3D_ALPHA_FUNC_FUNC 0x0000033c +#define NV10_3D_ALPHA_FUNC_FUNC_NEVER 0x00000200 +#define NV10_3D_ALPHA_FUNC_FUNC_LESS 0x00000201 +#define NV10_3D_ALPHA_FUNC_FUNC_EQUAL 0x00000202 +#define NV10_3D_ALPHA_FUNC_FUNC_LEQUAL 0x00000203 +#define NV10_3D_ALPHA_FUNC_FUNC_GREATER 0x00000204 +#define NV10_3D_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205 +#define NV10_3D_ALPHA_FUNC_FUNC_GEQUAL 0x00000206 +#define NV10_3D_ALPHA_FUNC_FUNC_ALWAYS 0x00000207 + +#define NV10_3D_ALPHA_FUNC_REF 0x00000340 + +#define NV10_3D_BLEND_FUNC_SRC 0x00000344 +#define NV10_3D_BLEND_FUNC_SRC_ZERO 0x00000000 +#define NV10_3D_BLEND_FUNC_SRC_ONE 0x00000001 +#define NV10_3D_BLEND_FUNC_SRC_SRC_COLOR 0x00000300 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301 +#define NV10_3D_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303 +#define NV10_3D_BLEND_FUNC_SRC_DST_ALPHA 0x00000304 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305 +#define NV10_3D_BLEND_FUNC_SRC_DST_COLOR 0x00000306 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307 +#define NV10_3D_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308 +#define NV10_3D_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002 +#define NV10_3D_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004 + +#define NV10_3D_BLEND_FUNC_DST 0x00000348 +#define NV10_3D_BLEND_FUNC_DST_ZERO 0x00000000 +#define NV10_3D_BLEND_FUNC_DST_ONE 0x00000001 +#define NV10_3D_BLEND_FUNC_DST_SRC_COLOR 0x00000300 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301 +#define NV10_3D_BLEND_FUNC_DST_SRC_ALPHA 0x00000302 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303 +#define NV10_3D_BLEND_FUNC_DST_DST_ALPHA 0x00000304 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305 +#define NV10_3D_BLEND_FUNC_DST_DST_COLOR 0x00000306 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307 +#define NV10_3D_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308 +#define NV10_3D_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002 +#define NV10_3D_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004 + +#define NV10_3D_BLEND_COLOR 0x0000034c +#define NV10_3D_BLEND_COLOR_B__MASK 0x000000ff +#define NV10_3D_BLEND_COLOR_B__SHIFT 0 +#define NV10_3D_BLEND_COLOR_G__MASK 0x0000ff00 +#define NV10_3D_BLEND_COLOR_G__SHIFT 8 +#define NV10_3D_BLEND_COLOR_R__MASK 0x00ff0000 +#define NV10_3D_BLEND_COLOR_R__SHIFT 16 +#define NV10_3D_BLEND_COLOR_A__MASK 0xff000000 +#define NV10_3D_BLEND_COLOR_A__SHIFT 24 + +#define NV10_3D_BLEND_EQUATION 0x00000350 +#define NV10_3D_BLEND_EQUATION_FUNC_ADD 0x00008006 +#define NV10_3D_BLEND_EQUATION_MIN 0x00008007 +#define NV10_3D_BLEND_EQUATION_MAX 0x00008008 +#define NV10_3D_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a +#define NV10_3D_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b + +#define NV10_3D_DEPTH_FUNC 0x00000354 +#define NV10_3D_DEPTH_FUNC_NEVER 0x00000200 +#define NV10_3D_DEPTH_FUNC_LESS 0x00000201 +#define NV10_3D_DEPTH_FUNC_EQUAL 0x00000202 +#define NV10_3D_DEPTH_FUNC_LEQUAL 0x00000203 +#define NV10_3D_DEPTH_FUNC_GREATER 0x00000204 +#define NV10_3D_DEPTH_FUNC_NOTEQUAL 0x00000205 +#define NV10_3D_DEPTH_FUNC_GEQUAL 0x00000206 +#define NV10_3D_DEPTH_FUNC_ALWAYS 0x00000207 + +#define NV10_3D_COLOR_MASK 0x00000358 +#define NV10_3D_COLOR_MASK_B 0x00000001 +#define NV10_3D_COLOR_MASK_G 0x00000100 +#define NV10_3D_COLOR_MASK_R 0x00010000 +#define NV10_3D_COLOR_MASK_A 0x01000000 + +#define NV10_3D_DEPTH_WRITE_ENABLE 0x0000035c + +#define NV10_3D_STENCIL_MASK 0x00000360 + +#define NV10_3D_STENCIL_FUNC_FUNC 0x00000364 +#define NV10_3D_STENCIL_FUNC_FUNC_NEVER 0x00000200 +#define NV10_3D_STENCIL_FUNC_FUNC_LESS 0x00000201 +#define NV10_3D_STENCIL_FUNC_FUNC_EQUAL 0x00000202 +#define NV10_3D_STENCIL_FUNC_FUNC_LEQUAL 0x00000203 +#define NV10_3D_STENCIL_FUNC_FUNC_GREATER 0x00000204 +#define NV10_3D_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205 +#define NV10_3D_STENCIL_FUNC_FUNC_GEQUAL 0x00000206 +#define NV10_3D_STENCIL_FUNC_FUNC_ALWAYS 0x00000207 + +#define NV10_3D_STENCIL_FUNC_REF 0x00000368 + +#define NV10_3D_STENCIL_FUNC_MASK 0x0000036c + +#define NV10_3D_STENCIL_OP_FAIL 0x00000370 +#define NV10_3D_STENCIL_OP_FAIL_ZERO 0x00000000 +#define NV10_3D_STENCIL_OP_FAIL_INVERT 0x0000150a +#define NV10_3D_STENCIL_OP_FAIL_KEEP 0x00001e00 +#define NV10_3D_STENCIL_OP_FAIL_REPLACE 0x00001e01 +#define NV10_3D_STENCIL_OP_FAIL_INCR 0x00001e02 +#define NV10_3D_STENCIL_OP_FAIL_DECR 0x00001e03 +#define NV10_3D_STENCIL_OP_FAIL_INCR_WRAP 0x00008507 +#define NV10_3D_STENCIL_OP_FAIL_DECR_WRAP 0x00008508 + +#define NV10_3D_STENCIL_OP_ZFAIL 0x00000374 +#define NV10_3D_STENCIL_OP_ZFAIL_ZERO 0x00000000 +#define NV10_3D_STENCIL_OP_ZFAIL_INVERT 0x0000150a +#define NV10_3D_STENCIL_OP_ZFAIL_KEEP 0x00001e00 +#define NV10_3D_STENCIL_OP_ZFAIL_REPLACE 0x00001e01 +#define NV10_3D_STENCIL_OP_ZFAIL_INCR 0x00001e02 +#define NV10_3D_STENCIL_OP_ZFAIL_DECR 0x00001e03 +#define NV10_3D_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507 +#define NV10_3D_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508 + +#define NV10_3D_STENCIL_OP_ZPASS 0x00000378 +#define NV10_3D_STENCIL_OP_ZPASS_ZERO 0x00000000 +#define NV10_3D_STENCIL_OP_ZPASS_INVERT 0x0000150a +#define NV10_3D_STENCIL_OP_ZPASS_KEEP 0x00001e00 +#define NV10_3D_STENCIL_OP_ZPASS_REPLACE 0x00001e01 +#define NV10_3D_STENCIL_OP_ZPASS_INCR 0x00001e02 +#define NV10_3D_STENCIL_OP_ZPASS_DECR 0x00001e03 +#define NV10_3D_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507 +#define NV10_3D_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508 + +#define NV10_3D_SHADE_MODEL 0x0000037c +#define NV10_3D_SHADE_MODEL_FLAT 0x00001d00 +#define NV10_3D_SHADE_MODEL_SMOOTH 0x00001d01 + +#define NV10_3D_LINE_WIDTH 0x00000380 + +#define NV10_3D_POLYGON_OFFSET_FACTOR 0x00000384 + +#define NV10_3D_POLYGON_OFFSET_UNITS 0x00000388 + +#define NV10_3D_POLYGON_MODE_FRONT 0x0000038c +#define NV10_3D_POLYGON_MODE_FRONT_POINT 0x00001b00 +#define NV10_3D_POLYGON_MODE_FRONT_LINE 0x00001b01 +#define NV10_3D_POLYGON_MODE_FRONT_FILL 0x00001b02 + +#define NV10_3D_POLYGON_MODE_BACK 0x00000390 +#define NV10_3D_POLYGON_MODE_BACK_POINT 0x00001b00 +#define NV10_3D_POLYGON_MODE_BACK_LINE 0x00001b01 +#define NV10_3D_POLYGON_MODE_BACK_FILL 0x00001b02 + +#define NV10_3D_DEPTH_RANGE_NEAR 0x00000394 + +#define NV10_3D_DEPTH_RANGE_FAR 0x00000398 + +#define NV10_3D_CULL_FACE 0x0000039c +#define NV10_3D_CULL_FACE_FRONT 0x00000404 +#define NV10_3D_CULL_FACE_BACK 0x00000405 +#define NV10_3D_CULL_FACE_FRONT_AND_BACK 0x00000408 + +#define NV10_3D_FRONT_FACE 0x000003a0 +#define NV10_3D_FRONT_FACE_CW 0x00000900 +#define NV10_3D_FRONT_FACE_CCW 0x00000901 + + +#define NV10_3D_VERTEX_POS_3F 0x00000c00 + + +#define NV10_3D_VERTEX_POS_3F_X 0x00000c00 + +#define NV10_3D_VERTEX_POS_3F_Y 0x00000c04 + +#define NV10_3D_VERTEX_POS_3F_Z 0x00000c08 + +#define NV10_3D_VERTEX_POS_4F 0x00000c18 + + +#define NV10_3D_VERTEX_POS_4F_X 0x00000c18 + +#define NV10_3D_VERTEX_POS_4F_Y 0x00000c1c + +#define NV10_3D_VERTEX_POS_4F_Z 0x00000c20 + +#define NV10_3D_VERTEX_POS_4F_W 0x00000c24 + +#define NV10_3D_VERTEX_NOR_3F 0x00000c30 + + +#define NV10_3D_VERTEX_NOR_3F_X 0x00000c30 + +#define NV10_3D_VERTEX_NOR_3F_Y 0x00000c34 + +#define NV10_3D_VERTEX_NOR_3F_Z 0x00000c38 + +#define NV10_3D_VERTEX_NOR_3I 0x00000c30 + + +#define NV10_3D_VERTEX_NOR_3I_XY 0x00000c30 +#define NV10_3D_VERTEX_NOR_3I_XY_X__MASK 0x0000ffff +#define NV10_3D_VERTEX_NOR_3I_XY_X__SHIFT 0 +#define NV10_3D_VERTEX_NOR_3I_XY_Y__MASK 0xffff0000 +#define NV10_3D_VERTEX_NOR_3I_XY_Y__SHIFT 16 + +#define NV10_3D_VERTEX_NOR_3I_Z 0x00000c34 +#define NV10_3D_VERTEX_NOR_3I_Z_Z__MASK 0x0000ffff +#define NV10_3D_VERTEX_NOR_3I_Z_Z__SHIFT 0 + +#define NV10_3D_VERTEX_COL_4F 0x00000c50 + + +#define NV10_3D_VERTEX_COL_4F_R 0x00000c50 + +#define NV10_3D_VERTEX_COL_4F_G 0x00000c54 + +#define NV10_3D_VERTEX_COL_4F_B 0x00000c58 + +#define NV10_3D_VERTEX_COL_4F_A 0x00000c5c + +#define NV10_3D_VERTEX_COL_3F 0x00000c60 + + +#define NV10_3D_VERTEX_COL_3F_R 0x00000c60 + +#define NV10_3D_VERTEX_COL_3F_G 0x00000c64 + +#define NV10_3D_VERTEX_COL_3F_B 0x00000c68 + +#define NV10_3D_VERTEX_COL_4I 0x00000c6c +#define NV10_3D_VERTEX_COL_4I_R__MASK 0x000000ff +#define NV10_3D_VERTEX_COL_4I_R__SHIFT 0 +#define NV10_3D_VERTEX_COL_4I_G__MASK 0x0000ff00 +#define NV10_3D_VERTEX_COL_4I_G__SHIFT 8 +#define NV10_3D_VERTEX_COL_4I_B__MASK 0x00ff0000 +#define NV10_3D_VERTEX_COL_4I_B__SHIFT 16 +#define NV10_3D_VERTEX_COL_4I_A__MASK 0xff000000 +#define NV10_3D_VERTEX_COL_4I_A__SHIFT 24 + +#define NV10_3D_VERTEX_COL2_3F 0x00000c80 + + +#define NV10_3D_VERTEX_COL2_3F_R 0x00000c80 + +#define NV10_3D_VERTEX_COL2_3F_G 0x00000c84 + +#define NV10_3D_VERTEX_COL2_3F_B 0x00000c88 + +#define NV10_3D_VERTEX_COL2_3I 0x00000c8c +#define NV10_3D_VERTEX_COL2_3I_R__MASK 0x000000ff +#define NV10_3D_VERTEX_COL2_3I_R__SHIFT 0 +#define NV10_3D_VERTEX_COL2_3I_G__MASK 0x0000ff00 +#define NV10_3D_VERTEX_COL2_3I_G__SHIFT 8 +#define NV10_3D_VERTEX_COL2_3I_B__MASK 0x00ff0000 +#define NV10_3D_VERTEX_COL2_3I_B__SHIFT 16 + +#define NV10_3D_VERTEX_TX0_2F 0x00000c90 + + +#define NV10_3D_VERTEX_TX0_2F_S 0x00000c90 + +#define NV10_3D_VERTEX_TX0_2F_T 0x00000c94 + +#define NV10_3D_VERTEX_TX0_2I 0x00000c98 +#define NV10_3D_VERTEX_TX0_2I_S__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX0_2I_S__SHIFT 0 +#define NV10_3D_VERTEX_TX0_2I_T__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX0_2I_T__SHIFT 16 + +#define NV10_3D_VERTEX_TX0_4F 0x00000ca0 + + +#define NV10_3D_VERTEX_TX0_4F_S 0x00000ca0 + +#define NV10_3D_VERTEX_TX0_4F_T 0x00000ca4 + +#define NV10_3D_VERTEX_TX0_4F_R 0x00000ca8 + +#define NV10_3D_VERTEX_TX0_4F_Q 0x00000cac + +#define NV10_3D_VERTEX_TX0_4I 0x00000cb0 + + +#define NV10_3D_VERTEX_TX0_4I_ST 0x00000cb0 +#define NV10_3D_VERTEX_TX0_4I_ST_S__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX0_4I_ST_S__SHIFT 0 +#define NV10_3D_VERTEX_TX0_4I_ST_T__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX0_4I_ST_T__SHIFT 16 + +#define NV10_3D_VERTEX_TX0_4I_RQ 0x00000cb4 +#define NV10_3D_VERTEX_TX0_4I_RQ_R__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX0_4I_RQ_R__SHIFT 0 +#define NV10_3D_VERTEX_TX0_4I_RQ_Q__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX0_4I_RQ_Q__SHIFT 16 + +#define NV10_3D_VERTEX_TX1_2F 0x00000cb8 + + +#define NV10_3D_VERTEX_TX1_2F_S 0x00000cb8 + +#define NV10_3D_VERTEX_TX1_2F_T 0x00000cbc + +#define NV10_3D_VERTEX_TX1_2I 0x00000cc0 +#define NV10_3D_VERTEX_TX1_2I_S__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX1_2I_S__SHIFT 0 +#define NV10_3D_VERTEX_TX1_2I_T__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX1_2I_T__SHIFT 16 + +#define NV10_3D_VERTEX_TX1_4F 0x00000cc8 + + +#define NV10_3D_VERTEX_TX1_4F_S 0x00000cc8 + +#define NV10_3D_VERTEX_TX1_4F_T 0x00000ccc + +#define NV10_3D_VERTEX_TX1_4F_R 0x00000cd0 + +#define NV10_3D_VERTEX_TX1_4F_Q 0x00000cd4 + +#define NV10_3D_VERTEX_TX1_4I 0x00000cd8 + + +#define NV10_3D_VERTEX_TX1_4I_ST 0x00000cd8 +#define NV10_3D_VERTEX_TX1_4I_ST_S__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX1_4I_ST_S__SHIFT 0 +#define NV10_3D_VERTEX_TX1_4I_ST_T__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX1_4I_ST_T__SHIFT 16 + +#define NV10_3D_VERTEX_TX1_4I_RQ 0x00000cdc +#define NV10_3D_VERTEX_TX1_4I_RQ_R__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX1_4I_RQ_R__SHIFT 0 +#define NV10_3D_VERTEX_TX1_4I_RQ_Q__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX1_4I_RQ_Q__SHIFT 16 + +#define NV10_3D_VERTEX_FOG_1F 0x00000ce0 + +#define NV10_3D_VERTEX_WGH_1F 0x00000ce4 + +#define NV10_3D_EDGEFLAG_ENABLE 0x00000cec + + +#define NV10_3D_DMA_VTXBUF 0x0000018c + +#define NV10_3D_VTXBUF_VALIDATE 0x00000cf0 + + +#define NV10_3D_VTXBUF_OFFSET(i0) (0x00000d00 + 0x8*(i0)) + +#define NV10_3D_VTXBUF_FMT(i0) (0x00000d04 + 0x8*(i0)) +#define NV10_3D_VTXBUF_FMT_TYPE__MASK 0x0000000f +#define NV10_3D_VTXBUF_FMT_TYPE__SHIFT 0 +#define NV10_3D_VTXBUF_FMT_TYPE_B8G8R8A8_UNORM 0x00000000 +#define NV10_3D_VTXBUF_FMT_TYPE_V16_SNORM 0x00000001 +#define NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT 0x00000002 +#define NV10_3D_VTXBUF_FMT_TYPE_U8_UNORM 0x00000004 +#define NV10_3D_VTXBUF_FMT_FIELDS__MASK 0x000000f0 +#define NV10_3D_VTXBUF_FMT_FIELDS__SHIFT 4 +#define NV10_3D_VTXBUF_FMT_STRIDE__MASK 0x0000ff00 +#define NV10_3D_VTXBUF_FMT_STRIDE__SHIFT 8 +#define NV10_3D_VTXBUF_FMT_HOMOGENEOUS 0x01000000 + +#define NV10_3D_VERTEX_BEGIN_END 0x00000dfc +#define NV10_3D_VERTEX_BEGIN_END_STOP 0x00000000 +#define NV10_3D_VERTEX_BEGIN_END_POINTS 0x00000001 +#define NV10_3D_VERTEX_BEGIN_END_LINES 0x00000002 +#define NV10_3D_VERTEX_BEGIN_END_LINE_LOOP 0x00000003 +#define NV10_3D_VERTEX_BEGIN_END_LINE_STRIP 0x00000004 +#define NV10_3D_VERTEX_BEGIN_END_TRIANGLES 0x00000005 +#define NV10_3D_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006 +#define NV10_3D_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007 +#define NV10_3D_VERTEX_BEGIN_END_QUADS 0x00000008 +#define NV10_3D_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009 +#define NV10_3D_VERTEX_BEGIN_END_POLYGON 0x0000000a + +#define NV10_3D_VTXBUF_ELEMENT_U16 0x00000e00 +#define NV10_3D_VTXBUF_ELEMENT_U16_I0__MASK 0x0000ffff +#define NV10_3D_VTXBUF_ELEMENT_U16_I0__SHIFT 0 +#define NV10_3D_VTXBUF_ELEMENT_U16_I1__MASK 0xffff0000 +#define NV10_3D_VTXBUF_ELEMENT_U16_I1__SHIFT 16 + +#define NV10_3D_VTXBUF_ELEMENT_U32 0x00001100 + +#define NV10_3D_VTXBUF_BEGIN_END 0x000013fc +#define NV10_3D_VTXBUF_BEGIN_END_STOP 0x00000000 +#define NV10_3D_VTXBUF_BEGIN_END_POINTS 0x00000001 +#define NV10_3D_VTXBUF_BEGIN_END_LINES 0x00000002 +#define NV10_3D_VTXBUF_BEGIN_END_LINE_LOOP 0x00000003 +#define NV10_3D_VTXBUF_BEGIN_END_LINE_STRIP 0x00000004 +#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLES 0x00000005 +#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLE_STRIP 0x00000006 +#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLE_FAN 0x00000007 +#define NV10_3D_VTXBUF_BEGIN_END_QUADS 0x00000008 +#define NV10_3D_VTXBUF_BEGIN_END_QUAD_STRIP 0x00000009 +#define NV10_3D_VTXBUF_BEGIN_END_POLYGON 0x0000000a + +#define NV10_3D_VTXBUF_BATCH 0x00001400 +#define NV10_3D_VTXBUF_BATCH_FIRST__MASK 0x0000ffff +#define NV10_3D_VTXBUF_BATCH_FIRST__SHIFT 0 +#define NV10_3D_VTXBUF_BATCH_LAST__MASK 0xff000000 +#define NV10_3D_VTXBUF_BATCH_LAST__SHIFT 24 + +#define NV10_3D_VTXBUF_DATA 0x00001800 + + +#define NV10_3D_VERTEX_WEIGHT_ENABLE 0x00000328 + +#define NV10_3D_VIEW_MATRIX_ENABLE 0x000003e8 +#define NV10_3D_VIEW_MATRIX_ENABLE_MODELVIEW1 0x00000001 +#define NV10_3D_VIEW_MATRIX_ENABLE_MODELVIEW0 0x00000002 +#define NV10_3D_VIEW_MATRIX_ENABLE_PROJECTION 0x00000004 + + +#define NV10_3D_MODELVIEW_MATRIX(i0, i1) (0x00000400 + 0x40*(i0) + 0x4*(i1)) +#define NV10_3D_MODELVIEW_MATRIX__ESIZE 0x00000004 +#define NV10_3D_MODELVIEW_MATRIX__LEN 0x00000010 + +#define NV10_3D_INVERSE_MODELVIEW_MATRIX(i0, i1) (0x00000480 + 0x40*(i0) + 0x4*(i1)) +#define NV10_3D_INVERSE_MODELVIEW_MATRIX__ESIZE 0x00000004 +#define NV10_3D_INVERSE_MODELVIEW_MATRIX__LEN 0x0000000c + +#define NV10_3D_PROJECTION_MATRIX(i0) (0x00000500 + 0x4*(i0)) +#define NV10_3D_PROJECTION_MATRIX__ESIZE 0x00000004 +#define NV10_3D_PROJECTION_MATRIX__LEN 0x00000010 + +#define NV10_3D_VIEWPORT_TRANSLATE 0x000006e8 + + +#define NV10_3D_VIEWPORT_TRANSLATE_X 0x000006e8 + +#define NV10_3D_VIEWPORT_TRANSLATE_Y 0x000006ec + +#define NV10_3D_VIEWPORT_TRANSLATE_Z 0x000006f0 + +#define NV10_3D_VIEWPORT_TRANSLATE_W 0x000006f4 + + +#define NV10_3D_LIGHT_MODEL 0x00000294 +#define NV10_3D_LIGHT_MODEL_VERTEX_SPECULAR 0x00000001 +#define NV10_3D_LIGHT_MODEL_SEPARATE_SPECULAR 0x00000002 +#define NV10_3D_LIGHT_MODEL_LOCAL_VIEWER 0x00010000 + +#define NV10_3D_COLOR_MATERIAL 0x00000298 +#define NV10_3D_COLOR_MATERIAL_EMISSION 0x00000001 +#define NV10_3D_COLOR_MATERIAL_AMBIENT 0x00000002 +#define NV10_3D_COLOR_MATERIAL_DIFFUSE 0x00000004 +#define NV10_3D_COLOR_MATERIAL_SPECULAR 0x00000008 + +#define NV10_3D_MATERIAL_FACTOR 0x000003a8 + + +#define NV10_3D_MATERIAL_FACTOR_R 0x000003a8 + +#define NV10_3D_MATERIAL_FACTOR_G 0x000003ac + +#define NV10_3D_MATERIAL_FACTOR_B 0x000003b0 + +#define NV10_3D_MATERIAL_FACTOR_A 0x000003b4 + +#define NV10_3D_NORMALIZE_ENABLE 0x000003a4 + +#define NV10_3D_SEPARATE_SPECULAR_ENABLE 0x000003b8 + +#define NV10_3D_ENABLED_LIGHTS 0x000003bc +#define NV10_3D_ENABLED_LIGHTS_0__MASK 0x00000003 +#define NV10_3D_ENABLED_LIGHTS_0__SHIFT 0 +#define NV10_3D_ENABLED_LIGHTS_0_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001 +#define NV10_3D_ENABLED_LIGHTS_0_POSITIONAL 0x00000002 +#define NV10_3D_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003 +#define NV10_3D_ENABLED_LIGHTS_1__MASK 0x0000000c +#define NV10_3D_ENABLED_LIGHTS_1__SHIFT 2 +#define NV10_3D_ENABLED_LIGHTS_1_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004 +#define NV10_3D_ENABLED_LIGHTS_1_POSITIONAL 0x00000008 +#define NV10_3D_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c +#define NV10_3D_ENABLED_LIGHTS_2__MASK 0x00000030 +#define NV10_3D_ENABLED_LIGHTS_2__SHIFT 4 +#define NV10_3D_ENABLED_LIGHTS_2_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010 +#define NV10_3D_ENABLED_LIGHTS_2_POSITIONAL 0x00000020 +#define NV10_3D_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030 +#define NV10_3D_ENABLED_LIGHTS_3__MASK 0x000000c0 +#define NV10_3D_ENABLED_LIGHTS_3__SHIFT 6 +#define NV10_3D_ENABLED_LIGHTS_3_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040 +#define NV10_3D_ENABLED_LIGHTS_3_POSITIONAL 0x00000080 +#define NV10_3D_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0 +#define NV10_3D_ENABLED_LIGHTS_4__MASK 0x00000300 +#define NV10_3D_ENABLED_LIGHTS_4__SHIFT 8 +#define NV10_3D_ENABLED_LIGHTS_4_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100 +#define NV10_3D_ENABLED_LIGHTS_4_POSITIONAL 0x00000200 +#define NV10_3D_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300 +#define NV10_3D_ENABLED_LIGHTS_5__MASK 0x00000c00 +#define NV10_3D_ENABLED_LIGHTS_5__SHIFT 10 +#define NV10_3D_ENABLED_LIGHTS_5_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400 +#define NV10_3D_ENABLED_LIGHTS_5_POSITIONAL 0x00000800 +#define NV10_3D_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00 +#define NV10_3D_ENABLED_LIGHTS_6__MASK 0x00003000 +#define NV10_3D_ENABLED_LIGHTS_6__SHIFT 12 +#define NV10_3D_ENABLED_LIGHTS_6_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000 +#define NV10_3D_ENABLED_LIGHTS_6_POSITIONAL 0x00002000 +#define NV10_3D_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000 +#define NV10_3D_ENABLED_LIGHTS_7__MASK 0x0000c000 +#define NV10_3D_ENABLED_LIGHTS_7__SHIFT 14 +#define NV10_3D_ENABLED_LIGHTS_7_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000 +#define NV10_3D_ENABLED_LIGHTS_7_POSITIONAL 0x00008000 +#define NV10_3D_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000 + +#define NV10_3D_MATERIAL_SHININESS(i0) (0x000006a0 + 0x4*(i0)) +#define NV10_3D_MATERIAL_SHININESS__ESIZE 0x00000004 +#define NV10_3D_MATERIAL_SHININESS__LEN 0x00000006 + +#define NV10_3D_LIGHT_MODEL_AMBIENT 0x000006c4 + + +#define NV10_3D_LIGHT_MODEL_AMBIENT_R 0x000006c4 + +#define NV10_3D_LIGHT_MODEL_AMBIENT_G 0x000006c8 + +#define NV10_3D_LIGHT_MODEL_AMBIENT_B 0x000006cc + +#define NV10_3D_LIGHT(i0) (0x00000800 + 0x80*(i0)) +#define NV10_3D_LIGHT__ESIZE 0x00000080 +#define NV10_3D_LIGHT__LEN 0x00000008 + +#define NV10_3D_LIGHT_AMBIENT(i0) (0x00000800 + 0x80*(i0)) + + +#define NV10_3D_LIGHT_AMBIENT_R(i0) (0x00000800 + 0x80*(i0)) + +#define NV10_3D_LIGHT_AMBIENT_G(i0) (0x00000804 + 0x80*(i0)) + +#define NV10_3D_LIGHT_AMBIENT_B(i0) (0x00000808 + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIFFUSE(i0) (0x0000080c + 0x80*(i0)) + + +#define NV10_3D_LIGHT_DIFFUSE_R(i0) (0x0000080c + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIFFUSE_G(i0) (0x00000810 + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIFFUSE_B(i0) (0x00000814 + 0x80*(i0)) + +#define NV10_3D_LIGHT_SPECULAR(i0) (0x00000818 + 0x80*(i0)) + + +#define NV10_3D_LIGHT_SPECULAR_R(i0) (0x00000818 + 0x80*(i0)) + +#define NV10_3D_LIGHT_SPECULAR_G(i0) (0x0000081c + 0x80*(i0)) + +#define NV10_3D_LIGHT_SPECULAR_B(i0) (0x00000820 + 0x80*(i0)) + +#define NV10_3D_LIGHT_HALF_VECTOR(i0) (0x00000828 + 0x80*(i0)) + + +#define NV10_3D_LIGHT_HALF_VECTOR_X(i0) (0x00000828 + 0x80*(i0)) + +#define NV10_3D_LIGHT_HALF_VECTOR_Y(i0) (0x0000082c + 0x80*(i0)) + +#define NV10_3D_LIGHT_HALF_VECTOR_Z(i0) (0x00000830 + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIRECTION(i0) (0x00000834 + 0x80*(i0)) + + +#define NV10_3D_LIGHT_DIRECTION_X(i0) (0x00000834 + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIRECTION_Y(i0) (0x00000838 + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIRECTION_Z(i0) (0x0000083c + 0x80*(i0)) + +#define NV10_3D_LIGHT_SPOT_CUTOFF(i0, i1) (0x00000840 + 0x80*(i0) + 0x4*(i1)) +#define NV10_3D_LIGHT_SPOT_CUTOFF__ESIZE 0x00000004 +#define NV10_3D_LIGHT_SPOT_CUTOFF__LEN 0x00000007 + +#define NV10_3D_LIGHT_POSITION(i0) (0x0000085c + 0x80*(i0)) + + +#define NV10_3D_LIGHT_POSITION_X(i0) (0x0000085c + 0x80*(i0)) + +#define NV10_3D_LIGHT_POSITION_Y(i0) (0x00000860 + 0x80*(i0)) + +#define NV10_3D_LIGHT_POSITION_Z(i0) (0x00000864 + 0x80*(i0)) + +#define NV10_3D_LIGHT_ATTENUATION(i0) (0x00000868 + 0x80*(i0)) + +#define NV10_3D_LIGHT_ATTENUATION_CONSTANT(i0) (0x00000868 + 0x80*(i0)) + +#define NV10_3D_LIGHT_ATTENUATION_LINEAR(i0) (0x0000086c + 0x80*(i0)) + +#define NV10_3D_LIGHT_ATTENUATION_QUADRATIC(i0) (0x00000870 + 0x80*(i0)) + + +#define NV10_3D_FOG_MODE 0x0000029c +#define NV10_3D_FOG_MODE_LINEAR 0x00002601 +#define NV10_3D_FOG_MODE_EXP 0x00000800 +#define NV10_3D_FOG_MODE_EXP_ABS 0x00000802 +#define NV10_3D_FOG_MODE_EXP2 0x00000803 + +#define NV10_3D_FOG_COORD 0x000002a0 +#define NV10_3D_FOG_COORD_FOG 0x00000000 +#define NV10_3D_FOG_COORD_DIST_RADIAL 0x00000001 +#define NV10_3D_FOG_COORD_DIST_ORTHOGONAL 0x00000002 +#define NV10_3D_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003 + +#define NV10_3D_FOG_ENABLE 0x000002a4 + +#define NV10_3D_FOG_COLOR 0x000002a8 +#define NV10_3D_FOG_COLOR_R__MASK 0x000000ff +#define NV10_3D_FOG_COLOR_R__SHIFT 0 +#define NV10_3D_FOG_COLOR_G__MASK 0x0000ff00 +#define NV10_3D_FOG_COLOR_G__SHIFT 8 +#define NV10_3D_FOG_COLOR_B__MASK 0x00ff0000 +#define NV10_3D_FOG_COLOR_B__SHIFT 16 +#define NV10_3D_FOG_COLOR_A__MASK 0xff000000 +#define NV10_3D_FOG_COLOR_A__SHIFT 24 + +#define NV10_3D_FOG_COEFF(i0) (0x00000680 + 0x4*(i0)) +#define NV10_3D_FOG_COEFF__ESIZE 0x00000004 +#define NV10_3D_FOG_COEFF__LEN 0x00000003 + + + +#define NV10_3D_TEX_GEN_MODE(i0, i1) (0x000003c0 + 0x10*(i0) + 0x4*(i1)) +#define NV10_3D_TEX_GEN_MODE__ESIZE 0x00000004 +#define NV10_3D_TEX_GEN_MODE__LEN 0x00000004 +#define NV10_3D_TEX_GEN_MODE_FALSE 0x00000000 +#define NV10_3D_TEX_GEN_MODE_EYE_LINEAR 0x00002400 +#define NV10_3D_TEX_GEN_MODE_OBJECT_LINEAR 0x00002401 +#define NV10_3D_TEX_GEN_MODE_SPHERE_MAP 0x00002402 +#define NV10_3D_TEX_GEN_MODE_NORMAL_MAP 0x00008511 +#define NV10_3D_TEX_GEN_MODE_REFLECTION_MAP 0x00008512 + + +#define NV10_3D_TEX_GEN_COEFF(i0, i1) (0x00000600 + 0x40*(i0) + 0x10*(i1)) +#define NV10_3D_TEX_GEN_COEFF__ESIZE 0x00000010 +#define NV10_3D_TEX_GEN_COEFF__LEN 0x00000004 + +#define NV10_3D_TEX_GEN_COEFF_A(i0, i1) (0x00000600 + 0x40*(i0) + 0x10*(i1)) + +#define NV10_3D_TEX_GEN_COEFF_B(i0, i1) (0x00000604 + 0x40*(i0) + 0x10*(i1)) + +#define NV10_3D_TEX_GEN_COEFF_C(i0, i1) (0x00000608 + 0x40*(i0) + 0x10*(i1)) + +#define NV10_3D_TEX_GEN_COEFF_D(i0, i1) (0x0000060c + 0x40*(i0) + 0x10*(i1)) + +#define NV10_3D_TEX_MATRIX_ENABLE(i0) (0x000003e0 + 0x4*(i0)) +#define NV10_3D_TEX_MATRIX_ENABLE__ESIZE 0x00000004 +#define NV10_3D_TEX_MATRIX_ENABLE__LEN 0x00000002 + + +#define NV10_3D_TEX_MATRIX(i0, i1) (0x00000540 + 0x40*(i0) + 0x4*(i1)) +#define NV10_3D_TEX_MATRIX__ESIZE 0x00000004 +#define NV10_3D_TEX_MATRIX__LEN 0x00000010 + +#define NV10_3D_TEX(i0) (0x00000000 + 0x4*(i0)) +#define NV10_3D_TEX__ESIZE 0x00000004 +#define NV10_3D_TEX__LEN 0x00000002 + +#define NV10_3D_TEX_OFFSET(i0) (0x00000218 + 0x4*(i0)) + +#define NV10_3D_TEX_FORMAT(i0) (0x00000220 + 0x4*(i0)) +#define NV10_3D_TEX_FORMAT_DMA0 0x00000001 +#define NV10_3D_TEX_FORMAT_DMA1 0x00000002 +#define NV10_3D_TEX_FORMAT_CUBE_MAP 0x00000004 +#define NV10_3D_TEX_FORMAT_FORMAT__MASK 0x00000f80 +#define NV10_3D_TEX_FORMAT_FORMAT__SHIFT 7 +#define NV10_3D_TEX_FORMAT_FORMAT_L8 0x00000000 +#define NV10_3D_TEX_FORMAT_FORMAT_I8 0x00000080 +#define NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5 0x00000100 +#define NV10_3D_TEX_FORMAT_FORMAT_A4R4G4B4 0x00000200 +#define NV10_3D_TEX_FORMAT_FORMAT_R5G6B5 0x00000280 +#define NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8 0x00000300 +#define NV10_3D_TEX_FORMAT_FORMAT_X8R8G8B8 0x00000380 +#define NV10_3D_TEX_FORMAT_FORMAT_INDEX8 0x00000580 +#define NV10_3D_TEX_FORMAT_FORMAT_DXT1 0x00000600 +#define NV10_3D_TEX_FORMAT_FORMAT_DXT3 0x00000700 +#define NV10_3D_TEX_FORMAT_FORMAT_DXT5 0x00000780 +#define NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00000800 +#define NV10_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT 0x00000880 +#define NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00000900 +#define NV10_3D_TEX_FORMAT_FORMAT_I8_RECT 0x00000980 +#define NV10_3D_TEX_FORMAT_MIPMAP 0x00008000 +#define NV10_3D_TEX_FORMAT_BASE_SIZE_U__MASK 0x000f0000 +#define NV10_3D_TEX_FORMAT_BASE_SIZE_U__SHIFT 16 +#define NV10_3D_TEX_FORMAT_BASE_SIZE_V__MASK 0x00f00000 +#define NV10_3D_TEX_FORMAT_BASE_SIZE_V__SHIFT 20 +#define NV10_3D_TEX_FORMAT_WRAP_S__MASK 0x0f000000 +#define NV10_3D_TEX_FORMAT_WRAP_S__SHIFT 24 +#define NV10_3D_TEX_FORMAT_WRAP_S_REPEAT 0x01000000 +#define NV10_3D_TEX_FORMAT_WRAP_S_MIRRORED_REPEAT 0x02000000 +#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP_TO_EDGE 0x03000000 +#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP_TO_BORDER 0x04000000 +#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP 0x05000000 +#define NV10_3D_TEX_FORMAT_WRAP_T__MASK 0xf0000000 +#define NV10_3D_TEX_FORMAT_WRAP_T__SHIFT 28 +#define NV10_3D_TEX_FORMAT_WRAP_T_REPEAT 0x10000000 +#define NV10_3D_TEX_FORMAT_WRAP_T_MIRRORED_REPEAT 0x20000000 +#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP_TO_EDGE 0x30000000 +#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP_TO_BORDER 0x40000000 +#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP 0x50000000 + +#define NV10_3D_TEX_ENABLE(i0) (0x00000228 + 0x4*(i0)) +#define NV10_3D_TEX_ENABLE_CULL__MASK 0x0000000f +#define NV10_3D_TEX_ENABLE_CULL__SHIFT 0 +#define NV10_3D_TEX_ENABLE_CULL_DISABLED 0x00000000 +#define NV10_3D_TEX_ENABLE_CULL_TEST_ALL 0x00000003 +#define NV10_3D_TEX_ENABLE_CULL_TEST_ALPHA 0x00000004 +#define NV10_3D_TEX_ENABLE_ANISOTROPY__MASK 0x00000030 +#define NV10_3D_TEX_ENABLE_ANISOTROPY__SHIFT 4 +#define NV10_3D_TEX_ENABLE_MIPMAP_MAX_LOD__MASK 0x0003c000 +#define NV10_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT 14 +#define NV10_3D_TEX_ENABLE_MIPMAP_MIN_LOD__MASK 0x3c000000 +#define NV10_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT 26 +#define NV10_3D_TEX_ENABLE_ENABLE 0x40000000 + +#define NV10_3D_TEX_NPOT_PITCH(i0) (0x00000230 + 0x4*(i0)) +#define NV10_3D_TEX_NPOT_PITCH_PITCH__MASK 0xffff0000 +#define NV10_3D_TEX_NPOT_PITCH_PITCH__SHIFT 16 + +#define NV10_3D_TEX_NPOT_SIZE(i0) (0x00000240 + 0x4*(i0)) +#define NV10_3D_TEX_NPOT_SIZE_H__MASK 0x0000ffff +#define NV10_3D_TEX_NPOT_SIZE_H__SHIFT 0 +#define NV10_3D_TEX_NPOT_SIZE_W__MASK 0xffff0000 +#define NV10_3D_TEX_NPOT_SIZE_W__SHIFT 16 + +#define NV10_3D_TEX_FILTER(i0) (0x00000248 + 0x4*(i0)) +#define NV10_3D_TEX_FILTER_LOD_BIAS__MASK 0x00000f00 +#define NV10_3D_TEX_FILTER_LOD_BIAS__SHIFT 8 +#define NV10_3D_TEX_FILTER_MINIFY__MASK 0x0f000000 +#define NV10_3D_TEX_FILTER_MINIFY__SHIFT 24 +#define NV10_3D_TEX_FILTER_MINIFY_NEAREST 0x01000000 +#define NV10_3D_TEX_FILTER_MINIFY_LINEAR 0x02000000 +#define NV10_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000 +#define NV10_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000 +#define NV10_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000 +#define NV10_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000 +#define NV10_3D_TEX_FILTER_MAGNIFY__MASK 0xf0000000 +#define NV10_3D_TEX_FILTER_MAGNIFY__SHIFT 28 +#define NV10_3D_TEX_FILTER_MAGNIFY_NEAREST 0x10000000 +#define NV10_3D_TEX_FILTER_MAGNIFY_LINEAR 0x20000000 + +#define NV10_3D_TEX_PALETTE_OFFSET(i0) (0x00000250 + 0x4*(i0)) + + + +#define NV10_3D_RC_IN_ALPHA(i0) (0x00000260 + 0x4*(i0)) +#define NV10_3D_RC_IN_ALPHA_D_INPUT__MASK 0x0000000f +#define NV10_3D_RC_IN_ALPHA_D_INPUT__SHIFT 0 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_FOG 0x00000003 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a +#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b +#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c +#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d +#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV10_3D_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f +#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__SHIFT 4 +#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000 +#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING__MASK 0x000000e0 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING__SHIFT 5 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV10_3D_RC_IN_ALPHA_C_INPUT__MASK 0x00000f00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT__SHIFT 8 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_FOG 0x00000300 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__SHIFT 12 +#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000 +#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING__MASK 0x0000e000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING__SHIFT 13 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT__MASK 0x000f0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT__SHIFT 16 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_FOG 0x00030000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000 +#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__SHIFT 20 +#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000 +#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING__MASK 0x00e00000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING__SHIFT 21 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT__MASK 0x0f000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT__SHIFT 24 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_FOG 0x03000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000 +#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__SHIFT 28 +#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000 +#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING__MASK 0xe0000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING__SHIFT 29 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV10_3D_RC_IN_RGB(i0) (0x00000268 + 0x4*(i0)) +#define NV10_3D_RC_IN_RGB_D_INPUT__MASK 0x0000000f +#define NV10_3D_RC_IN_RGB_D_INPUT__SHIFT 0 +#define NV10_3D_RC_IN_RGB_D_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV10_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV10_3D_RC_IN_RGB_D_INPUT_FOG 0x00000003 +#define NV10_3D_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV10_3D_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008 +#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009 +#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a +#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b +#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c +#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d +#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV10_3D_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f +#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE__SHIFT 4 +#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV10_3D_RC_IN_RGB_D_MAPPING__MASK 0x000000e0 +#define NV10_3D_RC_IN_RGB_D_MAPPING__SHIFT 5 +#define NV10_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV10_3D_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV10_3D_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV10_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV10_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV10_3D_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV10_3D_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV10_3D_RC_IN_RGB_C_INPUT__MASK 0x00000f00 +#define NV10_3D_RC_IN_RGB_C_INPUT__SHIFT 8 +#define NV10_3D_RC_IN_RGB_C_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_IN_RGB_C_INPUT_FOG 0x00000300 +#define NV10_3D_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE__SHIFT 12 +#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV10_3D_RC_IN_RGB_C_MAPPING__MASK 0x0000e000 +#define NV10_3D_RC_IN_RGB_C_MAPPING__SHIFT 13 +#define NV10_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV10_3D_RC_IN_RGB_B_INPUT__MASK 0x000f0000 +#define NV10_3D_RC_IN_RGB_B_INPUT__SHIFT 16 +#define NV10_3D_RC_IN_RGB_B_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV10_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV10_3D_RC_IN_RGB_B_INPUT_FOG 0x00030000 +#define NV10_3D_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV10_3D_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000 +#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000 +#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000 +#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000 +#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000 +#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000 +#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV10_3D_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000 +#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE__SHIFT 20 +#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV10_3D_RC_IN_RGB_B_MAPPING__MASK 0x00e00000 +#define NV10_3D_RC_IN_RGB_B_MAPPING__SHIFT 21 +#define NV10_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV10_3D_RC_IN_RGB_A_INPUT__MASK 0x0f000000 +#define NV10_3D_RC_IN_RGB_A_INPUT__SHIFT 24 +#define NV10_3D_RC_IN_RGB_A_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_FOG 0x03000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000 +#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE__SHIFT 28 +#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING__MASK 0xe0000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING__SHIFT 29 +#define NV10_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV10_3D_RC_COLOR(i0) (0x00000270 + 0x4*(i0)) +#define NV10_3D_RC_COLOR_B__MASK 0x000000ff +#define NV10_3D_RC_COLOR_B__SHIFT 0 +#define NV10_3D_RC_COLOR_G__MASK 0x0000ff00 +#define NV10_3D_RC_COLOR_G__SHIFT 8 +#define NV10_3D_RC_COLOR_R__MASK 0x00ff0000 +#define NV10_3D_RC_COLOR_R__SHIFT 16 +#define NV10_3D_RC_COLOR_A__MASK 0xff000000 +#define NV10_3D_RC_COLOR_A__SHIFT 24 + +#define NV10_3D_RC_OUT_ALPHA(i0) (0x00000278 + 0x4*(i0)) +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT__MASK 0x0000000f +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT__SHIFT 0 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT__MASK 0x000000f0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT__SHIFT 4 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT__MASK 0x00000f00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT__SHIFT 8 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_OUT_ALPHA_CD_DOT_PRODUCT 0x00001000 +#define NV10_3D_RC_OUT_ALPHA_AB_DOT_PRODUCT 0x00002000 +#define NV10_3D_RC_OUT_ALPHA_MUX_SUM 0x00004000 +#define NV10_3D_RC_OUT_ALPHA_BIAS__MASK 0x00008000 +#define NV10_3D_RC_OUT_ALPHA_BIAS__SHIFT 15 +#define NV10_3D_RC_OUT_ALPHA_BIAS_NONE 0x00000000 +#define NV10_3D_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 +#define NV10_3D_RC_OUT_ALPHA_SCALE__MASK 0x00030000 +#define NV10_3D_RC_OUT_ALPHA_SCALE__SHIFT 16 +#define NV10_3D_RC_OUT_ALPHA_SCALE_NONE 0x00000000 +#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000 +#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000 +#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000 + +#define NV10_3D_RC_OUT_RGB(i0) (0x00000280 + 0x4*(i0)) +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT__MASK 0x0000000f +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT__SHIFT 0 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT__MASK 0x000000f0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT__SHIFT 4 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT__MASK 0x00000f00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT__SHIFT 8 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_OUT_RGB_CD_DOT_PRODUCT 0x00001000 +#define NV10_3D_RC_OUT_RGB_AB_DOT_PRODUCT 0x00002000 +#define NV10_3D_RC_OUT_RGB_MUX_SUM 0x00004000 +#define NV10_3D_RC_OUT_RGB_BIAS__MASK 0x00008000 +#define NV10_3D_RC_OUT_RGB_BIAS__SHIFT 15 +#define NV10_3D_RC_OUT_RGB_BIAS_NONE 0x00000000 +#define NV10_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 +#define NV10_3D_RC_OUT_RGB_SCALE__MASK 0x00030000 +#define NV10_3D_RC_OUT_RGB_SCALE__SHIFT 16 +#define NV10_3D_RC_OUT_RGB_SCALE_NONE 0x00000000 +#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000 +#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000 +#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000 +#define NV10_3D_RC_OUT_RGB_OPERATION__MASK 0x38000000 +#define NV10_3D_RC_OUT_RGB_OPERATION__SHIFT 27 + +#define NV10_3D_RC_FINAL0 0x00000288 +#define NV10_3D_RC_FINAL0_D_INPUT__MASK 0x0000000f +#define NV10_3D_RC_FINAL0_D_INPUT__SHIFT 0 +#define NV10_3D_RC_FINAL0_D_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV10_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV10_3D_RC_FINAL0_D_INPUT_FOG 0x00000003 +#define NV10_3D_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV10_3D_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008 +#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009 +#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a +#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b +#define NV10_3D_RC_FINAL0_D_INPUT_SPARE0 0x0000000c +#define NV10_3D_RC_FINAL0_D_INPUT_SPARE1 0x0000000d +#define NV10_3D_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV10_3D_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f +#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE__SHIFT 4 +#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV10_3D_RC_FINAL0_D_MAPPING__MASK 0x000000e0 +#define NV10_3D_RC_FINAL0_D_MAPPING__SHIFT 5 +#define NV10_3D_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV10_3D_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV10_3D_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV10_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV10_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV10_3D_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV10_3D_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV10_3D_RC_FINAL0_C_INPUT__MASK 0x00000f00 +#define NV10_3D_RC_FINAL0_C_INPUT__SHIFT 8 +#define NV10_3D_RC_FINAL0_C_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_FINAL0_C_INPUT_FOG 0x00000300 +#define NV10_3D_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_FINAL0_C_INPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_FINAL0_C_INPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE__SHIFT 12 +#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV10_3D_RC_FINAL0_C_MAPPING__MASK 0x0000e000 +#define NV10_3D_RC_FINAL0_C_MAPPING__SHIFT 13 +#define NV10_3D_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV10_3D_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV10_3D_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV10_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV10_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV10_3D_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV10_3D_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV10_3D_RC_FINAL0_B_INPUT__MASK 0x000f0000 +#define NV10_3D_RC_FINAL0_B_INPUT__SHIFT 16 +#define NV10_3D_RC_FINAL0_B_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV10_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV10_3D_RC_FINAL0_B_INPUT_FOG 0x00030000 +#define NV10_3D_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV10_3D_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000 +#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000 +#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000 +#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000 +#define NV10_3D_RC_FINAL0_B_INPUT_SPARE0 0x000c0000 +#define NV10_3D_RC_FINAL0_B_INPUT_SPARE1 0x000d0000 +#define NV10_3D_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV10_3D_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000 +#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE__SHIFT 20 +#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV10_3D_RC_FINAL0_B_MAPPING__MASK 0x00e00000 +#define NV10_3D_RC_FINAL0_B_MAPPING__SHIFT 21 +#define NV10_3D_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV10_3D_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV10_3D_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV10_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV10_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV10_3D_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV10_3D_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV10_3D_RC_FINAL0_A_INPUT__MASK 0x0f000000 +#define NV10_3D_RC_FINAL0_A_INPUT__SHIFT 24 +#define NV10_3D_RC_FINAL0_A_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV10_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV10_3D_RC_FINAL0_A_INPUT_FOG 0x03000000 +#define NV10_3D_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV10_3D_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000 +#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000 +#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000 +#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000 +#define NV10_3D_RC_FINAL0_A_INPUT_SPARE0 0x0c000000 +#define NV10_3D_RC_FINAL0_A_INPUT_SPARE1 0x0d000000 +#define NV10_3D_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV10_3D_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000 +#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE__SHIFT 28 +#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV10_3D_RC_FINAL0_A_MAPPING__MASK 0xe0000000 +#define NV10_3D_RC_FINAL0_A_MAPPING__SHIFT 29 +#define NV10_3D_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV10_3D_RC_FINAL1 0x0000028c +#define NV10_3D_RC_FINAL1_COLOR_SUM_CLAMP 0x00000080 +#define NV10_3D_RC_FINAL1_G_INPUT__MASK 0x00000f00 +#define NV10_3D_RC_FINAL1_G_INPUT__SHIFT 8 +#define NV10_3D_RC_FINAL1_G_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_FINAL1_G_INPUT_FOG 0x00000300 +#define NV10_3D_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_FINAL1_G_INPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_FINAL1_G_INPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE__MASK 0x00001000 +#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE__SHIFT 12 +#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV10_3D_RC_FINAL1_G_MAPPING__MASK 0x0000e000 +#define NV10_3D_RC_FINAL1_G_MAPPING__SHIFT 13 +#define NV10_3D_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV10_3D_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV10_3D_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV10_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV10_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV10_3D_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV10_3D_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV10_3D_RC_FINAL1_F_INPUT__MASK 0x000f0000 +#define NV10_3D_RC_FINAL1_F_INPUT__SHIFT 16 +#define NV10_3D_RC_FINAL1_F_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV10_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV10_3D_RC_FINAL1_F_INPUT_FOG 0x00030000 +#define NV10_3D_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000 +#define NV10_3D_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000 +#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000 +#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000 +#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000 +#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000 +#define NV10_3D_RC_FINAL1_F_INPUT_SPARE0 0x000c0000 +#define NV10_3D_RC_FINAL1_F_INPUT_SPARE1 0x000d0000 +#define NV10_3D_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV10_3D_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000 +#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE__MASK 0x00100000 +#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE__SHIFT 20 +#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV10_3D_RC_FINAL1_F_MAPPING__MASK 0x00e00000 +#define NV10_3D_RC_FINAL1_F_MAPPING__SHIFT 21 +#define NV10_3D_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV10_3D_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV10_3D_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV10_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV10_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV10_3D_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV10_3D_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV10_3D_RC_FINAL1_E_INPUT__MASK 0x0f000000 +#define NV10_3D_RC_FINAL1_E_INPUT__SHIFT 24 +#define NV10_3D_RC_FINAL1_E_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV10_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV10_3D_RC_FINAL1_E_INPUT_FOG 0x03000000 +#define NV10_3D_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000 +#define NV10_3D_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000 +#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000 +#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000 +#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000 +#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000 +#define NV10_3D_RC_FINAL1_E_INPUT_SPARE0 0x0c000000 +#define NV10_3D_RC_FINAL1_E_INPUT_SPARE1 0x0d000000 +#define NV10_3D_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV10_3D_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000 +#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE__MASK 0x10000000 +#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE__SHIFT 28 +#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV10_3D_RC_FINAL1_E_MAPPING__MASK 0xe0000000 +#define NV10_3D_RC_FINAL1_E_MAPPING__SHIFT 29 +#define NV10_3D_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000 + + +#define NV17_3D_DMA_HIERZ 0x000001b0 + +#define NV17_3D_HIERZ_PITCH 0x00000d5c + +#define NV17_3D_HIERZ_OFFSET 0x00000d60 + +#define NV17_3D_HIERZ_FILL_VALUE 0x00000d68 + +#define NV17_3D_HIERZ_BUFFER_CLEAR 0x00000d6c + +#define NV17_3D_UNK0D74 0x00000d74 + +#define NV17_3D_UNK0D84 0x00000d84 + + +#define NV17_3D_HIERZ_WINDOW 0x00001638 + + +#define NV17_3D_HIERZ_WINDOW_X 0x00001638 + +#define NV17_3D_HIERZ_WINDOW_Y 0x0000163c + +#define NV17_3D_HIERZ_WINDOW_Z 0x00001640 + +#define NV17_3D_HIERZ_WINDOW_W 0x00001644 + +#define NV17_3D_HIERZ_ENABLE 0x00001658 + + +#define NV17_3D_UNK01AC 0x000001ac + +#define NV17_3D_UNK0258 0x00000258 + +#define NV17_3D_UNK025C 0x0000025c + +#define NV10_3D_UNK0290 0x00000290 + +#define NV17_3D_COLOR_MASK_ENABLE 0x000002bc + +#define NV10_3D_UNK03F0 0x000003f0 + +#define NV10_3D_UNK03F4 0x000003f4 + +#define NV17_3D_ZCLEAR_ENABLE 0x000003f8 + +#define NV17_3D_ZCLEAR_VALUE 0x000003fc +#define NV17_3D_ZCLEAR_VALUE_DEPTH__MASK 0xffffff00 +#define NV17_3D_ZCLEAR_VALUE_DEPTH__SHIFT 8 +#define NV17_3D_ZCLEAR_VALUE_SEQUENCE__MASK 0x000000ff +#define NV17_3D_ZCLEAR_VALUE_SEQUENCE__SHIFT 0 + +#define NV10_3D_POINT_SIZE 0x000003ec + +#define NV10_3D_POINT_PARAMETER(i0) (0x000006f8 + 0x4*(i0)) +#define NV10_3D_POINT_PARAMETER__ESIZE 0x00000004 +#define NV10_3D_POINT_PARAMETER__LEN 0x00000008 + +#define NV11_3D_COLOR_LOGIC_OP 0x00000d40 + +#define NV11_3D_COLOR_LOGIC_OP_ENABLE 0x00000d40 + +#define NV11_3D_COLOR_LOGIC_OP_OP 0x00000d44 +#define NV11_3D_COLOR_LOGIC_OP_OP_CLEAR 0x00001500 +#define NV11_3D_COLOR_LOGIC_OP_OP_AND 0x00001501 +#define NV11_3D_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502 +#define NV11_3D_COLOR_LOGIC_OP_OP_COPY 0x00001503 +#define NV11_3D_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504 +#define NV11_3D_COLOR_LOGIC_OP_OP_NOOP 0x00001505 +#define NV11_3D_COLOR_LOGIC_OP_OP_XOR 0x00001506 +#define NV11_3D_COLOR_LOGIC_OP_OP_OR 0x00001507 +#define NV11_3D_COLOR_LOGIC_OP_OP_NOR 0x00001508 +#define NV11_3D_COLOR_LOGIC_OP_OP_EQUIV 0x00001509 +#define NV11_3D_COLOR_LOGIC_OP_OP_INVERT 0x0000150a +#define NV11_3D_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b +#define NV11_3D_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c +#define NV11_3D_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d +#define NV11_3D_COLOR_LOGIC_OP_OP_NAND 0x0000150e +#define NV11_3D_COLOR_LOGIC_OP_OP_SET 0x0000150f + + +#endif /* NV10_3D_XML */ diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c index fdcb43b771..8074b4bb47 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_context.c +++ b/src/mesa/drivers/dri/nouveau/nv10_context.c @@ -24,11 +24,13 @@ * */ +#include "main/state.h" #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_fbo.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv10_3d.xml.h" #include "nv04_driver.h" #include "nv10_driver.h" @@ -156,9 +158,9 @@ nv17_zclear(struct gl_context *ctx, GLbitfield *buffers) nfb->base._DepthBuffer->Wrapped)->surface; /* Clear the hierarchical depth buffer */ - BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_FILL_VALUE, 1); + BEGIN_RING(chan, celsius, NV17_3D_HIERZ_FILL_VALUE, 1); OUT_RING(chan, pack_zs_f(s->format, ctx->Depth.Clear, 0)); - BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_CLEAR, 1); + BEGIN_RING(chan, celsius, NV17_3D_HIERZ_BUFFER_CLEAR, 1); OUT_RING(chan, 1); /* Mark the depth buffer as cleared */ @@ -184,6 +186,9 @@ nv10_clear(struct gl_context *ctx, GLbitfield buffers) nv17_zclear(ctx, &buffers); else nv10_zclear(ctx, &buffers); + + /* Emit the zclear state if it's dirty */ + _mesa_update_state(ctx); } nouveau_clear(ctx, buffers); @@ -197,33 +202,33 @@ nv10_hwctx_init(struct gl_context *ctx) struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; int i; - BEGIN_RING(chan, celsius, NV10TCL_DMA_NOTIFY, 1); + BEGIN_RING(chan, celsius, NV10_3D_DMA_NOTIFY, 1); OUT_RING(chan, hw->ntfy->handle); - BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY0, 3); + BEGIN_RING(chan, celsius, NV10_3D_DMA_TEXTURE0, 3); OUT_RING(chan, chan->vram->handle); OUT_RING(chan, chan->gart->handle); OUT_RING(chan, chan->gart->handle); - BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY2, 2); + BEGIN_RING(chan, celsius, NV10_3D_DMA_COLOR, 2); OUT_RING(chan, chan->vram->handle); OUT_RING(chan, chan->vram->handle); - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2); + BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1); OUT_RING(chan, 0x7ff << 16 | 0x800); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1); OUT_RING(chan, 0x7ff << 16 | 0x800); for (i = 1; i < 8; i++) { - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(i), 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(i), 1); OUT_RING(chan, 0); } @@ -232,18 +237,18 @@ nv10_hwctx_init(struct gl_context *ctx) BEGIN_RING(chan, celsius, 0x3f4, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); if (context_chipset(ctx) >= 0x17) { - BEGIN_RING(chan, celsius, NV17TCL_DMA_IN_MEMORY4, 2); + BEGIN_RING(chan, celsius, NV17_3D_UNK01AC, 2); OUT_RING(chan, chan->vram->handle); OUT_RING(chan, chan->vram->handle); BEGIN_RING(chan, celsius, 0xd84, 1); OUT_RING(chan, 0x3); - BEGIN_RING(chan, celsius, NV17TCL_COLOR_MASK_ENABLE, 1); + BEGIN_RING(chan, celsius, NV17_3D_COLOR_MASK_ENABLE, 1); OUT_RING(chan, 1); } @@ -253,41 +258,41 @@ nv10_hwctx_init(struct gl_context *ctx) OUT_RING(chan, 1); OUT_RING(chan, 2); - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); } - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); /* Set state */ - BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2); + BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2); OUT_RING(chan, 0x207); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(0), 2); + BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(0), 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 2); + BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 2); OUT_RING(chan, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_WEIGHT_ENABLE, 2); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_WEIGHT_ENABLE, 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 4); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 4); OUT_RING(chan, 1); OUT_RING(chan, 0); OUT_RING(chan, 0); OUT_RING(chan, 0x8006); - BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 8); + BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 8); OUT_RING(chan, 0xff); OUT_RING(chan, 0x207); OUT_RING(chan, 0); @@ -296,105 +301,105 @@ nv10_hwctx_init(struct gl_context *ctx) OUT_RING(chan, 0x1e00); OUT_RING(chan, 0x1e00); OUT_RING(chan, 0x1d01); - BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 2); + BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1); + BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3); OUT_RING(chan, 0); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1); OUT_RING(chan, 0x201); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1); + BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1); OUT_RING(chan, 8); - BEGIN_RING(chan, celsius, NV10TCL_POINT_PARAMETERS_ENABLE, 2); + BEGIN_RING(chan, celsius, NV10_3D_POINT_PARAMETERS_ENABLE, 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1); + BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1); OUT_RING(chan, 8); - BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2); OUT_RING(chan, 0x1b02); OUT_RING(chan, 0x1b02); - BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 2); + BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 2); OUT_RING(chan, 0x405); OUT_RING(chan, 0x901); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_TX_GEN_MODE_S(0), 8); + BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(0, 0), 8); for (i = 0; i < 8; i++) OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(0), 2); + BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(0), 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3); + BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3); OUT_RING(chan, 0x3fc00000); /* -1.50 */ OUT_RING(chan, 0xbdb8aa0a); /* -0.09 */ OUT_RING(chan, 0); /* 0.00 */ - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 2); + BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 2); OUT_RING(chan, 0x802); OUT_RING(chan, 2); /* for some reason VIEW_MATRIX_ENABLE need to be 6 instead of 4 when * using texturing, except when using the texture matrix */ - BEGIN_RING(chan, celsius, NV10TCL_VIEW_MATRIX_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEW_MATRIX_ENABLE, 1); OUT_RING(chan, 6); - BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1); + BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1); OUT_RING(chan, 0x01010101); /* Set vertex component */ - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL_4F_R, 4); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL_4F_R, 4); OUT_RINGf(chan, 1.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 1.0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL2_3F_R, 3); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL2_3F_R, 3); OUT_RING(chan, 0); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_NOR_3F_X, 3); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_NOR_3F_X, 3); OUT_RING(chan, 0); OUT_RING(chan, 0); OUT_RINGf(chan, 1.0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX0_4F_S, 4); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX0_4F_S, 4); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 1.0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX1_4F_S, 4); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX1_4F_S, 4); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 1.0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_FOG_1F, 1); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_FOG_1F, 1); OUT_RINGf(chan, 0.0); - BEGIN_RING(chan, celsius, NV10TCL_EDGEFLAG_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_EDGEFLAG_ENABLE, 1); OUT_RING(chan, 1); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 16777216.0); @@ -407,7 +412,8 @@ nv10_context_destroy(struct gl_context *ctx) struct nouveau_context *nctx = to_nouveau_context(ctx); nv04_surface_takedown(ctx); - nv10_render_destroy(ctx); + nv10_swtnl_destroy(ctx); + nv10_vbo_destroy(ctx); nouveau_grobj_free(&nctx->hw.eng3d); @@ -451,11 +457,11 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua /* 3D engine. */ if (context_chipset(ctx) >= 0x17) - celsius_class = NV17TCL; + celsius_class = NV17_3D; else if (context_chipset(ctx) >= 0x11) - celsius_class = NV11TCL; + celsius_class = NV11_3D; else - celsius_class = NV10TCL; + celsius_class = NV10_3D; ret = nouveau_grobj_alloc(context_chan(ctx), 0xbeef0001, celsius_class, &nctx->hw.eng3d); @@ -463,7 +469,8 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua goto fail; nv10_hwctx_init(ctx); - nv10_render_init(ctx); + nv10_vbo_init(ctx); + nv10_swtnl_init(ctx); return ctx; diff --git a/src/mesa/drivers/dri/nouveau/nv10_driver.h b/src/mesa/drivers/dri/nouveau/nv10_driver.h index dec3d64e7d..6fdc464162 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_driver.h +++ b/src/mesa/drivers/dri/nouveau/nv10_driver.h @@ -45,10 +45,16 @@ nv10_transform_depth(struct gl_context *ctx, float z); /* nv10_render.c */ void -nv10_render_init(struct gl_context *ctx); +nv10_vbo_init(struct gl_context *ctx); void -nv10_render_destroy(struct gl_context *ctx); +nv10_vbo_destroy(struct gl_context *ctx); + +void +nv10_swtnl_init(struct gl_context *ctx); + +void +nv10_swtnl_destroy(struct gl_context *ctx); /* nv10_state_fb.c */ void diff --git a/src/mesa/drivers/dri/nouveau/nv10_render.c b/src/mesa/drivers/dri/nouveau/nv10_render.c index a03ace3536..20fb447842 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_render.c +++ b/src/mesa/drivers/dri/nouveau/nv10_render.c @@ -26,50 +26,50 @@ #include "nouveau_driver.h" #include "nouveau_context.h" -#include "nouveau_class.h" +#include "nv10_3d.xml.h" #include "nv10_driver.h" #define NUM_VERTEX_ATTRS 8 static void -nv10_emit_material(struct gl_context *ctx, struct nouveau_array_state *a, +nv10_emit_material(struct gl_context *ctx, struct nouveau_array *a, const void *v); /* Vertex attribute format. */ static struct nouveau_attr_info nv10_vertex_attrs[VERT_ATTRIB_MAX] = { [VERT_ATTRIB_POS] = { .vbo_index = 0, - .imm_method = NV10TCL_VERTEX_POS_4F_X, + .imm_method = NV10_3D_VERTEX_POS_4F_X, .imm_fields = 4, }, [VERT_ATTRIB_COLOR0] = { .vbo_index = 1, - .imm_method = NV10TCL_VERTEX_COL_4F_R, + .imm_method = NV10_3D_VERTEX_COL_4F_R, .imm_fields = 4, }, [VERT_ATTRIB_COLOR1] = { .vbo_index = 2, - .imm_method = NV10TCL_VERTEX_COL2_3F_R, + .imm_method = NV10_3D_VERTEX_COL2_3F_R, .imm_fields = 3, }, [VERT_ATTRIB_TEX0] = { .vbo_index = 3, - .imm_method = NV10TCL_VERTEX_TX0_4F_S, + .imm_method = NV10_3D_VERTEX_TX0_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_TEX1] = { .vbo_index = 4, - .imm_method = NV10TCL_VERTEX_TX1_4F_S, + .imm_method = NV10_3D_VERTEX_TX1_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_NORMAL] = { .vbo_index = 5, - .imm_method = NV10TCL_VERTEX_NOR_3F_X, + .imm_method = NV10_3D_VERTEX_NOR_3F_X, .imm_fields = 3, }, [VERT_ATTRIB_FOG] = { .vbo_index = 7, - .imm_method = NV10TCL_VERTEX_FOG_1F, + .imm_method = NV10_3D_VERTEX_FOG_1F, .imm_fields = 1, }, [VERT_ATTRIB_GENERIC0] = { @@ -94,12 +94,12 @@ get_hw_format(int type) { switch (type) { case GL_FLOAT: - return NV10TCL_VTXFMT_TYPE_FLOAT; + return NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT; case GL_SHORT: case GL_UNSIGNED_SHORT: - return NV10TCL_VTXFMT_TYPE_SHORT; + return NV10_3D_VTXBUF_FMT_TYPE_V16_SNORM; case GL_UNSIGNED_BYTE: - return NV10TCL_VTXFMT_TYPE_BYTE_RGBA; + return NV10_3D_VTXBUF_FMT_TYPE_B8G8R8A8_UNORM; default: assert(0); } @@ -111,26 +111,24 @@ nv10_render_set_format(struct gl_context *ctx) struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - int i, hw_format; - - for (i = 0; i < NUM_VERTEX_ATTRS; i++) { - int attr = render->map[i]; + int i, attr, hw_format; + FOR_EACH_ATTR(render, i, attr) { if (attr >= 0) { - struct nouveau_array_state *a = &render->attrs[attr]; + struct nouveau_array *a = &render->attrs[attr]; hw_format = a->stride << 8 | a->fields << 4 | get_hw_format(a->type); if (attr == VERT_ATTRIB_POS && a->fields == 4) - hw_format |= NV10TCL_VTXFMT_POS_HOMOGENEOUS; + hw_format |= NV10_3D_VTXBUF_FMT_HOMOGENEOUS; } else { /* Unused attribute. */ - hw_format = NV10TCL_VTXFMT_TYPE_FLOAT; + hw_format = NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT; } - BEGIN_RING(chan, celsius, NV10TCL_VTXFMT(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_FMT(i), 1); OUT_RING(chan, hw_format); } } @@ -140,55 +138,51 @@ nv10_render_bind_vertices(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_bo_context *bctx = context_bctx(ctx, VERTEX); - struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - int i; + int i, attr; - for (i = 0; i < NUM_VERTEX_ATTRS; i++) { - int attr = render->map[i]; - - if (attr >= 0) { - struct nouveau_array_state *a = &render->attrs[attr]; + FOR_EACH_BOUND_ATTR(render, i, attr) { + struct nouveau_array *a = &render->attrs[attr]; - nouveau_bo_markl(bctx, celsius, - NV10TCL_VTXBUF_ADDRESS(i), - a->bo, a->offset, - NOUVEAU_BO_GART | NOUVEAU_BO_RD); - } + nouveau_bo_markl(bctx, celsius, + NV10_3D_VTXBUF_OFFSET(i), + a->bo, a->offset, + NOUVEAU_BO_GART | NOUVEAU_BO_RD); } - - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_ARRAY_VALIDATE, 1); - OUT_RING(chan, 0); } /* Vertex array rendering defs. */ #define RENDER_LOCALS(ctx) \ struct nouveau_grobj *celsius = context_eng3d(ctx) +#define BATCH_VALIDATE() \ + BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_VALIDATE, 1); \ + OUT_RING(chan, 0) + #define BATCH_BEGIN(prim) \ - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1); \ + BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1); \ OUT_RING(chan, prim) #define BATCH_END() \ - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1); \ + BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1); \ OUT_RING(chan, 0) #define MAX_PACKET 0x400 #define MAX_OUT_L 0x100 #define BATCH_PACKET_L(n) \ - BEGIN_RING_NI(chan, celsius, NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS, n) + BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_BATCH, n) #define BATCH_OUT_L(i, n) \ OUT_RING(chan, ((n) - 1) << 24 | (i)) #define MAX_OUT_I16 0x2 #define BATCH_PACKET_I16(n) \ - BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U16, n) + BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U16, n) #define BATCH_OUT_I16(i0, i1) \ OUT_RING(chan, (i1) << 16 | (i0)) #define MAX_OUT_I32 0x1 #define BATCH_PACKET_I32(n) \ - BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U32, n) + BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U32, n) #define BATCH_OUT_I32(i) \ OUT_RING(chan, i) @@ -199,3 +193,5 @@ nv10_render_bind_vertices(struct gl_context *ctx) #define TAG(x) nv10_##x #include "nouveau_render_t.c" +#include "nouveau_vbo_t.c" +#include "nouveau_swtnl_t.c" diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c index d87fe96b1c..0505547421 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c @@ -27,8 +27,9 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_fbo.h" -#include "nouveau_class.h" #include "nouveau_util.h" +#include "nv_object.xml.h" +#include "nv10_3d.xml.h" #include "nv10_driver.h" static inline unsigned @@ -36,26 +37,26 @@ get_rt_format(gl_format format) { switch (format) { case MESA_FORMAT_XRGB8888: - return 0x05; + return NV10_3D_RT_FORMAT_COLOR_X8R8G8B8; case MESA_FORMAT_ARGB8888: - return 0x08; + return NV10_3D_RT_FORMAT_COLOR_A8R8G8B8; case MESA_FORMAT_RGB565: - return 0x03; + return NV10_3D_RT_FORMAT_COLOR_R5G6B5; case MESA_FORMAT_Z16: - return 0x10; + return NV10_3D_RT_FORMAT_DEPTH_Z16; case MESA_FORMAT_Z24_S8: - return 0x0; + return NV10_3D_RT_FORMAT_DEPTH_Z24S8; default: assert(0); } } static void -setup_lma_buffer(struct gl_context *ctx) +setup_hierz_buffer(struct gl_context *ctx) { struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - struct nouveau_bo_context *bctx = context_bctx(ctx, LMA_DEPTH); + struct nouveau_bo_context *bctx = context_bctx(ctx, HIERZ); struct gl_framebuffer *fb = ctx->DrawBuffer; struct nouveau_framebuffer *nfb = to_nouveau_framebuffer(fb); unsigned pitch = align(fb->Width, 128), @@ -68,20 +69,20 @@ setup_lma_buffer(struct gl_context *ctx) 0, NOUVEAU_BO_TILE_ZETA, &nfb->hierz.bo); } - nouveau_bo_markl(bctx, celsius, NV17TCL_LMA_DEPTH_BUFFER_OFFSET, + nouveau_bo_markl(bctx, celsius, NV17_3D_HIERZ_OFFSET, nfb->hierz.bo, 0, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR); WAIT_RING(chan, 9); - BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_WINDOW_X, 4); + BEGIN_RING(chan, celsius, NV17_3D_HIERZ_WINDOW_X, 4); OUT_RINGf(chan, - 1792); OUT_RINGf(chan, - 2304 + fb->Height); OUT_RINGf(chan, fb->_DepthMaxF / 2); OUT_RINGf(chan, 0); - BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_PITCH, 1); + BEGIN_RING(chan, celsius, NV17_3D_HIERZ_PITCH, 1); OUT_RING(chan, pitch); - BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_ENABLE, 1); + BEGIN_RING(chan, celsius, NV17_3D_HIERZ_ENABLE, 1); OUT_RING(chan, 1); } @@ -93,7 +94,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit) struct nouveau_bo_context *bctx = context_bctx(ctx, FRAMEBUFFER); struct gl_framebuffer *fb = ctx->DrawBuffer; struct nouveau_surface *s; - unsigned rt_format = NV10TCL_RT_FORMAT_TYPE_LINEAR; + unsigned rt_format = NV10_3D_RT_FORMAT_TYPE_LINEAR; unsigned rt_pitch = 0, zeta_pitch = 0; unsigned bo_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR; @@ -106,7 +107,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit) int i; for (i = 0; i < 6; i++) { - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); } } @@ -119,7 +120,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit) rt_format |= get_rt_format(s->format); zeta_pitch = rt_pitch = s->pitch; - nouveau_bo_markl(bctx, celsius, NV10TCL_COLOR_OFFSET, + nouveau_bo_markl(bctx, celsius, NV10_3D_COLOR_OFFSET, s->bo, 0, bo_flags); } @@ -131,16 +132,16 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit) rt_format |= get_rt_format(s->format); zeta_pitch = s->pitch; - nouveau_bo_markl(bctx, celsius, NV10TCL_ZETA_OFFSET, + nouveau_bo_markl(bctx, celsius, NV10_3D_ZETA_OFFSET, s->bo, 0, bo_flags); if (context_chipset(ctx) >= 0x17) { - setup_lma_buffer(ctx); + setup_hierz_buffer(ctx); context_dirty(ctx, ZCLEAR); } } - BEGIN_RING(chan, celsius, NV10TCL_RT_FORMAT, 2); + BEGIN_RING(chan, celsius, NV10_3D_RT_FORMAT, 2); OUT_RING(chan, rt_format); OUT_RING(chan, zeta_pitch << 16 | rt_pitch); @@ -162,7 +163,7 @@ nv10_emit_scissor(struct gl_context *ctx, int emit) get_scissors(ctx->DrawBuffer, &x, &y, &w, &h); - BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2); + BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2); OUT_RING(chan, w << 16 | x); OUT_RING(chan, h << 16 | y); } @@ -182,12 +183,12 @@ nv10_emit_viewport(struct gl_context *ctx, int emit) if (nv10_use_viewport_zclear(ctx)) a[2] = nv10_transform_depth(ctx, (vp->Far + vp->Near) / 2); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_TRANSLATE_X, 4); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_TRANSLATE_X, 4); OUT_RINGp(chan, a, 4); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1); OUT_RING(chan, (fb->Width - 1) << 16 | 0x08000800); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1); OUT_RING(chan, (fb->Height - 1) << 16 | 0x08000800); context_dirty(ctx, PROJECTION); @@ -203,12 +204,12 @@ nv10_emit_zclear(struct gl_context *ctx, int emit) to_nouveau_framebuffer(ctx->DrawBuffer); if (nfb->hierz.bo) { - BEGIN_RING(chan, celsius, NV17TCL_ZCLEAR_ENABLE, 2); - OUT_RING(chan, nctx->hierz.clear_blocked ? 0 : 1); + BEGIN_RING(chan, celsius, NV17_3D_ZCLEAR_ENABLE, 2); + OUT_RINGb(chan, !nctx->hierz.clear_blocked); OUT_RING(chan, nfb->hierz.clear_value | (nctx->hierz.clear_seq & 0xff)); } else { - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2); OUT_RINGf(chan, nv10_transform_depth(ctx, 0)); OUT_RINGf(chan, nv10_transform_depth(ctx, 1)); context_dirty(ctx, VIEWPORT); diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c index 5138c36df7..1adc86086c 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c @@ -27,7 +27,7 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nv10_3d.xml.h" #include "nouveau_util.h" #include "nv10_driver.h" #include "nv20_driver.h" @@ -41,24 +41,24 @@ #define RC_IN_SHIFT_G 40 #define RC_IN_SOURCE(source) \ - ((uint64_t)NV10TCL_RC_IN_RGB_D_INPUT_##source) + ((uint64_t)NV10_3D_RC_IN_RGB_D_INPUT_##source) #define RC_IN_USAGE(usage) \ - ((uint64_t)NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_##usage) + ((uint64_t)NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_##usage) #define RC_IN_MAPPING(mapping) \ - ((uint64_t)NV10TCL_RC_IN_RGB_D_MAPPING_##mapping) + ((uint64_t)NV10_3D_RC_IN_RGB_D_MAPPING_##mapping) -#define RC_OUT_BIAS NV10TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF -#define RC_OUT_SCALE_1 NV10TCL_RC_OUT_RGB_SCALE_NONE -#define RC_OUT_SCALE_2 NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO -#define RC_OUT_SCALE_4 NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR +#define RC_OUT_BIAS NV10_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF +#define RC_OUT_SCALE_1 NV10_3D_RC_OUT_RGB_SCALE_NONE +#define RC_OUT_SCALE_2 NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO +#define RC_OUT_SCALE_4 NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR /* Make the combiner do: spare0_i = A_i * B_i */ -#define RC_OUT_AB NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 +#define RC_OUT_AB NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 /* spare0_i = dot3(A, B) */ -#define RC_OUT_DOT_AB (NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 | \ - NV10TCL_RC_OUT_RGB_AB_DOT_PRODUCT) +#define RC_OUT_DOT_AB (NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 | \ + NV10_3D_RC_OUT_RGB_AB_DOT_PRODUCT) /* spare0_i = A_i * B_i + C_i * D_i */ -#define RC_OUT_SUM NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0 +#define RC_OUT_SUM NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0 struct combiner_state { struct gl_context *ctx; @@ -383,15 +383,15 @@ nv10_emit_tex_env(struct gl_context *ctx, int emit) c_out |= 0x3 << 27; } - BEGIN_RING(chan, celsius, NV10TCL_RC_IN_ALPHA(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_RC_IN_ALPHA(i), 1); OUT_RING(chan, a_in); - BEGIN_RING(chan, celsius, NV10TCL_RC_IN_RGB(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_RC_IN_RGB(i), 1); OUT_RING(chan, c_in); - BEGIN_RING(chan, celsius, NV10TCL_RC_COLOR(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_RC_COLOR(i), 1); OUT_RING(chan, k); - BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_ALPHA(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_ALPHA(i), 1); OUT_RING(chan, a_out); - BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_RGB(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_RGB(i), 1); OUT_RING(chan, c_out); context_dirty(ctx, FRAG); @@ -407,7 +407,7 @@ nv10_emit_frag(struct gl_context *ctx, int emit) nv10_get_final_combiner(ctx, &in, &n); - BEGIN_RING(chan, celsius, NV10TCL_RC_FINAL0, 2); + BEGIN_RING(chan, celsius, NV10_3D_RC_FINAL0, 2); OUT_RING(chan, in); OUT_RING(chan, in >> 32); } diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c index 4e49b0278c..3f80790483 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c @@ -27,7 +27,8 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nouveau_util.h" +#include "nv10_3d.xml.h" #include "nv10_driver.h" void @@ -37,13 +38,13 @@ nv10_emit_cull_face(struct gl_context *ctx, int emit) struct nouveau_grobj *celsius = context_eng3d(ctx); GLenum mode = ctx->Polygon.CullFaceMode; - BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1); - OUT_RING(chan, ctx->Polygon.CullFlag ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1); + OUT_RINGb(chan, ctx->Polygon.CullFlag); - BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 1); - OUT_RING(chan, (mode == GL_FRONT ? NV10TCL_CULL_FACE_FRONT : - mode == GL_BACK ? NV10TCL_CULL_FACE_BACK : - NV10TCL_CULL_FACE_FRONT_AND_BACK)); + BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 1); + OUT_RING(chan, (mode == GL_FRONT ? NV10_3D_CULL_FACE_FRONT : + mode == GL_BACK ? NV10_3D_CULL_FACE_BACK : + NV10_3D_CULL_FACE_FRONT_AND_BACK)); } void @@ -52,9 +53,9 @@ nv10_emit_front_face(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_FRONT_FACE, 1); + BEGIN_RING(chan, celsius, NV10_3D_FRONT_FACE, 1); OUT_RING(chan, ctx->Polygon.FrontFace == GL_CW ? - NV10TCL_FRONT_FACE_CW : NV10TCL_FRONT_FACE_CCW); + NV10_3D_FRONT_FACE_CW : NV10_3D_FRONT_FACE_CCW); } void @@ -65,11 +66,11 @@ nv10_emit_line_mode(struct gl_context *ctx, int emit) GLboolean smooth = ctx->Line.SmoothFlag && ctx->Hint.LineSmooth == GL_NICEST; - BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1); + BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1); OUT_RING(chan, MAX2(smooth ? 0 : 1, ctx->Line.Width) * 8); - BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1); - OUT_RING(chan, smooth ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1); + OUT_RINGb(chan, smooth); } void @@ -83,11 +84,11 @@ nv10_emit_point_mode(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1); + BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1); OUT_RING(chan, (uint32_t)(ctx->Point.Size * 8)); - BEGIN_RING(chan, celsius, NV10TCL_POINT_SMOOTH_ENABLE, 1); - OUT_RING(chan, ctx->Point.SmoothFlag ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_POINT_SMOOTH_ENABLE, 1); + OUT_RINGb(chan, ctx->Point.SmoothFlag); } void @@ -96,12 +97,12 @@ nv10_emit_polygon_mode(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2); OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.FrontMode)); OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.BackMode)); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1); - OUT_RING(chan, ctx->Polygon.SmoothFlag ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1); + OUT_RINGb(chan, ctx->Polygon.SmoothFlag); } void @@ -110,12 +111,12 @@ nv10_emit_polygon_offset(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3); - OUT_RING(chan, ctx->Polygon.OffsetPoint ? 1 : 0); - OUT_RING(chan, ctx->Polygon.OffsetLine ? 1 : 0); - OUT_RING(chan, ctx->Polygon.OffsetFill ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3); + OUT_RINGb(chan, ctx->Polygon.OffsetPoint); + OUT_RINGb(chan, ctx->Polygon.OffsetLine); + OUT_RINGb(chan, ctx->Polygon.OffsetFill); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2); OUT_RINGf(chan, ctx->Polygon.OffsetFactor); OUT_RINGf(chan, ctx->Polygon.OffsetUnits); } diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c index 99609844a1..bb1084ed11 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c @@ -27,7 +27,8 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nouveau_util.h" +#include "nv10_3d.xml.h" #include "nv10_driver.h" void @@ -36,10 +37,10 @@ nv10_emit_alpha_func(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1); - OUT_RING(chan, ctx->Color.AlphaEnabled ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1); + OUT_RINGb(chan, ctx->Color.AlphaEnabled); - BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2); + BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2); OUT_RING(chan, nvgl_comparison_op(ctx->Color.AlphaFunc)); OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.AlphaRef)); } @@ -50,7 +51,7 @@ nv10_emit_blend_color(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_COLOR, 1); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_COLOR, 1); OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.BlendColor[3]) << 24 | FLOAT_TO_UBYTE(ctx->Color.BlendColor[0]) << 16 | FLOAT_TO_UBYTE(ctx->Color.BlendColor[1]) << 8 | @@ -63,10 +64,10 @@ nv10_emit_blend_equation(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1); - OUT_RING(chan, ctx->Color.BlendEnabled ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1); + OUT_RINGb(chan, ctx->Color.BlendEnabled); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_EQUATION, 1); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_EQUATION, 1); OUT_RING(chan, nvgl_blend_eqn(ctx->Color.BlendEquationRGB)); } @@ -76,7 +77,7 @@ nv10_emit_blend_func(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 2); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 2); OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendSrcRGB)); OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendDstRGB)); } @@ -87,7 +88,7 @@ nv10_emit_color_mask(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1); + BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1); OUT_RING(chan, ((ctx->Color.ColorMask[0][3] ? 1 << 24 : 0) | (ctx->Color.ColorMask[0][0] ? 1 << 16 : 0) | (ctx->Color.ColorMask[0][1] ? 1 << 8 : 0) | @@ -100,11 +101,11 @@ nv10_emit_depth(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1); - OUT_RING(chan, ctx->Depth.Test ? 1 : 0); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1); - OUT_RING(chan, ctx->Depth.Mask ? 1 : 0); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1); + OUT_RINGb(chan, ctx->Depth.Test); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1); + OUT_RINGb(chan, ctx->Depth.Mask); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1); OUT_RING(chan, nvgl_comparison_op(ctx->Depth.Func)); } @@ -114,8 +115,8 @@ nv10_emit_dither(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 1); - OUT_RING(chan, ctx->Color.DitherFlag ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 1); + OUT_RINGb(chan, ctx->Color.DitherFlag); } void @@ -127,8 +128,8 @@ nv10_emit_logic_opcode(struct gl_context *ctx, int emit) assert(!ctx->Color.ColorLogicOpEnabled || context_chipset(ctx) >= 0x11); - BEGIN_RING(chan, celsius, NV11TCL_COLOR_LOGIC_OP_ENABLE, 2); - OUT_RING(chan, ctx->Color.ColorLogicOpEnabled ? 1 : 0); + BEGIN_RING(chan, celsius, NV11_3D_COLOR_LOGIC_OP_ENABLE, 2); + OUT_RINGb(chan, ctx->Color.ColorLogicOpEnabled); OUT_RING(chan, nvgl_logicop_func(ctx->Color.LogicOp)); } @@ -138,9 +139,9 @@ nv10_emit_shade_model(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_SHADE_MODEL, 1); + BEGIN_RING(chan, celsius, NV10_3D_SHADE_MODEL, 1); OUT_RING(chan, ctx->Light.ShadeModel == GL_SMOOTH ? - NV10TCL_SHADE_MODEL_SMOOTH : NV10TCL_SHADE_MODEL_FLAT); + NV10_3D_SHADE_MODEL_SMOOTH : NV10_3D_SHADE_MODEL_FLAT); } void @@ -149,10 +150,10 @@ nv10_emit_stencil_func(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_STENCIL_ENABLE, 1); - OUT_RING(chan, ctx->Stencil.Enabled ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_STENCIL_ENABLE, 1); + OUT_RINGb(chan, ctx->Stencil.Enabled); - BEGIN_RING(chan, celsius, NV10TCL_STENCIL_FUNC_FUNC, 3); + BEGIN_RING(chan, celsius, NV10_3D_STENCIL_FUNC_FUNC, 3); OUT_RING(chan, nvgl_comparison_op(ctx->Stencil.Function[0])); OUT_RING(chan, ctx->Stencil.Ref[0]); OUT_RING(chan, ctx->Stencil.ValueMask[0]); @@ -164,7 +165,7 @@ nv10_emit_stencil_mask(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 1); + BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 1); OUT_RING(chan, ctx->Stencil.WriteMask[0]); } @@ -174,7 +175,7 @@ nv10_emit_stencil_op(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_STENCIL_OP_FAIL, 3); + BEGIN_RING(chan, celsius, NV10_3D_STENCIL_OP_FAIL, 3); OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.FailFunc[0])); OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZFailFunc[0])); OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZPassFunc[0])); diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c index 0092ad0c20..fda67b1507 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c @@ -28,14 +28,10 @@ #include "nouveau_context.h" #include "nouveau_gldefs.h" #include "nouveau_texture.h" -#include "nouveau_class.h" +#include "nv10_3d.xml.h" #include "nouveau_util.h" #include "nv10_driver.h" -#define TX_GEN_MODE(i, j) (NV10TCL_TX_GEN_MODE_S(i) + 4 * (j)) -#define TX_GEN_COEFF(i, j) (NV10TCL_TX_GEN_COEFF_S_A(i) + 16 * (j)) -#define TX_MATRIX(i) (NV10TCL_TX0_MATRIX(0) + 64 * (i)) - void nv10_emit_tex_gen(struct gl_context *ctx, int emit) { @@ -53,15 +49,15 @@ nv10_emit_tex_gen(struct gl_context *ctx, int emit) if (k) { BEGIN_RING(chan, celsius, - TX_GEN_COEFF(i, j), 4); + NV10_3D_TEX_GEN_COEFF(i, j), 4); OUT_RINGp(chan, k, 4); } - BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i,j), 1); OUT_RING(chan, nvgl_texgen_mode(coord->Mode)); } else { - BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i,j), 1); OUT_RING(chan, 0); } } @@ -80,14 +76,14 @@ nv10_emit_tex_mat(struct gl_context *ctx, int emit) if (nctx->fallback == HWTNL && ((ctx->Texture._TexMatEnabled & 1 << i) || ctx->Texture.Unit[i]._GenFlags)) { - BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1); OUT_RING(chan, 1); - BEGIN_RING(chan, celsius, TX_MATRIX(i), 16); + BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX(i, 0), 16); OUT_RINGm(chan, ctx->TextureMatrixStack[i].Top->m); } else { - BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1); OUT_RING(chan, 0); } } @@ -97,29 +93,29 @@ get_tex_format_pot(struct gl_texture_image *ti) { switch (ti->TexFormat) { case MESA_FORMAT_ARGB8888: - return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8; + return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8; case MESA_FORMAT_XRGB8888: - return NV10TCL_TX_FORMAT_FORMAT_X8R8G8B8; + return NV10_3D_TEX_FORMAT_FORMAT_X8R8G8B8; case MESA_FORMAT_ARGB1555: - return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5; + return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5; case MESA_FORMAT_ARGB4444: - return NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4; + return NV10_3D_TEX_FORMAT_FORMAT_A4R4G4B4; case MESA_FORMAT_RGB565: - return NV10TCL_TX_FORMAT_FORMAT_R5G6B5; + return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5; case MESA_FORMAT_A8: case MESA_FORMAT_I8: - return NV10TCL_TX_FORMAT_FORMAT_A8; + return NV10_3D_TEX_FORMAT_FORMAT_I8; case MESA_FORMAT_L8: - return NV10TCL_TX_FORMAT_FORMAT_L8; + return NV10_3D_TEX_FORMAT_FORMAT_L8; case MESA_FORMAT_CI8: - return NV10TCL_TX_FORMAT_FORMAT_INDEX8; + return NV10_3D_TEX_FORMAT_FORMAT_INDEX8; default: assert(0); @@ -131,19 +127,19 @@ get_tex_format_rect(struct gl_texture_image *ti) { switch (ti->TexFormat) { case MESA_FORMAT_ARGB1555: - return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT; + return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT; case MESA_FORMAT_RGB565: - return NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT; + return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT; case MESA_FORMAT_ARGB8888: case MESA_FORMAT_XRGB8888: - return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT; + return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT; case MESA_FORMAT_A8: case MESA_FORMAT_L8: case MESA_FORMAT_I8: - return NV10TCL_TX_FORMAT_FORMAT_A8_RECT; + return NV10_3D_TEX_FORMAT_FORMAT_I8_RECT; default: assert(0); @@ -164,7 +160,7 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit) uint32_t tx_format, tx_filter, tx_enable; if (!ctx->Texture.Unit[i]._ReallyEnabled) { - BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1); OUT_RING(chan, 0); return; } @@ -186,13 +182,13 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit) tx_filter = nvgl_filter_mode(t->MagFilter) << 28 | nvgl_filter_mode(t->MinFilter) << 24; - tx_enable = NV10TCL_TX_ENABLE_ENABLE + tx_enable = NV10_3D_TEX_ENABLE_ENABLE | log2i(t->MaxAnisotropy) << 4; if (t->Target == GL_TEXTURE_RECTANGLE) { - BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_PITCH(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_PITCH(i), 1); OUT_RING(chan, s->pitch << 16); - BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_SIZE(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_SIZE(i), 1); OUT_RING(chan, align(s->width, 2) << 16 | s->height); tx_format |= get_tex_format_rect(ti); @@ -211,26 +207,26 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit) lod_min = CLAMP(lod_min, 0, 15); lod_bias = CLAMP(lod_bias, 0, 15); - tx_format |= NV10TCL_TX_FORMAT_MIPMAP; + tx_format |= NV10_3D_TEX_FORMAT_MIPMAP; tx_filter |= lod_bias << 8; tx_enable |= lod_min << 26 | lod_max << 14; } /* Write it to the hardware. */ - nouveau_bo_mark(bctx, celsius, NV10TCL_TX_FORMAT(i), + nouveau_bo_mark(bctx, celsius, NV10_3D_TEX_FORMAT(i), s->bo, tx_format, 0, - NV10TCL_TX_FORMAT_DMA0, - NV10TCL_TX_FORMAT_DMA1, + NV10_3D_TEX_FORMAT_DMA0, + NV10_3D_TEX_FORMAT_DMA1, bo_flags | NOUVEAU_BO_OR); - nouveau_bo_markl(bctx, celsius, NV10TCL_TX_OFFSET(i), + nouveau_bo_markl(bctx, celsius, NV10_3D_TEX_OFFSET(i), s->bo, s->offset, bo_flags); - BEGIN_RING(chan, celsius, NV10TCL_TX_FILTER(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_FILTER(i), 1); OUT_RING(chan, tx_filter); - BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1); OUT_RING(chan, tx_enable); } diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c index 175abfca5c..e8bd12e6e0 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c @@ -28,7 +28,7 @@ #include "nouveau_context.h" #include "nouveau_gldefs.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv10_3d.xml.h" #include "nv10_driver.h" void @@ -42,13 +42,13 @@ get_material_bitmask(unsigned m) unsigned ret = 0; if (m & MAT_BIT_FRONT_EMISSION) - ret |= NV10TCL_COLOR_MATERIAL_EMISSION; + ret |= NV10_3D_COLOR_MATERIAL_EMISSION; if (m & MAT_BIT_FRONT_AMBIENT) - ret |= NV10TCL_COLOR_MATERIAL_AMBIENT; + ret |= NV10_3D_COLOR_MATERIAL_AMBIENT; if (m & MAT_BIT_FRONT_DIFFUSE) - ret |= NV10TCL_COLOR_MATERIAL_DIFFUSE; + ret |= NV10_3D_COLOR_MATERIAL_DIFFUSE; if (m & MAT_BIT_FRONT_SPECULAR) - ret |= NV10TCL_COLOR_MATERIAL_SPECULAR; + ret |= NV10_3D_COLOR_MATERIAL_SPECULAR; return ret; } @@ -60,7 +60,7 @@ nv10_emit_color_material(struct gl_context *ctx, int emit) struct nouveau_grobj *celsius = context_eng3d(ctx); unsigned mask = get_material_bitmask(ctx->Light.ColorMaterialBitmask); - BEGIN_RING(chan, celsius, NV10TCL_COLOR_MATERIAL, 1); + BEGIN_RING(chan, celsius, NV10_3D_COLOR_MATERIAL, 1); OUT_RING(chan, ctx->Light.ColorMaterialEnabled ? mask : 0); } @@ -69,11 +69,11 @@ get_fog_mode(unsigned mode) { switch (mode) { case GL_LINEAR: - return NV10TCL_FOG_MODE_LINEAR; + return NV10_3D_FOG_MODE_LINEAR; case GL_EXP: - return NV10TCL_FOG_MODE_EXP; + return NV10_3D_FOG_MODE_EXP; case GL_EXP2: - return NV10TCL_FOG_MODE_EXP2; + return NV10_3D_FOG_MODE_EXP2; default: assert(0); } @@ -84,9 +84,9 @@ get_fog_source(unsigned source) { switch (source) { case GL_FOG_COORDINATE_EXT: - return NV10TCL_FOG_COORD_FOG; + return NV10_3D_FOG_COORD_FOG; case GL_FRAGMENT_DEPTH_EXT: - return NV10TCL_FOG_COORD_DIST_ORTHOGONAL_ABS; + return NV10_3D_FOG_COORD_DIST_ORTHOGONAL_ABS; default: assert(0); } @@ -133,13 +133,13 @@ nv10_emit_fog(struct gl_context *ctx, int emit) nv10_get_fog_coeff(ctx, k); - BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 4); + BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 4); OUT_RING(chan, get_fog_mode(f->Mode)); OUT_RING(chan, get_fog_source(source)); - OUT_RING(chan, f->Enabled ? 1 : 0); + OUT_RINGb(chan, f->Enabled); OUT_RING(chan, pack_rgba_f(MESA_FORMAT_RGBA8888_REV, f->Color)); - BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3); + BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3); OUT_RINGp(chan, k, 3); context_dirty(ctx, FRAG); @@ -150,13 +150,13 @@ get_light_mode(struct gl_light *l) { if (l->Enabled) { if (l->_Flags & LIGHT_SPOT) - return NV10TCL_ENABLED_LIGHTS_0_DIRECTIONAL; + return NV10_3D_ENABLED_LIGHTS_0_DIRECTIONAL; else if (l->_Flags & LIGHT_POSITIONAL) - return NV10TCL_ENABLED_LIGHTS_0_POSITIONAL; + return NV10_3D_ENABLED_LIGHTS_0_POSITIONAL; else - return NV10TCL_ENABLED_LIGHTS_0_NONPOSITIONAL; + return NV10_3D_ENABLED_LIGHTS_0_NONPOSITIONAL; } else { - return NV10TCL_ENABLED_LIGHTS_0_DISABLED; + return NV10_3D_ENABLED_LIGHTS_0_DISABLED; } } @@ -170,7 +170,7 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit) int i; if (nctx->fallback != HWTNL) { - BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1); OUT_RING(chan, 0); return; } @@ -178,12 +178,12 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit) for (i = 0; i < MAX_LIGHTS; i++) en_lights |= get_light_mode(&ctx->Light.Light[i]) << 2 * i; - BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1); + BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1); OUT_RING(chan, en_lights); - BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1); - OUT_RING(chan, ctx->Light.Enabled ? 1 : 0); - BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1); - OUT_RING(chan, ctx->Transform.Normalize ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1); + OUT_RINGb(chan, ctx->Light.Enabled); + BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1); + OUT_RINGb(chan, ctx->Transform.Normalize); } void @@ -193,16 +193,16 @@ nv10_emit_light_model(struct gl_context *ctx, int emit) struct nouveau_grobj *celsius = context_eng3d(ctx); struct gl_lightmodel *m = &ctx->Light.Model; - BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1); - OUT_RING(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1); + OUT_RINGb(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1); OUT_RING(chan, ((m->LocalViewer ? - NV10TCL_LIGHT_MODEL_LOCAL_VIEWER : 0) | + NV10_3D_LIGHT_MODEL_LOCAL_VIEWER : 0) | (NEED_SECONDARY_COLOR(ctx) ? - NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR : 0) | + NV10_3D_LIGHT_MODEL_SEPARATE_SPECULAR : 0) | (!ctx->Light.Enabled && ctx->Fog.ColorSumEnabled ? - NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR : 0))); + NV10_3D_LIGHT_MODEL_VERTEX_SPECULAR : 0))); } static float @@ -281,20 +281,20 @@ nv10_emit_light_source(struct gl_context *ctx, int emit) struct gl_light *l = &ctx->Light.Light[i]; if (l->_Flags & LIGHT_POSITIONAL) { - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_POSITION_X(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_POSITION_X(i), 3); OUT_RINGp(chan, l->_Position, 3); BEGIN_RING(chan, celsius, - NV10TCL_LIGHT_ATTENUATION_CONSTANT(i), 3); + NV10_3D_LIGHT_ATTENUATION_CONSTANT(i), 3); OUT_RINGf(chan, l->ConstantAttenuation); OUT_RINGf(chan, l->LinearAttenuation); OUT_RINGf(chan, l->QuadraticAttenuation); } else { - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIRECTION_X(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIRECTION_X(i), 3); OUT_RINGp(chan, l->_VP_inf_norm, 3); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_HALF_VECTOR_X(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_HALF_VECTOR_X(i), 3); OUT_RINGp(chan, l->_h_inf_norm, 3); } @@ -303,7 +303,7 @@ nv10_emit_light_source(struct gl_context *ctx, int emit) nv10_get_spot_coeff(l, k); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPOT_CUTOFF_A(i), 7); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPOT_CUTOFF(i, 0), 7); OUT_RINGp(chan, k, 7); } } @@ -335,11 +335,11 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit) ZERO_3V(c_factor); } - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL_AMBIENT_R, 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL_AMBIENT_R, 3); OUT_RINGp(chan, c_scene, 3); if (ctx->Light.ColorMaterialEnabled) { - BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_R, 3); + BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_R, 3); OUT_RINGp(chan, c_factor, 3); } @@ -349,7 +349,7 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit) l->Ambient : l->_MatAmbient[0]); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_AMBIENT_R(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_AMBIENT_R(i), 3); OUT_RINGp(chan, c_light, 3); } } @@ -362,7 +362,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit) GLfloat (*mat)[4] = ctx->Light.Material.Attrib; struct gl_light *l; - BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_A, 1); + BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_A, 1); OUT_RINGf(chan, mat[MAT_ATTRIB_FRONT_DIFFUSE][3]); foreach(l, &ctx->Light.EnabledList) { @@ -371,7 +371,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit) l->Diffuse : l->_MatDiffuse[0]); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIFFUSE_R(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIFFUSE_R(i), 3); OUT_RINGp(chan, c_light, 3); } } @@ -389,7 +389,7 @@ nv10_emit_material_specular(struct gl_context *ctx, int emit) l->Specular : l->_MatSpecular[0]); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPECULAR_R(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPECULAR_R(i), 3); OUT_RINGp(chan, c_light, 3); } } @@ -430,7 +430,7 @@ nv10_emit_material_shininess(struct gl_context *ctx, int emit) CLAMP(mat[MAT_ATTRIB_FRONT_SHININESS][0], 0, 1024), k); - BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_SHININESS(0), 6); + BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_SHININESS(0), 6); OUT_RINGp(chan, k, 6); } @@ -447,7 +447,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit) if (ctx->Light._NeedEyeCoords || ctx->Fog.Enabled || (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD)) { - BEGIN_RING(chan, celsius, NV10TCL_MODELVIEW0_MATRIX(0), 16); + BEGIN_RING(chan, celsius, NV10_3D_MODELVIEW_MATRIX(0, 0), 16); OUT_RINGm(chan, m->m); } @@ -456,7 +456,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit) int i, j; BEGIN_RING(chan, celsius, - NV10TCL_INVERSE_MODELVIEW0_MATRIX(0), 12); + NV10_3D_INVERSE_MODELVIEW_MATRIX(0, 0), 12); for (i = 0; i < 3; i++) for (j = 0; j < 4; j++) OUT_RINGf(chan, m->inv[4*i + j]); @@ -485,7 +485,7 @@ nv10_emit_projection(struct gl_context *ctx, int emit) if (nctx->fallback == HWTNL) _math_matrix_mul_matrix(&m, &m, &ctx->_ModelProjectMatrix); - BEGIN_RING(chan, celsius, NV10TCL_PROJECTION_MATRIX(0), 16); + BEGIN_RING(chan, celsius, NV10_3D_PROJECTION_MATRIX(0), 16); OUT_RINGm(chan, m.m); _math_matrix_dtr(&m); diff --git a/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h new file mode 100644 index 0000000000..c8ed861961 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h @@ -0,0 +1,2076 @@ +#ifndef NV20_3D_XML +#define NV20_3D_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv20_3d.xml ( 21073 bytes, from 2010-11-15 02:24:38) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nv10_3d.xml ( 18449 bytes, from 2010-11-15 02:24:38) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) +- nv_3ddefs.xml ( 16394 bytes, from 2010-11-01 00:28:46) +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <arthur.huillet@free.fr> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <koala_br@users.sourceforge.net> (koala_br) +- Carlos Martin <carlosmn@users.sf.net> (carlosmn) +- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr) +- Dawid Gajownik <gajownik@users.sf.net> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag) +- EdB <edb_@users.sf.net> (edb_) +- Erik Waling <erikwailing@users.sf.net> (erikwaling) +- Francisco Jerez <currojerez@riseup.net> (curro) +- imirkin <imirkin@users.sf.net> (imirkin) +- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome) +- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy) +- Laurent Carlier <lordheavym@gmail.com> (lordheavy) +- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1) +- Maarten Maathuis <madman2003@gmail.com> (stillunknown) +- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin) +- Mark Carey <mark.carey@gmail.com> (careym) +- Matthieu Castet <matthieu.castet@parrot.com> (mat-c) +- nvidiaman <nvidiaman@users.sf.net> (nvidiaman) +- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata) +- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen) +- Peter Popov <ironpeter@users.sf.net> (ironpeter) +- Richard Hughes <hughsient@users.sf.net> (hughsient) +- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <leroutier@users.sf.net> (leroutier) +- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu) +- sturmflut <sturmflut@users.sf.net> (sturmflut) +- Sylvain Munaut <tnt@246tNt.com> +- Victor Stinner <victor.stinner@haypocalc.com> (haypo) +- Wladmir van der Laan <laanwj@gmail.com> (miathan6) +- Younes Manton <younes.m@gmail.com> (ymanton) + +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 (including the +next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. +*/ + + +#define NV20_VERTEX_ATTR_POS 0x00000000 +#define NV20_VERTEX_ATTR_NORMAL 0x00000002 +#define NV20_VERTEX_ATTR_COLOR0 0x00000003 +#define NV20_VERTEX_ATTR_COLOR1 0x00000004 +#define NV20_VERTEX_ATTR_FOG 0x00000005 +#define NV20_VERTEX_ATTR_TEX0 0x00000009 +#define NV20_VERTEX_ATTR_TEX1 0x0000000a +#define NV20_VERTEX_ATTR_TEX2 0x0000000b +#define NV20_VERTEX_ATTR_TEX3 0x0000000c + + + +#define NV20_3D_FLIP_SET_READ 0x00000120 + +#define NV20_3D_FLIP_SET_WRITE 0x00000124 + +#define NV20_3D_FLIP_MAX 0x00000128 + +#define NV20_3D_FLIP_INCR_WRITE 0x0000012c + +#define NV20_3D_FLIP_WAIT 0x00000130 + +#define NV20_3D_DMA_NOTIFY 0x00000180 + +#define NV20_3D_DMA_TEXTURE0 0x00000184 + +#define NV20_3D_DMA_TEXTURE1 0x00000188 + +#define NV20_3D_DMA_COLOR 0x00000194 + +#define NV20_3D_DMA_ZETA 0x00000198 + +#define NV20_3D_RT_HORIZ 0x00000200 +#define NV20_3D_RT_HORIZ_X__MASK 0x0000ffff +#define NV20_3D_RT_HORIZ_X__SHIFT 0 +#define NV20_3D_RT_HORIZ_W__MASK 0xffff0000 +#define NV20_3D_RT_HORIZ_W__SHIFT 16 + +#define NV20_3D_RT_VERT 0x00000204 +#define NV20_3D_RT_VERT_Y__MASK 0x0000ffff +#define NV20_3D_RT_VERT_Y__SHIFT 0 +#define NV20_3D_RT_VERT_H__MASK 0xffff0000 +#define NV20_3D_RT_VERT_H__SHIFT 16 + +#define NV20_3D_RT_FORMAT 0x00000208 +#define NV20_3D_RT_FORMAT_TYPE__MASK 0x00000f00 +#define NV20_3D_RT_FORMAT_TYPE__SHIFT 8 +#define NV20_3D_RT_FORMAT_TYPE_LINEAR 0x00000100 +#define NV20_3D_RT_FORMAT_TYPE_SWIZZLED 0x00000200 +#define NV20_3D_RT_FORMAT_DEPTH__MASK 0x00000030 +#define NV20_3D_RT_FORMAT_DEPTH__SHIFT 4 +#define NV20_3D_RT_FORMAT_DEPTH_Z16 0x00000010 +#define NV20_3D_RT_FORMAT_DEPTH_Z24S8 0x00000020 +#define NV20_3D_RT_FORMAT_COLOR__MASK 0x0000000f +#define NV20_3D_RT_FORMAT_COLOR__SHIFT 0 +#define NV20_3D_RT_FORMAT_COLOR_R5G6B5 0x00000003 +#define NV20_3D_RT_FORMAT_COLOR_X8R8G8B8 0x00000005 +#define NV20_3D_RT_FORMAT_COLOR_A8R8G8B8 0x00000008 +#define NV20_3D_RT_FORMAT_COLOR_B8 0x00000009 + +#define NV20_3D_RT_PITCH 0x0000020c +#define NV20_3D_RT_PITCH_COLOR_PITCH__MASK 0x0000ffff +#define NV20_3D_RT_PITCH_COLOR_PITCH__SHIFT 0 +#define NV20_3D_RT_PITCH_ZETA_PITCH__MASK 0xffff0000 +#define NV20_3D_RT_PITCH_ZETA_PITCH__SHIFT 16 + +#define NV20_3D_COLOR_OFFSET 0x00000210 + +#define NV20_3D_ZETA_OFFSET 0x00000214 + +#define NV20_3D_UNK0290 0x00000290 + +#define NV20_3D_VIEWPORT_CLIP_MODE 0x000002b4 + +#define NV20_3D_VIEWPORT_CLIP_HORIZ(i0) (0x000002c0 + 0x4*(i0)) +#define NV20_3D_VIEWPORT_CLIP_HORIZ__ESIZE 0x00000004 +#define NV20_3D_VIEWPORT_CLIP_HORIZ__LEN 0x00000008 +#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__MASK 0x000007ff +#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__SHIFT 0 +#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__MASK 0x07ff0000 +#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__SHIFT 16 + +#define NV20_3D_VIEWPORT_CLIP_VERT(i0) (0x000002e0 + 0x4*(i0)) +#define NV20_3D_VIEWPORT_CLIP_VERT__ESIZE 0x00000004 +#define NV20_3D_VIEWPORT_CLIP_VERT__LEN 0x00000008 +#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_T__MASK 0x000007ff +#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_T__SHIFT 0 +#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_B__MASK 0x07ff0000 +#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_B__SHIFT 16 + +#define NV20_3D_ALPHA_FUNC_ENABLE 0x00000300 + +#define NV20_3D_BLEND_FUNC_ENABLE 0x00000304 + +#define NV20_3D_CULL_FACE_ENABLE 0x00000308 + +#define NV20_3D_DEPTH_TEST_ENABLE 0x0000030c + +#define NV20_3D_DITHER_ENABLE 0x00000310 + +#define NV20_3D_LIGHTING_ENABLE 0x00000314 + +#define NV20_3D_POINT_PARAMETERS_ENABLE 0x00000318 + +#define NV20_3D_POINT_SMOOTH_ENABLE 0x0000031c + +#define NV20_3D_LINE_SMOOTH_ENABLE 0x00000320 + +#define NV20_3D_POLYGON_SMOOTH_ENABLE 0x00000324 + +#define NV20_3D_STENCIL_ENABLE 0x0000032c + +#define NV20_3D_POLYGON_OFFSET_POINT_ENABLE 0x00000330 + +#define NV20_3D_POLYGON_OFFSET_LINE_ENABLE 0x00000334 + +#define NV20_3D_POLYGON_OFFSET_FILL_ENABLE 0x00000338 + +#define NV20_3D_ALPHA_FUNC_FUNC 0x0000033c +#define NV20_3D_ALPHA_FUNC_FUNC_NEVER 0x00000200 +#define NV20_3D_ALPHA_FUNC_FUNC_LESS 0x00000201 +#define NV20_3D_ALPHA_FUNC_FUNC_EQUAL 0x00000202 +#define NV20_3D_ALPHA_FUNC_FUNC_LEQUAL 0x00000203 +#define NV20_3D_ALPHA_FUNC_FUNC_GREATER 0x00000204 +#define NV20_3D_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205 +#define NV20_3D_ALPHA_FUNC_FUNC_GEQUAL 0x00000206 +#define NV20_3D_ALPHA_FUNC_FUNC_ALWAYS 0x00000207 + +#define NV20_3D_ALPHA_FUNC_REF 0x00000340 + +#define NV20_3D_BLEND_FUNC_SRC 0x00000344 +#define NV20_3D_BLEND_FUNC_SRC_ZERO 0x00000000 +#define NV20_3D_BLEND_FUNC_SRC_ONE 0x00000001 +#define NV20_3D_BLEND_FUNC_SRC_SRC_COLOR 0x00000300 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301 +#define NV20_3D_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303 +#define NV20_3D_BLEND_FUNC_SRC_DST_ALPHA 0x00000304 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305 +#define NV20_3D_BLEND_FUNC_SRC_DST_COLOR 0x00000306 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307 +#define NV20_3D_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308 +#define NV20_3D_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002 +#define NV20_3D_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004 + +#define NV20_3D_BLEND_FUNC_DST 0x00000348 +#define NV20_3D_BLEND_FUNC_DST_ZERO 0x00000000 +#define NV20_3D_BLEND_FUNC_DST_ONE 0x00000001 +#define NV20_3D_BLEND_FUNC_DST_SRC_COLOR 0x00000300 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301 +#define NV20_3D_BLEND_FUNC_DST_SRC_ALPHA 0x00000302 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303 +#define NV20_3D_BLEND_FUNC_DST_DST_ALPHA 0x00000304 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305 +#define NV20_3D_BLEND_FUNC_DST_DST_COLOR 0x00000306 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307 +#define NV20_3D_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308 +#define NV20_3D_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002 +#define NV20_3D_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004 + +#define NV20_3D_BLEND_COLOR 0x0000034c +#define NV20_3D_BLEND_COLOR_B__MASK 0x000000ff +#define NV20_3D_BLEND_COLOR_B__SHIFT 0 +#define NV20_3D_BLEND_COLOR_G__MASK 0x0000ff00 +#define NV20_3D_BLEND_COLOR_G__SHIFT 8 +#define NV20_3D_BLEND_COLOR_R__MASK 0x00ff0000 +#define NV20_3D_BLEND_COLOR_R__SHIFT 16 +#define NV20_3D_BLEND_COLOR_A__MASK 0xff000000 +#define NV20_3D_BLEND_COLOR_A__SHIFT 24 + +#define NV20_3D_BLEND_EQUATION 0x00000350 +#define NV20_3D_BLEND_EQUATION_FUNC_ADD 0x00008006 +#define NV20_3D_BLEND_EQUATION_MIN 0x00008007 +#define NV20_3D_BLEND_EQUATION_MAX 0x00008008 +#define NV20_3D_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a +#define NV20_3D_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b + +#define NV20_3D_DEPTH_FUNC 0x00000354 +#define NV20_3D_DEPTH_FUNC_NEVER 0x00000200 +#define NV20_3D_DEPTH_FUNC_LESS 0x00000201 +#define NV20_3D_DEPTH_FUNC_EQUAL 0x00000202 +#define NV20_3D_DEPTH_FUNC_LEQUAL 0x00000203 +#define NV20_3D_DEPTH_FUNC_GREATER 0x00000204 +#define NV20_3D_DEPTH_FUNC_NOTEQUAL 0x00000205 +#define NV20_3D_DEPTH_FUNC_GEQUAL 0x00000206 +#define NV20_3D_DEPTH_FUNC_ALWAYS 0x00000207 + +#define NV20_3D_COLOR_MASK 0x00000358 +#define NV20_3D_COLOR_MASK_B 0x00000001 +#define NV20_3D_COLOR_MASK_G 0x00000100 +#define NV20_3D_COLOR_MASK_R 0x00010000 +#define NV20_3D_COLOR_MASK_A 0x01000000 + +#define NV20_3D_DEPTH_WRITE_ENABLE 0x0000035c + +#define NV20_3D_STENCIL_MASK 0x00000360 + +#define NV20_3D_STENCIL_FUNC_FUNC 0x00000364 +#define NV20_3D_STENCIL_FUNC_FUNC_NEVER 0x00000200 +#define NV20_3D_STENCIL_FUNC_FUNC_LESS 0x00000201 +#define NV20_3D_STENCIL_FUNC_FUNC_EQUAL 0x00000202 +#define NV20_3D_STENCIL_FUNC_FUNC_LEQUAL 0x00000203 +#define NV20_3D_STENCIL_FUNC_FUNC_GREATER 0x00000204 +#define NV20_3D_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205 +#define NV20_3D_STENCIL_FUNC_FUNC_GEQUAL 0x00000206 +#define NV20_3D_STENCIL_FUNC_FUNC_ALWAYS 0x00000207 + +#define NV20_3D_STENCIL_FUNC_REF 0x00000368 + +#define NV20_3D_STENCIL_FUNC_MASK 0x0000036c + +#define NV20_3D_STENCIL_OP_FAIL 0x00000370 +#define NV20_3D_STENCIL_OP_FAIL_ZERO 0x00000000 +#define NV20_3D_STENCIL_OP_FAIL_INVERT 0x0000150a +#define NV20_3D_STENCIL_OP_FAIL_KEEP 0x00001e00 +#define NV20_3D_STENCIL_OP_FAIL_REPLACE 0x00001e01 +#define NV20_3D_STENCIL_OP_FAIL_INCR 0x00001e02 +#define NV20_3D_STENCIL_OP_FAIL_DECR 0x00001e03 +#define NV20_3D_STENCIL_OP_FAIL_INCR_WRAP 0x00008507 +#define NV20_3D_STENCIL_OP_FAIL_DECR_WRAP 0x00008508 + +#define NV20_3D_STENCIL_OP_ZFAIL 0x00000374 +#define NV20_3D_STENCIL_OP_ZFAIL_ZERO 0x00000000 +#define NV20_3D_STENCIL_OP_ZFAIL_INVERT 0x0000150a +#define NV20_3D_STENCIL_OP_ZFAIL_KEEP 0x00001e00 +#define NV20_3D_STENCIL_OP_ZFAIL_REPLACE 0x00001e01 +#define NV20_3D_STENCIL_OP_ZFAIL_INCR 0x00001e02 +#define NV20_3D_STENCIL_OP_ZFAIL_DECR 0x00001e03 +#define NV20_3D_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507 +#define NV20_3D_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508 + +#define NV20_3D_STENCIL_OP_ZPASS 0x00000378 +#define NV20_3D_STENCIL_OP_ZPASS_ZERO 0x00000000 +#define NV20_3D_STENCIL_OP_ZPASS_INVERT 0x0000150a +#define NV20_3D_STENCIL_OP_ZPASS_KEEP 0x00001e00 +#define NV20_3D_STENCIL_OP_ZPASS_REPLACE 0x00001e01 +#define NV20_3D_STENCIL_OP_ZPASS_INCR 0x00001e02 +#define NV20_3D_STENCIL_OP_ZPASS_DECR 0x00001e03 +#define NV20_3D_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507 +#define NV20_3D_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508 + +#define NV20_3D_SHADE_MODEL 0x0000037c +#define NV20_3D_SHADE_MODEL_FLAT 0x00001d00 +#define NV20_3D_SHADE_MODEL_SMOOTH 0x00001d01 + +#define NV20_3D_LINE_WIDTH 0x00000380 + +#define NV20_3D_POLYGON_OFFSET_FACTOR 0x00000384 + +#define NV20_3D_POLYGON_OFFSET_UNITS 0x00000388 + +#define NV20_3D_POLYGON_MODE_FRONT 0x0000038c +#define NV20_3D_POLYGON_MODE_FRONT_POINT 0x00001b00 +#define NV20_3D_POLYGON_MODE_FRONT_LINE 0x00001b01 +#define NV20_3D_POLYGON_MODE_FRONT_FILL 0x00001b02 + +#define NV20_3D_POLYGON_MODE_BACK 0x00000390 +#define NV20_3D_POLYGON_MODE_BACK_POINT 0x00001b00 +#define NV20_3D_POLYGON_MODE_BACK_LINE 0x00001b01 +#define NV20_3D_POLYGON_MODE_BACK_FILL 0x00001b02 + +#define NV20_3D_DEPTH_RANGE_NEAR 0x00000394 + +#define NV20_3D_DEPTH_RANGE_FAR 0x00000398 + +#define NV20_3D_CULL_FACE 0x0000039c +#define NV20_3D_CULL_FACE_FRONT 0x00000404 +#define NV20_3D_CULL_FACE_BACK 0x00000405 +#define NV20_3D_CULL_FACE_FRONT_AND_BACK 0x00000408 + +#define NV20_3D_FRONT_FACE 0x000003a0 +#define NV20_3D_FRONT_FACE_CW 0x00000900 +#define NV20_3D_FRONT_FACE_CCW 0x00000901 + +#define NV20_3D_DMA_FENCE 0x000001a4 + +#define NV20_3D_DMA_QUERY 0x000001a8 + + +#define NV20_3D_VERTEX_POS_3F 0x00001500 + + +#define NV20_3D_VERTEX_POS_3F_X 0x00001500 + +#define NV20_3D_VERTEX_POS_3F_Y 0x00001504 + +#define NV20_3D_VERTEX_POS_3F_Z 0x00001508 + +#define NV20_3D_VERTEX_POS_4F 0x00001518 + + +#define NV20_3D_VERTEX_POS_4F_X 0x00001518 + +#define NV20_3D_VERTEX_POS_4F_Y 0x0000151c + +#define NV20_3D_VERTEX_POS_4F_Z 0x00001520 + +#define NV20_3D_VERTEX_POS_4F_W 0x00001524 + +#define NV20_3D_VERTEX_POS_3I 0x00001528 + + +#define NV20_3D_VERTEX_POS_3I_XY 0x00001528 +#define NV20_3D_VERTEX_POS_3I_XY_X__MASK 0x0000ffff +#define NV20_3D_VERTEX_POS_3I_XY_X__SHIFT 0 +#define NV20_3D_VERTEX_POS_3I_XY_Y__MASK 0xffff0000 +#define NV20_3D_VERTEX_POS_3I_XY_Y__SHIFT 16 + +#define NV20_3D_VERTEX_POS_3I_Z 0x0000152c +#define NV20_3D_VERTEX_POS_3I_Z_Z__MASK 0x0000ffff +#define NV20_3D_VERTEX_POS_3I_Z_Z__SHIFT 0 + +#define NV20_3D_VERTEX_NOR_3F 0x00001530 + + +#define NV20_3D_VERTEX_NOR_3F_X 0x00001530 + +#define NV20_3D_VERTEX_NOR_3F_Y 0x00001534 + +#define NV20_3D_VERTEX_NOR_3F_Z 0x00001538 + +#define NV20_3D_VERTEX_NOR_3I 0x00001540 + + +#define NV20_3D_VERTEX_NOR_3I_XY 0x00001540 +#define NV20_3D_VERTEX_NOR_3I_XY_X__MASK 0x0000ffff +#define NV20_3D_VERTEX_NOR_3I_XY_X__SHIFT 0 +#define NV20_3D_VERTEX_NOR_3I_XY_Y__MASK 0xffff0000 +#define NV20_3D_VERTEX_NOR_3I_XY_Y__SHIFT 16 + +#define NV20_3D_VERTEX_NOR_3I_Z 0x00001544 +#define NV20_3D_VERTEX_NOR_3I_Z_Z__MASK 0x0000ffff +#define NV20_3D_VERTEX_NOR_3I_Z_Z__SHIFT 0 + +#define NV20_3D_VERTEX_COL_4F 0x00001550 + + +#define NV20_3D_VERTEX_COL_4F_R 0x00001550 + +#define NV20_3D_VERTEX_COL_4F_G 0x00001554 + +#define NV20_3D_VERTEX_COL_4F_B 0x00001558 + +#define NV20_3D_VERTEX_COL_4F_A 0x0000155c + +#define NV20_3D_VERTEX_COL_3F 0x00001560 + + +#define NV20_3D_VERTEX_COL_3F_R 0x00001560 + +#define NV20_3D_VERTEX_COL_3F_G 0x00001564 + +#define NV20_3D_VERTEX_COL_3F_B 0x00001568 + +#define NV20_3D_VERTEX_COL_4I 0x0000156c +#define NV20_3D_VERTEX_COL_4I_R__MASK 0x000000ff +#define NV20_3D_VERTEX_COL_4I_R__SHIFT 0 +#define NV20_3D_VERTEX_COL_4I_G__MASK 0x0000ff00 +#define NV20_3D_VERTEX_COL_4I_G__SHIFT 8 +#define NV20_3D_VERTEX_COL_4I_B__MASK 0x00ff0000 +#define NV20_3D_VERTEX_COL_4I_B__SHIFT 16 +#define NV20_3D_VERTEX_COL_4I_A__MASK 0xff000000 +#define NV20_3D_VERTEX_COL_4I_A__SHIFT 24 + +#define NV20_3D_VERTEX_COL2_3F 0x00001580 + + +#define NV20_3D_VERTEX_COL2_3F_R 0x00001580 + +#define NV20_3D_VERTEX_COL2_3F_G 0x00001584 + +#define NV20_3D_VERTEX_COL2_3F_B 0x00001588 + +#define NV20_3D_VERTEX_COL2_3I 0x0000158c +#define NV20_3D_VERTEX_COL2_3I_R__MASK 0x000000ff +#define NV20_3D_VERTEX_COL2_3I_R__SHIFT 0 +#define NV20_3D_VERTEX_COL2_3I_G__MASK 0x0000ff00 +#define NV20_3D_VERTEX_COL2_3I_G__SHIFT 8 +#define NV20_3D_VERTEX_COL2_3I_B__MASK 0x00ff0000 +#define NV20_3D_VERTEX_COL2_3I_B__SHIFT 16 + +#define NV20_3D_VERTEX_TX0_2F 0x00001590 + + +#define NV20_3D_VERTEX_TX0_2F_S 0x00001590 + +#define NV20_3D_VERTEX_TX0_2F_T 0x00001594 + +#define NV20_3D_VERTEX_TX0_2I 0x00001598 +#define NV20_3D_VERTEX_TX0_2I_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX0_2I_S__SHIFT 0 +#define NV20_3D_VERTEX_TX0_2I_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX0_2I_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX0_4F 0x000015a0 + + +#define NV20_3D_VERTEX_TX0_4F_S 0x000015a0 + +#define NV20_3D_VERTEX_TX0_4F_T 0x000015a4 + +#define NV20_3D_VERTEX_TX0_4F_R 0x000015a8 + +#define NV20_3D_VERTEX_TX0_4F_Q 0x000015ac + +#define NV20_3D_VERTEX_TX0_4I 0x000015b0 + + +#define NV20_3D_VERTEX_TX0_4I_ST 0x000015b0 +#define NV20_3D_VERTEX_TX0_4I_ST_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX0_4I_ST_S__SHIFT 0 +#define NV20_3D_VERTEX_TX0_4I_ST_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX0_4I_ST_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX0_4I_RQ 0x000015b4 +#define NV20_3D_VERTEX_TX0_4I_RQ_R__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX0_4I_RQ_R__SHIFT 0 +#define NV20_3D_VERTEX_TX0_4I_RQ_Q__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX0_4I_RQ_Q__SHIFT 16 + +#define NV20_3D_VERTEX_TX1_2F 0x000015b8 + + +#define NV20_3D_VERTEX_TX1_2F_S 0x000015b8 + +#define NV20_3D_VERTEX_TX1_2F_T 0x000015bc + +#define NV20_3D_VERTEX_TX1_2I 0x000015c0 +#define NV20_3D_VERTEX_TX1_2I_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX1_2I_S__SHIFT 0 +#define NV20_3D_VERTEX_TX1_2I_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX1_2I_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX1_4F 0x000015c8 + + +#define NV20_3D_VERTEX_TX1_4F_S 0x000015c8 + +#define NV20_3D_VERTEX_TX1_4F_T 0x000015cc + +#define NV20_3D_VERTEX_TX1_4F_R 0x000015d0 + +#define NV20_3D_VERTEX_TX1_4F_Q 0x000015d4 + +#define NV20_3D_VERTEX_TX1_4I 0x000015d8 + + +#define NV20_3D_VERTEX_TX1_4I_ST 0x000015d8 +#define NV20_3D_VERTEX_TX1_4I_ST_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX1_4I_ST_S__SHIFT 0 +#define NV20_3D_VERTEX_TX1_4I_ST_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX1_4I_ST_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX1_4I_RQ 0x000015dc +#define NV20_3D_VERTEX_TX1_4I_RQ_R__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX1_4I_RQ_R__SHIFT 0 +#define NV20_3D_VERTEX_TX1_4I_RQ_Q__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX1_4I_RQ_Q__SHIFT 16 + +#define NV20_3D_VERTEX_TX2_2F 0x000015e0 + + +#define NV20_3D_VERTEX_TX2_2F_S 0x000015e0 + +#define NV20_3D_VERTEX_TX2_2F_T 0x000015e4 + +#define NV20_3D_VERTEX_TX2_2I 0x000015e8 +#define NV20_3D_VERTEX_TX2_2I_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX2_2I_S__SHIFT 0 +#define NV20_3D_VERTEX_TX2_2I_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX2_2I_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX2_4F 0x000015f0 + + +#define NV20_3D_VERTEX_TX2_4F_S 0x000015f0 + +#define NV20_3D_VERTEX_TX2_4F_T 0x000015f4 + +#define NV20_3D_VERTEX_TX2_4F_R 0x000015f8 + +#define NV20_3D_VERTEX_TX2_4F_Q 0x000015fc + +#define NV20_3D_VERTEX_TX2_4I 0x00001600 + + +#define NV20_3D_VERTEX_TX2_4I_ST 0x00001600 +#define NV20_3D_VERTEX_TX2_4I_ST_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX2_4I_ST_S__SHIFT 0 +#define NV20_3D_VERTEX_TX2_4I_ST_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX2_4I_ST_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX2_4I_RQ 0x00001604 +#define NV20_3D_VERTEX_TX2_4I_RQ_R__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX2_4I_RQ_R__SHIFT 0 +#define NV20_3D_VERTEX_TX2_4I_RQ_Q__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX2_4I_RQ_Q__SHIFT 16 + +#define NV20_3D_VERTEX_TX3_2F 0x00001608 + + +#define NV20_3D_VERTEX_TX3_2F_S 0x00001608 + +#define NV20_3D_VERTEX_TX3_2F_T 0x0000160c + +#define NV20_3D_VERTEX_TX3_2I 0x00001610 +#define NV20_3D_VERTEX_TX3_2I_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX3_2I_S__SHIFT 0 +#define NV20_3D_VERTEX_TX3_2I_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX3_2I_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX3_4F 0x00001620 + + +#define NV20_3D_VERTEX_TX3_4F_S 0x00001620 + +#define NV20_3D_VERTEX_TX3_4F_T 0x00001624 + +#define NV20_3D_VERTEX_TX3_4F_R 0x00001628 + +#define NV20_3D_VERTEX_TX3_4F_Q 0x0000162c + +#define NV20_3D_VERTEX_TX3_4I 0x00001630 + + +#define NV20_3D_VERTEX_TX3_4I_ST 0x00001630 +#define NV20_3D_VERTEX_TX3_4I_ST_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX3_4I_ST_S__SHIFT 0 +#define NV20_3D_VERTEX_TX3_4I_ST_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX3_4I_ST_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX3_4I_RQ 0x00001634 +#define NV20_3D_VERTEX_TX3_4I_RQ_R__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX3_4I_RQ_R__SHIFT 0 +#define NV20_3D_VERTEX_TX3_4I_RQ_Q__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX3_4I_RQ_Q__SHIFT 16 + +#define NV20_3D_VERTEX_FOG_1F 0x00001698 + +#define NV20_3D_EDGEFLAG_ENABLE 0x000016bc + +#define NV20_3D_VERTEX_ATTR_4F(i0) (0x00001a00 + 0x10*(i0)) +#define NV20_3D_VERTEX_ATTR_4F__ESIZE 0x00000010 +#define NV20_3D_VERTEX_ATTR_4F__LEN 0x00000010 + + +#define NV20_3D_VERTEX_ATTR_4F_X(i0) (0x00001a00 + 0x10*(i0)) + +#define NV20_3D_VERTEX_ATTR_4F_Y(i0) (0x00001a04 + 0x10*(i0)) + +#define NV20_3D_VERTEX_ATTR_4F_Z(i0) (0x00001a08 + 0x10*(i0)) + +#define NV20_3D_VERTEX_ATTR_4F_W(i0) (0x00001a0c + 0x10*(i0)) + + +#define NV20_3D_DMA_VTXBUF0 0x0000019c + +#define NV20_3D_DMA_VTXBUF1 0x000001a0 + +#define NV20_3D_VTXBUF_VALIDATE 0x00001710 + + +#define NV20_3D_VTXBUF_OFFSET(i0) (0x00001720 + 0x4*(i0)) +#define NV20_3D_VTXBUF_OFFSET_DMA1 0x80000000 +#define NV20_3D_VTXBUF_OFFSET_OFFSET__MASK 0x0fffffff +#define NV20_3D_VTXBUF_OFFSET_OFFSET__SHIFT 0 + +#define NV20_3D_VTXBUF_FMT(i0) (0x00001760 + 0x4*(i0)) +#define NV20_3D_VTXBUF_FMT_TYPE__MASK 0x0000000f +#define NV20_3D_VTXBUF_FMT_TYPE__SHIFT 0 +#define NV20_3D_VTXBUF_FMT_TYPE_FLOAT 0x00000002 +#define NV20_3D_VTXBUF_FMT_TYPE_UBYTE 0x00000004 +#define NV20_3D_VTXBUF_FMT_TYPE_USHORT 0x00000005 +#define NV20_3D_VTXBUF_FMT_SIZE__MASK 0x000000f0 +#define NV20_3D_VTXBUF_FMT_SIZE__SHIFT 4 +#define NV20_3D_VTXBUF_FMT_STRIDE__MASK 0x0000ff00 +#define NV20_3D_VTXBUF_FMT_STRIDE__SHIFT 8 + +#define NV20_3D_VERTEX_BEGIN_END 0x000017fc +#define NV20_3D_VERTEX_BEGIN_END_STOP 0x00000000 +#define NV20_3D_VERTEX_BEGIN_END_POINTS 0x00000001 +#define NV20_3D_VERTEX_BEGIN_END_LINES 0x00000002 +#define NV20_3D_VERTEX_BEGIN_END_LINE_LOOP 0x00000003 +#define NV20_3D_VERTEX_BEGIN_END_LINE_STRIP 0x00000004 +#define NV20_3D_VERTEX_BEGIN_END_TRIANGLES 0x00000005 +#define NV20_3D_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006 +#define NV20_3D_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007 +#define NV20_3D_VERTEX_BEGIN_END_QUADS 0x00000008 +#define NV20_3D_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009 +#define NV20_3D_VERTEX_BEGIN_END_POLYGON 0x0000000a + +#define NV20_3D_VTXBUF_ELEMENT_U16 0x00001800 +#define NV20_3D_VTXBUF_ELEMENT_U16_I0__MASK 0x0000ffff +#define NV20_3D_VTXBUF_ELEMENT_U16_I0__SHIFT 0 +#define NV20_3D_VTXBUF_ELEMENT_U16_I1__MASK 0xffff0000 +#define NV20_3D_VTXBUF_ELEMENT_U16_I1__SHIFT 16 + +#define NV20_3D_VTXBUF_ELEMENT_U32 0x00001808 + +#define NV20_3D_VTXBUF_BATCH 0x00001810 +#define NV20_3D_VTXBUF_BATCH_OFFSET__MASK 0x00ffffff +#define NV20_3D_VTXBUF_BATCH_OFFSET__SHIFT 0 +#define NV20_3D_VTXBUF_BATCH_COUNT__MASK 0xff000000 +#define NV20_3D_VTXBUF_BATCH_COUNT__SHIFT 24 + +#define NV20_3D_VTXBUF_DATA 0x00001818 + + +#define NV20_3D_ENGINE 0x00001e94 +#define NV20_3D_ENGINE_VP 0x00000002 +#define NV20_3D_ENGINE_FIXED 0x00000004 + +#define NV20_3D_VP_UPLOAD_INST(i0) (0x00000b00 + 0x4*(i0)) +#define NV20_3D_VP_UPLOAD_INST__ESIZE 0x00000004 +#define NV20_3D_VP_UPLOAD_INST__LEN 0x00000004 + +#define NV20_3D_VP_UPLOAD_CONST(i0) (0x00000b80 + 0x4*(i0)) +#define NV20_3D_VP_UPLOAD_CONST__ESIZE 0x00000004 +#define NV20_3D_VP_UPLOAD_CONST__LEN 0x00000004 + +#define NV20_3D_VP_UPLOAD_FROM_ID 0x00001e9c + +#define NV20_3D_VP_START_FROM_ID 0x00001ea0 + +#define NV20_3D_VP_UPLOAD_CONST_ID 0x00001ea4 + + + +#define NV20_3D_MODELVIEW_MATRIX(i0, i1) (0x00000480 + 0x40*(i0) + 0x4*(i1)) +#define NV20_3D_MODELVIEW_MATRIX__ESIZE 0x00000004 +#define NV20_3D_MODELVIEW_MATRIX__LEN 0x00000010 + +#define NV20_3D_INVERSE_MODELVIEW_MATRIX(i0, i1) (0x00000580 + 0x40*(i0) + 0x4*(i1)) +#define NV20_3D_INVERSE_MODELVIEW_MATRIX__ESIZE 0x00000004 +#define NV20_3D_INVERSE_MODELVIEW_MATRIX__LEN 0x00000010 + +#define NV20_3D_PROJECTION_MATRIX(i0) (0x00000680 + 0x4*(i0)) +#define NV20_3D_PROJECTION_MATRIX__ESIZE 0x00000004 +#define NV20_3D_PROJECTION_MATRIX__LEN 0x00000010 + +#define NV20_3D_VIEWPORT_TRANSLATE 0x00000a20 + + +#define NV20_3D_VIEWPORT_TRANSLATE_X 0x00000a20 + +#define NV20_3D_VIEWPORT_TRANSLATE_Y 0x00000a24 + +#define NV20_3D_VIEWPORT_TRANSLATE_Z 0x00000a28 + +#define NV20_3D_VIEWPORT_TRANSLATE_W 0x00000a2c + +#define NV20_3D_VIEWPORT_SCALE 0x00000af0 + + +#define NV20_3D_VIEWPORT_SCALE_X 0x00000af0 + +#define NV20_3D_VIEWPORT_SCALE_Y 0x00000af4 + +#define NV20_3D_VIEWPORT_SCALE_Z 0x00000af8 + +#define NV20_3D_VIEWPORT_SCALE_W 0x00000afc + + +#define NV20_3D_NORMALIZE_ENABLE 0x000003a4 + +#define NV20_3D_SEPARATE_SPECULAR_ENABLE 0x000003b8 + +#define NV20_3D_LIGHT_MODEL_TWO_SIDE_ENABLE 0x000017c4 + +#define NV20_3D_LIGHT_MODEL 0x00000294 +#define NV20_3D_LIGHT_MODEL_VIEWER__MASK 0x00030000 +#define NV20_3D_LIGHT_MODEL_VIEWER__SHIFT 16 +#define NV20_3D_LIGHT_MODEL_VIEWER_NONLOCAL 0x00020000 +#define NV20_3D_LIGHT_MODEL_VIEWER_LOCAL 0x00030000 +#define NV20_3D_LIGHT_MODEL_SEPARATE_SPECULAR 0x00000001 + +#define NV20_3D_ENABLED_LIGHTS 0x000003bc +#define NV20_3D_ENABLED_LIGHTS_0__MASK 0x00000003 +#define NV20_3D_ENABLED_LIGHTS_0__SHIFT 0 +#define NV20_3D_ENABLED_LIGHTS_0_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001 +#define NV20_3D_ENABLED_LIGHTS_0_POSITIONAL 0x00000002 +#define NV20_3D_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003 +#define NV20_3D_ENABLED_LIGHTS_1__MASK 0x0000000c +#define NV20_3D_ENABLED_LIGHTS_1__SHIFT 2 +#define NV20_3D_ENABLED_LIGHTS_1_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004 +#define NV20_3D_ENABLED_LIGHTS_1_POSITIONAL 0x00000008 +#define NV20_3D_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c +#define NV20_3D_ENABLED_LIGHTS_2__MASK 0x00000030 +#define NV20_3D_ENABLED_LIGHTS_2__SHIFT 4 +#define NV20_3D_ENABLED_LIGHTS_2_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010 +#define NV20_3D_ENABLED_LIGHTS_2_POSITIONAL 0x00000020 +#define NV20_3D_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030 +#define NV20_3D_ENABLED_LIGHTS_3__MASK 0x000000c0 +#define NV20_3D_ENABLED_LIGHTS_3__SHIFT 6 +#define NV20_3D_ENABLED_LIGHTS_3_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040 +#define NV20_3D_ENABLED_LIGHTS_3_POSITIONAL 0x00000080 +#define NV20_3D_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0 +#define NV20_3D_ENABLED_LIGHTS_4__MASK 0x00000300 +#define NV20_3D_ENABLED_LIGHTS_4__SHIFT 8 +#define NV20_3D_ENABLED_LIGHTS_4_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100 +#define NV20_3D_ENABLED_LIGHTS_4_POSITIONAL 0x00000200 +#define NV20_3D_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300 +#define NV20_3D_ENABLED_LIGHTS_5__MASK 0x00000c00 +#define NV20_3D_ENABLED_LIGHTS_5__SHIFT 10 +#define NV20_3D_ENABLED_LIGHTS_5_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400 +#define NV20_3D_ENABLED_LIGHTS_5_POSITIONAL 0x00000800 +#define NV20_3D_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00 +#define NV20_3D_ENABLED_LIGHTS_6__MASK 0x00003000 +#define NV20_3D_ENABLED_LIGHTS_6__SHIFT 12 +#define NV20_3D_ENABLED_LIGHTS_6_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000 +#define NV20_3D_ENABLED_LIGHTS_6_POSITIONAL 0x00002000 +#define NV20_3D_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000 +#define NV20_3D_ENABLED_LIGHTS_7__MASK 0x0000c000 +#define NV20_3D_ENABLED_LIGHTS_7__SHIFT 14 +#define NV20_3D_ENABLED_LIGHTS_7_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000 +#define NV20_3D_ENABLED_LIGHTS_7_POSITIONAL 0x00008000 +#define NV20_3D_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000 + +#define NV20_3D_COLOR_MATERIAL 0x00000298 +#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION__MASK 0x00000003 +#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION__SHIFT 0 +#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL1 0x00000001 +#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL2 0x00000002 +#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT__MASK 0x0000000c +#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT__SHIFT 2 +#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL1 0x00000004 +#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL2 0x00000008 +#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE__MASK 0x00000030 +#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE__SHIFT 4 +#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL1 0x00000010 +#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL2 0x00000020 +#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR__MASK 0x000000c0 +#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR__SHIFT 6 +#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL1 0x00000040 +#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL2 0x00000080 +#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION__MASK 0x00000300 +#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION__SHIFT 8 +#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL1 0x00000100 +#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL2 0x00000200 +#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT__MASK 0x00000c00 +#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT__SHIFT 10 +#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL1 0x00000400 +#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL2 0x00000800 +#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE__MASK 0x00003000 +#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE__SHIFT 12 +#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL1 0x00001000 +#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL2 0x00002000 +#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR__MASK 0x0000c000 +#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR__SHIFT 14 +#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL1 0x00004000 +#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL2 0x00008000 + +#define NV20_3D_MATERIAL_FACTOR_FRONT 0x000003a8 + + +#define NV20_3D_MATERIAL_FACTOR_FRONT_R 0x000003a8 + +#define NV20_3D_MATERIAL_FACTOR_FRONT_G 0x000003ac + +#define NV20_3D_MATERIAL_FACTOR_FRONT_B 0x000003b0 + +#define NV20_3D_MATERIAL_FACTOR_BACK 0x000017b0 + + +#define NV20_3D_MATERIAL_FACTOR_BACK_R 0x000017b0 + +#define NV20_3D_MATERIAL_FACTOR_BACK_G 0x000017b4 + +#define NV20_3D_MATERIAL_FACTOR_BACK_B 0x000017b8 + +#define NV20_3D_MATERIAL_FACTOR_FRONT_A 0x000003b4 + +#define NV20_3D_MATERIAL_FACTOR_BACK_A 0x000017ac + +#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT 0x00000a10 + + +#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_R 0x00000a10 + +#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_G 0x00000a14 + +#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_B 0x00000a18 + +#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT 0x000017a0 + + +#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_R 0x000017a0 + +#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_G 0x000017a4 + +#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_B 0x000017a8 + +#define NV20_3D_FRONT_MATERIAL_SHININESS(i0) (0x000009e0 + 0x4*(i0)) +#define NV20_3D_FRONT_MATERIAL_SHININESS__ESIZE 0x00000004 +#define NV20_3D_FRONT_MATERIAL_SHININESS__LEN 0x00000006 + +#define NV20_3D_BACK_MATERIAL_SHININESS(i0) (0x00001e28 + 0x4*(i0)) +#define NV20_3D_BACK_MATERIAL_SHININESS__ESIZE 0x00000004 +#define NV20_3D_BACK_MATERIAL_SHININESS__LEN 0x00000006 + + + +#define NV20_3D_LIGHT_FRONT_AMBIENT(i0) (0x00001000 + 0x80*(i0)) + + +#define NV20_3D_LIGHT_FRONT_AMBIENT_R(i0) (0x00001000 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_AMBIENT_G(i0) (0x00001004 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_AMBIENT_B(i0) (0x00001008 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_DIFFUSE(i0) (0x0000100c + 0x80*(i0)) + + +#define NV20_3D_LIGHT_FRONT_DIFFUSE_R(i0) (0x0000100c + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_DIFFUSE_G(i0) (0x00001010 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_DIFFUSE_B(i0) (0x00001014 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_SPECULAR(i0) (0x00001018 + 0x80*(i0)) + + +#define NV20_3D_LIGHT_FRONT_SPECULAR_R(i0) (0x00001018 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_SPECULAR_G(i0) (0x0000101c + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_SPECULAR_B(i0) (0x00001020 + 0x80*(i0)) + + +#define NV20_3D_LIGHT_BACK_AMBIENT(i0) (0x00000c00 + 0x40*(i0)) + + +#define NV20_3D_LIGHT_BACK_AMBIENT_R(i0) (0x00000c00 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_AMBIENT_G(i0) (0x00000c04 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_AMBIENT_B(i0) (0x00000c08 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_DIFFUSE(i0) (0x00000c0c + 0x40*(i0)) + + +#define NV20_3D_LIGHT_BACK_DIFFUSE_R(i0) (0x00000c0c + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_DIFFUSE_G(i0) (0x00000c10 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_DIFFUSE_B(i0) (0x00000c14 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_SPECULAR(i0) (0x00000c18 + 0x40*(i0)) + + +#define NV20_3D_LIGHT_BACK_SPECULAR_R(i0) (0x00000c18 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_SPECULAR_G(i0) (0x00000c1c + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_SPECULAR_B(i0) (0x00000c20 + 0x40*(i0)) + + +#define NV20_3D_LIGHT_HALF_VECTOR(i0) (0x00001028 + 0x80*(i0)) + + +#define NV20_3D_LIGHT_HALF_VECTOR_X(i0) (0x00001028 + 0x80*(i0)) + +#define NV20_3D_LIGHT_HALF_VECTOR_Y(i0) (0x0000102c + 0x80*(i0)) + +#define NV20_3D_LIGHT_HALF_VECTOR_Z(i0) (0x00001030 + 0x80*(i0)) + +#define NV20_3D_LIGHT_DIRECTION(i0) (0x00001034 + 0x80*(i0)) + + +#define NV20_3D_LIGHT_DIRECTION_X(i0) (0x00001034 + 0x80*(i0)) + +#define NV20_3D_LIGHT_DIRECTION_Y(i0) (0x00001038 + 0x80*(i0)) + +#define NV20_3D_LIGHT_DIRECTION_Z(i0) (0x0000103c + 0x80*(i0)) + +#define NV20_3D_LIGHT_SPOT_CUTOFF(i0, i1) (0x00001040 + 0x80*(i0) + 0x4*(i1)) +#define NV20_3D_LIGHT_SPOT_CUTOFF__ESIZE 0x00000004 +#define NV20_3D_LIGHT_SPOT_CUTOFF__LEN 0x00000007 + +#define NV20_3D_LIGHT_POSITION(i0) (0x0000105c + 0x80*(i0)) + + +#define NV20_3D_LIGHT_POSITION_X(i0) (0x0000105c + 0x80*(i0)) + +#define NV20_3D_LIGHT_POSITION_Y(i0) (0x00001060 + 0x80*(i0)) + +#define NV20_3D_LIGHT_POSITION_Z(i0) (0x00001064 + 0x80*(i0)) + +#define NV20_3D_LIGHT_ATTENUATION(i0) (0x00001068 + 0x80*(i0)) + +#define NV20_3D_LIGHT_ATTENUATION_CONSTANT(i0) (0x00001068 + 0x80*(i0)) + +#define NV20_3D_LIGHT_ATTENUATION_LINEAR(i0) (0x0000106c + 0x80*(i0)) + +#define NV20_3D_LIGHT_ATTENUATION_QUADRATIC(i0) (0x00001070 + 0x80*(i0)) + + +#define NV20_3D_FOG_MODE 0x0000029c +#define NV20_3D_FOG_MODE_LINEAR_UNSIGNED 0x00000804 +#define NV20_3D_FOG_MODE_LINEAR_SIGNED 0x00002601 +#define NV20_3D_FOG_MODE_EXP_UNSIGNED 0x00000802 +#define NV20_3D_FOG_MODE_EXP_SIGNED 0x00000800 +#define NV20_3D_FOG_MODE_EXP2_UNSIGNED 0x00000803 +#define NV20_3D_FOG_MODE_EXP2_SIGNED 0x00000801 + +#define NV20_3D_FOG_COORD 0x000002a0 +#define NV20_3D_FOG_COORD_DIST_RADIAL 0x00000001 +#define NV20_3D_FOG_COORD_DIST_ORTHOGONAL 0x00000002 +#define NV20_3D_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003 +#define NV20_3D_FOG_COORD_FOG 0x00000006 + +#define NV20_3D_FOG_ENABLE 0x000002a4 + +#define NV20_3D_FOG_COLOR 0x000002a8 +#define NV20_3D_FOG_COLOR_R__MASK 0x000000ff +#define NV20_3D_FOG_COLOR_R__SHIFT 0 +#define NV20_3D_FOG_COLOR_G__MASK 0x0000ff00 +#define NV20_3D_FOG_COLOR_G__SHIFT 8 +#define NV20_3D_FOG_COLOR_B__MASK 0x00ff0000 +#define NV20_3D_FOG_COLOR_B__SHIFT 16 +#define NV20_3D_FOG_COLOR_A__MASK 0xff000000 +#define NV20_3D_FOG_COLOR_A__SHIFT 24 + +#define NV20_3D_FOG_COEFF(i0) (0x000009c0 + 0x4*(i0)) +#define NV20_3D_FOG_COEFF__ESIZE 0x00000004 +#define NV20_3D_FOG_COEFF__LEN 0x00000003 + + + +#define NV20_3D_TEX_GEN_MODE(i0, i1) (0x000003c0 + 0x10*(i0) + 0x4*(i1)) +#define NV20_3D_TEX_GEN_MODE__ESIZE 0x00000004 +#define NV20_3D_TEX_GEN_MODE__LEN 0x00000004 +#define NV20_3D_TEX_GEN_MODE_FALSE 0x00000000 +#define NV20_3D_TEX_GEN_MODE_EYE_LINEAR 0x00002400 +#define NV20_3D_TEX_GEN_MODE_OBJECT_LINEAR 0x00002401 +#define NV20_3D_TEX_GEN_MODE_SPHERE_MAP 0x00002402 +#define NV20_3D_TEX_GEN_MODE_NORMAL_MAP 0x00008511 +#define NV20_3D_TEX_GEN_MODE_REFLECTION_MAP 0x00008512 + + +#define NV20_3D_TEX_GEN_COEFF(i0, i1) (0x00000840 + 0x40*(i0) + 0x10*(i1)) +#define NV20_3D_TEX_GEN_COEFF__ESIZE 0x00000010 +#define NV20_3D_TEX_GEN_COEFF__LEN 0x00000004 + +#define NV20_3D_TEX_GEN_COEFF_A(i0, i1) (0x00000840 + 0x40*(i0) + 0x10*(i1)) + +#define NV20_3D_TEX_GEN_COEFF_B(i0, i1) (0x00000844 + 0x40*(i0) + 0x10*(i1)) + +#define NV20_3D_TEX_GEN_COEFF_C(i0, i1) (0x00000848 + 0x40*(i0) + 0x10*(i1)) + +#define NV20_3D_TEX_GEN_COEFF_D(i0, i1) (0x0000084c + 0x40*(i0) + 0x10*(i1)) + +#define NV20_3D_TEX_MATRIX_ENABLE(i0) (0x00000420 + 0x4*(i0)) +#define NV20_3D_TEX_MATRIX_ENABLE__ESIZE 0x00000004 +#define NV20_3D_TEX_MATRIX_ENABLE__LEN 0x00000004 + + +#define NV20_3D_TEX_MATRIX(i0, i1) (0x000006c0 + 0x40*(i0) + 0x4*(i1)) +#define NV20_3D_TEX_MATRIX__ESIZE 0x00000004 +#define NV20_3D_TEX_MATRIX__LEN 0x00000010 + +#define NV20_3D_TEX_SHADER_CULL_MODE 0x000017f8 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S__MASK 0x00000001 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S__SHIFT 0 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S_LESS 0x00000001 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T__MASK 0x00000002 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T__SHIFT 1 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T_LESS 0x00000002 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R__MASK 0x00000004 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R__SHIFT 2 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R_LESS 0x00000004 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q__MASK 0x00000008 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q__SHIFT 3 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q_LESS 0x00000008 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S__MASK 0x00000010 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S__SHIFT 4 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S_LESS 0x00000010 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T__MASK 0x00000020 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T__SHIFT 5 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T_LESS 0x00000020 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R__MASK 0x00000040 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R__SHIFT 6 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R_LESS 0x00000040 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q__MASK 0x00000080 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q__SHIFT 7 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q_LESS 0x00000080 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S__MASK 0x00000100 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S__SHIFT 8 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S_LESS 0x00000100 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T__MASK 0x00000200 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T__SHIFT 9 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T_LESS 0x00000200 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R__MASK 0x00000400 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R__SHIFT 10 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R_LESS 0x00000400 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q__MASK 0x00000800 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q__SHIFT 11 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q_LESS 0x00000800 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S__MASK 0x00001000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S__SHIFT 12 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S_LESS 0x00001000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T__MASK 0x00002000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T__SHIFT 13 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T_LESS 0x00002000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R__MASK 0x00004000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R__SHIFT 14 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R_LESS 0x00004000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q__MASK 0x00008000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q__SHIFT 15 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q_LESS 0x00008000 + +#define NV20_3D_TEX_SHADER_CONST_EYE 0x0000181c + + +#define NV20_3D_TEX_SHADER_CONST_EYE_X 0x0000181c + +#define NV20_3D_TEX_SHADER_CONST_EYE_Y 0x00001820 + +#define NV20_3D_TEX_SHADER_CONST_EYE_Z 0x00001824 + + +#define NV20_3D_TEX_SHADER_OFFSET_MATRIX(i0, i1) (0x00001b28 + 0x40*(i0) + 0x4*(i1)) +#define NV20_3D_TEX_SHADER_OFFSET_MATRIX__ESIZE 0x00000004 +#define NV20_3D_TEX_SHADER_OFFSET_MATRIX__LEN 0x00000004 + +#define NV20_3D_TEX_RCOMP 0x00001e6c +#define NV20_3D_TEX_RCOMP_NEVER 0x00000000 +#define NV20_3D_TEX_RCOMP_GREATER 0x00000001 +#define NV20_3D_TEX_RCOMP_EQUAL 0x00000002 +#define NV20_3D_TEX_RCOMP_GEQUAL 0x00000003 +#define NV20_3D_TEX_RCOMP_LESS 0x00000004 +#define NV20_3D_TEX_RCOMP_NOTEQUAL 0x00000005 +#define NV20_3D_TEX_RCOMP_LEQUAL 0x00000006 +#define NV20_3D_TEX_RCOMP_ALWAYS 0x00000007 + +#define NV20_3D_TEX_SHADER_OP 0x00001e70 +#define NV20_3D_TEX_SHADER_OP_TX0__MASK 0x0000001f +#define NV20_3D_TEX_SHADER_OP_TX0__SHIFT 0 +#define NV20_3D_TEX_SHADER_OP_TX0_NONE 0x00000000 +#define NV20_3D_TEX_SHADER_OP_TX0_TEXTURE_2D 0x00000001 +#define NV20_3D_TEX_SHADER_OP_TX0_PASS_THROUGH 0x00000004 +#define NV20_3D_TEX_SHADER_OP_TX0_CULL_FRAGMENT 0x00000005 +#define NV20_3D_TEX_SHADER_OP_TX0_OFFSET_TEXTURE_2D 0x00000006 +#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT_TEXTURE_2D 0x00000009 +#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT_DEPTH_REPLACE 0x0000000a +#define NV20_3D_TEX_SHADER_OP_TX0_DEPENDANT_AR_TEXTURE_2D 0x0000000f +#define NV20_3D_TEX_SHADER_OP_TX0_DEPENDANT_GB_TEXTURE_2D 0x00000010 +#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT 0x00000011 +#define NV20_3D_TEX_SHADER_OP_TX1__MASK 0x000003e0 +#define NV20_3D_TEX_SHADER_OP_TX1__SHIFT 5 +#define NV20_3D_TEX_SHADER_OP_TX1_NONE 0x00000000 +#define NV20_3D_TEX_SHADER_OP_TX1_TEXTURE_2D 0x00000020 +#define NV20_3D_TEX_SHADER_OP_TX1_PASS_THROUGH 0x00000080 +#define NV20_3D_TEX_SHADER_OP_TX1_CULL_FRAGMENT 0x000000a0 +#define NV20_3D_TEX_SHADER_OP_TX1_OFFSET_TEXTURE_2D 0x000000c0 +#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT_TEXTURE_2D 0x00000120 +#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT_DEPTH_REPLACE 0x00000140 +#define NV20_3D_TEX_SHADER_OP_TX1_DEPENDANT_AR_TEXTURE_2D 0x000001e0 +#define NV20_3D_TEX_SHADER_OP_TX1_DEPENDANT_GB_TEXTURE_2D 0x00000200 +#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT 0x00000220 +#define NV20_3D_TEX_SHADER_OP_TX2__MASK 0x00007c00 +#define NV20_3D_TEX_SHADER_OP_TX2__SHIFT 10 +#define NV20_3D_TEX_SHADER_OP_TX2_NONE 0x00000000 +#define NV20_3D_TEX_SHADER_OP_TX2_TEXTURE_2D 0x00000400 +#define NV20_3D_TEX_SHADER_OP_TX2_PASS_THROUGH 0x00001000 +#define NV20_3D_TEX_SHADER_OP_TX2_CULL_FRAGMENT 0x00001400 +#define NV20_3D_TEX_SHADER_OP_TX2_OFFSET_TEXTURE_2D 0x00001800 +#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT_TEXTURE_2D 0x00002400 +#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT_DEPTH_REPLACE 0x00002800 +#define NV20_3D_TEX_SHADER_OP_TX2_DEPENDANT_AR_TEXTURE_2D 0x00003c00 +#define NV20_3D_TEX_SHADER_OP_TX2_DEPENDANT_GB_TEXTURE_2D 0x00004000 +#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT 0x00004400 +#define NV20_3D_TEX_SHADER_OP_TX3__MASK 0x000f8000 +#define NV20_3D_TEX_SHADER_OP_TX3__SHIFT 15 +#define NV20_3D_TEX_SHADER_OP_TX3_NONE 0x00000000 +#define NV20_3D_TEX_SHADER_OP_TX3_TEXTURE_2D 0x00008000 +#define NV20_3D_TEX_SHADER_OP_TX3_PASS_THROUGH 0x00020000 +#define NV20_3D_TEX_SHADER_OP_TX3_CULL_FRAGMENT 0x00028000 +#define NV20_3D_TEX_SHADER_OP_TX3_OFFSET_TEXTURE_2D 0x00030000 +#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT_TEXTURE_2D 0x00048000 +#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT_DEPTH_REPLACE 0x00050000 +#define NV20_3D_TEX_SHADER_OP_TX3_DEPENDANT_AR_TEXTURE_2D 0x00078000 +#define NV20_3D_TEX_SHADER_OP_TX3_DEPENDANT_GB_TEXTURE_2D 0x00080000 +#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT 0x00088000 + +#define NV20_3D_TEX_SHADER_DOTMAPPING 0x00001e74 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX0__MASK 0x0000000f +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX0__SHIFT 0 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX1__MASK 0x000000f0 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX1__SHIFT 4 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX2__MASK 0x00000f00 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX2__SHIFT 8 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX3__MASK 0x0000f000 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX3__SHIFT 12 + +#define NV20_3D_TEX_SHADER_PREVIOUS 0x00001e78 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX0__MASK 0x00000f00 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX0__SHIFT 8 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX1__MASK 0x0000f000 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX1__SHIFT 12 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX2__MASK 0x00030000 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX2__SHIFT 16 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX3__MASK 0x00300000 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX3__SHIFT 20 + +#define NV20_3D_TEX(i0) (0x00000000 + 0x40*(i0)) +#define NV20_3D_TEX__ESIZE 0x00000040 +#define NV20_3D_TEX__LEN 0x00000004 + +#define NV20_3D_TEX_OFFSET(i0) (0x00001b00 + 0x40*(i0)) + +#define NV20_3D_TEX_FORMAT(i0) (0x00001b04 + 0x40*(i0)) +#define NV20_3D_TEX_FORMAT_DMA0 0x00000001 +#define NV20_3D_TEX_FORMAT_DMA1 0x00000002 +#define NV20_3D_TEX_FORMAT_CUBIC 0x00000004 +#define NV20_3D_TEX_FORMAT_NO_BORDER 0x00000008 +#define NV20_3D_TEX_FORMAT_DIMS__MASK 0x000000f0 +#define NV20_3D_TEX_FORMAT_DIMS__SHIFT 4 +#define NV20_3D_TEX_FORMAT_DIMS_1D 0x00000010 +#define NV20_3D_TEX_FORMAT_DIMS_2D 0x00000020 +#define NV20_3D_TEX_FORMAT_DIMS_3D 0x00000030 +#define NV20_3D_TEX_FORMAT_FORMAT__MASK 0x0000ff00 +#define NV20_3D_TEX_FORMAT_FORMAT__SHIFT 8 +#define NV20_3D_TEX_FORMAT_FORMAT_L8 0x00000000 +#define NV20_3D_TEX_FORMAT_FORMAT_I8 0x00000100 +#define NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5 0x00000200 +#define NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4 0x00000400 +#define NV20_3D_TEX_FORMAT_FORMAT_R5G6B5 0x00000500 +#define NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8 0x00000600 +#define NV20_3D_TEX_FORMAT_FORMAT_X8R8G8B8 0x00000700 +#define NV20_3D_TEX_FORMAT_FORMAT_INDEX8 0x00000b00 +#define NV20_3D_TEX_FORMAT_FORMAT_DXT1 0x00000c00 +#define NV20_3D_TEX_FORMAT_FORMAT_DXT3 0x00000e00 +#define NV20_3D_TEX_FORMAT_FORMAT_DXT5 0x00000f00 +#define NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00001000 +#define NV20_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT 0x00001100 +#define NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00001200 +#define NV20_3D_TEX_FORMAT_FORMAT_L8_RECT 0x00001300 +#define NV20_3D_TEX_FORMAT_FORMAT_DSDT8_RECT 0x00001700 +#define NV20_3D_TEX_FORMAT_FORMAT_A8L8 0x00001a00 +#define NV20_3D_TEX_FORMAT_FORMAT_I8_RECT 0x00001b00 +#define NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4_RECT 0x00001d00 +#define NV20_3D_TEX_FORMAT_FORMAT_R8G8B8_RECT 0x00001e00 +#define NV20_3D_TEX_FORMAT_FORMAT_A8L8_RECT 0x00002000 +#define NV20_3D_TEX_FORMAT_FORMAT_Z24 0x00002a00 +#define NV20_3D_TEX_FORMAT_FORMAT_Z24_RECT 0x00002b00 +#define NV20_3D_TEX_FORMAT_FORMAT_Z16 0x00002c00 +#define NV20_3D_TEX_FORMAT_FORMAT_Z16_RECT 0x00002d00 +#define NV20_3D_TEX_FORMAT_FORMAT_DSDT8 0x00002800 +#define NV20_3D_TEX_FORMAT_FORMAT_HILO16 0x00003300 +#define NV20_3D_TEX_FORMAT_FORMAT_HILO16_RECT 0x00003600 +#define NV20_3D_TEX_FORMAT_FORMAT_HILO8 0x00004400 +#define NV20_3D_TEX_FORMAT_FORMAT_SIGNED_HILO8 0x00004500 +#define NV20_3D_TEX_FORMAT_FORMAT_HILO8_RECT 0x00004600 +#define NV20_3D_TEX_FORMAT_FORMAT_SIGNED_HILO8_RECT 0x00004700 +#define NV20_3D_TEX_FORMAT_MIPMAP 0x00080000 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_U__MASK 0x00f00000 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_U__SHIFT 20 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_V__MASK 0x0f000000 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_V__SHIFT 24 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_W__MASK 0xf0000000 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_W__SHIFT 28 + +#define NV20_3D_TEX_WRAP(i0) (0x00001b08 + 0x40*(i0)) +#define NV20_3D_TEX_WRAP_S__MASK 0x000000ff +#define NV20_3D_TEX_WRAP_S__SHIFT 0 +#define NV20_3D_TEX_WRAP_S_REPEAT 0x00000001 +#define NV20_3D_TEX_WRAP_S_MIRRORED_REPEAT 0x00000002 +#define NV20_3D_TEX_WRAP_S_CLAMP_TO_EDGE 0x00000003 +#define NV20_3D_TEX_WRAP_S_CLAMP_TO_BORDER 0x00000004 +#define NV20_3D_TEX_WRAP_S_CLAMP 0x00000005 +#define NV20_3D_TEX_WRAP_T__MASK 0x00000f00 +#define NV20_3D_TEX_WRAP_T__SHIFT 8 +#define NV20_3D_TEX_WRAP_T_REPEAT 0x00000100 +#define NV20_3D_TEX_WRAP_T_MIRRORED_REPEAT 0x00000200 +#define NV20_3D_TEX_WRAP_T_CLAMP_TO_EDGE 0x00000300 +#define NV20_3D_TEX_WRAP_T_CLAMP_TO_BORDER 0x00000400 +#define NV20_3D_TEX_WRAP_T_CLAMP 0x00000500 +#define NV20_3D_TEX_WRAP_R__MASK 0x000f0000 +#define NV20_3D_TEX_WRAP_R__SHIFT 16 +#define NV20_3D_TEX_WRAP_R_REPEAT 0x00010000 +#define NV20_3D_TEX_WRAP_R_MIRRORED_REPEAT 0x00020000 +#define NV20_3D_TEX_WRAP_R_CLAMP_TO_EDGE 0x00030000 +#define NV20_3D_TEX_WRAP_R_CLAMP_TO_BORDER 0x00040000 +#define NV20_3D_TEX_WRAP_R_CLAMP 0x00050000 + +#define NV20_3D_TEX_ENABLE(i0) (0x00001b0c + 0x40*(i0)) +#define NV20_3D_TEX_ENABLE_ANISO__MASK 0x00000030 +#define NV20_3D_TEX_ENABLE_ANISO__SHIFT 4 +#define NV20_3D_TEX_ENABLE_ANISO_NONE 0x00000000 +#define NV20_3D_TEX_ENABLE_ANISO_2X 0x00000010 +#define NV20_3D_TEX_ENABLE_ANISO_4X 0x00000020 +#define NV20_3D_TEX_ENABLE_ANISO_8X 0x00000030 +#define NV20_3D_TEX_ENABLE_MIPMAP_MAX_LOD__MASK 0x0003c000 +#define NV20_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT 14 +#define NV20_3D_TEX_ENABLE_MIPMAP_MIN_LOD__MASK 0x3c000000 +#define NV20_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT 26 +#define NV20_3D_TEX_ENABLE_ENABLE 0x40000000 + +#define NV20_3D_TEX_NPOT_PITCH(i0) (0x00001b10 + 0x40*(i0)) +#define NV20_3D_TEX_NPOT_PITCH_PITCH__MASK 0xffff0000 +#define NV20_3D_TEX_NPOT_PITCH_PITCH__SHIFT 16 + +#define NV20_3D_TEX_FILTER(i0) (0x00001b14 + 0x40*(i0)) +#define NV20_3D_TEX_FILTER_LOD_BIAS__MASK 0x00000f00 +#define NV20_3D_TEX_FILTER_LOD_BIAS__SHIFT 8 +#define NV20_3D_TEX_FILTER_MINIFY__MASK 0x000f0000 +#define NV20_3D_TEX_FILTER_MINIFY__SHIFT 16 +#define NV20_3D_TEX_FILTER_MINIFY_NEAREST 0x00010000 +#define NV20_3D_TEX_FILTER_MINIFY_LINEAR 0x00020000 +#define NV20_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x00030000 +#define NV20_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x00040000 +#define NV20_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x00050000 +#define NV20_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x00060000 +#define NV20_3D_TEX_FILTER_MAGNIFY__MASK 0x0f000000 +#define NV20_3D_TEX_FILTER_MAGNIFY__SHIFT 24 +#define NV20_3D_TEX_FILTER_MAGNIFY_NEAREST 0x01000000 +#define NV20_3D_TEX_FILTER_MAGNIFY_LINEAR 0x02000000 + +#define NV20_3D_TEX_NPOT_SIZE(i0) (0x00001b1c + 0x40*(i0)) +#define NV20_3D_TEX_NPOT_SIZE_H__MASK 0x0000ffff +#define NV20_3D_TEX_NPOT_SIZE_H__SHIFT 0 +#define NV20_3D_TEX_NPOT_SIZE_W__MASK 0xffff0000 +#define NV20_3D_TEX_NPOT_SIZE_W__SHIFT 16 + +#define NV20_3D_TEX_PALETTE_OFFSET(i0) (0x00001b20 + 0x40*(i0)) + +#define NV20_3D_TEX_BORDER_COLOR(i0) (0x00001b24 + 0x40*(i0)) +#define NV20_3D_TEX_BORDER_COLOR_B__MASK 0x000000ff +#define NV20_3D_TEX_BORDER_COLOR_B__SHIFT 0 +#define NV20_3D_TEX_BORDER_COLOR_G__MASK 0x0000ff00 +#define NV20_3D_TEX_BORDER_COLOR_G__SHIFT 8 +#define NV20_3D_TEX_BORDER_COLOR_R__MASK 0x00ff0000 +#define NV20_3D_TEX_BORDER_COLOR_R__SHIFT 16 +#define NV20_3D_TEX_BORDER_COLOR_A__MASK 0xff000000 +#define NV20_3D_TEX_BORDER_COLOR_A__SHIFT 24 + + + +#define NV20_3D_RC_IN_ALPHA(i0) (0x00000260 + 0x4*(i0)) +#define NV20_3D_RC_IN_ALPHA_D_INPUT__MASK 0x0000000f +#define NV20_3D_RC_IN_ALPHA_D_INPUT__SHIFT 0 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_FOG 0x00000003 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a +#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b +#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c +#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d +#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV20_3D_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f +#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__SHIFT 4 +#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000 +#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING__MASK 0x000000e0 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING__SHIFT 5 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV20_3D_RC_IN_ALPHA_C_INPUT__MASK 0x00000f00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT__SHIFT 8 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_FOG 0x00000300 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__SHIFT 12 +#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000 +#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING__MASK 0x0000e000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING__SHIFT 13 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT__MASK 0x000f0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT__SHIFT 16 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_FOG 0x00030000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000 +#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__SHIFT 20 +#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000 +#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING__MASK 0x00e00000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING__SHIFT 21 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT__MASK 0x0f000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT__SHIFT 24 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_FOG 0x03000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000 +#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__SHIFT 28 +#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000 +#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING__MASK 0xe0000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING__SHIFT 29 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV20_3D_RC_IN_RGB(i0) (0x00000ac0 + 0x4*(i0)) +#define NV20_3D_RC_IN_RGB_D_INPUT__MASK 0x0000000f +#define NV20_3D_RC_IN_RGB_D_INPUT__SHIFT 0 +#define NV20_3D_RC_IN_RGB_D_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV20_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV20_3D_RC_IN_RGB_D_INPUT_FOG 0x00000003 +#define NV20_3D_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV20_3D_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008 +#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009 +#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a +#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b +#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c +#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d +#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV20_3D_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f +#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE__SHIFT 4 +#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV20_3D_RC_IN_RGB_D_MAPPING__MASK 0x000000e0 +#define NV20_3D_RC_IN_RGB_D_MAPPING__SHIFT 5 +#define NV20_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV20_3D_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV20_3D_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV20_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV20_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV20_3D_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV20_3D_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV20_3D_RC_IN_RGB_C_INPUT__MASK 0x00000f00 +#define NV20_3D_RC_IN_RGB_C_INPUT__SHIFT 8 +#define NV20_3D_RC_IN_RGB_C_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_IN_RGB_C_INPUT_FOG 0x00000300 +#define NV20_3D_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE__SHIFT 12 +#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV20_3D_RC_IN_RGB_C_MAPPING__MASK 0x0000e000 +#define NV20_3D_RC_IN_RGB_C_MAPPING__SHIFT 13 +#define NV20_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV20_3D_RC_IN_RGB_B_INPUT__MASK 0x000f0000 +#define NV20_3D_RC_IN_RGB_B_INPUT__SHIFT 16 +#define NV20_3D_RC_IN_RGB_B_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV20_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV20_3D_RC_IN_RGB_B_INPUT_FOG 0x00030000 +#define NV20_3D_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV20_3D_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000 +#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000 +#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000 +#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000 +#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000 +#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000 +#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV20_3D_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000 +#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE__SHIFT 20 +#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV20_3D_RC_IN_RGB_B_MAPPING__MASK 0x00e00000 +#define NV20_3D_RC_IN_RGB_B_MAPPING__SHIFT 21 +#define NV20_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV20_3D_RC_IN_RGB_A_INPUT__MASK 0x0f000000 +#define NV20_3D_RC_IN_RGB_A_INPUT__SHIFT 24 +#define NV20_3D_RC_IN_RGB_A_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_FOG 0x03000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000 +#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE__SHIFT 28 +#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING__MASK 0xe0000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING__SHIFT 29 +#define NV20_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV20_3D_RC_CONSTANT_COLOR0(i0) (0x00000a60 + 0x4*(i0)) +#define NV20_3D_RC_CONSTANT_COLOR0_B__MASK 0x000000ff +#define NV20_3D_RC_CONSTANT_COLOR0_B__SHIFT 0 +#define NV20_3D_RC_CONSTANT_COLOR0_G__MASK 0x0000ff00 +#define NV20_3D_RC_CONSTANT_COLOR0_G__SHIFT 8 +#define NV20_3D_RC_CONSTANT_COLOR0_R__MASK 0x00ff0000 +#define NV20_3D_RC_CONSTANT_COLOR0_R__SHIFT 16 +#define NV20_3D_RC_CONSTANT_COLOR0_A__MASK 0xff000000 +#define NV20_3D_RC_CONSTANT_COLOR0_A__SHIFT 24 + +#define NV20_3D_RC_CONSTANT_COLOR1(i0) (0x00000a80 + 0x4*(i0)) +#define NV20_3D_RC_CONSTANT_COLOR1_B__MASK 0x000000ff +#define NV20_3D_RC_CONSTANT_COLOR1_B__SHIFT 0 +#define NV20_3D_RC_CONSTANT_COLOR1_G__MASK 0x0000ff00 +#define NV20_3D_RC_CONSTANT_COLOR1_G__SHIFT 8 +#define NV20_3D_RC_CONSTANT_COLOR1_R__MASK 0x00ff0000 +#define NV20_3D_RC_CONSTANT_COLOR1_R__SHIFT 16 +#define NV20_3D_RC_CONSTANT_COLOR1_A__MASK 0xff000000 +#define NV20_3D_RC_CONSTANT_COLOR1_A__SHIFT 24 + +#define NV20_3D_RC_OUT_ALPHA(i0) (0x00000aa0 + 0x4*(i0)) +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT__MASK 0x0000000f +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT__SHIFT 0 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT__MASK 0x000000f0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT__SHIFT 4 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT__MASK 0x00000f00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT__SHIFT 8 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_OUT_ALPHA_CD_DOT_PRODUCT 0x00001000 +#define NV20_3D_RC_OUT_ALPHA_AB_DOT_PRODUCT 0x00002000 +#define NV20_3D_RC_OUT_ALPHA_MUX_SUM 0x00004000 +#define NV20_3D_RC_OUT_ALPHA_BIAS__MASK 0x00008000 +#define NV20_3D_RC_OUT_ALPHA_BIAS__SHIFT 15 +#define NV20_3D_RC_OUT_ALPHA_BIAS_NONE 0x00000000 +#define NV20_3D_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 +#define NV20_3D_RC_OUT_ALPHA_SCALE__MASK 0x00030000 +#define NV20_3D_RC_OUT_ALPHA_SCALE__SHIFT 16 +#define NV20_3D_RC_OUT_ALPHA_SCALE_NONE 0x00000000 +#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000 +#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000 +#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000 + +#define NV20_3D_RC_OUT_RGB(i0) (0x00001e40 + 0x4*(i0)) +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT__MASK 0x0000000f +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT__SHIFT 0 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT__MASK 0x000000f0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT__SHIFT 4 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT__MASK 0x00000f00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT__SHIFT 8 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_OUT_RGB_CD_DOT_PRODUCT 0x00001000 +#define NV20_3D_RC_OUT_RGB_AB_DOT_PRODUCT 0x00002000 +#define NV20_3D_RC_OUT_RGB_MUX_SUM 0x00004000 +#define NV20_3D_RC_OUT_RGB_BIAS__MASK 0x00008000 +#define NV20_3D_RC_OUT_RGB_BIAS__SHIFT 15 +#define NV20_3D_RC_OUT_RGB_BIAS_NONE 0x00000000 +#define NV20_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 +#define NV20_3D_RC_OUT_RGB_SCALE__MASK 0x00030000 +#define NV20_3D_RC_OUT_RGB_SCALE__SHIFT 16 +#define NV20_3D_RC_OUT_RGB_SCALE_NONE 0x00000000 +#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000 +#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000 +#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000 + +#define NV20_3D_RC_FINAL0 0x00000288 +#define NV20_3D_RC_FINAL0_D_INPUT__MASK 0x0000000f +#define NV20_3D_RC_FINAL0_D_INPUT__SHIFT 0 +#define NV20_3D_RC_FINAL0_D_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV20_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV20_3D_RC_FINAL0_D_INPUT_FOG 0x00000003 +#define NV20_3D_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV20_3D_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008 +#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009 +#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a +#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b +#define NV20_3D_RC_FINAL0_D_INPUT_SPARE0 0x0000000c +#define NV20_3D_RC_FINAL0_D_INPUT_SPARE1 0x0000000d +#define NV20_3D_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV20_3D_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f +#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE__SHIFT 4 +#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV20_3D_RC_FINAL0_D_MAPPING__MASK 0x000000e0 +#define NV20_3D_RC_FINAL0_D_MAPPING__SHIFT 5 +#define NV20_3D_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV20_3D_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV20_3D_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV20_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV20_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV20_3D_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV20_3D_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV20_3D_RC_FINAL0_C_INPUT__MASK 0x00000f00 +#define NV20_3D_RC_FINAL0_C_INPUT__SHIFT 8 +#define NV20_3D_RC_FINAL0_C_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_FINAL0_C_INPUT_FOG 0x00000300 +#define NV20_3D_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_FINAL0_C_INPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_FINAL0_C_INPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE__SHIFT 12 +#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV20_3D_RC_FINAL0_C_MAPPING__MASK 0x0000e000 +#define NV20_3D_RC_FINAL0_C_MAPPING__SHIFT 13 +#define NV20_3D_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV20_3D_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV20_3D_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV20_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV20_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV20_3D_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV20_3D_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV20_3D_RC_FINAL0_B_INPUT__MASK 0x000f0000 +#define NV20_3D_RC_FINAL0_B_INPUT__SHIFT 16 +#define NV20_3D_RC_FINAL0_B_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV20_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV20_3D_RC_FINAL0_B_INPUT_FOG 0x00030000 +#define NV20_3D_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV20_3D_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000 +#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000 +#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000 +#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000 +#define NV20_3D_RC_FINAL0_B_INPUT_SPARE0 0x000c0000 +#define NV20_3D_RC_FINAL0_B_INPUT_SPARE1 0x000d0000 +#define NV20_3D_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV20_3D_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000 +#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE__SHIFT 20 +#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV20_3D_RC_FINAL0_B_MAPPING__MASK 0x00e00000 +#define NV20_3D_RC_FINAL0_B_MAPPING__SHIFT 21 +#define NV20_3D_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV20_3D_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV20_3D_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV20_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV20_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV20_3D_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV20_3D_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV20_3D_RC_FINAL0_A_INPUT__MASK 0x0f000000 +#define NV20_3D_RC_FINAL0_A_INPUT__SHIFT 24 +#define NV20_3D_RC_FINAL0_A_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV20_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV20_3D_RC_FINAL0_A_INPUT_FOG 0x03000000 +#define NV20_3D_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV20_3D_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000 +#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000 +#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000 +#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000 +#define NV20_3D_RC_FINAL0_A_INPUT_SPARE0 0x0c000000 +#define NV20_3D_RC_FINAL0_A_INPUT_SPARE1 0x0d000000 +#define NV20_3D_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV20_3D_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000 +#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE__SHIFT 28 +#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV20_3D_RC_FINAL0_A_MAPPING__MASK 0xe0000000 +#define NV20_3D_RC_FINAL0_A_MAPPING__SHIFT 29 +#define NV20_3D_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV20_3D_RC_FINAL1 0x0000028c +#define NV20_3D_RC_FINAL1_COLOR_SUM_CLAMP 0x00000080 +#define NV20_3D_RC_FINAL1_G_INPUT__MASK 0x00000f00 +#define NV20_3D_RC_FINAL1_G_INPUT__SHIFT 8 +#define NV20_3D_RC_FINAL1_G_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_FINAL1_G_INPUT_FOG 0x00000300 +#define NV20_3D_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_FINAL1_G_INPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_FINAL1_G_INPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE__MASK 0x00001000 +#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE__SHIFT 12 +#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV20_3D_RC_FINAL1_G_MAPPING__MASK 0x0000e000 +#define NV20_3D_RC_FINAL1_G_MAPPING__SHIFT 13 +#define NV20_3D_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV20_3D_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV20_3D_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV20_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV20_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV20_3D_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV20_3D_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV20_3D_RC_FINAL1_F_INPUT__MASK 0x000f0000 +#define NV20_3D_RC_FINAL1_F_INPUT__SHIFT 16 +#define NV20_3D_RC_FINAL1_F_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV20_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV20_3D_RC_FINAL1_F_INPUT_FOG 0x00030000 +#define NV20_3D_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000 +#define NV20_3D_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000 +#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000 +#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000 +#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000 +#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000 +#define NV20_3D_RC_FINAL1_F_INPUT_SPARE0 0x000c0000 +#define NV20_3D_RC_FINAL1_F_INPUT_SPARE1 0x000d0000 +#define NV20_3D_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV20_3D_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000 +#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE__MASK 0x00100000 +#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE__SHIFT 20 +#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV20_3D_RC_FINAL1_F_MAPPING__MASK 0x00e00000 +#define NV20_3D_RC_FINAL1_F_MAPPING__SHIFT 21 +#define NV20_3D_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV20_3D_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV20_3D_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV20_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV20_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV20_3D_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV20_3D_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV20_3D_RC_FINAL1_E_INPUT__MASK 0x0f000000 +#define NV20_3D_RC_FINAL1_E_INPUT__SHIFT 24 +#define NV20_3D_RC_FINAL1_E_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV20_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV20_3D_RC_FINAL1_E_INPUT_FOG 0x03000000 +#define NV20_3D_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000 +#define NV20_3D_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000 +#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000 +#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000 +#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000 +#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000 +#define NV20_3D_RC_FINAL1_E_INPUT_SPARE0 0x0c000000 +#define NV20_3D_RC_FINAL1_E_INPUT_SPARE1 0x0d000000 +#define NV20_3D_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV20_3D_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000 +#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE__MASK 0x10000000 +#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE__SHIFT 28 +#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV20_3D_RC_FINAL1_E_MAPPING__MASK 0xe0000000 +#define NV20_3D_RC_FINAL1_E_MAPPING__SHIFT 29 +#define NV20_3D_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV20_3D_RC_COLOR0 0x00001e20 +#define NV20_3D_RC_COLOR0_B__MASK 0x000000ff +#define NV20_3D_RC_COLOR0_B__SHIFT 0 +#define NV20_3D_RC_COLOR0_G__MASK 0x0000ff00 +#define NV20_3D_RC_COLOR0_G__SHIFT 8 +#define NV20_3D_RC_COLOR0_R__MASK 0x00ff0000 +#define NV20_3D_RC_COLOR0_R__SHIFT 16 +#define NV20_3D_RC_COLOR0_A__MASK 0xff000000 +#define NV20_3D_RC_COLOR0_A__SHIFT 24 + +#define NV20_3D_RC_COLOR1 0x00001e24 +#define NV20_3D_RC_COLOR1_B__MASK 0x000000ff +#define NV20_3D_RC_COLOR1_B__SHIFT 0 +#define NV20_3D_RC_COLOR1_G__MASK 0x0000ff00 +#define NV20_3D_RC_COLOR1_G__SHIFT 8 +#define NV20_3D_RC_COLOR1_R__MASK 0x00ff0000 +#define NV20_3D_RC_COLOR1_R__SHIFT 16 +#define NV20_3D_RC_COLOR1_A__MASK 0xff000000 +#define NV20_3D_RC_COLOR1_A__SHIFT 24 + +#define NV20_3D_RC_ENABLE 0x00001e60 +#define NV20_3D_RC_ENABLE_NUM_COMBINERS__MASK 0x0000000f +#define NV20_3D_RC_ENABLE_NUM_COMBINERS__SHIFT 0 + + +#define NV20_3D_POINT_SIZE 0x0000043c + +#define NV20_3D_POINT_PARAMETER(i0) (0x00000a30 + 0x4*(i0)) +#define NV20_3D_POINT_PARAMETER__ESIZE 0x00000004 +#define NV20_3D_POINT_PARAMETER__LEN 0x00000008 + +#define NV20_3D_POLYGON_STIPPLE_ENABLE 0x0000147c + +#define NV20_3D_POLYGON_STIPPLE_PATTERN(i0) (0x00001480 + 0x4*(i0)) +#define NV20_3D_POLYGON_STIPPLE_PATTERN__ESIZE 0x00000004 +#define NV20_3D_POLYGON_STIPPLE_PATTERN__LEN 0x00000020 + +#define NV20_3D_COLOR_LOGIC_OP_ENABLE 0x000017bc + +#define NV20_3D_COLOR_LOGIC_OP_OP 0x000017c0 +#define NV20_3D_COLOR_LOGIC_OP_OP_CLEAR 0x00001500 +#define NV20_3D_COLOR_LOGIC_OP_OP_AND 0x00001501 +#define NV20_3D_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502 +#define NV20_3D_COLOR_LOGIC_OP_OP_COPY 0x00001503 +#define NV20_3D_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504 +#define NV20_3D_COLOR_LOGIC_OP_OP_NOOP 0x00001505 +#define NV20_3D_COLOR_LOGIC_OP_OP_XOR 0x00001506 +#define NV20_3D_COLOR_LOGIC_OP_OP_OR 0x00001507 +#define NV20_3D_COLOR_LOGIC_OP_OP_NOR 0x00001508 +#define NV20_3D_COLOR_LOGIC_OP_OP_EQUIV 0x00001509 +#define NV20_3D_COLOR_LOGIC_OP_OP_INVERT 0x0000150a +#define NV20_3D_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b +#define NV20_3D_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c +#define NV20_3D_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d +#define NV20_3D_COLOR_LOGIC_OP_OP_NAND 0x0000150e +#define NV20_3D_COLOR_LOGIC_OP_OP_SET 0x0000150f + +#define NV20_3D_DEPTH_CLAMP 0x00001d78 + +#define NV20_3D_MULTISAMPLE_CONTROL 0x00001d7c + + +#define NV20_3D_CLEAR_DEPTH_VALUE 0x00001d8c + +#define NV20_3D_CLEAR_VALUE 0x00001d90 + +#define NV20_3D_CLEAR_BUFFERS 0x00001d94 +#define NV20_3D_CLEAR_BUFFERS_COLOR_A 0x00000080 +#define NV20_3D_CLEAR_BUFFERS_COLOR_B 0x00000040 +#define NV20_3D_CLEAR_BUFFERS_COLOR_G 0x00000020 +#define NV20_3D_CLEAR_BUFFERS_COLOR_R 0x00000010 +#define NV20_3D_CLEAR_BUFFERS_STENCIL 0x00000002 +#define NV20_3D_CLEAR_BUFFERS_DEPTH 0x00000001 + + +#define NV25_3D_DMA_HIERZ 0x000001b0 + +#define NV25_3D_HIERZ_PITCH 0x0000022c + +#define NV25_3D_HIERZ_OFFSET 0x00000230 + +#define NV20_3D_UNK09F8 0x000009f8 + +#define NV20_3D_UNK09FC 0x000009fc + +#define NV20_3D_UNK17CC 0x000017cc + +#define NV20_3D_UNK17E0 0x000017e0 + +#define NV20_3D_UNK17E4 0x000017e4 + +#define NV20_3D_UNK17E8 0x000017e8 + +#define NV20_3D_UNK17EC 0x000017ec + +#define NV20_3D_UNK17F0 0x000017f0 + +#define NV20_3D_UNK17F4 0x000017f4 + +#define NV20_3D_UNK1D80 0x00001d80 + +#define NV20_3D_UNK1D84 0x00001d84 + +#define NV20_3D_UNK1E68 0x00001e68 + +#define NV20_3D_UNK1E98 0x00001e98 + + +#define NV25_3D_UNK01AC 0x000001ac + +#define NV25_3D_UNK0A1C 0x00000a1c + +#define NV25_3D_UNK1D88 0x00001d88 + +#define NV25_3D_UNK1DA4 0x00001da4 + + +#endif /* NV20_3D_XML */ diff --git a/src/mesa/drivers/dri/nouveau/nv20_context.c b/src/mesa/drivers/dri/nouveau/nv20_context.c index c6111a2a9a..e0483b261e 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_context.c +++ b/src/mesa/drivers/dri/nouveau/nv20_context.c @@ -26,7 +26,10 @@ #include "nouveau_driver.h" #include "nouveau_context.h" -#include "nouveau_class.h" +#include "nouveau_fbo.h" +#include "nouveau_util.h" +#include "nv_object.xml.h" +#include "nv20_3d.xml.h" #include "nv04_driver.h" #include "nv10_driver.h" #include "nv20_driver.h" @@ -40,6 +43,57 @@ static const struct dri_extension nv20_extensions[] = { }; static void +nv20_clear(struct gl_context *ctx, GLbitfield buffers) +{ + struct nouveau_channel *chan = context_chan(ctx); + struct nouveau_grobj *kelvin = context_eng3d(ctx); + struct gl_framebuffer *fb = ctx->DrawBuffer; + uint32_t clear = 0; + + nouveau_validate_framebuffer(ctx); + + if (buffers & BUFFER_BITS_COLOR) { + struct nouveau_surface *s = &to_nouveau_renderbuffer( + fb->_ColorDrawBuffers[0])->surface; + + if (ctx->Color.ColorMask[0][RCOMP]) + clear |= NV20_3D_CLEAR_BUFFERS_COLOR_R; + if (ctx->Color.ColorMask[0][GCOMP]) + clear |= NV20_3D_CLEAR_BUFFERS_COLOR_G; + if (ctx->Color.ColorMask[0][BCOMP]) + clear |= NV20_3D_CLEAR_BUFFERS_COLOR_B; + if (ctx->Color.ColorMask[0][ACOMP]) + clear |= NV20_3D_CLEAR_BUFFERS_COLOR_A; + + BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_VALUE, 1); + OUT_RING(chan, pack_rgba_f(s->format, ctx->Color.ClearColor)); + + buffers &= ~BUFFER_BITS_COLOR; + } + + if (buffers & (BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL)) { + struct nouveau_surface *s = &to_nouveau_renderbuffer( + fb->_DepthBuffer->Wrapped)->surface; + + if (buffers & BUFFER_BIT_DEPTH && ctx->Depth.Mask) + clear |= NV20_3D_CLEAR_BUFFERS_DEPTH; + if (buffers & BUFFER_BIT_STENCIL && ctx->Stencil.WriteMask[0]) + clear |= NV20_3D_CLEAR_BUFFERS_STENCIL; + + BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_DEPTH_VALUE, 1); + OUT_RING(chan, pack_zs_f(s->format, ctx->Depth.Clear, + ctx->Stencil.Clear)); + + buffers &= ~(BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL); + } + + BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_BUFFERS, 1); + OUT_RING(chan, clear); + + nouveau_clear(ctx, buffers); +} + +static void nv20_hwctx_init(struct gl_context *ctx) { struct nouveau_channel *chan = context_chan(ctx); @@ -47,38 +101,38 @@ nv20_hwctx_init(struct gl_context *ctx) struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; int i; - BEGIN_RING(chan, kelvin, NV20TCL_DMA_NOTIFY, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_NOTIFY, 1); OUT_RING (chan, hw->ntfy->handle); - BEGIN_RING(chan, kelvin, NV20TCL_DMA_TEXTURE0, 2); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_TEXTURE0, 2); OUT_RING (chan, chan->vram->handle); OUT_RING (chan, chan->gart->handle); - BEGIN_RING(chan, kelvin, NV20TCL_DMA_COLOR, 2); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_COLOR, 2); OUT_RING (chan, chan->vram->handle); OUT_RING (chan, chan->vram->handle); - BEGIN_RING(chan, kelvin, NV20TCL_DMA_VTXBUF0, 2); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_VTXBUF0, 2); OUT_RING(chan, chan->vram->handle); OUT_RING(chan, chan->gart->handle); - BEGIN_RING(chan, kelvin, NV20TCL_DMA_QUERY, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_QUERY, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RT_HORIZ, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RT_HORIZ, 2); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_HORIZ(0), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_HORIZ(0), 1); OUT_RING (chan, 0xfff << 16 | 0x0); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_VERT(0), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_VERT(0), 1); OUT_RING (chan, 0xfff << 16 | 0x0); - for (i = 1; i < NV20TCL_VIEWPORT_CLIP_HORIZ__SIZE; i++) { - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_HORIZ(i), 1); + for (i = 1; i < NV20_3D_VIEWPORT_CLIP_HORIZ__LEN; i++) { + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_HORIZ(i), 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_VERT(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_VERT(i), 1); OUT_RING (chan, 0); } - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_MODE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_MODE, 1); OUT_RING (chan, 0); BEGIN_RING(chan, kelvin, 0x17e0, 3); @@ -87,13 +141,13 @@ nv20_hwctx_init(struct gl_context *ctx) OUT_RINGf (chan, 1.0); if (context_chipset(ctx) >= 0x25) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_RCOMP, 1); - OUT_RING (chan, NV20TCL_TX_RCOMP_LEQUAL | 0xdb0); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_RCOMP, 1); + OUT_RING (chan, NV20_3D_TEX_RCOMP_LEQUAL | 0xdb0); } else { BEGIN_RING(chan, kelvin, 0x1e68, 1); OUT_RING (chan, 0x4b800000); /* 16777216.000000 */ - BEGIN_RING(chan, kelvin, NV20TCL_TX_RCOMP, 1); - OUT_RING (chan, NV20TCL_TX_RCOMP_LEQUAL); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_RCOMP, 1); + OUT_RING (chan, NV20_3D_TEX_RCOMP_LEQUAL); } BEGIN_RING(chan, kelvin, 0x290, 1); @@ -113,19 +167,19 @@ nv20_hwctx_init(struct gl_context *ctx) BEGIN_RING(chan, kelvin, 0x1d88, 1); OUT_RING (chan, 3); - BEGIN_RING(chan, kelvin, NV25TCL_DMA_IN_MEMORY9, 1); + BEGIN_RING(chan, kelvin, NV25_3D_DMA_HIERZ, 1); OUT_RING (chan, chan->vram->handle); - BEGIN_RING(chan, kelvin, NV25TCL_DMA_IN_MEMORY8, 1); + BEGIN_RING(chan, kelvin, NV25_3D_UNK01AC, 1); OUT_RING (chan, chan->vram->handle); } - BEGIN_RING(chan, kelvin, NV20TCL_DMA_FENCE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_FENCE, 1); OUT_RING (chan, 0); BEGIN_RING(chan, kelvin, 0x1e98, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_NOTIFY, 1); + BEGIN_RING(chan, kelvin, NV01_GRAPH_NOTIFY, 1); OUT_RING (chan, 0); BEGIN_RING(chan, kelvin, 0x120, 3); @@ -134,197 +188,193 @@ nv20_hwctx_init(struct gl_context *ctx) OUT_RING (chan, 2); if (context_chipset(ctx) >= 0x25) { - BEGIN_RING(chan, kelvin, 0x022c, 2); - OUT_RING (chan, 0x280); - OUT_RING (chan, 0x07d28000); - BEGIN_RING(chan, kelvin, 0x1da4, 1); OUT_RING (chan, 0); } - BEGIN_RING(chan, kelvin, NV20TCL_RT_HORIZ, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RT_HORIZ, 2); OUT_RING (chan, 0 << 16 | 0); OUT_RING (chan, 0 << 16 | 0); - BEGIN_RING(chan, kelvin, NV20TCL_ALPHA_FUNC_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_ALPHA_FUNC_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_ALPHA_FUNC_FUNC, 2); - OUT_RING (chan, NV20TCL_ALPHA_FUNC_FUNC_ALWAYS); + BEGIN_RING(chan, kelvin, NV20_3D_ALPHA_FUNC_FUNC, 2); + OUT_RING (chan, NV20_3D_ALPHA_FUNC_FUNC_ALWAYS); OUT_RING (chan, 0); - for (i = 0; i < NV20TCL_TX_ENABLE__SIZE; i++) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_ENABLE(i), 1); + for (i = 0; i < NV20_3D_TEX__LEN; i++) { + BEGIN_RING(chan, kelvin, NV20_3D_TEX_ENABLE(i), 1); OUT_RING (chan, 0); } - BEGIN_RING(chan, kelvin, NV20TCL_TX_SHADER_OP, 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_SHADER_OP, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_TX_SHADER_CULL_MODE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_SHADER_CULL_MODE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_ALPHA(0), 4); + BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_ALPHA(0), 4); OUT_RING (chan, 0x30d410d0); OUT_RING (chan, 0); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_RGB(0), 4); + BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_RGB(0), 4); OUT_RING (chan, 0x00000c00); OUT_RING (chan, 0); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_ENABLE, 1); OUT_RING (chan, 0x00011101); - BEGIN_RING(chan, kelvin, NV20TCL_RC_FINAL0, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RC_FINAL0, 2); OUT_RING (chan, 0x130e0300); OUT_RING (chan, 0x0c091c80); - BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_ALPHA(0), 4); + BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_ALPHA(0), 4); OUT_RING (chan, 0x00000c00); OUT_RING (chan, 0); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_RGB(0), 4); + BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_RGB(0), 4); OUT_RING (chan, 0x20c400c0); OUT_RING (chan, 0); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_COLOR0, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RC_COLOR0, 2); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_CONSTANT_COLOR0(0), 4); + BEGIN_RING(chan, kelvin, NV20_3D_RC_CONSTANT_COLOR0(0), 4); OUT_RING (chan, 0x035125a0); OUT_RING (chan, 0); OUT_RING (chan, 0x40002000); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_MULTISAMPLE_CONTROL, 1); + BEGIN_RING(chan, kelvin, NV20_3D_MULTISAMPLE_CONTROL, 1); OUT_RING (chan, 0xffff0000); - BEGIN_RING(chan, kelvin, NV20TCL_BLEND_FUNC_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_BLEND_FUNC_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_DITHER_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DITHER_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_STENCIL_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_STENCIL_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_BLEND_FUNC_SRC, 4); - OUT_RING (chan, NV20TCL_BLEND_FUNC_SRC_ONE); - OUT_RING (chan, NV20TCL_BLEND_FUNC_DST_ZERO); + BEGIN_RING(chan, kelvin, NV20_3D_BLEND_FUNC_SRC, 4); + OUT_RING (chan, NV20_3D_BLEND_FUNC_SRC_ONE); + OUT_RING (chan, NV20_3D_BLEND_FUNC_DST_ZERO); OUT_RING (chan, 0); - OUT_RING (chan, NV20TCL_BLEND_EQUATION_FUNC_ADD); - BEGIN_RING(chan, kelvin, NV20TCL_STENCIL_MASK, 7); + OUT_RING (chan, NV20_3D_BLEND_EQUATION_FUNC_ADD); + BEGIN_RING(chan, kelvin, NV20_3D_STENCIL_MASK, 7); OUT_RING (chan, 0xff); - OUT_RING (chan, NV20TCL_STENCIL_FUNC_FUNC_ALWAYS); + OUT_RING (chan, NV20_3D_STENCIL_FUNC_FUNC_ALWAYS); OUT_RING (chan, 0); OUT_RING (chan, 0xff); - OUT_RING (chan, NV20TCL_STENCIL_OP_FAIL_KEEP); - OUT_RING (chan, NV20TCL_STENCIL_OP_ZFAIL_KEEP); - OUT_RING (chan, NV20TCL_STENCIL_OP_ZPASS_KEEP); + OUT_RING (chan, NV20_3D_STENCIL_OP_FAIL_KEEP); + OUT_RING (chan, NV20_3D_STENCIL_OP_ZFAIL_KEEP); + OUT_RING (chan, NV20_3D_STENCIL_OP_ZPASS_KEEP); - BEGIN_RING(chan, kelvin, NV20TCL_COLOR_LOGIC_OP_ENABLE, 2); + BEGIN_RING(chan, kelvin, NV20_3D_COLOR_LOGIC_OP_ENABLE, 2); OUT_RING (chan, 0); - OUT_RING (chan, NV20TCL_COLOR_LOGIC_OP_OP_COPY); + OUT_RING (chan, NV20_3D_COLOR_LOGIC_OP_OP_COPY); BEGIN_RING(chan, kelvin, 0x17cc, 1); OUT_RING (chan, 0); if (context_chipset(ctx) >= 0x25) { BEGIN_RING(chan, kelvin, 0x1d84, 1); OUT_RING (chan, 1); } - BEGIN_RING(chan, kelvin, NV20TCL_LIGHTING_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHTING_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL, 1); - OUT_RING (chan, NV20TCL_LIGHT_MODEL_VIEWER_NONLOCAL); - BEGIN_RING(chan, kelvin, NV20TCL_SEPARATE_SPECULAR_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL, 1); + OUT_RING (chan, NV20_3D_LIGHT_MODEL_VIEWER_NONLOCAL); + BEGIN_RING(chan, kelvin, NV20_3D_SEPARATE_SPECULAR_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL_TWO_SIDE_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL_TWO_SIDE_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_ENABLED_LIGHTS, 1); + BEGIN_RING(chan, kelvin, NV20_3D_ENABLED_LIGHTS, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_NORMALIZE_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_NORMALIZE_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_STIPPLE_PATTERN(0), - NV20TCL_POLYGON_STIPPLE_PATTERN__SIZE); - for (i = 0; i < NV20TCL_POLYGON_STIPPLE_PATTERN__SIZE; i++) { + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_STIPPLE_PATTERN(0), + NV20_3D_POLYGON_STIPPLE_PATTERN__LEN); + for (i = 0; i < NV20_3D_POLYGON_STIPPLE_PATTERN__LEN; i++) { OUT_RING(chan, 0xffffffff); } - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_OFFSET_POINT_ENABLE, 3); + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_OFFSET_POINT_ENABLE, 3); OUT_RING (chan, 0); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_FUNC, 1); - OUT_RING (chan, NV20TCL_DEPTH_FUNC_LESS); - BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_WRITE_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_FUNC, 1); + OUT_RING (chan, NV20_3D_DEPTH_FUNC_LESS); + BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_WRITE_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_TEST_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_TEST_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_OFFSET_FACTOR, 2); + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_OFFSET_FACTOR, 2); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 0.0); - BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_UNK17D8, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_CLAMP, 1); OUT_RING (chan, 1); if (context_chipset(ctx) < 0x25) { BEGIN_RING(chan, kelvin, 0x1d84, 1); OUT_RING (chan, 3); } - BEGIN_RING(chan, kelvin, NV20TCL_POINT_SIZE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_POINT_SIZE, 1); if (context_chipset(ctx) >= 0x25) OUT_RINGf (chan, 1.0); else OUT_RING (chan, 8); if (context_chipset(ctx) >= 0x25) { - BEGIN_RING(chan, kelvin, NV20TCL_POINT_PARAMETERS_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_POINT_PARAMETERS_ENABLE, 1); OUT_RING (chan, 0); BEGIN_RING(chan, kelvin, 0x0a1c, 1); OUT_RING (chan, 0x800); } else { - BEGIN_RING(chan, kelvin, NV20TCL_POINT_PARAMETERS_ENABLE, 2); + BEGIN_RING(chan, kelvin, NV20_3D_POINT_PARAMETERS_ENABLE, 2); OUT_RING (chan, 0); OUT_RING (chan, 0); } - BEGIN_RING(chan, kelvin, NV20TCL_LINE_WIDTH, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LINE_WIDTH, 1); OUT_RING (chan, 8); - BEGIN_RING(chan, kelvin, NV20TCL_LINE_SMOOTH_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LINE_SMOOTH_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_MODE_FRONT, 2); - OUT_RING (chan, NV20TCL_POLYGON_MODE_FRONT_FILL); - OUT_RING (chan, NV20TCL_POLYGON_MODE_BACK_FILL); - BEGIN_RING(chan, kelvin, NV20TCL_CULL_FACE, 2); - OUT_RING (chan, NV20TCL_CULL_FACE_BACK); - OUT_RING (chan, NV20TCL_FRONT_FACE_CCW); - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_SMOOTH_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_MODE_FRONT, 2); + OUT_RING (chan, NV20_3D_POLYGON_MODE_FRONT_FILL); + OUT_RING (chan, NV20_3D_POLYGON_MODE_BACK_FILL); + BEGIN_RING(chan, kelvin, NV20_3D_CULL_FACE, 2); + OUT_RING (chan, NV20_3D_CULL_FACE_BACK); + OUT_RING (chan, NV20_3D_FRONT_FACE_CCW); + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_SMOOTH_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_CULL_FACE_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_CULL_FACE_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_SHADE_MODEL, 1); - OUT_RING (chan, NV20TCL_SHADE_MODEL_SMOOTH); - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_STIPPLE_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_SHADE_MODEL, 1); + OUT_RING (chan, NV20_3D_SHADE_MODEL_SMOOTH); + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_STIPPLE_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_TX_GEN_MODE_S(0), - 4 * NV20TCL_TX_GEN_MODE_S__SIZE); - for (i=0; i < 4 * NV20TCL_TX_GEN_MODE_S__SIZE; i++) + BEGIN_RING(chan, kelvin, NV20_3D_TEX_GEN_MODE(0,0), + 4 * NV20_3D_TEX_GEN_MODE__ESIZE); + for (i=0; i < 4 * NV20_3D_TEX_GEN_MODE__LEN; i++) OUT_RING(chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_FOG_EQUATION_CONSTANT, 3); + BEGIN_RING(chan, kelvin, NV20_3D_FOG_COEFF(0), 3); OUT_RINGf (chan, 1.5); OUT_RINGf (chan, -0.090168); OUT_RINGf (chan, 0.0); - BEGIN_RING(chan, kelvin, NV20TCL_FOG_MODE, 2); - OUT_RING (chan, NV20TCL_FOG_MODE_EXP_SIGNED); - OUT_RING (chan, NV20TCL_FOG_COORD_FOG); - BEGIN_RING(chan, kelvin, NV20TCL_FOG_ENABLE, 2); + BEGIN_RING(chan, kelvin, NV20_3D_FOG_MODE, 2); + OUT_RING (chan, NV20_3D_FOG_MODE_EXP_SIGNED); + OUT_RING (chan, NV20_3D_FOG_COORD_FOG); + BEGIN_RING(chan, kelvin, NV20_3D_FOG_ENABLE, 2); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_ENGINE, 1); - OUT_RING (chan, NV20TCL_ENGINE_FIXED); + BEGIN_RING(chan, kelvin, NV20_3D_ENGINE, 1); + OUT_RING (chan, NV20_3D_ENGINE_FIXED); - for (i = 0; i < NV20TCL_TX_MATRIX_ENABLE__SIZE; i++) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_MATRIX_ENABLE(i), 1); + for (i = 0; i < NV20_3D_TEX_MATRIX_ENABLE__LEN; i++) { + BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX_ENABLE(i), 1); OUT_RING (chan, 0); } - BEGIN_RING(chan, kelvin, NV20TCL_VTX_ATTR_4F_X(1), 4 * 15); + BEGIN_RING(chan, kelvin, NV20_3D_VERTEX_ATTR_4F_X(1), 4 * 15); OUT_RINGf(chan, 1.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); @@ -344,24 +394,24 @@ nv20_hwctx_init(struct gl_context *ctx) OUT_RINGf(chan, 1.0); } - BEGIN_RING(chan, kelvin, NV20TCL_EDGEFLAG_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_EDGEFLAG_ENABLE, 1); OUT_RING (chan, 1); - BEGIN_RING(chan, kelvin, NV20TCL_COLOR_MASK, 1); + BEGIN_RING(chan, kelvin, NV20_3D_COLOR_MASK, 1); OUT_RING (chan, 0x00010101); - BEGIN_RING(chan, kelvin, NV20TCL_CLEAR_VALUE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_VALUE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_RANGE_NEAR, 2); + BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_RANGE_NEAR, 2); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 16777216.0); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_TRANSLATE_X, 4); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_TRANSLATE_X, 4); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 16777215.0); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_SCALE_X, 4); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_SCALE_X, 4); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 16777215.0 * 0.5); @@ -376,7 +426,8 @@ nv20_context_destroy(struct gl_context *ctx) struct nouveau_context *nctx = to_nouveau_context(ctx); nv04_surface_takedown(ctx); - nv20_render_destroy(ctx); + nv20_swtnl_destroy(ctx); + nv20_vbo_destroy(ctx); nouveau_grobj_free(&nctx->hw.eng3d); @@ -410,6 +461,7 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua ctx->Const.MaxTextureUnits = NV20_TEXTURE_UNITS; ctx->Const.MaxTextureMaxAnisotropy = 8; ctx->Const.MaxTextureLodBias = 15; + ctx->Driver.Clear = nv20_clear; /* 2D engine. */ ret = nv04_surface_init(ctx); @@ -418,9 +470,9 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua /* 3D engine. */ if (context_chipset(ctx) >= 0x25) - kelvin_class = NV25TCL; + kelvin_class = NV25_3D; else - kelvin_class = NV20TCL; + kelvin_class = NV20_3D; ret = nouveau_grobj_alloc(context_chan(ctx), 0xbeef0001, kelvin_class, &nctx->hw.eng3d); @@ -428,7 +480,8 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua goto fail; nv20_hwctx_init(ctx); - nv20_render_init(ctx); + nv20_vbo_init(ctx); + nv20_swtnl_init(ctx); return ctx; diff --git a/src/mesa/drivers/dri/nouveau/nv20_driver.h b/src/mesa/drivers/dri/nouveau/nv20_driver.h index 7fbe6ccfa6..f2a6097b93 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_driver.h +++ b/src/mesa/drivers/dri/nouveau/nv20_driver.h @@ -39,10 +39,16 @@ extern const struct nouveau_driver nv20_driver; /* nv20_render.c */ void -nv20_render_init(struct gl_context *ctx); +nv20_vbo_init(struct gl_context *ctx); void -nv20_render_destroy(struct gl_context *ctx); +nv20_vbo_destroy(struct gl_context *ctx); + +void +nv20_swtnl_init(struct gl_context *ctx); + +void +nv20_swtnl_destroy(struct gl_context *ctx); /* nv20_state_fb.c */ void diff --git a/src/mesa/drivers/dri/nouveau/nv20_render.c b/src/mesa/drivers/dri/nouveau/nv20_render.c index 6b66854462..2bdc85cda4 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_render.c +++ b/src/mesa/drivers/dri/nouveau/nv20_render.c @@ -26,60 +26,60 @@ #include "nouveau_driver.h" #include "nouveau_context.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nv20_driver.h" #define NUM_VERTEX_ATTRS 16 static void -nv20_emit_material(struct gl_context *ctx, struct nouveau_array_state *a, +nv20_emit_material(struct gl_context *ctx, struct nouveau_array *a, const void *v); /* Vertex attribute format. */ static struct nouveau_attr_info nv20_vertex_attrs[VERT_ATTRIB_MAX] = { [VERT_ATTRIB_POS] = { .vbo_index = 0, - .imm_method = NV20TCL_VERTEX_POS_4F_X, + .imm_method = NV20_3D_VERTEX_POS_4F_X, .imm_fields = 4, }, [VERT_ATTRIB_NORMAL] = { .vbo_index = 2, - .imm_method = NV20TCL_VERTEX_NOR_3F_X, + .imm_method = NV20_3D_VERTEX_NOR_3F_X, .imm_fields = 3, }, [VERT_ATTRIB_COLOR0] = { .vbo_index = 3, - .imm_method = NV20TCL_VERTEX_COL_4F_X, + .imm_method = NV20_3D_VERTEX_COL_4F, .imm_fields = 4, }, [VERT_ATTRIB_COLOR1] = { .vbo_index = 4, - .imm_method = NV20TCL_VERTEX_COL2_3F_X, + .imm_method = NV20_3D_VERTEX_COL2_3F, .imm_fields = 3, }, [VERT_ATTRIB_FOG] = { .vbo_index = 5, - .imm_method = NV20TCL_VERTEX_FOG_1F, + .imm_method = NV20_3D_VERTEX_FOG_1F, .imm_fields = 1, }, [VERT_ATTRIB_TEX0] = { .vbo_index = 9, - .imm_method = NV20TCL_VERTEX_TX0_4F_S, + .imm_method = NV20_3D_VERTEX_TX0_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_TEX1] = { .vbo_index = 10, - .imm_method = NV20TCL_VERTEX_TX1_4F_S, + .imm_method = NV20_3D_VERTEX_TX1_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_TEX2] = { .vbo_index = 11, - .imm_method = NV20TCL_VERTEX_TX2_4F_S, + .imm_method = NV20_3D_VERTEX_TX2_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_TEX3] = { .vbo_index = 12, - .imm_method = NV20TCL_VERTEX_TX3_4F_S, + .imm_method = NV20_3D_VERTEX_TX3_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_GENERIC0] = { @@ -119,11 +119,11 @@ get_hw_format(int type) { switch (type) { case GL_FLOAT: - return NV20TCL_VTXFMT_TYPE_FLOAT; + return NV20_3D_VTXBUF_FMT_TYPE_FLOAT; case GL_UNSIGNED_SHORT: - return NV20TCL_VTXFMT_TYPE_USHORT; + return NV20_3D_VTXBUF_FMT_TYPE_USHORT; case GL_UNSIGNED_BYTE: - return NV20TCL_VTXFMT_TYPE_UBYTE; + return NV20_3D_VTXBUF_FMT_TYPE_UBYTE; default: assert(0); } @@ -135,13 +135,11 @@ nv20_render_set_format(struct gl_context *ctx) struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); - int i, hw_format; - - for (i = 0; i < NUM_VERTEX_ATTRS; i++) { - int attr = render->map[i]; + int i, attr, hw_format; + FOR_EACH_ATTR(render, i, attr) { if (attr >= 0) { - struct nouveau_array_state *a = &render->attrs[attr]; + struct nouveau_array *a = &render->attrs[attr]; hw_format = a->stride << 8 | a->fields << 4 | @@ -149,10 +147,10 @@ nv20_render_set_format(struct gl_context *ctx) } else { /* Unused attribute. */ - hw_format = NV10TCL_VTXFMT_TYPE_FLOAT; + hw_format = NV20_3D_VTXBUF_FMT_TYPE_FLOAT; } - BEGIN_RING(chan, kelvin, NV20TCL_VTXFMT(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VTXBUF_FMT(i), 1); OUT_RING(chan, hw_format); } } @@ -162,57 +160,53 @@ nv20_render_bind_vertices(struct gl_context *ctx) { struct nouveau_render_state *render = to_render_state(ctx); struct nouveau_bo_context *bctx = context_bctx(ctx, VERTEX); - struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); - int i; + int i, attr; - for (i = 0; i < NUM_VERTEX_ATTRS; i++) { - int attr = render->map[i]; - - if (attr >= 0) { - struct nouveau_array_state *a = &render->attrs[attr]; + FOR_EACH_BOUND_ATTR(render, i, attr) { + struct nouveau_array *a = &render->attrs[attr]; - nouveau_bo_mark(bctx, kelvin, - NV20TCL_VTXBUF_ADDRESS(i), - a->bo, a->offset, 0, - 0, NV20TCL_VTXBUF_ADDRESS_DMA1, - NOUVEAU_BO_LOW | NOUVEAU_BO_OR | - NOUVEAU_BO_GART | NOUVEAU_BO_RD); - } + nouveau_bo_mark(bctx, kelvin, + NV20_3D_VTXBUF_OFFSET(i), + a->bo, a->offset, 0, + 0, NV20_3D_VTXBUF_OFFSET_DMA1, + NOUVEAU_BO_LOW | NOUVEAU_BO_OR | + NOUVEAU_BO_GART | NOUVEAU_BO_RD); } - - BEGIN_RING(chan, kelvin, NV20TCL_VTX_CACHE_INVALIDATE, 1); - OUT_RING(chan, 0); } /* Vertex array rendering defs. */ #define RENDER_LOCALS(ctx) \ struct nouveau_grobj *kelvin = context_eng3d(ctx) +#define BATCH_VALIDATE() \ + BEGIN_RING(chan, kelvin, NV20_3D_VTXBUF_VALIDATE, 1); \ + OUT_RING(chan, 0) + #define BATCH_BEGIN(prim) \ - BEGIN_RING(chan, kelvin, NV20TCL_VERTEX_BEGIN_END, 1); \ + BEGIN_RING(chan, kelvin, NV20_3D_VERTEX_BEGIN_END, 1); \ OUT_RING(chan, prim) #define BATCH_END() \ - BEGIN_RING(chan, kelvin, NV20TCL_VERTEX_BEGIN_END, 1); \ + BEGIN_RING(chan, kelvin, NV20_3D_VERTEX_BEGIN_END, 1); \ OUT_RING(chan, 0) #define MAX_PACKET 0x400 #define MAX_OUT_L 0x100 #define BATCH_PACKET_L(n) \ - BEGIN_RING_NI(chan, kelvin, NV20TCL_VB_VERTEX_BATCH, n) + BEGIN_RING_NI(chan, kelvin, NV20_3D_VTXBUF_BATCH, n) #define BATCH_OUT_L(i, n) \ OUT_RING(chan, ((n) - 1) << 24 | (i)) #define MAX_OUT_I16 0x2 #define BATCH_PACKET_I16(n) \ - BEGIN_RING_NI(chan, kelvin, NV20TCL_VB_ELEMENT_U16, n) + BEGIN_RING_NI(chan, kelvin, NV20_3D_VTXBUF_ELEMENT_U16, n) #define BATCH_OUT_I16(i0, i1) \ OUT_RING(chan, (i1) << 16 | (i0)) #define MAX_OUT_I32 0x1 #define BATCH_PACKET_I32(n) \ - BEGIN_RING_NI(chan, kelvin, NV20TCL_VB_ELEMENT_U32, n) + BEGIN_RING_NI(chan, kelvin, NV20_3D_VTXBUF_ELEMENT_U32, n) #define BATCH_OUT_I32(i) \ OUT_RING(chan, i) @@ -223,3 +217,5 @@ nv20_render_bind_vertices(struct gl_context *ctx) #define TAG(x) nv20_##x #include "nouveau_render_t.c" +#include "nouveau_vbo_t.c" +#include "nouveau_swtnl_t.c" diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_fb.c b/src/mesa/drivers/dri/nouveau/nv20_state_fb.c index 7822ca2a09..cbde74e4fc 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_fb.c @@ -29,7 +29,7 @@ #include "nouveau_fbo.h" #include "nouveau_gldefs.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nv20_driver.h" static inline unsigned @@ -37,20 +37,45 @@ get_rt_format(gl_format format) { switch (format) { case MESA_FORMAT_XRGB8888: - return 0x05; + return NV20_3D_RT_FORMAT_COLOR_X8R8G8B8; case MESA_FORMAT_ARGB8888: - return 0x08; + return NV20_3D_RT_FORMAT_COLOR_A8R8G8B8; case MESA_FORMAT_RGB565: - return 0x03; + return NV20_3D_RT_FORMAT_COLOR_R5G6B5; case MESA_FORMAT_Z16: - return 0x10; + return NV20_3D_RT_FORMAT_DEPTH_Z16; case MESA_FORMAT_Z24_S8: - return 0x20; + return NV20_3D_RT_FORMAT_DEPTH_Z24S8; default: assert(0); } } +static void +setup_hierz_buffer(struct gl_context *ctx) +{ + struct nouveau_channel *chan = context_chan(ctx); + struct nouveau_grobj *kelvin = context_eng3d(ctx); + struct nouveau_bo_context *bctx = context_bctx(ctx, HIERZ); + struct gl_framebuffer *fb = ctx->DrawBuffer; + struct nouveau_framebuffer *nfb = to_nouveau_framebuffer(fb); + unsigned pitch = align(fb->Width, 128), + height = align(fb->Height, 2), + size = pitch * height; + + if (!nfb->hierz.bo || nfb->hierz.bo->size != size) { + nouveau_bo_ref(NULL, &nfb->hierz.bo); + nouveau_bo_new(context_dev(ctx), NOUVEAU_BO_VRAM, 0, size, + &nfb->hierz.bo); + } + + BEGIN_RING(chan, kelvin, NV25_3D_HIERZ_PITCH, 1); + OUT_RING(chan, pitch); + + nouveau_bo_markl(bctx, kelvin, NV25_3D_HIERZ_OFFSET, nfb->hierz.bo, + 0, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR); +} + void nv20_emit_framebuffer(struct gl_context *ctx, int emit) { @@ -59,7 +84,7 @@ nv20_emit_framebuffer(struct gl_context *ctx, int emit) struct nouveau_bo_context *bctx = context_bctx(ctx, FRAMEBUFFER); struct gl_framebuffer *fb = ctx->DrawBuffer; struct nouveau_surface *s; - unsigned rt_format = NV20TCL_RT_FORMAT_TYPE_LINEAR; + unsigned rt_format = NV20_3D_RT_FORMAT_TYPE_LINEAR; unsigned rt_pitch = 0, zeta_pitch = 0; unsigned bo_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR; @@ -74,7 +99,7 @@ nv20_emit_framebuffer(struct gl_context *ctx, int emit) rt_format |= get_rt_format(s->format); rt_pitch = s->pitch; - nouveau_bo_markl(bctx, kelvin, NV20TCL_COLOR_OFFSET, + nouveau_bo_markl(bctx, kelvin, NV20_3D_COLOR_OFFSET, s->bo, 0, bo_flags); } @@ -86,14 +111,17 @@ nv20_emit_framebuffer(struct gl_context *ctx, int emit) rt_format |= get_rt_format(s->format); zeta_pitch = s->pitch; - nouveau_bo_markl(bctx, kelvin, NV20TCL_ZETA_OFFSET, + nouveau_bo_markl(bctx, kelvin, NV20_3D_ZETA_OFFSET, s->bo, 0, bo_flags); + + if (context_chipset(ctx) >= 0x25) + setup_hierz_buffer(ctx); } else { rt_format |= get_rt_format(MESA_FORMAT_Z24_S8); zeta_pitch = rt_pitch; } - BEGIN_RING(chan, kelvin, NV20TCL_RT_FORMAT, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RT_FORMAT, 2); OUT_RING(chan, rt_format); OUT_RING(chan, zeta_pitch << 16 | rt_pitch); @@ -112,12 +140,12 @@ nv20_emit_viewport(struct gl_context *ctx, int emit) get_viewport_translate(ctx, a); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_TRANSLATE_X, 4); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_TRANSLATE_X, 4); OUT_RINGp(chan, a, 4); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_HORIZ(0), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_HORIZ(0), 1); OUT_RING(chan, (fb->Width - 1) << 16); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_VERT(0), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_VERT(0), 1); OUT_RING(chan, (fb->Height - 1) << 16); context_dirty(ctx, PROJECTION); diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_frag.c b/src/mesa/drivers/dri/nouveau/nv20_state_frag.c index f9212d8b39..0624de442b 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_frag.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_frag.c @@ -26,7 +26,7 @@ #include "nouveau_driver.h" #include "nouveau_context.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nv10_driver.h" #include "nv20_driver.h" @@ -40,15 +40,15 @@ nv20_emit_tex_env(struct gl_context *ctx, int emit) nv10_get_general_combiner(ctx, i, &a_in, &a_out, &c_in, &c_out, &k); - BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_ALPHA(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_ALPHA(i), 1); OUT_RING(chan, a_in); - BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_ALPHA(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_ALPHA(i), 1); OUT_RING(chan, a_out); - BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_RGB(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_RGB(i), 1); OUT_RING(chan, c_in); - BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_RGB(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_RGB(i), 1); OUT_RING(chan, c_out); - BEGIN_RING(chan, kelvin, NV20TCL_RC_CONSTANT_COLOR0(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_CONSTANT_COLOR0(i), 1); OUT_RING(chan, k); context_dirty(ctx, FRAG); @@ -64,10 +64,10 @@ nv20_emit_frag(struct gl_context *ctx, int emit) nv10_get_final_combiner(ctx, &in, &n); - BEGIN_RING(chan, kelvin, NV20TCL_RC_FINAL0, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RC_FINAL0, 2); OUT_RING(chan, in); OUT_RING(chan, in >> 32); - BEGIN_RING(chan, kelvin, NV20TCL_RC_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_ENABLE, 1); OUT_RING(chan, n); } diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c index a6e237f8c4..85f30dc4d4 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c @@ -27,7 +27,7 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nv20_driver.h" void @@ -36,7 +36,7 @@ nv20_emit_point_mode(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); - BEGIN_RING(chan, kelvin, NV20TCL_POINT_SIZE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_POINT_SIZE, 1); if (context_chipset(ctx) >= 0x25) OUT_RINGf(chan, ctx->Point.Size); else diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_raster.c b/src/mesa/drivers/dri/nouveau/nv20_state_raster.c index 0fc7a3259d..3fb4ecae89 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_raster.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_raster.c @@ -27,7 +27,8 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nouveau_util.h" +#include "nv20_3d.xml.h" #include "nv20_driver.h" void @@ -36,7 +37,7 @@ nv20_emit_logic_opcode(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); - BEGIN_RING(chan, kelvin, NV20TCL_COLOR_LOGIC_OP_ENABLE, 2); - OUT_RING(chan, ctx->Color.ColorLogicOpEnabled ? 1 : 0); + BEGIN_RING(chan, kelvin, NV20_3D_COLOR_LOGIC_OP_ENABLE, 2); + OUT_RINGb(chan, ctx->Color.ColorLogicOpEnabled); OUT_RING(chan, nvgl_logicop_func(ctx->Color.LogicOp)); } diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c index cfff1fe839..c362aca0fd 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c @@ -28,14 +28,10 @@ #include "nouveau_context.h" #include "nouveau_gldefs.h" #include "nouveau_texture.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nouveau_util.h" #include "nv20_driver.h" -#define TX_GEN_MODE(i, j) (NV20TCL_TX_GEN_MODE_S(i) + 4 * (j)) -#define TX_GEN_COEFF(i, j) (NV20TCL_TX_GEN_COEFF_S_A(i) + 16 * (j)) -#define TX_MATRIX(i) (NV20TCL_TX0_MATRIX(0) + 64 * (i)) - void nv20_emit_tex_gen(struct gl_context *ctx, int emit) { @@ -52,15 +48,16 @@ nv20_emit_tex_gen(struct gl_context *ctx, int emit) float *k = get_texgen_coeff(coord); if (k) { - BEGIN_RING(chan, kelvin, TX_GEN_COEFF(i, j), 4); + BEGIN_RING(chan, kelvin, + NV20_3D_TEX_GEN_COEFF(i, j), 4); OUT_RINGp(chan, k, 4); } - BEGIN_RING(chan, kelvin, TX_GEN_MODE(i, j), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_GEN_MODE(i, j), 1); OUT_RING(chan, nvgl_texgen_mode(coord->Mode)); } else { - BEGIN_RING(chan, kelvin, TX_GEN_MODE(i, j), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_GEN_MODE(i, j), 1); OUT_RING(chan, 0); } } @@ -76,14 +73,14 @@ nv20_emit_tex_mat(struct gl_context *ctx, int emit) if (nctx->fallback == HWTNL && (ctx->Texture._TexMatEnabled & 1 << i)) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_MATRIX_ENABLE(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX_ENABLE(i), 1); OUT_RING(chan, 1); - BEGIN_RING(chan, kelvin, TX_MATRIX(i), 16); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX(i,0), 16); OUT_RINGm(chan, ctx->TextureMatrixStack[i].Top->m); } else { - BEGIN_RING(chan, kelvin, NV20TCL_TX_MATRIX_ENABLE(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX_ENABLE(i), 1); OUT_RING(chan, 0); } } @@ -93,29 +90,29 @@ get_tex_format_pot(struct gl_texture_image *ti) { switch (ti->TexFormat) { case MESA_FORMAT_ARGB8888: - return NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8; + return NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8; case MESA_FORMAT_ARGB1555: - return NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5; + return NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5; case MESA_FORMAT_ARGB4444: - return NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4; + return NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4; case MESA_FORMAT_XRGB8888: - return NV20TCL_TX_FORMAT_FORMAT_X8R8G8B8; + return NV20_3D_TEX_FORMAT_FORMAT_X8R8G8B8; case MESA_FORMAT_RGB565: - return NV20TCL_TX_FORMAT_FORMAT_R5G6B5; + return NV20_3D_TEX_FORMAT_FORMAT_R5G6B5; case MESA_FORMAT_A8: case MESA_FORMAT_I8: - return NV20TCL_TX_FORMAT_FORMAT_A8; + return NV20_3D_TEX_FORMAT_FORMAT_I8; case MESA_FORMAT_L8: - return NV20TCL_TX_FORMAT_FORMAT_L8; + return NV20_3D_TEX_FORMAT_FORMAT_L8; case MESA_FORMAT_CI8: - return NV20TCL_TX_FORMAT_FORMAT_INDEX8; + return NV20_3D_TEX_FORMAT_FORMAT_INDEX8; default: assert(0); @@ -127,26 +124,26 @@ get_tex_format_rect(struct gl_texture_image *ti) { switch (ti->TexFormat) { case MESA_FORMAT_ARGB8888: - return NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT; case MESA_FORMAT_ARGB1555: - return NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT; case MESA_FORMAT_ARGB4444: - return NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4_RECT; case MESA_FORMAT_XRGB8888: - return NV20TCL_TX_FORMAT_FORMAT_R8G8B8_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_R8G8B8_RECT; case MESA_FORMAT_RGB565: - return NV20TCL_TX_FORMAT_FORMAT_R5G6B5_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT; case MESA_FORMAT_L8: - return NV20TCL_TX_FORMAT_FORMAT_L8_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_L8_RECT; case MESA_FORMAT_A8: case MESA_FORMAT_I8: - return NV20TCL_TX_FORMAT_FORMAT_A8_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_I8_RECT; default: assert(0); @@ -167,7 +164,7 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) uint32_t tx_format, tx_filter, tx_wrap, tx_enable; if (!ctx->Texture.Unit[i]._ReallyEnabled) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_ENABLE(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_ENABLE(i), 1); OUT_RING(chan, 0); context_dirty(ctx, TEX_SHADER); @@ -185,8 +182,8 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) tx_format = ti->DepthLog2 << 28 | ti->HeightLog2 << 24 | ti->WidthLog2 << 20 - | NV20TCL_TX_FORMAT_DIMS_2D - | NV20TCL_TX_FORMAT_NO_BORDER + | NV20_3D_TEX_FORMAT_DIMS_2D + | NV20_3D_TEX_FORMAT_NO_BORDER | 1 << 16; tx_wrap = nvgl_wrap_mode(t->WrapR) << 16 @@ -197,13 +194,13 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) | nvgl_filter_mode(t->MinFilter) << 16 | 2 << 12; - tx_enable = NV20TCL_TX_ENABLE_ENABLE + tx_enable = NV20_3D_TEX_ENABLE_ENABLE | log2i(t->MaxAnisotropy) << 4; if (t->Target == GL_TEXTURE_RECTANGLE) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_NPOT_PITCH(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_NPOT_PITCH(i), 1); OUT_RING(chan, s->pitch << 16); - BEGIN_RING(chan, kelvin, NV20TCL_TX_NPOT_SIZE(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_NPOT_SIZE(i), 1); OUT_RING(chan, s->width << 16 | s->height); tx_format |= get_tex_format_rect(ti); @@ -222,29 +219,29 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) lod_min = CLAMP(lod_min, 0, 15); lod_bias = CLAMP(lod_bias, 0, 15); - tx_format |= NV20TCL_TX_FORMAT_MIPMAP; + tx_format |= NV20_3D_TEX_FORMAT_MIPMAP; tx_filter |= lod_bias << 8; tx_enable |= lod_min << 26 | lod_max << 14; } /* Write it to the hardware. */ - nouveau_bo_mark(bctx, kelvin, NV20TCL_TX_FORMAT(i), + nouveau_bo_mark(bctx, kelvin, NV20_3D_TEX_FORMAT(i), s->bo, tx_format, 0, - NV20TCL_TX_FORMAT_DMA0, - NV20TCL_TX_FORMAT_DMA1, + NV20_3D_TEX_FORMAT_DMA0, + NV20_3D_TEX_FORMAT_DMA1, bo_flags | NOUVEAU_BO_OR); - nouveau_bo_markl(bctx, kelvin, NV20TCL_TX_OFFSET(i), + nouveau_bo_markl(bctx, kelvin, NV20_3D_TEX_OFFSET(i), s->bo, s->offset, bo_flags); - BEGIN_RING(chan, kelvin, NV20TCL_TX_WRAP(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_WRAP(i), 1); OUT_RING(chan, tx_wrap); - BEGIN_RING(chan, kelvin, NV20TCL_TX_FILTER(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_FILTER(i), 1); OUT_RING(chan, tx_filter); - BEGIN_RING(chan, kelvin, NV20TCL_TX_ENABLE(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_ENABLE(i), 1); OUT_RING(chan, tx_enable); context_dirty(ctx, TEX_SHADER); @@ -262,9 +259,9 @@ nv20_emit_tex_shader(struct gl_context *ctx, int emit) if (!ctx->Texture.Unit[i]._ReallyEnabled) continue; - tx_shader_op |= NV20TCL_TX_SHADER_OP_TX0_TEXTURE_2D << 5 * i; + tx_shader_op |= NV20_3D_TEX_SHADER_OP_TX0_TEXTURE_2D << 5 * i; } - BEGIN_RING(chan, kelvin, NV20TCL_TX_SHADER_OP, 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_SHADER_OP, 1); OUT_RING(chan, tx_shader_op); } diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c index b65cd9ad87..4677198dd0 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c @@ -28,31 +28,31 @@ #include "nouveau_context.h" #include "nouveau_gldefs.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nv10_driver.h" #include "nv20_driver.h" #define LIGHT_MODEL_AMBIENT_R(side) \ - ((side) ? NV20TCL_LIGHT_MODEL_BACK_AMBIENT_R : \ - NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_R) + ((side) ? NV20_3D_LIGHT_MODEL_BACK_AMBIENT_R : \ + NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_R) #define LIGHT_AMBIENT_R(side, i) \ - ((side) ? NV20TCL_LIGHT_BACK_AMBIENT_R(i) : \ - NV20TCL_LIGHT_FRONT_AMBIENT_R(i)) + ((side) ? NV20_3D_LIGHT_BACK_AMBIENT_R(i) : \ + NV20_3D_LIGHT_FRONT_AMBIENT_R(i)) #define LIGHT_DIFFUSE_R(side, i) \ - ((side) ? NV20TCL_LIGHT_BACK_DIFFUSE_R(i) : \ - NV20TCL_LIGHT_FRONT_DIFFUSE_R(i)) + ((side) ? NV20_3D_LIGHT_BACK_DIFFUSE_R(i) : \ + NV20_3D_LIGHT_FRONT_DIFFUSE_R(i)) #define LIGHT_SPECULAR_R(side, i) \ - ((side) ? NV20TCL_LIGHT_BACK_SPECULAR_R(i) : \ - NV20TCL_LIGHT_FRONT_SPECULAR_R(i)) + ((side) ? NV20_3D_LIGHT_BACK_SPECULAR_R(i) : \ + NV20_3D_LIGHT_FRONT_SPECULAR_R(i)) #define MATERIAL_FACTOR_R(side) \ - ((side) ? NV20TCL_MATERIAL_FACTOR_BACK_R : \ - NV20TCL_MATERIAL_FACTOR_FRONT_R) + ((side) ? NV20_3D_MATERIAL_FACTOR_BACK_R : \ + NV20_3D_MATERIAL_FACTOR_FRONT_R) #define MATERIAL_FACTOR_A(side) \ - ((side) ? NV20TCL_MATERIAL_FACTOR_BACK_A : \ - NV20TCL_MATERIAL_FACTOR_FRONT_A) + ((side) ? NV20_3D_MATERIAL_FACTOR_BACK_A : \ + NV20_3D_MATERIAL_FACTOR_FRONT_A) #define MATERIAL_SHININESS(side) \ - ((side) ? NV20TCL_BACK_MATERIAL_SHININESS(0) : \ - NV20TCL_FRONT_MATERIAL_SHININESS(0)) + ((side) ? NV20_3D_BACK_MATERIAL_SHININESS(0) : \ + NV20_3D_FRONT_MATERIAL_SHININESS(0)) void nv20_emit_clip_plane(struct gl_context *ctx, int emit) @@ -65,22 +65,22 @@ get_material_bitmask(unsigned m) unsigned ret = 0; if (m & MAT_BIT_FRONT_EMISSION) - ret |= NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_COL1; + ret |= NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL1; if (m & MAT_BIT_FRONT_AMBIENT) - ret |= NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_COL1; + ret |= NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL1; if (m & MAT_BIT_FRONT_DIFFUSE) - ret |= NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_COL1; + ret |= NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL1; if (m & MAT_BIT_FRONT_SPECULAR) - ret |= NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_COL1; + ret |= NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL1; if (m & MAT_BIT_BACK_EMISSION) - ret |= NV20TCL_COLOR_MATERIAL_BACK_EMISSION_COL1; + ret |= NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL1; if (m & MAT_BIT_BACK_AMBIENT) - ret |= NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_COL1; + ret |= NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL1; if (m & MAT_BIT_BACK_DIFFUSE) - ret |= NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_COL1; + ret |= NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL1; if (m & MAT_BIT_BACK_SPECULAR) - ret |= NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_COL1; + ret |= NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL1; return ret; } @@ -92,7 +92,7 @@ nv20_emit_color_material(struct gl_context *ctx, int emit) struct nouveau_grobj *kelvin = context_eng3d(ctx); unsigned mask = get_material_bitmask(ctx->Light.ColorMaterialBitmask); - BEGIN_RING(chan, kelvin, NV20TCL_COLOR_MATERIAL, 1); + BEGIN_RING(chan, kelvin, NV20_3D_COLOR_MATERIAL, 1); OUT_RING(chan, ctx->Light.ColorMaterialEnabled ? mask : 0); } @@ -101,11 +101,11 @@ get_fog_mode_signed(unsigned mode) { switch (mode) { case GL_LINEAR: - return NV20TCL_FOG_MODE_LINEAR_SIGNED; + return NV20_3D_FOG_MODE_LINEAR_SIGNED; case GL_EXP: - return NV20TCL_FOG_MODE_EXP_SIGNED; + return NV20_3D_FOG_MODE_EXP_SIGNED; case GL_EXP2: - return NV20TCL_FOG_MODE_EXP2_SIGNED; + return NV20_3D_FOG_MODE_EXP2_SIGNED; default: assert(0); } @@ -116,11 +116,11 @@ get_fog_mode_unsigned(unsigned mode) { switch (mode) { case GL_LINEAR: - return NV20TCL_FOG_MODE_LINEAR_UNSIGNED; + return NV20_3D_FOG_MODE_LINEAR_UNSIGNED; case GL_EXP: - return NV20TCL_FOG_MODE_EXP_UNSIGNED; + return NV20_3D_FOG_MODE_EXP_UNSIGNED; case GL_EXP2: - return NV20TCL_FOG_MODE_EXP2_UNSIGNED; + return NV20_3D_FOG_MODE_EXP2_UNSIGNED; default: assert(0); } @@ -131,9 +131,9 @@ get_fog_source(unsigned source) { switch (source) { case GL_FOG_COORDINATE_EXT: - return NV20TCL_FOG_COORD_FOG; + return NV20_3D_FOG_COORD_FOG; case GL_FRAGMENT_DEPTH_EXT: - return NV20TCL_FOG_COORD_DIST_ORTHOGONAL_ABS; + return NV20_3D_FOG_COORD_DIST_ORTHOGONAL_ABS; default: assert(0); } @@ -152,15 +152,15 @@ nv20_emit_fog(struct gl_context *ctx, int emit) nv10_get_fog_coeff(ctx, k); - BEGIN_RING(chan, kelvin, NV20TCL_FOG_MODE, 4); + BEGIN_RING(chan, kelvin, NV20_3D_FOG_MODE, 4); OUT_RING(chan, (source == GL_FOG_COORDINATE_EXT ? get_fog_mode_signed(f->Mode) : get_fog_mode_unsigned(f->Mode))); OUT_RING(chan, get_fog_source(source)); - OUT_RING(chan, f->Enabled ? 1 : 0); + OUT_RINGb(chan, f->Enabled); OUT_RING(chan, pack_rgba_f(MESA_FORMAT_RGBA8888_REV, f->Color)); - BEGIN_RING(chan, kelvin, NV20TCL_FOG_EQUATION_CONSTANT, 3); + BEGIN_RING(chan, kelvin, NV20_3D_FOG_COEFF(0), 3); OUT_RINGp(chan, k, 3); } @@ -171,19 +171,19 @@ nv20_emit_light_model(struct gl_context *ctx, int emit) struct nouveau_grobj *kelvin = context_eng3d(ctx); struct gl_lightmodel *m = &ctx->Light.Model; - BEGIN_RING(chan, kelvin, NV20TCL_SEPARATE_SPECULAR_ENABLE, 1); - OUT_RING(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR ? 1 : 0); + BEGIN_RING(chan, kelvin, NV20_3D_SEPARATE_SPECULAR_ENABLE, 1); + OUT_RINGb(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL, 1); OUT_RING(chan, ((m->LocalViewer ? - NV20TCL_LIGHT_MODEL_VIEWER_LOCAL : - NV20TCL_LIGHT_MODEL_VIEWER_NONLOCAL) | + NV20_3D_LIGHT_MODEL_VIEWER_LOCAL : + NV20_3D_LIGHT_MODEL_VIEWER_NONLOCAL) | (NEED_SECONDARY_COLOR(ctx) ? - NV20TCL_LIGHT_MODEL_SEPARATE_SPECULAR : + NV20_3D_LIGHT_MODEL_SEPARATE_SPECULAR : 0))); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL_TWO_SIDE_ENABLE, 1); - OUT_RING(chan, ctx->Light.Model.TwoSide ? 1 : 0); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL_TWO_SIDE_ENABLE, 1); + OUT_RINGb(chan, ctx->Light.Model.TwoSide); } void @@ -195,19 +195,19 @@ nv20_emit_light_source(struct gl_context *ctx, int emit) struct gl_light *l = &ctx->Light.Light[i]; if (l->_Flags & LIGHT_POSITIONAL) { - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_POSITION_X(i), 3); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_POSITION_X(i), 3); OUT_RINGp(chan, l->_Position, 3); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_ATTENUATION_CONSTANT(i), 3); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_ATTENUATION_CONSTANT(i), 3); OUT_RINGf(chan, l->ConstantAttenuation); OUT_RINGf(chan, l->LinearAttenuation); OUT_RINGf(chan, l->QuadraticAttenuation); } else { - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_DIRECTION_X(i), 3); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_DIRECTION_X(i), 3); OUT_RINGp(chan, l->_VP_inf_norm, 3); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_HALF_VECTOR_X(i), 3); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_HALF_VECTOR_X(i), 3); OUT_RINGp(chan, l->_h_inf_norm, 3); } @@ -216,7 +216,7 @@ nv20_emit_light_source(struct gl_context *ctx, int emit) nv10_get_spot_coeff(l, k); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_SPOT_CUTOFF_A(i), 7); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_SPOT_CUTOFF(i, 0), 7); OUT_RINGp(chan, k, 7); } } @@ -340,7 +340,7 @@ nv20_emit_modelview(struct gl_context *ctx, int emit) if (ctx->Light._NeedEyeCoords || ctx->Fog.Enabled || (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD)) { - BEGIN_RING(chan, kelvin, NV20TCL_MODELVIEW0_MATRIX(0), 16); + BEGIN_RING(chan, kelvin, NV20_3D_MODELVIEW_MATRIX(0, 0), 16); OUT_RINGm(chan, m->m); } @@ -349,7 +349,7 @@ nv20_emit_modelview(struct gl_context *ctx, int emit) int i, j; BEGIN_RING(chan, kelvin, - NV20TCL_INVERSE_MODELVIEW0_MATRIX(0), 12); + NV20_3D_INVERSE_MODELVIEW_MATRIX(0, 0), 12); for (i = 0; i < 3; i++) for (j = 0; j < 4; j++) OUT_RINGf(chan, m->inv[4*i + j]); @@ -370,7 +370,7 @@ nv20_emit_projection(struct gl_context *ctx, int emit) if (nctx->fallback == HWTNL) _math_matrix_mul_matrix(&m, &m, &ctx->_ModelProjectMatrix); - BEGIN_RING(chan, kelvin, NV20TCL_PROJECTION_MATRIX(0), 16); + BEGIN_RING(chan, kelvin, NV20_3D_PROJECTION_MATRIX(0), 16); OUT_RINGm(chan, m.m); _math_matrix_dtr(&m); diff --git a/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h b/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h new file mode 100644 index 0000000000..e370a1ca06 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h @@ -0,0 +1,155 @@ +#ifndef NV_M2MF_XML +#define NV_M2MF_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv_m2mf.xml ( 2710 bytes, from 2010-11-01 00:28:46) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <arthur.huillet@free.fr> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <koala_br@users.sourceforge.net> (koala_br) +- Carlos Martin <carlosmn@users.sf.net> (carlosmn) +- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr) +- Dawid Gajownik <gajownik@users.sf.net> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag) +- EdB <edb_@users.sf.net> (edb_) +- Erik Waling <erikwailing@users.sf.net> (erikwaling) +- Francisco Jerez <currojerez@riseup.net> (curro) +- imirkin <imirkin@users.sf.net> (imirkin) +- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome) +- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy) +- Laurent Carlier <lordheavym@gmail.com> (lordheavy) +- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1) +- Maarten Maathuis <madman2003@gmail.com> (stillunknown) +- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin) +- Mark Carey <mark.carey@gmail.com> (careym) +- Matthieu Castet <matthieu.castet@parrot.com> (mat-c) +- nvidiaman <nvidiaman@users.sf.net> (nvidiaman) +- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata) +- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen) +- Peter Popov <ironpeter@users.sf.net> (ironpeter) +- Richard Hughes <hughsient@users.sf.net> (hughsient) +- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <leroutier@users.sf.net> (leroutier) +- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu) +- sturmflut <sturmflut@users.sf.net> (sturmflut) +- Sylvain Munaut <tnt@246tNt.com> +- Victor Stinner <victor.stinner@haypocalc.com> (haypo) +- Wladmir van der Laan <laanwj@gmail.com> (miathan6) +- Younes Manton <younes.m@gmail.com> (ymanton) + +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 (including the +next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. +*/ + + + +#define NV04_M2MF_DMA_NOTIFY 0x00000180 + +#define NV04_M2MF_DMA_BUFFER_IN 0x00000184 + +#define NV04_M2MF_DMA_BUFFER_OUT 0x00000188 + + +#define NV50_M2MF_LINEAR_IN 0x00000200 + +#define NV50_M2MF_TILING_MODE_IN 0x00000204 + +#define NV50_M2MF_TILING_PITCH_IN 0x00000208 + +#define NV50_M2MF_TILING_HEIGHT_IN 0x0000020c + +#define NV50_M2MF_TILING_DEPTH_IN 0x00000210 + +#define NV50_M2MF_TILING_POSITION_IN_Z 0x00000214 + +#define NV50_M2MF_TILING_POSITION_IN 0x00000218 +#define NV50_M2MF_TILING_POSITION_IN_X__MASK 0x0000ffff +#define NV50_M2MF_TILING_POSITION_IN_X__SHIFT 0 +#define NV50_M2MF_TILING_POSITION_IN_Y__MASK 0xffff0000 +#define NV50_M2MF_TILING_POSITION_IN_Y__SHIFT 16 + +#define NV50_M2MF_LINEAR_OUT 0x0000021c + +#define NV50_M2MF_TILING_MODE_OUT 0x00000220 + +#define NV50_M2MF_TILING_PITCH_OUT 0x00000224 + +#define NV50_M2MF_TILING_HEIGHT_OUT 0x00000228 + +#define NV50_M2MF_TILING_DEPTH_OUT 0x0000022c + +#define NV50_M2MF_TILING_POSITION_OUT_Z 0x00000230 + +#define NV50_M2MF_TILING_POSITION_OUT 0x00000234 +#define NV50_M2MF_TILING_POSITION_OUT_X__MASK 0x0000ffff +#define NV50_M2MF_TILING_POSITION_OUT_X__SHIFT 0 +#define NV50_M2MF_TILING_POSITION_OUT_Y__MASK 0xffff0000 +#define NV50_M2MF_TILING_POSITION_OUT_Y__SHIFT 16 + +#define NV50_M2MF_OFFSET_IN_HIGH 0x00000238 + +#define NV50_M2MF_OFFSET_OUT_HIGH 0x0000023c + +#define NV04_M2MF_OFFSET_IN 0x0000030c + +#define NV04_M2MF_OFFSET_OUT 0x00000310 + +#define NV04_M2MF_PITCH_IN 0x00000314 + +#define NV04_M2MF_PITCH_OUT 0x00000318 + +#define NV04_M2MF_LINE_LENGTH_IN 0x0000031c + +#define NV04_M2MF_LINE_COUNT 0x00000320 + +#define NV04_M2MF_FORMAT 0x00000324 +#define NV04_M2MF_FORMAT_INPUT_INC__MASK 0x000000ff +#define NV04_M2MF_FORMAT_INPUT_INC__SHIFT 0 +#define NV04_M2MF_FORMAT_INPUT_INC_1 0x00000001 +#define NV04_M2MF_FORMAT_INPUT_INC_2 0x00000002 +#define NV04_M2MF_FORMAT_INPUT_INC_4 0x00000004 +#define NV50_M2MF_FORMAT_INPUT_INC_8 0x00000008 +#define NV50_M2MF_FORMAT_INPUT_INC_16 0x00000010 +#define NV04_M2MF_FORMAT_OUTPUT_INC__MASK 0x0000ff00 +#define NV04_M2MF_FORMAT_OUTPUT_INC__SHIFT 8 +#define NV04_M2MF_FORMAT_OUTPUT_INC_1 0x00000100 +#define NV04_M2MF_FORMAT_OUTPUT_INC_2 0x00000200 +#define NV04_M2MF_FORMAT_OUTPUT_INC_4 0x00000400 +#define NV50_M2MF_FORMAT_OUTPUT_INC_8 0x00000800 +#define NV50_M2MF_FORMAT_OUTPUT_INC_16 0x00001000 + +#define NV04_M2MF_BUF_NOTIFY 0x00000328 + + +#endif /* NV_M2MF_XML */ diff --git a/src/mesa/drivers/dri/nouveau/nv_object.xml.h b/src/mesa/drivers/dri/nouveau/nv_object.xml.h new file mode 100644 index 0000000000..d5ed4bceb5 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv_object.xml.h @@ -0,0 +1,268 @@ +#ifndef NV_OBJECT_XML +#define NV_OBJECT_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <arthur.huillet@free.fr> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <koala_br@users.sourceforge.net> (koala_br) +- Carlos Martin <carlosmn@users.sf.net> (carlosmn) +- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr) +- Dawid Gajownik <gajownik@users.sf.net> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag) +- EdB <edb_@users.sf.net> (edb_) +- Erik Waling <erikwailing@users.sf.net> (erikwaling) +- Francisco Jerez <currojerez@riseup.net> (curro) +- imirkin <imirkin@users.sf.net> (imirkin) +- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome) +- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy) +- Laurent Carlier <lordheavym@gmail.com> (lordheavy) +- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1) +- Maarten Maathuis <madman2003@gmail.com> (stillunknown) +- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin) +- Mark Carey <mark.carey@gmail.com> (careym) +- Matthieu Castet <matthieu.castet@parrot.com> (mat-c) +- nvidiaman <nvidiaman@users.sf.net> (nvidiaman) +- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata) +- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen) +- Peter Popov <ironpeter@users.sf.net> (ironpeter) +- Richard Hughes <hughsient@users.sf.net> (hughsient) +- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <leroutier@users.sf.net> (leroutier) +- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu) +- sturmflut <sturmflut@users.sf.net> (sturmflut) +- Sylvain Munaut <tnt@246tNt.com> +- Victor Stinner <victor.stinner@haypocalc.com> (haypo) +- Wladmir van der Laan <laanwj@gmail.com> (miathan6) +- Younes Manton <younes.m@gmail.com> (ymanton) + +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 (including the +next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. +*/ + + +#define NV01_ROOT 0x00000001 +#define NV01_CONTEXT_DMA 0x00000002 +#define NV01_DEVICE 0x00000003 +#define NV01_TIMER 0x00000004 +#define NV01_NULL 0x00000030 +#define NV01_MEMORY_LOCAL_BANKED 0x0000003d +#define NV01_MAPPING_SYSTEM 0x0000003e +#define NV03_MEMORY_LOCAL_CURSOR 0x0000003f +#define NV01_MEMORY_LOCAL_LINEAR 0x00000040 +#define NV01_MAPPING_LOCAL 0x00000041 +#define NV03_VIDEO_LUT_CURSOR_DAC 0x00000046 +#define NV03_CHANNEL_PIO 0x0000006a +#define NV03_CHANNEL_DMA 0x0000006b +#define NV10_VIDEO_DISPLAY 0x0000007c +#define NV01_CONTEXT_BETA1 0x00000012 +#define NV04_BETA_SOLID 0x00000072 +#define NV01_CONTEXT_COLOR_KEY 0x00000017 +#define NV04_CONTEXT_COLOR_KEY 0x00000057 +#define NV01_CONTEXT_PATTERN 0x00000018 +#define NV01_CONTEXT_CLIP_RECTANGLE 0x00000019 +#define NV03_CONTEXT_ROP 0x00000043 +#define NV04_IMAGE_PATTERN 0x00000044 +#define NV01_RENDER_SOLID_LINE 0x0000001c +#define NV04_RENDER_SOLID_LINE 0x0000005c +#define NV30_RENDER_SOLID_LINE 0x0000035c +#define NV40_RENDER_SOLID_LINE 0x0000305c +#define NV01_RENDER_SOLID_TRIANGLE 0x0000001d +#define NV04_RENDER_SOLID_TRIANGLE 0x0000005d +#define NV01_RENDER_SOLID_RECTANGLE 0x0000001e +#define NV04_RENDER_SOLID_RECTANGLE 0x0000005e +#define NV01_IMAGE_BLIT 0x0000001f +#define NV04_IMAGE_BLIT 0x0000005f +#define NV11_IMAGE_BLIT 0x0000009f +#define NV01_IMAGE_FROM_CPU 0x00000021 +#define NV04_IMAGE_FROM_CPU 0x00000061 +#define NV05_IMAGE_FROM_CPU 0x00000065 +#define NV10_IMAGE_FROM_CPU 0x0000008a +#define NV30_IMAGE_FROM_CPU 0x0000038a +#define NV40_IMAGE_FROM_CPU 0x0000308a +#define NV03_STRETCHED_IMAGE_FROM_CPU 0x00000036 +#define NV04_STRETCHED_IMAGE_FROM_CPU 0x00000076 +#define NV05_STRETCHED_IMAGE_FROM_CPU 0x00000066 +#define NV30_STRETCHED_IMAGE_FROM_CPU 0x00000366 +#define NV40_STRETCHED_IMAGE_FROM_CPU 0x00003066 +#define NV03_SCALED_IMAGE_FROM_MEMORY 0x00000037 +#define NV04_SCALED_IMAGE_FROM_MEMORY 0x00000077 +#define NV05_SCALED_IMAGE_FROM_MEMORY 0x00000063 +#define NV10_SCALED_IMAGE_FROM_MEMORY 0x00000089 +#define NV30_SCALED_IMAGE_FROM_MEMORY 0x00000389 +#define NV40_SCALED_IMAGE_FROM_MEMORY 0x00003089 +#define NV50_SCALED_IMAGE_FROM_MEMORY 0x00005089 +#define NV04_DVD_SUBPICTURE 0x00000038 +#define NV10_DVD_SUBPICTURE 0x00000088 +#define NV03_GDI_RECTANGLE_TEXT 0x0000004b +#define NV04_GDI_RECTANGLE_TEXT 0x0000004a +#define NV04_SWIZZLED_SURFACE 0x00000052 +#define NV20_SWIZZLED_SURFACE 0x0000009e +#define NV30_SWIZZLED_SURFACE 0x0000039e +#define NV40_SWIZZLED_SURFACE 0x0000309e +#define NV03_CONTEXT_SURFACE_DST 0x00000058 +#define NV03_CONTEXT_SURFACE_SRC 0x00000059 +#define NV04_CONTEXT_SURFACES_2D 0x00000042 +#define NV10_CONTEXT_SURFACES_2D 0x00000062 +#define NV30_CONTEXT_SURFACES_2D 0x00000362 +#define NV40_CONTEXT_SURFACES_2D 0x00003062 +#define NV50_CONTEXT_SURFACES_2D 0x00005062 +#define NV04_INDEXED_IMAGE_FROM_CPU 0x00000060 +#define NV05_INDEXED_IMAGE_FROM_CPU 0x00000064 +#define NV30_INDEXED_IMAGE_FROM_CPU 0x00000364 +#define NV40_INDEXED_IMAGE_FROM_CPU 0x00003064 +#define NV10_TEXTURE_FROM_CPU 0x0000007b +#define NV30_TEXTURE_FROM_CPU 0x0000037b +#define NV40_TEXTURE_FROM_CPU 0x0000307b +#define NV04_M2MF 0x00000039 +#define NV50_M2MF 0x00005039 +#define NVC0_M2MF 0x00009039 +#define NV03_TEXTURED_TRIANGLE 0x00000048 +#define NV04_TEXTURED_TRIANGLE 0x00000054 +#define NV10_TEXTURED_TRIANGLE 0x00000094 +#define NV04_MULTITEX_TRIANGLE 0x00000055 +#define NV10_MULTITEX_TRIANGLE 0x00000095 +#define NV03_CONTEXT_SURFACE_COLOR 0x0000005a +#define NV03_CONTEXT_SURFACE_ZETA 0x0000005b +#define NV04_CONTEXT_SURFACES_3D 0x00000053 +#define NV10_CONTEXT_SURFACES_3D 0x00000093 +#define NV10_3D 0x00000056 +#define NV11_3D 0x00000096 +#define NV17_3D 0x00000099 +#define NV20_3D 0x00000097 +#define NV25_3D 0x00000597 +#define NV30_3D 0x00000397 +#define NV35_3D 0x00000497 +#define NV34_3D 0x00000697 +#define NV40_3D 0x00004097 +#define NV44_3D 0x00004497 +#define NV50_3D 0x00005097 +#define NV84_3D 0x00008297 +#define NVA0_3D 0x00008397 +#define NVA3_3D 0x00008597 +#define NVAF_3D 0x00008697 +#define NVC0_3D 0x00009097 +#define NV50_2D 0x0000502d +#define NVC0_2D 0x0000902d +#define NV50_COMPUTE 0x000050c0 +#define NVA3_COMPUTE 0x000085c0 +#define NVC0_COMPUTE 0x000090c0 +#define NV84_CRYPT 0x000074c1 +#define NV01_SUBCHAN__SIZE 0x00002000 +#define NV01_SUBCHAN 0x00000000 + +#define NV01_SUBCHAN_OBJECT 0x00000000 + + +#define NV84_SUBCHAN_QUERY_ADDRESS_HIGH 0x00000010 + +#define NV84_SUBCHAN_QUERY_ADDRESS_LOW 0x00000014 + +#define NV84_SUBCHAN_QUERY_COUNTER 0x00000018 + +#define NV84_SUBCHAN_QUERY_GET 0x0000001c + +#define NV84_SUBCHAN_QUERY_INTR 0x00000020 + +#define NV84_SUBCHAN_WRCACHE_FLUSH 0x00000024 + +#define NV10_SUBCHAN_REF_CNT 0x00000050 + + +#define NV11_SUBCHAN_DMA_SEMAPHORE 0x00000060 + +#define NV11_SUBCHAN_SEMAPHORE_OFFSET 0x00000064 + +#define NV11_SUBCHAN_SEMAPHORE_ACQUIRE 0x00000068 + +#define NV11_SUBCHAN_SEMAPHORE_RELEASE 0x0000006c + +#define NV40_SUBCHAN_YIELD 0x00000080 + +#define NV01_GRAPH 0x00000000 + +#define NV04_GRAPH_NOP 0x00000100 + +#define NV01_GRAPH_NOTIFY 0x00000104 +#define NV01_GRAPH_NOTIFY_WRITE 0x00000000 +#define NV01_GRAPH_NOTIFY_WRITE_AND_AWAKEN 0x00000001 + +#define NV50_GRAPH_WAIT_FOR_IDLE 0x00000110 + +#define NVA3_GRAPH_UNK0120 0x00000120 + +#define NVA3_GRAPH_UNK0124 0x00000124 + +#define NV40_GRAPH_PM_TRIGGER 0x00000140 + +#define NVC0_SUBCHAN__SIZE 0x00008000 +#define NVC0_SUBCHAN 0x00000000 + +#define NVC0_SUBCHAN_OBJECT 0x00000000 + + +#define NVC0_SUBCHAN_QUERY_ADDRESS_HIGH 0x00000010 + +#define NVC0_SUBCHAN_QUERY_ADDRESS_LOW 0x00000014 + +#define NVC0_SUBCHAN_QUERY_SEQUENCE 0x00000018 + +#define NVC0_SUBCHAN_QUERY_GET 0x0000001c + +#define NVC0_SUBCHAN_REF_CNT 0x00000050 + +#define NVC0_GRAPH 0x00000000 + +#define NVC0_GRAPH_NOP 0x00000100 + +#define NVC0_GRAPH_NOTIFY_ADDRESS_HIGH 0x00000104 + +#define NVC0_GRAPH_NOTIFY_ADDRESS_LOW 0x00000108 + +#define NVC0_GRAPH_NOTIFY 0x0000010c +#define NVC0_GRAPH_NOTIFY_WRITE 0x00000000 +#define NVC0_GRAPH_NOTIFY_WRITE_AND_AWAKEN 0x00000001 + +#define NVC0_GRAPH_SERIALIZE 0x00000110 + +#define NVC0_GRAPH_MACRO_UPLOAD_POS 0x00000114 + +#define NVC0_GRAPH_MACRO_UPLOAD_DATA 0x00000118 + +#define NVC0_GRAPH_MACRO_ID 0x0000011c + +#define NVC0_GRAPH_MACRO_POS 0x00000120 + + +#endif /* NV_OBJECT_XML */ diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 723e31401d..5abfc9dac5 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -71,6 +71,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define need_GL_NV_vertex_program #define need_GL_ARB_point_parameters #define need_GL_EXT_framebuffer_object +#define need_GL_OES_EGL_image + #include "main/remap_helper.h" #define DRIVER_DATE "20060602" @@ -137,6 +139,9 @@ static const struct dri_extension card_extensions[] = { "GL_ATI_texture_mirror_once", NULL }, { "GL_MESA_pack_invert", NULL }, { "GL_NV_blend_square", NULL }, +#if FEATURE_OES_EGL_image + { "GL_OES_EGL_image", GL_OES_EGL_image_functions }, +#endif { NULL, NULL } }; diff --git a/src/mesa/drivers/dri/r200/r200_swtcl.c b/src/mesa/drivers/dri/r200/r200_swtcl.c index 38864162ce..c56a49d5ad 100644 --- a/src/mesa/drivers/dri/r200/r200_swtcl.c +++ b/src/mesa/drivers/dri/r200/r200_swtcl.c @@ -319,10 +319,9 @@ static INLINE GLuint reduced_hw_prim( struct gl_context *ctx, GLuint prim) { switch (prim) { case GL_POINTS: - return (ctx->Point.PointSprite || - ((ctx->_TriangleCaps & (DD_POINT_SIZE | DD_POINT_ATTEN)) && - !(ctx->_TriangleCaps & (DD_POINT_SMOOTH)))) ? - R200_VF_PRIM_POINT_SPRITES : R200_VF_PRIM_POINTS; + return (((R200_CONTEXT(ctx))->radeon.radeonScreen->drmSupportsPointSprites && + !(ctx->_TriangleCaps & DD_POINT_SMOOTH)) ? + R200_VF_PRIM_POINT_SPRITES : R200_VF_PRIM_POINTS); case GL_LINES: /* fallthrough */ case GL_LINE_LOOP: diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c b/src/mesa/drivers/dri/r200/r200_tcl.c index 84db7c9d4e..7aed116f0b 100644 --- a/src/mesa/drivers/dri/r200/r200_tcl.c +++ b/src/mesa/drivers/dri/r200/r200_tcl.c @@ -68,9 +68,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define HAVE_ELTS 1 -#define HW_POINTS ((ctx->Point.PointSprite || \ - ((ctx->_TriangleCaps & (DD_POINT_SIZE | DD_POINT_ATTEN)) && \ - !(ctx->_TriangleCaps & (DD_POINT_SMOOTH)))) ? \ +#define HW_POINTS (((R200_CONTEXT(ctx))->radeon.radeonScreen->drmSupportsPointSprites && \ + !(ctx->_TriangleCaps & DD_POINT_SMOOTH)) ? \ R200_VF_PRIM_POINT_SPRITES : R200_VF_PRIM_POINTS) #define HW_LINES R200_VF_PRIM_LINES #define HW_LINE_LOOP 0 diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c index 5207c2901a..064324731b 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.c +++ b/src/mesa/drivers/dri/r200/r200_tex.c @@ -537,6 +537,10 @@ void r200InitTextureFuncs( radeonContextPtr radeon, struct dd_function_table *fu functions->MapTexture = radeonMapTexture; functions->UnmapTexture = radeonUnmapTexture; +#if FEATURE_OES_EGL_image + functions->EGLImageTargetTexture2D = radeon_image_target_texture_2d; +#endif + driInitTextureFormats(); } diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c b/src/mesa/drivers/dri/r200/r200_texstate.c index 690bec640b..24fb031ecb 100644 --- a/src/mesa/drivers/dri/r200/r200_texstate.c +++ b/src/mesa/drivers/dri/r200/r200_texstate.c @@ -778,6 +778,7 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format radeonTexObjPtr t; uint32_t pitch_val; uint32_t internalFormat, type, format; + gl_format texFormat; type = GL_BGRA; format = GL_UNSIGNED_BYTE; @@ -817,10 +818,6 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format radeon_miptree_unreference(&t->mt); radeon_miptree_unreference(&rImage->mt); - _mesa_init_teximage_fields(radeon->glCtx, target, texImage, - rb->base.Width, rb->base.Height, 1, 0, rb->cpp); - texImage->RowStride = rb->pitch / rb->cpp; - rImage->bo = rb->bo; radeon_bo_ref(rImage->bo); t->bo = rb->bo; @@ -832,22 +829,35 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format pitch_val = rb->pitch; switch (rb->cpp) { case 4: - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) + if (texture_format == __DRI_TEXTURE_FORMAT_RGB) { + texFormat = MESA_FORMAT_RGB888; t->pp_txformat = tx_table_le[MESA_FORMAT_RGB888].format; - else + } + else { + texFormat = MESA_FORMAT_ARGB8888; t->pp_txformat = tx_table_le[MESA_FORMAT_ARGB8888].format; + } t->pp_txfilter |= tx_table_le[MESA_FORMAT_ARGB8888].filter; break; case 3: default: + texFormat = MESA_FORMAT_RGB888; t->pp_txformat = tx_table_le[MESA_FORMAT_RGB888].format; t->pp_txfilter |= tx_table_le[MESA_FORMAT_RGB888].filter; break; case 2: + texFormat = MESA_FORMAT_RGB565; t->pp_txformat = tx_table_le[MESA_FORMAT_RGB565].format; t->pp_txfilter |= tx_table_le[MESA_FORMAT_RGB565].filter; break; } + + _mesa_init_teximage_fields(radeon->glCtx, target, texImage, + rb->base.Width, rb->base.Height, 1, 0, + rb->cpp, texFormat); + texImage->RowStride = rb->pitch / rb->cpp; + + t->pp_txsize = ((rb->base.Width - 1) << RADEON_TEX_USIZE_SHIFT) | ((rb->base.Height - 1) << RADEON_TEX_VSIZE_SHIFT); t->pp_txformat |= R200_TXFORMAT_NON_POWER2; diff --git a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c index 8be32ea91f..1db8678e89 100644 --- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c @@ -76,6 +76,9 @@ static void use_temporary(struct r300_fragment_program_code *code, unsigned int static unsigned int use_source(struct r300_fragment_program_code* code, struct rc_pair_instruction_source src) { + if (!src.Used) + return 0; + if (src.File == RC_FILE_CONSTANT) { return src.Index | (1 << 5); } else if (src.File == RC_FILE_TEMPORARY) { diff --git a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c index 2d28b06539..05d3da8a10 100644 --- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c +++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c @@ -94,6 +94,7 @@ static const struct swizzle_data* lookup_native_swizzle(unsigned int swizzle) */ static int r300_swizzle_is_native(rc_opcode opcode, struct rc_src_register reg) { + const struct swizzle_data* sd; unsigned int relevant; int j; @@ -127,7 +128,8 @@ static int r300_swizzle_is_native(rc_opcode opcode, struct rc_src_register reg) if ((reg.Negate & relevant) && ((reg.Negate & relevant) != relevant)) return 0; - if (!lookup_native_swizzle(reg.Swizzle)) + sd = lookup_native_swizzle(reg.Swizzle); + if (!sd || (reg.File == RC_FILE_PRESUB && sd->srcp_stride == 0)) return 0; return 1; @@ -201,7 +203,7 @@ unsigned int r300FPTranslateRGBSwizzle(unsigned int src, unsigned int swizzle) { const struct swizzle_data* sd = lookup_native_swizzle(swizzle); - if (!sd) { + if (!sd || (src == RC_PAIR_PRESUB_SRC && sd->srcp_stride == 0)) { fprintf(stderr, "Not a native swizzle: %08x\n", swizzle); return 0; } diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c index 2f130198d3..7b9c316794 100644 --- a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c +++ b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c @@ -137,7 +137,7 @@ void r3xx_compile_fragment_program(struct r300_fragment_program_compiler* c) /* This pass makes it easier for the scheduler to group TEX * instructions and reduces the chances of creating too * many texture indirections.*/ - {"register rename", 1, !is_r500, rc_rename_regs, NULL}, + {"register rename", 1, !is_r500 || opt, rc_rename_regs, NULL}, {"pair translate", 1, 1, rc_pair_translate, NULL}, {"pair scheduling", 1, 1, rc_pair_schedule, NULL}, {"register allocation", 1, opt, rc_pair_regalloc, NULL}, diff --git a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c index 6f101c68eb..5da82d90f6 100644 --- a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c @@ -45,9 +45,6 @@ #include "radeon_program_pair.h" -#define MAX_BRANCH_DEPTH_FULL 32 -#define MAX_BRANCH_DEPTH_PARTIAL 4 - #define PROG_CODE \ struct r500_fragment_program_code *code = &c->code->code.r500 @@ -200,6 +197,9 @@ static void use_temporary(struct r500_fragment_program_code* code, unsigned int static unsigned int use_source(struct r500_fragment_program_code* code, struct rc_pair_instruction_source src) { + if (!src.Used) + return 0; + if (src.File == RC_FILE_CONSTANT) { return src.Index | 0x100; } else if (src.File == RC_FILE_TEMPORARY) { @@ -506,7 +506,7 @@ static void emit_flowcontrol(struct emit_state * s, struct rc_instruction * inst break; } case RC_OPCODE_IF: - if ( s->CurrentBranchDepth >= MAX_BRANCH_DEPTH_FULL) { + if ( s->CurrentBranchDepth >= R500_PFS_MAX_BRANCH_DEPTH_FULL) { rc_error(s->C, "Branch depth exceeds hardware limit"); return; } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_code.h b/src/mesa/drivers/dri/r300/compiler/radeon_code.h index cfb6df2cd7..b69e81698a 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_code.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_code.h @@ -34,6 +34,8 @@ #define R500_PFS_MAX_INST 512 #define R500_PFS_NUM_TEMP_REGS 128 #define R500_PFS_NUM_CONST_REGS 256 +#define R500_PFS_MAX_BRANCH_DEPTH_FULL 32 +#define R500_PFS_MAX_BRANCH_DEPTH_PARTIAL 4 #define STATE_R300_WINDOW_DIMENSION (STATE_INTERNAL_DRIVER+0) diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c index 97f4c75849..2b8d284ce9 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c @@ -31,6 +31,8 @@ #include "radeon_compiler_util.h" +#include "radeon_compiler.h" +#include "radeon_dataflow.h" /** */ unsigned int rc_swizzle_to_writemask(unsigned int swz) @@ -59,3 +61,123 @@ unsigned int rc_src_reads_dst_mask( } return dst_mask & rc_swizzle_to_writemask(src_swz); } + +unsigned int rc_source_type_swz(unsigned int swizzle, unsigned int channels) +{ + unsigned int chan; + unsigned int swz = RC_SWIZZLE_UNUSED; + unsigned int ret = RC_SOURCE_NONE; + + for(chan = 0; chan < channels; chan++) { + swz = GET_SWZ(swizzle, chan); + if (swz == RC_SWIZZLE_W) { + ret |= RC_SOURCE_ALPHA; + } else if (swz == RC_SWIZZLE_X || swz == RC_SWIZZLE_Y + || swz == RC_SWIZZLE_Z) { + ret |= RC_SOURCE_RGB; + } + } + return ret; +} + +unsigned int rc_source_type_mask(unsigned int mask) +{ + unsigned int ret = RC_SOURCE_NONE; + + if (mask & RC_MASK_XYZ) + ret |= RC_SOURCE_RGB; + + if (mask & RC_MASK_W) + ret |= RC_SOURCE_ALPHA; + + return ret; +} + +struct can_use_presub_data { + struct rc_src_register RemoveSrcs[3]; + unsigned int RGBCount; + unsigned int AlphaCount; +}; + +static void can_use_presub_read_cb( + void * userdata, + struct rc_instruction * inst, + rc_register_file file, + unsigned int index, + unsigned int mask) +{ + struct can_use_presub_data * d = userdata; + unsigned int src_type = rc_source_type_mask(mask); + unsigned int i; + + if (file == RC_FILE_NONE) + return; + + for(i = 0; i < 3; i++) { + if (d->RemoveSrcs[i].File == file + && d->RemoveSrcs[i].Index == index) { + src_type &= + ~rc_source_type_swz(d->RemoveSrcs[i].Swizzle, 4); + } + } + + if (src_type & RC_SOURCE_RGB) + d->RGBCount++; + + if (src_type & RC_SOURCE_ALPHA) + d->AlphaCount++; +} + +unsigned int rc_inst_can_use_presub( + struct rc_instruction * inst, + rc_presubtract_op presub_op, + unsigned int presub_writemask, + struct rc_src_register replace_reg, + struct rc_src_register presub_src0, + struct rc_src_register presub_src1) +{ + struct can_use_presub_data d; + unsigned int num_presub_srcs; + unsigned int presub_src_type = rc_source_type_mask(presub_writemask); + const struct rc_opcode_info * info = + rc_get_opcode_info(inst->U.I.Opcode); + + if (presub_op == RC_PRESUB_NONE) { + return 1; + } + + if (info->HasTexture) { + return 0; + } + + /* We can't use more than one presubtract value in an + * instruction, unless the two prsubtract operations + * are the same and read from the same registers. + * XXX For now we will limit instructions to only one presubtract + * value.*/ + if (inst->U.I.PreSub.Opcode != RC_PRESUB_NONE) { + return 0; + } + + memset(&d, 0, sizeof(d)); + d.RemoveSrcs[0] = replace_reg; + d.RemoveSrcs[1] = presub_src0; + d.RemoveSrcs[2] = presub_src1; + + rc_for_all_reads_mask(inst, can_use_presub_read_cb, &d); + + num_presub_srcs = rc_presubtract_src_reg_count(presub_op); + + if ((presub_src_type & RC_SOURCE_RGB) + && d.RGBCount + num_presub_srcs > 3) { + return 0; + } + + if ((presub_src_type & RC_SOURCE_ALPHA) + && d.AlphaCount + num_presub_srcs > 3) { + return 0; + } + + return 1; +} + diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h index 1a14e7cb0e..e50dfbd4fb 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h @@ -3,6 +3,9 @@ #ifndef RADEON_PROGRAM_UTIL_H #define RADEON_PROGRAM_UTIL_H +struct rc_instruction; +struct rc_src_register; + unsigned int rc_swizzle_to_writemask(unsigned int swz); unsigned int rc_src_reads_dst_mask( @@ -13,4 +16,16 @@ unsigned int rc_src_reads_dst_mask( unsigned int dst_idx, unsigned int dst_mask); +unsigned int rc_source_type_swz(unsigned int swizzle, unsigned int channels); + +unsigned int rc_source_type_mask(unsigned int mask); + +unsigned int rc_inst_can_use_presub( + struct rc_instruction * inst, + rc_presubtract_op presub_op, + unsigned int presub_writemask, + struct rc_src_register replace_reg, + struct rc_src_register presub_src0, + struct rc_src_register presub_src1); + #endif /* RADEON_PROGRAM_UTIL_H */ diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c index 5927498818..9df07edf2b 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c @@ -139,7 +139,46 @@ static void pair_sub_for_all_args( const struct rc_opcode_info * info = rc_get_opcode_info(sub->Opcode); for(i = 0; i < info->NumSrcRegs; i++) { - cb(userdata, fullinst, &sub->Arg[i]); + unsigned int src_type; + unsigned int channels = 0; + if (&fullinst->U.P.RGB == sub) + channels = 3; + else if (&fullinst->U.P.Alpha == sub) + channels = 1; + + assert(channels > 0); + src_type = rc_source_type_swz(sub->Arg[i].Swizzle, channels); + + if (src_type == RC_SOURCE_NONE) + continue; + + if (sub->Arg[i].Source == RC_PAIR_PRESUB_SRC) { + unsigned int presub_type; + unsigned int presub_src_count; + struct rc_pair_instruction_source * src_array; + unsigned int j; + if (src_type & RC_SOURCE_RGB) { + presub_type = fullinst-> + U.P.RGB.Src[RC_PAIR_PRESUB_SRC].Index; + src_array = fullinst->U.P.RGB.Src; + } else { + presub_type = fullinst-> + U.P.Alpha.Src[RC_PAIR_PRESUB_SRC].Index; + src_array = fullinst->U.P.Alpha.Src; + } + presub_src_count + = rc_presubtract_src_reg_count(presub_type); + for(j = 0; j < presub_src_count; j++) { + cb(userdata, fullinst, &sub->Arg[i], + &src_array[j]); + } + } else { + struct rc_pair_instruction_source * src = + rc_pair_get_src(&fullinst->U.P, &sub->Arg[i]); + if (src) { + cb(userdata, fullinst, &sub->Arg[i], src); + } + } } } @@ -430,12 +469,29 @@ static rc_opcode get_flow_control_inst(struct rc_instruction * inst) } +struct branch_write_mask { + unsigned int IfWriteMask:4; + unsigned int ElseWriteMask:4; + unsigned int HasElse:1; +}; + +union get_readers_read_cb { + rc_read_src_fn I; + rc_pair_read_arg_fn P; +}; + struct get_readers_callback_data { struct radeon_compiler * C; struct rc_reader_data * ReaderData; - rc_read_src_fn ReadCB; + rc_read_src_fn ReadNormalCB; + rc_pair_read_arg_fn ReadPairCB; rc_read_write_mask_fn WriteCB; + rc_register_file DstFile; + unsigned int DstIndex; + unsigned int DstMask; unsigned int AliveWriteMask; + /* For convenience, this is indexed starting at 1 */ + struct branch_write_mask BranchMasks[R500_PFS_MAX_BRANCH_DEPTH_FULL + 1]; }; static void add_reader( @@ -443,7 +499,7 @@ static void add_reader( struct rc_reader_data * data, struct rc_instruction * inst, unsigned int mask, - struct rc_src_register * src) + void * arg_or_src) { struct rc_reader * new; memory_pool_array_reserve(pool, struct rc_reader, data->Readers, @@ -451,7 +507,74 @@ static void add_reader( new = &data->Readers[data->ReaderCount++]; new->Inst = inst; new->WriteMask = mask; - new->Src = src; + if (inst->Type == RC_INSTRUCTION_NORMAL) { + new->U.Src = arg_or_src; + } else { + new->U.Arg = arg_or_src; + } +} + +static unsigned int get_readers_read_callback( + struct get_readers_callback_data * cb_data, + unsigned int has_rel_addr, + rc_register_file file, + unsigned int index, + unsigned int swizzle) +{ + unsigned int shared_mask, read_mask; + + if (has_rel_addr) { + cb_data->ReaderData->Abort = 1; + return RC_MASK_NONE; + } + + shared_mask = rc_src_reads_dst_mask(file, index, swizzle, + cb_data->DstFile, cb_data->DstIndex, cb_data->AliveWriteMask); + + if (shared_mask == RC_MASK_NONE) + return shared_mask; + + /* If we make it this far, it means that this source reads from the + * same register written to by d->ReaderData->Writer. */ + + read_mask = rc_swizzle_to_writemask(swizzle); + if (cb_data->ReaderData->AbortOnRead & read_mask) { + cb_data->ReaderData->Abort = 1; + return shared_mask; + } + + /* XXX The behavior in this case should be configurable. */ + if ((read_mask & cb_data->AliveWriteMask) != read_mask) { + cb_data->ReaderData->Abort = 1; + return shared_mask; + } + + return shared_mask; +} + +static void get_readers_pair_read_callback( + void * userdata, + struct rc_instruction * inst, + struct rc_pair_instruction_arg * arg, + struct rc_pair_instruction_source * src) +{ + unsigned int shared_mask; + struct get_readers_callback_data * d = userdata; + + shared_mask = get_readers_read_callback(d, + 0 /*Pair Instructions don't use RelAddr*/, + src->File, src->Index, arg->Swizzle); + + if (shared_mask == RC_MASK_NONE) + return; + + if (d->ReadPairCB) + d->ReadPairCB(d->ReaderData, inst, arg, src); + + if (d->ReaderData->Abort) + return; + + add_reader(&d->C->Pool, d->ReaderData, inst, shared_mask, arg); } /** @@ -464,36 +587,18 @@ static void get_readers_normal_read_callback( struct rc_src_register * src) { struct get_readers_callback_data * d = userdata; - unsigned int read_mask; - - if (src->RelAddr) - d->ReaderData->Abort = 1; + unsigned int shared_mask; - unsigned int shared_mask = rc_src_reads_dst_mask(src->File, src->Index, - src->Swizzle, - d->ReaderData->Writer->U.I.DstReg.File, - d->ReaderData->Writer->U.I.DstReg.Index, - d->AliveWriteMask); + shared_mask = get_readers_read_callback(d, + src->RelAddr, src->File, src->Index, src->Swizzle); if (shared_mask == RC_MASK_NONE) return; + /* The callback function could potentially clear d->ReaderData->Abort, + * so we need to call it before we return. */ + if (d->ReadNormalCB) + d->ReadNormalCB(d->ReaderData, inst, src); - /* If we make it this far, it means that this source reads from the - * same register written to by d->ReaderData->Writer. */ - - if (d->ReaderData->AbortOnRead) { - d->ReaderData->Abort = 1; - return; - } - - read_mask = rc_swizzle_to_writemask(src->Swizzle); - /* XXX The behavior in this case should be configurable. */ - if ((read_mask & d->AliveWriteMask) != read_mask) { - d->ReaderData->Abort = 1; - return; - } - - d->ReadCB(d->ReaderData, inst, src); if (d->ReaderData->Abort) return; @@ -514,29 +619,132 @@ static void get_readers_write_callback( { struct get_readers_callback_data * d = userdata; - if (index == d->ReaderData->Writer->U.I.DstReg.Index - && file == d->ReaderData->Writer->U.I.DstReg.File) { - unsigned int shared_mask = mask - & d->ReaderData->Writer->U.I.DstReg.WriteMask; - if (d->ReaderData->InElse) { - if (shared_mask & d->AliveWriteMask) { - /* We set AbortOnRead here because the - * destination register of d->ReaderData->Writer - * is written to in both the IF and the - * ELSE block of this IF/ELSE statement. - * This means that readers of this - * destination register that follow this IF/ELSE - * statement use the value of different - * instructions depending on the control flow - * decisions made by the program. */ - d->ReaderData->AbortOnRead = 1; + if (index == d->DstIndex && file == d->DstFile) { + unsigned int shared_mask = mask & d->DstMask; + d->ReaderData->AbortOnRead &= ~shared_mask; + d->AliveWriteMask &= ~shared_mask; + } + + if(d->WriteCB) + d->WriteCB(d->ReaderData, inst, file, index, mask); +} + +static void get_readers_for_single_write( + void * userdata, + struct rc_instruction * writer, + rc_register_file dst_file, + unsigned int dst_index, + unsigned int dst_mask) +{ + struct rc_instruction * tmp; + unsigned int branch_depth = 0; + struct get_readers_callback_data * d = userdata; + + d->ReaderData->Writer = writer; + d->ReaderData->AbortOnRead = 0; + d->ReaderData->InElse = 0; + d->DstFile = dst_file; + d->DstIndex = dst_index; + d->DstMask = dst_mask; + d->AliveWriteMask = dst_mask; + memset(d->BranchMasks, 0, sizeof(d->BranchMasks)); + + if (!dst_mask) + return; + + for(tmp = writer->Next; tmp != &d->C->Program.Instructions; + tmp = tmp->Next){ + rc_opcode opcode = get_flow_control_inst(tmp); + switch(opcode) { + case RC_OPCODE_BGNLOOP: + /* XXX We can do better when we see a BGNLOOP if we + * add a flag called AbortOnWrite to struct + * rc_reader_data and leave it set until the next + * ENDLOOP. */ + case RC_OPCODE_ENDLOOP: + /* XXX We can do better when we see an ENDLOOP by + * searching backwards from writer and looking for + * readers of writer's destination index. If we find a + * reader before we get to the BGNLOOP, we must abort + * unless there is another writer between that reader + * and the BGNLOOP. */ + case RC_OPCODE_BRK: + case RC_OPCODE_CONT: + d->ReaderData->Abort = 1; + return; + case RC_OPCODE_IF: + branch_depth++; + if (branch_depth > R500_PFS_MAX_BRANCH_DEPTH_FULL) { + d->ReaderData->Abort = 1; + return; + } + d->BranchMasks[branch_depth].IfWriteMask = + d->AliveWriteMask; + break; + case RC_OPCODE_ELSE: + if (branch_depth == 0) { + d->ReaderData->InElse = 1; + } else { + unsigned int temp_mask = d->AliveWriteMask; + d->AliveWriteMask = + d->BranchMasks[branch_depth].IfWriteMask; + d->BranchMasks[branch_depth].ElseWriteMask = + temp_mask; + d->BranchMasks[branch_depth].HasElse = 1; + } + break; + case RC_OPCODE_ENDIF: + if (branch_depth == 0) { + d->ReaderData->AbortOnRead = d->AliveWriteMask; + d->ReaderData->InElse = 0; + } + else { + struct branch_write_mask * masks = + &d->BranchMasks[branch_depth]; + + if (masks->HasElse) { + d->ReaderData->AbortOnRead |= + masks->IfWriteMask + & ~masks->ElseWriteMask; + d->AliveWriteMask = masks->IfWriteMask + ^ ((masks->IfWriteMask ^ + masks->ElseWriteMask) + & (masks->IfWriteMask + ^ d->AliveWriteMask)); + } else { + d->ReaderData->AbortOnRead |= + masks->IfWriteMask + & ~d->AliveWriteMask; + d->AliveWriteMask = masks->IfWriteMask; + + } + memset(masks, 0, + sizeof(struct branch_write_mask)); + branch_depth--; } + break; + default: + break; + } + + if (d->ReaderData->InElse) + continue; + + if (tmp->Type == RC_INSTRUCTION_NORMAL) { + rc_for_all_reads_src(tmp, + get_readers_normal_read_callback, d); } else { - d->AliveWriteMask &= ~shared_mask; + rc_pair_for_all_reads_arg(tmp, + get_readers_pair_read_callback, d); } - } + rc_for_all_writes_mask(tmp, get_readers_write_callback, d); - d->WriteCB(d->ReaderData, inst, file, index, mask); + if (d->ReaderData->Abort) + return; + + if (branch_depth == 0 && !d->AliveWriteMask) + return; + } } /** @@ -577,80 +785,26 @@ static void get_readers_write_callback( * @param write_cb This function will be called for every instruction after * writer. */ -void rc_get_readers_normal( +void rc_get_readers( struct radeon_compiler * c, struct rc_instruction * writer, struct rc_reader_data * data, - rc_read_src_fn read_cb, + rc_read_src_fn read_normal_cb, + rc_pair_read_arg_fn read_pair_cb, rc_read_write_mask_fn write_cb) { - struct rc_instruction * tmp; struct get_readers_callback_data d; - unsigned int branch_depth = 0; - data->Writer = writer; data->Abort = 0; - data->AbortOnRead = 0; - data->InElse = 0; data->ReaderCount = 0; data->ReadersReserved = 0; data->Readers = NULL; d.C = c; - d.AliveWriteMask = writer->U.I.DstReg.WriteMask; d.ReaderData = data; - d.ReadCB = read_cb; + d.ReadNormalCB = read_normal_cb; + d.ReadPairCB = read_pair_cb; d.WriteCB = write_cb; - if (!writer->U.I.DstReg.WriteMask) - return; - - for(tmp = writer->Next; tmp != &c->Program.Instructions; - tmp = tmp->Next){ - rc_opcode opcode = get_flow_control_inst(tmp); - switch(opcode) { - case RC_OPCODE_BGNLOOP: - /* XXX We can do better when we see a BGNLOOP if we - * add a flag called AbortOnWrite to struct - * rc_reader_data and leave it set until the next - * ENDLOOP. */ - case RC_OPCODE_ENDLOOP: - /* XXX We can do better when we see an ENDLOOP by - * searching backwards from writer and looking for - * readers of writer's destination index. If we find a - * reader before we get to the BGNLOOP, we must abort - * unless there is another writer between that reader - * and the BGNLOOP. */ - data->Abort = 1; - return; - case RC_OPCODE_IF: - branch_depth++; - break; - case RC_OPCODE_ELSE: - if (branch_depth == 0) - data->InElse = 1; - break; - case RC_OPCODE_ENDIF: - if (branch_depth == 0) { - data->AbortOnRead = 1; - data->InElse = 0; - } - else { - branch_depth--; - } - break; - default: - break; - } - - if (!data->InElse) - rc_for_all_reads_src(tmp, get_readers_normal_read_callback, &d); - rc_for_all_writes_mask(tmp, get_readers_write_callback, &d); - - if (data->Abort) - return; - - if (!d.AliveWriteMask) - return; - } + rc_for_all_writes_mask(writer, get_readers_for_single_write, &d); } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h index 7de6b98f76..ef971c5b23 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h @@ -36,6 +36,7 @@ struct rc_instruction; struct rc_swizzle_caps; struct rc_src_register; struct rc_pair_instruction_arg; +struct rc_pair_instruction_source; struct rc_compiler; @@ -59,7 +60,8 @@ void rc_for_all_reads_src(struct rc_instruction * inst, rc_read_src_fn cb, void * userdata); typedef void (*rc_pair_read_arg_fn)(void * userdata, - struct rc_instruction * inst, struct rc_pair_instruction_arg * arg); + struct rc_instruction * inst, struct rc_pair_instruction_arg * arg, + struct rc_pair_instruction_source * src); void rc_pair_for_all_reads_arg(struct rc_instruction * inst, rc_pair_read_arg_fn cb, void * userdata); @@ -71,7 +73,10 @@ void rc_remap_registers(struct rc_instruction * inst, rc_remap_register_fn cb, v struct rc_reader { struct rc_instruction * Inst; unsigned int WriteMask; - struct rc_src_register * Src; + union { + struct rc_src_register * Src; + struct rc_pair_instruction_arg * Arg; + } U; }; struct rc_reader_data { @@ -87,14 +92,13 @@ struct rc_reader_data { void * CbData; }; -void rc_get_readers_normal( +void rc_get_readers( struct radeon_compiler * c, - struct rc_instruction * inst, + struct rc_instruction * writer, struct rc_reader_data * data, - /*XXX: These should be their own function types. */ - rc_read_src_fn read_cb, + rc_read_src_fn read_normal_cb, + rc_pair_read_arg_fn read_pair_cb, rc_read_write_mask_fn write_cb); - /** * Compiler passes based on dataflow analysis. */ diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c index 4d9120ffd0..27b10ffbd6 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c @@ -32,15 +32,14 @@ #include "radeon_compiler_util.h" #include "radeon_swizzle.h" -struct peephole_state { - struct rc_instruction * Inst; - /** Stores a bitmask of the components that are still "alive" (i.e. - * they have not been written to since Inst was executed.) - */ - unsigned int WriteMask; +struct src_clobbered_reads_cb_data { + rc_register_file File; + unsigned int Index; + unsigned int Mask; + struct rc_reader_data * ReaderData; }; -typedef void (*rc_presub_replace_fn)(struct peephole_state *, +typedef void (*rc_presub_replace_fn)(struct rc_instruction *, struct rc_instruction *, unsigned int); @@ -67,38 +66,18 @@ static struct rc_src_register chain_srcregs(struct rc_src_register outer, struct return combine; } -struct copy_propagate_state { - struct radeon_compiler * C; - struct rc_instruction * Mov; - unsigned int Conflict:1; - - /** Whether Mov's source has been clobbered */ - unsigned int SourceClobbered:1; - - /** Which components of Mov's destination register are still from that Mov? */ - unsigned int MovMask:4; - - /** Which components of Mov's destination register are clearly *not* from that Mov */ - unsigned int DefinedMask:4; - - /** Which components of Mov's source register are sourced */ - unsigned int SourcedMask:4; - - /** Branch depth beyond Mov; negative value indicates we left the Mov's block */ - int BranchDepth; -}; - static void copy_propagate_scan_read(void * data, struct rc_instruction * inst, struct rc_src_register * src) { rc_register_file file = src->File; struct rc_reader_data * reader_data = data; - const struct rc_opcode_info * info = rc_get_opcode_info(inst->U.I.Opcode); - /* It is possible to do copy propigation in this situation, - * just not right now, see peephole_add_presub_inv() */ - if (reader_data->Writer->U.I.PreSub.Opcode != RC_PRESUB_NONE && - (info->NumSrcRegs > 2 || info->HasTexture)) { + if(!rc_inst_can_use_presub(inst, + reader_data->Writer->U.I.PreSub.Opcode, + rc_swizzle_to_writemask(src->Swizzle), + *src, + reader_data->Writer->U.I.PreSub.SrcReg[0], + reader_data->Writer->U.I.PreSub.SrcReg[1])) { reader_data->Abort = 1; return; } @@ -123,23 +102,44 @@ static void copy_propagate_scan_read(void * data, struct rc_instruction * inst, } } -static void copy_propagate_scan_write(void * data, struct rc_instruction * inst, - rc_register_file file, unsigned int index, unsigned int mask) +static void src_clobbered_reads_cb( + void * data, + struct rc_instruction * inst, + struct rc_src_register * src) { - struct rc_reader_data * reader_data = data; - struct copy_propagate_state * s = reader_data->CbData; + struct src_clobbered_reads_cb_data * sc_data = data; + + if (src->File == sc_data->File + && src->Index == sc_data->Index + && (rc_swizzle_to_writemask(src->Swizzle) & sc_data->Mask)) { - if (file == reader_data->Writer->U.I.SrcReg[0].File && index == reader_data->Writer->U.I.SrcReg[0].Index) { - if (mask & s->SourcedMask) - reader_data->AbortOnRead = 1; - } else if (s->Mov->U.I.SrcReg[0].RelAddr && file == RC_FILE_ADDRESS) { - reader_data->AbortOnRead = 1; + sc_data->ReaderData->AbortOnRead = RC_MASK_XYZW; } + + if (src->RelAddr && sc_data->File == RC_FILE_ADDRESS) { + sc_data->ReaderData->AbortOnRead = RC_MASK_XYZW; + } +} + +static void is_src_clobbered_scan_write( + void * data, + struct rc_instruction * inst, + rc_register_file file, + unsigned int index, + unsigned int mask) +{ + struct src_clobbered_reads_cb_data sc_data; + struct rc_reader_data * reader_data = data; + sc_data.File = file; + sc_data.Index = index; + sc_data.Mask = mask; + sc_data.ReaderData = reader_data; + rc_for_all_reads_src(reader_data->Writer, + src_clobbered_reads_cb, &sc_data); } static void copy_propagate(struct radeon_compiler * c, struct rc_instruction * inst_mov) { - struct copy_propagate_state s; struct rc_reader_data reader_data; unsigned int i; @@ -149,22 +149,10 @@ static void copy_propagate(struct radeon_compiler * c, struct rc_instruction * i inst_mov->U.I.SaturateMode) return; - memset(&s, 0, sizeof(s)); - s.C = c; - s.Mov = inst_mov; - s.MovMask = inst_mov->U.I.DstReg.WriteMask; - s.DefinedMask = RC_MASK_XYZW & ~s.MovMask; - - reader_data.CbData = &s; - - for(unsigned int chan = 0; chan < 4; ++chan) { - unsigned int swz = GET_SWZ(inst_mov->U.I.SrcReg[0].Swizzle, chan); - s.SourcedMask |= (1 << swz) & RC_MASK_XYZW; - } - /* Get a list of all the readers of this MOV instruction. */ - rc_get_readers_normal(c, inst_mov, &reader_data, - copy_propagate_scan_read, copy_propagate_scan_write); + rc_get_readers(c, inst_mov, &reader_data, + copy_propagate_scan_read, NULL, + is_src_clobbered_scan_write); if (reader_data.Abort || reader_data.ReaderCount == 0) return; @@ -172,10 +160,10 @@ static void copy_propagate(struct radeon_compiler * c, struct rc_instruction * i /* Propagate the MOV instruction. */ for (i = 0; i < reader_data.ReaderCount; i++) { struct rc_instruction * inst = reader_data.Readers[i].Inst; - *reader_data.Readers[i].Src = chain_srcregs(*reader_data.Readers[i].Src, s.Mov->U.I.SrcReg[0]); + *reader_data.Readers[i].U.Src = chain_srcregs(*reader_data.Readers[i].U.Src, inst_mov->U.I.SrcReg[0]); - if (s.Mov->U.I.SrcReg[0].File == RC_FILE_PRESUB) - inst->U.I.PreSub = s.Mov->U.I.PreSub; + if (inst_mov->U.I.SrcReg[0].File == RC_FILE_PRESUB) + inst->U.I.PreSub = inst_mov->U.I.PreSub; } /* Finally, remove the original MOV instruction */ @@ -222,8 +210,8 @@ static int is_src_uniform_constant(struct rc_src_register src, static void constant_folding_mad(struct rc_instruction * inst) { - rc_swizzle swz; - unsigned int negate; + rc_swizzle swz = 0; + unsigned int negate= 0; if (is_src_uniform_constant(inst->U.I.SrcReg[2], &swz, &negate)) { if (swz == RC_SWIZZLE_ZERO) { @@ -263,8 +251,8 @@ static void constant_folding_mad(struct rc_instruction * inst) static void constant_folding_mul(struct rc_instruction * inst) { - rc_swizzle swz; - unsigned int negate; + rc_swizzle swz = 0; + unsigned int negate = 0; if (is_src_uniform_constant(inst->U.I.SrcReg[0], &swz, &negate)) { if (swz == RC_SWIZZLE_ONE) { @@ -296,8 +284,8 @@ static void constant_folding_mul(struct rc_instruction * inst) static void constant_folding_add(struct rc_instruction * inst) { - rc_swizzle swz; - unsigned int negate; + rc_swizzle swz = 0; + unsigned int negate = 0; if (is_src_uniform_constant(inst->U.I.SrcReg[0], &swz, &negate)) { if (swz == RC_SWIZZLE_ZERO) { @@ -431,132 +419,88 @@ static int src_has_const_swz(struct rc_src_register src) { return 0; } -static void peephole_scan_write(void * data, struct rc_instruction * inst, - rc_register_file file, unsigned int index, unsigned int mask) +static void presub_scan_read( + void * data, + struct rc_instruction * inst, + struct rc_src_register * src) { - struct peephole_state * s = data; - if(s->Inst->U.I.DstReg.File == file - && s->Inst->U.I.DstReg.Index == index) { - unsigned int common_mask = s->WriteMask & mask; - s->WriteMask &= ~common_mask; + struct rc_reader_data * reader_data = data; + rc_presubtract_op * presub_opcode = reader_data->CbData; + + if (!rc_inst_can_use_presub(inst, *presub_opcode, + reader_data->Writer->U.I.DstReg.WriteMask, + *src, + reader_data->Writer->U.I.SrcReg[0], + reader_data->Writer->U.I.SrcReg[1])) { + reader_data->Abort = 1; + return; } } static int presub_helper( struct radeon_compiler * c, - struct peephole_state * s, + struct rc_instruction * inst_add, rc_presubtract_op presub_opcode, rc_presub_replace_fn presub_replace) { - struct rc_instruction * inst; - unsigned int can_remove = 0; - unsigned int cant_sub = 0; + struct rc_reader_data reader_data; + unsigned int i; + rc_presubtract_op cb_op = presub_opcode; - for(inst = s->Inst->Next; inst != &c->Program.Instructions; - inst = inst->Next) { - unsigned int i; - unsigned char can_use_presub = 1; - const struct rc_opcode_info * info = - rc_get_opcode_info(inst->U.I.Opcode); - /* XXX: There are some situations where instructions - * with more than 2 src registers can use the - * presubtract select, but to keep things simple we - * will disable presubtract on these instructions for - * now. */ - if (info->NumSrcRegs > 2 || info->HasTexture) { - can_use_presub = 0; - } + reader_data.CbData = &cb_op; + rc_get_readers(c, inst_add, &reader_data, presub_scan_read, NULL, + is_src_clobbered_scan_write); - /* We can't use more than one presubtract value in an - * instruction, unless the two prsubtract operations - * are the same and read from the same registers. */ - if (inst->U.I.PreSub.Opcode != RC_PRESUB_NONE) { - if (inst->U.I.PreSub.Opcode != presub_opcode - || inst->U.I.PreSub.SrcReg[0].File != - s->Inst->U.I.SrcReg[1].File - || inst->U.I.PreSub.SrcReg[0].Index != - s->Inst->U.I.SrcReg[1].Index) { - can_use_presub = 0; - } - } + if (reader_data.Abort || reader_data.ReaderCount == 0) + return 0; - /* Even if the instruction can't use a presubtract operation - * we still need to check if the instruction reads from - * s->Inst->U.I.DstReg, because if it does we must not - * remove s->Inst. */ - for(i = 0; i < info->NumSrcRegs; i++) { - unsigned int mask = src_reads_dst_mask( - inst->U.I.SrcReg[i], s->Inst->U.I.DstReg); - /* XXX We could be more aggressive here using - * presubtract. It is okay if SrcReg[i] only reads - * from some of the mask components. */ - if(s->Inst->U.I.DstReg.WriteMask != mask) { - if (s->Inst->U.I.DstReg.WriteMask & mask) { - can_remove = 0; - break; - } else { - continue; - } - } - if (cant_sub || !can_use_presub) { - can_remove = 0; - break; - } - presub_replace(s, inst, i); - can_remove = 1; - } - if(!can_remove) - break; - rc_for_all_writes_mask(inst, peephole_scan_write, s); - /* If all components of inst_add's destination register have - * been written to by subsequent instructions, the original - * value of the destination register is no longer valid and - * we can't keep doing substitutions. */ - if (!s->WriteMask){ - break; - } - /* Make this instruction doesn't write to the presubtract source. */ - if (inst->U.I.DstReg.WriteMask & - src_reads_dst_mask(s->Inst->U.I.SrcReg[1], - inst->U.I.DstReg) - || src_reads_dst_mask(s->Inst->U.I.SrcReg[0], - inst->U.I.DstReg) - || info->IsFlowControl) { - cant_sub = 1; + for(i = 0; i < reader_data.ReaderCount; i++) { + unsigned int src_index; + struct rc_reader reader = reader_data.Readers[i]; + const struct rc_opcode_info * info = + rc_get_opcode_info(reader.Inst->U.I.Opcode); + + for (src_index = 0; src_index < info->NumSrcRegs; src_index++) { + if (&reader.Inst->U.I.SrcReg[src_index] == reader.U.Src) + presub_replace(inst_add, reader.Inst, src_index); } } - return can_remove; + return 1; } -/* This function assumes that s->Inst->U.I.SrcReg[0] and - * s->Inst->U.I.SrcReg[1] aren't both negative. */ -static void presub_replace_add(struct peephole_state *s, - struct rc_instruction * inst, - unsigned int src_index) +/* This function assumes that inst_add->U.I.SrcReg[0] and + * inst_add->U.I.SrcReg[1] aren't both negative. */ +static void presub_replace_add( + struct rc_instruction * inst_add, + struct rc_instruction * inst_reader, + unsigned int src_index) { rc_presubtract_op presub_opcode; - if (s->Inst->U.I.SrcReg[1].Negate || s->Inst->U.I.SrcReg[0].Negate) + if (inst_add->U.I.SrcReg[1].Negate || inst_add->U.I.SrcReg[0].Negate) presub_opcode = RC_PRESUB_SUB; else presub_opcode = RC_PRESUB_ADD; - if (s->Inst->U.I.SrcReg[1].Negate) { - inst->U.I.PreSub.SrcReg[0] = s->Inst->U.I.SrcReg[1]; - inst->U.I.PreSub.SrcReg[1] = s->Inst->U.I.SrcReg[0]; + if (inst_add->U.I.SrcReg[1].Negate) { + inst_reader->U.I.PreSub.SrcReg[0] = inst_add->U.I.SrcReg[1]; + inst_reader->U.I.PreSub.SrcReg[1] = inst_add->U.I.SrcReg[0]; } else { - inst->U.I.PreSub.SrcReg[0] = s->Inst->U.I.SrcReg[0]; - inst->U.I.PreSub.SrcReg[1] = s->Inst->U.I.SrcReg[1]; + inst_reader->U.I.PreSub.SrcReg[0] = inst_add->U.I.SrcReg[0]; + inst_reader->U.I.PreSub.SrcReg[1] = inst_add->U.I.SrcReg[1]; } - inst->U.I.PreSub.SrcReg[0].Negate = 0; - inst->U.I.PreSub.SrcReg[1].Negate = 0; - inst->U.I.PreSub.Opcode = presub_opcode; - inst->U.I.SrcReg[src_index] = chain_srcregs(inst->U.I.SrcReg[src_index], - inst->U.I.PreSub.SrcReg[0]); - inst->U.I.SrcReg[src_index].File = RC_FILE_PRESUB; - inst->U.I.SrcReg[src_index].Index = presub_opcode; + inst_reader->U.I.PreSub.SrcReg[0].Negate = 0; + inst_reader->U.I.PreSub.SrcReg[1].Negate = 0; + inst_reader->U.I.PreSub.Opcode = presub_opcode; + inst_reader->U.I.SrcReg[src_index] = + chain_srcregs(inst_reader->U.I.SrcReg[src_index], + inst_reader->U.I.PreSub.SrcReg[0]); + inst_reader->U.I.SrcReg[src_index].File = RC_FILE_PRESUB; + inst_reader->U.I.SrcReg[src_index].Index = presub_opcode; } -static int is_presub_candidate(struct rc_instruction * inst) +static int is_presub_candidate( + struct radeon_compiler * c, + struct rc_instruction * inst) { const struct rc_opcode_info * info = rc_get_opcode_info(inst->U.I.Opcode); unsigned int i; @@ -565,7 +509,12 @@ static int is_presub_candidate(struct rc_instruction * inst) return 0; for(i = 0; i < info->NumSrcRegs; i++) { - if (src_reads_dst_mask(inst->U.I.SrcReg[i], inst->U.I.DstReg)) + struct rc_src_register src = inst->U.I.SrcReg[i]; + if (src_reads_dst_mask(src, inst->U.I.DstReg)) + return 0; + + src.File = RC_FILE_PRESUB; + if (!c->SwizzleCaps->IsNative(inst->U.I.Opcode, src)) return 0; } return 1; @@ -578,9 +527,8 @@ static int peephole_add_presub_add( struct rc_src_register * src0 = NULL; struct rc_src_register * src1 = NULL; unsigned int i; - struct peephole_state s; - if (!is_presub_candidate(inst_add)) + if (!is_presub_candidate(c, inst_add)) return 0; if (inst_add->U.I.SrcReg[0].Swizzle != inst_add->U.I.SrcReg[1].Swizzle) @@ -604,30 +552,28 @@ static int peephole_add_presub_add( if (!src1) return 0; - s.Inst = inst_add; - s.WriteMask = inst_add->U.I.DstReg.WriteMask; - if (presub_helper(c, &s, RC_PRESUB_ADD, presub_replace_add)) { + if (presub_helper(c, inst_add, RC_PRESUB_ADD, presub_replace_add)) { rc_remove_instruction(inst_add); return 1; } return 0; } -static void presub_replace_inv(struct peephole_state * s, - struct rc_instruction * inst, - unsigned int src_index) +static void presub_replace_inv( + struct rc_instruction * inst_add, + struct rc_instruction * inst_reader, + unsigned int src_index) { - /* We must be careful not to modify s->Inst, since it - * is possible it will remain part of the program. - * XXX Maybe pass a struct instead of a pointer for s->Inst.*/ - inst->U.I.PreSub.SrcReg[0] = s->Inst->U.I.SrcReg[1]; - inst->U.I.PreSub.SrcReg[0].Negate = 0; - inst->U.I.PreSub.Opcode = RC_PRESUB_INV; - inst->U.I.SrcReg[src_index] = chain_srcregs(inst->U.I.SrcReg[src_index], - inst->U.I.PreSub.SrcReg[0]); + /* We must be careful not to modify inst_add, since it + * is possible it will remain part of the program.*/ + inst_reader->U.I.PreSub.SrcReg[0] = inst_add->U.I.SrcReg[1]; + inst_reader->U.I.PreSub.SrcReg[0].Negate = 0; + inst_reader->U.I.PreSub.Opcode = RC_PRESUB_INV; + inst_reader->U.I.SrcReg[src_index] = chain_srcregs(inst_reader->U.I.SrcReg[src_index], + inst_reader->U.I.PreSub.SrcReg[0]); - inst->U.I.SrcReg[src_index].File = RC_FILE_PRESUB; - inst->U.I.SrcReg[src_index].Index = RC_PRESUB_INV; + inst_reader->U.I.SrcReg[src_index].File = RC_FILE_PRESUB; + inst_reader->U.I.SrcReg[src_index].Index = RC_PRESUB_INV; } /** @@ -645,9 +591,8 @@ static int peephole_add_presub_inv( struct rc_instruction * inst_add) { unsigned int i, swz, mask; - struct peephole_state s; - if (!is_presub_candidate(inst_add)) + if (!is_presub_candidate(c, inst_add)) return 0; mask = inst_add->U.I.DstReg.WriteMask; @@ -674,11 +619,7 @@ static int peephole_add_presub_inv( return 0; } - /* Setup the peephole_state information. */ - s.Inst = inst_add; - s.WriteMask = inst_add->U.I.DstReg.WriteMask; - - if (presub_helper(c, &s, RC_PRESUB_INV, presub_replace_inv)) { + if (presub_helper(c, inst_add, RC_PRESUB_INV, presub_replace_inv)) { rc_remove_instruction(inst_add); return 1; } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c index 91524f5ec6..3f880c88fa 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c @@ -66,10 +66,13 @@ struct regalloc_state { struct hardware_register * HwTemporary; unsigned int NumHwTemporaries; /** - * If an instruction is inside of a loop, end_loop will be the - * IP of the ENDLOOP instruction, otherwise end_loop will be 0 + * If an instruction is inside of a loop, EndLoop will be the + * IP of the ENDLOOP instruction, and BeginLoop will be the IP + * of the BGNLOOP instruction. Otherwise, EndLoop and BeginLoop + * will be -1. */ - int end_loop; + int EndLoop; + int BeginLoop; }; static void print_live_intervals(struct live_intervals * src) @@ -180,11 +183,13 @@ static void scan_callback(void * data, struct rc_instruction * inst, reg->Used = 1; if (file == RC_FILE_INPUT) reg->Live.Start = -1; + else if (s->BeginLoop >= 0) + reg->Live.Start = s->BeginLoop; else reg->Live.Start = inst->IP; reg->Live.End = inst->IP; - } else if (s->end_loop) - reg->Live.End = s->end_loop; + } else if (s->EndLoop >= 0) + reg->Live.End = s->EndLoop; else if (inst->IP > reg->Live.End) reg->Live.End = inst->IP; } @@ -195,6 +200,8 @@ static void compute_live_intervals(struct radeon_compiler *c, memset(s, 0, sizeof(*s)); s->C = c; s->NumHwTemporaries = c->max_temp_regs; + s->BeginLoop = -1; + s->EndLoop = -1; s->HwTemporary = memory_pool_malloc(&c->Pool, s->NumHwTemporaries * sizeof(struct hardware_register)); @@ -207,8 +214,10 @@ static void compute_live_intervals(struct radeon_compiler *c, inst = inst->Next) { /* For all instructions inside of a loop, the ENDLOOP - * instruction is used as the end of the live interval. */ - if (inst->U.I.Opcode == RC_OPCODE_BGNLOOP && !s->end_loop) { + * instruction is used as the end of the live interval and + * the BGNLOOP instruction is used as the beginning. */ + if (inst->U.I.Opcode == RC_OPCODE_BGNLOOP && s->EndLoop < 0) { + s->BeginLoop = inst->IP; int loops = 1; struct rc_instruction * tmp; for(tmp = inst->Next; @@ -219,15 +228,17 @@ static void compute_live_intervals(struct radeon_compiler *c, } else if (tmp->U.I.Opcode == RC_OPCODE_ENDLOOP) { if(!--loops) { - s->end_loop = tmp->IP; + s->EndLoop = tmp->IP; break; } } } } - if (inst->IP == s->end_loop) - s->end_loop = 0; + if (inst->IP == s->EndLoop) { + s->EndLoop = -1; + s->BeginLoop = -1; + } rc_for_all_reads_mask(inst, scan_callback, s); rc_for_all_writes_mask(inst, scan_callback, s); diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c index d4a38607d9..cbb5ef6237 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c @@ -30,6 +30,7 @@ #include <stdio.h> #include "radeon_compiler.h" +#include "radeon_compiler_util.h" #include "radeon_dataflow.h" @@ -54,6 +55,11 @@ struct schedule_instruction { * this instruction can be scheduled. */ unsigned int NumDependencies:5; + + /** List of all readers (see rc_get_readers() for the definition of + * "all readers"), even those outside the basic block this instruction + * lives in. */ + struct rc_reader_data GlobalReaders; }; @@ -94,6 +100,16 @@ struct register_state { struct reg_value * Values[4]; }; +struct remap_reg { + struct rc_instruciont * Inst; + unsigned int OldIndex:(RC_REGISTER_INDEX_BITS+1); + unsigned int OldSwizzle:3; + unsigned int NewIndex:(RC_REGISTER_INDEX_BITS+1); + unsigned int NewSwizzle:3; + unsigned int OnlyTexReads:1; + struct remap_reg * Next; +}; + struct schedule_state { struct radeon_compiler * C; struct schedule_instruction * Current; @@ -126,15 +142,6 @@ static struct reg_value ** get_reg_valuep(struct schedule_state * s, return &s->Temporary[index].Values[chan]; } -static struct reg_value * get_reg_value(struct schedule_state * s, - rc_register_file file, unsigned int index, unsigned int chan) -{ - struct reg_value ** pv = get_reg_valuep(s, file, index, chan); - if (!pv) - return 0; - return *pv; -} - static void add_inst_to_list(struct schedule_instruction ** list, struct schedule_instruction * inst) { inst->NextReady = *list; @@ -290,16 +297,17 @@ static int merge_presub_sources( { unsigned int srcp_src, srcp_regs, is_rgb, is_alpha; struct rc_pair_sub_instruction * dst_sub; + const struct rc_opcode_info * info; assert(dst_full->Alpha.Opcode == RC_OPCODE_NOP); switch(type) { - case RC_PAIR_SOURCE_RGB: + case RC_SOURCE_RGB: is_rgb = 1; is_alpha = 0; dst_sub = &dst_full->RGB; break; - case RC_PAIR_SOURCE_ALPHA: + case RC_SOURCE_ALPHA: is_rgb = 0; is_alpha = 1; dst_sub = &dst_full->Alpha; @@ -309,8 +317,8 @@ static int merge_presub_sources( return 0; } - const struct rc_opcode_info * info = - rc_get_opcode_info(dst_full->RGB.Opcode); + info = rc_get_opcode_info(dst_full->RGB.Opcode); + if (dst_sub->Src[RC_PAIR_PRESUB_SRC].Used) return 0; @@ -340,6 +348,8 @@ static int merge_presub_sources( continue; free_source = rc_pair_alloc_source(dst_full, is_rgb, is_alpha, temp.File, temp.Index); + if (free_source < 0) + return 0; one_way = 1; } else { dst_sub->Src[free_source] = temp; @@ -355,11 +365,11 @@ static int merge_presub_sources( for(arg = 0; arg < info->NumSrcRegs; arg++) { /*If this arg does not read from an rgb source, * do nothing. */ - if (!(rc_source_type_that_arg_reads( - dst_full->RGB.Arg[arg].Source, - dst_full->RGB.Arg[arg].Swizzle) & type)) { + if (!(rc_source_type_swz(dst_full->RGB.Arg[arg].Swizzle, + 3) & type)) { continue; } + if (dst_full->RGB.Arg[arg].Source == srcp_src) dst_full->RGB.Arg[arg].Source = free_source; /* We need to do this just in case register @@ -391,13 +401,13 @@ static int destructive_merge_instructions( /* Merge the rgb presubtract registers. */ if (alpha->RGB.Src[RC_PAIR_PRESUB_SRC].Used) { - if (!merge_presub_sources(rgb, alpha->RGB, RC_PAIR_SOURCE_RGB)) { + if (!merge_presub_sources(rgb, alpha->RGB, RC_SOURCE_RGB)) { return 0; } } /* Merge the alpha presubtract registers */ if (alpha->Alpha.Src[RC_PAIR_PRESUB_SRC].Used) { - if(!merge_presub_sources(rgb, alpha->Alpha, RC_PAIR_SOURCE_ALPHA)){ + if(!merge_presub_sources(rgb, alpha->Alpha, RC_SOURCE_ALPHA)){ return 0; } } @@ -524,6 +534,222 @@ static void presub_nop(struct rc_instruction * emitted) { } } } + +static void rgb_to_alpha_remap ( + struct rc_instruction * inst, + struct rc_pair_instruction_arg * arg, + rc_register_file old_file, + rc_swizzle old_swz, + unsigned int new_index) +{ + int new_src_index; + unsigned int i; + struct rc_pair_instruction_source * old_src = + rc_pair_get_src(&inst->U.P, arg); + if (!old_src) { + return; + } + + for (i = 0; i < 3; i++) { + if (get_swz(arg->Swizzle, i) == old_swz) { + SET_SWZ(arg->Swizzle, i, RC_SWIZZLE_W); + } + } + memset(old_src, 0, sizeof(struct rc_pair_instruction_source)); + new_src_index = rc_pair_alloc_source(&inst->U.P, 0, 1, + old_file, new_index); + /* This conversion is not possible, we must have made a mistake in + * is_rgb_to_alpha_possible. */ + if (new_src_index < 0) { + assert(0); + return; + } + + arg->Source = new_src_index; +} + +static int can_remap(unsigned int opcode) +{ + switch(opcode) { + case RC_OPCODE_DDX: + case RC_OPCODE_DDY: + return 0; + default: + return 1; + } +} + +static int can_convert_opcode_to_alpha(unsigned int opcode) +{ + switch(opcode) { + case RC_OPCODE_DDX: + case RC_OPCODE_DDY: + case RC_OPCODE_DP2: + case RC_OPCODE_DP3: + case RC_OPCODE_DP4: + case RC_OPCODE_DPH: + return 0; + default: + return 1; + } +} + +static void is_rgb_to_alpha_possible( + void * userdata, + struct rc_instruction * inst, + struct rc_pair_instruction_arg * arg, + struct rc_pair_instruction_source * src) +{ + unsigned int chan_count = 0; + unsigned int alpha_sources = 0; + unsigned int i; + struct rc_reader_data * reader_data = userdata; + + if (!can_remap(inst->U.P.RGB.Opcode) + || !can_remap(inst->U.P.Alpha.Opcode)) { + reader_data->Abort = 1; + return; + } + + if (!src) + return; + + /* XXX There are some cases where we can still do the conversion if + * a reader reads from a presubtract source, but for now we'll prevent + * it. */ + if (arg->Source == RC_PAIR_PRESUB_SRC) { + reader_data->Abort = 1; + return; + } + + /* Make sure the source only reads from one component. + * XXX We should allow the source to read from the same component twice. + * XXX If the index we will be converting to is the same as the + * current index, then it is OK to read from more than one component. + */ + for (i = 0; i < 3; i++) { + rc_swizzle swz = get_swz(arg->Swizzle, i); + switch(swz) { + case RC_SWIZZLE_X: + case RC_SWIZZLE_Y: + case RC_SWIZZLE_Z: + case RC_SWIZZLE_W: + chan_count++; + break; + default: + break; + } + } + if (chan_count > 1) { + reader_data->Abort = 1; + return; + } + + /* Make sure there are enough alpha sources. + * XXX If we know what register all the readers are going + * to be remapped to, then in some situations we can still do + * the subsitution, even if all 3 alpha sources are being used.*/ + for (i = 0; i < 3; i++) { + if (inst->U.P.Alpha.Src[i].Used) { + alpha_sources++; + } + } + if (alpha_sources > 2) { + reader_data->Abort = 1; + return; + } +} + +static int convert_rgb_to_alpha( + struct schedule_state * s, + struct schedule_instruction * sched_inst) +{ + struct rc_pair_instruction * pair_inst = &sched_inst->Instruction->U.P; + unsigned int old_mask = pair_inst->RGB.WriteMask; + unsigned int old_swz = rc_mask_to_swizzle(old_mask); + const struct rc_opcode_info * info = + rc_get_opcode_info(pair_inst->RGB.Opcode); + int new_index = -1; + unsigned int i; + + if (sched_inst->GlobalReaders.Abort) + return 0; + + if (!pair_inst->RGB.WriteMask) + return 0; + + if (!can_convert_opcode_to_alpha(pair_inst->RGB.Opcode) + || !can_convert_opcode_to_alpha(pair_inst->Alpha.Opcode)) { + return 0; + } + + assert(sched_inst->NumWriteValues == 1); + + if (!sched_inst->WriteValues[0]) { + assert(0); + return 0; + } + + /* We start at the old index, because if we can reuse the same + * register and just change the swizzle then it is more likely we + * will be able to convert all the readers. */ + for (i = pair_inst->RGB.DestIndex; i < RC_REGISTER_MAX_INDEX; i++) { + struct reg_value ** new_regvalp = get_reg_valuep( + s, RC_FILE_TEMPORARY, i, 3); + if (!*new_regvalp) { + struct reg_value ** old_regvalp = + get_reg_valuep(s, + RC_FILE_TEMPORARY, + pair_inst->RGB.DestIndex, + rc_mask_to_swz(old_mask)); + new_index = i; + *new_regvalp = *old_regvalp; + *old_regvalp = NULL; + new_regvalp = get_reg_valuep(s, RC_FILE_TEMPORARY, i, 3); + break; + } + } + if (new_index < 0) { + return 0; + } + + pair_inst->Alpha.Opcode = pair_inst->RGB.Opcode; + pair_inst->Alpha.DestIndex = new_index; + pair_inst->Alpha.WriteMask = 1; + pair_inst->Alpha.Target = pair_inst->RGB.Target; + pair_inst->Alpha.OutputWriteMask = pair_inst->RGB.OutputWriteMask; + pair_inst->Alpha.DepthWriteMask = pair_inst->RGB.DepthWriteMask; + pair_inst->Alpha.Saturate = pair_inst->RGB.Saturate; + memcpy(pair_inst->Alpha.Arg, pair_inst->RGB.Arg, + sizeof(pair_inst->Alpha.Arg)); + /* Move the swizzles into the first chan */ + for (i = 0; i < info->NumSrcRegs; i++) { + unsigned int j; + for (j = 0; j < 3; j++) { + unsigned int swz = get_swz(pair_inst->Alpha.Arg[i].Swizzle, j); + if (swz != RC_SWIZZLE_UNUSED) { + pair_inst->Alpha.Arg[i].Swizzle = swz; + break; + } + } + } + pair_inst->RGB.Opcode = RC_OPCODE_NOP; + pair_inst->RGB.DestIndex = 0; + pair_inst->RGB.WriteMask = 0; + pair_inst->RGB.Target = 0; + pair_inst->RGB.OutputWriteMask = 0; + pair_inst->RGB.DepthWriteMask = 0; + pair_inst->RGB.Saturate = 0; + memset(pair_inst->RGB.Arg, 0, sizeof(pair_inst->RGB.Arg)); + + for(i = 0; i < sched_inst->GlobalReaders.ReaderCount; i++) { + struct rc_reader reader = sched_inst->GlobalReaders.Readers[i]; + rgb_to_alpha_remap(reader.Inst, reader.U.Arg, + RC_FILE_TEMPORARY, old_swz, new_index); + } + return 1; +} + /** * Find a good ALU instruction or pair of ALU instruction and emit it. * @@ -535,24 +761,16 @@ static void emit_one_alu(struct schedule_state *s, struct rc_instruction * befor { struct schedule_instruction * sinst; - if (s->ReadyFullALU || !(s->ReadyRGB && s->ReadyAlpha)) { - if (s->ReadyFullALU) { - sinst = s->ReadyFullALU; - s->ReadyFullALU = s->ReadyFullALU->NextReady; - } else if (s->ReadyRGB) { - sinst = s->ReadyRGB; - s->ReadyRGB = s->ReadyRGB->NextReady; - } else { - sinst = s->ReadyAlpha; - s->ReadyAlpha = s->ReadyAlpha->NextReady; - } - + if (s->ReadyFullALU) { + sinst = s->ReadyFullALU; + s->ReadyFullALU = s->ReadyFullALU->NextReady; rc_insert_instruction(before->Prev, sinst->Instruction); commit_alu_instruction(s, sinst); } else { struct schedule_instruction **prgb; struct schedule_instruction **palpha; - + struct schedule_instruction *prev; +pair: /* Some pairings might fail because they require too * many source slots; try all possible pairings if necessary */ for(prgb = &s->ReadyRGB; *prgb; prgb = &(*prgb)->NextReady) { @@ -571,10 +789,43 @@ static void emit_one_alu(struct schedule_state *s, struct rc_instruction * befor goto success; } } - - /* No success in pairing; just take the first RGB instruction */ - sinst = s->ReadyRGB; - s->ReadyRGB = s->ReadyRGB->NextReady; + prev = NULL; + /* No success in pairing, now try to convert one of the RGB + * instructions to an Alpha so we can pair it with another RGB. + */ + if (s->ReadyRGB && s->ReadyRGB->NextReady) { + for(prgb = &s->ReadyRGB; *prgb; prgb = &(*prgb)->NextReady) { + if ((*prgb)->NumWriteValues == 1) { + struct schedule_instruction * prgb_next; + if (!convert_rgb_to_alpha(s, *prgb)) + goto cont_loop; + prgb_next = (*prgb)->NextReady; + /* Add instruction to the Alpha ready list. */ + (*prgb)->NextReady = s->ReadyAlpha; + s->ReadyAlpha = *prgb; + /* Remove instruction from the RGB ready list.*/ + if (prev) + prev->NextReady = prgb_next; + else + s->ReadyRGB = prgb_next; + goto pair; + } +cont_loop: + prev = *prgb; + } + } + /* Still no success in pairing, just take the first RGB + * or alpha instruction. */ + if (s->ReadyRGB) { + sinst = s->ReadyRGB; + s->ReadyRGB = s->ReadyRGB->NextReady; + } else if (s->ReadyAlpha) { + sinst = s->ReadyAlpha; + s->ReadyAlpha = s->ReadyAlpha->NextReady; + } else { + /*XXX Something real bad has happened. */ + assert(0); + } rc_insert_instruction(before->Prev, sinst->Instruction); commit_alu_instruction(s, sinst); @@ -590,13 +841,13 @@ static void scan_read(void * data, struct rc_instruction * inst, rc_register_file file, unsigned int index, unsigned int chan) { struct schedule_state * s = data; - struct reg_value * v = get_reg_value(s, file, index, chan); + struct reg_value ** v = get_reg_valuep(s, file, index, chan); struct reg_value_reader * reader; if (!v) return; - if (v->Writer == s->Current) { + if (*v && (*v)->Writer == s->Current) { /* The instruction reads and writes to a register component. * In this case, we only want to increment dependencies by one. */ @@ -607,16 +858,28 @@ static void scan_read(void * data, struct rc_instruction * inst, reader = memory_pool_malloc(&s->C->Pool, sizeof(*reader)); reader->Reader = s->Current; - reader->Next = v->Readers; - v->Readers = reader; - v->NumReaders++; - - s->Current->NumDependencies++; + if (!*v) { + /* In this situation, the instruction reads from a register + * that hasn't been written to or read from in the current + * block. */ + *v = memory_pool_malloc(&s->C->Pool, sizeof(struct reg_value)); + memset(*v, 0, sizeof(struct reg_value)); + (*v)->Readers = reader; + } else { + reader->Next = (*v)->Readers; + (*v)->Readers = reader; + /* Only update the current instruction's dependencies if the + * register it reads from has been written to in this block. */ + if ((*v)->Writer) { + s->Current->NumDependencies++; + } + } + (*v)->NumReaders++; if (s->Current->NumReadValues >= 12) { rc_error(s->C, "%s: NumReadValues overflow\n", __FUNCTION__); } else { - s->Current->ReadValues[s->Current->NumReadValues++] = v; + s->Current->ReadValues[s->Current->NumReadValues++] = *v; } } @@ -651,6 +914,16 @@ static void scan_write(void * data, struct rc_instruction * inst, } } +static void is_rgb_to_alpha_possible_normal( + void * userdata, + struct rc_instruction * inst, + struct rc_src_register * src) +{ + struct rc_reader_data * reader_data = userdata; + reader_data->Abort = 1; + +} + static void schedule_block(struct r300_fragment_program_compiler * c, struct rc_instruction * begin, struct rc_instruction * end) { @@ -682,6 +955,11 @@ static void schedule_block(struct r300_fragment_program_compiler * c, if (!s.Current->NumDependencies) instruction_ready(&s, s.Current); + + /* Get global readers for possible RGB->Alpha conversion. */ + rc_get_readers(s.C, inst, &s.Current->GlobalReaders, + is_rgb_to_alpha_possible_normal, + is_rgb_to_alpha_possible, NULL); } /* Temporarily unlink all instructions */ @@ -710,8 +988,13 @@ static int is_controlflow(struct rc_instruction * inst) void rc_pair_schedule(struct radeon_compiler *cc, void *user) { + struct schedule_state s; + struct r300_fragment_program_compiler *c = (struct r300_fragment_program_compiler*)cc; struct rc_instruction * inst = c->Base.Program.Instructions.Next; + + memset(&s, 0, sizeof(s)); + s.C = &c->Base; while(inst != &c->Base.Program.Instructions) { struct rc_instruction * first; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c index c549be5218..fc05366f50 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c @@ -280,9 +280,12 @@ static void set_pair_instruction(struct r300_fragment_program_compiler *c, pair->RGB.DestIndex = inst->DstReg.Index; pair->RGB.WriteMask |= inst->DstReg.WriteMask & RC_MASK_XYZ; } + if (needalpha) { - pair->Alpha.DestIndex = inst->DstReg.Index; pair->Alpha.WriteMask |= GET_BIT(inst->DstReg.WriteMask, 3); + if (pair->Alpha.WriteMask) { + pair->Alpha.DestIndex = inst->DstReg.Index; + } } } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program.c b/src/mesa/drivers/dri/r300/compiler/radeon_program.c index 24b685fbeb..d7bedc5729 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program.c @@ -30,6 +30,7 @@ #include <stdio.h> #include "radeon_compiler.h" +#include "radeon_dataflow.h" /** @@ -91,37 +92,98 @@ struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register return tmp; } -unsigned int rc_find_free_temporary(struct radeon_compiler * c) +struct get_used_temporaries_data { + unsigned char * Used; + unsigned int UsedLength; +}; + +static void get_used_temporaries_cb( + void * userdata, + struct rc_instruction * inst, + rc_register_file file, + unsigned int index, + unsigned int mask) { - char used[RC_REGISTER_MAX_INDEX]; - unsigned int i; - struct rc_instruction * rcinst; + struct get_used_temporaries_data * d = userdata; - memset(used, 0, sizeof(used)); + if (file != RC_FILE_TEMPORARY) + return; - for (rcinst = c->Program.Instructions.Next; rcinst != &c->Program.Instructions; rcinst = rcinst->Next) { - const struct rc_sub_instruction *inst = &rcinst->U.I; - const struct rc_opcode_info *opcode = rc_get_opcode_info(inst->Opcode); - unsigned int k; + if (index >= d->UsedLength) + return; - for (k = 0; k < opcode->NumSrcRegs; k++) { - if (inst->SrcReg[k].File == RC_FILE_TEMPORARY) - used[inst->SrcReg[k].Index] = 1; - } + d->Used[index] |= mask; +} - if (opcode->HasDstReg) { - if (inst->DstReg.File == RC_FILE_TEMPORARY) - used[inst->DstReg.Index] = 1; - } +/** + * This function fills in the parameter 'used' with a writemask that + * represent which components of each temporary register are used by the + * program. This is meant to be combined with rc_find_free_temporary_list as a + * more efficient version of rc_find_free_temporary. + * @param used The function does not initialize this parameter. + */ +void rc_get_used_temporaries( + struct radeon_compiler * c, + unsigned char * used, + unsigned int used_length) +{ + struct rc_instruction * inst; + struct get_used_temporaries_data d; + d.Used = used; + d.UsedLength = used_length; + + for(inst = c->Program.Instructions.Next; + inst != &c->Program.Instructions; inst = inst->Next) { + + rc_for_all_reads_mask(inst, get_used_temporaries_cb, &d); + rc_for_all_writes_mask(inst, get_used_temporaries_cb, &d); } +} - for (i = 0; i < RC_REGISTER_MAX_INDEX; i++) { - if (!used[i]) +/* Search a list of used temporaries for a free one + * \sa rc_get_used_temporaries + * @note If this functions finds a free temporary, it will mark it as used + * in the used temporary list (param 'used') + * @param used list of used temporaries + * @param used_length number of items in param 'used' + * @param mask which components must be free in the temporary index that is + * returned. + * @return -1 If there are no more free temporaries, otherwise the index of + * a temporary register where the components specified in param 'mask' are + * not being used. + */ +int rc_find_free_temporary_list( + struct radeon_compiler * c, + unsigned char * used, + unsigned int used_length, + unsigned int mask) +{ + int i; + for(i = 0; i < used_length; i++) { + if ((~used[i] & mask) == mask) { + used[i] |= mask; return i; + } } + return -1; +} + +unsigned int rc_find_free_temporary(struct radeon_compiler * c) +{ + unsigned char used[RC_REGISTER_MAX_INDEX]; + int free; - rc_error(c, "Ran out of temporary registers\n"); - return 0; + memset(used, 0, sizeof(used)); + + rc_get_used_temporaries(c, used, RC_REGISTER_MAX_INDEX); + + free = rc_find_free_temporary_list(c, used, RC_REGISTER_MAX_INDEX, + RC_MASK_XYZW); + if (free < 0) { + rc_error(c, "Ran out of temporary registers\n"); + return 0; + } + return free; } @@ -182,3 +244,14 @@ unsigned int rc_recompute_ips(struct radeon_compiler * c) return ip; } + +rc_swizzle rc_mask_to_swizzle(unsigned int mask) +{ + switch(mask) { + case RC_MASK_X: return RC_SWIZZLE_X; + case RC_MASK_Y: return RC_SWIZZLE_Y; + case RC_MASK_Z: return RC_SWIZZLE_Z; + case RC_MASK_W: return RC_SWIZZLE_W; + default: return RC_SWIZZLE_UNUSED; + } +} diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program.h b/src/mesa/drivers/dri/r300/compiler/radeon_program.h index f0a77d7b53..be078b4f4f 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program.h @@ -191,6 +191,20 @@ static inline unsigned int combine_swizzles(unsigned int src, unsigned int swz) return ret; } +/** + * @param mask Must be either RC_MASK_X, RC_MASK_Y, RC_MASK_Z, or RC_MASK_W + */ +static inline rc_swizzle rc_mask_to_swz(unsigned int mask) +{ + switch (mask) { + case RC_MASK_X: return RC_SWIZZLE_X; + case RC_MASK_Y: return RC_SWIZZLE_Y; + case RC_MASK_Z: return RC_SWIZZLE_Z; + case RC_MASK_W: return RC_SWIZZLE_W; + default: assert(0); + } + return RC_SWIZZLE_UNUSED; +} struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg); static inline void reset_srcreg(struct rc_src_register* reg) @@ -222,6 +236,17 @@ void rc_local_transform( struct radeon_compiler *c, void *user); +void rc_get_used_temporaries( + struct radeon_compiler * c, + unsigned char * used, + unsigned int used_length); + +int rc_find_free_temporary_list( + struct radeon_compiler * c, + unsigned char * used, + unsigned int used_length, + unsigned int mask); + unsigned int rc_find_free_temporary(struct radeon_compiler * c); struct rc_instruction *rc_alloc_instruction(struct radeon_compiler * c); @@ -233,4 +258,5 @@ unsigned int rc_recompute_ips(struct radeon_compiler * c); void rc_print_program(const struct rc_program *prog); +rc_swizzle rc_mask_to_swizzle(unsigned int mask); #endif diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h b/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h index 9dcd44c522..45f79ece5b 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h @@ -181,4 +181,9 @@ static inline int rc_presubtract_src_reg_count(rc_presubtract_op op){ return 0; } } + +#define RC_SOURCE_NONE 0x0 +#define RC_SOURCE_RGB 0x1 +#define RC_SOURCE_ALPHA 0x2 + #endif /* RADEON_PROGRAM_CONSTANTS_H */ diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c index a21fe8d3df..5905d26e52 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c @@ -27,6 +27,9 @@ #include "radeon_program_pair.h" +#include "radeon_compiler_util.h" + +#include <stdlib.h> /** * Return the source slot where we installed the given register access, @@ -204,24 +207,37 @@ void rc_pair_foreach_source_that_rgb_reads( } } -/*return 0 for rgb, 1 for alpha -1 for error. */ - -unsigned int rc_source_type_that_arg_reads( - unsigned int source, - unsigned int swizzle) +struct rc_pair_instruction_source * rc_pair_get_src( + struct rc_pair_instruction * pair_inst, + struct rc_pair_instruction_arg * arg) { - unsigned int chan; - unsigned int swz = RC_SWIZZLE_UNUSED; - unsigned int ret = RC_PAIR_SOURCE_NONE; + unsigned int i, type; + unsigned int channels = 0; + + for(i = 0; i < 3; i++) { + if (arg == pair_inst->RGB.Arg + i) { + channels = 3; + break; + } + } - for(chan = 0; chan < 3; chan++) { - swz = GET_SWZ(swizzle, chan); - if (swz == RC_SWIZZLE_W) { - ret |= RC_PAIR_SOURCE_ALPHA; - } else if (swz == RC_SWIZZLE_X || swz == RC_SWIZZLE_Y - || swz == RC_SWIZZLE_Z) { - ret |= RC_PAIR_SOURCE_RGB; + if (channels == 0) { + for (i = 0; i < 3; i++) { + if (arg == pair_inst->Alpha.Arg + i) { + channels = 1; + break; + } } } - return ret; + + assert(channels > 0); + type = rc_source_type_swz(arg->Swizzle, channels); + + if (type & RC_SOURCE_RGB) { + return &pair_inst->RGB.Src[arg->Source]; + } else if (type & RC_SOURCE_ALPHA) { + return &pair_inst->Alpha.Src[arg->Source]; + } else { + return NULL; + } } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h index 54d44a2098..ccf7a0070c 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h @@ -55,10 +55,6 @@ struct radeon_compiler; */ #define RC_PAIR_PRESUB_SRC 3 -#define RC_PAIR_SOURCE_NONE 0x0 -#define RC_PAIR_SOURCE_RGB 0x1 -#define RC_PAIR_SOURCE_ALPHA 0x2 - struct rc_pair_instruction_source { unsigned int Used:1; unsigned int File:3; @@ -115,9 +111,9 @@ void rc_pair_foreach_source_that_rgb_reads( void * data, rc_pair_foreach_src_fn cb); -unsigned int rc_source_type_that_arg_reads( - unsigned int source, - unsigned int swizzle); +struct rc_pair_instruction_source * rc_pair_get_src( + struct rc_pair_instruction * pair_inst, + struct rc_pair_instruction_arg * arg); /*@}*/ diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c index 618ab5a099..ae13f6742f 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c @@ -129,6 +129,7 @@ static char rc_swizzle_char(unsigned int swz) case RC_SWIZZLE_HALF: return 'H'; case RC_SWIZZLE_UNUSED: return '_'; } + fprintf(stderr, "bad swz: %u\n", swz); return '?'; } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c b/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c index 60e228be5b..88165f7895 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c @@ -33,100 +33,51 @@ #include "radeon_compiler.h" #include "radeon_dataflow.h" - -struct reg_rename { - int old_index; - int new_index; - int temp_index; -}; - -static void rename_reg(void * data, struct rc_instruction * inst, - rc_register_file * file, unsigned int * index) -{ - struct reg_rename *r = data; - - if(r->old_index == *index && *file == RC_FILE_TEMPORARY) { - *index = r->new_index; - } - else if(r->new_index == *index && *file == RC_FILE_TEMPORARY) { - *index = r->temp_index; - } -} - -static void rename_all( - struct radeon_compiler *c, - struct rc_instruction * start, - unsigned int old, - unsigned int new, - unsigned int temp) -{ - struct rc_instruction * inst; - struct reg_rename r; - r.old_index = old; - r.new_index = new; - r.temp_index = temp; - for(inst = start; inst != &c->Program.Instructions; - inst = inst->Next) { - rc_remap_registers(inst, rename_reg, &r); - } -} +#include "radeon_program.h" /** * This function renames registers in an attempt to get the code close to * SSA form. After this function has completed, most of the register are only - * written to one time, with a few exceptions. For example, this block of code - * will not be modified by this function: - * Mov Temp[0].x Const[0].x - * Mov Temp[0].y Const[0].y - * Basically, destination registers will be renamed if: - * 1. There have been no previous writes to that register - * or - * 2. If the instruction is writting to the exact components (no more, no less) - * of a register that has been written to by previous instructions. + * written to one time, with a few exceptions. * * This function assumes all the instructions are still of type * RC_INSTRUCTION_NORMAL. */ void rc_rename_regs(struct radeon_compiler *c, void *user) { - unsigned int cur_index = 0; - unsigned int icount; + unsigned int i, used_length; + int new_index; struct rc_instruction * inst; - unsigned int * masks; + struct rc_reader_data reader_data; + unsigned char * used; - /* The number of instructions in the program is also the maximum - * number of temp registers that could potentially be used. */ - icount = rc_recompute_ips(c); - masks = memory_pool_malloc(&c->Pool, icount * sizeof(unsigned int)); - memset(masks, 0, icount * sizeof(unsigned int)); + used_length = 2 * rc_recompute_ips(c); + used = memory_pool_malloc(&c->Pool, sizeof(unsigned char) * used_length); + memset(used, 0, sizeof(unsigned char) * used_length); + rc_get_used_temporaries(c, used, used_length); for(inst = c->Program.Instructions.Next; inst != &c->Program.Instructions; inst = inst->Next) { - const struct rc_opcode_info * info; - unsigned int old_index, temp_index; - struct rc_dst_register * dst; - if(inst->Type != RC_INSTRUCTION_NORMAL) { - rc_error(c, "%s only works with normal instructions.", - __FUNCTION__); - return; - } - dst = &inst->U.I.DstReg; - info = rc_get_opcode_info(inst->U.I.Opcode); - if(!info->HasDstReg || dst->File != RC_FILE_TEMPORARY) { + + if (inst->U.I.DstReg.File != RC_FILE_TEMPORARY) continue; + + rc_get_readers(c, inst, &reader_data, NULL, NULL, NULL); + + if (reader_data.Abort || reader_data.ReaderCount == 0) + continue; + + new_index = rc_find_free_temporary_list(c, used, used_length, + RC_MASK_XYZW); + if (new_index < 0) { + rc_error(c, "Ran out of temporary registers\n"); + return; } - if(dst->Index >= icount || !masks[dst->Index] || - masks[dst->Index] == dst->WriteMask) { - old_index = dst->Index; - /* We need to set dst->Index here so get free temporary - * will work. */ - dst->Index = cur_index++; - temp_index = rc_find_free_temporary(c); - rename_all(c, inst->Next, old_index, - dst->Index, temp_index); + + reader_data.Writer->U.I.DstReg.Index = new_index; + for(i = 0; i < reader_data.ReaderCount; i++) { + reader_data.Readers[i].U.Src->Index = new_index; } - assert(dst->Index < icount); - masks[dst->Index] |= dst->WriteMask; } } diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 9fbd36bfe6..c288834d24 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -86,6 +86,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define need_GL_EXT_stencil_two_side #define need_GL_ATI_separate_stencil #define need_GL_NV_vertex_program +#define need_GL_OES_EGL_image #include "main/remap_helper.h" @@ -134,6 +135,9 @@ static const struct dri_extension card_extensions[] = { {"GL_MESAX_texture_float", NULL}, {"GL_NV_blend_square", NULL}, {"GL_NV_vertex_program", GL_NV_vertex_program_functions}, +#if FEATURE_OES_EGL_image + {"GL_OES_EGL_image", GL_OES_EGL_image_functions }, +#endif {NULL, NULL} /* *INDENT-ON* */ }; diff --git a/src/mesa/drivers/dri/r300/r300_draw.c b/src/mesa/drivers/dri/r300/r300_draw.c index 81769e1ee5..0c4d8537c6 100644 --- a/src/mesa/drivers/dri/r300/r300_draw.c +++ b/src/mesa/drivers/dri/r300/r300_draw.c @@ -717,6 +717,10 @@ static void r300DrawPrims(struct gl_context *ctx, GLuint max_index) { GLboolean retval; + struct r300_context *r300 = R300_CONTEXT(ctx); + radeonContextPtr radeon = &r300->radeon; + + radeon_prepare_render(radeon); /* This check should get folded into just the places that * min/max index are really needed. diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 821318e7a5..44090ec289 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -327,8 +327,6 @@ void r300RunRenderPrimitive(struct gl_context * ctx, int start, int end, int pri BATCH_LOCALS(&rmesa->radeon); int type, num_verts; - radeon_prepare_render(&rmesa->radeon); - type = r300PrimitiveType(rmesa, prim); num_verts = r300NumVerts(rmesa, end - start, prim); diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index a6bda0e499..de66293999 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -382,5 +382,9 @@ void r300InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *fun functions->GenerateMipmap = radeonGenerateMipmap; +#if FEATURE_OES_EGL_image + functions->EGLImageTargetTexture2D = radeon_image_target_texture_2d; +#endif + driInitTextureFormats(); } diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 0116c5d2fa..ed9955b05d 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -428,6 +428,7 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format radeonTexObjPtr t; uint32_t pitch_val; uint32_t internalFormat, type, format; + gl_format texFormat; type = GL_BGRA; format = GL_UNSIGNED_BYTE; @@ -467,9 +468,6 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format radeon_miptree_unreference(&t->mt); radeon_miptree_unreference(&rImage->mt); - _mesa_init_teximage_fields(radeon->glCtx, target, texImage, - rb->base.Width, rb->base.Height, 1, 0, rb->cpp); - texImage->RowStride = rb->pitch / rb->cpp; rImage->bo = rb->bo; radeon_bo_ref(rImage->bo); t->bo = rb->bo; @@ -481,22 +479,35 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format pitch_val = rb->pitch; switch (rb->cpp) { case 4: - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) + if (texture_format == __DRI_TEXTURE_FORMAT_RGB) { + texFormat = MESA_FORMAT_RGB888; t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, ONE, W8Z8Y8X8); - else + } + else { + texFormat = MESA_FORMAT_ARGB8888; t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, W, W8Z8Y8X8); + } pitch_val /= 4; break; case 3: default: + texFormat = MESA_FORMAT_RGB888; t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, ONE, W8Z8Y8X8); pitch_val /= 4; break; case 2: + texFormat = MESA_FORMAT_RGB565; t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5); pitch_val /= 2; break; } + + _mesa_init_teximage_fields(radeon->glCtx, target, texImage, + rb->base.Width, rb->base.Height, 1, 0, + rb->cpp, texFormat); + texImage->RowStride = rb->pitch / rb->cpp; + + pitch_val--; t->pp_txsize = (((R300_TX_WIDTHMASK_MASK & ((rb->base.Width - 1) << R300_TX_WIDTHMASK_SHIFT))) | ((R300_TX_HEIGHTMASK_MASK & ((rb->base.Height - 1) << R300_TX_HEIGHTMASK_SHIFT)))); diff --git a/src/mesa/drivers/dri/r600/evergreen_render.c b/src/mesa/drivers/dri/r600/evergreen_render.c index 0c0eeca1fc..6e51832c87 100644 --- a/src/mesa/drivers/dri/r600/evergreen_render.c +++ b/src/mesa/drivers/dri/r600/evergreen_render.c @@ -909,6 +909,10 @@ static void evergreenDrawPrims(struct gl_context *ctx, { GLboolean retval = GL_FALSE; + context_t *context = EVERGREEN_CONTEXT(ctx); + radeonContextPtr radeon = &context->radeon; + radeon_prepare_render(radeon); + /* This check should get folded into just the places that * min/max index are really needed. */ diff --git a/src/mesa/drivers/dri/r600/evergreen_tex.c b/src/mesa/drivers/dri/r600/evergreen_tex.c index 58420ed123..3b5448a0e4 100644 --- a/src/mesa/drivers/dri/r600/evergreen_tex.c +++ b/src/mesa/drivers/dri/r600/evergreen_tex.c @@ -31,9 +31,7 @@ #include "main/enums.h" #include "main/image.h" #include "main/teximage.h" -#include "main/mipmap.h" #include "main/simple_list.h" -#include "main/texstore.h" #include "main/texobj.h" #include "texmem.h" @@ -1024,15 +1022,15 @@ static GLboolean evergreen_setup_hardware_state(struct gl_context * ctx, struct SETfield(t->SQ_TEX_RESOURCE5, t->maxLod - t->minLod, LAST_LEVEL_shift, LAST_LEVEL_mask); SETfield(t->SQ_TEX_SAMPLER1, - EG_S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 6), + EG_S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 8), EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_shift, EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_mask); SETfield(t->SQ_TEX_SAMPLER1, - EG_S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 6), + EG_S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 8), EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_shift, EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_mask); SETfield(t->SQ_TEX_SAMPLER2, - EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 6), + EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 8), EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_shift, EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_mask); @@ -1152,6 +1150,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur radeonTexObjPtr t; uint32_t pitch_val; uint32_t internalFormat, type, format; + gl_format texFormat; type = GL_BGRA; format = GL_UNSIGNED_BYTE; @@ -1191,10 +1190,6 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur radeon_miptree_unreference(&t->mt); radeon_miptree_unreference(&rImage->mt); - _mesa_init_teximage_fields(radeon->glCtx, target, texImage, - rb->base.Width, rb->base.Height, 1, 0, rb->cpp); - texImage->RowStride = rb->pitch / rb->cpp; - rImage->bo = rb->bo; radeon_bo_ref(rImage->bo); t->bo = rb->bo; @@ -1205,6 +1200,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur switch (rb->cpp) { case 4: if (glx_texture_format == __DRI_TEXTURE_FORMAT_RGB) { + texFormat = MESA_FORMAT_RGB888; SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); @@ -1218,6 +1214,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); } else { + texFormat = MESA_FORMAT_ARGB8888; SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); @@ -1236,6 +1233,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur case 3: default: // FMT_8_8_8 ??? + texFormat = MESA_FORMAT_RGB888; SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); @@ -1251,6 +1249,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur pitch_val /= 4; break; case 2: + texFormat = MESA_FORMAT_RGB565; SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); @@ -1267,6 +1266,11 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur break; } + _mesa_init_teximage_fields(radeon->glCtx, target, texImage, + rb->base.Width, rb->base.Height, 1, 0, + rb->cpp, texFormat); + texImage->RowStride = rb->pitch / rb->cpp; + pitch_val = (pitch_val + R700_TEXEL_PITCH_ALIGNMENT_MASK) & ~R700_TEXEL_PITCH_ALIGNMENT_MASK; diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index c882a9cce9..b6443bf0c5 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -94,6 +94,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define need_GL_EXT_stencil_two_side #define need_GL_ATI_separate_stencil #define need_GL_NV_vertex_program +#define need_GL_OES_EGL_image #include "main/remap_helper.h" @@ -148,6 +149,9 @@ static const struct dri_extension card_extensions[] = { {"GL_NV_vertex_program", GL_NV_vertex_program_functions}, {"GL_ARB_pixel_buffer_object", NULL}, {"GL_ARB_draw_elements_base_vertex", GL_ARB_draw_elements_base_vertex_functions }, +#if FEATURE_OES_EGL_image + {"GL_OES_EGL_image", GL_OES_EGL_image_functions}, +#endif {NULL, NULL} /* *INDENT-ON* */ }; diff --git a/src/mesa/drivers/dri/r600/r600_tex.c b/src/mesa/drivers/dri/r600/r600_tex.c index d6a58f410c..c3d68c41e5 100644 --- a/src/mesa/drivers/dri/r600/r600_tex.c +++ b/src/mesa/drivers/dri/r600/r600_tex.c @@ -475,5 +475,9 @@ void r600InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *fun functions->GenerateMipmap = radeonGenerateMipmap; +#if FEATURE_OES_EGL_image + functions->EGLImageTargetTexture2D = radeon_image_target_texture_2d; +#endif + driInitTextureFormats(); } diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c b/src/mesa/drivers/dri/r600/r600_texstate.c index 3869768bf0..aafa687577 100644 --- a/src/mesa/drivers/dri/r600/r600_texstate.c +++ b/src/mesa/drivers/dri/r600/r600_texstate.c @@ -1001,6 +1001,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo radeonTexObjPtr t; uint32_t pitch_val; uint32_t internalFormat, type, format; + gl_format texFormat; type = GL_BGRA; format = GL_UNSIGNED_BYTE; @@ -1046,10 +1047,6 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo radeon_miptree_unreference(&t->mt); radeon_miptree_unreference(&rImage->mt); - _mesa_init_teximage_fields(radeon->glCtx, target, texImage, - rb->base.Width, rb->base.Height, 1, 0, rb->cpp); - texImage->RowStride = rb->pitch / rb->cpp; - rImage->bo = rb->bo; radeon_bo_ref(rImage->bo); t->bo = rb->bo; @@ -1060,6 +1057,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo switch (rb->cpp) { case 4: if (glx_texture_format == __DRI_TEXTURE_FORMAT_RGB) { + texFormat = MESA_FORMAT_RGB888; SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); @@ -1072,6 +1070,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); } else { + texFormat = MESA_FORMAT_ARGB8888; SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); @@ -1089,6 +1088,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo case 3: default: // FMT_8_8_8 ??? + texFormat = MESA_FORMAT_RGB888; SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); @@ -1103,6 +1103,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo pitch_val /= 4; break; case 2: + texFormat = MESA_FORMAT_RGB565; SETfield(t->SQ_TEX_RESOURCE1, FMT_5_6_5, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); @@ -1118,6 +1119,11 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo break; } + _mesa_init_teximage_fields(radeon->glCtx, target, texImage, + rb->base.Width, rb->base.Height, 1, 0, + rb->cpp, texFormat); + texImage->RowStride = rb->pitch / rb->cpp; + pitch_val = (pitch_val + R700_TEXEL_PITCH_ALIGNMENT_MASK) & ~R700_TEXEL_PITCH_ALIGNMENT_MASK; diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c index 43a6355ad8..7361adffcf 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.c +++ b/src/mesa/drivers/dri/radeon/radeon_common.c @@ -171,6 +171,10 @@ void radeonSetCliprects(radeonContextPtr radeon) { __DRIdrawable *const drawable = radeon_get_drawable(radeon); __DRIdrawable *const readable = radeon_get_readable(radeon); + + if(drawable == NULL && readable == NULL) + return; + struct radeon_framebuffer *const draw_rfb = drawable->driverPrivate; struct radeon_framebuffer *const read_rfb = readable->driverPrivate; int x_off, y_off; diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c index 40544860b3..fecdd11905 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c @@ -39,6 +39,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drirenderbuffer.h" #include "drivers/common/meta.h" #include "main/context.h" +#include "main/framebuffer.h" #include "main/renderbuffer.h" #include "main/state.h" #include "main/simple_list.h" @@ -245,16 +246,9 @@ GLboolean radeonInitContext(radeonContextPtr radeon, DRI_CONF_TEXTURE_DEPTH_32 : DRI_CONF_TEXTURE_DEPTH_16; if (IS_R600_CLASS(radeon->radeonScreen)) { - int chip_family = radeon->radeonScreen->chip_family; - if (chip_family >= CHIP_FAMILY_CEDAR) { - radeon->texture_row_align = 512; - radeon->texture_rect_row_align = 512; - radeon->texture_compressed_row_align = 512; - } else { - radeon->texture_row_align = 256; - radeon->texture_rect_row_align = 256; - radeon->texture_compressed_row_align = 256; - } + radeon->texture_row_align = radeon->radeonScreen->group_bytes; + radeon->texture_rect_row_align = radeon->radeonScreen->group_bytes; + radeon->texture_compressed_row_align = radeon->radeonScreen->group_bytes; } else if (IS_R200_CLASS(radeon->radeonScreen) || IS_R100_CLASS(radeon->radeonScreen)) { radeon->texture_row_align = 32; @@ -379,12 +373,12 @@ GLboolean radeonUnbindContext(__DRIcontext * driContextPriv) static void radeon_make_kernel_renderbuffer_current(radeonContextPtr radeon, - struct radeon_framebuffer *draw) + struct gl_framebuffer *draw) { /* if radeon->fake */ struct radeon_renderbuffer *rb; - if ((rb = (void *)draw->base.Attachment[BUFFER_FRONT_LEFT].Renderbuffer)) { + if ((rb = (void *)draw->Attachment[BUFFER_FRONT_LEFT].Renderbuffer)) { if (!rb->bo) { rb->bo = radeon_bo_open(radeon->radeonScreen->bom, radeon->radeonScreen->frontOffset, @@ -396,7 +390,7 @@ radeon_make_kernel_renderbuffer_current(radeonContextPtr radeon, rb->cpp = radeon->radeonScreen->cpp; rb->pitch = radeon->radeonScreen->frontPitch * rb->cpp; } - if ((rb = (void *)draw->base.Attachment[BUFFER_BACK_LEFT].Renderbuffer)) { + if ((rb = (void *)draw->Attachment[BUFFER_BACK_LEFT].Renderbuffer)) { if (!rb->bo) { rb->bo = radeon_bo_open(radeon->radeonScreen->bom, radeon->radeonScreen->backOffset, @@ -408,7 +402,7 @@ radeon_make_kernel_renderbuffer_current(radeonContextPtr radeon, rb->cpp = radeon->radeonScreen->cpp; rb->pitch = radeon->radeonScreen->backPitch * rb->cpp; } - if ((rb = (void *)draw->base.Attachment[BUFFER_DEPTH].Renderbuffer)) { + if ((rb = (void *)draw->Attachment[BUFFER_DEPTH].Renderbuffer)) { if (!rb->bo) { rb->bo = radeon_bo_open(radeon->radeonScreen->bom, radeon->radeonScreen->depthOffset, @@ -420,7 +414,7 @@ radeon_make_kernel_renderbuffer_current(radeonContextPtr radeon, rb->cpp = radeon->radeonScreen->cpp; rb->pitch = radeon->radeonScreen->depthPitch * rb->cpp; } - if ((rb = (void *)draw->base.Attachment[BUFFER_STENCIL].Renderbuffer)) { + if ((rb = (void *)draw->Attachment[BUFFER_STENCIL].Renderbuffer)) { if (!rb->bo) { rb->bo = radeon_bo_open(radeon->radeonScreen->bom, radeon->radeonScreen->depthOffset, @@ -436,7 +430,7 @@ radeon_make_kernel_renderbuffer_current(radeonContextPtr radeon, static void radeon_make_renderbuffer_current(radeonContextPtr radeon, - struct radeon_framebuffer *draw) + struct gl_framebuffer *draw) { int size = 4096*4096*4; /* if radeon->fake */ @@ -448,7 +442,7 @@ radeon_make_renderbuffer_current(radeonContextPtr radeon, } - if ((rb = (void *)draw->base.Attachment[BUFFER_FRONT_LEFT].Renderbuffer)) { + if ((rb = (void *)draw->Attachment[BUFFER_FRONT_LEFT].Renderbuffer)) { if (!rb->bo) { rb->bo = radeon_bo_open(radeon->radeonScreen->bom, radeon->radeonScreen->frontOffset + @@ -461,7 +455,7 @@ radeon_make_renderbuffer_current(radeonContextPtr radeon, rb->cpp = radeon->radeonScreen->cpp; rb->pitch = radeon->radeonScreen->frontPitch * rb->cpp; } - if ((rb = (void *)draw->base.Attachment[BUFFER_BACK_LEFT].Renderbuffer)) { + if ((rb = (void *)draw->Attachment[BUFFER_BACK_LEFT].Renderbuffer)) { if (!rb->bo) { rb->bo = radeon_bo_open(radeon->radeonScreen->bom, radeon->radeonScreen->backOffset + @@ -474,7 +468,7 @@ radeon_make_renderbuffer_current(radeonContextPtr radeon, rb->cpp = radeon->radeonScreen->cpp; rb->pitch = radeon->radeonScreen->backPitch * rb->cpp; } - if ((rb = (void *)draw->base.Attachment[BUFFER_DEPTH].Renderbuffer)) { + if ((rb = (void *)draw->Attachment[BUFFER_DEPTH].Renderbuffer)) { if (!rb->bo) { rb->bo = radeon_bo_open(radeon->radeonScreen->bom, radeon->radeonScreen->depthOffset + @@ -487,7 +481,7 @@ radeon_make_renderbuffer_current(radeonContextPtr radeon, rb->cpp = radeon->radeonScreen->cpp; rb->pitch = radeon->radeonScreen->depthPitch * rb->cpp; } - if ((rb = (void *)draw->base.Attachment[BUFFER_STENCIL].Renderbuffer)) { + if ((rb = (void *)draw->Attachment[BUFFER_STENCIL].Renderbuffer)) { if (!rb->bo) { rb->bo = radeon_bo_open(radeon->radeonScreen->bom, radeon->radeonScreen->depthOffset + @@ -740,10 +734,9 @@ radeon_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable, buffers[i].flags); if (bo == NULL) { - fprintf(stderr, "failed to attach %s %d\n", regname, buffers[i].name); - + continue; } ret = radeon_bo_get_tiling(bo, &tiling_flags, &pitch); @@ -793,8 +786,8 @@ GLboolean radeonMakeCurrent(__DRIcontext * driContextPriv, __DRIdrawable * driReadPriv) { radeonContextPtr radeon; - struct radeon_framebuffer *drfb; - struct gl_framebuffer *readfb; + struct radeon_framebuffer *rdrfb; + struct gl_framebuffer *drfb, *readfb; if (!driContextPriv) { if (RADEON_DEBUG & RADEON_DRI) @@ -804,17 +797,25 @@ GLboolean radeonMakeCurrent(__DRIcontext * driContextPriv, } radeon = (radeonContextPtr) driContextPriv->driverPrivate; - drfb = driDrawPriv->driverPrivate; - readfb = driReadPriv->driverPrivate; + + if(driDrawPriv == NULL && driReadPriv == NULL) { + drfb = _mesa_create_framebuffer(&radeon->glCtx->Visual); + readfb = drfb; + } + else { + drfb = driDrawPriv->driverPrivate; + readfb = driReadPriv->driverPrivate; + } if (driContextPriv->driScreenPriv->dri2.enabled) { - radeon_update_renderbuffers(driContextPriv, driDrawPriv, GL_FALSE); + if(driDrawPriv) + radeon_update_renderbuffers(driContextPriv, driDrawPriv, GL_FALSE); if (driDrawPriv != driReadPriv) radeon_update_renderbuffers(driContextPriv, driReadPriv, GL_FALSE); _mesa_reference_renderbuffer(&radeon->state.color.rb, - &(radeon_get_renderbuffer(&drfb->base, BUFFER_BACK_LEFT)->base)); + &(radeon_get_renderbuffer(drfb, BUFFER_BACK_LEFT)->base)); _mesa_reference_renderbuffer(&radeon->state.depth.rb, - &(radeon_get_renderbuffer(&drfb->base, BUFFER_DEPTH)->base)); + &(radeon_get_renderbuffer(drfb, BUFFER_DEPTH)->base)); } else { radeon_make_renderbuffer_current(radeon, drfb); } @@ -822,35 +823,40 @@ GLboolean radeonMakeCurrent(__DRIcontext * driContextPriv, if (RADEON_DEBUG & RADEON_DRI) fprintf(stderr, "%s ctx %p dfb %p rfb %p\n", __FUNCTION__, radeon->glCtx, drfb, readfb); - driUpdateFramebufferSize(radeon->glCtx, driDrawPriv); + if(driDrawPriv) + driUpdateFramebufferSize(radeon->glCtx, driDrawPriv); if (driReadPriv != driDrawPriv) driUpdateFramebufferSize(radeon->glCtx, driReadPriv); - _mesa_make_current(radeon->glCtx, &drfb->base, readfb); + _mesa_make_current(radeon->glCtx, drfb, readfb); + if (driDrawPriv == NULL && driReadPriv == NULL) + _mesa_reference_framebuffer(&drfb, NULL); _mesa_update_state(radeon->glCtx); - if (radeon->glCtx->DrawBuffer == &drfb->base) { - if (driDrawPriv->swap_interval == (unsigned)-1) { - int i; - driDrawPriv->vblFlags = - (radeon->radeonScreen->irq != 0) - ? driGetDefaultVBlankFlags(&radeon-> - optionCache) - : VBLANK_FLAG_NO_IRQ; + if (radeon->glCtx->DrawBuffer == drfb) { + if(driDrawPriv != NULL) { + rdrfb = (struct radeon_framebuffer *)drfb; + if (driDrawPriv->swap_interval == (unsigned)-1) { + int i; + driDrawPriv->vblFlags = + (radeon->radeonScreen->irq != 0) + ? driGetDefaultVBlankFlags(&radeon-> + optionCache) + : VBLANK_FLAG_NO_IRQ; - driDrawableInitVBlank(driDrawPriv); - drfb->vbl_waited = driDrawPriv->vblSeq; + driDrawableInitVBlank(driDrawPriv); + rdrfb->vbl_waited = driDrawPriv->vblSeq; - for (i = 0; i < 2; i++) { - if (drfb->color_rb[i]) - drfb->color_rb[i]->vbl_pending = driDrawPriv->vblSeq; + for (i = 0; i < 2; i++) { + if (rdrfb->color_rb[i]) + rdrfb->color_rb[i]->vbl_pending = driDrawPriv->vblSeq; + } } - + radeon_window_moved(radeon); } - radeon_window_moved(radeon); - radeon_draw_buffer(radeon->glCtx, &drfb->base); + radeon_draw_buffer(radeon->glCtx, drfb); } diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c index cc9590213c..e3de534b5f 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_context.c @@ -66,6 +66,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define need_GL_EXT_fog_coord #define need_GL_EXT_secondary_color #define need_GL_EXT_framebuffer_object +#define need_GL_OES_EGL_image #include "main/remap_helper.h" #define DRIVER_DATE "20061018" @@ -101,6 +102,9 @@ static const struct dri_extension card_extensions[] = { "GL_ATI_texture_mirror_once", NULL }, { "GL_MESA_ycbcr_texture", NULL }, { "GL_NV_blend_square", NULL }, +#if FEATURE_OES_EGL_image + { "GL_OES_EGL_image", GL_OES_EGL_image_functions }, +#endif { NULL, NULL } }; diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c b/src/mesa/drivers/dri/radeon/radeon_fbo.c index 2a6fbaeaf0..a36a1dc94a 100644 --- a/src/mesa/drivers/dri/radeon/radeon_fbo.c +++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c @@ -199,6 +199,48 @@ radeon_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffe } +#if FEATURE_OES_EGL_image +static void +radeon_image_target_renderbuffer_storage(struct gl_context *ctx, + struct gl_renderbuffer *rb, + void *image_handle) +{ + radeonContextPtr radeon = RADEON_CONTEXT(ctx); + struct radeon_renderbuffer *rrb; + __DRIscreen *screen; + __DRIimage *image; + + screen = radeon->radeonScreen->driScreen; + image = screen->dri2.image->lookupEGLImage(screen, image_handle, + screen->loaderPrivate); + if (image == NULL) + return; + + rrb = radeon_renderbuffer(rb); + + if (ctx->Driver.Flush) + ctx->Driver.Flush(ctx); /* +r6/r7 */ + + if (rrb->bo) + radeon_bo_unref(rrb->bo); + rrb->bo = image->bo; + radeon_bo_ref(rrb->bo); + fprintf(stderr, "image->bo: %p, name: %d, rbs: w %d -> p %d\n", image->bo, image->bo->handle, + image->width, image->pitch); + + rrb->cpp = image->cpp; + rrb->pitch = image->pitch * image->cpp; + + rb->Format = image->format; + rb->InternalFormat = image->internal_format; + rb->Width = image->width; + rb->Height = image->height; + rb->Format = image->format; + rb->DataType = image->data_type; + rb->_BaseFormat = _mesa_base_fbo_format(radeon->glCtx, + image->internal_format); +} +#endif /** * Called for each hardware renderbuffer when a _window_ is resized. @@ -622,6 +664,10 @@ void radeon_fbo_init(struct radeon_context *radeon) #if FEATURE_EXT_framebuffer_blit radeon->glCtx->Driver.BlitFramebuffer = _mesa_meta_BlitFramebuffer; #endif +#if FEATURE_OES_EGL_image + radeon->glCtx->Driver.EGLImageTargetRenderbufferStorage = + radeon_image_target_renderbuffer_storage; +#endif } diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index 43ebc81093..b379240579 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -41,12 +41,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "main/mtypes.h" #include "main/framebuffer.h" #include "main/renderbuffer.h" +#include "main/fbobject.h" #define STANDALONE_MMIO #include "radeon_chipset.h" #include "radeon_macros.h" #include "radeon_screen.h" #include "radeon_common.h" +#include "radeon_common_context.h" #if defined(RADEON_R100) #include "radeon_context.h" #include "radeon_tex.h" @@ -398,6 +400,188 @@ static const struct __DRI2flushExtensionRec radeonFlushExtension = { dri2InvalidateDrawable, }; +static __DRIimage * +radeon_create_image_from_name(__DRIcontext *context, + int width, int height, int format, + int name, int pitch, void *loaderPrivate) +{ + __DRIimage *image; + radeonContextPtr radeon = context->driverPrivate; + + if (name == 0) + return NULL; + + image = CALLOC(sizeof *image); + if (image == NULL) + return NULL; + + switch (format) { + case __DRI_IMAGE_FORMAT_RGB565: + image->format = MESA_FORMAT_RGB565; + image->internal_format = GL_RGB; + image->data_type = GL_UNSIGNED_BYTE; + break; + case __DRI_IMAGE_FORMAT_XRGB8888: + image->format = MESA_FORMAT_XRGB8888; + image->internal_format = GL_RGB; + image->data_type = GL_UNSIGNED_BYTE; + break; + case __DRI_IMAGE_FORMAT_ARGB8888: + image->format = MESA_FORMAT_ARGB8888; + image->internal_format = GL_RGBA; + image->data_type = GL_UNSIGNED_BYTE; + break; + default: + free(image); + return NULL; + } + + image->data = loaderPrivate; + image->cpp = _mesa_get_format_bytes(image->format); + image->width = width; + image->pitch = pitch; + image->height = height; + + image->bo = radeon_bo_open(radeon->radeonScreen->bom, + (uint32_t)name, + image->pitch * image->height * image->cpp, + 0, + RADEON_GEM_DOMAIN_VRAM, + 0); + + if (image->bo == NULL) { + FREE(image); + return NULL; + } + + return image; +} + +static __DRIimage * +radeon_create_image_from_renderbuffer(__DRIcontext *context, + int renderbuffer, void *loaderPrivate) +{ + __DRIimage *image; + radeonContextPtr radeon = context->driverPrivate; + struct gl_renderbuffer *rb; + struct radeon_renderbuffer *rrb; + + rb = _mesa_lookup_renderbuffer(radeon->glCtx, renderbuffer); + if (!rb) { + _mesa_error(radeon->glCtx, + GL_INVALID_OPERATION, "glRenderbufferExternalMESA"); + return NULL; + } + + rrb = radeon_renderbuffer(rb); + image = CALLOC(sizeof *image); + if (image == NULL) + return NULL; + + image->internal_format = rb->InternalFormat; + image->format = rb->Format; + image->cpp = rrb->cpp; + image->data_type = rb->DataType; + image->data = loaderPrivate; + radeon_bo_ref(rrb->bo); + image->bo = rrb->bo; + + image->width = rb->Width; + image->height = rb->Height; + image->pitch = rrb->pitch / image->cpp; + + return image; +} + +static void +radeon_destroy_image(__DRIimage *image) +{ + radeon_bo_unref(image->bo); + FREE(image); +} + +static __DRIimage * +radeon_create_image(__DRIscreen *screen, + int width, int height, int format, + unsigned int use, + void *loaderPrivate) +{ + __DRIimage *image; + radeonScreenPtr radeonScreen = screen->private; + + image = CALLOC(sizeof *image); + if (image == NULL) + return NULL; + + switch (format) { + case __DRI_IMAGE_FORMAT_RGB565: + image->format = MESA_FORMAT_RGB565; + image->internal_format = GL_RGB; + image->data_type = GL_UNSIGNED_BYTE; + break; + case __DRI_IMAGE_FORMAT_XRGB8888: + image->format = MESA_FORMAT_XRGB8888; + image->internal_format = GL_RGB; + image->data_type = GL_UNSIGNED_BYTE; + break; + case __DRI_IMAGE_FORMAT_ARGB8888: + image->format = MESA_FORMAT_ARGB8888; + image->internal_format = GL_RGBA; + image->data_type = GL_UNSIGNED_BYTE; + break; + default: + free(image); + return NULL; + } + + image->data = loaderPrivate; + image->cpp = _mesa_get_format_bytes(image->format); + image->width = width; + image->height = height; + image->pitch = ((image->cpp * image->width + 255) & ~255) / image->cpp; + + image->bo = radeon_bo_open(radeonScreen->bom, + 0, + image->pitch * image->height * image->cpp, + 0, + RADEON_GEM_DOMAIN_VRAM, + 0); + + if (image->bo == NULL) { + FREE(image); + return NULL; + } + + return image; +} + +static GLboolean +radeon_query_image(__DRIimage *image, int attrib, int *value) +{ + switch (attrib) { + case __DRI_IMAGE_ATTRIB_STRIDE: + *value = image->pitch * image->cpp; + return GL_TRUE; + case __DRI_IMAGE_ATTRIB_HANDLE: + *value = image->bo->handle; + return GL_TRUE; + case __DRI_IMAGE_ATTRIB_NAME: + radeon_gem_get_kernel_name(image->bo, (uint32_t *) value); + return GL_TRUE; + default: + return GL_FALSE; + } +} + +static struct __DRIimageExtensionRec radeonImageExtension = { + { __DRI_IMAGE, __DRI_IMAGE_VERSION }, + radeon_create_image_from_name, + radeon_create_image_from_renderbuffer, + radeon_destroy_image, + radeon_create_image, + radeon_query_image +}; + static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id) { screen->device_id = device_id; @@ -1138,6 +1322,12 @@ radeonCreateScreen( __DRIscreen *sPriv ) else screen->chip_flags |= RADEON_CLASS_R600; + /* set group bytes for r6xx+ */ + if (screen->chip_family >= CHIP_FAMILY_CEDAR) + screen->group_bytes = 512; + else + screen->group_bytes = 256; + screen->cpp = dri_priv->bpp / 8; screen->AGPMode = dri_priv->AGPMode; @@ -1382,8 +1572,13 @@ radeonCreateScreen2(__DRIscreen *sPriv) else screen->chip_flags |= RADEON_CLASS_R600; - /* r6xx+ tiling */ - if (IS_R600_CLASS(screen) && (sPriv->drm_version.minor >= 6)) { + /* r6xx+ tiling, default group bytes */ + if (screen->chip_family >= CHIP_FAMILY_CEDAR) + screen->group_bytes = 512; + else + screen->group_bytes = 256; + if (IS_R600_CLASS(screen) && (sPriv->drm_version.minor >= 6) && + (screen->chip_family < CHIP_FAMILY_CEDAR)) { ret = radeonGetParam(sPriv, RADEON_INFO_TILE_CONFIG, &temp); if (ret) fprintf(stderr, "failed to get tiling info\n"); @@ -1507,6 +1702,7 @@ radeonCreateScreen2(__DRIscreen *sPriv) #endif screen->extensions[i++] = &radeonFlushExtension.base; + screen->extensions[i++] = &radeonImageExtension.base; screen->extensions[i++] = NULL; sPriv->extensions = screen->extensions; diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.h b/src/mesa/drivers/dri/radeon/radeon_screen.h index 2b33201a53..417ebf3b06 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.h +++ b/src/mesa/drivers/dri/radeon/radeon_screen.h @@ -121,6 +121,17 @@ typedef struct radeon_screen { GLint r7xx_bank_op; } radeonScreenRec, *radeonScreenPtr; +struct __DRIimageRec { + struct radeon_bo *bo; + GLenum internal_format; + GLuint format; + GLenum data_type; + int width, height; /* in pixels */ + int pitch; /* in pixels */ + int cpp; + void *data; +}; + #define IS_R100_CLASS(screen) \ ((screen->chip_flags & RADEON_CLASS_MASK) == RADEON_CLASS_R100) #define IS_R200_CLASS(screen) \ diff --git a/src/mesa/drivers/dri/radeon/radeon_swtcl.c b/src/mesa/drivers/dri/radeon/radeon_swtcl.c index f5b0df6ef5..ff3506b225 100644 --- a/src/mesa/drivers/dri/radeon/radeon_swtcl.c +++ b/src/mesa/drivers/dri/radeon/radeon_swtcl.c @@ -412,6 +412,8 @@ static GLboolean radeon_run_render( struct gl_context *ctx, return GL_TRUE; radeon_prepare_render(&rmesa->radeon); + if (rmesa->radeon.NewGLState) + radeonValidateState( ctx ); tnl->Driver.Render.Start( ctx ); diff --git a/src/mesa/drivers/dri/radeon/radeon_tcl.c b/src/mesa/drivers/dri/radeon/radeon_tcl.c index c59b413012..5d2e8f4870 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tcl.c +++ b/src/mesa/drivers/dri/radeon/radeon_tcl.c @@ -253,6 +253,8 @@ void radeonTclPrimitive( struct gl_context *ctx, GLuint newprim = hw_prim | RADEON_CP_VC_CNTL_TCL_ENABLE; radeon_prepare_render(&rmesa->radeon); + if (rmesa->radeon.NewGLState) + radeonValidateState( ctx ); if (newprim != rmesa->tcl.hw_primitive || !discrete_prim[hw_prim&0xf]) { diff --git a/src/mesa/drivers/dri/radeon/radeon_tex.c b/src/mesa/drivers/dri/radeon/radeon_tex.c index d5285e24cd..83b1d1b1d7 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tex.c +++ b/src/mesa/drivers/dri/radeon/radeon_tex.c @@ -465,5 +465,9 @@ void radeonInitTextureFuncs( radeonContextPtr radeon, struct dd_function_table * functions->MapTexture = radeonMapTexture; functions->UnmapTexture = radeonUnmapTexture; +#if FEATURE_OES_EGL_image + functions->EGLImageTargetTexture2D = radeon_image_target_texture_2d; +#endif + driInitTextureFormats(); } diff --git a/src/mesa/drivers/dri/radeon/radeon_texstate.c b/src/mesa/drivers/dri/radeon/radeon_texstate.c index dd8ecdd500..32c021cb54 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texstate.c +++ b/src/mesa/drivers/dri/radeon/radeon_texstate.c @@ -653,6 +653,7 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_form radeonTexObjPtr t; uint32_t pitch_val; uint32_t internalFormat, type, format; + gl_format texFormat; type = GL_BGRA; format = GL_UNSIGNED_BYTE; @@ -692,10 +693,6 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_form radeon_miptree_unreference(&t->mt); radeon_miptree_unreference(&rImage->mt); - _mesa_init_teximage_fields(radeon->glCtx, target, texImage, - rb->base.Width, rb->base.Height, 1, 0, rb->cpp); - texImage->RowStride = rb->pitch / rb->cpp; - rImage->bo = rb->bo; radeon_bo_ref(rImage->bo); t->bo = rb->bo; @@ -705,23 +702,34 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_form t->override_offset = 0; switch (rb->cpp) { case 4: - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) + if (texture_format == __DRI_TEXTURE_FORMAT_RGB) { t->pp_txformat = tx_table[MESA_FORMAT_RGB888].format; - else + texFormat = MESA_FORMAT_RGB888; + } + else { t->pp_txformat = tx_table[MESA_FORMAT_ARGB8888].format; + texFormat = MESA_FORMAT_ARGB8888; + } t->pp_txfilter |= tx_table[MESA_FORMAT_ARGB8888].filter; break; case 3: default: + texFormat = MESA_FORMAT_RGB888; t->pp_txformat = tx_table[MESA_FORMAT_RGB888].format; t->pp_txfilter |= tx_table[MESA_FORMAT_RGB888].filter; break; case 2: + texFormat = MESA_FORMAT_RGB565; t->pp_txformat = tx_table[MESA_FORMAT_RGB565].format; t->pp_txfilter |= tx_table[MESA_FORMAT_RGB565].filter; break; } + _mesa_init_teximage_fields(radeon->glCtx, target, texImage, + rb->base.Width, rb->base.Height, 1, 0, + rb->cpp, texFormat); + texImage->RowStride = rb->pitch / rb->cpp; + t->pp_txpitch &= (1 << 13) -1; pitch_val = rb->pitch; diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c index 18ccb512d7..8b1e34fe76 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texture.c +++ b/src/mesa/drivers/dri/radeon/radeon_texture.c @@ -1007,3 +1007,67 @@ unsigned radeonIsFormatRenderable(gl_format mesa_format) return 0; } } + +#if FEATURE_OES_EGL_image +void radeon_image_target_texture_2d(struct gl_context *ctx, GLenum target, + struct gl_texture_object *texObj, + struct gl_texture_image *texImage, + GLeglImageOES image_handle) +{ + radeonContextPtr radeon = RADEON_CONTEXT(ctx); + radeonTexObj *t = radeon_tex_obj(texObj); + radeon_texture_image *radeonImage = get_radeon_texture_image(texImage); + __DRIscreen *screen; + __DRIimage *image; + + screen = radeon->dri.screen; + image = screen->dri2.image->lookupEGLImage(screen, image_handle, + screen->loaderPrivate); + if (image == NULL) + return; + + radeonFreeTexImageData(ctx, texImage); + + texImage->Width = image->width; + texImage->Height = image->height; + texImage->Depth = 1; + texImage->_BaseFormat = GL_RGBA; + texImage->TexFormat = image->format; + texImage->RowStride = image->pitch; + texImage->InternalFormat = image->internal_format; + + if(t->mt) + { + radeon_miptree_unreference(&t->mt); + t->mt = NULL; + } + + /* NOTE: The following is *very* ugly and will probably break. But + I don't know how to deal with it, without creating a whole new + function like radeon_miptree_from_bo() so I'm going with the + easy but error-prone way. */ + + radeon_try_alloc_miptree(radeon, t); + + radeonImage->mtface = _mesa_tex_target_to_face(target); + radeonImage->mtlevel = 0; + radeon_miptree_reference(t->mt, &radeonImage->mt); + + if (t->mt == NULL) + { + radeon_print(RADEON_TEXTURE, RADEON_VERBOSE, + "%s Failed to allocate miptree.\n", __func__); + return; + } + + /* Particularly ugly: this is guaranteed to break, if image->bo is + not of the required size for a miptree. */ + radeon_bo_unref(t->mt->bo); + radeon_bo_ref(image->bo); + t->mt->bo = image->bo; + + if (!radeon_miptree_matches_image(t->mt, &radeonImage->base, + radeonImage->mtface, 0)) + fprintf(stderr, "miptree doesn't match image\n"); +} +#endif diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.h b/src/mesa/drivers/dri/radeon/radeon_texture.h index 9138a7d554..a1908c6bc7 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texture.h +++ b/src/mesa/drivers/dri/radeon/radeon_texture.h @@ -137,4 +137,11 @@ void radeonCopyTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level, unsigned radeonIsFormatRenderable(gl_format mesa_format); +#if FEATURE_OES_EGL_image +void radeon_image_target_texture_2d(struct gl_context *ctx, GLenum target, + struct gl_texture_object *texObj, + struct gl_texture_image *texImage, + GLeglImageOES image_handle); +#endif + #endif diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c index b3aaa0e504..92fb4f4488 100644 --- a/src/mesa/drivers/dri/savage/savage_xmesa.c +++ b/src/mesa/drivers/dri/savage/savage_xmesa.c @@ -50,7 +50,6 @@ #include "savagespan.h" #include "savagetris.h" #include "savageioctl.h" -#include "savage_bci.h" #include "savage_dri.h" diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c index 52ba3acf65..c7940e9c0d 100644 --- a/src/mesa/drivers/dri/swrast/swrast.c +++ b/src/mesa/drivers/dri/swrast/swrast.c @@ -48,7 +48,6 @@ #include "utils.h" #include "main/teximage.h" -#include "main/texfetch.h" #include "main/texformat.h" #include "main/texstate.h" @@ -69,6 +68,7 @@ static void swrastSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, struct gl_texture_object *texObj; struct gl_texture_image *texImage; uint32_t internalFormat; + gl_format texFormat; dri_ctx = pDRICtx->driverPrivate; @@ -82,15 +82,13 @@ static void swrastSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, sPriv->swrast_loader->getDrawableInfo(dPriv, &x, &y, &w, &h, dPriv->loaderPrivate); - _mesa_init_teximage_fields(&dri_ctx->Base, target, texImage, - w, h, 1, 0, internalFormat); - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) - texImage->TexFormat = MESA_FORMAT_XRGB8888; + texFormat = MESA_FORMAT_XRGB8888; else - texImage->TexFormat = MESA_FORMAT_ARGB8888; + texFormat = MESA_FORMAT_ARGB8888; - _mesa_set_fetch_functions(texImage, 2); + _mesa_init_teximage_fields(&dri_ctx->Base, target, texImage, + w, h, 1, 0, internalFormat, texFormat); sPriv->swrast_loader->getImage(dPriv, x, y, w, h, (char *)texImage->Data, dPriv->loaderPrivate); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_tex.c b/src/mesa/drivers/dri/tdfx/tdfx_tex.c index 0326b847cb..4cca243d07 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_tex.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_tex.c @@ -698,8 +698,8 @@ convertPalette(FxU32 data[256], const struct gl_color_table *table) return GR_TEXTABLE_PALETTE_6666_EXT; default: /* XXX fixme: how can this happen? */ - _mesa_error(NULL, GL_INVALID_ENUM, "convertPalette: table->Format == %s", - _mesa_lookup_enum_by_nr(table->Format)); + _mesa_error(NULL, GL_INVALID_ENUM, "convertPalette: table->_BaseFormat == %s", + _mesa_lookup_enum_by_nr(table->_BaseFormat)); return GR_TEXTABLE_PALETTE; } } diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c index 37dc35cbed..10ba6b7931 100644 --- a/src/mesa/drivers/osmesa/osmesa.c +++ b/src/mesa/drivers/osmesa/osmesa.c @@ -1327,10 +1327,12 @@ OSMesaMakeCurrent( OSMesaContext osmesa, void *buffer, GLenum type, * that converts rendering from CHAN_BITS to the user-requested channel * size. */ - osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, osmesa->format, type); - _mesa_remove_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT); - _mesa_add_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT, osmesa->rb); - assert(osmesa->rb->RefCount == 2); + if (!osmesa->rb) { + osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, osmesa->format, type); + _mesa_remove_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT); + _mesa_add_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT, osmesa->rb); + assert(osmesa->rb->RefCount == 2); + } /* Set renderbuffer fields. Set width/height = 0 to force * osmesa_renderbuffer_storage() being called by _mesa_resize_framebuffer() diff --git a/src/mesa/drivers/x11/fakeglx.c b/src/mesa/drivers/x11/fakeglx.c index f1e62b6bd4..577e27d4da 100644 --- a/src/mesa/drivers/x11/fakeglx.c +++ b/src/mesa/drivers/x11/fakeglx.c @@ -868,6 +868,7 @@ register_with_display(Display *dpy) XExtCodes *c = XAddExtension(dpy); ext = dpy->ext_procs; /* new extension is at head of list */ assert(c->extension == ext->codes.extension); + (void) c; /* silence warning */ ext->name = _mesa_strdup(extName); ext->close_display = close_display_callback; } diff --git a/src/mesa/drivers/x11/glxapi.c b/src/mesa/drivers/x11/glxapi.c index 8c3f2730f3..255a37bf29 100644 --- a/src/mesa/drivers/x11/glxapi.c +++ b/src/mesa/drivers/x11/glxapi.c @@ -58,7 +58,6 @@ struct display_dispatch { #ifdef GLX_INDIRECT_RENDERING #include "glapi/glapitable.h" -#include "glapi/glapidispatch.h" #define KEYWORD1 PUBLIC @@ -69,10 +68,10 @@ struct display_dispatch { #endif #define DISPATCH(FUNC, ARGS, MESSAGE) \ - CALL_ ## FUNC(GET_DISPATCH(), ARGS); + GET_DISPATCH()->FUNC ARGS #define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \ - return CALL_ ## FUNC(GET_DISPATCH(), ARGS); + return GET_DISPATCH()->FUNC ARGS /* skip normal ones */ #define _GLAPI_SKIP_NORMAL_ENTRY_POINTS diff --git a/src/mesa/main/accum.h b/src/mesa/main/accum.h index def692a73a..9344244497 100644 --- a/src/mesa/main/accum.h +++ b/src/mesa/main/accum.h @@ -37,8 +37,11 @@ #ifndef ACCUM_H #define ACCUM_H +#include "main/glheader.h" +#include "main/mfeatures.h" -#include "main/mtypes.h" +struct _glapi_table; +struct gl_context; #if FEATURE_accum diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c index 172c33b47b..c22e18c9fb 100644 --- a/src/mesa/main/api_arrayelt.c +++ b/src/mesa/main/api_arrayelt.c @@ -22,6 +22,14 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/** + * This file implements the glArrayElement() function. + * It involves looking at the format/type of all the enabled vertex arrays + * and emitting a list of pointers to functions which set the per-vertex + * state for the element/index. + */ + + /* Author: * Keith Whitwell <keith@tungstengraphics.com> */ @@ -70,11 +78,13 @@ typedef struct { */ #define TYPE_IDX(t) ( (t) == GL_DOUBLE ? 7 : (t) & 7 ) +#define NUM_TYPES 8 + #if FEATURE_arrayelt -static const int ColorFuncs[2][8] = { +static const int ColorFuncs[2][NUM_TYPES] = { { _gloffset_Color3bv, _gloffset_Color3ubv, @@ -97,7 +107,7 @@ static const int ColorFuncs[2][8] = { }, }; -static const int VertexFuncs[3][8] = { +static const int VertexFuncs[3][NUM_TYPES] = { { -1, -1, @@ -130,7 +140,7 @@ static const int VertexFuncs[3][8] = { }, }; -static const int IndexFuncs[8] = { +static const int IndexFuncs[NUM_TYPES] = { -1, _gloffset_Indexubv, _gloffset_Indexsv, @@ -141,7 +151,7 @@ static const int IndexFuncs[8] = { _gloffset_Indexdv, }; -static const int NormalFuncs[8] = { +static const int NormalFuncs[NUM_TYPES] = { _gloffset_Normal3bv, -1, _gloffset_Normal3sv, @@ -153,8 +163,8 @@ static const int NormalFuncs[8] = { }; /* Note: _gloffset_* for these may not be a compile-time constant. */ -static int SecondaryColorFuncs[8]; -static int FogCoordFuncs[8]; +static int SecondaryColorFuncs[NUM_TYPES]; +static int FogCoordFuncs[NUM_TYPES]; /** @@ -163,39 +173,46 @@ static int FogCoordFuncs[8]; /* GL_BYTE attributes */ -static void GLAPIENTRY VertexAttrib1NbvNV(GLuint index, const GLbyte *v) +static void +VertexAttrib1NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1bvNV(GLuint index, const GLbyte *v) +static void +VertexAttrib1bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NbvNV(GLuint index, const GLbyte *v) +static void +VertexAttrib2NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2bvNV(GLuint index, const GLbyte *v) +static void +VertexAttrib2bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NbvNV(GLuint index, const GLbyte *v) +static void +VertexAttrib3NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3bvNV(GLuint index, const GLbyte *v) +static void +VertexAttrib3bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NbvNV(GLuint index, const GLbyte *v) +static void +VertexAttrib4NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), @@ -203,94 +220,114 @@ static void GLAPIENTRY VertexAttrib4NbvNV(GLuint index, const GLbyte *v) BYTE_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4bvNV(GLuint index, const GLbyte *v) +static void +VertexAttrib4bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); } /* GL_UNSIGNED_BYTE attributes */ -static void GLAPIENTRY VertexAttrib1NubvNV(GLuint index, const GLubyte *v) +static void +VertexAttrib1NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1ubvNV(GLuint index, const GLubyte *v) +static void +VertexAttrib1ubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NubvNV(GLuint index, const GLubyte *v) +static void +VertexAttrib2NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), - UBYTE_TO_FLOAT(v[1]))); + UBYTE_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2ubvNV(GLuint index, const GLubyte *v) +static void +VertexAttrib2ubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NubvNV(GLuint index, const GLubyte *v) +static void +VertexAttrib3NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3ubvNV(GLuint index, const GLubyte *v) +static void +VertexAttrib3ubvNV(GLuint index, const GLubyte *v) { - CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); + CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], + (GLfloat)v[1], (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NubvNV(GLuint index, const GLubyte *v) +static void +VertexAttrib4NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), - UBYTE_TO_FLOAT(v[1]), - UBYTE_TO_FLOAT(v[2]), - UBYTE_TO_FLOAT(v[3]))); + UBYTE_TO_FLOAT(v[1]), + UBYTE_TO_FLOAT(v[2]), + UBYTE_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4ubvNV(GLuint index, const GLubyte *v) +static void +VertexAttrib4ubvNV(GLuint index, const GLubyte *v) { - CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); + CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], + (GLfloat)v[1], (GLfloat)v[2], + (GLfloat)v[3])); } /* GL_SHORT attributes */ -static void GLAPIENTRY VertexAttrib1NsvNV(GLuint index, const GLshort *v) +static void +VertexAttrib1NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1svNV(GLuint index, const GLshort *v) +static void +VertexAttrib1svNV(GLuint index, const GLshort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NsvNV(GLuint index, const GLshort *v) +static void +VertexAttrib2NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), - SHORT_TO_FLOAT(v[1]))); + SHORT_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2svNV(GLuint index, const GLshort *v) +static void +VertexAttrib2svNV(GLuint index, const GLshort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NsvNV(GLuint index, const GLshort *v) +static void +VertexAttrib3NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3svNV(GLuint index, const GLshort *v) +static void +VertexAttrib3svNV(GLuint index, const GLshort *v) { - CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); + CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NsvNV(GLuint index, const GLshort *v) +static void +VertexAttrib4NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), @@ -298,47 +335,58 @@ static void GLAPIENTRY VertexAttrib4NsvNV(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4svNV(GLuint index, const GLshort *v) +static void +VertexAttrib4svNV(GLuint index, const GLshort *v) { - CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); + CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2], (GLfloat)v[3])); } /* GL_UNSIGNED_SHORT attributes */ -static void GLAPIENTRY VertexAttrib1NusvNV(GLuint index, const GLushort *v) +static void +VertexAttrib1NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1usvNV(GLuint index, const GLushort *v) +static void +VertexAttrib1usvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NusvNV(GLuint index, const GLushort *v) +static void +VertexAttrib2NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2usvNV(GLuint index, const GLushort *v) +static void +VertexAttrib2usvNV(GLuint index, const GLushort *v) { - CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); + CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], + (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NusvNV(GLuint index, const GLushort *v) +static void +VertexAttrib3NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), USHORT_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3usvNV(GLuint index, const GLushort *v) +static void +VertexAttrib3usvNV(GLuint index, const GLushort *v) { - CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); + CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NusvNV(GLuint index, const GLushort *v) +static void +VertexAttrib4NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), @@ -346,95 +394,116 @@ static void GLAPIENTRY VertexAttrib4NusvNV(GLuint index, const GLushort *v) USHORT_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4usvNV(GLuint index, const GLushort *v) +static void +VertexAttrib4usvNV(GLuint index, const GLushort *v) { - CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); + CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2], (GLfloat)v[3])); } /* GL_INT attributes */ -static void GLAPIENTRY VertexAttrib1NivNV(GLuint index, const GLint *v) +static void +VertexAttrib1NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1ivNV(GLuint index, const GLint *v) +static void +VertexAttrib1ivNV(GLuint index, const GLint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NivNV(GLuint index, const GLint *v) +static void +VertexAttrib2NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2ivNV(GLuint index, const GLint *v) +static void +VertexAttrib2ivNV(GLuint index, const GLint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NivNV(GLuint index, const GLint *v) +static void +VertexAttrib3NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3ivNV(GLuint index, const GLint *v) +static void +VertexAttrib3ivNV(GLuint index, const GLint *v) { - CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); + CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NivNV(GLuint index, const GLint *v) +static void +VertexAttrib4NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), - INT_TO_FLOAT(v[1]), - INT_TO_FLOAT(v[2]), - INT_TO_FLOAT(v[3]))); + INT_TO_FLOAT(v[1]), + INT_TO_FLOAT(v[2]), + INT_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4ivNV(GLuint index, const GLint *v) +static void +VertexAttrib4ivNV(GLuint index, const GLint *v) { - CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); + CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2], (GLfloat)v[3])); } /* GL_UNSIGNED_INT attributes */ -static void GLAPIENTRY VertexAttrib1NuivNV(GLuint index, const GLuint *v) +static void +VertexAttrib1NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1uivNV(GLuint index, const GLuint *v) +static void +VertexAttrib1uivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NuivNV(GLuint index, const GLuint *v) +static void +VertexAttrib2NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), - UINT_TO_FLOAT(v[1]))); + UINT_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2uivNV(GLuint index, const GLuint *v) +static void +VertexAttrib2uivNV(GLuint index, const GLuint *v) { - CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); + CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], + (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NuivNV(GLuint index, const GLuint *v) +static void +VertexAttrib3NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), UINT_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3uivNV(GLuint index, const GLuint *v) +static void +VertexAttrib3uivNV(GLuint index, const GLuint *v) { - CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); + CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NuivNV(GLuint index, const GLuint *v) +static void +VertexAttrib4NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), @@ -442,51 +511,61 @@ static void GLAPIENTRY VertexAttrib4NuivNV(GLuint index, const GLuint *v) UINT_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4uivNV(GLuint index, const GLuint *v) +static void +VertexAttrib4uivNV(GLuint index, const GLuint *v) { - CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); + CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2], (GLfloat)v[3])); } /* GL_FLOAT attributes */ -static void GLAPIENTRY VertexAttrib1fvNV(GLuint index, const GLfloat *v) +static void +VertexAttrib1fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib1fvNV(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib2fvNV(GLuint index, const GLfloat *v) +static void +VertexAttrib2fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib2fvNV(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib3fvNV(GLuint index, const GLfloat *v) +static void +VertexAttrib3fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib3fvNV(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib4fvNV(GLuint index, const GLfloat *v) +static void +VertexAttrib4fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib4fvNV(GET_DISPATCH(), (index, v)); } /* GL_DOUBLE attributes */ -static void GLAPIENTRY VertexAttrib1dvNV(GLuint index, const GLdouble *v) +static void +VertexAttrib1dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib1dvNV(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib2dvNV(GLuint index, const GLdouble *v) +static void +VertexAttrib2dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib2dvNV(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib3dvNV(GLuint index, const GLdouble *v) +static void +VertexAttrib3dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib3dvNV(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib4dvNV(GLuint index, const GLdouble *v) +static void +VertexAttrib4dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib4dvNV(GET_DISPATCH(), (index, v)); } @@ -495,7 +574,7 @@ static void GLAPIENTRY VertexAttrib4dvNV(GLuint index, const GLdouble *v) /* * Array [size][type] of VertexAttrib functions */ -static attrib_func AttribFuncsNV[2][4][8] = { +static attrib_func AttribFuncsNV[2][4][NUM_TYPES] = { { /* non-normalized */ { @@ -599,39 +678,46 @@ static attrib_func AttribFuncsNV[2][4][8] = { /* GL_BYTE attributes */ -static void GLAPIENTRY VertexAttrib1NbvARB(GLuint index, const GLbyte *v) +static void +VertexAttrib1NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1bvARB(GLuint index, const GLbyte *v) +static void +VertexAttrib1bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NbvARB(GLuint index, const GLbyte *v) +static void +VertexAttrib2NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2bvARB(GLuint index, const GLbyte *v) +static void +VertexAttrib2bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NbvARB(GLuint index, const GLbyte *v) +static void +VertexAttrib3NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3bvARB(GLuint index, const GLbyte *v) +static void +VertexAttrib3bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NbvARB(GLuint index, const GLbyte *v) +static void +VertexAttrib4NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), @@ -639,142 +725,188 @@ static void GLAPIENTRY VertexAttrib4NbvARB(GLuint index, const GLbyte *v) BYTE_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4bvARB(GLuint index, const GLbyte *v) +static void +VertexAttrib4bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); } /* GL_UNSIGNED_BYTE attributes */ -static void GLAPIENTRY VertexAttrib1NubvARB(GLuint index, const GLubyte *v) +static void +VertexAttrib1NubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1ubvARB(GLuint index, const GLubyte *v) +static void +VertexAttrib1ubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NubvARB(GLuint index, const GLubyte *v) +static void +VertexAttrib2NubvARB(GLuint index, const GLubyte *v) { - CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), - UBYTE_TO_FLOAT(v[1]))); + CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, + UBYTE_TO_FLOAT(v[0]), + UBYTE_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2ubvARB(GLuint index, const GLubyte *v) +static void +VertexAttrib2ubvARB(GLuint index, const GLubyte *v) { - CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); + CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, + (GLfloat)v[0], (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NubvARB(GLuint index, const GLubyte *v) +static void +VertexAttrib3NubvARB(GLuint index, const GLubyte *v) { - CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), - UBYTE_TO_FLOAT(v[1]), - UBYTE_TO_FLOAT(v[2]))); + CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, + UBYTE_TO_FLOAT(v[0]), + UBYTE_TO_FLOAT(v[1]), + UBYTE_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3ubvARB(GLuint index, const GLubyte *v) +static void +VertexAttrib3ubvARB(GLuint index, const GLubyte *v) { - CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); + CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, + (GLfloat)v[0], + (GLfloat)v[1], + (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NubvARB(GLuint index, const GLubyte *v) +static void +VertexAttrib4NubvARB(GLuint index, const GLubyte *v) { - CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), - UBYTE_TO_FLOAT(v[1]), - UBYTE_TO_FLOAT(v[2]), - UBYTE_TO_FLOAT(v[3]))); + CALL_VertexAttrib4fARB(GET_DISPATCH(), + (index, + UBYTE_TO_FLOAT(v[0]), + UBYTE_TO_FLOAT(v[1]), + UBYTE_TO_FLOAT(v[2]), + UBYTE_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4ubvARB(GLuint index, const GLubyte *v) +static void +VertexAttrib4ubvARB(GLuint index, const GLubyte *v) { - CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); + CALL_VertexAttrib4fARB(GET_DISPATCH(), + (index, + (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2], (GLfloat)v[3])); } /* GL_SHORT attributes */ -static void GLAPIENTRY VertexAttrib1NsvARB(GLuint index, const GLshort *v) +static void +VertexAttrib1NsvARB(GLuint index, const GLshort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1svARB(GLuint index, const GLshort *v) +static void +VertexAttrib1svARB(GLuint index, const GLshort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NsvARB(GLuint index, const GLshort *v) +static void +VertexAttrib2NsvARB(GLuint index, const GLshort *v) { - CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), - SHORT_TO_FLOAT(v[1]))); + CALL_VertexAttrib2fARB(GET_DISPATCH(), + (index, SHORT_TO_FLOAT(v[0]), + SHORT_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2svARB(GLuint index, const GLshort *v) +static void +VertexAttrib2svARB(GLuint index, const GLshort *v) { - CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); + CALL_VertexAttrib2fARB(GET_DISPATCH(), + (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NsvARB(GLuint index, const GLshort *v) +static void +VertexAttrib3NsvARB(GLuint index, const GLshort *v) { - CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), - SHORT_TO_FLOAT(v[1]), - SHORT_TO_FLOAT(v[2]))); + CALL_VertexAttrib3fARB(GET_DISPATCH(), + (index, + SHORT_TO_FLOAT(v[0]), + SHORT_TO_FLOAT(v[1]), + SHORT_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3svARB(GLuint index, const GLshort *v) +static void +VertexAttrib3svARB(GLuint index, const GLshort *v) { - CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); + CALL_VertexAttrib3fARB(GET_DISPATCH(), + (index, + (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NsvARB(GLuint index, const GLshort *v) +static void +VertexAttrib4NsvARB(GLuint index, const GLshort *v) { - CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), - SHORT_TO_FLOAT(v[1]), - SHORT_TO_FLOAT(v[2]), - SHORT_TO_FLOAT(v[3]))); + CALL_VertexAttrib4fARB(GET_DISPATCH(), + (index, + SHORT_TO_FLOAT(v[0]), + SHORT_TO_FLOAT(v[1]), + SHORT_TO_FLOAT(v[2]), + SHORT_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4svARB(GLuint index, const GLshort *v) +static void +VertexAttrib4svARB(GLuint index, const GLshort *v) { - CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); + CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2], (GLfloat)v[3])); } /* GL_UNSIGNED_SHORT attributes */ -static void GLAPIENTRY VertexAttrib1NusvARB(GLuint index, const GLushort *v) +static void +VertexAttrib1NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1usvARB(GLuint index, const GLushort *v) +static void +VertexAttrib1usvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NusvARB(GLuint index, const GLushort *v) +static void +VertexAttrib2NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2usvARB(GLuint index, const GLushort *v) +static void +VertexAttrib2usvARB(GLuint index, const GLushort *v) { - CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); + CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], + (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NusvARB(GLuint index, const GLushort *v) +static void +VertexAttrib3NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), USHORT_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3usvARB(GLuint index, const GLushort *v) +static void +VertexAttrib3usvARB(GLuint index, const GLushort *v) { - CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); + CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], + (GLfloat)v[1], (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NusvARB(GLuint index, const GLushort *v) +static void +VertexAttrib4NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), @@ -782,47 +914,57 @@ static void GLAPIENTRY VertexAttrib4NusvARB(GLuint index, const GLushort *v) USHORT_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4usvARB(GLuint index, const GLushort *v) +static void +VertexAttrib4usvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); } /* GL_INT attributes */ -static void GLAPIENTRY VertexAttrib1NivARB(GLuint index, const GLint *v) +static void +VertexAttrib1NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1ivARB(GLuint index, const GLint *v) +static void +VertexAttrib1ivARB(GLuint index, const GLint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NivARB(GLuint index, const GLint *v) +static void +VertexAttrib2NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2ivARB(GLuint index, const GLint *v) +static void +VertexAttrib2ivARB(GLuint index, const GLint *v) { - CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); + CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], + (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NivARB(GLuint index, const GLint *v) +static void +VertexAttrib3NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3ivARB(GLuint index, const GLint *v) +static void +VertexAttrib3ivARB(GLuint index, const GLint *v) { - CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); + CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], + (GLfloat)v[1], (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NivARB(GLuint index, const GLint *v) +static void +VertexAttrib4NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), @@ -830,108 +972,287 @@ static void GLAPIENTRY VertexAttrib4NivARB(GLuint index, const GLint *v) INT_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4ivARB(GLuint index, const GLint *v) +static void +VertexAttrib4ivARB(GLuint index, const GLint *v) { - CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); + CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2], (GLfloat)v[3])); } /* GL_UNSIGNED_INT attributes */ -static void GLAPIENTRY VertexAttrib1NuivARB(GLuint index, const GLuint *v) +static void +VertexAttrib1NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]))); } -static void GLAPIENTRY VertexAttrib1uivARB(GLuint index, const GLuint *v) +static void +VertexAttrib1uivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void GLAPIENTRY VertexAttrib2NuivARB(GLuint index, const GLuint *v) +static void +VertexAttrib2NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), - UINT_TO_FLOAT(v[1]))); + UINT_TO_FLOAT(v[1]))); } -static void GLAPIENTRY VertexAttrib2uivARB(GLuint index, const GLuint *v) +static void +VertexAttrib2uivARB(GLuint index, const GLuint *v) { - CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); + CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], + (GLfloat)v[1])); } -static void GLAPIENTRY VertexAttrib3NuivARB(GLuint index, const GLuint *v) +static void +VertexAttrib3NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), - UINT_TO_FLOAT(v[1]), - UINT_TO_FLOAT(v[2]))); + UINT_TO_FLOAT(v[1]), + UINT_TO_FLOAT(v[2]))); } -static void GLAPIENTRY VertexAttrib3uivARB(GLuint index, const GLuint *v) +static void +VertexAttrib3uivARB(GLuint index, const GLuint *v) { - CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); + CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], + (GLfloat)v[1], (GLfloat)v[2])); } -static void GLAPIENTRY VertexAttrib4NuivARB(GLuint index, const GLuint *v) +static void +VertexAttrib4NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), - UINT_TO_FLOAT(v[1]), - UINT_TO_FLOAT(v[2]), - UINT_TO_FLOAT(v[3]))); + UINT_TO_FLOAT(v[1]), + UINT_TO_FLOAT(v[2]), + UINT_TO_FLOAT(v[3]))); } -static void GLAPIENTRY VertexAttrib4uivARB(GLuint index, const GLuint *v) +static void +VertexAttrib4uivARB(GLuint index, const GLuint *v) { - CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); + CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], + (GLfloat)v[2], (GLfloat)v[3])); } /* GL_FLOAT attributes */ -static void GLAPIENTRY VertexAttrib1fvARB(GLuint index, const GLfloat *v) +static void +VertexAttrib1fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib1fvARB(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib2fvARB(GLuint index, const GLfloat *v) +static void +VertexAttrib2fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib2fvARB(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib3fvARB(GLuint index, const GLfloat *v) +static void +VertexAttrib3fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib3fvARB(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib4fvARB(GLuint index, const GLfloat *v) +static void +VertexAttrib4fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib4fvARB(GET_DISPATCH(), (index, v)); } /* GL_DOUBLE attributes */ -static void GLAPIENTRY VertexAttrib1dvARB(GLuint index, const GLdouble *v) +static void +VertexAttrib1dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib1dvARB(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib2dvARB(GLuint index, const GLdouble *v) +static void +VertexAttrib2dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib2dvARB(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib3dvARB(GLuint index, const GLdouble *v) +static void +VertexAttrib3dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib3dvARB(GET_DISPATCH(), (index, v)); } -static void GLAPIENTRY VertexAttrib4dvARB(GLuint index, const GLdouble *v) +static void +VertexAttrib4dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib4dvARB(GET_DISPATCH(), (index, v)); } +/** + * Integer-valued attributes + */ +static void +VertexAttribI1bv(GLuint index, const GLbyte *v) +{ + CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0])); +} + +static void +VertexAttribI2bv(GLuint index, const GLbyte *v) +{ + CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1])); +} + +static void +VertexAttribI3bv(GLuint index, const GLbyte *v) +{ + CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); +} + +static void +VertexAttribI4bv(GLuint index, const GLbyte *v) +{ + CALL_VertexAttribI4bvEXT(GET_DISPATCH(), (index, v)); +} + + +static void +VertexAttribI1ubv(GLuint index, const GLubyte *v) +{ + CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0])); +} + +static void +VertexAttribI2ubv(GLuint index, const GLubyte *v) +{ + CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1])); +} + +static void +VertexAttribI3ubv(GLuint index, const GLubyte *v) +{ + CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); +} + +static void +VertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + CALL_VertexAttribI4ubvEXT(GET_DISPATCH(), (index, v)); +} + + + +static void +VertexAttribI1sv(GLuint index, const GLshort *v) +{ + CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0])); +} + +static void +VertexAttribI2sv(GLuint index, const GLshort *v) +{ + CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1])); +} + +static void +VertexAttribI3sv(GLuint index, const GLshort *v) +{ + CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); +} + +static void +VertexAttribI4sv(GLuint index, const GLshort *v) +{ + CALL_VertexAttribI4svEXT(GET_DISPATCH(), (index, v)); +} + + +static void +VertexAttribI1usv(GLuint index, const GLushort *v) +{ + CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0])); +} + +static void +VertexAttribI2usv(GLuint index, const GLushort *v) +{ + CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1])); +} + +static void +VertexAttribI3usv(GLuint index, const GLushort *v) +{ + CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); +} + +static void +VertexAttribI4usv(GLuint index, const GLushort *v) +{ + CALL_VertexAttribI4usvEXT(GET_DISPATCH(), (index, v)); +} + + + +static void +VertexAttribI1iv(GLuint index, const GLint *v) +{ + CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0])); +} + +static void +VertexAttribI2iv(GLuint index, const GLint *v) +{ + CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1])); +} + +static void +VertexAttribI3iv(GLuint index, const GLint *v) +{ + CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); +} + +static void +VertexAttribI4iv(GLuint index, const GLint *v) +{ + CALL_VertexAttribI4ivEXT(GET_DISPATCH(), (index, v)); +} + + +static void +VertexAttribI1uiv(GLuint index, const GLuint *v) +{ + CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0])); +} + +static void +VertexAttribI2uiv(GLuint index, const GLuint *v) +{ + CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1])); +} + +static void +VertexAttribI3uiv(GLuint index, const GLuint *v) +{ + CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); +} + +static void +VertexAttribI4uiv(GLuint index, const GLuint *v) +{ + CALL_VertexAttribI4uivEXT(GET_DISPATCH(), (index, v)); +} + + + + /* - * Array [size][type] of VertexAttrib functions + * Array [unnormalized/normalized/integer][size][type] of VertexAttrib + * functions */ -static attrib_func AttribFuncsARB[2][4][8] = { +static attrib_func AttribFuncsARB[3][4][NUM_TYPES] = { { /* non-normalized */ { @@ -1025,6 +1346,54 @@ static attrib_func AttribFuncsARB[2][4][8] = { (attrib_func) VertexAttrib4fvARB, (attrib_func) VertexAttrib4dvARB } + }, + + { + /* integer-valued */ + { + /* size 1 */ + (attrib_func) VertexAttribI1bv, + (attrib_func) VertexAttribI1ubv, + (attrib_func) VertexAttribI1sv, + (attrib_func) VertexAttribI1usv, + (attrib_func) VertexAttribI1iv, + (attrib_func) VertexAttribI1uiv, + NULL, /* GL_FLOAT */ + NULL /* GL_DOUBLE */ + }, + { + /* size 2 */ + (attrib_func) VertexAttribI2bv, + (attrib_func) VertexAttribI2ubv, + (attrib_func) VertexAttribI2sv, + (attrib_func) VertexAttribI2usv, + (attrib_func) VertexAttribI2iv, + (attrib_func) VertexAttribI2uiv, + NULL, /* GL_FLOAT */ + NULL /* GL_DOUBLE */ + }, + { + /* size 3 */ + (attrib_func) VertexAttribI3bv, + (attrib_func) VertexAttribI3ubv, + (attrib_func) VertexAttribI3sv, + (attrib_func) VertexAttribI3usv, + (attrib_func) VertexAttribI3iv, + (attrib_func) VertexAttribI3uiv, + NULL, /* GL_FLOAT */ + NULL /* GL_DOUBLE */ + }, + { + /* size 4 */ + (attrib_func) VertexAttribI4bv, + (attrib_func) VertexAttribI4ubv, + (attrib_func) VertexAttribI4sv, + (attrib_func) VertexAttribI4usv, + (attrib_func) VertexAttribI4iv, + (attrib_func) VertexAttribI4uiv, + NULL, /* GL_FLOAT */ + NULL /* GL_DOUBLE */ + } } }; @@ -1173,7 +1542,15 @@ static void _ae_update_state( struct gl_context *ctx ) [TYPE_IDX(at->array->Type)]; } else { - at->func = AttribFuncsARB[at->array->Normalized] + GLint intOrNorm; + if (at->array->Integer) + intOrNorm = 2; + else if (at->array->Normalized) + intOrNorm = 1; + else + intOrNorm = 0; + + at->func = AttribFuncsARB[intOrNorm] [at->array->Size-1] [TYPE_IDX(at->array->Type)]; } @@ -1271,14 +1648,13 @@ void GLAPIENTRY _ae_ArrayElement( GLint elt ) _ae_update_state( ctx ); } + /* Determine if w need to map/unmap VBOs */ do_map = actx->nr_vbos && !actx->mapped_vbos; - /* - */ if (do_map) _ae_map_vbos(ctx); - /* generic attributes */ + /* emit generic attribute elements */ for (at = actx->attribs; at->func; at++) { const GLubyte *src = ADD_POINTERS(at->array->BufferObj->Pointer, at->array->Ptr) @@ -1286,7 +1662,7 @@ void GLAPIENTRY _ae_ArrayElement( GLint elt ) at->func( at->index, src ); } - /* conventional arrays */ + /* emit conventional arrays elements */ for (aa = actx->arrays; aa->offset != -1 ; aa++) { const GLubyte *src = ADD_POINTERS(aa->array->BufferObj->Pointer, aa->array->Ptr) diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c index 2274e54ba0..1427abd107 100644 --- a/src/mesa/main/api_exec.c +++ b/src/mesa/main/api_exec.c @@ -105,46 +105,6 @@ #if FEATURE_GL -#ifdef _GLAPI_USE_REMAP_TABLE - -#define need_MESA_remap_table -#include "main/remap.h" -#include "main/remap_helper.h" - -/* This is shared across all APIs but We define this here since - * desktop GL has the biggest remap table. */ -int driDispatchRemapTable[driDispatchRemapTable_size]; - -/** - * Map the functions which are already static. - * - * When a extension function are incorporated into the ABI, the - * extension suffix is usually stripped. Mapping such functions - * makes sure the alternative names are available. - * - * Note that functions mapped by _mesa_init_remap_table() are - * excluded. - */ -void -_mesa_map_static_functions(void) -{ - /* Remap static functions which have alternative names and are in the ABI. - * This is to be on the safe side. glapi should have defined those names. - */ - _mesa_map_function_array(MESA_alt_functions); -} - -void -_mesa_init_remap_table(void) -{ - _mesa_do_init_remap_table(_mesa_function_pool, - driDispatchRemapTable_size, - MESA_remap_table_functions); -} - -#endif /* _GLAPI_USE_REMAP_TABLE */ - - /** * Initialize a dispatch table with pointers to Mesa's immediate-mode * commands. @@ -160,7 +120,7 @@ _mesa_create_exec_table(void) { struct _glapi_table *exec; - exec = _mesa_alloc_dispatch_table(sizeof *exec); + exec = _mesa_alloc_dispatch_table(_gloffset_COUNT); if (exec == NULL) return NULL; @@ -726,6 +686,27 @@ _mesa_create_exec_table(void) SET_FramebufferTextureFaceARB(exec, _mesa_FramebufferTextureFaceARB); #endif + /* GL_EXT_texture_integer */ + SET_ClearColorIiEXT(exec, _mesa_ClearColorIiEXT); + SET_ClearColorIuiEXT(exec, _mesa_ClearColorIuiEXT); + SET_GetTexParameterIivEXT(exec, _mesa_GetTexParameterIiv); + SET_GetTexParameterIuivEXT(exec, _mesa_GetTexParameterIuiv); + SET_TexParameterIivEXT(exec, _mesa_TexParameterIiv); + SET_TexParameterIuivEXT(exec, _mesa_TexParameterIuiv); + + /* GL_EXT_gpu_shader4 / OpenGL 3.0 */ + SET_GetVertexAttribIivEXT(exec, _mesa_GetVertexAttribIiv); + SET_GetVertexAttribIuivEXT(exec, _mesa_GetVertexAttribIuiv); + SET_VertexAttribIPointerEXT(exec, _mesa_VertexAttribIPointer); + + /* GL 3.0 (functions not covered by other extensions) */ + SET_ClearBufferiv(exec, _mesa_ClearBufferiv); + SET_ClearBufferuiv(exec, _mesa_ClearBufferuiv); + SET_ClearBufferfv(exec, _mesa_ClearBufferfv); + SET_ClearBufferfi(exec, _mesa_ClearBufferfi); + SET_GetStringi(exec, _mesa_GetStringi); + SET_ClampColor(exec, _mesa_ClampColorARB); + return exec; } diff --git a/src/mesa/main/api_loopback.c b/src/mesa/main/api_loopback.c index d1789069cc..c438307d84 100644 --- a/src/mesa/main/api_loopback.c +++ b/src/mesa/main/api_loopback.c @@ -34,9 +34,9 @@ #include "api_loopback.h" #include "mtypes.h" #include "glapi/glapi.h" -#include "glapi/glapitable.h" #include "glapi/glthread.h" #include "main/dispatch.h" +#include "mfeatures.h" /* KW: A set of functions to convert unusual Color/Normal/Vertex/etc * calls to a smaller set of driver-provided formats. Currently just @@ -66,16 +66,24 @@ #define MATERIALFV(a,b,c) CALL_Materialfv(GET_DISPATCH(), (a,b,c)) #define RECTF(a,b,c,d) CALL_Rectf(GET_DISPATCH(), (a,b,c,d)) +#define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x)) +#define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c)) + #define ATTRIB1NV(index,x) CALL_VertexAttrib1fNV(GET_DISPATCH(), (index,x)) #define ATTRIB2NV(index,x,y) CALL_VertexAttrib2fNV(GET_DISPATCH(), (index,x,y)) #define ATTRIB3NV(index,x,y,z) CALL_VertexAttrib3fNV(GET_DISPATCH(), (index,x,y,z)) #define ATTRIB4NV(index,x,y,z,w) CALL_VertexAttrib4fNV(GET_DISPATCH(), (index,x,y,z,w)) + #define ATTRIB1ARB(index,x) CALL_VertexAttrib1fARB(GET_DISPATCH(), (index,x)) #define ATTRIB2ARB(index,x,y) CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,x,y)) #define ATTRIB3ARB(index,x,y,z) CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,x,y,z)) #define ATTRIB4ARB(index,x,y,z,w) CALL_VertexAttrib4fARB(GET_DISPATCH(), (index,x,y,z,w)) -#define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x)) -#define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c)) + +#define ATTRIBI_1I(index,x) CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index,x)) +#define ATTRIBI_1UI(index,x) CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index,x)) +#define ATTRIBI_4I(index,x,y,z,w) CALL_VertexAttribI4iEXT(GET_DISPATCH(), (index,x,y,z,w)) + +#define ATTRIBI_4UI(index,x,y,z,w) CALL_VertexAttribI4uiEXT(GET_DISPATCH(), (index,x,y,z,w)) #if FEATURE_beginend @@ -1041,6 +1049,7 @@ loopback_SecondaryColor3ubvEXT_f( const GLubyte *v ) /* * GL_NV_vertex_program: * Always loop-back to one of the VertexAttrib[1234]f[v]NV functions. + * Note that attribute indexes DO alias conventional vertex attributes. */ static void GLAPIENTRY @@ -1263,6 +1272,7 @@ loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v) /* * GL_ARB_vertex_program * Always loop-back to one of the VertexAttrib[1234]f[v]ARB functions. + * Note that attribute indexes do NOT alias conventional attributes. */ static void GLAPIENTRY @@ -1443,136 +1453,50 @@ loopback_VertexAttrib4NuivARB(GLuint index, const GLuint * v) -/** GL 3.0 Integer-valued attributes **/ - -static void GLAPIENTRY -loopback_VertexAttribI1i(GLuint index, GLint x) -{ - ATTRIB1ARB(index, (GLfloat) x); -} - -static void GLAPIENTRY -loopback_VertexAttribI2i(GLuint index, GLint x, GLint y) -{ - ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y); -} - -static void GLAPIENTRY -loopback_VertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) -{ - ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z); -} - -static void GLAPIENTRY -loopback_VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) -{ - ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); -} - -static void GLAPIENTRY -loopback_VertexAttribI1ui(GLuint index, GLuint x) -{ - ATTRIB1ARB(index, (GLfloat) x); -} - -static void GLAPIENTRY -loopback_VertexAttribI2ui(GLuint index, GLuint x, GLuint y) -{ - ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y); -} - -static void GLAPIENTRY -loopback_VertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) -{ - ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z); -} - -static void GLAPIENTRY -loopback_VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) -{ - ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); -} +/** + * GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes. + * Note that attribute indexes do NOT alias conventional attributes. + */ static void GLAPIENTRY loopback_VertexAttribI1iv(GLuint index, const GLint *v) { - ATTRIB1ARB(index, (GLfloat) v[0]); -} - -static void GLAPIENTRY -loopback_VertexAttribI2iv (GLuint index, const GLint *v) -{ - ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]); -} - -static void GLAPIENTRY -loopback_VertexAttribI3iv(GLuint index, const GLint *v) -{ - ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); -} - -static void GLAPIENTRY -loopback_VertexAttribI4iv(GLuint index, const GLint *v) -{ - ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], - (GLfloat) v[2], (GLfloat) v[3]); + ATTRIBI_1I(index, v[0]); } static void GLAPIENTRY loopback_VertexAttribI1uiv(GLuint index, const GLuint *v) { - ATTRIB1ARB(index, (GLfloat) v[0]); -} - -static void GLAPIENTRY -loopback_VertexAttribI2uiv(GLuint index, const GLuint *v) -{ - ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]); -} - -static void GLAPIENTRY -loopback_VertexAttribI3uiv(GLuint index, const GLuint *v) -{ - ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); -} - -static void GLAPIENTRY -loopback_VertexAttribI4uiv(GLuint index, const GLuint *v) -{ - ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], - (GLfloat) v[2], (GLfloat) v[3]); + ATTRIBI_1UI(index, v[0]); } static void GLAPIENTRY loopback_VertexAttribI4bv(GLuint index, const GLbyte *v) { - ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], - (GLfloat) v[2], (GLfloat) v[3]); + ATTRIBI_4I(index, v[0], v[1], v[2], v[3]); } static void GLAPIENTRY loopback_VertexAttribI4sv(GLuint index, const GLshort *v) { - ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], - (GLfloat) v[2], (GLfloat) v[3]); + ATTRIBI_4I(index, v[0], v[1], v[2], v[3]); } static void GLAPIENTRY loopback_VertexAttribI4ubv(GLuint index, const GLubyte *v) { - ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], - (GLfloat) v[2], (GLfloat) v[3]); + ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]); } static void GLAPIENTRY loopback_VertexAttribI4usv(GLuint index, const GLushort *v) { - ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], - (GLfloat) v[2], (GLfloat) v[3]); + ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]); } + /* * This code never registers handlers for any of the entry points * listed in vtxfmt.h. @@ -1788,50 +1712,13 @@ _mesa_loopback_init_api_table( struct _glapi_table *dest ) SET_VertexAttrib4NusvARB(dest, loopback_VertexAttrib4NusvARB); SET_VertexAttrib4NuivARB(dest, loopback_VertexAttrib4NuivARB); - /* GL 3.0 */ -#if 0 - SET_VertexAttribI1i(dest, loopback_VertexAttribI1i); - SET_VertexAttribI2i(dest, loopback_VertexAttribI2i); - SET_VertexAttribI3i(dest, loopback_VertexAttribI3i); - SET_VertexAttribI4i(dest, loopback_VertexAttribI4i); - SET_VertexAttribI1ui(dest, loopback_VertexAttribI1ui); - SET_VertexAttribI2ui(dest, loopback_VertexAttribI2ui); - SET_VertexAttribI3ui(dest, loopback_VertexAttribI3ui); - SET_VertexAttribI4ui(dest, loopback_VertexAttribI4ui); - SET_VertexAttribI1iv(dest, loopback_VertexAttribI1iv); - SET_VertexAttribI2iv(dest, loopback_VertexAttribI2iv); - SET_VertexAttribI3iv(dest, loopback_VertexAttribI3iv); - SET_VertexAttribI4iv(dest, loopback_VertexAttribI4iv); - SET_VertexAttribI1uiv(dest, loopback_VertexAttribI1uiv); - SET_VertexAttribI2uiv(dest, loopback_VertexAttribI2uiv); - SET_VertexAttribI3uiv(dest, loopback_VertexAttribI3uiv); - SET_VertexAttribI4uiv(dest, loopback_VertexAttribI4uiv); - SET_VertexAttribI4bv(dest, loopback_VertexAttribI4bv); - SET_VertexAttribI4sv(dest, loopback_VertexAttribI4sv); - SET_VertexAttribI4ubv(dest, loopback_VertexAttribI4ubv); - SET_VertexAttribI4usv(dest, loopback_VertexAttribI4usv); -#else - (void) loopback_VertexAttribI1i; - (void) loopback_VertexAttribI2i; - (void) loopback_VertexAttribI3i; - (void) loopback_VertexAttribI4i; - (void) loopback_VertexAttribI1ui; - (void) loopback_VertexAttribI2ui; - (void) loopback_VertexAttribI3ui; - (void) loopback_VertexAttribI4ui; - (void) loopback_VertexAttribI1iv; - (void) loopback_VertexAttribI2iv; - (void) loopback_VertexAttribI3iv; - (void) loopback_VertexAttribI4iv; - (void) loopback_VertexAttribI1uiv; - (void) loopback_VertexAttribI2uiv; - (void) loopback_VertexAttribI3uiv; - (void) loopback_VertexAttribI4uiv; - (void) loopback_VertexAttribI4bv; - (void) loopback_VertexAttribI4sv; - (void) loopback_VertexAttribI4ubv; - (void) loopback_VertexAttribI4usv; -#endif + /* GL_EXT_gpu_shader4, GL 3.0 */ + SET_VertexAttribI1ivEXT(dest, loopback_VertexAttribI1iv); + SET_VertexAttribI1uivEXT(dest, loopback_VertexAttribI1uiv); + SET_VertexAttribI4bvEXT(dest, loopback_VertexAttribI4bv); + SET_VertexAttribI4svEXT(dest, loopback_VertexAttribI4sv); + SET_VertexAttribI4ubvEXT(dest, loopback_VertexAttribI4ubv); + SET_VertexAttribI4usvEXT(dest, loopback_VertexAttribI4usv); } diff --git a/src/mesa/main/api_loopback.h b/src/mesa/main/api_loopback.h index 3140eb515e..b9af703ca7 100644 --- a/src/mesa/main/api_loopback.h +++ b/src/mesa/main/api_loopback.h @@ -27,7 +27,10 @@ #ifndef API_LOOPBACK_H #define API_LOOPBACK_H -#include "main/mtypes.h" +#include "main/compiler.h" +#include "main/mfeatures.h" + +struct _glapi_table; #if FEATURE_beginend diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c index 4929a9310d..ac9709db3f 100644 --- a/src/mesa/main/api_validate.c +++ b/src/mesa/main/api_validate.c @@ -27,6 +27,7 @@ #include "bufferobj.h" #include "context.h" #include "imports.h" +#include "mfeatures.h" #include "mtypes.h" #include "vbo/vbo.h" diff --git a/src/mesa/main/api_validate.h b/src/mesa/main/api_validate.h index b232a90843..16b9c2b264 100644 --- a/src/mesa/main/api_validate.h +++ b/src/mesa/main/api_validate.h @@ -28,7 +28,10 @@ #define API_VALIDATE_H -#include "mtypes.h" +#include "glheader.h" + +struct gl_buffer_object; +struct gl_context; extern GLuint diff --git a/src/mesa/main/arrayobj.h b/src/mesa/main/arrayobj.h index 26e3af19c9..0b5a013037 100644 --- a/src/mesa/main/arrayobj.h +++ b/src/mesa/main/arrayobj.h @@ -28,7 +28,9 @@ #ifndef ARRAYOBJ_H #define ARRAYOBJ_H -#include "mtypes.h" +#include "glheader.h" + +struct gl_context; /** * \file arrayobj.h diff --git a/src/mesa/main/atifragshader.h b/src/mesa/main/atifragshader.h index 6911bba5ae..ade91311b0 100644 --- a/src/mesa/main/atifragshader.h +++ b/src/mesa/main/atifragshader.h @@ -8,7 +8,12 @@ #ifndef ATIFRAGSHADER_H #define ATIFRAGSHADER_H -#include "main/mtypes.h" +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" + +struct _glapi_table; +struct gl_context; #define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8 #define MAX_NUM_PASSES_ATI 2 diff --git a/src/mesa/main/attrib.h b/src/mesa/main/attrib.h index 777781bdf0..d59d31b9be 100644 --- a/src/mesa/main/attrib.h +++ b/src/mesa/main/attrib.h @@ -26,8 +26,12 @@ #define ATTRIB_H -#include "main/mtypes.h" +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" +struct _glapi_table; +struct gl_context; #if FEATURE_attrib_stack @@ -48,8 +52,6 @@ _mesa_init_attrib_dispatch(struct _glapi_table *disp); #else /* FEATURE_attrib_stack */ -#include "main/compiler.h" - static INLINE void _mesa_PushClientAttrib( GLbitfield mask ) { diff --git a/src/mesa/main/blend.h b/src/mesa/main/blend.h index 677b01cc9f..f72c779f1a 100644 --- a/src/mesa/main/blend.h +++ b/src/mesa/main/blend.h @@ -33,7 +33,9 @@ #define BLEND_H -#include "mtypes.h" +#include "glheader.h" + +struct gl_context; extern void GLAPIENTRY diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 0a68008a10..4d62f54a95 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -55,6 +55,13 @@ /** + * Used as a placeholder for buffer objects between glGenBuffers() and + * glBindBuffer() so that glIsBuffer() can work correctly. + */ +static struct gl_buffer_object DummyBufferObject; + + +/** * Return pointer to address of a buffer object target. * \param ctx the GL context * \param target the buffer object target to be retrieved. @@ -548,6 +555,9 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx, void _mesa_init_buffer_objects( struct gl_context *ctx ) { + memset(&DummyBufferObject, 0, sizeof(DummyBufferObject)); + DummyBufferObject.RefCount = 1000*1000*1000; /* never delete */ + _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, ctx->Shared->NullBufferObj); _mesa_reference_buffer_object(ctx, &ctx->Array.ElementArrayBufferObj, @@ -605,8 +615,10 @@ bind_buffer_object(struct gl_context *ctx, GLenum target, GLuint buffer) else { /* non-default buffer object */ newBufObj = _mesa_lookup_bufferobj(ctx, buffer); - if (!newBufObj) { - /* if this is a new buffer object id, allocate a buffer object now */ + if (!newBufObj || newBufObj == &DummyBufferObject) { + /* If this is a new buffer object id, or one which was generated but + * never used before, allocate a buffer object now. + */ ASSERT(ctx->Driver.NewBufferObject); newBufObj = ctx->Driver.NewBufferObject(ctx, buffer, target); if (!newBufObj) { @@ -986,7 +998,7 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids) struct gl_array_object *arrayObj = ctx->Array.ArrayObj; GLuint j; - ASSERT(bufObj->Name == ids[i]); + ASSERT(bufObj->Name == ids[i] || bufObj == &DummyBufferObject); if (_mesa_bufferobj_mapped(bufObj)) { /* if mapped, unmap it now */ @@ -1027,7 +1039,7 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids) } /* The ID is immediately freed for re-use */ - _mesa_HashRemove(ctx->Shared->BufferObjects, bufObj->Name); + _mesa_HashRemove(ctx->Shared->BufferObjects, ids[i]); _mesa_reference_buffer_object(ctx, &bufObj, NULL); } } @@ -1066,18 +1078,10 @@ _mesa_GenBuffersARB(GLsizei n, GLuint *buffer) first = _mesa_HashFindFreeKeyBlock(ctx->Shared->BufferObjects, n); - /* Allocate new, empty buffer objects and return identifiers */ + /* Insert the ID and pointer to dummy buffer object into hash table */ for (i = 0; i < n; i++) { - struct gl_buffer_object *bufObj; - GLuint name = first + i; - GLenum target = 0; - bufObj = ctx->Driver.NewBufferObject( ctx, name, target ); - if (!bufObj) { - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenBuffersARB"); - return; - } - _mesa_HashInsert(ctx->Shared->BufferObjects, first + i, bufObj); + _mesa_HashInsert(ctx->Shared->BufferObjects, first + i, + &DummyBufferObject); buffer[i] = first + i; } @@ -1103,7 +1107,7 @@ _mesa_IsBufferARB(GLuint id) bufObj = _mesa_lookup_bufferobj(ctx, id); _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); - return bufObj ? GL_TRUE : GL_FALSE; + return bufObj && bufObj != &DummyBufferObject; } @@ -1189,6 +1193,9 @@ _mesa_BufferSubDataARB(GLenum target, GLintptrARB offset, return; } + if (size == 0) + return; + bufObj->Written = GL_TRUE; ASSERT(ctx->Driver.BufferSubData); diff --git a/src/mesa/main/buffers.h b/src/mesa/main/buffers.h index 36d6c8b660..1404112c41 100644 --- a/src/mesa/main/buffers.h +++ b/src/mesa/main/buffers.h @@ -33,8 +33,9 @@ #define BUFFERS_H -#include "mtypes.h" +#include "glheader.h" +struct gl_context; extern void GLAPIENTRY _mesa_DrawBuffer( GLenum mode ); diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c index b011da04b4..c4c1d96e49 100644 --- a/src/mesa/main/clear.c +++ b/src/mesa/main/clear.c @@ -96,6 +96,68 @@ _mesa_ClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) /** + * GL_EXT_texture_integer + */ +void GLAPIENTRY +_mesa_ClearColorIiEXT(GLint r, GLint g, GLint b, GLint a) +{ + GLfloat tmp[4]; + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END(ctx); + + tmp[0] = (GLfloat) r; + tmp[1] = (GLfloat) g; + tmp[2] = (GLfloat) b; + tmp[3] = (GLfloat) a; + + if (TEST_EQ_4V(tmp, ctx->Color.ClearColor)) + return; /* no change */ + + FLUSH_VERTICES(ctx, _NEW_COLOR); + + /* XXX we should eventually have a float/int/uint union for + * the ctx->Color.ClearColor state. + */ + COPY_4V(ctx->Color.ClearColor, tmp); + + if (ctx->Driver.ClearColor) { + ctx->Driver.ClearColor(ctx, ctx->Color.ClearColor); + } +} + + +/** + * GL_EXT_texture_integer + */ +void GLAPIENTRY +_mesa_ClearColorIuiEXT(GLuint r, GLuint g, GLuint b, GLuint a) +{ + GLfloat tmp[4]; + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END(ctx); + + tmp[0] = (GLfloat) r; + tmp[1] = (GLfloat) g; + tmp[2] = (GLfloat) b; + tmp[3] = (GLfloat) a; + + if (TEST_EQ_4V(tmp, ctx->Color.ClearColor)) + return; /* no change */ + + FLUSH_VERTICES(ctx, _NEW_COLOR); + + /* XXX we should eventually have a float/int/uint union for + * the ctx->Color.ClearColor state. + */ + COPY_4V(ctx->Color.ClearColor, tmp); + + if (ctx->Driver.ClearColor) { + ctx->Driver.ClearColor(ctx, ctx->Color.ClearColor); + } +} + + +/** * Clear buffers. * * \param mask bit-mask indicating the buffers to be cleared. @@ -342,7 +404,7 @@ _mesa_ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) { const GLbitfield mask = make_color_buffer_mask(ctx, drawbuffer); if (mask == INVALID_MASK) { - _mesa_error(ctx, GL_INVALID_VALUE, "glClearBufferiv(drawbuffer=%d)", + _mesa_error(ctx, GL_INVALID_VALUE, "glClearBufferuiv(drawbuffer=%d)", drawbuffer); return; } diff --git a/src/mesa/main/clear.h b/src/mesa/main/clear.h index 6657370c4b..7832719203 100644 --- a/src/mesa/main/clear.h +++ b/src/mesa/main/clear.h @@ -38,6 +38,13 @@ _mesa_ClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ); extern void GLAPIENTRY +_mesa_ClearColorIiEXT(GLint r, GLint g, GLint b, GLint a); + +extern void GLAPIENTRY +_mesa_ClearColorIuiEXT(GLuint r, GLuint g, GLuint b, GLuint a); + + +extern void GLAPIENTRY _mesa_Clear( GLbitfield mask ); diff --git a/src/mesa/main/colortab.c b/src/mesa/main/colortab.c index 6295dc88de..caa95835bc 100644 --- a/src/mesa/main/colortab.c +++ b/src/mesa/main/colortab.c @@ -29,6 +29,7 @@ #include "context.h" #include "image.h" #include "macros.h" +#include "pack.h" #include "state.h" #include "teximage.h" #include "texstate.h" diff --git a/src/mesa/main/colortab.h b/src/mesa/main/colortab.h index ea3ec870fd..ae46d8d236 100644 --- a/src/mesa/main/colortab.h +++ b/src/mesa/main/colortab.h @@ -27,7 +27,12 @@ #define COLORTAB_H -#include "main/mtypes.h" +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" + +struct _glapi_table; +struct gl_color_table; #if FEATURE_colortable @@ -46,8 +51,6 @@ _mesa_init_colortable_dispatch(struct _glapi_table *disp); #else /* FEATURE_colortable */ -#include "main/compiler.h" - static INLINE void GLAPIENTRY _mesa_ColorTable( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 9401e3dcc2..b132030b9b 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -131,6 +131,7 @@ #if _HAVE_FULL_GL #include "math/m_matrix.h" #endif +#include "main/dispatch.h" /* for _gloffset_COUNT */ #ifdef USE_SPARC_ASM #include "sparc/sparc.h" @@ -218,7 +219,7 @@ _mesa_create_visual( GLboolean dbFlag, GLint accumAlphaBits, GLint numSamples ) { - struct gl_config *vis = (struct gl_config *) calloc(1, sizeof(struct gl_config)); + struct gl_config *vis = CALLOC_STRUCT(gl_config); if (vis) { if (!_mesa_initialize_visual(vis, dbFlag, stereoFlag, redBits, greenBits, blueBits, alphaBits, @@ -233,11 +234,13 @@ _mesa_create_visual( GLboolean dbFlag, return vis; } + /** - * Makes some sanity checks and fills in the fields of the - * struct gl_config object with the given parameters. If the caller needs - * to set additional fields, he should just probably init the whole struct gl_config - * object himself. + * Makes some sanity checks and fills in the fields of the struct + * gl_config object with the given parameters. If the caller needs to + * set additional fields, he should just probably init the whole + * gl_config object himself. + * * \return GL_TRUE on success, or GL_FALSE on failure. * * \sa _mesa_create_visual() above for the parameter description. @@ -367,6 +370,8 @@ dummy_enum_func(void) */ _glthread_DECLARE_STATIC_MUTEX(OneTimeLock); + + /** * Calls all the various one-time-init functions in Mesa. * @@ -379,10 +384,12 @@ _glthread_DECLARE_STATIC_MUTEX(OneTimeLock); static void one_time_init( struct gl_context *ctx ) { - static GLboolean alreadyCalled = GL_FALSE; - (void) ctx; + static GLbitfield api_init_mask = 0x0; + _glthread_LOCK_MUTEX(OneTimeLock); - if (!alreadyCalled) { + + /* truly one-time init */ + if (!api_init_mask) { GLuint i; /* do some implementation tests */ @@ -395,27 +402,9 @@ one_time_init( struct gl_context *ctx ) _mesa_get_cpu_features(); - switch (ctx->API) { -#if FEATURE_GL - case API_OPENGL: - _mesa_init_remap_table(); - break; -#endif -#if FEATURE_ES1 - case API_OPENGLES: - _mesa_init_remap_table_es1(); - break; -#endif -#if FEATURE_ES2 - case API_OPENGLES2: - _mesa_init_remap_table_es2(); - break; -#endif - default: - break; - } - _mesa_init_sqrt_table(); + + /* context dependence is never a one-time thing... */ _mesa_init_get_hash(ctx); for (i = 0; i < 256; i++) { @@ -423,12 +412,27 @@ one_time_init( struct gl_context *ctx ) } #if defined(DEBUG) && defined(__DATE__) && defined(__TIME__) - _mesa_debug(ctx, "Mesa %s DEBUG build %s %s\n", - MESA_VERSION_STRING, __DATE__, __TIME__); + if (MESA_VERBOSE != 0) { + _mesa_debug(ctx, "Mesa %s DEBUG build %s %s\n", + MESA_VERSION_STRING, __DATE__, __TIME__); + } #endif + } - alreadyCalled = GL_TRUE; + /* per-API one-time init */ + if (!(api_init_mask & (1 << ctx->API))) { + /* + * This is fine as ES does not use the remap table, but it may not be + * future-proof. We cannot always initialize the remap table because + * when an app is linked to libGLES*, there are not enough dynamic + * entries. + */ + if (ctx->API == API_OPENGL) + _mesa_init_remap_table(); } + + api_init_mask |= 1 << ctx->API; + _glthread_UNLOCK_MUTEX(OneTimeLock); /* Hopefully atexit() is widely available. If not, we may need some @@ -620,6 +624,10 @@ _mesa_init_constants(struct gl_context *ctx) /* GL 3.2: hard-coded for now: */ ctx->Const.ProfileMask = GL_CONTEXT_COMPATIBILITY_PROFILE_BIT; + + /** GL_EXT_gpu_shader4 */ + ctx->Const.MinProgramTexelOffset = -8; + ctx->Const.MaxProgramTexelOffset = 7; } @@ -807,10 +815,13 @@ _mesa_alloc_dispatch_table(int size) * Mesa we do this to accomodate different versions of libGL and various * DRI drivers. */ - GLint numEntries = MAX2(_glapi_get_dispatch_table_size(), - size / sizeof(_glapi_proc)); - struct _glapi_table *table = - (struct _glapi_table *) malloc(numEntries * sizeof(_glapi_proc)); + GLint numEntries = MAX2(_glapi_get_dispatch_table_size(), _gloffset_COUNT); + struct _glapi_table *table; + + /* should never happen, but just in case */ + numEntries = MAX2(numEntries, size); + + table = (struct _glapi_table *) malloc(numEntries * sizeof(_glapi_proc)); if (table) { _glapi_proc *entry = (_glapi_proc *) table; GLint i; @@ -983,6 +994,10 @@ _mesa_initialize_context_for_api(struct gl_context *ctx, return GL_TRUE; } + +/** + * Initialize an OpenGL context. + */ GLboolean _mesa_initialize_context(struct gl_context *ctx, const struct gl_config *visual, @@ -998,6 +1013,7 @@ _mesa_initialize_context(struct gl_context *ctx, driverContext); } + /** * Allocate and initialize a struct gl_context structure. * Note that the driver needs to pass in its dd_function_table here since @@ -1039,6 +1055,10 @@ _mesa_create_context_for_api(gl_api api, } } + +/** + * Create an OpenGL context. + */ struct gl_context * _mesa_create_context(const struct gl_config *visual, struct gl_context *share_list, @@ -1051,6 +1071,7 @@ _mesa_create_context(const struct gl_config *visual, driverContext); } + /** * Free the data associated with the given context. * @@ -1137,7 +1158,7 @@ _mesa_free_context_data( struct gl_context *ctx ) * * \param ctx GL context. * - * Calls _mesa_free_context_data() and frees the struct gl_context structure itself. + * Calls _mesa_free_context_data() and frees the gl_context object itself. */ void _mesa_destroy_context( struct gl_context *ctx ) @@ -1282,14 +1303,12 @@ _mesa_copy_context( const struct gl_context *src, struct gl_context *dst, GLuint * \return GL_TRUE if compatible, GL_FALSE otherwise. */ static GLboolean -check_compatible(const struct gl_context *ctx, const struct gl_framebuffer *buffer) +check_compatible(const struct gl_context *ctx, + const struct gl_framebuffer *buffer) { const struct gl_config *ctxvis = &ctx->Visual; const struct gl_config *bufvis = &buffer->Visual; - if (ctxvis == bufvis) - return GL_TRUE; - if (buffer == _mesa_get_incomplete_framebuffer()) return GL_TRUE; @@ -1376,7 +1395,8 @@ _mesa_check_init_viewport(struct gl_context *ctx, GLuint width, GLuint height) * \param readBuffer the reading framebuffer */ GLboolean -_mesa_make_current( struct gl_context *newCtx, struct gl_framebuffer *drawBuffer, +_mesa_make_current( struct gl_context *newCtx, + struct gl_framebuffer *drawBuffer, struct gl_framebuffer *readBuffer ) { if (MESA_VERBOSE & VERBOSE_API) @@ -1437,7 +1457,8 @@ _mesa_make_current( struct gl_context *newCtx, struct gl_framebuffer *drawBuffer buffers[i] = newCtx->Color.DrawBuffer[i]; } - _mesa_drawbuffers(newCtx, newCtx->Const.MaxDrawBuffers, buffers, NULL); + _mesa_drawbuffers(newCtx, newCtx->Const.MaxDrawBuffers, + buffers, NULL); } if (!newCtx->ReadBuffer || newCtx->ReadBuffer->Name == 0) { _mesa_reference_framebuffer(&newCtx->ReadBuffer, readBuffer); @@ -1697,11 +1718,10 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where) if (ctx->NewState) _mesa_update_state(ctx); - if (ctx->Shader.CurrentProgram) { - struct gl_shader_program *const prog = ctx->Shader.CurrentProgram; + if (ctx->Shader.CurrentVertexProgram) { + vert_from_glsl_shader = true; - /* using shaders */ - if (!prog->LinkStatus) { + if (!ctx->Shader.CurrentVertexProgram->LinkStatus) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s(shader not linked)", where); return GL_FALSE; @@ -1709,25 +1729,57 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where) #if 0 /* not normally enabled */ { char errMsg[100]; - if (!_mesa_validate_shader_program(ctx, prog, errMsg)) { + if (!_mesa_validate_shader_program(ctx, + ctx->Shader.CurrentVertexProgram, + errMsg)) { _mesa_warning(ctx, "Shader program %u is invalid: %s", - prog->Name, errMsg); + ctx->Shader.CurrentVertexProgram->Name, errMsg); } } #endif + } - /* Figure out which shader stages are provided by the GLSL program. For - * any stages that are not provided, the corresponding assembly shader - * target will be validated below. - */ - vert_from_glsl_shader = - prog->_LinkedShaders[MESA_SHADER_VERTEX] != NULL; - geom_from_glsl_shader = - prog->_LinkedShaders[MESA_SHADER_GEOMETRY] != NULL; - frag_from_glsl_shader = - prog->_LinkedShaders[MESA_SHADER_FRAGMENT] != NULL; + if (ctx->Shader.CurrentGeometryProgram) { + geom_from_glsl_shader = true; + + if (!ctx->Shader.CurrentGeometryProgram->LinkStatus) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "%s(shader not linked)", where); + return GL_FALSE; + } +#if 0 /* not normally enabled */ + { + char errMsg[100]; + if (!_mesa_validate_shader_program(ctx, + ctx->Shader.CurrentGeometryProgram, + errMsg)) { + _mesa_warning(ctx, "Shader program %u is invalid: %s", + ctx->Shader.CurrentGeometryProgram->Name, errMsg); + } + } +#endif } + if (ctx->Shader.CurrentFragmentProgram) { + frag_from_glsl_shader = true; + + if (!ctx->Shader.CurrentFragmentProgram->LinkStatus) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "%s(shader not linked)", where); + return GL_FALSE; + } +#if 0 /* not normally enabled */ + { + char errMsg[100]; + if (!_mesa_validate_shader_program(ctx, + ctx->Shader.CurrentFragmentProgram, + errMsg)) { + _mesa_warning(ctx, "Shader program %u is invalid: %s", + ctx->Shader.CurrentFragmentProgram->Name, errMsg); + } + } +#endif + } /* Any shader stages that are not supplied by the GLSL shader and have * assembly shaders enabled must now be validated. @@ -1744,11 +1796,21 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where) */ (void) geom_from_glsl_shader; - if (!frag_from_glsl_shader - && ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "%s(fragment program not valid)", where); - return GL_FALSE; + if (!frag_from_glsl_shader) { + if (ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "%s(fragment program not valid)", where); + return GL_FALSE; + } + + /* If drawing to integer-valued color buffers, there must be an + * active fragment shader (GL_EXT_texture_integer). + */ + if (ctx->DrawBuffer && ctx->DrawBuffer->_IntegerColor) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "%s(integer format but no fragment shader)", where); + return GL_FALSE; + } } if (ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) { @@ -1759,26 +1821,51 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where) #ifdef DEBUG if (ctx->Shader.Flags & GLSL_LOG) { - struct gl_shader_program *shProg = ctx->Shader.CurrentProgram; - if (shProg) { - if (!shProg->_Used) { - /* This is the first time this shader is being used. - * Append shader's constants/uniforms to log file. - */ - GLuint i; - for (i = 0; i < shProg->NumShaders; i++) { - struct gl_shader *sh = shProg->Shaders[i]; - if (sh->Type == GL_VERTEX_SHADER) { - _mesa_append_uniforms_to_file(sh, - &shProg->VertexProgram->Base); - } - else if (sh->Type == GL_FRAGMENT_SHADER) { - _mesa_append_uniforms_to_file(sh, - &shProg->FragmentProgram->Base); - } - } - shProg->_Used = GL_TRUE; - } + struct gl_shader_program *shProg[MESA_SHADER_TYPES]; + unsigned i; + + shProg[MESA_SHADER_VERTEX] = ctx->Shader.CurrentVertexProgram; + shProg[MESA_SHADER_GEOMETRY] = ctx->Shader.CurrentGeometryProgram; + shProg[MESA_SHADER_FRAGMENT] = ctx->Shader.CurrentFragmentProgram; + + for (i = 0; i < MESA_SHADER_TYPES; i++) { + struct gl_shader *sh; + + if (shProg[i] == NULL || shProg[i]->_Used + || shProg[i]->_LinkedShaders[i] == NULL) + continue; + + /* This is the first time this shader is being used. + * Append shader's constants/uniforms to log file. + * + * The logic is a little odd here. We only want to log data for each + * shader target that will actually be used, and we only want to log + * it once. It's possible to have a program bound to the vertex + * shader target that also supplied a fragment shader. If that + * program isn't also bound to the fragment shader target we don't + * want to log its fragment data. + */ + sh = shProg[i]->_LinkedShaders[i]; + switch (sh->Type) { + case GL_VERTEX_SHADER: + _mesa_append_uniforms_to_file(sh, &shProg[i]->VertexProgram->Base); + break; + + case GL_GEOMETRY_SHADER_ARB: + _mesa_append_uniforms_to_file(sh, + &shProg[i]->GeometryProgram->Base); + break; + + case GL_FRAGMENT_SHADER: + _mesa_append_uniforms_to_file(sh, + &shProg[i]->FragmentProgram->Base); + break; + } + } + + for (i = 0; i < MESA_SHADER_TYPES; i++) { + if (shProg[i] != NULL) + shProg[i]->_Used = GL_TRUE; } } #endif diff --git a/src/mesa/main/convolve.h b/src/mesa/main/convolve.h index 0277917433..7dc0a48b74 100644 --- a/src/mesa/main/convolve.h +++ b/src/mesa/main/convolve.h @@ -28,7 +28,10 @@ #define CONVOLVE_H -#include "main/mtypes.h" +#include "compiler.h" +#include "mfeatures.h" + +struct _glapi_table; #if FEATURE_convolve @@ -38,8 +41,6 @@ _mesa_init_convolve_dispatch(struct _glapi_table *disp); #else /* FEATURE_convolve */ -#include "main/compiler.h" - static INLINE void _mesa_init_convolve_dispatch(struct _glapi_table *disp) { diff --git a/src/mesa/main/core.h b/src/mesa/main/core.h index ea6e6bf118..542d95b848 100644 --- a/src/mesa/main/core.h +++ b/src/mesa/main/core.h @@ -46,8 +46,6 @@ #include "main/imports.h" #include "main/macros.h" -#include "main/version.h" /* for MESA_VERSION_STRING */ -#include "main/context.h" /* for _mesa_share_state */ #include "main/mtypes.h" #ifdef __cplusplus diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 5e006e0ad3..c62969e9b7 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -33,8 +33,20 @@ /* THIS FILE ONLY INCLUDED BY mtypes.h !!!!! */ -struct gl_pixelstore_attrib; +#include "glheader.h" + +struct gl_buffer_object; +struct gl_context; struct gl_display_list; +struct gl_framebuffer; +struct gl_pixelstore_attrib; +struct gl_program; +struct gl_renderbuffer; +struct gl_renderbuffer_attachment; +struct gl_shader; +struct gl_shader_program; +struct gl_texture_image; +struct gl_texture_object; /* GL_ARB_vertex_buffer_object */ /* Modifies GL_MAP_UNSYNCHRONIZED_BIT to allow driver to fail (return @@ -1105,6 +1117,24 @@ typedef struct { void (GLAPIENTRYP VertexAttrib3fvARB)( GLuint index, const GLfloat *v ); void (GLAPIENTRYP VertexAttrib4fARB)( GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w ); void (GLAPIENTRYP VertexAttrib4fvARB)( GLuint index, const GLfloat *v ); + + /* GL_EXT_gpu_shader4 / GL 3.0 */ + void (GLAPIENTRYP VertexAttribI1i)( GLuint index, GLint x); + void (GLAPIENTRYP VertexAttribI2i)( GLuint index, GLint x, GLint y); + void (GLAPIENTRYP VertexAttribI3i)( GLuint index, GLint x, GLint y, GLint z); + void (GLAPIENTRYP VertexAttribI4i)( GLuint index, GLint x, GLint y, GLint z, GLint w); + void (GLAPIENTRYP VertexAttribI2iv)( GLuint index, const GLint *v); + void (GLAPIENTRYP VertexAttribI3iv)( GLuint index, const GLint *v); + void (GLAPIENTRYP VertexAttribI4iv)( GLuint index, const GLint *v); + + void (GLAPIENTRYP VertexAttribI1ui)( GLuint index, GLuint x); + void (GLAPIENTRYP VertexAttribI2ui)( GLuint index, GLuint x, GLuint y); + void (GLAPIENTRYP VertexAttribI3ui)( GLuint index, GLuint x, GLuint y, GLuint z); + void (GLAPIENTRYP VertexAttribI4ui)( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void (GLAPIENTRYP VertexAttribI2uiv)( GLuint index, const GLuint *v); + void (GLAPIENTRYP VertexAttribI3uiv)( GLuint index, const GLuint *v); + void (GLAPIENTRYP VertexAttribI4uiv)( GLuint index, const GLuint *v); + /*@}*/ void (GLAPIENTRYP Rectf)( GLfloat, GLfloat, GLfloat, GLfloat ); diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index a7e65f8d3a..79aa53585f 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -120,7 +120,7 @@ void _mesa_print_tri_caps( const char *name, GLuint flags ) { _mesa_debug(NULL, - "%s: (0x%x) %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", + "%s: (0x%x) %s%s%s%s%s%s%s%s%s%s%s%s%s\n", name, flags, (flags & DD_FLATSHADE) ? "flat-shade, " : "", @@ -133,9 +133,7 @@ _mesa_print_tri_caps( const char *name, GLuint flags ) (flags & DD_TRI_SMOOTH) ? "tri-smooth, " : "", (flags & DD_LINE_SMOOTH) ? "line-smooth, " : "", (flags & DD_LINE_STIPPLE) ? "line-stipple, " : "", - (flags & DD_LINE_WIDTH) ? "line-wide, " : "", (flags & DD_POINT_SMOOTH) ? "point-smooth, " : "", - (flags & DD_POINT_SIZE) ? "point-size, " : "", (flags & DD_POINT_ATTEN) ? "point-atten, " : "", (flags & DD_TRI_CULL_FRONT_BACK) ? "cull-all, " : "" ); diff --git a/src/mesa/main/debug.h b/src/mesa/main/debug.h index e3bb4dfe81..17aa897e8d 100644 --- a/src/mesa/main/debug.h +++ b/src/mesa/main/debug.h @@ -37,7 +37,10 @@ #define _DEBUG_H #include "glheader.h" -#include "mtypes.h" +#include "mfeatures.h" + +struct gl_context; +struct gl_texture_image; #if _HAVE_FULL_GL diff --git a/src/mesa/main/depth.h b/src/mesa/main/depth.h index d61d3b121b..b498a47153 100644 --- a/src/mesa/main/depth.h +++ b/src/mesa/main/depth.h @@ -32,7 +32,10 @@ #define DEPTH_H -#include "mtypes.h" +#include "glheader.h" +#include "mfeatures.h" + +struct gl_context; #if _HAVE_FULL_GL diff --git a/src/mesa/main/depthstencil.h b/src/mesa/main/depthstencil.h index 4db5868263..ef63c5d7a3 100644 --- a/src/mesa/main/depthstencil.h +++ b/src/mesa/main/depthstencil.h @@ -26,7 +26,7 @@ #ifndef DEPTHSTENCIL_H #define DEPTHSTENCIL_H -#include "mtypes.h" +struct gl_context; extern struct gl_renderbuffer * _mesa_new_z24_renderbuffer_wrapper(struct gl_context *ctx, diff --git a/src/mesa/main/dispatch.h b/src/mesa/main/dispatch.h index 27f80a5062..a597959cf8 100644 --- a/src/mesa/main/dispatch.h +++ b/src/mesa/main/dispatch.h @@ -26,12 +26,12 @@ #ifndef _DISPATCH_H #define _DISPATCH_H -#ifdef IN_DRI_DRIVER +#include "main/mfeatures.h" + +#if FEATURE_remap_table #define _GLAPI_USE_REMAP_TABLE #endif -#include "glapi/glapitable.h" -#include "glapi/glapioffsets.h" -#include "glapi/glapidispatch.h" +#include "main/glapidispatch.h" #endif /* _DISPATCH_H */ diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index f513f31c56..6c0c556ad8 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -53,6 +53,7 @@ #include "image.h" #include "light.h" #include "macros.h" +#include "pack.h" #include "queryobj.h" #include "teximage.h" #include "mtypes.h" @@ -410,6 +411,16 @@ typedef enum OPCODE_BEGIN_TRANSFORM_FEEDBACK, OPCODE_END_TRANSFORM_FEEDBACK, + /* GL_EXT_texture_integer */ + OPCODE_CLEARCOLOR_I, + OPCODE_CLEARCOLOR_UI, + OPCODE_TEXPARAMETER_I, + OPCODE_TEXPARAMETER_UI, + + /* GL_EXT_separate_shader_objects */ + OPCODE_ACTIVE_PROGRAM_EXT, + OPCODE_USE_SHADER_PROGRAM_EXT, + /* The following three are meta instructions */ OPCODE_ERROR, /* raise compiled-in error */ OPCODE_CONTINUE, @@ -4773,9 +4784,9 @@ save_ExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params) static void GLAPIENTRY save_ProgramParameters4dvNV(GLenum target, GLuint index, - GLuint num, const GLdouble *params) + GLsizei num, const GLdouble *params) { - GLuint i; + GLint i; for (i = 0; i < num; i++) { save_ProgramEnvParameter4dvARB(target, index + i, params + 4 * i); } @@ -4784,9 +4795,9 @@ save_ProgramParameters4dvNV(GLenum target, GLuint index, static void GLAPIENTRY save_ProgramParameters4fvNV(GLenum target, GLuint index, - GLuint num, const GLfloat *params) + GLsizei num, const GLfloat *params) { - GLuint i; + GLint i; for (i = 0; i < num; i++) { save_ProgramEnvParameter4fvARB(target, index + i, params + 4 * i); } @@ -6786,6 +6797,137 @@ save_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, } } +static void GLAPIENTRY +save_UseShaderProgramEXT(GLenum type, GLuint program) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_USE_SHADER_PROGRAM_EXT, 2); + if (n) { + n[1].ui = type; + n[2].ui = program; + } + if (ctx->ExecuteFlag) { + CALL_UseShaderProgramEXT(ctx->Exec, (type, program)); + } +} + +static void GLAPIENTRY +save_ActiveProgramEXT(GLuint program) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_ACTIVE_PROGRAM_EXT, 1); + if (n) { + n[1].ui = program; + } + if (ctx->ExecuteFlag) { + CALL_ActiveProgramEXT(ctx->Exec, (program)); + } +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +save_ClearColorIi(GLint red, GLint green, GLint blue, GLint alpha) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_CLEARCOLOR_I, 4); + if (n) { + n[1].i = red; + n[2].i = green; + n[3].i = blue; + n[4].i = alpha; + } + if (ctx->ExecuteFlag) { + CALL_ClearColorIiEXT(ctx->Exec, (red, green, blue, alpha)); + } +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +save_ClearColorIui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_CLEARCOLOR_UI, 4); + if (n) { + n[1].ui = red; + n[2].ui = green; + n[3].ui = blue; + n[4].ui = alpha; + } + if (ctx->ExecuteFlag) { + CALL_ClearColorIuiEXT(ctx->Exec, (red, green, blue, alpha)); + } +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +save_TexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_TEXPARAMETER_I, 6); + if (n) { + n[1].e = target; + n[2].e = pname; + n[3].i = params[0]; + n[4].i = params[1]; + n[5].i = params[2]; + n[6].i = params[3]; + } + if (ctx->ExecuteFlag) { + CALL_TexParameterIivEXT(ctx->Exec, (target, pname, params)); + } +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +save_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_TEXPARAMETER_UI, 6); + if (n) { + n[1].e = target; + n[2].e = pname; + n[3].ui = params[0]; + n[4].ui = params[1]; + n[5].ui = params[2]; + n[6].ui = params[3]; + } + if (ctx->ExecuteFlag) { + CALL_TexParameterIuivEXT(ctx->Exec, (target, pname, params)); + } +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +exec_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + GET_CURRENT_CONTEXT(ctx); + FLUSH_VERTICES(ctx, 0); + CALL_GetTexParameterIivEXT(ctx->Exec, (target, pname, params)); +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +exec_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + GET_CURRENT_CONTEXT(ctx); + FLUSH_VERTICES(ctx, 0); + CALL_GetTexParameterIuivEXT(ctx->Exec, (target, pname, params)); +} + + + /** @@ -7673,6 +7815,12 @@ execute_list(struct gl_context *ctx, GLuint list) case OPCODE_USE_PROGRAM: CALL_UseProgramObjectARB(ctx->Exec, (n[1].ui)); break; + case OPCODE_USE_SHADER_PROGRAM_EXT: + CALL_UseShaderProgramEXT(ctx->Exec, (n[1].ui, n[2].ui)); + break; + case OPCODE_ACTIVE_PROGRAM_EXT: + CALL_ActiveProgramEXT(ctx->Exec, (n[1].ui)); + break; case OPCODE_UNIFORM_1F: CALL_Uniform1fARB(ctx->Exec, (n[1].i, n[2].f)); break; @@ -7903,6 +8051,35 @@ execute_list(struct gl_context *ctx, GLuint list) CALL_EvalPoint2(ctx->Exec, (n[1].i, n[2].i)); break; + /* GL_EXT_texture_integer */ + case OPCODE_CLEARCOLOR_I: + CALL_ClearColorIiEXT(ctx->Exec, (n[1].i, n[2].i, n[3].i, n[4].i)); + break; + case OPCODE_CLEARCOLOR_UI: + CALL_ClearColorIuiEXT(ctx->Exec, + (n[1].ui, n[2].ui, n[3].ui, n[4].ui)); + break; + case OPCODE_TEXPARAMETER_I: + { + GLint params[4]; + params[0] = n[3].i; + params[1] = n[4].i; + params[2] = n[5].i; + params[3] = n[6].i; + CALL_TexParameterIivEXT(ctx->Exec, (n[1].e, n[2].e, params)); + } + break; + case OPCODE_TEXPARAMETER_UI: + { + GLuint params[4]; + params[0] = n[3].ui; + params[1] = n[4].ui; + params[2] = n[5].ui; + params[3] = n[6].ui; + CALL_TexParameterIuivEXT(ctx->Exec, (n[1].e, n[2].e, params)); + } + break; + case OPCODE_CONTINUE: n = (Node *) n[1].next; break; @@ -8939,7 +9116,7 @@ _mesa_create_save_table(void) { struct _glapi_table *table; - table = _mesa_alloc_dispatch_table(sizeof *table); + table = _mesa_alloc_dispatch_table(_gloffset_COUNT); if (table == NULL) return NULL; @@ -9531,6 +9708,18 @@ _mesa_create_save_table(void) SET_ObjectUnpurgeableAPPLE(table, _mesa_ObjectUnpurgeableAPPLE); #endif + /* GL_EXT_texture_integer */ + SET_ClearColorIiEXT(table, save_ClearColorIi); + SET_ClearColorIuiEXT(table, save_ClearColorIui); + SET_TexParameterIivEXT(table, save_TexParameterIiv); + SET_TexParameterIuivEXT(table, save_TexParameterIuiv); + SET_GetTexParameterIivEXT(table, exec_GetTexParameterIiv); + SET_GetTexParameterIuivEXT(table, exec_GetTexParameterIuiv); + + /* 377. GL_EXT_separate_shader_objects */ + SET_UseShaderProgramEXT(table, save_UseShaderProgramEXT); + SET_ActiveProgramEXT(table, save_ActiveProgramEXT); + /* GL 3.0 */ #if 0 SET_ClearBufferiv(table, save_ClearBufferiv); diff --git a/src/mesa/main/drawpix.c b/src/mesa/main/drawpix.c index ac92a3fb08..757aae6e70 100644 --- a/src/mesa/main/drawpix.c +++ b/src/mesa/main/drawpix.c @@ -32,23 +32,12 @@ #include "framebuffer.h" #include "readpix.h" #include "state.h" -#include "main/dispatch.h" +#include "dispatch.h" #if FEATURE_drawpix -/** - * If a fragment program is enabled, check that it's valid. - * \return GL_TRUE if valid, GL_FALSE otherwise - */ -static GLboolean -valid_fragment_program(struct gl_context *ctx) -{ - return !(ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled); -} - - /* * Execute glDrawPixels */ @@ -65,33 +54,21 @@ _mesa_DrawPixels( GLsizei width, GLsizei height, } /* We're not using the current vertex program, and the driver may install - * it's own. + * its own. Note: this may dirty some state. */ _mesa_set_vp_override(ctx, GL_TRUE); - if (ctx->NewState) { - _mesa_update_state(ctx); - } - - if (!valid_fragment_program(ctx)) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glDrawPixels (invalid fragment program)"); - goto end; + /* Note: this call does state validation */ + if (!_mesa_valid_to_render(ctx, "glDrawPixels")) { + goto end; /* the error code was recorded */ } if (_mesa_error_check_format_type(ctx, format, type, GL_TRUE)) { - /* the error was already recorded */ - goto end; - } - - if (ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) { - _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION_EXT, - "glDrawPixels(incomplete framebuffer)" ); - goto end; + goto end; /* the error code was recorded */ } if (!ctx->Current.RasterPosValid) { - goto end; /* no-op, not an error */ + goto end; /* no-op, not an error */ } if (ctx->RenderMode == GL_RENDER) { @@ -165,22 +142,17 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height, } /* We're not using the current vertex program, and the driver may install - * it's own. + * it's own. Note: this may dirty some state. */ _mesa_set_vp_override(ctx, GL_TRUE); - if (ctx->NewState) { - _mesa_update_state(ctx); + /* Note: this call does state validation */ + if (!_mesa_valid_to_render(ctx, "glCopyPixels")) { + goto end; /* the error code was recorded */ } - if (!valid_fragment_program(ctx)) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glCopyPixels (invalid fragment program)"); - goto end; - } - - if (ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT || - ctx->ReadBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) { + /* Check read buffer's status (draw buffer was already checked) */ + if (ctx->ReadBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) { _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION_EXT, "glCopyPixels(incomplete framebuffer)" ); goto end; @@ -241,19 +213,9 @@ _mesa_Bitmap( GLsizei width, GLsizei height, return; /* do nothing */ } - if (ctx->NewState) { - _mesa_update_state(ctx); - } - - if (!valid_fragment_program(ctx)) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glBitmap (invalid fragment program)"); - return; - } - - if (ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) { - _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION_EXT, - "glBitmap(incomplete framebuffer)"); + /* Note: this call does state validation */ + if (!_mesa_valid_to_render(ctx, "glBitmap")) { + /* the error code was recorded */ return; } diff --git a/src/mesa/main/drawpix.h b/src/mesa/main/drawpix.h index 1f95ff5294..31baa192ec 100644 --- a/src/mesa/main/drawpix.h +++ b/src/mesa/main/drawpix.h @@ -26,7 +26,10 @@ #define DRAWPIX_H -#include "main/mtypes.h" +#include "compiler.h" +#include "mfeatures.h" + +struct _glapi_table; #if FEATURE_drawpix diff --git a/src/mesa/main/drawtex.h b/src/mesa/main/drawtex.h index d7d507566b..13ff6f97e9 100644 --- a/src/mesa/main/drawtex.h +++ b/src/mesa/main/drawtex.h @@ -25,7 +25,8 @@ #define DRAWTEX_H -#include "main/mtypes.h" +#include "glheader.h" +#include "mfeatures.h" #if FEATURE_OES_draw_texture diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index af16c010b9..a038a95c55 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -130,6 +130,7 @@ client_state(struct gl_context *ctx, GLenum cap, GLboolean state) goto invalid_enum_error; } var = &ctx->Array.PrimitiveRestart; + flag = 0; break; default: diff --git a/src/mesa/main/enable.h b/src/mesa/main/enable.h index 69e52b1cb2..6d90c170c8 100644 --- a/src/mesa/main/enable.h +++ b/src/mesa/main/enable.h @@ -32,7 +32,9 @@ #define ENABLE_H -#include "mtypes.h" +#include "glheader.h" + +struct gl_context; extern void diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c index 4403945f43..0ce62c0e3c 100644 --- a/src/mesa/main/enums.c +++ b/src/mesa/main/enums.c @@ -53,6 +53,7 @@ LONGSTRING static const char enum_string_table[] = "GL_ACCUM_RED_BITS\0" "GL_ACTIVE_ATTRIBUTES\0" "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH\0" + "GL_ACTIVE_PROGRAM_EXT\0" "GL_ACTIVE_STENCIL_FACE_EXT\0" "GL_ACTIVE_TEXTURE\0" "GL_ACTIVE_TEXTURE_ARB\0" @@ -71,13 +72,20 @@ LONGSTRING static const char enum_string_table[] = "GL_ALPHA12\0" "GL_ALPHA12_EXT\0" "GL_ALPHA16\0" + "GL_ALPHA16I_EXT\0" + "GL_ALPHA16UI_EXT\0" "GL_ALPHA16_EXT\0" + "GL_ALPHA32I_EXT\0" + "GL_ALPHA32UI_EXT\0" "GL_ALPHA4\0" "GL_ALPHA4_EXT\0" "GL_ALPHA8\0" + "GL_ALPHA8I_EXT\0" + "GL_ALPHA8UI_EXT\0" "GL_ALPHA8_EXT\0" "GL_ALPHA_BIAS\0" "GL_ALPHA_BITS\0" + "GL_ALPHA_INTEGER_EXT\0" "GL_ALPHA_SCALE\0" "GL_ALPHA_TEST\0" "GL_ALPHA_TEST_FUNC\0" @@ -110,6 +118,10 @@ LONGSTRING static const char enum_string_table[] = "GL_BGR\0" "GL_BGRA\0" "GL_BGRA_EXT\0" + "GL_BGRA_INTEGER\0" + "GL_BGRA_INTEGER_EXT\0" + "GL_BGR_INTEGER\0" + "GL_BGR_INTEGER_EXT\0" "GL_BITMAP\0" "GL_BITMAP_TOKEN\0" "GL_BLEND\0" @@ -137,6 +149,8 @@ LONGSTRING static const char enum_string_table[] = "GL_BLUE\0" "GL_BLUE_BIAS\0" "GL_BLUE_BITS\0" + "GL_BLUE_INTEGER\0" + "GL_BLUE_INTEGER_EXT\0" "GL_BLUE_SCALE\0" "GL_BOOL\0" "GL_BOOL_ARB\0" @@ -148,11 +162,14 @@ LONGSTRING static const char enum_string_table[] = "GL_BOOL_VEC4_ARB\0" "GL_BUFFER_ACCESS\0" "GL_BUFFER_ACCESS_ARB\0" + "GL_BUFFER_ACCESS_FLAGS\0" "GL_BUFFER_ACCESS_OES\0" "GL_BUFFER_FLUSHING_UNMAP_APPLE\0" "GL_BUFFER_MAPPED\0" "GL_BUFFER_MAPPED_ARB\0" "GL_BUFFER_MAPPED_OES\0" + "GL_BUFFER_MAP_LENGTH\0" + "GL_BUFFER_MAP_OFFSET\0" "GL_BUFFER_MAP_POINTER\0" "GL_BUFFER_MAP_POINTER_ARB\0" "GL_BUFFER_MAP_POINTER_OES\0" @@ -175,6 +192,7 @@ LONGSTRING static const char enum_string_table[] = "GL_C4UB_V3F\0" "GL_CCW\0" "GL_CLAMP\0" + "GL_CLAMP_READ_COLOR\0" "GL_CLAMP_TO_BORDER\0" "GL_CLAMP_TO_BORDER_ARB\0" "GL_CLAMP_TO_BORDER_SGIS\0" @@ -187,6 +205,14 @@ LONGSTRING static const char enum_string_table[] = "GL_CLIENT_ATTRIB_STACK_DEPTH\0" "GL_CLIENT_PIXEL_STORE_BIT\0" "GL_CLIENT_VERTEX_ARRAY_BIT\0" + "GL_CLIP_DISTANCE0\0" + "GL_CLIP_DISTANCE1\0" + "GL_CLIP_DISTANCE2\0" + "GL_CLIP_DISTANCE3\0" + "GL_CLIP_DISTANCE4\0" + "GL_CLIP_DISTANCE5\0" + "GL_CLIP_DISTANCE6\0" + "GL_CLIP_DISTANCE7\0" "GL_CLIP_PLANE0\0" "GL_CLIP_PLANE1\0" "GL_CLIP_PLANE2\0" @@ -291,6 +317,7 @@ LONGSTRING static const char enum_string_table[] = "GL_COMBINE_RGB_ARB\0" "GL_COMBINE_RGB_EXT\0" "GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT\0" + "GL_COMPARE_REF_TO_TEXTURE\0" "GL_COMPARE_R_TO_TEXTURE\0" "GL_COMPARE_R_TO_TEXTURE_ARB\0" "GL_COMPILE\0" @@ -304,6 +331,8 @@ LONGSTRING static const char enum_string_table[] = "GL_COMPRESSED_LUMINANCE_ALPHA\0" "GL_COMPRESSED_LUMINANCE_ALPHA_ARB\0" "GL_COMPRESSED_LUMINANCE_ARB\0" + "GL_COMPRESSED_RED\0" + "GL_COMPRESSED_RG\0" "GL_COMPRESSED_RGB\0" "GL_COMPRESSED_RGBA\0" "GL_COMPRESSED_RGBA_ARB\0" @@ -329,6 +358,11 @@ LONGSTRING static const char enum_string_table[] = "GL_CONSTANT_COLOR\0" "GL_CONSTANT_COLOR_EXT\0" "GL_CONSTANT_EXT\0" + "GL_CONTEXT_COMPATIBILITY_PROFILE_BIT\0" + "GL_CONTEXT_CORE_PROFILE_BIT\0" + "GL_CONTEXT_FLAGS\0" + "GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT\0" + "GL_CONTEXT_PROFILE_MASK\0" "GL_CONVOLUTION_1D\0" "GL_CONVOLUTION_2D\0" "GL_CONVOLUTION_BORDER_COLOR\0" @@ -408,6 +442,7 @@ LONGSTRING static const char enum_string_table[] = "GL_DEPTH_BITS\0" "GL_DEPTH_BOUNDS_EXT\0" "GL_DEPTH_BOUNDS_TEST_EXT\0" + "GL_DEPTH_BUFFER\0" "GL_DEPTH_BUFFER_BIT\0" "GL_DEPTH_CLAMP\0" "GL_DEPTH_CLAMP_NV\0" @@ -547,6 +582,7 @@ LONGSTRING static const char enum_string_table[] = "GL_FIRST_VERTEX_CONVENTION_EXT\0" "GL_FIXED\0" "GL_FIXED_OES\0" + "GL_FIXED_ONLY\0" "GL_FLAT\0" "GL_FLOAT\0" "GL_FLOAT_MAT2\0" @@ -607,6 +643,7 @@ LONGSTRING static const char enum_string_table[] = "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE\0" "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE\0" "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE\0" + "GL_FRAMEBUFFER_ATTACHMENT_LAYERED\0" "GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB\0" "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\0" "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT\0" @@ -647,6 +684,7 @@ LONGSTRING static const char enum_string_table[] = "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT\0" "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES\0" "GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB\0" + "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS\0" "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB\0" "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\0" "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT\0" @@ -680,15 +718,21 @@ LONGSTRING static const char enum_string_table[] = "GL_GENERATE_MIPMAP_HINT\0" "GL_GENERATE_MIPMAP_HINT_SGIS\0" "GL_GENERATE_MIPMAP_SGIS\0" + "GL_GEOMETRY_INPUT_TYPE\0" "GL_GEOMETRY_INPUT_TYPE_ARB\0" + "GL_GEOMETRY_OUTPUT_TYPE\0" "GL_GEOMETRY_OUTPUT_TYPE_ARB\0" + "GL_GEOMETRY_SHADER\0" "GL_GEOMETRY_SHADER_ARB\0" + "GL_GEOMETRY_VERTICES_OUT\0" "GL_GEOMETRY_VERTICES_OUT_ARB\0" "GL_GEQUAL\0" "GL_GREATER\0" "GL_GREEN\0" "GL_GREEN_BIAS\0" "GL_GREEN_BITS\0" + "GL_GREEN_INTEGER\0" + "GL_GREEN_INTEGER_EXT\0" "GL_GREEN_SCALE\0" "GL_HALF_FLOAT\0" "GL_HALF_FLOAT_OES\0" @@ -742,17 +786,40 @@ LONGSTRING static const char enum_string_table[] = "GL_INTENSITY12\0" "GL_INTENSITY12_EXT\0" "GL_INTENSITY16\0" + "GL_INTENSITY16I_EXT\0" + "GL_INTENSITY16UI_EXT\0" "GL_INTENSITY16_EXT\0" + "GL_INTENSITY32I_EXT\0" + "GL_INTENSITY32UI_EXT\0" "GL_INTENSITY4\0" "GL_INTENSITY4_EXT\0" "GL_INTENSITY8\0" + "GL_INTENSITY8I_EXT\0" + "GL_INTENSITY8UI_EXT\0" "GL_INTENSITY8_EXT\0" "GL_INTENSITY_EXT\0" + "GL_INTERLEAVED_ATTRIBS\0" "GL_INTERLEAVED_ATTRIBS_EXT\0" "GL_INTERPOLATE\0" "GL_INTERPOLATE_ARB\0" "GL_INTERPOLATE_EXT\0" "GL_INT_10_10_10_2_OES\0" + "GL_INT_SAMPLER_1D\0" + "GL_INT_SAMPLER_1D_ARRAY\0" + "GL_INT_SAMPLER_1D_ARRAY_EXT\0" + "GL_INT_SAMPLER_1D_EXT\0" + "GL_INT_SAMPLER_2D\0" + "GL_INT_SAMPLER_2D_ARRAY\0" + "GL_INT_SAMPLER_2D_ARRAY_EXT\0" + "GL_INT_SAMPLER_2D_EXT\0" + "GL_INT_SAMPLER_2D_RECT\0" + "GL_INT_SAMPLER_2D_RECT_EXT\0" + "GL_INT_SAMPLER_3D\0" + "GL_INT_SAMPLER_3D_EXT\0" + "GL_INT_SAMPLER_BUFFER\0" + "GL_INT_SAMPLER_BUFFER_EXT\0" + "GL_INT_SAMPLER_CUBE\0" + "GL_INT_SAMPLER_CUBE_EXT\0" "GL_INT_VEC2\0" "GL_INT_VEC2_ARB\0" "GL_INT_VEC3\0" @@ -797,6 +864,7 @@ LONGSTRING static const char enum_string_table[] = "GL_LINEAR_MIPMAP_LINEAR\0" "GL_LINEAR_MIPMAP_NEAREST\0" "GL_LINES\0" + "GL_LINES_ADJACENCY\0" "GL_LINES_ADJACENCY_ARB\0" "GL_LINE_BIT\0" "GL_LINE_LOOP\0" @@ -807,6 +875,7 @@ LONGSTRING static const char enum_string_table[] = "GL_LINE_STIPPLE_PATTERN\0" "GL_LINE_STIPPLE_REPEAT\0" "GL_LINE_STRIP\0" + "GL_LINE_STRIP_ADJACENCY\0" "GL_LINE_STRIP_ADJACENCY_ARB\0" "GL_LINE_TOKEN\0" "GL_LINE_WIDTH\0" @@ -831,9 +900,13 @@ LONGSTRING static const char enum_string_table[] = "GL_LUMINANCE12_ALPHA4_EXT\0" "GL_LUMINANCE12_EXT\0" "GL_LUMINANCE16\0" + "GL_LUMINANCE16I_EXT\0" + "GL_LUMINANCE16UI_EXT\0" "GL_LUMINANCE16_ALPHA16\0" "GL_LUMINANCE16_ALPHA16_EXT\0" "GL_LUMINANCE16_EXT\0" + "GL_LUMINANCE32I_EXT\0" + "GL_LUMINANCE32UI_EXT\0" "GL_LUMINANCE4\0" "GL_LUMINANCE4_ALPHA4\0" "GL_LUMINANCE4_ALPHA4_EXT\0" @@ -841,10 +914,21 @@ LONGSTRING static const char enum_string_table[] = "GL_LUMINANCE6_ALPHA2\0" "GL_LUMINANCE6_ALPHA2_EXT\0" "GL_LUMINANCE8\0" + "GL_LUMINANCE8I_EXT\0" + "GL_LUMINANCE8UI_EXT\0" "GL_LUMINANCE8_ALPHA8\0" "GL_LUMINANCE8_ALPHA8_EXT\0" "GL_LUMINANCE8_EXT\0" "GL_LUMINANCE_ALPHA\0" + "GL_LUMINANCE_ALPHA16I_EXT\0" + "GL_LUMINANCE_ALPHA16UI_EXT\0" + "GL_LUMINANCE_ALPHA32I_EXT\0" + "GL_LUMINANCE_ALPHA32UI_EXT\0" + "GL_LUMINANCE_ALPHA8I_EXT\0" + "GL_LUMINANCE_ALPHA8UI_EXT\0" + "GL_LUMINANCE_ALPHA_INTEGER_EXT\0" + "GL_LUMINANCE_INTEGER_EXT\0" + "GL_MAJOR_VERSION\0" "GL_MAP1_COLOR_4\0" "GL_MAP1_GRID_DOMAIN\0" "GL_MAP1_GRID_SEGMENTS\0" @@ -964,11 +1048,13 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX\0" "GL_MAX_3D_TEXTURE_SIZE\0" "GL_MAX_3D_TEXTURE_SIZE_OES\0" + "GL_MAX_ARRAY_TEXTURE_LAYERS\0" "GL_MAX_ARRAY_TEXTURE_LAYERS_EXT\0" "GL_MAX_ATTRIB_STACK_DEPTH\0" "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\0" "GL_MAX_CLIPMAP_DEPTH_SGIX\0" "GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX\0" + "GL_MAX_CLIP_DISTANCES\0" "GL_MAX_CLIP_PLANES\0" "GL_MAX_COLOR_ATTACHMENTS\0" "GL_MAX_COLOR_ATTACHMENTS_EXT\0" @@ -990,12 +1076,19 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_ELEMENTS_VERTICES\0" "GL_MAX_EVAL_ORDER\0" "GL_MAX_EXT\0" + "GL_MAX_FRAGMENT_INPUT_COMPONENTS\0" "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS\0" "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB\0" "GL_MAX_FRAGMENT_UNIFORM_VECTORS\0" + "GL_MAX_GEOMETRY_INPUT_COMPONENTS\0" + "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS\0" + "GL_MAX_GEOMETRY_OUTPUT_VERTICES\0" "GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB\0" + "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS\0" "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB\0" + "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS\0" "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB\0" + "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS\0" "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB\0" "GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB\0" "GL_MAX_LIGHTS\0" @@ -1029,9 +1122,12 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB\0" "GL_MAX_PROGRAM_PARAMETERS_ARB\0" "GL_MAX_PROGRAM_TEMPORARIES_ARB\0" + "GL_MAX_PROGRAM_TEXEL_OFFSET\0" + "GL_MAX_PROGRAM_TEXEL_OFFSET_EXT\0" "GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB\0" "GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB\0" "GL_MAX_PROJECTION_STACK_DEPTH\0" + "GL_MAX_RECTANGLE_TEXTURE_SIZE\0" "GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB\0" "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV\0" "GL_MAX_RENDERBUFFER_SIZE\0" @@ -1042,6 +1138,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_SERVER_WAIT_TIMEOUT\0" "GL_MAX_SHININESS_NV\0" "GL_MAX_SPOT_EXPONENT_NV\0" + "GL_MAX_TEXTURE_BUFFER_SIZE\0" "GL_MAX_TEXTURE_COORDS\0" "GL_MAX_TEXTURE_COORDS_ARB\0" "GL_MAX_TEXTURE_IMAGE_UNITS\0" @@ -1055,8 +1152,11 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_TEXTURE_UNITS_ARB\0" "GL_MAX_TRACK_MATRICES_NV\0" "GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV\0" + "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS\0" "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT\0" + "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS\0" "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT\0" + "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS\0" "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT\0" "GL_MAX_VARYING_COMPONENTS\0" "GL_MAX_VARYING_FLOATS\0" @@ -1064,6 +1164,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_VARYING_VECTORS\0" "GL_MAX_VERTEX_ATTRIBS\0" "GL_MAX_VERTEX_ATTRIBS_ARB\0" + "GL_MAX_VERTEX_OUTPUT_COMPONENTS\0" "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS\0" "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB\0" "GL_MAX_VERTEX_UNIFORM_COMPONENTS\0" @@ -1082,7 +1183,10 @@ LONGSTRING static const char enum_string_table[] = "GL_MINMAX_FORMAT_EXT\0" "GL_MINMAX_SINK\0" "GL_MINMAX_SINK_EXT\0" + "GL_MINOR_VERSION\0" "GL_MIN_EXT\0" + "GL_MIN_PROGRAM_TEXEL_OFFSET\0" + "GL_MIN_PROGRAM_TEXEL_OFFSET_EXT\0" "GL_MIRRORED_REPEAT\0" "GL_MIRRORED_REPEAT_ARB\0" "GL_MIRRORED_REPEAT_IBM\0" @@ -1169,6 +1273,7 @@ LONGSTRING static const char enum_string_table[] = "GL_NO_ERROR\0" "GL_NUM_COMPRESSED_TEXTURE_FORMATS\0" "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB\0" + "GL_NUM_EXTENSIONS\0" "GL_NUM_PROGRAM_BINARY_FORMATS_OES\0" "GL_NUM_SHADER_BINARY_FORMATS\0" "GL_OBJECT_ACTIVE_ATTRIBUTES_ARB\0" @@ -1368,7 +1473,10 @@ LONGSTRING static const char enum_string_table[] = "GL_PRIMARY_COLOR\0" "GL_PRIMARY_COLOR_ARB\0" "GL_PRIMARY_COLOR_EXT\0" + "GL_PRIMITIVES_GENERATED\0" "GL_PRIMITIVES_GENERATED_EXT\0" + "GL_PRIMITIVE_RESTART\0" + "GL_PRIMITIVE_RESTART_INDEX\0" "GL_PRIMITIVE_RESTART_INDEX_NV\0" "GL_PRIMITIVE_RESTART_NV\0" "GL_PROGRAM_ADDRESS_REGISTERS_ARB\0" @@ -1396,6 +1504,7 @@ LONGSTRING static const char enum_string_table[] = "GL_PROGRAM_OBJECT_ARB\0" "GL_PROGRAM_PARAMETERS_ARB\0" "GL_PROGRAM_PARAMETER_NV\0" + "GL_PROGRAM_POINT_SIZE\0" "GL_PROGRAM_POINT_SIZE_ARB\0" "GL_PROGRAM_RESIDENT_NV\0" "GL_PROGRAM_STRING_ARB\0" @@ -1417,15 +1526,18 @@ LONGSTRING static const char enum_string_table[] = "GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE\0" "GL_PROXY_POST_CONVOLUTION_COLOR_TABLE\0" "GL_PROXY_TEXTURE_1D\0" + "GL_PROXY_TEXTURE_1D_ARRAY\0" "GL_PROXY_TEXTURE_1D_ARRAY_EXT\0" "GL_PROXY_TEXTURE_1D_EXT\0" "GL_PROXY_TEXTURE_2D\0" + "GL_PROXY_TEXTURE_2D_ARRAY\0" "GL_PROXY_TEXTURE_2D_ARRAY_EXT\0" "GL_PROXY_TEXTURE_2D_EXT\0" "GL_PROXY_TEXTURE_3D\0" "GL_PROXY_TEXTURE_COLOR_TABLE_SGI\0" "GL_PROXY_TEXTURE_CUBE_MAP\0" "GL_PROXY_TEXTURE_CUBE_MAP_ARB\0" + "GL_PROXY_TEXTURE_RECTANGLE\0" "GL_PROXY_TEXTURE_RECTANGLE_ARB\0" "GL_PROXY_TEXTURE_RECTANGLE_NV\0" "GL_PURGEABLE_APPLE\0" @@ -1436,18 +1548,26 @@ LONGSTRING static const char enum_string_table[] = "GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT\0" "GL_QUAD_MESH_SUN\0" "GL_QUAD_STRIP\0" + "GL_QUERY_BY_REGION_NO_WAIT\0" "GL_QUERY_BY_REGION_NO_WAIT_NV\0" + "GL_QUERY_BY_REGION_WAIT\0" "GL_QUERY_BY_REGION_WAIT_NV\0" "GL_QUERY_COUNTER_BITS\0" "GL_QUERY_COUNTER_BITS_ARB\0" + "GL_QUERY_NO_WAIT\0" "GL_QUERY_NO_WAIT_NV\0" "GL_QUERY_RESULT\0" "GL_QUERY_RESULT_ARB\0" "GL_QUERY_RESULT_AVAILABLE\0" "GL_QUERY_RESULT_AVAILABLE_ARB\0" + "GL_QUERY_WAIT\0" "GL_QUERY_WAIT_NV\0" "GL_R\0" + "GL_R11F_G11F_B10F\0" + "GL_R16_SNORM\0" "GL_R3_G3_B2\0" + "GL_R8_SNORM\0" + "GL_RASTERIZER_DISCARD\0" "GL_RASTERIZER_DISCARD_EXT\0" "GL_RASTER_POSITION_UNCLIPPED_IBM\0" "GL_READ_BUFFER\0" @@ -1464,7 +1584,10 @@ LONGSTRING static const char enum_string_table[] = "GL_REDUCE_EXT\0" "GL_RED_BIAS\0" "GL_RED_BITS\0" + "GL_RED_INTEGER\0" + "GL_RED_INTEGER_EXT\0" "GL_RED_SCALE\0" + "GL_RED_SNORM\0" "GL_REFLECTION_MAP\0" "GL_REFLECTION_MAP_ARB\0" "GL_REFLECTION_MAP_NV\0" @@ -1510,6 +1633,8 @@ LONGSTRING static const char enum_string_table[] = "GL_RESCALE_NORMAL_EXT\0" "GL_RETAINED_APPLE\0" "GL_RETURN\0" + "GL_RG16_SNORM\0" + "GL_RG8_SNORM\0" "GL_RGB\0" "GL_RGB10\0" "GL_RGB10_A2\0" @@ -1518,8 +1643,19 @@ LONGSTRING static const char enum_string_table[] = "GL_RGB12\0" "GL_RGB12_EXT\0" "GL_RGB16\0" + "GL_RGB16F\0" + "GL_RGB16I\0" + "GL_RGB16I_EXT\0" + "GL_RGB16UI\0" + "GL_RGB16UI_EXT\0" "GL_RGB16_EXT\0" + "GL_RGB16_SNORM\0" "GL_RGB2_EXT\0" + "GL_RGB32F\0" + "GL_RGB32I\0" + "GL_RGB32I_EXT\0" + "GL_RGB32UI\0" + "GL_RGB32UI_EXT\0" "GL_RGB4\0" "GL_RGB4_EXT\0" "GL_RGB4_S3TC\0" @@ -1531,41 +1667,83 @@ LONGSTRING static const char enum_string_table[] = "GL_RGB5_A1_OES\0" "GL_RGB5_EXT\0" "GL_RGB8\0" + "GL_RGB8I\0" + "GL_RGB8I_EXT\0" + "GL_RGB8UI\0" + "GL_RGB8UI_EXT\0" "GL_RGB8_EXT\0" "GL_RGB8_OES\0" + "GL_RGB8_SNORM\0" + "GL_RGB9_E5\0" "GL_RGBA\0" "GL_RGBA12\0" "GL_RGBA12_EXT\0" "GL_RGBA16\0" + "GL_RGBA16F\0" + "GL_RGBA16I\0" + "GL_RGBA16I_EXT\0" + "GL_RGBA16UI\0" + "GL_RGBA16UI_EXT\0" "GL_RGBA16_EXT\0" + "GL_RGBA16_SNORM\0" "GL_RGBA2\0" "GL_RGBA2_EXT\0" + "GL_RGBA32F\0" + "GL_RGBA32I\0" + "GL_RGBA32I_EXT\0" + "GL_RGBA32UI\0" + "GL_RGBA32UI_EXT\0" "GL_RGBA4\0" "GL_RGBA4_DXT5_S3TC\0" "GL_RGBA4_EXT\0" "GL_RGBA4_OES\0" "GL_RGBA4_S3TC\0" "GL_RGBA8\0" + "GL_RGBA8I\0" + "GL_RGBA8I_EXT\0" + "GL_RGBA8UI\0" + "GL_RGBA8UI_EXT\0" "GL_RGBA8_EXT\0" "GL_RGBA8_OES\0" "GL_RGBA8_SNORM\0" "GL_RGBA_DXT5_S3TC\0" + "GL_RGBA_INTEGER\0" + "GL_RGBA_INTEGER_EXT\0" + "GL_RGBA_INTEGER_MODE_EXT\0" "GL_RGBA_MODE\0" "GL_RGBA_S3TC\0" "GL_RGBA_SNORM\0" + "GL_RGB_INTEGER\0" + "GL_RGB_INTEGER_EXT\0" "GL_RGB_S3TC\0" "GL_RGB_SCALE\0" "GL_RGB_SCALE_ARB\0" "GL_RGB_SCALE_EXT\0" + "GL_RGB_SNORM\0" + "GL_RG_SNORM\0" "GL_RIGHT\0" "GL_S\0" "GL_SAMPLER_1D\0" + "GL_SAMPLER_1D_ARRAY\0" + "GL_SAMPLER_1D_ARRAY_EXT\0" + "GL_SAMPLER_1D_ARRAY_SHADOW\0" + "GL_SAMPLER_1D_ARRAY_SHADOW_EXT\0" "GL_SAMPLER_1D_SHADOW\0" "GL_SAMPLER_2D\0" + "GL_SAMPLER_2D_ARRAY\0" + "GL_SAMPLER_2D_ARRAY_EXT\0" + "GL_SAMPLER_2D_ARRAY_SHADOW\0" + "GL_SAMPLER_2D_ARRAY_SHADOW_EXT\0" + "GL_SAMPLER_2D_RECT\0" + "GL_SAMPLER_2D_RECT_SHADOW\0" "GL_SAMPLER_2D_SHADOW\0" "GL_SAMPLER_3D\0" "GL_SAMPLER_3D_OES\0" + "GL_SAMPLER_BUFFER\0" + "GL_SAMPLER_BUFFER_EXT\0" "GL_SAMPLER_CUBE\0" + "GL_SAMPLER_CUBE_SHADOW\0" + "GL_SAMPLER_CUBE_SHADOW_EXT\0" "GL_SAMPLES\0" "GL_SAMPLES_3DFX\0" "GL_SAMPLES_ARB\0" @@ -1598,6 +1776,7 @@ LONGSTRING static const char enum_string_table[] = "GL_SELECTION_BUFFER_POINTER\0" "GL_SELECTION_BUFFER_SIZE\0" "GL_SEPARABLE_2D\0" + "GL_SEPARATE_ATTRIBS\0" "GL_SEPARATE_ATTRIBS_EXT\0" "GL_SEPARATE_SPECULAR_COLOR\0" "GL_SEPARATE_SPECULAR_COLOR_EXT\0" @@ -1689,6 +1868,7 @@ LONGSTRING static const char enum_string_table[] = "GL_STENCIL_BACK_VALUE_MASK\0" "GL_STENCIL_BACK_WRITEMASK\0" "GL_STENCIL_BITS\0" + "GL_STENCIL_BUFFER\0" "GL_STENCIL_BUFFER_BIT\0" "GL_STENCIL_CLEAR_VALUE\0" "GL_STENCIL_FAIL\0" @@ -1807,8 +1987,10 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE9\0" "GL_TEXTURE9_ARB\0" "GL_TEXTURE_1D\0" + "GL_TEXTURE_1D_ARRAY\0" "GL_TEXTURE_1D_ARRAY_EXT\0" "GL_TEXTURE_2D\0" + "GL_TEXTURE_2D_ARRAY\0" "GL_TEXTURE_2D_ARRAY_EXT\0" "GL_TEXTURE_3D\0" "GL_TEXTURE_3D_OES\0" @@ -1816,14 +1998,18 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_ALPHA_SIZE_EXT\0" "GL_TEXTURE_BASE_LEVEL\0" "GL_TEXTURE_BINDING_1D\0" + "GL_TEXTURE_BINDING_1D_ARRAY\0" "GL_TEXTURE_BINDING_1D_ARRAY_EXT\0" "GL_TEXTURE_BINDING_2D\0" + "GL_TEXTURE_BINDING_2D_ARRAY\0" "GL_TEXTURE_BINDING_2D_ARRAY_EXT\0" "GL_TEXTURE_BINDING_3D\0" "GL_TEXTURE_BINDING_3D_OES\0" + "GL_TEXTURE_BINDING_BUFFER\0" "GL_TEXTURE_BINDING_CUBE_MAP\0" "GL_TEXTURE_BINDING_CUBE_MAP_ARB\0" "GL_TEXTURE_BINDING_CUBE_MAP_OES\0" + "GL_TEXTURE_BINDING_RECTANGLE\0" "GL_TEXTURE_BINDING_RECTANGLE_ARB\0" "GL_TEXTURE_BINDING_RECTANGLE_NV\0" "GL_TEXTURE_BIT\0" @@ -1831,6 +2017,9 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_BLUE_SIZE_EXT\0" "GL_TEXTURE_BORDER\0" "GL_TEXTURE_BORDER_COLOR\0" + "GL_TEXTURE_BUFFER\0" + "GL_TEXTURE_BUFFER_DATA_STORE_BINDING\0" + "GL_TEXTURE_BUFFER_FORMAT\0" "GL_TEXTURE_CLIPMAP_CENTER_SGIX\0" "GL_TEXTURE_CLIPMAP_DEPTH_SGIX\0" "GL_TEXTURE_CLIPMAP_FRAME_SGIX\0" @@ -1929,11 +2118,13 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_PRIORITY\0" "GL_TEXTURE_RANGE_LENGTH_APPLE\0" "GL_TEXTURE_RANGE_POINTER_APPLE\0" + "GL_TEXTURE_RECTANGLE\0" "GL_TEXTURE_RECTANGLE_ARB\0" "GL_TEXTURE_RECTANGLE_NV\0" "GL_TEXTURE_RED_SIZE\0" "GL_TEXTURE_RED_SIZE_EXT\0" "GL_TEXTURE_RESIDENT\0" + "GL_TEXTURE_SHARED_SIZE\0" "GL_TEXTURE_STACK_DEPTH\0" "GL_TEXTURE_STENCIL_SIZE\0" "GL_TEXTURE_STENCIL_SIZE_EXT\0" @@ -1952,15 +2143,23 @@ LONGSTRING static const char enum_string_table[] = "GL_TRANSFORM_BIT\0" "GL_TRANSFORM_FEEDBACK\0" "GL_TRANSFORM_FEEDBACK_BINDING\0" + "GL_TRANSFORM_FEEDBACK_BUFFER\0" "GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE\0" + "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING\0" "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT\0" "GL_TRANSFORM_FEEDBACK_BUFFER_EXT\0" + "GL_TRANSFORM_FEEDBACK_BUFFER_MODE\0" "GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT\0" "GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED\0" + "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE\0" "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT\0" + "GL_TRANSFORM_FEEDBACK_BUFFER_START\0" "GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT\0" + "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN\0" "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT\0" + "GL_TRANSFORM_FEEDBACK_VARYINGS\0" "GL_TRANSFORM_FEEDBACK_VARYINGS_EXT\0" + "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH\0" "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT\0" "GL_TRANSPOSE_COLOR_MATRIX\0" "GL_TRANSPOSE_COLOR_MATRIX_ARB\0" @@ -1973,10 +2172,12 @@ LONGSTRING static const char enum_string_table[] = "GL_TRANSPOSE_TEXTURE_MATRIX\0" "GL_TRANSPOSE_TEXTURE_MATRIX_ARB\0" "GL_TRIANGLES\0" + "GL_TRIANGLES_ADJACENCY\0" "GL_TRIANGLES_ADJACENCY_ARB\0" "GL_TRIANGLE_FAN\0" "GL_TRIANGLE_MESH_SUN\0" "GL_TRIANGLE_STRIP\0" + "GL_TRIANGLE_STRIP_ADJACENCY\0" "GL_TRIANGLE_STRIP_ADJACENCY_ARB\0" "GL_TRUE\0" "GL_UNDEFINED_APPLE\0" @@ -1993,6 +2194,7 @@ LONGSTRING static const char enum_string_table[] = "GL_UNSIGNED_BYTE_2_3_3_REV\0" "GL_UNSIGNED_BYTE_3_3_2\0" "GL_UNSIGNED_INT\0" + "GL_UNSIGNED_INT_10F_11F_11F_REV\0" "GL_UNSIGNED_INT_10_10_10_2\0" "GL_UNSIGNED_INT_10_10_10_2_OES\0" "GL_UNSIGNED_INT_24_8\0" @@ -2001,8 +2203,31 @@ LONGSTRING static const char enum_string_table[] = "GL_UNSIGNED_INT_24_8_OES\0" "GL_UNSIGNED_INT_2_10_10_10_REV\0" "GL_UNSIGNED_INT_2_10_10_10_REV_EXT\0" + "GL_UNSIGNED_INT_5_9_9_9_REV\0" "GL_UNSIGNED_INT_8_8_8_8\0" "GL_UNSIGNED_INT_8_8_8_8_REV\0" + "GL_UNSIGNED_INT_SAMPLER_1D\0" + "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY\0" + "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_1D_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_2D\0" + "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY\0" + "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_2D_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_2D_RECT\0" + "GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_3D\0" + "GL_UNSIGNED_INT_SAMPLER_3D_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_BUFFER\0" + "GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_CUBE\0" + "GL_UNSIGNED_INT_SAMPLER_CUBE_EXT\0" + "GL_UNSIGNED_INT_VEC2\0" + "GL_UNSIGNED_INT_VEC2_EXT\0" + "GL_UNSIGNED_INT_VEC3\0" + "GL_UNSIGNED_INT_VEC3_EXT\0" + "GL_UNSIGNED_INT_VEC4\0" + "GL_UNSIGNED_INT_VEC4_EXT\0" "GL_UNSIGNED_NORMALIZED\0" "GL_UNSIGNED_SHORT\0" "GL_UNSIGNED_SHORT_1_5_5_5_REV\0" @@ -2052,6 +2277,8 @@ LONGSTRING static const char enum_string_table[] = "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB\0" "GL_VERTEX_ATTRIB_ARRAY_ENABLED\0" "GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB\0" + "GL_VERTEX_ATTRIB_ARRAY_INTEGER\0" + "GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT\0" "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED\0" "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB\0" "GL_VERTEX_ATTRIB_ARRAY_POINTER\0" @@ -2105,7 +2332,7 @@ LONGSTRING static const char enum_string_table[] = "GL_ZOOM_Y\0" ; -static const enum_elt all_enums[2067] = +static const enum_elt all_enums[2294] = { { 0, 0x00000600 }, /* GL_2D */ { 6, 0x00001407 }, /* GL_2_BYTES */ @@ -2124,3485 +2351,3838 @@ static const enum_elt all_enums[2067] = { 206, 0x00000D58 }, /* GL_ACCUM_RED_BITS */ { 224, 0x00008B89 }, /* GL_ACTIVE_ATTRIBUTES */ { 245, 0x00008B8A }, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */ - { 276, 0x00008911 }, /* GL_ACTIVE_STENCIL_FACE_EXT */ - { 303, 0x000084E0 }, /* GL_ACTIVE_TEXTURE */ - { 321, 0x000084E0 }, /* GL_ACTIVE_TEXTURE_ARB */ - { 343, 0x00008B86 }, /* GL_ACTIVE_UNIFORMS */ - { 362, 0x00008B87 }, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ - { 391, 0x000086A5 }, /* GL_ACTIVE_VERTEX_UNITS_ARB */ - { 418, 0x00000104 }, /* GL_ADD */ - { 425, 0x00008574 }, /* GL_ADD_SIGNED */ - { 439, 0x00008574 }, /* GL_ADD_SIGNED_ARB */ - { 457, 0x00008574 }, /* GL_ADD_SIGNED_EXT */ - { 475, 0x0000846E }, /* GL_ALIASED_LINE_WIDTH_RANGE */ - { 503, 0x0000846D }, /* GL_ALIASED_POINT_SIZE_RANGE */ - { 531, 0x000FFFFF }, /* GL_ALL_ATTRIB_BITS */ - { 550, 0xFFFFFFFF }, /* GL_ALL_CLIENT_ATTRIB_BITS */ - { 576, 0x00001906 }, /* GL_ALPHA */ - { 585, 0x0000803D }, /* GL_ALPHA12 */ - { 596, 0x0000803D }, /* GL_ALPHA12_EXT */ - { 611, 0x0000803E }, /* GL_ALPHA16 */ - { 622, 0x0000803E }, /* GL_ALPHA16_EXT */ - { 637, 0x0000803B }, /* GL_ALPHA4 */ - { 647, 0x0000803B }, /* GL_ALPHA4_EXT */ - { 661, 0x0000803C }, /* GL_ALPHA8 */ - { 671, 0x0000803C }, /* GL_ALPHA8_EXT */ - { 685, 0x00000D1D }, /* GL_ALPHA_BIAS */ - { 699, 0x00000D55 }, /* GL_ALPHA_BITS */ - { 713, 0x00000D1C }, /* GL_ALPHA_SCALE */ - { 728, 0x00000BC0 }, /* GL_ALPHA_TEST */ - { 742, 0x00000BC1 }, /* GL_ALPHA_TEST_FUNC */ - { 761, 0x00000BC2 }, /* GL_ALPHA_TEST_REF */ - { 779, 0x0000911A }, /* GL_ALREADY_SIGNALED */ - { 799, 0x00000207 }, /* GL_ALWAYS */ - { 809, 0x00001200 }, /* GL_AMBIENT */ - { 820, 0x00001602 }, /* GL_AMBIENT_AND_DIFFUSE */ - { 843, 0x00001501 }, /* GL_AND */ - { 850, 0x00001504 }, /* GL_AND_INVERTED */ - { 866, 0x00001502 }, /* GL_AND_REVERSE */ - { 881, 0x00008892 }, /* GL_ARRAY_BUFFER */ - { 897, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING */ - { 921, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING_ARB */ - { 949, 0x00008B85 }, /* GL_ATTACHED_SHADERS */ - { 969, 0x00008645 }, /* GL_ATTRIB_ARRAY_POINTER_NV */ - { 996, 0x00008623 }, /* GL_ATTRIB_ARRAY_SIZE_NV */ - { 1020, 0x00008624 }, /* GL_ATTRIB_ARRAY_STRIDE_NV */ - { 1046, 0x00008625 }, /* GL_ATTRIB_ARRAY_TYPE_NV */ - { 1070, 0x00000BB0 }, /* GL_ATTRIB_STACK_DEPTH */ - { 1092, 0x00000D80 }, /* GL_AUTO_NORMAL */ - { 1107, 0x00000409 }, /* GL_AUX0 */ - { 1115, 0x0000040A }, /* GL_AUX1 */ - { 1123, 0x0000040B }, /* GL_AUX2 */ - { 1131, 0x0000040C }, /* GL_AUX3 */ - { 1139, 0x00000C00 }, /* GL_AUX_BUFFERS */ - { 1154, 0x00000405 }, /* GL_BACK */ - { 1162, 0x00000402 }, /* GL_BACK_LEFT */ - { 1175, 0x00000403 }, /* GL_BACK_RIGHT */ - { 1189, 0x000080E0 }, /* GL_BGR */ - { 1196, 0x000080E1 }, /* GL_BGRA */ - { 1204, 0x000080E1 }, /* GL_BGRA_EXT */ - { 1216, 0x00001A00 }, /* GL_BITMAP */ - { 1226, 0x00000704 }, /* GL_BITMAP_TOKEN */ - { 1242, 0x00000BE2 }, /* GL_BLEND */ - { 1251, 0x00008005 }, /* GL_BLEND_COLOR */ - { 1266, 0x00008005 }, /* GL_BLEND_COLOR_EXT */ - { 1285, 0x00000BE0 }, /* GL_BLEND_DST */ - { 1298, 0x000080CA }, /* GL_BLEND_DST_ALPHA */ - { 1317, 0x000080CA }, /* GL_BLEND_DST_ALPHA_OES */ - { 1340, 0x000080C8 }, /* GL_BLEND_DST_RGB */ - { 1357, 0x000080C8 }, /* GL_BLEND_DST_RGB_OES */ - { 1378, 0x00008009 }, /* GL_BLEND_EQUATION */ - { 1396, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */ - { 1420, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */ - { 1448, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_OES */ - { 1476, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */ - { 1498, 0x00008009 }, /* GL_BLEND_EQUATION_OES */ - { 1520, 0x00008009 }, /* GL_BLEND_EQUATION_RGB */ - { 1542, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */ - { 1568, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_OES */ - { 1594, 0x00000BE1 }, /* GL_BLEND_SRC */ - { 1607, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */ - { 1626, 0x000080CB }, /* GL_BLEND_SRC_ALPHA_OES */ - { 1649, 0x000080C9 }, /* GL_BLEND_SRC_RGB */ - { 1666, 0x000080C9 }, /* GL_BLEND_SRC_RGB_OES */ - { 1687, 0x00001905 }, /* GL_BLUE */ - { 1695, 0x00000D1B }, /* GL_BLUE_BIAS */ - { 1708, 0x00000D54 }, /* GL_BLUE_BITS */ - { 1721, 0x00000D1A }, /* GL_BLUE_SCALE */ - { 1735, 0x00008B56 }, /* GL_BOOL */ - { 1743, 0x00008B56 }, /* GL_BOOL_ARB */ - { 1755, 0x00008B57 }, /* GL_BOOL_VEC2 */ - { 1768, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */ - { 1785, 0x00008B58 }, /* GL_BOOL_VEC3 */ - { 1798, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */ - { 1815, 0x00008B59 }, /* GL_BOOL_VEC4 */ - { 1828, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */ - { 1845, 0x000088BB }, /* GL_BUFFER_ACCESS */ - { 1862, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */ - { 1883, 0x000088BB }, /* GL_BUFFER_ACCESS_OES */ - { 1904, 0x00008A13 }, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ - { 1935, 0x000088BC }, /* GL_BUFFER_MAPPED */ - { 1952, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */ - { 1973, 0x000088BC }, /* GL_BUFFER_MAPPED_OES */ - { 1994, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */ - { 2016, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */ - { 2042, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_OES */ - { 2068, 0x000085B3 }, /* GL_BUFFER_OBJECT_APPLE */ - { 2091, 0x00008A12 }, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ - { 2125, 0x00008764 }, /* GL_BUFFER_SIZE */ - { 2140, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */ - { 2159, 0x00008765 }, /* GL_BUFFER_USAGE */ - { 2175, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */ - { 2195, 0x0000877B }, /* GL_BUMP_ENVMAP_ATI */ - { 2214, 0x00008777 }, /* GL_BUMP_NUM_TEX_UNITS_ATI */ - { 2240, 0x00008775 }, /* GL_BUMP_ROT_MATRIX_ATI */ - { 2263, 0x00008776 }, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ - { 2291, 0x0000877C }, /* GL_BUMP_TARGET_ATI */ - { 2310, 0x00008778 }, /* GL_BUMP_TEX_UNITS_ATI */ - { 2332, 0x00001400 }, /* GL_BYTE */ - { 2340, 0x00002A24 }, /* GL_C3F_V3F */ - { 2351, 0x00002A26 }, /* GL_C4F_N3F_V3F */ - { 2366, 0x00002A22 }, /* GL_C4UB_V2F */ - { 2378, 0x00002A23 }, /* GL_C4UB_V3F */ - { 2390, 0x00000901 }, /* GL_CCW */ - { 2397, 0x00002900 }, /* GL_CLAMP */ - { 2406, 0x0000812D }, /* GL_CLAMP_TO_BORDER */ - { 2425, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */ - { 2448, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */ - { 2472, 0x0000812F }, /* GL_CLAMP_TO_EDGE */ - { 2489, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */ - { 2511, 0x00001500 }, /* GL_CLEAR */ - { 2520, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */ - { 2545, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */ - { 2574, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */ - { 2600, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ - { 2629, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */ - { 2655, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */ - { 2682, 0x00003000 }, /* GL_CLIP_PLANE0 */ - { 2697, 0x00003001 }, /* GL_CLIP_PLANE1 */ - { 2712, 0x00003002 }, /* GL_CLIP_PLANE2 */ - { 2727, 0x00003003 }, /* GL_CLIP_PLANE3 */ - { 2742, 0x00003004 }, /* GL_CLIP_PLANE4 */ - { 2757, 0x00003005 }, /* GL_CLIP_PLANE5 */ - { 2772, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - { 2805, 0x00000A00 }, /* GL_COEFF */ - { 2814, 0x00001800 }, /* GL_COLOR */ - { 2823, 0x00008076 }, /* GL_COLOR_ARRAY */ - { 2838, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - { 2868, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 2902, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */ - { 2925, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */ - { 2945, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */ - { 2967, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */ - { 2987, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */ - { 3008, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */ - { 3033, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */ - { 3058, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */ - { 3079, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */ - { 3101, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */ - { 3127, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */ - { 3149, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */ - { 3175, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */ - { 3197, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */ - { 3223, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */ - { 3245, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */ - { 3271, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */ - { 3293, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */ - { 3319, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */ - { 3341, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */ - { 3367, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */ - { 3392, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */ - { 3413, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */ - { 3438, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */ - { 3459, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */ - { 3484, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */ - { 3505, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */ - { 3530, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */ - { 3551, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */ - { 3576, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */ - { 3597, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */ - { 3622, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */ - { 3643, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */ - { 3668, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */ - { 3689, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */ - { 3714, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */ - { 3735, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */ - { 3760, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */ - { 3780, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */ - { 3801, 0x00001900 }, /* GL_COLOR_INDEX */ - { 3816, 0x00001603 }, /* GL_COLOR_INDEXES */ - { 3833, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */ - { 3851, 0x00000B57 }, /* GL_COLOR_MATERIAL */ - { 3869, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */ - { 3892, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */ - { 3920, 0x000080B1 }, /* GL_COLOR_MATRIX */ - { 3936, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */ - { 3956, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */ - { 3984, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 4016, 0x00008458 }, /* GL_COLOR_SUM */ - { 4029, 0x00008458 }, /* GL_COLOR_SUM_ARB */ - { 4046, 0x000080D0 }, /* GL_COLOR_TABLE */ - { 4061, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */ - { 4087, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ - { 4117, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */ - { 4147, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */ - { 4167, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */ - { 4191, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */ - { 4216, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */ - { 4245, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */ - { 4274, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */ - { 4296, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */ - { 4322, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */ - { 4348, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */ - { 4374, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */ - { 4404, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */ - { 4434, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */ - { 4464, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ - { 4498, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */ - { 4532, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ - { 4562, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ - { 4596, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */ - { 4630, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */ - { 4654, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */ - { 4682, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */ - { 4710, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */ - { 4731, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */ - { 4756, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */ - { 4777, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */ - { 4802, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */ - { 4827, 0x00000C23 }, /* GL_COLOR_WRITEMASK */ - { 4846, 0x00008570 }, /* GL_COMBINE */ - { 4857, 0x00008503 }, /* GL_COMBINE4 */ - { 4869, 0x00008572 }, /* GL_COMBINE_ALPHA */ - { 4886, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */ - { 4907, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */ - { 4928, 0x00008570 }, /* GL_COMBINE_ARB */ - { 4943, 0x00008570 }, /* GL_COMBINE_EXT */ - { 4958, 0x00008571 }, /* GL_COMBINE_RGB */ - { 4973, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ - { 4992, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ - { 5011, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ - { 5047, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ - { 5071, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ - { 5099, 0x00001300 }, /* GL_COMPILE */ - { 5110, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ - { 5133, 0x00008B81 }, /* GL_COMPILE_STATUS */ - { 5151, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ - { 5171, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ - { 5195, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ - { 5219, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ - { 5247, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ - { 5271, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - { 5301, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ - { 5335, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ - { 5363, 0x000084ED }, /* GL_COMPRESSED_RGB */ - { 5381, 0x000084EE }, /* GL_COMPRESSED_RGBA */ - { 5400, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ - { 5423, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - { 5452, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - { 5485, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - { 5518, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - { 5551, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ - { 5573, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - { 5601, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - { 5633, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */ - { 5658, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - { 5689, 0x00008C48 }, /* GL_COMPRESSED_SRGB */ - { 5708, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */ - { 5733, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ - { 5763, 0x0000911C }, /* GL_CONDITION_SATISFIED */ - { 5786, 0x00008576 }, /* GL_CONSTANT */ - { 5798, 0x00008003 }, /* GL_CONSTANT_ALPHA */ - { 5816, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ - { 5838, 0x00008576 }, /* GL_CONSTANT_ARB */ - { 5854, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ - { 5878, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ - { 5900, 0x00008001 }, /* GL_CONSTANT_COLOR */ - { 5918, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ - { 5940, 0x00008576 }, /* GL_CONSTANT_EXT */ - { 5956, 0x00008010 }, /* GL_CONVOLUTION_1D */ - { 5974, 0x00008011 }, /* GL_CONVOLUTION_2D */ - { 5992, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ - { 6020, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ - { 6051, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ - { 6078, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ - { 6109, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ - { 6136, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ - { 6167, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ - { 6195, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ - { 6227, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ - { 6249, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ - { 6275, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ - { 6297, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ - { 6323, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ - { 6344, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ - { 6369, 0x00008862 }, /* GL_COORD_REPLACE */ - { 6386, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ - { 6407, 0x00008862 }, /* GL_COORD_REPLACE_NV */ - { 6427, 0x00008862 }, /* GL_COORD_REPLACE_OES */ - { 6448, 0x00001503 }, /* GL_COPY */ - { 6456, 0x0000150C }, /* GL_COPY_INVERTED */ - { 6473, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ - { 6493, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ - { 6513, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ - { 6534, 0x00000B44 }, /* GL_CULL_FACE */ - { 6547, 0x00000B45 }, /* GL_CULL_FACE_MODE */ - { 6565, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ - { 6584, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - { 6616, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - { 6651, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ - { 6672, 0x00000001 }, /* GL_CURRENT_BIT */ - { 6687, 0x00000B00 }, /* GL_CURRENT_COLOR */ - { 6704, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ - { 6725, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ - { 6751, 0x00000B01 }, /* GL_CURRENT_INDEX */ - { 6768, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ - { 6790, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ - { 6818, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ - { 6839, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - { 6873, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ - { 6906, 0x00000B02 }, /* GL_CURRENT_NORMAL */ - { 6924, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - { 6954, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */ - { 6984, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ - { 7003, 0x00008865 }, /* GL_CURRENT_QUERY */ - { 7020, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ - { 7041, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ - { 7065, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ - { 7092, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ - { 7116, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ - { 7143, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ - { 7176, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ - { 7210, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - { 7243, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ - { 7270, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ - { 7296, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ - { 7321, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ - { 7350, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ - { 7372, 0x00000900 }, /* GL_CW */ - { 7378, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ - { 7399, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ - { 7420, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ - { 7440, 0x00002101 }, /* GL_DECAL */ - { 7449, 0x00001E03 }, /* GL_DECR */ - { 7457, 0x00008508 }, /* GL_DECR_WRAP */ - { 7470, 0x00008508 }, /* GL_DECR_WRAP_EXT */ - { 7487, 0x00008B80 }, /* GL_DELETE_STATUS */ - { 7504, 0x00001801 }, /* GL_DEPTH */ - { 7513, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ - { 7533, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ - { 7557, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */ - { 7581, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ - { 7601, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ - { 7625, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */ - { 7649, 0x00000D1F }, /* GL_DEPTH_BIAS */ - { 7663, 0x00000D56 }, /* GL_DEPTH_BITS */ - { 7677, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ - { 7697, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ - { 7722, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ - { 7742, 0x0000864F }, /* GL_DEPTH_CLAMP */ - { 7757, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ - { 7775, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ - { 7796, 0x00001902 }, /* GL_DEPTH_COMPONENT */ - { 7815, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ - { 7836, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ - { 7861, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */ - { 7886, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ - { 7912, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ - { 7933, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ - { 7958, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */ - { 7983, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ - { 8009, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ - { 8030, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ - { 8055, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */ - { 8080, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ - { 8106, 0x00000B74 }, /* GL_DEPTH_FUNC */ - { 8120, 0x00000B70 }, /* GL_DEPTH_RANGE */ - { 8135, 0x00000D1E }, /* GL_DEPTH_SCALE */ - { 8150, 0x000084F9 }, /* GL_DEPTH_STENCIL */ - { 8167, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ - { 8195, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ - { 8216, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ - { 8236, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */ - { 8257, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - { 8285, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - { 8313, 0x00000B71 }, /* GL_DEPTH_TEST */ - { 8327, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ - { 8349, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ - { 8375, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ - { 8394, 0x00001201 }, /* GL_DIFFUSE */ - { 8405, 0x00000BD0 }, /* GL_DITHER */ - { 8415, 0x00000A02 }, /* GL_DOMAIN */ - { 8425, 0x00001100 }, /* GL_DONT_CARE */ - { 8438, 0x000086AE }, /* GL_DOT3_RGB */ - { 8450, 0x000086AF }, /* GL_DOT3_RGBA */ - { 8463, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ - { 8480, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ - { 8497, 0x000086AE }, /* GL_DOT3_RGB_ARB */ - { 8513, 0x00008740 }, /* GL_DOT3_RGB_EXT */ - { 8529, 0x0000140A }, /* GL_DOUBLE */ - { 8539, 0x00000C32 }, /* GL_DOUBLEBUFFER */ - { 8555, 0x00000C01 }, /* GL_DRAW_BUFFER */ - { 8570, 0x00008825 }, /* GL_DRAW_BUFFER0 */ - { 8586, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ - { 8606, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ - { 8626, 0x00008826 }, /* GL_DRAW_BUFFER1 */ - { 8642, 0x0000882F }, /* GL_DRAW_BUFFER10 */ - { 8659, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ - { 8680, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ - { 8701, 0x00008830 }, /* GL_DRAW_BUFFER11 */ - { 8718, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ - { 8739, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ - { 8760, 0x00008831 }, /* GL_DRAW_BUFFER12 */ - { 8777, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ - { 8798, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ - { 8819, 0x00008832 }, /* GL_DRAW_BUFFER13 */ - { 8836, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ - { 8857, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ - { 8878, 0x00008833 }, /* GL_DRAW_BUFFER14 */ - { 8895, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ - { 8916, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ - { 8937, 0x00008834 }, /* GL_DRAW_BUFFER15 */ - { 8954, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ - { 8975, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ - { 8996, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ - { 9016, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ - { 9036, 0x00008827 }, /* GL_DRAW_BUFFER2 */ - { 9052, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ - { 9072, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ - { 9092, 0x00008828 }, /* GL_DRAW_BUFFER3 */ - { 9108, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ - { 9128, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ - { 9148, 0x00008829 }, /* GL_DRAW_BUFFER4 */ - { 9164, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ - { 9184, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ - { 9204, 0x0000882A }, /* GL_DRAW_BUFFER5 */ - { 9220, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ - { 9240, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ - { 9260, 0x0000882B }, /* GL_DRAW_BUFFER6 */ - { 9276, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ - { 9296, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ - { 9316, 0x0000882C }, /* GL_DRAW_BUFFER7 */ - { 9332, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ - { 9352, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ - { 9372, 0x0000882D }, /* GL_DRAW_BUFFER8 */ - { 9388, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ - { 9408, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ - { 9428, 0x0000882E }, /* GL_DRAW_BUFFER9 */ - { 9444, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ - { 9464, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ - { 9484, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ - { 9504, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ - { 9532, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ - { 9564, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ - { 9588, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ - { 9608, 0x00000304 }, /* GL_DST_ALPHA */ - { 9621, 0x00000306 }, /* GL_DST_COLOR */ - { 9634, 0x0000877A }, /* GL_DU8DV8_ATI */ - { 9648, 0x00008779 }, /* GL_DUDV_ATI */ - { 9660, 0x000088EA }, /* GL_DYNAMIC_COPY */ - { 9676, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ - { 9696, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ - { 9712, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ - { 9732, 0x000088E9 }, /* GL_DYNAMIC_READ */ - { 9748, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ - { 9768, 0x00000B43 }, /* GL_EDGE_FLAG */ - { 9781, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ - { 9800, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - { 9834, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ - { 9872, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ - { 9899, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - { 9925, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ - { 9949, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - { 9981, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ - { 10017, 0x00001600 }, /* GL_EMISSION */ - { 10029, 0x00002000 }, /* GL_ENABLE_BIT */ - { 10043, 0x00000202 }, /* GL_EQUAL */ - { 10052, 0x00001509 }, /* GL_EQUIV */ - { 10061, 0x00010000 }, /* GL_EVAL_BIT */ - { 10073, 0x00000800 }, /* GL_EXP */ - { 10080, 0x00000801 }, /* GL_EXP2 */ - { 10088, 0x00001F03 }, /* GL_EXTENSIONS */ - { 10102, 0x00002400 }, /* GL_EYE_LINEAR */ - { 10116, 0x00002502 }, /* GL_EYE_PLANE */ - { 10129, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ - { 10154, 0x0000855B }, /* GL_EYE_RADIAL_NV */ - { 10171, 0x00000000 }, /* GL_FALSE */ - { 10180, 0x00001101 }, /* GL_FASTEST */ - { 10191, 0x00001C01 }, /* GL_FEEDBACK */ - { 10203, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ - { 10230, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ - { 10254, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ - { 10278, 0x00001B02 }, /* GL_FILL */ - { 10286, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ - { 10313, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ - { 10344, 0x0000140C }, /* GL_FIXED */ - { 10353, 0x0000140C }, /* GL_FIXED_OES */ - { 10366, 0x00001D00 }, /* GL_FLAT */ - { 10374, 0x00001406 }, /* GL_FLOAT */ - { 10383, 0x00008B5A }, /* GL_FLOAT_MAT2 */ - { 10397, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ - { 10415, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ - { 10431, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ - { 10447, 0x00008B5B }, /* GL_FLOAT_MAT3 */ - { 10461, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ - { 10479, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ - { 10495, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ - { 10511, 0x00008B5C }, /* GL_FLOAT_MAT4 */ - { 10525, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ - { 10543, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ - { 10559, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ - { 10575, 0x00008B50 }, /* GL_FLOAT_VEC2 */ - { 10589, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ - { 10607, 0x00008B51 }, /* GL_FLOAT_VEC3 */ - { 10621, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ - { 10639, 0x00008B52 }, /* GL_FLOAT_VEC4 */ - { 10653, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ - { 10671, 0x00000B60 }, /* GL_FOG */ - { 10678, 0x00000080 }, /* GL_FOG_BIT */ - { 10689, 0x00000B66 }, /* GL_FOG_COLOR */ - { 10702, 0x00008451 }, /* GL_FOG_COORD */ - { 10715, 0x00008451 }, /* GL_FOG_COORDINATE */ - { 10733, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ - { 10757, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - { 10796, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ - { 10839, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - { 10871, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - { 10902, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - { 10931, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ - { 10956, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ - { 10975, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ - { 11009, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ - { 11036, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ - { 11062, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ - { 11086, 0x00008450 }, /* GL_FOG_COORD_SRC */ - { 11103, 0x00000B62 }, /* GL_FOG_DENSITY */ - { 11118, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ - { 11142, 0x00000B64 }, /* GL_FOG_END */ - { 11153, 0x00000C54 }, /* GL_FOG_HINT */ - { 11165, 0x00000B61 }, /* GL_FOG_INDEX */ - { 11178, 0x00000B65 }, /* GL_FOG_MODE */ - { 11190, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ - { 11209, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ - { 11234, 0x00000B63 }, /* GL_FOG_START */ - { 11247, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ - { 11265, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ - { 11289, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ - { 11308, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ - { 11331, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - { 11366, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ - { 11405, 0x00008D40 }, /* GL_FRAMEBUFFER */ - { 11420, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - { 11457, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - { 11493, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - { 11534, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - { 11575, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - { 11612, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - { 11649, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ - { 11687, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - { 11725, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ - { 11767, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ - { 11809, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - { 11847, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ - { 11889, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ - { 11931, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - { 11966, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - { 12005, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ - { 12054, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ - { 12103, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - { 12151, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ - { 12203, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ - { 12255, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - { 12295, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ - { 12339, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - { 12379, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ - { 12423, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ - { 12467, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ - { 12490, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ - { 12517, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ - { 12544, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ - { 12568, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ - { 12596, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ - { 12624, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ - { 12647, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ - { 12666, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - { 12703, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ - { 12744, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ - { 12785, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ - { 12822, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - { 12863, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ - { 12904, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - { 12942, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ - { 12984, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ - { 13026, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - { 13077, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - { 13115, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ - { 13153, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ - { 13195, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ - { 13239, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - { 13284, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ - { 13333, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ - { 13382, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - { 13420, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ - { 13462, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - { 13500, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ - { 13542, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ - { 13584, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ - { 13603, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - { 13635, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ - { 13660, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ - { 13687, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ - { 13718, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ - { 13749, 0x00000404 }, /* GL_FRONT */ - { 13758, 0x00000408 }, /* GL_FRONT_AND_BACK */ - { 13776, 0x00000B46 }, /* GL_FRONT_FACE */ - { 13790, 0x00000400 }, /* GL_FRONT_LEFT */ - { 13804, 0x00000401 }, /* GL_FRONT_RIGHT */ - { 13819, 0x00008006 }, /* GL_FUNC_ADD */ - { 13831, 0x00008006 }, /* GL_FUNC_ADD_EXT */ - { 13847, 0x00008006 }, /* GL_FUNC_ADD_OES */ - { 13863, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ - { 13888, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ - { 13917, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ - { 13946, 0x0000800A }, /* GL_FUNC_SUBTRACT */ - { 13963, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ - { 13984, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ - { 14005, 0x00008191 }, /* GL_GENERATE_MIPMAP */ - { 14024, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ - { 14048, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ - { 14077, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ - { 14101, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ - { 14128, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ - { 14156, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ - { 14179, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ - { 14208, 0x00000206 }, /* GL_GEQUAL */ - { 14218, 0x00000204 }, /* GL_GREATER */ - { 14229, 0x00001904 }, /* GL_GREEN */ - { 14238, 0x00000D19 }, /* GL_GREEN_BIAS */ - { 14252, 0x00000D53 }, /* GL_GREEN_BITS */ - { 14266, 0x00000D18 }, /* GL_GREEN_SCALE */ - { 14281, 0x0000140B }, /* GL_HALF_FLOAT */ - { 14295, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ - { 14313, 0x00008DF2 }, /* GL_HIGH_FLOAT */ - { 14327, 0x00008DF5 }, /* GL_HIGH_INT */ - { 14339, 0x00008000 }, /* GL_HINT_BIT */ - { 14351, 0x00008024 }, /* GL_HISTOGRAM */ - { 14364, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ - { 14388, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ - { 14416, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ - { 14439, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ - { 14466, 0x00008024 }, /* GL_HISTOGRAM_EXT */ - { 14483, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ - { 14503, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ - { 14527, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ - { 14551, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ - { 14579, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - { 14607, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ - { 14639, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ - { 14661, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ - { 14687, 0x0000802D }, /* GL_HISTOGRAM_SINK */ - { 14705, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ - { 14727, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ - { 14746, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ - { 14769, 0x0000862A }, /* GL_IDENTITY_NV */ - { 14784, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ - { 14804, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ - { 14840, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - { 14880, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ - { 14914, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - { 14952, 0x00001E02 }, /* GL_INCR */ - { 14960, 0x00008507 }, /* GL_INCR_WRAP */ - { 14973, 0x00008507 }, /* GL_INCR_WRAP_EXT */ - { 14990, 0x00008222 }, /* GL_INDEX */ - { 14999, 0x00008077 }, /* GL_INDEX_ARRAY */ - { 15014, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - { 15044, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ - { 15078, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ - { 15101, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ - { 15123, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ - { 15143, 0x00000D51 }, /* GL_INDEX_BITS */ - { 15157, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ - { 15178, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ - { 15196, 0x00000C30 }, /* GL_INDEX_MODE */ - { 15210, 0x00000D13 }, /* GL_INDEX_OFFSET */ - { 15226, 0x00000D12 }, /* GL_INDEX_SHIFT */ - { 15241, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ - { 15260, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ - { 15279, 0x00001404 }, /* GL_INT */ - { 15286, 0x00008049 }, /* GL_INTENSITY */ - { 15299, 0x0000804C }, /* GL_INTENSITY12 */ - { 15314, 0x0000804C }, /* GL_INTENSITY12_EXT */ - { 15333, 0x0000804D }, /* GL_INTENSITY16 */ - { 15348, 0x0000804D }, /* GL_INTENSITY16_EXT */ - { 15367, 0x0000804A }, /* GL_INTENSITY4 */ - { 15381, 0x0000804A }, /* GL_INTENSITY4_EXT */ - { 15399, 0x0000804B }, /* GL_INTENSITY8 */ - { 15413, 0x0000804B }, /* GL_INTENSITY8_EXT */ - { 15431, 0x00008049 }, /* GL_INTENSITY_EXT */ - { 15448, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ - { 15475, 0x00008575 }, /* GL_INTERPOLATE */ - { 15490, 0x00008575 }, /* GL_INTERPOLATE_ARB */ - { 15509, 0x00008575 }, /* GL_INTERPOLATE_EXT */ - { 15528, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ - { 15550, 0x00008B53 }, /* GL_INT_VEC2 */ - { 15562, 0x00008B53 }, /* GL_INT_VEC2_ARB */ - { 15578, 0x00008B54 }, /* GL_INT_VEC3 */ - { 15590, 0x00008B54 }, /* GL_INT_VEC3_ARB */ - { 15606, 0x00008B55 }, /* GL_INT_VEC4 */ - { 15618, 0x00008B55 }, /* GL_INT_VEC4_ARB */ - { 15634, 0x00000500 }, /* GL_INVALID_ENUM */ - { 15650, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ - { 15683, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ - { 15720, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ - { 15757, 0x00000502 }, /* GL_INVALID_OPERATION */ - { 15778, 0x00000501 }, /* GL_INVALID_VALUE */ - { 15795, 0x0000862B }, /* GL_INVERSE_NV */ - { 15809, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ - { 15833, 0x0000150A }, /* GL_INVERT */ - { 15843, 0x00001E00 }, /* GL_KEEP */ - { 15851, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ - { 15877, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ - { 15907, 0x00000406 }, /* GL_LEFT */ - { 15915, 0x00000203 }, /* GL_LEQUAL */ - { 15925, 0x00000201 }, /* GL_LESS */ - { 15933, 0x00004000 }, /* GL_LIGHT0 */ - { 15943, 0x00004001 }, /* GL_LIGHT1 */ - { 15953, 0x00004002 }, /* GL_LIGHT2 */ - { 15963, 0x00004003 }, /* GL_LIGHT3 */ - { 15973, 0x00004004 }, /* GL_LIGHT4 */ - { 15983, 0x00004005 }, /* GL_LIGHT5 */ - { 15993, 0x00004006 }, /* GL_LIGHT6 */ - { 16003, 0x00004007 }, /* GL_LIGHT7 */ - { 16013, 0x00000B50 }, /* GL_LIGHTING */ - { 16025, 0x00000040 }, /* GL_LIGHTING_BIT */ - { 16041, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ - { 16064, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - { 16093, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ - { 16126, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - { 16154, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ - { 16178, 0x00001B01 }, /* GL_LINE */ - { 16186, 0x00002601 }, /* GL_LINEAR */ - { 16196, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ - { 16218, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - { 16248, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - { 16279, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ - { 16303, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ - { 16328, 0x00000001 }, /* GL_LINES */ - { 16337, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ - { 16360, 0x00000004 }, /* GL_LINE_BIT */ - { 16372, 0x00000002 }, /* GL_LINE_LOOP */ - { 16385, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ - { 16405, 0x00000B20 }, /* GL_LINE_SMOOTH */ - { 16420, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ - { 16440, 0x00000B24 }, /* GL_LINE_STIPPLE */ - { 16456, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ - { 16480, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ - { 16503, 0x00000003 }, /* GL_LINE_STRIP */ - { 16517, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ - { 16545, 0x00000702 }, /* GL_LINE_TOKEN */ - { 16559, 0x00000B21 }, /* GL_LINE_WIDTH */ - { 16573, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ - { 16599, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ - { 16619, 0x00008B82 }, /* GL_LINK_STATUS */ - { 16634, 0x00000B32 }, /* GL_LIST_BASE */ - { 16647, 0x00020000 }, /* GL_LIST_BIT */ - { 16659, 0x00000B33 }, /* GL_LIST_INDEX */ - { 16673, 0x00000B30 }, /* GL_LIST_MODE */ - { 16686, 0x00000101 }, /* GL_LOAD */ - { 16694, 0x00000BF1 }, /* GL_LOGIC_OP */ - { 16706, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ - { 16723, 0x00008CA1 }, /* GL_LOWER_LEFT */ - { 16737, 0x00008DF0 }, /* GL_LOW_FLOAT */ - { 16750, 0x00008DF3 }, /* GL_LOW_INT */ - { 16761, 0x00001909 }, /* GL_LUMINANCE */ - { 16774, 0x00008041 }, /* GL_LUMINANCE12 */ - { 16789, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ - { 16812, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ - { 16839, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ - { 16861, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ - { 16887, 0x00008041 }, /* GL_LUMINANCE12_EXT */ - { 16906, 0x00008042 }, /* GL_LUMINANCE16 */ - { 16921, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ - { 16944, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ - { 16971, 0x00008042 }, /* GL_LUMINANCE16_EXT */ - { 16990, 0x0000803F }, /* GL_LUMINANCE4 */ - { 17004, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ - { 17025, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ - { 17050, 0x0000803F }, /* GL_LUMINANCE4_EXT */ - { 17068, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ - { 17089, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ - { 17114, 0x00008040 }, /* GL_LUMINANCE8 */ - { 17128, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ - { 17149, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ - { 17174, 0x00008040 }, /* GL_LUMINANCE8_EXT */ - { 17192, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ - { 17211, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ - { 17227, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ - { 17247, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ - { 17269, 0x00000D91 }, /* GL_MAP1_INDEX */ - { 17283, 0x00000D92 }, /* GL_MAP1_NORMAL */ - { 17298, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ - { 17322, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ - { 17346, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ - { 17370, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ - { 17394, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ - { 17411, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ - { 17428, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - { 17456, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - { 17485, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - { 17514, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - { 17543, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - { 17572, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - { 17601, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - { 17630, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - { 17658, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - { 17686, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - { 17714, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - { 17742, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - { 17770, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - { 17798, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - { 17826, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - { 17854, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - { 17882, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ - { 17898, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ - { 17918, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ - { 17940, 0x00000DB1 }, /* GL_MAP2_INDEX */ - { 17954, 0x00000DB2 }, /* GL_MAP2_NORMAL */ - { 17969, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ - { 17993, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ - { 18017, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ - { 18041, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ - { 18065, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ - { 18082, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ - { 18099, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - { 18127, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - { 18156, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - { 18185, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - { 18214, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - { 18243, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - { 18272, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - { 18301, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - { 18329, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - { 18357, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - { 18385, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - { 18413, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - { 18441, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - { 18469, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ - { 18497, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - { 18525, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - { 18553, 0x00000D10 }, /* GL_MAP_COLOR */ - { 18566, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ - { 18592, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ - { 18621, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ - { 18649, 0x00000001 }, /* GL_MAP_READ_BIT */ - { 18665, 0x00000D11 }, /* GL_MAP_STENCIL */ - { 18680, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ - { 18706, 0x00000002 }, /* GL_MAP_WRITE_BIT */ - { 18723, 0x000088C0 }, /* GL_MATRIX0_ARB */ - { 18738, 0x00008630 }, /* GL_MATRIX0_NV */ - { 18752, 0x000088CA }, /* GL_MATRIX10_ARB */ - { 18768, 0x000088CB }, /* GL_MATRIX11_ARB */ - { 18784, 0x000088CC }, /* GL_MATRIX12_ARB */ - { 18800, 0x000088CD }, /* GL_MATRIX13_ARB */ - { 18816, 0x000088CE }, /* GL_MATRIX14_ARB */ - { 18832, 0x000088CF }, /* GL_MATRIX15_ARB */ - { 18848, 0x000088D0 }, /* GL_MATRIX16_ARB */ - { 18864, 0x000088D1 }, /* GL_MATRIX17_ARB */ - { 18880, 0x000088D2 }, /* GL_MATRIX18_ARB */ - { 18896, 0x000088D3 }, /* GL_MATRIX19_ARB */ - { 18912, 0x000088C1 }, /* GL_MATRIX1_ARB */ - { 18927, 0x00008631 }, /* GL_MATRIX1_NV */ - { 18941, 0x000088D4 }, /* GL_MATRIX20_ARB */ - { 18957, 0x000088D5 }, /* GL_MATRIX21_ARB */ - { 18973, 0x000088D6 }, /* GL_MATRIX22_ARB */ - { 18989, 0x000088D7 }, /* GL_MATRIX23_ARB */ - { 19005, 0x000088D8 }, /* GL_MATRIX24_ARB */ - { 19021, 0x000088D9 }, /* GL_MATRIX25_ARB */ - { 19037, 0x000088DA }, /* GL_MATRIX26_ARB */ - { 19053, 0x000088DB }, /* GL_MATRIX27_ARB */ - { 19069, 0x000088DC }, /* GL_MATRIX28_ARB */ - { 19085, 0x000088DD }, /* GL_MATRIX29_ARB */ - { 19101, 0x000088C2 }, /* GL_MATRIX2_ARB */ - { 19116, 0x00008632 }, /* GL_MATRIX2_NV */ - { 19130, 0x000088DE }, /* GL_MATRIX30_ARB */ - { 19146, 0x000088DF }, /* GL_MATRIX31_ARB */ - { 19162, 0x000088C3 }, /* GL_MATRIX3_ARB */ - { 19177, 0x00008633 }, /* GL_MATRIX3_NV */ - { 19191, 0x000088C4 }, /* GL_MATRIX4_ARB */ - { 19206, 0x00008634 }, /* GL_MATRIX4_NV */ - { 19220, 0x000088C5 }, /* GL_MATRIX5_ARB */ - { 19235, 0x00008635 }, /* GL_MATRIX5_NV */ - { 19249, 0x000088C6 }, /* GL_MATRIX6_ARB */ - { 19264, 0x00008636 }, /* GL_MATRIX6_NV */ - { 19278, 0x000088C7 }, /* GL_MATRIX7_ARB */ - { 19293, 0x00008637 }, /* GL_MATRIX7_NV */ - { 19307, 0x000088C8 }, /* GL_MATRIX8_ARB */ - { 19322, 0x000088C9 }, /* GL_MATRIX9_ARB */ - { 19337, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ - { 19363, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ - { 19404, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ - { 19430, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - { 19464, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ - { 19498, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - { 19529, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ - { 19560, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - { 19593, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ - { 19626, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - { 19657, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ - { 19688, 0x00000BA0 }, /* GL_MATRIX_MODE */ - { 19703, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ - { 19725, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ - { 19747, 0x00008008 }, /* GL_MAX */ - { 19754, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ - { 19777, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ - { 19804, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ - { 19836, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ - { 19862, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - { 19895, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - { 19921, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 19955, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ - { 19974, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ - { 19999, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ - { 20028, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - { 20060, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 20096, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - { 20132, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ - { 20172, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ - { 20198, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ - { 20228, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ - { 20253, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ - { 20282, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - { 20311, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ - { 20344, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ - { 20377, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ - { 20397, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ - { 20421, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ - { 20445, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ - { 20469, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ - { 20494, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ - { 20512, 0x00008008 }, /* GL_MAX_EXT */ - { 20523, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - { 20558, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ - { 20597, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ - { 20629, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ - { 20665, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ - { 20705, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ - { 20749, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ - { 20788, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ - { 20827, 0x00000D31 }, /* GL_MAX_LIGHTS */ - { 20841, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ - { 20861, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - { 20899, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - { 20928, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ - { 20952, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ - { 20980, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ - { 21008, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ - { 21031, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 21068, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 21104, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - { 21131, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - { 21160, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - { 21194, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ - { 21230, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - { 21257, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - { 21289, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - { 21325, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - { 21354, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - { 21383, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ - { 21411, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - { 21449, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 21493, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 21536, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 21570, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 21609, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 21646, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 21684, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 21727, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 21770, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - { 21800, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - { 21831, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 21867, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 21903, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ - { 21933, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - { 21967, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ - { 22000, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ - { 22025, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ - { 22054, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ - { 22083, 0x00008D57 }, /* GL_MAX_SAMPLES */ - { 22098, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ - { 22117, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - { 22144, 0x00008504 }, /* GL_MAX_SHININESS_NV */ - { 22164, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ - { 22188, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ - { 22210, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ - { 22236, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - { 22263, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ - { 22294, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ - { 22318, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ - { 22346, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - { 22380, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ - { 22400, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ - { 22427, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ - { 22448, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ - { 22473, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ - { 22498, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ - { 22533, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ - { 22586, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ - { 22633, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ - { 22683, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ - { 22709, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ - { 22731, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ - { 22757, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ - { 22780, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ - { 22802, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ - { 22828, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - { 22862, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ - { 22900, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - { 22933, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ - { 22970, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ - { 23000, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ - { 23024, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ - { 23048, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ - { 23085, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ - { 23106, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ - { 23122, 0x00008DF4 }, /* GL_MEDIUM_INT */ - { 23136, 0x00008007 }, /* GL_MIN */ - { 23143, 0x0000802E }, /* GL_MINMAX */ - { 23153, 0x0000802E }, /* GL_MINMAX_EXT */ - { 23167, 0x0000802F }, /* GL_MINMAX_FORMAT */ - { 23184, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ - { 23205, 0x00008030 }, /* GL_MINMAX_SINK */ - { 23220, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ - { 23239, 0x00008007 }, /* GL_MIN_EXT */ - { 23250, 0x00008370 }, /* GL_MIRRORED_REPEAT */ - { 23269, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ - { 23292, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ - { 23315, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ - { 23335, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ - { 23355, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - { 23385, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ - { 23413, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - { 23441, 0x00001700 }, /* GL_MODELVIEW */ - { 23454, 0x00001700 }, /* GL_MODELVIEW0_ARB */ - { 23472, 0x0000872A }, /* GL_MODELVIEW10_ARB */ - { 23491, 0x0000872B }, /* GL_MODELVIEW11_ARB */ - { 23510, 0x0000872C }, /* GL_MODELVIEW12_ARB */ - { 23529, 0x0000872D }, /* GL_MODELVIEW13_ARB */ - { 23548, 0x0000872E }, /* GL_MODELVIEW14_ARB */ - { 23567, 0x0000872F }, /* GL_MODELVIEW15_ARB */ - { 23586, 0x00008730 }, /* GL_MODELVIEW16_ARB */ - { 23605, 0x00008731 }, /* GL_MODELVIEW17_ARB */ - { 23624, 0x00008732 }, /* GL_MODELVIEW18_ARB */ - { 23643, 0x00008733 }, /* GL_MODELVIEW19_ARB */ - { 23662, 0x0000850A }, /* GL_MODELVIEW1_ARB */ - { 23680, 0x00008734 }, /* GL_MODELVIEW20_ARB */ - { 23699, 0x00008735 }, /* GL_MODELVIEW21_ARB */ - { 23718, 0x00008736 }, /* GL_MODELVIEW22_ARB */ - { 23737, 0x00008737 }, /* GL_MODELVIEW23_ARB */ - { 23756, 0x00008738 }, /* GL_MODELVIEW24_ARB */ - { 23775, 0x00008739 }, /* GL_MODELVIEW25_ARB */ - { 23794, 0x0000873A }, /* GL_MODELVIEW26_ARB */ - { 23813, 0x0000873B }, /* GL_MODELVIEW27_ARB */ - { 23832, 0x0000873C }, /* GL_MODELVIEW28_ARB */ - { 23851, 0x0000873D }, /* GL_MODELVIEW29_ARB */ - { 23870, 0x00008722 }, /* GL_MODELVIEW2_ARB */ - { 23888, 0x0000873E }, /* GL_MODELVIEW30_ARB */ - { 23907, 0x0000873F }, /* GL_MODELVIEW31_ARB */ - { 23926, 0x00008723 }, /* GL_MODELVIEW3_ARB */ - { 23944, 0x00008724 }, /* GL_MODELVIEW4_ARB */ - { 23962, 0x00008725 }, /* GL_MODELVIEW5_ARB */ - { 23980, 0x00008726 }, /* GL_MODELVIEW6_ARB */ - { 23998, 0x00008727 }, /* GL_MODELVIEW7_ARB */ - { 24016, 0x00008728 }, /* GL_MODELVIEW8_ARB */ - { 24034, 0x00008729 }, /* GL_MODELVIEW9_ARB */ - { 24052, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ - { 24072, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 24114, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ - { 24141, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ - { 24166, 0x00002100 }, /* GL_MODULATE */ - { 24178, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ - { 24198, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ - { 24225, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ - { 24250, 0x00000103 }, /* GL_MULT */ - { 24258, 0x0000809D }, /* GL_MULTISAMPLE */ - { 24273, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ - { 24293, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ - { 24312, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ - { 24331, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ - { 24355, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ - { 24378, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - { 24408, 0x00002A25 }, /* GL_N3F_V3F */ - { 24419, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ - { 24439, 0x0000150E }, /* GL_NAND */ - { 24447, 0x00002600 }, /* GL_NEAREST */ - { 24458, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - { 24489, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - { 24521, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ - { 24546, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ - { 24572, 0x00000200 }, /* GL_NEVER */ - { 24581, 0x00001102 }, /* GL_NICEST */ - { 24591, 0x00000000 }, /* GL_NONE */ - { 24599, 0x00000000 }, /* GL_NONE_OES */ - { 24611, 0x00001505 }, /* GL_NOOP */ - { 24619, 0x00001508 }, /* GL_NOR */ - { 24626, 0x00000BA1 }, /* GL_NORMALIZE */ - { 24639, 0x00008075 }, /* GL_NORMAL_ARRAY */ - { 24655, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - { 24686, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ - { 24721, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ - { 24745, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ - { 24768, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ - { 24789, 0x00008511 }, /* GL_NORMAL_MAP */ - { 24803, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ - { 24821, 0x00008511 }, /* GL_NORMAL_MAP_NV */ - { 24838, 0x00008511 }, /* GL_NORMAL_MAP_OES */ - { 24856, 0x00000205 }, /* GL_NOTEQUAL */ - { 24868, 0x00000000 }, /* GL_NO_ERROR */ - { 24880, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - { 24914, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ - { 24952, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ - { 24986, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ - { 25015, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ - { 25047, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ - { 25089, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ - { 25119, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ - { 25159, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ - { 25190, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ - { 25219, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ - { 25247, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ - { 25277, 0x00002401 }, /* GL_OBJECT_LINEAR */ - { 25294, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ - { 25320, 0x00002501 }, /* GL_OBJECT_PLANE */ - { 25336, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ - { 25371, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ - { 25393, 0x00009112 }, /* GL_OBJECT_TYPE */ - { 25408, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ - { 25427, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ - { 25457, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ - { 25478, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ - { 25506, 0x00000001 }, /* GL_ONE */ - { 25513, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ - { 25541, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ - { 25573, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ - { 25601, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ - { 25633, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ - { 25656, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ - { 25679, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ - { 25702, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ - { 25725, 0x00008598 }, /* GL_OPERAND0_ALPHA */ - { 25743, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ - { 25765, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ - { 25787, 0x00008590 }, /* GL_OPERAND0_RGB */ - { 25803, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ - { 25823, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ - { 25843, 0x00008599 }, /* GL_OPERAND1_ALPHA */ - { 25861, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ - { 25883, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ - { 25905, 0x00008591 }, /* GL_OPERAND1_RGB */ - { 25921, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ - { 25941, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ - { 25961, 0x0000859A }, /* GL_OPERAND2_ALPHA */ - { 25979, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ - { 26001, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ - { 26023, 0x00008592 }, /* GL_OPERAND2_RGB */ - { 26039, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ - { 26059, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ - { 26079, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ - { 26100, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ - { 26119, 0x00001507 }, /* GL_OR */ - { 26125, 0x00000A01 }, /* GL_ORDER */ - { 26134, 0x0000150D }, /* GL_OR_INVERTED */ - { 26149, 0x0000150B }, /* GL_OR_REVERSE */ - { 26163, 0x00000505 }, /* GL_OUT_OF_MEMORY */ - { 26180, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ - { 26198, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ - { 26219, 0x00008758 }, /* GL_PACK_INVERT_MESA */ - { 26239, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ - { 26257, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ - { 26276, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ - { 26296, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ - { 26316, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ - { 26334, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ - { 26353, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ - { 26378, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ - { 26402, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ - { 26423, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ - { 26445, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ - { 26467, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ - { 26492, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ - { 26516, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ - { 26537, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ - { 26559, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ - { 26581, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ - { 26603, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ - { 26634, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ - { 26654, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - { 26679, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ - { 26699, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - { 26724, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ - { 26744, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - { 26769, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ - { 26789, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - { 26814, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ - { 26834, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - { 26859, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ - { 26879, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - { 26904, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ - { 26924, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - { 26949, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ - { 26969, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - { 26994, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ - { 27014, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - { 27039, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ - { 27059, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - { 27084, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ - { 27102, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ - { 27123, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ - { 27152, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ - { 27185, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ - { 27210, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ - { 27233, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - { 27264, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ - { 27299, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ - { 27326, 0x00001B00 }, /* GL_POINT */ - { 27335, 0x00000000 }, /* GL_POINTS */ - { 27345, 0x00000002 }, /* GL_POINT_BIT */ - { 27358, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ - { 27388, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ - { 27422, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ - { 27456, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ - { 27491, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ - { 27520, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ - { 27553, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ - { 27586, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ - { 27620, 0x00000B11 }, /* GL_POINT_SIZE */ - { 27634, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ - { 27673, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ - { 27697, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ - { 27729, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ - { 27760, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ - { 27789, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ - { 27815, 0x00008127 }, /* GL_POINT_SIZE_MAX */ - { 27833, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ - { 27855, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ - { 27877, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ - { 27900, 0x00008126 }, /* GL_POINT_SIZE_MIN */ - { 27918, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ - { 27940, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ - { 27962, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ - { 27985, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ - { 28005, 0x00000B10 }, /* GL_POINT_SMOOTH */ - { 28021, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ - { 28042, 0x00008861 }, /* GL_POINT_SPRITE */ - { 28058, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ - { 28078, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ - { 28107, 0x00008861 }, /* GL_POINT_SPRITE_NV */ - { 28126, 0x00008861 }, /* GL_POINT_SPRITE_OES */ - { 28146, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ - { 28172, 0x00000701 }, /* GL_POINT_TOKEN */ - { 28187, 0x00000009 }, /* GL_POLYGON */ - { 28198, 0x00000008 }, /* GL_POLYGON_BIT */ - { 28213, 0x00000B40 }, /* GL_POLYGON_MODE */ - { 28229, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ - { 28252, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ - { 28277, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ - { 28300, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ - { 28323, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ - { 28347, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ - { 28371, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ - { 28389, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ - { 28412, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ - { 28431, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ - { 28454, 0x00000703 }, /* GL_POLYGON_TOKEN */ - { 28471, 0x00001203 }, /* GL_POSITION */ - { 28483, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - { 28515, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ - { 28551, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - { 28584, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ - { 28621, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - { 28652, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ - { 28687, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - { 28719, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ - { 28755, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - { 28788, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - { 28820, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ - { 28856, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - { 28889, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ - { 28926, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - { 28956, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ - { 28990, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - { 29021, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ - { 29056, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - { 29087, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ - { 29122, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - { 29154, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ - { 29190, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - { 29220, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ - { 29254, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - { 29285, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ - { 29320, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - { 29352, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - { 29383, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ - { 29418, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - { 29450, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ - { 29486, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ - { 29515, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ - { 29548, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ - { 29578, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ - { 29612, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - { 29651, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - { 29684, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - { 29724, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - { 29758, 0x00008578 }, /* GL_PREVIOUS */ - { 29770, 0x00008578 }, /* GL_PREVIOUS_ARB */ - { 29786, 0x00008578 }, /* GL_PREVIOUS_EXT */ - { 29802, 0x00008577 }, /* GL_PRIMARY_COLOR */ - { 29819, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ - { 29840, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ - { 29861, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ - { 29889, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ - { 29919, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ - { 29943, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 29976, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 30008, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ - { 30031, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ - { 30061, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ - { 30090, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ - { 30113, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ - { 30143, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ - { 30172, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ - { 30200, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ - { 30222, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - { 30250, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - { 30278, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ - { 30300, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ - { 30321, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 30361, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 30400, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 30430, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 30465, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 30498, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 30532, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 30571, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 30610, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ - { 30632, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ - { 30658, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ - { 30682, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ - { 30708, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ - { 30731, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ - { 30753, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ - { 30774, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ - { 30795, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ - { 30822, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 30854, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 30886, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - { 30921, 0x00001701 }, /* GL_PROJECTION */ - { 30935, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ - { 30956, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 30999, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ - { 31025, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ - { 31045, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ - { 31069, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ - { 31090, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ - { 31109, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ - { 31132, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - { 31171, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - { 31209, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ - { 31229, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ - { 31259, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ - { 31283, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ - { 31303, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ - { 31333, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ - { 31357, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ - { 31377, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - { 31410, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ - { 31436, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ - { 31466, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - { 31497, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ - { 31527, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ - { 31546, 0x00002003 }, /* GL_Q */ - { 31551, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ - { 31576, 0x00000007 }, /* GL_QUADS */ - { 31585, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - { 31629, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ - { 31677, 0x00008614 }, /* GL_QUAD_MESH_SUN */ - { 31694, 0x00000008 }, /* GL_QUAD_STRIP */ - { 31708, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ - { 31738, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ - { 31765, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ - { 31787, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ - { 31813, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ - { 31833, 0x00008866 }, /* GL_QUERY_RESULT */ - { 31849, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ - { 31869, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ - { 31895, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ - { 31925, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ - { 31942, 0x00002002 }, /* GL_R */ - { 31947, 0x00002A10 }, /* GL_R3_G3_B2 */ - { 31959, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ - { 31985, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - { 32018, 0x00000C02 }, /* GL_READ_BUFFER */ - { 32033, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ - { 32053, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ - { 32081, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ - { 32113, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ - { 32137, 0x000088B8 }, /* GL_READ_ONLY */ - { 32150, 0x000088B8 }, /* GL_READ_ONLY_ARB */ - { 32167, 0x000088BA }, /* GL_READ_WRITE */ - { 32181, 0x000088BA }, /* GL_READ_WRITE_ARB */ - { 32199, 0x00001903 }, /* GL_RED */ - { 32206, 0x00008016 }, /* GL_REDUCE */ - { 32216, 0x00008016 }, /* GL_REDUCE_EXT */ - { 32230, 0x00000D15 }, /* GL_RED_BIAS */ - { 32242, 0x00000D52 }, /* GL_RED_BITS */ - { 32254, 0x00000D14 }, /* GL_RED_SCALE */ - { 32267, 0x00008512 }, /* GL_REFLECTION_MAP */ - { 32285, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ - { 32307, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ - { 32328, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ - { 32350, 0x00008A19 }, /* GL_RELEASED_APPLE */ - { 32368, 0x00001C00 }, /* GL_RENDER */ - { 32378, 0x00008D41 }, /* GL_RENDERBUFFER */ - { 32394, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ - { 32421, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ - { 32452, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ - { 32476, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ - { 32504, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ - { 32532, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ - { 32558, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ - { 32588, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ - { 32615, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ - { 32646, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ - { 32666, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ - { 32693, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ - { 32724, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ - { 32747, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ - { 32774, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ - { 32801, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - { 32833, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ - { 32869, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ - { 32905, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ - { 32925, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ - { 32950, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ - { 32979, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ - { 33003, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ - { 33031, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ - { 33060, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ - { 33093, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ - { 33115, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ - { 33141, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ - { 33167, 0x00001F01 }, /* GL_RENDERER */ - { 33179, 0x00000C40 }, /* GL_RENDER_MODE */ - { 33194, 0x00002901 }, /* GL_REPEAT */ - { 33204, 0x00001E01 }, /* GL_REPLACE */ - { 33215, 0x00008062 }, /* GL_REPLACE_EXT */ - { 33230, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ - { 33253, 0x0000803A }, /* GL_RESCALE_NORMAL */ - { 33271, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ - { 33293, 0x00008A1B }, /* GL_RETAINED_APPLE */ - { 33311, 0x00000102 }, /* GL_RETURN */ - { 33321, 0x00001907 }, /* GL_RGB */ - { 33328, 0x00008052 }, /* GL_RGB10 */ - { 33337, 0x00008059 }, /* GL_RGB10_A2 */ - { 33349, 0x00008059 }, /* GL_RGB10_A2_EXT */ - { 33365, 0x00008052 }, /* GL_RGB10_EXT */ - { 33378, 0x00008053 }, /* GL_RGB12 */ - { 33387, 0x00008053 }, /* GL_RGB12_EXT */ - { 33400, 0x00008054 }, /* GL_RGB16 */ - { 33409, 0x00008054 }, /* GL_RGB16_EXT */ - { 33422, 0x0000804E }, /* GL_RGB2_EXT */ - { 33434, 0x0000804F }, /* GL_RGB4 */ - { 33442, 0x0000804F }, /* GL_RGB4_EXT */ - { 33454, 0x000083A1 }, /* GL_RGB4_S3TC */ - { 33467, 0x00008050 }, /* GL_RGB5 */ - { 33475, 0x00008D62 }, /* GL_RGB565 */ - { 33485, 0x00008D62 }, /* GL_RGB565_OES */ - { 33499, 0x00008057 }, /* GL_RGB5_A1 */ - { 33510, 0x00008057 }, /* GL_RGB5_A1_EXT */ - { 33525, 0x00008057 }, /* GL_RGB5_A1_OES */ - { 33540, 0x00008050 }, /* GL_RGB5_EXT */ - { 33552, 0x00008051 }, /* GL_RGB8 */ - { 33560, 0x00008051 }, /* GL_RGB8_EXT */ - { 33572, 0x00008051 }, /* GL_RGB8_OES */ - { 33584, 0x00001908 }, /* GL_RGBA */ - { 33592, 0x0000805A }, /* GL_RGBA12 */ - { 33602, 0x0000805A }, /* GL_RGBA12_EXT */ - { 33616, 0x0000805B }, /* GL_RGBA16 */ - { 33626, 0x0000805B }, /* GL_RGBA16_EXT */ - { 33640, 0x00008055 }, /* GL_RGBA2 */ - { 33649, 0x00008055 }, /* GL_RGBA2_EXT */ - { 33662, 0x00008056 }, /* GL_RGBA4 */ - { 33671, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ - { 33690, 0x00008056 }, /* GL_RGBA4_EXT */ - { 33703, 0x00008056 }, /* GL_RGBA4_OES */ - { 33716, 0x000083A3 }, /* GL_RGBA4_S3TC */ - { 33730, 0x00008058 }, /* GL_RGBA8 */ - { 33739, 0x00008058 }, /* GL_RGBA8_EXT */ - { 33752, 0x00008058 }, /* GL_RGBA8_OES */ - { 33765, 0x00008F97 }, /* GL_RGBA8_SNORM */ - { 33780, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ - { 33798, 0x00000C31 }, /* GL_RGBA_MODE */ - { 33811, 0x000083A2 }, /* GL_RGBA_S3TC */ - { 33824, 0x00008F93 }, /* GL_RGBA_SNORM */ - { 33838, 0x000083A0 }, /* GL_RGB_S3TC */ - { 33850, 0x00008573 }, /* GL_RGB_SCALE */ - { 33863, 0x00008573 }, /* GL_RGB_SCALE_ARB */ - { 33880, 0x00008573 }, /* GL_RGB_SCALE_EXT */ - { 33897, 0x00000407 }, /* GL_RIGHT */ - { 33906, 0x00002000 }, /* GL_S */ - { 33911, 0x00008B5D }, /* GL_SAMPLER_1D */ - { 33925, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ - { 33946, 0x00008B5E }, /* GL_SAMPLER_2D */ - { 33960, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ - { 33981, 0x00008B5F }, /* GL_SAMPLER_3D */ - { 33995, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ - { 34013, 0x00008B60 }, /* GL_SAMPLER_CUBE */ - { 34029, 0x000080A9 }, /* GL_SAMPLES */ - { 34040, 0x000086B4 }, /* GL_SAMPLES_3DFX */ - { 34056, 0x000080A9 }, /* GL_SAMPLES_ARB */ - { 34071, 0x00008914 }, /* GL_SAMPLES_PASSED */ - { 34089, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ - { 34111, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - { 34139, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ - { 34171, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ - { 34194, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ - { 34221, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ - { 34239, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ - { 34262, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ - { 34284, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ - { 34303, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ - { 34326, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ - { 34352, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ - { 34382, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ - { 34407, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ - { 34436, 0x00080000 }, /* GL_SCISSOR_BIT */ - { 34451, 0x00000C10 }, /* GL_SCISSOR_BOX */ - { 34466, 0x00000C11 }, /* GL_SCISSOR_TEST */ - { 34482, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ - { 34507, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - { 34547, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 34591, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - { 34624, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - { 34654, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - { 34686, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - { 34716, 0x00001C02 }, /* GL_SELECT */ - { 34726, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ - { 34754, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ - { 34779, 0x00008012 }, /* GL_SEPARABLE_2D */ - { 34795, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ - { 34819, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ - { 34846, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ - { 34877, 0x0000150F }, /* GL_SET */ - { 34884, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ - { 34909, 0x00008DFA }, /* GL_SHADER_COMPILER */ - { 34928, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ - { 34949, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ - { 34973, 0x00008B4F }, /* GL_SHADER_TYPE */ - { 34988, 0x00000B54 }, /* GL_SHADE_MODEL */ - { 35003, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ - { 35031, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ - { 35054, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - { 35084, 0x00001601 }, /* GL_SHININESS */ - { 35097, 0x00001402 }, /* GL_SHORT */ - { 35106, 0x00009119 }, /* GL_SIGNALED */ - { 35118, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ - { 35139, 0x000081F9 }, /* GL_SINGLE_COLOR */ - { 35155, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ - { 35175, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ - { 35194, 0x00008C46 }, /* GL_SLUMINANCE */ - { 35208, 0x00008C47 }, /* GL_SLUMINANCE8 */ - { 35223, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ - { 35245, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ - { 35265, 0x00001D01 }, /* GL_SMOOTH */ - { 35275, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ - { 35308, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ - { 35335, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ - { 35368, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ - { 35395, 0x00008588 }, /* GL_SOURCE0_ALPHA */ - { 35412, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ - { 35433, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ - { 35454, 0x00008580 }, /* GL_SOURCE0_RGB */ - { 35469, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ - { 35488, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ - { 35507, 0x00008589 }, /* GL_SOURCE1_ALPHA */ - { 35524, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ - { 35545, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ - { 35566, 0x00008581 }, /* GL_SOURCE1_RGB */ - { 35581, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ - { 35600, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ - { 35619, 0x0000858A }, /* GL_SOURCE2_ALPHA */ - { 35636, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ - { 35657, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ - { 35678, 0x00008582 }, /* GL_SOURCE2_RGB */ - { 35693, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ - { 35712, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ - { 35731, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ - { 35751, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ - { 35769, 0x00001202 }, /* GL_SPECULAR */ - { 35781, 0x00002402 }, /* GL_SPHERE_MAP */ - { 35795, 0x00001206 }, /* GL_SPOT_CUTOFF */ - { 35810, 0x00001204 }, /* GL_SPOT_DIRECTION */ - { 35828, 0x00001205 }, /* GL_SPOT_EXPONENT */ - { 35845, 0x00008588 }, /* GL_SRC0_ALPHA */ - { 35859, 0x00008580 }, /* GL_SRC0_RGB */ - { 35871, 0x00008589 }, /* GL_SRC1_ALPHA */ - { 35885, 0x00008581 }, /* GL_SRC1_RGB */ - { 35897, 0x0000858A }, /* GL_SRC2_ALPHA */ - { 35911, 0x00008582 }, /* GL_SRC2_RGB */ - { 35923, 0x00000302 }, /* GL_SRC_ALPHA */ - { 35936, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ - { 35958, 0x00000300 }, /* GL_SRC_COLOR */ - { 35971, 0x00008C40 }, /* GL_SRGB */ - { 35979, 0x00008C41 }, /* GL_SRGB8 */ - { 35988, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ - { 36004, 0x00008C42 }, /* GL_SRGB_ALPHA */ - { 36018, 0x00000503 }, /* GL_STACK_OVERFLOW */ - { 36036, 0x00000504 }, /* GL_STACK_UNDERFLOW */ - { 36055, 0x000088E6 }, /* GL_STATIC_COPY */ - { 36070, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ - { 36089, 0x000088E4 }, /* GL_STATIC_DRAW */ - { 36104, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ - { 36123, 0x000088E5 }, /* GL_STATIC_READ */ - { 36138, 0x000088E5 }, /* GL_STATIC_READ_ARB */ - { 36157, 0x00001802 }, /* GL_STENCIL */ - { 36168, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ - { 36190, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ - { 36216, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ - { 36242, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ - { 36263, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ - { 36288, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ - { 36309, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ - { 36334, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - { 36366, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ - { 36402, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - { 36434, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ - { 36470, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ - { 36490, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ - { 36517, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ - { 36543, 0x00000D57 }, /* GL_STENCIL_BITS */ - { 36559, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ - { 36581, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ - { 36604, 0x00000B94 }, /* GL_STENCIL_FAIL */ - { 36620, 0x00000B92 }, /* GL_STENCIL_FUNC */ - { 36636, 0x00001901 }, /* GL_STENCIL_INDEX */ - { 36653, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ - { 36671, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ - { 36690, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ - { 36713, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ - { 36735, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ - { 36757, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ - { 36775, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ - { 36797, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ - { 36819, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ - { 36837, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ - { 36859, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ - { 36881, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ - { 36902, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ - { 36929, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ - { 36956, 0x00000B97 }, /* GL_STENCIL_REF */ - { 36971, 0x00000B90 }, /* GL_STENCIL_TEST */ - { 36987, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ - { 37016, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ - { 37038, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ - { 37059, 0x00000C33 }, /* GL_STEREO */ - { 37069, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ - { 37093, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ - { 37118, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ - { 37142, 0x000088E2 }, /* GL_STREAM_COPY */ - { 37157, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ - { 37176, 0x000088E0 }, /* GL_STREAM_DRAW */ - { 37191, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ - { 37210, 0x000088E1 }, /* GL_STREAM_READ */ - { 37225, 0x000088E1 }, /* GL_STREAM_READ_ARB */ - { 37244, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ - { 37261, 0x000084E7 }, /* GL_SUBTRACT */ - { 37273, 0x000084E7 }, /* GL_SUBTRACT_ARB */ - { 37289, 0x00009113 }, /* GL_SYNC_CONDITION */ - { 37307, 0x00009116 }, /* GL_SYNC_FENCE */ - { 37321, 0x00009115 }, /* GL_SYNC_FLAGS */ - { 37335, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ - { 37362, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - { 37392, 0x00009114 }, /* GL_SYNC_STATUS */ - { 37407, 0x00002001 }, /* GL_T */ - { 37412, 0x00002A2A }, /* GL_T2F_C3F_V3F */ - { 37427, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ - { 37446, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ - { 37462, 0x00002A2B }, /* GL_T2F_N3F_V3F */ - { 37477, 0x00002A27 }, /* GL_T2F_V3F */ - { 37488, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ - { 37507, 0x00002A28 }, /* GL_T4F_V4F */ - { 37518, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ - { 37541, 0x00001702 }, /* GL_TEXTURE */ - { 37552, 0x000084C0 }, /* GL_TEXTURE0 */ - { 37564, 0x000084C0 }, /* GL_TEXTURE0_ARB */ - { 37580, 0x000084C1 }, /* GL_TEXTURE1 */ - { 37592, 0x000084CA }, /* GL_TEXTURE10 */ - { 37605, 0x000084CA }, /* GL_TEXTURE10_ARB */ - { 37622, 0x000084CB }, /* GL_TEXTURE11 */ - { 37635, 0x000084CB }, /* GL_TEXTURE11_ARB */ - { 37652, 0x000084CC }, /* GL_TEXTURE12 */ - { 37665, 0x000084CC }, /* GL_TEXTURE12_ARB */ - { 37682, 0x000084CD }, /* GL_TEXTURE13 */ - { 37695, 0x000084CD }, /* GL_TEXTURE13_ARB */ - { 37712, 0x000084CE }, /* GL_TEXTURE14 */ - { 37725, 0x000084CE }, /* GL_TEXTURE14_ARB */ - { 37742, 0x000084CF }, /* GL_TEXTURE15 */ - { 37755, 0x000084CF }, /* GL_TEXTURE15_ARB */ - { 37772, 0x000084D0 }, /* GL_TEXTURE16 */ - { 37785, 0x000084D0 }, /* GL_TEXTURE16_ARB */ - { 37802, 0x000084D1 }, /* GL_TEXTURE17 */ - { 37815, 0x000084D1 }, /* GL_TEXTURE17_ARB */ - { 37832, 0x000084D2 }, /* GL_TEXTURE18 */ - { 37845, 0x000084D2 }, /* GL_TEXTURE18_ARB */ - { 37862, 0x000084D3 }, /* GL_TEXTURE19 */ - { 37875, 0x000084D3 }, /* GL_TEXTURE19_ARB */ - { 37892, 0x000084C1 }, /* GL_TEXTURE1_ARB */ - { 37908, 0x000084C2 }, /* GL_TEXTURE2 */ - { 37920, 0x000084D4 }, /* GL_TEXTURE20 */ - { 37933, 0x000084D4 }, /* GL_TEXTURE20_ARB */ - { 37950, 0x000084D5 }, /* GL_TEXTURE21 */ - { 37963, 0x000084D5 }, /* GL_TEXTURE21_ARB */ - { 37980, 0x000084D6 }, /* GL_TEXTURE22 */ - { 37993, 0x000084D6 }, /* GL_TEXTURE22_ARB */ - { 38010, 0x000084D7 }, /* GL_TEXTURE23 */ - { 38023, 0x000084D7 }, /* GL_TEXTURE23_ARB */ - { 38040, 0x000084D8 }, /* GL_TEXTURE24 */ - { 38053, 0x000084D8 }, /* GL_TEXTURE24_ARB */ - { 38070, 0x000084D9 }, /* GL_TEXTURE25 */ - { 38083, 0x000084D9 }, /* GL_TEXTURE25_ARB */ - { 38100, 0x000084DA }, /* GL_TEXTURE26 */ - { 38113, 0x000084DA }, /* GL_TEXTURE26_ARB */ - { 38130, 0x000084DB }, /* GL_TEXTURE27 */ - { 38143, 0x000084DB }, /* GL_TEXTURE27_ARB */ - { 38160, 0x000084DC }, /* GL_TEXTURE28 */ - { 38173, 0x000084DC }, /* GL_TEXTURE28_ARB */ - { 38190, 0x000084DD }, /* GL_TEXTURE29 */ - { 38203, 0x000084DD }, /* GL_TEXTURE29_ARB */ - { 38220, 0x000084C2 }, /* GL_TEXTURE2_ARB */ - { 38236, 0x000084C3 }, /* GL_TEXTURE3 */ - { 38248, 0x000084DE }, /* GL_TEXTURE30 */ - { 38261, 0x000084DE }, /* GL_TEXTURE30_ARB */ - { 38278, 0x000084DF }, /* GL_TEXTURE31 */ - { 38291, 0x000084DF }, /* GL_TEXTURE31_ARB */ - { 38308, 0x000084C3 }, /* GL_TEXTURE3_ARB */ - { 38324, 0x000084C4 }, /* GL_TEXTURE4 */ - { 38336, 0x000084C4 }, /* GL_TEXTURE4_ARB */ - { 38352, 0x000084C5 }, /* GL_TEXTURE5 */ - { 38364, 0x000084C5 }, /* GL_TEXTURE5_ARB */ - { 38380, 0x000084C6 }, /* GL_TEXTURE6 */ - { 38392, 0x000084C6 }, /* GL_TEXTURE6_ARB */ - { 38408, 0x000084C7 }, /* GL_TEXTURE7 */ - { 38420, 0x000084C7 }, /* GL_TEXTURE7_ARB */ - { 38436, 0x000084C8 }, /* GL_TEXTURE8 */ - { 38448, 0x000084C8 }, /* GL_TEXTURE8_ARB */ - { 38464, 0x000084C9 }, /* GL_TEXTURE9 */ - { 38476, 0x000084C9 }, /* GL_TEXTURE9_ARB */ - { 38492, 0x00000DE0 }, /* GL_TEXTURE_1D */ - { 38506, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ - { 38530, 0x00000DE1 }, /* GL_TEXTURE_2D */ - { 38544, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ - { 38568, 0x0000806F }, /* GL_TEXTURE_3D */ - { 38582, 0x0000806F }, /* GL_TEXTURE_3D_OES */ - { 38600, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ - { 38622, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ - { 38648, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ - { 38670, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ - { 38692, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ - { 38724, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ - { 38746, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ - { 38778, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ - { 38800, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ - { 38826, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ - { 38854, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ - { 38886, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ - { 38918, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - { 38951, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ - { 38983, 0x00040000 }, /* GL_TEXTURE_BIT */ - { 38998, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ - { 39019, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ - { 39044, 0x00001005 }, /* GL_TEXTURE_BORDER */ - { 39062, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ - { 39086, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - { 39117, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - { 39147, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - { 39177, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - { 39212, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - { 39243, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 39281, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ - { 39308, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - { 39340, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ - { 39374, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ - { 39398, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ - { 39426, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ - { 39450, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ - { 39478, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - { 39511, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ - { 39535, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ - { 39557, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ - { 39579, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ - { 39605, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ - { 39639, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - { 39672, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ - { 39709, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ - { 39737, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ - { 39769, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ - { 39792, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - { 39830, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ - { 39872, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - { 39903, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - { 39931, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - { 39961, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - { 39989, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ - { 40014, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ - { 40034, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ - { 40058, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - { 40089, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ - { 40124, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ - { 40159, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - { 40190, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ - { 40225, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ - { 40260, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - { 40291, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ - { 40326, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ - { 40361, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ - { 40385, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - { 40416, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ - { 40451, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ - { 40486, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - { 40517, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ - { 40552, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ - { 40587, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - { 40618, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ - { 40653, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ - { 40688, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - { 40717, 0x00008071 }, /* GL_TEXTURE_DEPTH */ - { 40734, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ - { 40756, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ - { 40782, 0x00002300 }, /* GL_TEXTURE_ENV */ - { 40797, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ - { 40818, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ - { 40838, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ - { 40864, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ - { 40894, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ - { 40914, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ - { 40938, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ - { 40955, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ - { 40972, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ - { 40989, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ - { 41012, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ - { 41029, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ - { 41054, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ - { 41076, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ - { 41102, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ - { 41120, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ - { 41146, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ - { 41172, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ - { 41202, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ - { 41229, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ - { 41254, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ - { 41274, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ - { 41298, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - { 41325, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - { 41352, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - { 41379, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ - { 41405, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ - { 41435, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ - { 41457, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ - { 41475, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 41515, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - { 41545, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - { 41573, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - { 41601, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - { 41629, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ - { 41650, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ - { 41669, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ - { 41691, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ - { 41710, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ - { 41730, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - { 41760, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - { 41791, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ - { 41816, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ - { 41840, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ - { 41860, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ - { 41884, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ - { 41904, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ - { 41927, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ - { 41951, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ - { 41979, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - { 42009, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ - { 42034, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - { 42068, 0x00001000 }, /* GL_TEXTURE_WIDTH */ - { 42085, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ - { 42103, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ - { 42125, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ - { 42143, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ - { 42161, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ - { 42180, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ - { 42200, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ - { 42219, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - { 42248, 0x00001000 }, /* GL_TRANSFORM_BIT */ - { 42265, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ - { 42287, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ - { 42317, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ - { 42353, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ - { 42394, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ - { 42427, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ - { 42465, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ - { 42501, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ - { 42539, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ - { 42578, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ - { 42623, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ - { 42658, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ - { 42703, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ - { 42729, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ - { 42759, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - { 42791, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - { 42821, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ - { 42855, 0x0000862C }, /* GL_TRANSPOSE_NV */ - { 42871, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - { 42902, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ - { 42937, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - { 42965, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ - { 42997, 0x00000004 }, /* GL_TRIANGLES */ - { 43010, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ - { 43037, 0x00000006 }, /* GL_TRIANGLE_FAN */ - { 43053, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ - { 43074, 0x00000005 }, /* GL_TRIANGLE_STRIP */ - { 43092, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ - { 43124, 0x00000001 }, /* GL_TRUE */ - { 43132, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ - { 43151, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ - { 43171, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ - { 43194, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ - { 43214, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ - { 43235, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ - { 43257, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ - { 43279, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ - { 43299, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ - { 43320, 0x00009118 }, /* GL_UNSIGNALED */ - { 43334, 0x00001401 }, /* GL_UNSIGNED_BYTE */ - { 43351, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - { 43378, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ - { 43401, 0x00001405 }, /* GL_UNSIGNED_INT */ - { 43417, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ - { 43444, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ - { 43475, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ - { 43496, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ - { 43521, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ - { 43545, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ - { 43570, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - { 43601, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ - { 43636, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ - { 43660, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - { 43688, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ - { 43711, 0x00001403 }, /* GL_UNSIGNED_SHORT */ - { 43729, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - { 43759, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ - { 43793, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - { 43819, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - { 43849, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ - { 43883, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - { 43909, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ - { 43933, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - { 43961, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - { 43989, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ - { 44016, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - { 44048, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ - { 44079, 0x00008CA2 }, /* GL_UPPER_LEFT */ - { 44093, 0x00002A20 }, /* GL_V2F */ - { 44100, 0x00002A21 }, /* GL_V3F */ - { 44107, 0x00008B83 }, /* GL_VALIDATE_STATUS */ - { 44126, 0x00001F00 }, /* GL_VENDOR */ - { 44136, 0x00001F02 }, /* GL_VERSION */ - { 44147, 0x00008074 }, /* GL_VERTEX_ARRAY */ - { 44163, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ - { 44187, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ - { 44217, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - { 44248, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ - { 44283, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ - { 44307, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ - { 44328, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ - { 44351, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ - { 44372, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - { 44399, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - { 44427, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - { 44455, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - { 44483, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - { 44511, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - { 44539, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - { 44567, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - { 44594, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - { 44621, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - { 44648, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - { 44675, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - { 44702, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - { 44729, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - { 44756, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - { 44783, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - { 44810, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - { 44848, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ - { 44890, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - { 44921, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ - { 44956, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - { 44990, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ - { 45028, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - { 45059, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ - { 45094, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - { 45122, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ - { 45154, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - { 45184, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ - { 45218, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - { 45246, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ - { 45278, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ - { 45298, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ - { 45320, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ - { 45349, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ - { 45370, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - { 45399, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ - { 45432, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ - { 45464, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - { 45491, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ - { 45522, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ - { 45552, 0x00008B31 }, /* GL_VERTEX_SHADER */ - { 45569, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ - { 45590, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ - { 45617, 0x00000BA2 }, /* GL_VIEWPORT */ - { 45629, 0x00000800 }, /* GL_VIEWPORT_BIT */ - { 45645, 0x00008A1A }, /* GL_VOLATILE_APPLE */ - { 45663, 0x0000911D }, /* GL_WAIT_FAILED */ - { 45678, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ - { 45698, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - { 45729, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ - { 45764, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ - { 45799, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ - { 45819, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - { 45847, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ - { 45875, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - { 45900, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ - { 45925, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - { 45952, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ - { 45979, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - { 46004, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ - { 46029, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ - { 46053, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ - { 46072, 0x000088B9 }, /* GL_WRITE_ONLY */ - { 46086, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ - { 46104, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ - { 46122, 0x00001506 }, /* GL_XOR */ - { 46129, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ - { 46148, 0x00008757 }, /* GL_YCBCR_MESA */ - { 46162, 0x00000000 }, /* GL_ZERO */ - { 46170, 0x00000D16 }, /* GL_ZOOM_X */ - { 46180, 0x00000D17 }, /* GL_ZOOM_Y */ + { 276, 0x00008B8D }, /* GL_ACTIVE_PROGRAM_EXT */ + { 298, 0x00008911 }, /* GL_ACTIVE_STENCIL_FACE_EXT */ + { 325, 0x000084E0 }, /* GL_ACTIVE_TEXTURE */ + { 343, 0x000084E0 }, /* GL_ACTIVE_TEXTURE_ARB */ + { 365, 0x00008B86 }, /* GL_ACTIVE_UNIFORMS */ + { 384, 0x00008B87 }, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ + { 413, 0x000086A5 }, /* GL_ACTIVE_VERTEX_UNITS_ARB */ + { 440, 0x00000104 }, /* GL_ADD */ + { 447, 0x00008574 }, /* GL_ADD_SIGNED */ + { 461, 0x00008574 }, /* GL_ADD_SIGNED_ARB */ + { 479, 0x00008574 }, /* GL_ADD_SIGNED_EXT */ + { 497, 0x0000846E }, /* GL_ALIASED_LINE_WIDTH_RANGE */ + { 525, 0x0000846D }, /* GL_ALIASED_POINT_SIZE_RANGE */ + { 553, 0x000FFFFF }, /* GL_ALL_ATTRIB_BITS */ + { 572, 0xFFFFFFFF }, /* GL_ALL_CLIENT_ATTRIB_BITS */ + { 598, 0x00001906 }, /* GL_ALPHA */ + { 607, 0x0000803D }, /* GL_ALPHA12 */ + { 618, 0x0000803D }, /* GL_ALPHA12_EXT */ + { 633, 0x0000803E }, /* GL_ALPHA16 */ + { 644, 0x00008D8A }, /* GL_ALPHA16I_EXT */ + { 660, 0x00008D78 }, /* GL_ALPHA16UI_EXT */ + { 677, 0x0000803E }, /* GL_ALPHA16_EXT */ + { 692, 0x00008D84 }, /* GL_ALPHA32I_EXT */ + { 708, 0x00008D72 }, /* GL_ALPHA32UI_EXT */ + { 725, 0x0000803B }, /* GL_ALPHA4 */ + { 735, 0x0000803B }, /* GL_ALPHA4_EXT */ + { 749, 0x0000803C }, /* GL_ALPHA8 */ + { 759, 0x00008D90 }, /* GL_ALPHA8I_EXT */ + { 774, 0x00008D7E }, /* GL_ALPHA8UI_EXT */ + { 790, 0x0000803C }, /* GL_ALPHA8_EXT */ + { 804, 0x00000D1D }, /* GL_ALPHA_BIAS */ + { 818, 0x00000D55 }, /* GL_ALPHA_BITS */ + { 832, 0x00008D97 }, /* GL_ALPHA_INTEGER_EXT */ + { 853, 0x00000D1C }, /* GL_ALPHA_SCALE */ + { 868, 0x00000BC0 }, /* GL_ALPHA_TEST */ + { 882, 0x00000BC1 }, /* GL_ALPHA_TEST_FUNC */ + { 901, 0x00000BC2 }, /* GL_ALPHA_TEST_REF */ + { 919, 0x0000911A }, /* GL_ALREADY_SIGNALED */ + { 939, 0x00000207 }, /* GL_ALWAYS */ + { 949, 0x00001200 }, /* GL_AMBIENT */ + { 960, 0x00001602 }, /* GL_AMBIENT_AND_DIFFUSE */ + { 983, 0x00001501 }, /* GL_AND */ + { 990, 0x00001504 }, /* GL_AND_INVERTED */ + { 1006, 0x00001502 }, /* GL_AND_REVERSE */ + { 1021, 0x00008892 }, /* GL_ARRAY_BUFFER */ + { 1037, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING */ + { 1061, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING_ARB */ + { 1089, 0x00008B85 }, /* GL_ATTACHED_SHADERS */ + { 1109, 0x00008645 }, /* GL_ATTRIB_ARRAY_POINTER_NV */ + { 1136, 0x00008623 }, /* GL_ATTRIB_ARRAY_SIZE_NV */ + { 1160, 0x00008624 }, /* GL_ATTRIB_ARRAY_STRIDE_NV */ + { 1186, 0x00008625 }, /* GL_ATTRIB_ARRAY_TYPE_NV */ + { 1210, 0x00000BB0 }, /* GL_ATTRIB_STACK_DEPTH */ + { 1232, 0x00000D80 }, /* GL_AUTO_NORMAL */ + { 1247, 0x00000409 }, /* GL_AUX0 */ + { 1255, 0x0000040A }, /* GL_AUX1 */ + { 1263, 0x0000040B }, /* GL_AUX2 */ + { 1271, 0x0000040C }, /* GL_AUX3 */ + { 1279, 0x00000C00 }, /* GL_AUX_BUFFERS */ + { 1294, 0x00000405 }, /* GL_BACK */ + { 1302, 0x00000402 }, /* GL_BACK_LEFT */ + { 1315, 0x00000403 }, /* GL_BACK_RIGHT */ + { 1329, 0x000080E0 }, /* GL_BGR */ + { 1336, 0x000080E1 }, /* GL_BGRA */ + { 1344, 0x000080E1 }, /* GL_BGRA_EXT */ + { 1356, 0x00008D9B }, /* GL_BGRA_INTEGER */ + { 1372, 0x00008D9B }, /* GL_BGRA_INTEGER_EXT */ + { 1392, 0x00008D9A }, /* GL_BGR_INTEGER */ + { 1407, 0x00008D9A }, /* GL_BGR_INTEGER_EXT */ + { 1426, 0x00001A00 }, /* GL_BITMAP */ + { 1436, 0x00000704 }, /* GL_BITMAP_TOKEN */ + { 1452, 0x00000BE2 }, /* GL_BLEND */ + { 1461, 0x00008005 }, /* GL_BLEND_COLOR */ + { 1476, 0x00008005 }, /* GL_BLEND_COLOR_EXT */ + { 1495, 0x00000BE0 }, /* GL_BLEND_DST */ + { 1508, 0x000080CA }, /* GL_BLEND_DST_ALPHA */ + { 1527, 0x000080CA }, /* GL_BLEND_DST_ALPHA_OES */ + { 1550, 0x000080C8 }, /* GL_BLEND_DST_RGB */ + { 1567, 0x000080C8 }, /* GL_BLEND_DST_RGB_OES */ + { 1588, 0x00008009 }, /* GL_BLEND_EQUATION */ + { 1606, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */ + { 1630, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */ + { 1658, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_OES */ + { 1686, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */ + { 1708, 0x00008009 }, /* GL_BLEND_EQUATION_OES */ + { 1730, 0x00008009 }, /* GL_BLEND_EQUATION_RGB */ + { 1752, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */ + { 1778, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_OES */ + { 1804, 0x00000BE1 }, /* GL_BLEND_SRC */ + { 1817, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */ + { 1836, 0x000080CB }, /* GL_BLEND_SRC_ALPHA_OES */ + { 1859, 0x000080C9 }, /* GL_BLEND_SRC_RGB */ + { 1876, 0x000080C9 }, /* GL_BLEND_SRC_RGB_OES */ + { 1897, 0x00001905 }, /* GL_BLUE */ + { 1905, 0x00000D1B }, /* GL_BLUE_BIAS */ + { 1918, 0x00000D54 }, /* GL_BLUE_BITS */ + { 1931, 0x00008D96 }, /* GL_BLUE_INTEGER */ + { 1947, 0x00008D96 }, /* GL_BLUE_INTEGER_EXT */ + { 1967, 0x00000D1A }, /* GL_BLUE_SCALE */ + { 1981, 0x00008B56 }, /* GL_BOOL */ + { 1989, 0x00008B56 }, /* GL_BOOL_ARB */ + { 2001, 0x00008B57 }, /* GL_BOOL_VEC2 */ + { 2014, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */ + { 2031, 0x00008B58 }, /* GL_BOOL_VEC3 */ + { 2044, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */ + { 2061, 0x00008B59 }, /* GL_BOOL_VEC4 */ + { 2074, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */ + { 2091, 0x000088BB }, /* GL_BUFFER_ACCESS */ + { 2108, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */ + { 2129, 0x0000911F }, /* GL_BUFFER_ACCESS_FLAGS */ + { 2152, 0x000088BB }, /* GL_BUFFER_ACCESS_OES */ + { 2173, 0x00008A13 }, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ + { 2204, 0x000088BC }, /* GL_BUFFER_MAPPED */ + { 2221, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */ + { 2242, 0x000088BC }, /* GL_BUFFER_MAPPED_OES */ + { 2263, 0x00009120 }, /* GL_BUFFER_MAP_LENGTH */ + { 2284, 0x00009121 }, /* GL_BUFFER_MAP_OFFSET */ + { 2305, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */ + { 2327, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */ + { 2353, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_OES */ + { 2379, 0x000085B3 }, /* GL_BUFFER_OBJECT_APPLE */ + { 2402, 0x00008A12 }, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ + { 2436, 0x00008764 }, /* GL_BUFFER_SIZE */ + { 2451, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */ + { 2470, 0x00008765 }, /* GL_BUFFER_USAGE */ + { 2486, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */ + { 2506, 0x0000877B }, /* GL_BUMP_ENVMAP_ATI */ + { 2525, 0x00008777 }, /* GL_BUMP_NUM_TEX_UNITS_ATI */ + { 2551, 0x00008775 }, /* GL_BUMP_ROT_MATRIX_ATI */ + { 2574, 0x00008776 }, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ + { 2602, 0x0000877C }, /* GL_BUMP_TARGET_ATI */ + { 2621, 0x00008778 }, /* GL_BUMP_TEX_UNITS_ATI */ + { 2643, 0x00001400 }, /* GL_BYTE */ + { 2651, 0x00002A24 }, /* GL_C3F_V3F */ + { 2662, 0x00002A26 }, /* GL_C4F_N3F_V3F */ + { 2677, 0x00002A22 }, /* GL_C4UB_V2F */ + { 2689, 0x00002A23 }, /* GL_C4UB_V3F */ + { 2701, 0x00000901 }, /* GL_CCW */ + { 2708, 0x00002900 }, /* GL_CLAMP */ + { 2717, 0x0000891C }, /* GL_CLAMP_READ_COLOR */ + { 2737, 0x0000812D }, /* GL_CLAMP_TO_BORDER */ + { 2756, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */ + { 2779, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */ + { 2803, 0x0000812F }, /* GL_CLAMP_TO_EDGE */ + { 2820, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */ + { 2842, 0x00001500 }, /* GL_CLEAR */ + { 2851, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */ + { 2876, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */ + { 2905, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */ + { 2931, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ + { 2960, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */ + { 2986, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */ + { 3013, 0x00003000 }, /* GL_CLIP_DISTANCE0 */ + { 3031, 0x00003001 }, /* GL_CLIP_DISTANCE1 */ + { 3049, 0x00003002 }, /* GL_CLIP_DISTANCE2 */ + { 3067, 0x00003003 }, /* GL_CLIP_DISTANCE3 */ + { 3085, 0x00003004 }, /* GL_CLIP_DISTANCE4 */ + { 3103, 0x00003005 }, /* GL_CLIP_DISTANCE5 */ + { 3121, 0x00003006 }, /* GL_CLIP_DISTANCE6 */ + { 3139, 0x00003007 }, /* GL_CLIP_DISTANCE7 */ + { 3157, 0x00003000 }, /* GL_CLIP_PLANE0 */ + { 3172, 0x00003001 }, /* GL_CLIP_PLANE1 */ + { 3187, 0x00003002 }, /* GL_CLIP_PLANE2 */ + { 3202, 0x00003003 }, /* GL_CLIP_PLANE3 */ + { 3217, 0x00003004 }, /* GL_CLIP_PLANE4 */ + { 3232, 0x00003005 }, /* GL_CLIP_PLANE5 */ + { 3247, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ + { 3280, 0x00000A00 }, /* GL_COEFF */ + { 3289, 0x00001800 }, /* GL_COLOR */ + { 3298, 0x00008076 }, /* GL_COLOR_ARRAY */ + { 3313, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */ + { 3343, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 3377, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */ + { 3400, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */ + { 3420, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */ + { 3442, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */ + { 3462, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */ + { 3483, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */ + { 3508, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */ + { 3533, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */ + { 3554, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */ + { 3576, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */ + { 3602, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */ + { 3624, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */ + { 3650, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */ + { 3672, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */ + { 3698, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */ + { 3720, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */ + { 3746, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */ + { 3768, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */ + { 3794, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */ + { 3816, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */ + { 3842, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */ + { 3867, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */ + { 3888, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */ + { 3913, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */ + { 3934, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */ + { 3959, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */ + { 3980, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */ + { 4005, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */ + { 4026, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */ + { 4051, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */ + { 4072, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */ + { 4097, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */ + { 4118, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */ + { 4143, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */ + { 4164, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */ + { 4189, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */ + { 4210, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */ + { 4235, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */ + { 4255, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */ + { 4276, 0x00001900 }, /* GL_COLOR_INDEX */ + { 4291, 0x00001603 }, /* GL_COLOR_INDEXES */ + { 4308, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */ + { 4326, 0x00000B57 }, /* GL_COLOR_MATERIAL */ + { 4344, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */ + { 4367, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */ + { 4395, 0x000080B1 }, /* GL_COLOR_MATRIX */ + { 4411, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */ + { 4431, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */ + { 4459, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 4491, 0x00008458 }, /* GL_COLOR_SUM */ + { 4504, 0x00008458 }, /* GL_COLOR_SUM_ARB */ + { 4521, 0x000080D0 }, /* GL_COLOR_TABLE */ + { 4536, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */ + { 4562, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ + { 4592, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */ + { 4622, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */ + { 4642, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */ + { 4666, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */ + { 4691, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */ + { 4720, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */ + { 4749, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */ + { 4771, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */ + { 4797, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */ + { 4823, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */ + { 4849, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */ + { 4879, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */ + { 4909, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */ + { 4939, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ + { 4973, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */ + { 5007, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ + { 5037, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ + { 5071, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */ + { 5105, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */ + { 5129, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */ + { 5157, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */ + { 5185, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */ + { 5206, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */ + { 5231, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */ + { 5252, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */ + { 5277, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */ + { 5302, 0x00000C23 }, /* GL_COLOR_WRITEMASK */ + { 5321, 0x00008570 }, /* GL_COMBINE */ + { 5332, 0x00008503 }, /* GL_COMBINE4 */ + { 5344, 0x00008572 }, /* GL_COMBINE_ALPHA */ + { 5361, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */ + { 5382, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */ + { 5403, 0x00008570 }, /* GL_COMBINE_ARB */ + { 5418, 0x00008570 }, /* GL_COMBINE_EXT */ + { 5433, 0x00008571 }, /* GL_COMBINE_RGB */ + { 5448, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ + { 5467, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ + { 5486, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ + { 5522, 0x0000884E }, /* GL_COMPARE_REF_TO_TEXTURE */ + { 5548, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ + { 5572, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ + { 5600, 0x00001300 }, /* GL_COMPILE */ + { 5611, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ + { 5634, 0x00008B81 }, /* GL_COMPILE_STATUS */ + { 5652, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ + { 5672, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ + { 5696, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ + { 5720, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ + { 5748, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ + { 5772, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + { 5802, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ + { 5836, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ + { 5864, 0x00008225 }, /* GL_COMPRESSED_RED */ + { 5882, 0x00008226 }, /* GL_COMPRESSED_RG */ + { 5899, 0x000084ED }, /* GL_COMPRESSED_RGB */ + { 5917, 0x000084EE }, /* GL_COMPRESSED_RGBA */ + { 5936, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ + { 5959, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + { 5988, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + { 6021, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + { 6054, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + { 6087, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ + { 6109, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + { 6137, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + { 6169, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */ + { 6194, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ + { 6225, 0x00008C48 }, /* GL_COMPRESSED_SRGB */ + { 6244, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */ + { 6269, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ + { 6299, 0x0000911C }, /* GL_CONDITION_SATISFIED */ + { 6322, 0x00008576 }, /* GL_CONSTANT */ + { 6334, 0x00008003 }, /* GL_CONSTANT_ALPHA */ + { 6352, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ + { 6374, 0x00008576 }, /* GL_CONSTANT_ARB */ + { 6390, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ + { 6414, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ + { 6436, 0x00008001 }, /* GL_CONSTANT_COLOR */ + { 6454, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ + { 6476, 0x00008576 }, /* GL_CONSTANT_EXT */ + { 6492, 0x00000002 }, /* GL_CONTEXT_COMPATIBILITY_PROFILE_BIT */ + { 6529, 0x00000001 }, /* GL_CONTEXT_CORE_PROFILE_BIT */ + { 6557, 0x0000821E }, /* GL_CONTEXT_FLAGS */ + { 6574, 0x00000001 }, /* GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */ + { 6613, 0x00009126 }, /* GL_CONTEXT_PROFILE_MASK */ + { 6637, 0x00008010 }, /* GL_CONVOLUTION_1D */ + { 6655, 0x00008011 }, /* GL_CONVOLUTION_2D */ + { 6673, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ + { 6701, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ + { 6732, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ + { 6759, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ + { 6790, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ + { 6817, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ + { 6848, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ + { 6876, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ + { 6908, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ + { 6930, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ + { 6956, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ + { 6978, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ + { 7004, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ + { 7025, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ + { 7050, 0x00008862 }, /* GL_COORD_REPLACE */ + { 7067, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ + { 7088, 0x00008862 }, /* GL_COORD_REPLACE_NV */ + { 7108, 0x00008862 }, /* GL_COORD_REPLACE_OES */ + { 7129, 0x00001503 }, /* GL_COPY */ + { 7137, 0x0000150C }, /* GL_COPY_INVERTED */ + { 7154, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ + { 7174, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ + { 7194, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ + { 7215, 0x00000B44 }, /* GL_CULL_FACE */ + { 7228, 0x00000B45 }, /* GL_CULL_FACE_MODE */ + { 7246, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ + { 7265, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + { 7297, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + { 7332, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ + { 7353, 0x00000001 }, /* GL_CURRENT_BIT */ + { 7368, 0x00000B00 }, /* GL_CURRENT_COLOR */ + { 7385, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ + { 7406, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ + { 7432, 0x00000B01 }, /* GL_CURRENT_INDEX */ + { 7449, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ + { 7471, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ + { 7499, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ + { 7520, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + { 7554, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ + { 7587, 0x00000B02 }, /* GL_CURRENT_NORMAL */ + { 7605, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + { 7635, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */ + { 7665, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ + { 7684, 0x00008865 }, /* GL_CURRENT_QUERY */ + { 7701, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ + { 7722, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ + { 7746, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ + { 7773, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ + { 7797, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ + { 7824, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ + { 7857, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + { 7891, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + { 7924, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ + { 7951, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ + { 7977, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ + { 8002, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ + { 8031, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ + { 8053, 0x00000900 }, /* GL_CW */ + { 8059, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ + { 8080, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ + { 8101, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ + { 8121, 0x00002101 }, /* GL_DECAL */ + { 8130, 0x00001E03 }, /* GL_DECR */ + { 8138, 0x00008508 }, /* GL_DECR_WRAP */ + { 8151, 0x00008508 }, /* GL_DECR_WRAP_EXT */ + { 8168, 0x00008B80 }, /* GL_DELETE_STATUS */ + { 8185, 0x00001801 }, /* GL_DEPTH */ + { 8194, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ + { 8214, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ + { 8238, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */ + { 8262, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ + { 8282, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ + { 8306, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */ + { 8330, 0x00000D1F }, /* GL_DEPTH_BIAS */ + { 8344, 0x00000D56 }, /* GL_DEPTH_BITS */ + { 8358, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ + { 8378, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ + { 8403, 0x00008223 }, /* GL_DEPTH_BUFFER */ + { 8419, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ + { 8439, 0x0000864F }, /* GL_DEPTH_CLAMP */ + { 8454, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ + { 8472, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ + { 8493, 0x00001902 }, /* GL_DEPTH_COMPONENT */ + { 8512, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ + { 8533, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ + { 8558, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */ + { 8583, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ + { 8609, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ + { 8630, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ + { 8655, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */ + { 8680, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ + { 8706, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ + { 8727, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ + { 8752, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */ + { 8777, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ + { 8803, 0x00000B74 }, /* GL_DEPTH_FUNC */ + { 8817, 0x00000B70 }, /* GL_DEPTH_RANGE */ + { 8832, 0x00000D1E }, /* GL_DEPTH_SCALE */ + { 8847, 0x000084F9 }, /* GL_DEPTH_STENCIL */ + { 8864, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ + { 8892, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ + { 8913, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ + { 8933, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */ + { 8954, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + { 8982, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + { 9010, 0x00000B71 }, /* GL_DEPTH_TEST */ + { 9024, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ + { 9046, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ + { 9072, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ + { 9091, 0x00001201 }, /* GL_DIFFUSE */ + { 9102, 0x00000BD0 }, /* GL_DITHER */ + { 9112, 0x00000A02 }, /* GL_DOMAIN */ + { 9122, 0x00001100 }, /* GL_DONT_CARE */ + { 9135, 0x000086AE }, /* GL_DOT3_RGB */ + { 9147, 0x000086AF }, /* GL_DOT3_RGBA */ + { 9160, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ + { 9177, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ + { 9194, 0x000086AE }, /* GL_DOT3_RGB_ARB */ + { 9210, 0x00008740 }, /* GL_DOT3_RGB_EXT */ + { 9226, 0x0000140A }, /* GL_DOUBLE */ + { 9236, 0x00000C32 }, /* GL_DOUBLEBUFFER */ + { 9252, 0x00000C01 }, /* GL_DRAW_BUFFER */ + { 9267, 0x00008825 }, /* GL_DRAW_BUFFER0 */ + { 9283, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ + { 9303, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ + { 9323, 0x00008826 }, /* GL_DRAW_BUFFER1 */ + { 9339, 0x0000882F }, /* GL_DRAW_BUFFER10 */ + { 9356, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ + { 9377, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ + { 9398, 0x00008830 }, /* GL_DRAW_BUFFER11 */ + { 9415, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ + { 9436, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ + { 9457, 0x00008831 }, /* GL_DRAW_BUFFER12 */ + { 9474, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ + { 9495, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ + { 9516, 0x00008832 }, /* GL_DRAW_BUFFER13 */ + { 9533, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ + { 9554, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ + { 9575, 0x00008833 }, /* GL_DRAW_BUFFER14 */ + { 9592, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ + { 9613, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ + { 9634, 0x00008834 }, /* GL_DRAW_BUFFER15 */ + { 9651, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ + { 9672, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ + { 9693, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ + { 9713, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ + { 9733, 0x00008827 }, /* GL_DRAW_BUFFER2 */ + { 9749, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ + { 9769, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ + { 9789, 0x00008828 }, /* GL_DRAW_BUFFER3 */ + { 9805, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ + { 9825, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ + { 9845, 0x00008829 }, /* GL_DRAW_BUFFER4 */ + { 9861, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ + { 9881, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ + { 9901, 0x0000882A }, /* GL_DRAW_BUFFER5 */ + { 9917, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ + { 9937, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ + { 9957, 0x0000882B }, /* GL_DRAW_BUFFER6 */ + { 9973, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ + { 9993, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ + { 10013, 0x0000882C }, /* GL_DRAW_BUFFER7 */ + { 10029, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ + { 10049, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ + { 10069, 0x0000882D }, /* GL_DRAW_BUFFER8 */ + { 10085, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ + { 10105, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ + { 10125, 0x0000882E }, /* GL_DRAW_BUFFER9 */ + { 10141, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ + { 10161, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ + { 10181, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ + { 10201, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ + { 10229, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ + { 10261, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ + { 10285, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ + { 10305, 0x00000304 }, /* GL_DST_ALPHA */ + { 10318, 0x00000306 }, /* GL_DST_COLOR */ + { 10331, 0x0000877A }, /* GL_DU8DV8_ATI */ + { 10345, 0x00008779 }, /* GL_DUDV_ATI */ + { 10357, 0x000088EA }, /* GL_DYNAMIC_COPY */ + { 10373, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ + { 10393, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ + { 10409, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ + { 10429, 0x000088E9 }, /* GL_DYNAMIC_READ */ + { 10445, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ + { 10465, 0x00000B43 }, /* GL_EDGE_FLAG */ + { 10478, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ + { 10497, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + { 10531, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ + { 10569, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ + { 10596, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + { 10622, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ + { 10646, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + { 10678, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ + { 10714, 0x00001600 }, /* GL_EMISSION */ + { 10726, 0x00002000 }, /* GL_ENABLE_BIT */ + { 10740, 0x00000202 }, /* GL_EQUAL */ + { 10749, 0x00001509 }, /* GL_EQUIV */ + { 10758, 0x00010000 }, /* GL_EVAL_BIT */ + { 10770, 0x00000800 }, /* GL_EXP */ + { 10777, 0x00000801 }, /* GL_EXP2 */ + { 10785, 0x00001F03 }, /* GL_EXTENSIONS */ + { 10799, 0x00002400 }, /* GL_EYE_LINEAR */ + { 10813, 0x00002502 }, /* GL_EYE_PLANE */ + { 10826, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ + { 10851, 0x0000855B }, /* GL_EYE_RADIAL_NV */ + { 10868, 0x00000000 }, /* GL_FALSE */ + { 10877, 0x00001101 }, /* GL_FASTEST */ + { 10888, 0x00001C01 }, /* GL_FEEDBACK */ + { 10900, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ + { 10927, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ + { 10951, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ + { 10975, 0x00001B02 }, /* GL_FILL */ + { 10983, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ + { 11010, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ + { 11041, 0x0000140C }, /* GL_FIXED */ + { 11050, 0x0000140C }, /* GL_FIXED_OES */ + { 11063, 0x0000891D }, /* GL_FIXED_ONLY */ + { 11077, 0x00001D00 }, /* GL_FLAT */ + { 11085, 0x00001406 }, /* GL_FLOAT */ + { 11094, 0x00008B5A }, /* GL_FLOAT_MAT2 */ + { 11108, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ + { 11126, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ + { 11142, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ + { 11158, 0x00008B5B }, /* GL_FLOAT_MAT3 */ + { 11172, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ + { 11190, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ + { 11206, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ + { 11222, 0x00008B5C }, /* GL_FLOAT_MAT4 */ + { 11236, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ + { 11254, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ + { 11270, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ + { 11286, 0x00008B50 }, /* GL_FLOAT_VEC2 */ + { 11300, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ + { 11318, 0x00008B51 }, /* GL_FLOAT_VEC3 */ + { 11332, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ + { 11350, 0x00008B52 }, /* GL_FLOAT_VEC4 */ + { 11364, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ + { 11382, 0x00000B60 }, /* GL_FOG */ + { 11389, 0x00000080 }, /* GL_FOG_BIT */ + { 11400, 0x00000B66 }, /* GL_FOG_COLOR */ + { 11413, 0x00008451 }, /* GL_FOG_COORD */ + { 11426, 0x00008451 }, /* GL_FOG_COORDINATE */ + { 11444, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ + { 11468, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + { 11507, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ + { 11550, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + { 11582, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + { 11613, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + { 11642, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ + { 11667, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ + { 11686, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ + { 11720, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ + { 11747, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ + { 11773, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ + { 11797, 0x00008450 }, /* GL_FOG_COORD_SRC */ + { 11814, 0x00000B62 }, /* GL_FOG_DENSITY */ + { 11829, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ + { 11853, 0x00000B64 }, /* GL_FOG_END */ + { 11864, 0x00000C54 }, /* GL_FOG_HINT */ + { 11876, 0x00000B61 }, /* GL_FOG_INDEX */ + { 11889, 0x00000B65 }, /* GL_FOG_MODE */ + { 11901, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ + { 11920, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ + { 11945, 0x00000B63 }, /* GL_FOG_START */ + { 11958, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ + { 11976, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ + { 12000, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ + { 12019, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ + { 12042, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + { 12077, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ + { 12116, 0x00008D40 }, /* GL_FRAMEBUFFER */ + { 12131, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + { 12168, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + { 12204, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + { 12245, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + { 12286, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + { 12323, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + { 12360, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + { 12394, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ + { 12432, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + { 12470, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ + { 12512, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ + { 12554, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + { 12592, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ + { 12634, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ + { 12676, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + { 12711, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + { 12750, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ + { 12799, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ + { 12848, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + { 12896, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ + { 12948, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ + { 13000, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + { 13040, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ + { 13084, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + { 13124, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ + { 13168, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ + { 13212, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ + { 13235, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ + { 13262, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ + { 13289, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ + { 13313, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ + { 13341, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ + { 13369, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ + { 13392, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ + { 13411, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + { 13448, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ + { 13489, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ + { 13530, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ + { 13567, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + { 13608, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ + { 13649, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + { 13687, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ + { 13729, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ + { 13771, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + { 13822, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + { 13860, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ + { 13898, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + { 13940, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + { 13980, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ + { 14024, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + { 14069, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ + { 14118, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ + { 14167, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + { 14205, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ + { 14247, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + { 14285, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ + { 14327, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ + { 14369, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ + { 14388, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + { 14420, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ + { 14445, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ + { 14472, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ + { 14503, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ + { 14534, 0x00000404 }, /* GL_FRONT */ + { 14543, 0x00000408 }, /* GL_FRONT_AND_BACK */ + { 14561, 0x00000B46 }, /* GL_FRONT_FACE */ + { 14575, 0x00000400 }, /* GL_FRONT_LEFT */ + { 14589, 0x00000401 }, /* GL_FRONT_RIGHT */ + { 14604, 0x00008006 }, /* GL_FUNC_ADD */ + { 14616, 0x00008006 }, /* GL_FUNC_ADD_EXT */ + { 14632, 0x00008006 }, /* GL_FUNC_ADD_OES */ + { 14648, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ + { 14673, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ + { 14702, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ + { 14731, 0x0000800A }, /* GL_FUNC_SUBTRACT */ + { 14748, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ + { 14769, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ + { 14790, 0x00008191 }, /* GL_GENERATE_MIPMAP */ + { 14809, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ + { 14833, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ + { 14862, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ + { 14886, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */ + { 14909, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + { 14936, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */ + { 14960, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + { 14988, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */ + { 15007, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ + { 15030, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */ + { 15055, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + { 15084, 0x00000206 }, /* GL_GEQUAL */ + { 15094, 0x00000204 }, /* GL_GREATER */ + { 15105, 0x00001904 }, /* GL_GREEN */ + { 15114, 0x00000D19 }, /* GL_GREEN_BIAS */ + { 15128, 0x00000D53 }, /* GL_GREEN_BITS */ + { 15142, 0x00008D95 }, /* GL_GREEN_INTEGER */ + { 15159, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */ + { 15180, 0x00000D18 }, /* GL_GREEN_SCALE */ + { 15195, 0x0000140B }, /* GL_HALF_FLOAT */ + { 15209, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ + { 15227, 0x00008DF2 }, /* GL_HIGH_FLOAT */ + { 15241, 0x00008DF5 }, /* GL_HIGH_INT */ + { 15253, 0x00008000 }, /* GL_HINT_BIT */ + { 15265, 0x00008024 }, /* GL_HISTOGRAM */ + { 15278, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ + { 15302, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ + { 15330, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ + { 15353, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ + { 15380, 0x00008024 }, /* GL_HISTOGRAM_EXT */ + { 15397, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ + { 15417, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ + { 15441, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ + { 15465, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ + { 15493, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + { 15521, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ + { 15553, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ + { 15575, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ + { 15601, 0x0000802D }, /* GL_HISTOGRAM_SINK */ + { 15619, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ + { 15641, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ + { 15660, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ + { 15683, 0x0000862A }, /* GL_IDENTITY_NV */ + { 15698, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ + { 15718, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + { 15754, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + { 15794, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + { 15828, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + { 15866, 0x00001E02 }, /* GL_INCR */ + { 15874, 0x00008507 }, /* GL_INCR_WRAP */ + { 15887, 0x00008507 }, /* GL_INCR_WRAP_EXT */ + { 15904, 0x00008222 }, /* GL_INDEX */ + { 15913, 0x00008077 }, /* GL_INDEX_ARRAY */ + { 15928, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + { 15958, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ + { 15992, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ + { 16015, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ + { 16037, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ + { 16057, 0x00000D51 }, /* GL_INDEX_BITS */ + { 16071, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ + { 16092, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ + { 16110, 0x00000C30 }, /* GL_INDEX_MODE */ + { 16124, 0x00000D13 }, /* GL_INDEX_OFFSET */ + { 16140, 0x00000D12 }, /* GL_INDEX_SHIFT */ + { 16155, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ + { 16174, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ + { 16193, 0x00001404 }, /* GL_INT */ + { 16200, 0x00008049 }, /* GL_INTENSITY */ + { 16213, 0x0000804C }, /* GL_INTENSITY12 */ + { 16228, 0x0000804C }, /* GL_INTENSITY12_EXT */ + { 16247, 0x0000804D }, /* GL_INTENSITY16 */ + { 16262, 0x00008D8B }, /* GL_INTENSITY16I_EXT */ + { 16282, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */ + { 16303, 0x0000804D }, /* GL_INTENSITY16_EXT */ + { 16322, 0x00008D85 }, /* GL_INTENSITY32I_EXT */ + { 16342, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */ + { 16363, 0x0000804A }, /* GL_INTENSITY4 */ + { 16377, 0x0000804A }, /* GL_INTENSITY4_EXT */ + { 16395, 0x0000804B }, /* GL_INTENSITY8 */ + { 16409, 0x00008D91 }, /* GL_INTENSITY8I_EXT */ + { 16428, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */ + { 16448, 0x0000804B }, /* GL_INTENSITY8_EXT */ + { 16466, 0x00008049 }, /* GL_INTENSITY_EXT */ + { 16483, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */ + { 16506, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ + { 16533, 0x00008575 }, /* GL_INTERPOLATE */ + { 16548, 0x00008575 }, /* GL_INTERPOLATE_ARB */ + { 16567, 0x00008575 }, /* GL_INTERPOLATE_EXT */ + { 16586, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ + { 16608, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */ + { 16626, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */ + { 16650, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ + { 16678, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */ + { 16700, 0x00008DCA }, /* GL_INT_SAMPLER_2D */ + { 16718, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */ + { 16742, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ + { 16770, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */ + { 16792, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */ + { 16815, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */ + { 16842, 0x00008DCB }, /* GL_INT_SAMPLER_3D */ + { 16860, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */ + { 16882, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */ + { 16904, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */ + { 16930, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */ + { 16950, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */ + { 16974, 0x00008B53 }, /* GL_INT_VEC2 */ + { 16986, 0x00008B53 }, /* GL_INT_VEC2_ARB */ + { 17002, 0x00008B54 }, /* GL_INT_VEC3 */ + { 17014, 0x00008B54 }, /* GL_INT_VEC3_ARB */ + { 17030, 0x00008B55 }, /* GL_INT_VEC4 */ + { 17042, 0x00008B55 }, /* GL_INT_VEC4_ARB */ + { 17058, 0x00000500 }, /* GL_INVALID_ENUM */ + { 17074, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + { 17107, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ + { 17144, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ + { 17181, 0x00000502 }, /* GL_INVALID_OPERATION */ + { 17202, 0x00000501 }, /* GL_INVALID_VALUE */ + { 17219, 0x0000862B }, /* GL_INVERSE_NV */ + { 17233, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ + { 17257, 0x0000150A }, /* GL_INVERT */ + { 17267, 0x00001E00 }, /* GL_KEEP */ + { 17275, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ + { 17301, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ + { 17331, 0x00000406 }, /* GL_LEFT */ + { 17339, 0x00000203 }, /* GL_LEQUAL */ + { 17349, 0x00000201 }, /* GL_LESS */ + { 17357, 0x00004000 }, /* GL_LIGHT0 */ + { 17367, 0x00004001 }, /* GL_LIGHT1 */ + { 17377, 0x00004002 }, /* GL_LIGHT2 */ + { 17387, 0x00004003 }, /* GL_LIGHT3 */ + { 17397, 0x00004004 }, /* GL_LIGHT4 */ + { 17407, 0x00004005 }, /* GL_LIGHT5 */ + { 17417, 0x00004006 }, /* GL_LIGHT6 */ + { 17427, 0x00004007 }, /* GL_LIGHT7 */ + { 17437, 0x00000B50 }, /* GL_LIGHTING */ + { 17449, 0x00000040 }, /* GL_LIGHTING_BIT */ + { 17465, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ + { 17488, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + { 17517, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ + { 17550, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + { 17578, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ + { 17602, 0x00001B01 }, /* GL_LINE */ + { 17610, 0x00002601 }, /* GL_LINEAR */ + { 17620, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ + { 17642, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + { 17672, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + { 17703, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ + { 17727, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ + { 17752, 0x00000001 }, /* GL_LINES */ + { 17761, 0x0000000A }, /* GL_LINES_ADJACENCY */ + { 17780, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ + { 17803, 0x00000004 }, /* GL_LINE_BIT */ + { 17815, 0x00000002 }, /* GL_LINE_LOOP */ + { 17828, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ + { 17848, 0x00000B20 }, /* GL_LINE_SMOOTH */ + { 17863, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ + { 17883, 0x00000B24 }, /* GL_LINE_STIPPLE */ + { 17899, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ + { 17923, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ + { 17946, 0x00000003 }, /* GL_LINE_STRIP */ + { 17960, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */ + { 17984, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ + { 18012, 0x00000702 }, /* GL_LINE_TOKEN */ + { 18026, 0x00000B21 }, /* GL_LINE_WIDTH */ + { 18040, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ + { 18066, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ + { 18086, 0x00008B82 }, /* GL_LINK_STATUS */ + { 18101, 0x00000B32 }, /* GL_LIST_BASE */ + { 18114, 0x00020000 }, /* GL_LIST_BIT */ + { 18126, 0x00000B33 }, /* GL_LIST_INDEX */ + { 18140, 0x00000B30 }, /* GL_LIST_MODE */ + { 18153, 0x00000101 }, /* GL_LOAD */ + { 18161, 0x00000BF1 }, /* GL_LOGIC_OP */ + { 18173, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ + { 18190, 0x00008CA1 }, /* GL_LOWER_LEFT */ + { 18204, 0x00008DF0 }, /* GL_LOW_FLOAT */ + { 18217, 0x00008DF3 }, /* GL_LOW_INT */ + { 18228, 0x00001909 }, /* GL_LUMINANCE */ + { 18241, 0x00008041 }, /* GL_LUMINANCE12 */ + { 18256, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ + { 18279, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ + { 18306, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ + { 18328, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ + { 18354, 0x00008041 }, /* GL_LUMINANCE12_EXT */ + { 18373, 0x00008042 }, /* GL_LUMINANCE16 */ + { 18388, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */ + { 18408, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */ + { 18429, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ + { 18452, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ + { 18479, 0x00008042 }, /* GL_LUMINANCE16_EXT */ + { 18498, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */ + { 18518, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */ + { 18539, 0x0000803F }, /* GL_LUMINANCE4 */ + { 18553, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ + { 18574, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ + { 18599, 0x0000803F }, /* GL_LUMINANCE4_EXT */ + { 18617, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ + { 18638, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ + { 18663, 0x00008040 }, /* GL_LUMINANCE8 */ + { 18677, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */ + { 18696, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */ + { 18716, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ + { 18737, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ + { 18762, 0x00008040 }, /* GL_LUMINANCE8_EXT */ + { 18780, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ + { 18799, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */ + { 18825, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */ + { 18852, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */ + { 18878, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */ + { 18905, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */ + { 18930, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */ + { 18956, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + { 18987, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */ + { 19012, 0x0000821B }, /* GL_MAJOR_VERSION */ + { 19029, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ + { 19045, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ + { 19065, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ + { 19087, 0x00000D91 }, /* GL_MAP1_INDEX */ + { 19101, 0x00000D92 }, /* GL_MAP1_NORMAL */ + { 19116, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ + { 19140, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ + { 19164, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ + { 19188, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ + { 19212, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ + { 19229, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ + { 19246, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + { 19274, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + { 19303, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + { 19332, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + { 19361, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + { 19390, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + { 19419, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + { 19448, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + { 19476, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + { 19504, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + { 19532, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + { 19560, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + { 19588, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + { 19616, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + { 19644, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + { 19672, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + { 19700, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ + { 19716, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ + { 19736, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ + { 19758, 0x00000DB1 }, /* GL_MAP2_INDEX */ + { 19772, 0x00000DB2 }, /* GL_MAP2_NORMAL */ + { 19787, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ + { 19811, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ + { 19835, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ + { 19859, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ + { 19883, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ + { 19900, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ + { 19917, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + { 19945, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + { 19974, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + { 20003, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + { 20032, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + { 20061, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + { 20090, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + { 20119, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + { 20147, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + { 20175, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + { 20203, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + { 20231, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + { 20259, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + { 20287, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ + { 20315, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + { 20343, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + { 20371, 0x00000D10 }, /* GL_MAP_COLOR */ + { 20384, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ + { 20410, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ + { 20439, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ + { 20467, 0x00000001 }, /* GL_MAP_READ_BIT */ + { 20483, 0x00000D11 }, /* GL_MAP_STENCIL */ + { 20498, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ + { 20524, 0x00000002 }, /* GL_MAP_WRITE_BIT */ + { 20541, 0x000088C0 }, /* GL_MATRIX0_ARB */ + { 20556, 0x00008630 }, /* GL_MATRIX0_NV */ + { 20570, 0x000088CA }, /* GL_MATRIX10_ARB */ + { 20586, 0x000088CB }, /* GL_MATRIX11_ARB */ + { 20602, 0x000088CC }, /* GL_MATRIX12_ARB */ + { 20618, 0x000088CD }, /* GL_MATRIX13_ARB */ + { 20634, 0x000088CE }, /* GL_MATRIX14_ARB */ + { 20650, 0x000088CF }, /* GL_MATRIX15_ARB */ + { 20666, 0x000088D0 }, /* GL_MATRIX16_ARB */ + { 20682, 0x000088D1 }, /* GL_MATRIX17_ARB */ + { 20698, 0x000088D2 }, /* GL_MATRIX18_ARB */ + { 20714, 0x000088D3 }, /* GL_MATRIX19_ARB */ + { 20730, 0x000088C1 }, /* GL_MATRIX1_ARB */ + { 20745, 0x00008631 }, /* GL_MATRIX1_NV */ + { 20759, 0x000088D4 }, /* GL_MATRIX20_ARB */ + { 20775, 0x000088D5 }, /* GL_MATRIX21_ARB */ + { 20791, 0x000088D6 }, /* GL_MATRIX22_ARB */ + { 20807, 0x000088D7 }, /* GL_MATRIX23_ARB */ + { 20823, 0x000088D8 }, /* GL_MATRIX24_ARB */ + { 20839, 0x000088D9 }, /* GL_MATRIX25_ARB */ + { 20855, 0x000088DA }, /* GL_MATRIX26_ARB */ + { 20871, 0x000088DB }, /* GL_MATRIX27_ARB */ + { 20887, 0x000088DC }, /* GL_MATRIX28_ARB */ + { 20903, 0x000088DD }, /* GL_MATRIX29_ARB */ + { 20919, 0x000088C2 }, /* GL_MATRIX2_ARB */ + { 20934, 0x00008632 }, /* GL_MATRIX2_NV */ + { 20948, 0x000088DE }, /* GL_MATRIX30_ARB */ + { 20964, 0x000088DF }, /* GL_MATRIX31_ARB */ + { 20980, 0x000088C3 }, /* GL_MATRIX3_ARB */ + { 20995, 0x00008633 }, /* GL_MATRIX3_NV */ + { 21009, 0x000088C4 }, /* GL_MATRIX4_ARB */ + { 21024, 0x00008634 }, /* GL_MATRIX4_NV */ + { 21038, 0x000088C5 }, /* GL_MATRIX5_ARB */ + { 21053, 0x00008635 }, /* GL_MATRIX5_NV */ + { 21067, 0x000088C6 }, /* GL_MATRIX6_ARB */ + { 21082, 0x00008636 }, /* GL_MATRIX6_NV */ + { 21096, 0x000088C7 }, /* GL_MATRIX7_ARB */ + { 21111, 0x00008637 }, /* GL_MATRIX7_NV */ + { 21125, 0x000088C8 }, /* GL_MATRIX8_ARB */ + { 21140, 0x000088C9 }, /* GL_MATRIX9_ARB */ + { 21155, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ + { 21181, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + { 21222, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ + { 21248, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + { 21282, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ + { 21316, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + { 21347, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ + { 21378, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + { 21411, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ + { 21444, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + { 21475, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ + { 21506, 0x00000BA0 }, /* GL_MATRIX_MODE */ + { 21521, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ + { 21543, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ + { 21565, 0x00008008 }, /* GL_MAX */ + { 21572, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ + { 21595, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ + { 21622, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + { 21650, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ + { 21682, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ + { 21708, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + { 21741, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + { 21767, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 21801, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */ + { 21823, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ + { 21842, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ + { 21867, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ + { 21896, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + { 21928, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 21964, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + { 22000, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ + { 22040, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ + { 22066, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ + { 22096, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ + { 22121, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ + { 22150, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + { 22179, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ + { 22212, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ + { 22245, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ + { 22265, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ + { 22289, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ + { 22313, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ + { 22337, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ + { 22362, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ + { 22380, 0x00008008 }, /* GL_MAX_EXT */ + { 22391, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + { 22424, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + { 22459, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ + { 22498, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + { 22530, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + { 22563, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + { 22597, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + { 22629, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ + { 22665, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + { 22701, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ + { 22741, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + { 22781, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ + { 22825, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + { 22860, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ + { 22899, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + { 22938, 0x00000D31 }, /* GL_MAX_LIGHTS */ + { 22952, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ + { 22972, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + { 23010, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + { 23039, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ + { 23063, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ + { 23091, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ + { 23119, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ + { 23142, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 23179, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 23215, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + { 23242, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + { 23271, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + { 23305, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ + { 23341, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + { 23368, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + { 23400, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + { 23436, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + { 23465, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + { 23494, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ + { 23522, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + { 23560, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 23604, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 23647, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 23681, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 23720, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 23757, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 23795, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 23838, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 23881, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + { 23911, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + { 23942, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + { 23970, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ + { 24002, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 24038, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 24074, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ + { 24104, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + { 24134, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ + { 24168, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ + { 24201, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ + { 24226, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ + { 24255, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ + { 24284, 0x00008D57 }, /* GL_MAX_SAMPLES */ + { 24299, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ + { 24318, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + { 24345, 0x00008504 }, /* GL_MAX_SHININESS_NV */ + { 24365, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ + { 24389, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + { 24416, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ + { 24438, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ + { 24464, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + { 24491, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ + { 24522, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ + { 24546, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ + { 24574, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + { 24608, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ + { 24628, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ + { 24655, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ + { 24676, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ + { 24701, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ + { 24726, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ + { 24761, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + { 24810, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ + { 24863, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + { 24906, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ + { 24953, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + { 24999, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ + { 25049, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ + { 25075, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ + { 25097, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ + { 25123, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ + { 25146, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ + { 25168, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ + { 25194, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + { 25226, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + { 25260, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ + { 25298, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + { 25331, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ + { 25368, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + { 25398, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ + { 25422, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ + { 25446, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + { 25483, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ + { 25504, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ + { 25520, 0x00008DF4 }, /* GL_MEDIUM_INT */ + { 25534, 0x00008007 }, /* GL_MIN */ + { 25541, 0x0000802E }, /* GL_MINMAX */ + { 25551, 0x0000802E }, /* GL_MINMAX_EXT */ + { 25565, 0x0000802F }, /* GL_MINMAX_FORMAT */ + { 25582, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ + { 25603, 0x00008030 }, /* GL_MINMAX_SINK */ + { 25618, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ + { 25637, 0x0000821C }, /* GL_MINOR_VERSION */ + { 25654, 0x00008007 }, /* GL_MIN_EXT */ + { 25665, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + { 25693, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ + { 25725, 0x00008370 }, /* GL_MIRRORED_REPEAT */ + { 25744, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ + { 25767, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ + { 25790, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ + { 25810, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ + { 25830, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + { 25860, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ + { 25888, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + { 25916, 0x00001700 }, /* GL_MODELVIEW */ + { 25929, 0x00001700 }, /* GL_MODELVIEW0_ARB */ + { 25947, 0x0000872A }, /* GL_MODELVIEW10_ARB */ + { 25966, 0x0000872B }, /* GL_MODELVIEW11_ARB */ + { 25985, 0x0000872C }, /* GL_MODELVIEW12_ARB */ + { 26004, 0x0000872D }, /* GL_MODELVIEW13_ARB */ + { 26023, 0x0000872E }, /* GL_MODELVIEW14_ARB */ + { 26042, 0x0000872F }, /* GL_MODELVIEW15_ARB */ + { 26061, 0x00008730 }, /* GL_MODELVIEW16_ARB */ + { 26080, 0x00008731 }, /* GL_MODELVIEW17_ARB */ + { 26099, 0x00008732 }, /* GL_MODELVIEW18_ARB */ + { 26118, 0x00008733 }, /* GL_MODELVIEW19_ARB */ + { 26137, 0x0000850A }, /* GL_MODELVIEW1_ARB */ + { 26155, 0x00008734 }, /* GL_MODELVIEW20_ARB */ + { 26174, 0x00008735 }, /* GL_MODELVIEW21_ARB */ + { 26193, 0x00008736 }, /* GL_MODELVIEW22_ARB */ + { 26212, 0x00008737 }, /* GL_MODELVIEW23_ARB */ + { 26231, 0x00008738 }, /* GL_MODELVIEW24_ARB */ + { 26250, 0x00008739 }, /* GL_MODELVIEW25_ARB */ + { 26269, 0x0000873A }, /* GL_MODELVIEW26_ARB */ + { 26288, 0x0000873B }, /* GL_MODELVIEW27_ARB */ + { 26307, 0x0000873C }, /* GL_MODELVIEW28_ARB */ + { 26326, 0x0000873D }, /* GL_MODELVIEW29_ARB */ + { 26345, 0x00008722 }, /* GL_MODELVIEW2_ARB */ + { 26363, 0x0000873E }, /* GL_MODELVIEW30_ARB */ + { 26382, 0x0000873F }, /* GL_MODELVIEW31_ARB */ + { 26401, 0x00008723 }, /* GL_MODELVIEW3_ARB */ + { 26419, 0x00008724 }, /* GL_MODELVIEW4_ARB */ + { 26437, 0x00008725 }, /* GL_MODELVIEW5_ARB */ + { 26455, 0x00008726 }, /* GL_MODELVIEW6_ARB */ + { 26473, 0x00008727 }, /* GL_MODELVIEW7_ARB */ + { 26491, 0x00008728 }, /* GL_MODELVIEW8_ARB */ + { 26509, 0x00008729 }, /* GL_MODELVIEW9_ARB */ + { 26527, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ + { 26547, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 26589, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ + { 26616, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ + { 26641, 0x00002100 }, /* GL_MODULATE */ + { 26653, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ + { 26673, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ + { 26700, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ + { 26725, 0x00000103 }, /* GL_MULT */ + { 26733, 0x0000809D }, /* GL_MULTISAMPLE */ + { 26748, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ + { 26768, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ + { 26787, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ + { 26806, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ + { 26830, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ + { 26853, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + { 26883, 0x00002A25 }, /* GL_N3F_V3F */ + { 26894, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ + { 26914, 0x0000150E }, /* GL_NAND */ + { 26922, 0x00002600 }, /* GL_NEAREST */ + { 26933, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + { 26964, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + { 26996, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ + { 27021, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ + { 27047, 0x00000200 }, /* GL_NEVER */ + { 27056, 0x00001102 }, /* GL_NICEST */ + { 27066, 0x00000000 }, /* GL_NONE */ + { 27074, 0x00000000 }, /* GL_NONE_OES */ + { 27086, 0x00001505 }, /* GL_NOOP */ + { 27094, 0x00001508 }, /* GL_NOR */ + { 27101, 0x00000BA1 }, /* GL_NORMALIZE */ + { 27114, 0x00008075 }, /* GL_NORMAL_ARRAY */ + { 27130, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + { 27161, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ + { 27196, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ + { 27220, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ + { 27243, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ + { 27264, 0x00008511 }, /* GL_NORMAL_MAP */ + { 27278, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ + { 27296, 0x00008511 }, /* GL_NORMAL_MAP_NV */ + { 27313, 0x00008511 }, /* GL_NORMAL_MAP_OES */ + { 27331, 0x00000205 }, /* GL_NOTEQUAL */ + { 27343, 0x00000000 }, /* GL_NO_ERROR */ + { 27355, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + { 27389, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ + { 27427, 0x0000821D }, /* GL_NUM_EXTENSIONS */ + { 27445, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + { 27479, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ + { 27508, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ + { 27540, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ + { 27582, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ + { 27612, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ + { 27652, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ + { 27683, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ + { 27712, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ + { 27740, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ + { 27770, 0x00002401 }, /* GL_OBJECT_LINEAR */ + { 27787, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ + { 27813, 0x00002501 }, /* GL_OBJECT_PLANE */ + { 27829, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ + { 27864, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ + { 27886, 0x00009112 }, /* GL_OBJECT_TYPE */ + { 27901, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ + { 27920, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ + { 27950, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ + { 27971, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ + { 27999, 0x00000001 }, /* GL_ONE */ + { 28006, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + { 28034, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ + { 28066, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ + { 28094, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ + { 28126, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ + { 28149, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ + { 28172, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ + { 28195, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ + { 28218, 0x00008598 }, /* GL_OPERAND0_ALPHA */ + { 28236, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ + { 28258, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ + { 28280, 0x00008590 }, /* GL_OPERAND0_RGB */ + { 28296, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ + { 28316, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ + { 28336, 0x00008599 }, /* GL_OPERAND1_ALPHA */ + { 28354, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ + { 28376, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ + { 28398, 0x00008591 }, /* GL_OPERAND1_RGB */ + { 28414, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ + { 28434, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ + { 28454, 0x0000859A }, /* GL_OPERAND2_ALPHA */ + { 28472, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ + { 28494, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ + { 28516, 0x00008592 }, /* GL_OPERAND2_RGB */ + { 28532, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ + { 28552, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ + { 28572, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ + { 28593, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ + { 28612, 0x00001507 }, /* GL_OR */ + { 28618, 0x00000A01 }, /* GL_ORDER */ + { 28627, 0x0000150D }, /* GL_OR_INVERTED */ + { 28642, 0x0000150B }, /* GL_OR_REVERSE */ + { 28656, 0x00000505 }, /* GL_OUT_OF_MEMORY */ + { 28673, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ + { 28691, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ + { 28712, 0x00008758 }, /* GL_PACK_INVERT_MESA */ + { 28732, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ + { 28750, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ + { 28769, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ + { 28789, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ + { 28809, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ + { 28827, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ + { 28846, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ + { 28871, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ + { 28895, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ + { 28916, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ + { 28938, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ + { 28960, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ + { 28985, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ + { 29009, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ + { 29030, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ + { 29052, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ + { 29074, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ + { 29096, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ + { 29127, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ + { 29147, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + { 29172, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ + { 29192, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + { 29217, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ + { 29237, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + { 29262, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ + { 29282, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + { 29307, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ + { 29327, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + { 29352, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ + { 29372, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + { 29397, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ + { 29417, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + { 29442, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ + { 29462, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + { 29487, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ + { 29507, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + { 29532, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ + { 29552, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + { 29577, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ + { 29595, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ + { 29616, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ + { 29645, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ + { 29678, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ + { 29703, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ + { 29726, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + { 29757, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ + { 29792, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ + { 29819, 0x00001B00 }, /* GL_POINT */ + { 29828, 0x00000000 }, /* GL_POINTS */ + { 29838, 0x00000002 }, /* GL_POINT_BIT */ + { 29851, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ + { 29881, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ + { 29915, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ + { 29949, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ + { 29984, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ + { 30013, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ + { 30046, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ + { 30079, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ + { 30113, 0x00000B11 }, /* GL_POINT_SIZE */ + { 30127, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + { 30166, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ + { 30190, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + { 30222, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + { 30253, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + { 30282, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ + { 30308, 0x00008127 }, /* GL_POINT_SIZE_MAX */ + { 30326, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ + { 30348, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ + { 30370, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ + { 30393, 0x00008126 }, /* GL_POINT_SIZE_MIN */ + { 30411, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ + { 30433, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ + { 30455, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ + { 30478, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ + { 30498, 0x00000B10 }, /* GL_POINT_SMOOTH */ + { 30514, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ + { 30535, 0x00008861 }, /* GL_POINT_SPRITE */ + { 30551, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ + { 30571, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ + { 30600, 0x00008861 }, /* GL_POINT_SPRITE_NV */ + { 30619, 0x00008861 }, /* GL_POINT_SPRITE_OES */ + { 30639, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ + { 30665, 0x00000701 }, /* GL_POINT_TOKEN */ + { 30680, 0x00000009 }, /* GL_POLYGON */ + { 30691, 0x00000008 }, /* GL_POLYGON_BIT */ + { 30706, 0x00000B40 }, /* GL_POLYGON_MODE */ + { 30722, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ + { 30745, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ + { 30770, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ + { 30793, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ + { 30816, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ + { 30840, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ + { 30864, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ + { 30882, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ + { 30905, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ + { 30924, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ + { 30947, 0x00000703 }, /* GL_POLYGON_TOKEN */ + { 30964, 0x00001203 }, /* GL_POSITION */ + { 30976, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + { 31008, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ + { 31044, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + { 31077, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ + { 31114, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + { 31145, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ + { 31180, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + { 31212, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ + { 31248, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + { 31281, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + { 31313, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ + { 31349, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + { 31382, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ + { 31419, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + { 31449, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ + { 31483, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + { 31514, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ + { 31549, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + { 31580, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ + { 31615, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + { 31647, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ + { 31683, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + { 31713, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ + { 31747, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + { 31778, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ + { 31813, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + { 31845, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + { 31876, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ + { 31911, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + { 31943, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ + { 31979, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ + { 32008, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ + { 32041, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ + { 32071, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ + { 32105, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + { 32144, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + { 32177, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + { 32217, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + { 32251, 0x00008578 }, /* GL_PREVIOUS */ + { 32263, 0x00008578 }, /* GL_PREVIOUS_ARB */ + { 32279, 0x00008578 }, /* GL_PREVIOUS_EXT */ + { 32295, 0x00008577 }, /* GL_PRIMARY_COLOR */ + { 32312, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ + { 32333, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ + { 32354, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */ + { 32378, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ + { 32406, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */ + { 32427, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */ + { 32454, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + { 32484, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ + { 32508, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 32541, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 32573, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ + { 32596, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ + { 32626, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ + { 32655, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ + { 32678, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ + { 32708, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ + { 32737, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ + { 32765, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ + { 32787, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + { 32815, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + { 32843, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ + { 32865, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ + { 32886, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 32926, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 32965, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 32995, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 33030, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 33063, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 33097, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 33136, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 33175, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ + { 33197, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ + { 33223, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ + { 33247, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */ + { 33269, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ + { 33295, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ + { 33318, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ + { 33340, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ + { 33361, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ + { 33382, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ + { 33409, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 33441, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 33473, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + { 33508, 0x00001701 }, /* GL_PROJECTION */ + { 33522, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ + { 33543, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 33586, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ + { 33612, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ + { 33632, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ + { 33656, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ + { 33677, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ + { 33696, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ + { 33719, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + { 33758, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + { 33796, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ + { 33816, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */ + { 33842, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ + { 33872, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ + { 33896, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ + { 33916, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */ + { 33942, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ + { 33972, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ + { 33996, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ + { 34016, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + { 34049, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ + { 34075, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ + { 34105, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */ + { 34132, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ + { 34163, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ + { 34193, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ + { 34212, 0x00002003 }, /* GL_Q */ + { 34217, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ + { 34242, 0x00000007 }, /* GL_QUADS */ + { 34251, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + { 34295, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ + { 34343, 0x00008614 }, /* GL_QUAD_MESH_SUN */ + { 34360, 0x00000008 }, /* GL_QUAD_STRIP */ + { 34374, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */ + { 34401, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ + { 34431, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */ + { 34455, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ + { 34482, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ + { 34504, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ + { 34530, 0x00008E14 }, /* GL_QUERY_NO_WAIT */ + { 34547, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ + { 34567, 0x00008866 }, /* GL_QUERY_RESULT */ + { 34583, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ + { 34603, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ + { 34629, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ + { 34659, 0x00008E13 }, /* GL_QUERY_WAIT */ + { 34673, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ + { 34690, 0x00002002 }, /* GL_R */ + { 34695, 0x00008C3A }, /* GL_R11F_G11F_B10F */ + { 34713, 0x00008F98 }, /* GL_R16_SNORM */ + { 34726, 0x00002A10 }, /* GL_R3_G3_B2 */ + { 34738, 0x00008F94 }, /* GL_R8_SNORM */ + { 34750, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */ + { 34772, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ + { 34798, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + { 34831, 0x00000C02 }, /* GL_READ_BUFFER */ + { 34846, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ + { 34866, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ + { 34894, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ + { 34926, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ + { 34950, 0x000088B8 }, /* GL_READ_ONLY */ + { 34963, 0x000088B8 }, /* GL_READ_ONLY_ARB */ + { 34980, 0x000088BA }, /* GL_READ_WRITE */ + { 34994, 0x000088BA }, /* GL_READ_WRITE_ARB */ + { 35012, 0x00001903 }, /* GL_RED */ + { 35019, 0x00008016 }, /* GL_REDUCE */ + { 35029, 0x00008016 }, /* GL_REDUCE_EXT */ + { 35043, 0x00000D15 }, /* GL_RED_BIAS */ + { 35055, 0x00000D52 }, /* GL_RED_BITS */ + { 35067, 0x00008D94 }, /* GL_RED_INTEGER */ + { 35082, 0x00008D94 }, /* GL_RED_INTEGER_EXT */ + { 35101, 0x00000D14 }, /* GL_RED_SCALE */ + { 35114, 0x00008F90 }, /* GL_RED_SNORM */ + { 35127, 0x00008512 }, /* GL_REFLECTION_MAP */ + { 35145, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ + { 35167, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ + { 35188, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ + { 35210, 0x00008A19 }, /* GL_RELEASED_APPLE */ + { 35228, 0x00001C00 }, /* GL_RENDER */ + { 35238, 0x00008D41 }, /* GL_RENDERBUFFER */ + { 35254, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ + { 35281, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ + { 35312, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ + { 35336, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ + { 35364, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ + { 35392, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ + { 35418, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ + { 35448, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ + { 35475, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ + { 35506, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ + { 35526, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ + { 35553, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ + { 35584, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ + { 35607, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ + { 35634, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ + { 35661, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + { 35693, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ + { 35729, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ + { 35765, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ + { 35785, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ + { 35810, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ + { 35839, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ + { 35863, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ + { 35891, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ + { 35920, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ + { 35953, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ + { 35975, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ + { 36001, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ + { 36027, 0x00001F01 }, /* GL_RENDERER */ + { 36039, 0x00000C40 }, /* GL_RENDER_MODE */ + { 36054, 0x00002901 }, /* GL_REPEAT */ + { 36064, 0x00001E01 }, /* GL_REPLACE */ + { 36075, 0x00008062 }, /* GL_REPLACE_EXT */ + { 36090, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ + { 36113, 0x0000803A }, /* GL_RESCALE_NORMAL */ + { 36131, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ + { 36153, 0x00008A1B }, /* GL_RETAINED_APPLE */ + { 36171, 0x00000102 }, /* GL_RETURN */ + { 36181, 0x00008F99 }, /* GL_RG16_SNORM */ + { 36195, 0x00008F95 }, /* GL_RG8_SNORM */ + { 36208, 0x00001907 }, /* GL_RGB */ + { 36215, 0x00008052 }, /* GL_RGB10 */ + { 36224, 0x00008059 }, /* GL_RGB10_A2 */ + { 36236, 0x00008059 }, /* GL_RGB10_A2_EXT */ + { 36252, 0x00008052 }, /* GL_RGB10_EXT */ + { 36265, 0x00008053 }, /* GL_RGB12 */ + { 36274, 0x00008053 }, /* GL_RGB12_EXT */ + { 36287, 0x00008054 }, /* GL_RGB16 */ + { 36296, 0x0000881B }, /* GL_RGB16F */ + { 36306, 0x00008D89 }, /* GL_RGB16I */ + { 36316, 0x00008D89 }, /* GL_RGB16I_EXT */ + { 36330, 0x00008D77 }, /* GL_RGB16UI */ + { 36341, 0x00008D77 }, /* GL_RGB16UI_EXT */ + { 36356, 0x00008054 }, /* GL_RGB16_EXT */ + { 36369, 0x00008F9A }, /* GL_RGB16_SNORM */ + { 36384, 0x0000804E }, /* GL_RGB2_EXT */ + { 36396, 0x00008815 }, /* GL_RGB32F */ + { 36406, 0x00008D83 }, /* GL_RGB32I */ + { 36416, 0x00008D83 }, /* GL_RGB32I_EXT */ + { 36430, 0x00008D71 }, /* GL_RGB32UI */ + { 36441, 0x00008D71 }, /* GL_RGB32UI_EXT */ + { 36456, 0x0000804F }, /* GL_RGB4 */ + { 36464, 0x0000804F }, /* GL_RGB4_EXT */ + { 36476, 0x000083A1 }, /* GL_RGB4_S3TC */ + { 36489, 0x00008050 }, /* GL_RGB5 */ + { 36497, 0x00008D62 }, /* GL_RGB565 */ + { 36507, 0x00008D62 }, /* GL_RGB565_OES */ + { 36521, 0x00008057 }, /* GL_RGB5_A1 */ + { 36532, 0x00008057 }, /* GL_RGB5_A1_EXT */ + { 36547, 0x00008057 }, /* GL_RGB5_A1_OES */ + { 36562, 0x00008050 }, /* GL_RGB5_EXT */ + { 36574, 0x00008051 }, /* GL_RGB8 */ + { 36582, 0x00008D8F }, /* GL_RGB8I */ + { 36591, 0x00008D8F }, /* GL_RGB8I_EXT */ + { 36604, 0x00008D7D }, /* GL_RGB8UI */ + { 36614, 0x00008D7D }, /* GL_RGB8UI_EXT */ + { 36628, 0x00008051 }, /* GL_RGB8_EXT */ + { 36640, 0x00008051 }, /* GL_RGB8_OES */ + { 36652, 0x00008F96 }, /* GL_RGB8_SNORM */ + { 36666, 0x00008C3D }, /* GL_RGB9_E5 */ + { 36677, 0x00001908 }, /* GL_RGBA */ + { 36685, 0x0000805A }, /* GL_RGBA12 */ + { 36695, 0x0000805A }, /* GL_RGBA12_EXT */ + { 36709, 0x0000805B }, /* GL_RGBA16 */ + { 36719, 0x0000881A }, /* GL_RGBA16F */ + { 36730, 0x00008D88 }, /* GL_RGBA16I */ + { 36741, 0x00008D88 }, /* GL_RGBA16I_EXT */ + { 36756, 0x00008D76 }, /* GL_RGBA16UI */ + { 36768, 0x00008D76 }, /* GL_RGBA16UI_EXT */ + { 36784, 0x0000805B }, /* GL_RGBA16_EXT */ + { 36798, 0x00008F9B }, /* GL_RGBA16_SNORM */ + { 36814, 0x00008055 }, /* GL_RGBA2 */ + { 36823, 0x00008055 }, /* GL_RGBA2_EXT */ + { 36836, 0x00008814 }, /* GL_RGBA32F */ + { 36847, 0x00008D82 }, /* GL_RGBA32I */ + { 36858, 0x00008D82 }, /* GL_RGBA32I_EXT */ + { 36873, 0x00008D70 }, /* GL_RGBA32UI */ + { 36885, 0x00008D70 }, /* GL_RGBA32UI_EXT */ + { 36901, 0x00008056 }, /* GL_RGBA4 */ + { 36910, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ + { 36929, 0x00008056 }, /* GL_RGBA4_EXT */ + { 36942, 0x00008056 }, /* GL_RGBA4_OES */ + { 36955, 0x000083A3 }, /* GL_RGBA4_S3TC */ + { 36969, 0x00008058 }, /* GL_RGBA8 */ + { 36978, 0x00008D8E }, /* GL_RGBA8I */ + { 36988, 0x00008D8E }, /* GL_RGBA8I_EXT */ + { 37002, 0x00008D7C }, /* GL_RGBA8UI */ + { 37013, 0x00008D7C }, /* GL_RGBA8UI_EXT */ + { 37028, 0x00008058 }, /* GL_RGBA8_EXT */ + { 37041, 0x00008058 }, /* GL_RGBA8_OES */ + { 37054, 0x00008F97 }, /* GL_RGBA8_SNORM */ + { 37069, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ + { 37087, 0x00008D99 }, /* GL_RGBA_INTEGER */ + { 37103, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */ + { 37123, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */ + { 37148, 0x00000C31 }, /* GL_RGBA_MODE */ + { 37161, 0x000083A2 }, /* GL_RGBA_S3TC */ + { 37174, 0x00008F93 }, /* GL_RGBA_SNORM */ + { 37188, 0x00008D98 }, /* GL_RGB_INTEGER */ + { 37203, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */ + { 37222, 0x000083A0 }, /* GL_RGB_S3TC */ + { 37234, 0x00008573 }, /* GL_RGB_SCALE */ + { 37247, 0x00008573 }, /* GL_RGB_SCALE_ARB */ + { 37264, 0x00008573 }, /* GL_RGB_SCALE_EXT */ + { 37281, 0x00008F92 }, /* GL_RGB_SNORM */ + { 37294, 0x00008F91 }, /* GL_RG_SNORM */ + { 37306, 0x00000407 }, /* GL_RIGHT */ + { 37315, 0x00002000 }, /* GL_S */ + { 37320, 0x00008B5D }, /* GL_SAMPLER_1D */ + { 37334, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */ + { 37354, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */ + { 37378, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + { 37405, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ + { 37436, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ + { 37457, 0x00008B5E }, /* GL_SAMPLER_2D */ + { 37471, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */ + { 37491, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */ + { 37515, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + { 37542, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ + { 37573, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */ + { 37592, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */ + { 37618, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ + { 37639, 0x00008B5F }, /* GL_SAMPLER_3D */ + { 37653, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ + { 37671, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */ + { 37689, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */ + { 37711, 0x00008B60 }, /* GL_SAMPLER_CUBE */ + { 37727, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */ + { 37750, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */ + { 37777, 0x000080A9 }, /* GL_SAMPLES */ + { 37788, 0x000086B4 }, /* GL_SAMPLES_3DFX */ + { 37804, 0x000080A9 }, /* GL_SAMPLES_ARB */ + { 37819, 0x00008914 }, /* GL_SAMPLES_PASSED */ + { 37837, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ + { 37859, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + { 37887, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ + { 37919, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ + { 37942, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ + { 37969, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ + { 37987, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ + { 38010, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ + { 38032, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ + { 38051, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ + { 38074, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ + { 38100, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ + { 38130, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ + { 38155, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ + { 38184, 0x00080000 }, /* GL_SCISSOR_BIT */ + { 38199, 0x00000C10 }, /* GL_SCISSOR_BOX */ + { 38214, 0x00000C11 }, /* GL_SCISSOR_TEST */ + { 38230, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ + { 38255, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + { 38295, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 38339, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + { 38372, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + { 38402, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + { 38434, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + { 38464, 0x00001C02 }, /* GL_SELECT */ + { 38474, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ + { 38502, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ + { 38527, 0x00008012 }, /* GL_SEPARABLE_2D */ + { 38543, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */ + { 38563, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ + { 38587, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ + { 38614, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ + { 38645, 0x0000150F }, /* GL_SET */ + { 38652, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ + { 38677, 0x00008DFA }, /* GL_SHADER_COMPILER */ + { 38696, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ + { 38717, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ + { 38741, 0x00008B4F }, /* GL_SHADER_TYPE */ + { 38756, 0x00000B54 }, /* GL_SHADE_MODEL */ + { 38771, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ + { 38799, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ + { 38822, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + { 38852, 0x00001601 }, /* GL_SHININESS */ + { 38865, 0x00001402 }, /* GL_SHORT */ + { 38874, 0x00009119 }, /* GL_SIGNALED */ + { 38886, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ + { 38907, 0x000081F9 }, /* GL_SINGLE_COLOR */ + { 38923, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ + { 38943, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ + { 38962, 0x00008C46 }, /* GL_SLUMINANCE */ + { 38976, 0x00008C47 }, /* GL_SLUMINANCE8 */ + { 38991, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ + { 39013, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ + { 39033, 0x00001D01 }, /* GL_SMOOTH */ + { 39043, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ + { 39076, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ + { 39103, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ + { 39136, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ + { 39163, 0x00008588 }, /* GL_SOURCE0_ALPHA */ + { 39180, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ + { 39201, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ + { 39222, 0x00008580 }, /* GL_SOURCE0_RGB */ + { 39237, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ + { 39256, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ + { 39275, 0x00008589 }, /* GL_SOURCE1_ALPHA */ + { 39292, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ + { 39313, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ + { 39334, 0x00008581 }, /* GL_SOURCE1_RGB */ + { 39349, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ + { 39368, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ + { 39387, 0x0000858A }, /* GL_SOURCE2_ALPHA */ + { 39404, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ + { 39425, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ + { 39446, 0x00008582 }, /* GL_SOURCE2_RGB */ + { 39461, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ + { 39480, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ + { 39499, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ + { 39519, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ + { 39537, 0x00001202 }, /* GL_SPECULAR */ + { 39549, 0x00002402 }, /* GL_SPHERE_MAP */ + { 39563, 0x00001206 }, /* GL_SPOT_CUTOFF */ + { 39578, 0x00001204 }, /* GL_SPOT_DIRECTION */ + { 39596, 0x00001205 }, /* GL_SPOT_EXPONENT */ + { 39613, 0x00008588 }, /* GL_SRC0_ALPHA */ + { 39627, 0x00008580 }, /* GL_SRC0_RGB */ + { 39639, 0x00008589 }, /* GL_SRC1_ALPHA */ + { 39653, 0x00008581 }, /* GL_SRC1_RGB */ + { 39665, 0x0000858A }, /* GL_SRC2_ALPHA */ + { 39679, 0x00008582 }, /* GL_SRC2_RGB */ + { 39691, 0x00000302 }, /* GL_SRC_ALPHA */ + { 39704, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ + { 39726, 0x00000300 }, /* GL_SRC_COLOR */ + { 39739, 0x00008C40 }, /* GL_SRGB */ + { 39747, 0x00008C41 }, /* GL_SRGB8 */ + { 39756, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ + { 39772, 0x00008C42 }, /* GL_SRGB_ALPHA */ + { 39786, 0x00000503 }, /* GL_STACK_OVERFLOW */ + { 39804, 0x00000504 }, /* GL_STACK_UNDERFLOW */ + { 39823, 0x000088E6 }, /* GL_STATIC_COPY */ + { 39838, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ + { 39857, 0x000088E4 }, /* GL_STATIC_DRAW */ + { 39872, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ + { 39891, 0x000088E5 }, /* GL_STATIC_READ */ + { 39906, 0x000088E5 }, /* GL_STATIC_READ_ARB */ + { 39925, 0x00001802 }, /* GL_STENCIL */ + { 39936, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ + { 39958, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ + { 39984, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ + { 40010, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ + { 40031, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ + { 40056, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ + { 40077, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ + { 40102, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + { 40134, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ + { 40170, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + { 40202, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ + { 40238, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ + { 40258, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ + { 40285, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ + { 40311, 0x00000D57 }, /* GL_STENCIL_BITS */ + { 40327, 0x00008224 }, /* GL_STENCIL_BUFFER */ + { 40345, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ + { 40367, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ + { 40390, 0x00000B94 }, /* GL_STENCIL_FAIL */ + { 40406, 0x00000B92 }, /* GL_STENCIL_FUNC */ + { 40422, 0x00001901 }, /* GL_STENCIL_INDEX */ + { 40439, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ + { 40457, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ + { 40476, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ + { 40499, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ + { 40521, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ + { 40543, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ + { 40561, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ + { 40583, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ + { 40605, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ + { 40623, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ + { 40645, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ + { 40667, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ + { 40688, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ + { 40715, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ + { 40742, 0x00000B97 }, /* GL_STENCIL_REF */ + { 40757, 0x00000B90 }, /* GL_STENCIL_TEST */ + { 40773, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + { 40802, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ + { 40824, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ + { 40845, 0x00000C33 }, /* GL_STEREO */ + { 40855, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ + { 40879, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ + { 40904, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ + { 40928, 0x000088E2 }, /* GL_STREAM_COPY */ + { 40943, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ + { 40962, 0x000088E0 }, /* GL_STREAM_DRAW */ + { 40977, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ + { 40996, 0x000088E1 }, /* GL_STREAM_READ */ + { 41011, 0x000088E1 }, /* GL_STREAM_READ_ARB */ + { 41030, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ + { 41047, 0x000084E7 }, /* GL_SUBTRACT */ + { 41059, 0x000084E7 }, /* GL_SUBTRACT_ARB */ + { 41075, 0x00009113 }, /* GL_SYNC_CONDITION */ + { 41093, 0x00009116 }, /* GL_SYNC_FENCE */ + { 41107, 0x00009115 }, /* GL_SYNC_FLAGS */ + { 41121, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ + { 41148, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + { 41178, 0x00009114 }, /* GL_SYNC_STATUS */ + { 41193, 0x00002001 }, /* GL_T */ + { 41198, 0x00002A2A }, /* GL_T2F_C3F_V3F */ + { 41213, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ + { 41232, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ + { 41248, 0x00002A2B }, /* GL_T2F_N3F_V3F */ + { 41263, 0x00002A27 }, /* GL_T2F_V3F */ + { 41274, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ + { 41293, 0x00002A28 }, /* GL_T4F_V4F */ + { 41304, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ + { 41327, 0x00001702 }, /* GL_TEXTURE */ + { 41338, 0x000084C0 }, /* GL_TEXTURE0 */ + { 41350, 0x000084C0 }, /* GL_TEXTURE0_ARB */ + { 41366, 0x000084C1 }, /* GL_TEXTURE1 */ + { 41378, 0x000084CA }, /* GL_TEXTURE10 */ + { 41391, 0x000084CA }, /* GL_TEXTURE10_ARB */ + { 41408, 0x000084CB }, /* GL_TEXTURE11 */ + { 41421, 0x000084CB }, /* GL_TEXTURE11_ARB */ + { 41438, 0x000084CC }, /* GL_TEXTURE12 */ + { 41451, 0x000084CC }, /* GL_TEXTURE12_ARB */ + { 41468, 0x000084CD }, /* GL_TEXTURE13 */ + { 41481, 0x000084CD }, /* GL_TEXTURE13_ARB */ + { 41498, 0x000084CE }, /* GL_TEXTURE14 */ + { 41511, 0x000084CE }, /* GL_TEXTURE14_ARB */ + { 41528, 0x000084CF }, /* GL_TEXTURE15 */ + { 41541, 0x000084CF }, /* GL_TEXTURE15_ARB */ + { 41558, 0x000084D0 }, /* GL_TEXTURE16 */ + { 41571, 0x000084D0 }, /* GL_TEXTURE16_ARB */ + { 41588, 0x000084D1 }, /* GL_TEXTURE17 */ + { 41601, 0x000084D1 }, /* GL_TEXTURE17_ARB */ + { 41618, 0x000084D2 }, /* GL_TEXTURE18 */ + { 41631, 0x000084D2 }, /* GL_TEXTURE18_ARB */ + { 41648, 0x000084D3 }, /* GL_TEXTURE19 */ + { 41661, 0x000084D3 }, /* GL_TEXTURE19_ARB */ + { 41678, 0x000084C1 }, /* GL_TEXTURE1_ARB */ + { 41694, 0x000084C2 }, /* GL_TEXTURE2 */ + { 41706, 0x000084D4 }, /* GL_TEXTURE20 */ + { 41719, 0x000084D4 }, /* GL_TEXTURE20_ARB */ + { 41736, 0x000084D5 }, /* GL_TEXTURE21 */ + { 41749, 0x000084D5 }, /* GL_TEXTURE21_ARB */ + { 41766, 0x000084D6 }, /* GL_TEXTURE22 */ + { 41779, 0x000084D6 }, /* GL_TEXTURE22_ARB */ + { 41796, 0x000084D7 }, /* GL_TEXTURE23 */ + { 41809, 0x000084D7 }, /* GL_TEXTURE23_ARB */ + { 41826, 0x000084D8 }, /* GL_TEXTURE24 */ + { 41839, 0x000084D8 }, /* GL_TEXTURE24_ARB */ + { 41856, 0x000084D9 }, /* GL_TEXTURE25 */ + { 41869, 0x000084D9 }, /* GL_TEXTURE25_ARB */ + { 41886, 0x000084DA }, /* GL_TEXTURE26 */ + { 41899, 0x000084DA }, /* GL_TEXTURE26_ARB */ + { 41916, 0x000084DB }, /* GL_TEXTURE27 */ + { 41929, 0x000084DB }, /* GL_TEXTURE27_ARB */ + { 41946, 0x000084DC }, /* GL_TEXTURE28 */ + { 41959, 0x000084DC }, /* GL_TEXTURE28_ARB */ + { 41976, 0x000084DD }, /* GL_TEXTURE29 */ + { 41989, 0x000084DD }, /* GL_TEXTURE29_ARB */ + { 42006, 0x000084C2 }, /* GL_TEXTURE2_ARB */ + { 42022, 0x000084C3 }, /* GL_TEXTURE3 */ + { 42034, 0x000084DE }, /* GL_TEXTURE30 */ + { 42047, 0x000084DE }, /* GL_TEXTURE30_ARB */ + { 42064, 0x000084DF }, /* GL_TEXTURE31 */ + { 42077, 0x000084DF }, /* GL_TEXTURE31_ARB */ + { 42094, 0x000084C3 }, /* GL_TEXTURE3_ARB */ + { 42110, 0x000084C4 }, /* GL_TEXTURE4 */ + { 42122, 0x000084C4 }, /* GL_TEXTURE4_ARB */ + { 42138, 0x000084C5 }, /* GL_TEXTURE5 */ + { 42150, 0x000084C5 }, /* GL_TEXTURE5_ARB */ + { 42166, 0x000084C6 }, /* GL_TEXTURE6 */ + { 42178, 0x000084C6 }, /* GL_TEXTURE6_ARB */ + { 42194, 0x000084C7 }, /* GL_TEXTURE7 */ + { 42206, 0x000084C7 }, /* GL_TEXTURE7_ARB */ + { 42222, 0x000084C8 }, /* GL_TEXTURE8 */ + { 42234, 0x000084C8 }, /* GL_TEXTURE8_ARB */ + { 42250, 0x000084C9 }, /* GL_TEXTURE9 */ + { 42262, 0x000084C9 }, /* GL_TEXTURE9_ARB */ + { 42278, 0x00000DE0 }, /* GL_TEXTURE_1D */ + { 42292, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */ + { 42312, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ + { 42336, 0x00000DE1 }, /* GL_TEXTURE_2D */ + { 42350, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */ + { 42370, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ + { 42394, 0x0000806F }, /* GL_TEXTURE_3D */ + { 42408, 0x0000806F }, /* GL_TEXTURE_3D_OES */ + { 42426, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ + { 42448, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ + { 42474, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ + { 42496, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ + { 42518, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */ + { 42546, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ + { 42578, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ + { 42600, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */ + { 42628, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ + { 42660, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ + { 42682, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ + { 42708, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */ + { 42734, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ + { 42762, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ + { 42794, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ + { 42826, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */ + { 42855, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ + { 42888, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ + { 42920, 0x00040000 }, /* GL_TEXTURE_BIT */ + { 42935, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ + { 42956, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ + { 42981, 0x00001005 }, /* GL_TEXTURE_BORDER */ + { 42999, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ + { 43023, 0x00008C2A }, /* GL_TEXTURE_BUFFER */ + { 43041, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + { 43078, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */ + { 43103, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + { 43134, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + { 43164, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + { 43194, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + { 43229, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + { 43260, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 43298, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ + { 43325, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + { 43357, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + { 43391, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ + { 43415, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ + { 43443, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ + { 43467, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ + { 43495, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + { 43528, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ + { 43552, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ + { 43574, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ + { 43596, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ + { 43622, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ + { 43656, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + { 43689, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ + { 43726, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ + { 43754, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ + { 43786, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ + { 43809, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + { 43847, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ + { 43889, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + { 43920, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + { 43948, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + { 43978, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + { 44006, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ + { 44031, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ + { 44051, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ + { 44075, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + { 44106, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ + { 44141, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ + { 44176, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + { 44207, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ + { 44242, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ + { 44277, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + { 44308, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ + { 44343, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ + { 44378, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ + { 44402, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + { 44433, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ + { 44468, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ + { 44503, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + { 44534, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ + { 44569, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ + { 44604, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + { 44635, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ + { 44670, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ + { 44705, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + { 44734, 0x00008071 }, /* GL_TEXTURE_DEPTH */ + { 44751, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ + { 44773, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ + { 44799, 0x00002300 }, /* GL_TEXTURE_ENV */ + { 44814, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ + { 44835, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ + { 44855, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ + { 44881, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ + { 44911, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ + { 44931, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ + { 44955, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ + { 44972, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ + { 44989, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ + { 45006, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ + { 45029, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ + { 45046, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ + { 45071, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ + { 45093, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ + { 45119, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ + { 45137, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ + { 45163, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ + { 45189, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ + { 45219, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ + { 45246, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ + { 45271, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ + { 45291, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ + { 45315, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + { 45342, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + { 45369, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + { 45396, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ + { 45422, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ + { 45452, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ + { 45474, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ + { 45492, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 45532, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + { 45562, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + { 45590, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + { 45618, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + { 45646, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ + { 45667, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ + { 45686, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ + { 45708, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ + { 45727, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ + { 45747, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + { 45777, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + { 45808, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */ + { 45829, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ + { 45854, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ + { 45878, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ + { 45898, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ + { 45922, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ + { 45942, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */ + { 45965, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ + { 45988, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ + { 46012, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ + { 46040, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + { 46070, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ + { 46095, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + { 46129, 0x00001000 }, /* GL_TEXTURE_WIDTH */ + { 46146, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ + { 46164, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ + { 46186, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ + { 46204, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ + { 46222, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ + { 46241, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ + { 46261, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ + { 46280, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + { 46309, 0x00001000 }, /* GL_TRANSFORM_BIT */ + { 46326, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ + { 46348, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ + { 46378, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + { 46407, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + { 46443, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + { 46480, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ + { 46521, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ + { 46554, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + { 46588, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ + { 46626, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + { 46662, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + { 46696, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ + { 46734, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + { 46769, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ + { 46808, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + { 46849, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ + { 46894, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + { 46925, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ + { 46960, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + { 47001, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ + { 47046, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ + { 47072, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ + { 47102, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + { 47134, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + { 47164, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ + { 47198, 0x0000862C }, /* GL_TRANSPOSE_NV */ + { 47214, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + { 47245, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ + { 47280, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + { 47308, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ + { 47340, 0x00000004 }, /* GL_TRIANGLES */ + { 47353, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */ + { 47376, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ + { 47403, 0x00000006 }, /* GL_TRIANGLE_FAN */ + { 47419, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ + { 47440, 0x00000005 }, /* GL_TRIANGLE_STRIP */ + { 47458, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */ + { 47486, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ + { 47518, 0x00000001 }, /* GL_TRUE */ + { 47526, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ + { 47545, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ + { 47565, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ + { 47588, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ + { 47608, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ + { 47629, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ + { 47651, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ + { 47673, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ + { 47693, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ + { 47714, 0x00009118 }, /* GL_UNSIGNALED */ + { 47728, 0x00001401 }, /* GL_UNSIGNED_BYTE */ + { 47745, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + { 47772, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ + { 47795, 0x00001405 }, /* GL_UNSIGNED_INT */ + { 47811, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + { 47843, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ + { 47870, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + { 47901, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ + { 47922, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ + { 47947, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ + { 47971, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ + { 47996, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + { 48027, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ + { 48062, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + { 48090, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ + { 48114, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + { 48142, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */ + { 48169, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + { 48202, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ + { 48239, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ + { 48270, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */ + { 48297, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + { 48330, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ + { 48367, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ + { 48398, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + { 48430, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ + { 48466, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */ + { 48493, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ + { 48524, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + { 48555, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ + { 48590, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + { 48619, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ + { 48652, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */ + { 48673, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */ + { 48698, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */ + { 48719, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */ + { 48744, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */ + { 48765, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */ + { 48790, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ + { 48813, 0x00001403 }, /* GL_UNSIGNED_SHORT */ + { 48831, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + { 48861, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ + { 48895, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + { 48921, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + { 48951, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ + { 48985, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + { 49011, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ + { 49035, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + { 49063, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + { 49091, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ + { 49118, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + { 49150, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ + { 49181, 0x00008CA2 }, /* GL_UPPER_LEFT */ + { 49195, 0x00002A20 }, /* GL_V2F */ + { 49202, 0x00002A21 }, /* GL_V3F */ + { 49209, 0x00008B83 }, /* GL_VALIDATE_STATUS */ + { 49228, 0x00001F00 }, /* GL_VENDOR */ + { 49238, 0x00001F02 }, /* GL_VERSION */ + { 49249, 0x00008074 }, /* GL_VERTEX_ARRAY */ + { 49265, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ + { 49289, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ + { 49319, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + { 49350, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ + { 49385, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ + { 49409, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ + { 49430, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ + { 49453, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ + { 49474, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + { 49501, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + { 49529, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + { 49557, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + { 49585, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + { 49613, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + { 49641, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + { 49669, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + { 49696, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + { 49723, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + { 49750, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + { 49777, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + { 49804, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + { 49831, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + { 49858, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + { 49885, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + { 49912, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + { 49950, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ + { 49992, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + { 50023, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ + { 50058, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + { 50089, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ + { 50124, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + { 50158, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ + { 50196, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + { 50227, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ + { 50262, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + { 50290, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ + { 50322, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + { 50352, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ + { 50386, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + { 50414, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ + { 50446, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ + { 50466, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ + { 50488, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ + { 50517, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ + { 50538, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ + { 50567, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ + { 50600, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ + { 50632, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + { 50659, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ + { 50690, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ + { 50720, 0x00008B31 }, /* GL_VERTEX_SHADER */ + { 50737, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ + { 50758, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ + { 50785, 0x00000BA2 }, /* GL_VIEWPORT */ + { 50797, 0x00000800 }, /* GL_VIEWPORT_BIT */ + { 50813, 0x00008A1A }, /* GL_VOLATILE_APPLE */ + { 50831, 0x0000911D }, /* GL_WAIT_FAILED */ + { 50846, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ + { 50866, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + { 50897, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ + { 50932, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ + { 50967, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ + { 50987, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + { 51015, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ + { 51043, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + { 51068, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ + { 51093, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + { 51120, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ + { 51147, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + { 51172, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ + { 51197, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ + { 51221, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ + { 51240, 0x000088B9 }, /* GL_WRITE_ONLY */ + { 51254, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ + { 51272, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ + { 51290, 0x00001506 }, /* GL_XOR */ + { 51297, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ + { 51316, 0x00008757 }, /* GL_YCBCR_MESA */ + { 51330, 0x00000000 }, /* GL_ZERO */ + { 51338, 0x00000D16 }, /* GL_ZOOM_X */ + { 51348, 0x00000D17 }, /* GL_ZOOM_Y */ }; -static const unsigned reduced_enums[1425] = +static const unsigned reduced_enums[1551] = { - 500, /* GL_FALSE */ - 760, /* GL_LINES */ - 763, /* GL_LINE_LOOP */ - 770, /* GL_LINE_STRIP */ - 1936, /* GL_TRIANGLES */ - 1940, /* GL_TRIANGLE_STRIP */ - 1938, /* GL_TRIANGLE_FAN */ - 1395, /* GL_QUADS */ - 1399, /* GL_QUAD_STRIP */ - 1273, /* GL_POLYGON */ - 761, /* GL_LINES_ADJACENCY_ARB */ - 771, /* GL_LINE_STRIP_ADJACENCY_ARB */ - 1937, /* GL_TRIANGLES_ADJACENCY_ARB */ - 1941, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ - 1285, /* GL_POLYGON_STIPPLE_BIT */ - 1228, /* GL_PIXEL_MODE_BIT */ - 747, /* GL_LIGHTING_BIT */ - 532, /* GL_FOG_BIT */ + 535, /* GL_FALSE */ + 827, /* GL_LINES */ + 831, /* GL_LINE_LOOP */ + 838, /* GL_LINE_STRIP */ + 2135, /* GL_TRIANGLES */ + 2140, /* GL_TRIANGLE_STRIP */ + 2138, /* GL_TRIANGLE_FAN */ + 1507, /* GL_QUADS */ + 1511, /* GL_QUAD_STRIP */ + 1378, /* GL_POLYGON */ + 828, /* GL_LINES_ADJACENCY */ + 839, /* GL_LINE_STRIP_ADJACENCY */ + 2136, /* GL_TRIANGLES_ADJACENCY */ + 2141, /* GL_TRIANGLE_STRIP_ADJACENCY */ + 1390, /* GL_POLYGON_STIPPLE_BIT */ + 1333, /* GL_PIXEL_MODE_BIT */ + 814, /* GL_LIGHTING_BIT */ + 568, /* GL_FOG_BIT */ 8, /* GL_ACCUM */ - 781, /* GL_LOAD */ - 1473, /* GL_RETURN */ - 1096, /* GL_MULT */ - 23, /* GL_ADD */ - 1112, /* GL_NEVER */ - 737, /* GL_LESS */ - 490, /* GL_EQUAL */ - 736, /* GL_LEQUAL */ - 649, /* GL_GREATER */ - 1129, /* GL_NOTEQUAL */ - 648, /* GL_GEQUAL */ - 47, /* GL_ALWAYS */ - 1624, /* GL_SRC_COLOR */ - 1161, /* GL_ONE_MINUS_SRC_COLOR */ - 1622, /* GL_SRC_ALPHA */ - 1160, /* GL_ONE_MINUS_SRC_ALPHA */ - 469, /* GL_DST_ALPHA */ - 1158, /* GL_ONE_MINUS_DST_ALPHA */ - 470, /* GL_DST_COLOR */ - 1159, /* GL_ONE_MINUS_DST_COLOR */ - 1623, /* GL_SRC_ALPHA_SATURATE */ - 629, /* GL_FRONT_LEFT */ - 630, /* GL_FRONT_RIGHT */ - 69, /* GL_BACK_LEFT */ - 70, /* GL_BACK_RIGHT */ - 626, /* GL_FRONT */ - 68, /* GL_BACK */ - 735, /* GL_LEFT */ - 1521, /* GL_RIGHT */ - 627, /* GL_FRONT_AND_BACK */ - 63, /* GL_AUX0 */ - 64, /* GL_AUX1 */ - 65, /* GL_AUX2 */ - 66, /* GL_AUX3 */ - 723, /* GL_INVALID_ENUM */ - 728, /* GL_INVALID_VALUE */ - 727, /* GL_INVALID_OPERATION */ - 1629, /* GL_STACK_OVERFLOW */ - 1630, /* GL_STACK_UNDERFLOW */ - 1186, /* GL_OUT_OF_MEMORY */ - 724, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + 850, /* GL_LOAD */ + 1596, /* GL_RETURN */ + 1200, /* GL_MULT */ + 24, /* GL_ADD */ + 1216, /* GL_NEVER */ + 804, /* GL_LESS */ + 525, /* GL_EQUAL */ + 803, /* GL_LEQUAL */ + 691, /* GL_GREATER */ + 1233, /* GL_NOTEQUAL */ + 690, /* GL_GEQUAL */ + 55, /* GL_ALWAYS */ + 1803, /* GL_SRC_COLOR */ + 1266, /* GL_ONE_MINUS_SRC_COLOR */ + 1801, /* GL_SRC_ALPHA */ + 1265, /* GL_ONE_MINUS_SRC_ALPHA */ + 504, /* GL_DST_ALPHA */ + 1263, /* GL_ONE_MINUS_DST_ALPHA */ + 505, /* GL_DST_COLOR */ + 1264, /* GL_ONE_MINUS_DST_COLOR */ + 1802, /* GL_SRC_ALPHA_SATURATE */ + 667, /* GL_FRONT_LEFT */ + 668, /* GL_FRONT_RIGHT */ + 77, /* GL_BACK_LEFT */ + 78, /* GL_BACK_RIGHT */ + 664, /* GL_FRONT */ + 76, /* GL_BACK */ + 802, /* GL_LEFT */ + 1685, /* GL_RIGHT */ + 665, /* GL_FRONT_AND_BACK */ + 71, /* GL_AUX0 */ + 72, /* GL_AUX1 */ + 73, /* GL_AUX2 */ + 74, /* GL_AUX3 */ + 790, /* GL_INVALID_ENUM */ + 795, /* GL_INVALID_VALUE */ + 794, /* GL_INVALID_OPERATION */ + 1808, /* GL_STACK_OVERFLOW */ + 1809, /* GL_STACK_UNDERFLOW */ + 1291, /* GL_OUT_OF_MEMORY */ + 791, /* GL_INVALID_FRAMEBUFFER_OPERATION */ 0, /* GL_2D */ 2, /* GL_3D */ 3, /* GL_3D_COLOR */ 4, /* GL_3D_COLOR_TEXTURE */ 6, /* GL_4D_COLOR_TEXTURE */ - 1206, /* GL_PASS_THROUGH_TOKEN */ - 1272, /* GL_POINT_TOKEN */ - 772, /* GL_LINE_TOKEN */ - 1286, /* GL_POLYGON_TOKEN */ - 75, /* GL_BITMAP_TOKEN */ - 468, /* GL_DRAW_PIXEL_TOKEN */ - 315, /* GL_COPY_PIXEL_TOKEN */ - 764, /* GL_LINE_RESET_TOKEN */ - 493, /* GL_EXP */ - 494, /* GL_EXP2 */ - 352, /* GL_CW */ - 137, /* GL_CCW */ - 158, /* GL_COEFF */ - 1183, /* GL_ORDER */ - 405, /* GL_DOMAIN */ - 325, /* GL_CURRENT_COLOR */ - 328, /* GL_CURRENT_INDEX */ - 334, /* GL_CURRENT_NORMAL */ - 348, /* GL_CURRENT_TEXTURE_COORDS */ - 340, /* GL_CURRENT_RASTER_COLOR */ - 342, /* GL_CURRENT_RASTER_INDEX */ - 346, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - 343, /* GL_CURRENT_RASTER_POSITION */ - 344, /* GL_CURRENT_RASTER_POSITION_VALID */ - 341, /* GL_CURRENT_RASTER_DISTANCE */ - 1264, /* GL_POINT_SMOOTH */ - 1248, /* GL_POINT_SIZE */ - 1263, /* GL_POINT_SIZE_RANGE */ - 1254, /* GL_POINT_SIZE_GRANULARITY */ - 765, /* GL_LINE_SMOOTH */ - 773, /* GL_LINE_WIDTH */ - 775, /* GL_LINE_WIDTH_RANGE */ - 774, /* GL_LINE_WIDTH_GRANULARITY */ - 767, /* GL_LINE_STIPPLE */ - 768, /* GL_LINE_STIPPLE_PATTERN */ - 769, /* GL_LINE_STIPPLE_REPEAT */ - 780, /* GL_LIST_MODE */ - 963, /* GL_MAX_LIST_NESTING */ - 777, /* GL_LIST_BASE */ - 779, /* GL_LIST_INDEX */ - 1275, /* GL_POLYGON_MODE */ - 1282, /* GL_POLYGON_SMOOTH */ - 1284, /* GL_POLYGON_STIPPLE */ - 479, /* GL_EDGE_FLAG */ - 318, /* GL_CULL_FACE */ - 319, /* GL_CULL_FACE_MODE */ - 628, /* GL_FRONT_FACE */ - 746, /* GL_LIGHTING */ - 751, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - 752, /* GL_LIGHT_MODEL_TWO_SIDE */ - 748, /* GL_LIGHT_MODEL_AMBIENT */ - 1571, /* GL_SHADE_MODEL */ - 206, /* GL_COLOR_MATERIAL_FACE */ - 207, /* GL_COLOR_MATERIAL_PARAMETER */ - 205, /* GL_COLOR_MATERIAL */ - 531, /* GL_FOG */ - 553, /* GL_FOG_INDEX */ - 549, /* GL_FOG_DENSITY */ - 557, /* GL_FOG_START */ - 551, /* GL_FOG_END */ - 554, /* GL_FOG_MODE */ - 533, /* GL_FOG_COLOR */ - 390, /* GL_DEPTH_RANGE */ - 399, /* GL_DEPTH_TEST */ - 402, /* GL_DEPTH_WRITEMASK */ - 375, /* GL_DEPTH_CLEAR_VALUE */ - 389, /* GL_DEPTH_FUNC */ + 1311, /* GL_PASS_THROUGH_TOKEN */ + 1377, /* GL_POINT_TOKEN */ + 841, /* GL_LINE_TOKEN */ + 1391, /* GL_POLYGON_TOKEN */ + 87, /* GL_BITMAP_TOKEN */ + 503, /* GL_DRAW_PIXEL_TOKEN */ + 349, /* GL_COPY_PIXEL_TOKEN */ + 832, /* GL_LINE_RESET_TOKEN */ + 528, /* GL_EXP */ + 529, /* GL_EXP2 */ + 386, /* GL_CW */ + 154, /* GL_CCW */ + 184, /* GL_COEFF */ + 1288, /* GL_ORDER */ + 440, /* GL_DOMAIN */ + 359, /* GL_CURRENT_COLOR */ + 362, /* GL_CURRENT_INDEX */ + 368, /* GL_CURRENT_NORMAL */ + 382, /* GL_CURRENT_TEXTURE_COORDS */ + 374, /* GL_CURRENT_RASTER_COLOR */ + 376, /* GL_CURRENT_RASTER_INDEX */ + 380, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + 377, /* GL_CURRENT_RASTER_POSITION */ + 378, /* GL_CURRENT_RASTER_POSITION_VALID */ + 375, /* GL_CURRENT_RASTER_DISTANCE */ + 1369, /* GL_POINT_SMOOTH */ + 1353, /* GL_POINT_SIZE */ + 1368, /* GL_POINT_SIZE_RANGE */ + 1359, /* GL_POINT_SIZE_GRANULARITY */ + 833, /* GL_LINE_SMOOTH */ + 842, /* GL_LINE_WIDTH */ + 844, /* GL_LINE_WIDTH_RANGE */ + 843, /* GL_LINE_WIDTH_GRANULARITY */ + 835, /* GL_LINE_STIPPLE */ + 836, /* GL_LINE_STIPPLE_PATTERN */ + 837, /* GL_LINE_STIPPLE_REPEAT */ + 849, /* GL_LIST_MODE */ + 1056, /* GL_MAX_LIST_NESTING */ + 846, /* GL_LIST_BASE */ + 848, /* GL_LIST_INDEX */ + 1380, /* GL_POLYGON_MODE */ + 1387, /* GL_POLYGON_SMOOTH */ + 1389, /* GL_POLYGON_STIPPLE */ + 514, /* GL_EDGE_FLAG */ + 352, /* GL_CULL_FACE */ + 353, /* GL_CULL_FACE_MODE */ + 666, /* GL_FRONT_FACE */ + 813, /* GL_LIGHTING */ + 818, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + 819, /* GL_LIGHT_MODEL_TWO_SIDE */ + 815, /* GL_LIGHT_MODEL_AMBIENT */ + 1750, /* GL_SHADE_MODEL */ + 232, /* GL_COLOR_MATERIAL_FACE */ + 233, /* GL_COLOR_MATERIAL_PARAMETER */ + 231, /* GL_COLOR_MATERIAL */ + 567, /* GL_FOG */ + 589, /* GL_FOG_INDEX */ + 585, /* GL_FOG_DENSITY */ + 593, /* GL_FOG_START */ + 587, /* GL_FOG_END */ + 590, /* GL_FOG_MODE */ + 569, /* GL_FOG_COLOR */ + 425, /* GL_DEPTH_RANGE */ + 434, /* GL_DEPTH_TEST */ + 437, /* GL_DEPTH_WRITEMASK */ + 410, /* GL_DEPTH_CLEAR_VALUE */ + 424, /* GL_DEPTH_FUNC */ 12, /* GL_ACCUM_CLEAR_VALUE */ - 1673, /* GL_STENCIL_TEST */ - 1654, /* GL_STENCIL_CLEAR_VALUE */ - 1656, /* GL_STENCIL_FUNC */ - 1675, /* GL_STENCIL_VALUE_MASK */ - 1655, /* GL_STENCIL_FAIL */ - 1670, /* GL_STENCIL_PASS_DEPTH_FAIL */ - 1671, /* GL_STENCIL_PASS_DEPTH_PASS */ - 1672, /* GL_STENCIL_REF */ - 1676, /* GL_STENCIL_WRITEMASK */ - 922, /* GL_MATRIX_MODE */ - 1118, /* GL_NORMALIZE */ - 2039, /* GL_VIEWPORT */ - 1091, /* GL_MODELVIEW_STACK_DEPTH */ - 1372, /* GL_PROJECTION_STACK_DEPTH */ - 1898, /* GL_TEXTURE_STACK_DEPTH */ - 1088, /* GL_MODELVIEW_MATRIX */ - 1370, /* GL_PROJECTION_MATRIX */ - 1880, /* GL_TEXTURE_MATRIX */ - 61, /* GL_ATTRIB_STACK_DEPTH */ - 148, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ - 43, /* GL_ALPHA_TEST */ - 44, /* GL_ALPHA_TEST_FUNC */ - 45, /* GL_ALPHA_TEST_REF */ - 404, /* GL_DITHER */ - 79, /* GL_BLEND_DST */ - 93, /* GL_BLEND_SRC */ - 76, /* GL_BLEND */ - 783, /* GL_LOGIC_OP_MODE */ - 695, /* GL_INDEX_LOGIC_OP */ - 204, /* GL_COLOR_LOGIC_OP */ - 67, /* GL_AUX_BUFFERS */ - 415, /* GL_DRAW_BUFFER */ - 1414, /* GL_READ_BUFFER */ - 1549, /* GL_SCISSOR_BOX */ - 1550, /* GL_SCISSOR_TEST */ - 694, /* GL_INDEX_CLEAR_VALUE */ - 699, /* GL_INDEX_WRITEMASK */ - 201, /* GL_COLOR_CLEAR_VALUE */ - 243, /* GL_COLOR_WRITEMASK */ - 696, /* GL_INDEX_MODE */ - 1514, /* GL_RGBA_MODE */ - 414, /* GL_DOUBLEBUFFER */ - 1677, /* GL_STEREO */ - 1465, /* GL_RENDER_MODE */ - 1207, /* GL_PERSPECTIVE_CORRECTION_HINT */ - 1265, /* GL_POINT_SMOOTH_HINT */ - 766, /* GL_LINE_SMOOTH_HINT */ - 1283, /* GL_POLYGON_SMOOTH_HINT */ - 552, /* GL_FOG_HINT */ - 1860, /* GL_TEXTURE_GEN_S */ - 1862, /* GL_TEXTURE_GEN_T */ - 1859, /* GL_TEXTURE_GEN_R */ - 1858, /* GL_TEXTURE_GEN_Q */ - 1220, /* GL_PIXEL_MAP_I_TO_I */ - 1226, /* GL_PIXEL_MAP_S_TO_S */ - 1222, /* GL_PIXEL_MAP_I_TO_R */ - 1218, /* GL_PIXEL_MAP_I_TO_G */ - 1216, /* GL_PIXEL_MAP_I_TO_B */ - 1214, /* GL_PIXEL_MAP_I_TO_A */ - 1224, /* GL_PIXEL_MAP_R_TO_R */ - 1212, /* GL_PIXEL_MAP_G_TO_G */ - 1210, /* GL_PIXEL_MAP_B_TO_B */ - 1208, /* GL_PIXEL_MAP_A_TO_A */ - 1221, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - 1227, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - 1223, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - 1219, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - 1217, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - 1215, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - 1225, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - 1213, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - 1211, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - 1209, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - 1951, /* GL_UNPACK_SWAP_BYTES */ - 1946, /* GL_UNPACK_LSB_FIRST */ - 1947, /* GL_UNPACK_ROW_LENGTH */ - 1950, /* GL_UNPACK_SKIP_ROWS */ - 1949, /* GL_UNPACK_SKIP_PIXELS */ - 1944, /* GL_UNPACK_ALIGNMENT */ - 1195, /* GL_PACK_SWAP_BYTES */ - 1190, /* GL_PACK_LSB_FIRST */ - 1191, /* GL_PACK_ROW_LENGTH */ - 1194, /* GL_PACK_SKIP_ROWS */ - 1193, /* GL_PACK_SKIP_PIXELS */ - 1187, /* GL_PACK_ALIGNMENT */ - 863, /* GL_MAP_COLOR */ - 868, /* GL_MAP_STENCIL */ - 698, /* GL_INDEX_SHIFT */ - 697, /* GL_INDEX_OFFSET */ - 1428, /* GL_RED_SCALE */ - 1426, /* GL_RED_BIAS */ - 2065, /* GL_ZOOM_X */ - 2066, /* GL_ZOOM_Y */ - 653, /* GL_GREEN_SCALE */ - 651, /* GL_GREEN_BIAS */ - 101, /* GL_BLUE_SCALE */ - 99, /* GL_BLUE_BIAS */ - 42, /* GL_ALPHA_SCALE */ - 40, /* GL_ALPHA_BIAS */ - 391, /* GL_DEPTH_SCALE */ - 368, /* GL_DEPTH_BIAS */ - 952, /* GL_MAX_EVAL_ORDER */ - 962, /* GL_MAX_LIGHTS */ - 933, /* GL_MAX_CLIP_PLANES */ - 1013, /* GL_MAX_TEXTURE_SIZE */ - 969, /* GL_MAX_PIXEL_MAP_TABLE */ - 929, /* GL_MAX_ATTRIB_STACK_DEPTH */ - 965, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - 966, /* GL_MAX_NAME_STACK_DEPTH */ - 995, /* GL_MAX_PROJECTION_STACK_DEPTH */ - 1014, /* GL_MAX_TEXTURE_STACK_DEPTH */ - 1036, /* GL_MAX_VIEWPORT_DIMS */ - 930, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - 1687, /* GL_SUBPIXEL_BITS */ - 693, /* GL_INDEX_BITS */ - 1427, /* GL_RED_BITS */ - 652, /* GL_GREEN_BITS */ - 100, /* GL_BLUE_BITS */ - 41, /* GL_ALPHA_BITS */ - 369, /* GL_DEPTH_BITS */ - 1652, /* GL_STENCIL_BITS */ + 1853, /* GL_STENCIL_TEST */ + 1834, /* GL_STENCIL_CLEAR_VALUE */ + 1836, /* GL_STENCIL_FUNC */ + 1855, /* GL_STENCIL_VALUE_MASK */ + 1835, /* GL_STENCIL_FAIL */ + 1850, /* GL_STENCIL_PASS_DEPTH_FAIL */ + 1851, /* GL_STENCIL_PASS_DEPTH_PASS */ + 1852, /* GL_STENCIL_REF */ + 1856, /* GL_STENCIL_WRITEMASK */ + 1006, /* GL_MATRIX_MODE */ + 1222, /* GL_NORMALIZE */ + 2266, /* GL_VIEWPORT */ + 1195, /* GL_MODELVIEW_STACK_DEPTH */ + 1481, /* GL_PROJECTION_STACK_DEPTH */ + 2089, /* GL_TEXTURE_STACK_DEPTH */ + 1192, /* GL_MODELVIEW_MATRIX */ + 1479, /* GL_PROJECTION_MATRIX */ + 2069, /* GL_TEXTURE_MATRIX */ + 69, /* GL_ATTRIB_STACK_DEPTH */ + 166, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ + 51, /* GL_ALPHA_TEST */ + 52, /* GL_ALPHA_TEST_FUNC */ + 53, /* GL_ALPHA_TEST_REF */ + 439, /* GL_DITHER */ + 91, /* GL_BLEND_DST */ + 105, /* GL_BLEND_SRC */ + 88, /* GL_BLEND */ + 852, /* GL_LOGIC_OP_MODE */ + 739, /* GL_INDEX_LOGIC_OP */ + 230, /* GL_COLOR_LOGIC_OP */ + 75, /* GL_AUX_BUFFERS */ + 450, /* GL_DRAW_BUFFER */ + 1534, /* GL_READ_BUFFER */ + 1727, /* GL_SCISSOR_BOX */ + 1728, /* GL_SCISSOR_TEST */ + 738, /* GL_INDEX_CLEAR_VALUE */ + 743, /* GL_INDEX_WRITEMASK */ + 227, /* GL_COLOR_CLEAR_VALUE */ + 269, /* GL_COLOR_WRITEMASK */ + 740, /* GL_INDEX_MODE */ + 1674, /* GL_RGBA_MODE */ + 449, /* GL_DOUBLEBUFFER */ + 1857, /* GL_STEREO */ + 1588, /* GL_RENDER_MODE */ + 1312, /* GL_PERSPECTIVE_CORRECTION_HINT */ + 1370, /* GL_POINT_SMOOTH_HINT */ + 834, /* GL_LINE_SMOOTH_HINT */ + 1388, /* GL_POLYGON_SMOOTH_HINT */ + 588, /* GL_FOG_HINT */ + 2049, /* GL_TEXTURE_GEN_S */ + 2051, /* GL_TEXTURE_GEN_T */ + 2048, /* GL_TEXTURE_GEN_R */ + 2047, /* GL_TEXTURE_GEN_Q */ + 1325, /* GL_PIXEL_MAP_I_TO_I */ + 1331, /* GL_PIXEL_MAP_S_TO_S */ + 1327, /* GL_PIXEL_MAP_I_TO_R */ + 1323, /* GL_PIXEL_MAP_I_TO_G */ + 1321, /* GL_PIXEL_MAP_I_TO_B */ + 1319, /* GL_PIXEL_MAP_I_TO_A */ + 1329, /* GL_PIXEL_MAP_R_TO_R */ + 1317, /* GL_PIXEL_MAP_G_TO_G */ + 1315, /* GL_PIXEL_MAP_B_TO_B */ + 1313, /* GL_PIXEL_MAP_A_TO_A */ + 1326, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + 1332, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + 1328, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + 1324, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + 1322, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + 1320, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + 1330, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + 1318, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + 1316, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + 1314, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + 2152, /* GL_UNPACK_SWAP_BYTES */ + 2147, /* GL_UNPACK_LSB_FIRST */ + 2148, /* GL_UNPACK_ROW_LENGTH */ + 2151, /* GL_UNPACK_SKIP_ROWS */ + 2150, /* GL_UNPACK_SKIP_PIXELS */ + 2145, /* GL_UNPACK_ALIGNMENT */ + 1300, /* GL_PACK_SWAP_BYTES */ + 1295, /* GL_PACK_LSB_FIRST */ + 1296, /* GL_PACK_ROW_LENGTH */ + 1299, /* GL_PACK_SKIP_ROWS */ + 1298, /* GL_PACK_SKIP_PIXELS */ + 1292, /* GL_PACK_ALIGNMENT */ + 947, /* GL_MAP_COLOR */ + 952, /* GL_MAP_STENCIL */ + 742, /* GL_INDEX_SHIFT */ + 741, /* GL_INDEX_OFFSET */ + 1550, /* GL_RED_SCALE */ + 1546, /* GL_RED_BIAS */ + 2292, /* GL_ZOOM_X */ + 2293, /* GL_ZOOM_Y */ + 697, /* GL_GREEN_SCALE */ + 693, /* GL_GREEN_BIAS */ + 115, /* GL_BLUE_SCALE */ + 111, /* GL_BLUE_BIAS */ + 50, /* GL_ALPHA_SCALE */ + 47, /* GL_ALPHA_BIAS */ + 426, /* GL_DEPTH_SCALE */ + 402, /* GL_DEPTH_BIAS */ + 1038, /* GL_MAX_EVAL_ORDER */ + 1055, /* GL_MAX_LIGHTS */ + 1018, /* GL_MAX_CLIP_DISTANCES */ + 1110, /* GL_MAX_TEXTURE_SIZE */ + 1062, /* GL_MAX_PIXEL_MAP_TABLE */ + 1014, /* GL_MAX_ATTRIB_STACK_DEPTH */ + 1058, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + 1059, /* GL_MAX_NAME_STACK_DEPTH */ + 1090, /* GL_MAX_PROJECTION_STACK_DEPTH */ + 1111, /* GL_MAX_TEXTURE_STACK_DEPTH */ + 1137, /* GL_MAX_VIEWPORT_DIMS */ + 1015, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + 1867, /* GL_SUBPIXEL_BITS */ + 737, /* GL_INDEX_BITS */ + 1547, /* GL_RED_BITS */ + 694, /* GL_GREEN_BITS */ + 112, /* GL_BLUE_BITS */ + 48, /* GL_ALPHA_BITS */ + 403, /* GL_DEPTH_BITS */ + 1831, /* GL_STENCIL_BITS */ 14, /* GL_ACCUM_RED_BITS */ 13, /* GL_ACCUM_GREEN_BITS */ 10, /* GL_ACCUM_BLUE_BITS */ 9, /* GL_ACCUM_ALPHA_BITS */ - 1105, /* GL_NAME_STACK_DEPTH */ - 62, /* GL_AUTO_NORMAL */ - 809, /* GL_MAP1_COLOR_4 */ - 812, /* GL_MAP1_INDEX */ - 813, /* GL_MAP1_NORMAL */ - 814, /* GL_MAP1_TEXTURE_COORD_1 */ - 815, /* GL_MAP1_TEXTURE_COORD_2 */ - 816, /* GL_MAP1_TEXTURE_COORD_3 */ - 817, /* GL_MAP1_TEXTURE_COORD_4 */ - 818, /* GL_MAP1_VERTEX_3 */ - 819, /* GL_MAP1_VERTEX_4 */ - 836, /* GL_MAP2_COLOR_4 */ - 839, /* GL_MAP2_INDEX */ - 840, /* GL_MAP2_NORMAL */ - 841, /* GL_MAP2_TEXTURE_COORD_1 */ - 842, /* GL_MAP2_TEXTURE_COORD_2 */ - 843, /* GL_MAP2_TEXTURE_COORD_3 */ - 844, /* GL_MAP2_TEXTURE_COORD_4 */ - 845, /* GL_MAP2_VERTEX_3 */ - 846, /* GL_MAP2_VERTEX_4 */ - 810, /* GL_MAP1_GRID_DOMAIN */ - 811, /* GL_MAP1_GRID_SEGMENTS */ - 837, /* GL_MAP2_GRID_DOMAIN */ - 838, /* GL_MAP2_GRID_SEGMENTS */ - 1770, /* GL_TEXTURE_1D */ - 1772, /* GL_TEXTURE_2D */ - 503, /* GL_FEEDBACK_BUFFER_POINTER */ - 504, /* GL_FEEDBACK_BUFFER_SIZE */ - 505, /* GL_FEEDBACK_BUFFER_TYPE */ - 1559, /* GL_SELECTION_BUFFER_POINTER */ - 1560, /* GL_SELECTION_BUFFER_SIZE */ - 1904, /* GL_TEXTURE_WIDTH */ - 1866, /* GL_TEXTURE_HEIGHT */ - 1810, /* GL_TEXTURE_COMPONENTS */ - 1794, /* GL_TEXTURE_BORDER_COLOR */ - 1793, /* GL_TEXTURE_BORDER */ - 406, /* GL_DONT_CARE */ - 501, /* GL_FASTEST */ - 1113, /* GL_NICEST */ - 48, /* GL_AMBIENT */ - 403, /* GL_DIFFUSE */ - 1611, /* GL_SPECULAR */ - 1287, /* GL_POSITION */ - 1614, /* GL_SPOT_DIRECTION */ - 1615, /* GL_SPOT_EXPONENT */ - 1613, /* GL_SPOT_CUTOFF */ - 288, /* GL_CONSTANT_ATTENUATION */ - 755, /* GL_LINEAR_ATTENUATION */ - 1394, /* GL_QUADRATIC_ATTENUATION */ - 257, /* GL_COMPILE */ - 258, /* GL_COMPILE_AND_EXECUTE */ - 132, /* GL_BYTE */ - 1953, /* GL_UNSIGNED_BYTE */ - 1576, /* GL_SHORT */ - 1968, /* GL_UNSIGNED_SHORT */ - 701, /* GL_INT */ - 1956, /* GL_UNSIGNED_INT */ - 512, /* GL_FLOAT */ + 1209, /* GL_NAME_STACK_DEPTH */ + 70, /* GL_AUTO_NORMAL */ + 893, /* GL_MAP1_COLOR_4 */ + 896, /* GL_MAP1_INDEX */ + 897, /* GL_MAP1_NORMAL */ + 898, /* GL_MAP1_TEXTURE_COORD_1 */ + 899, /* GL_MAP1_TEXTURE_COORD_2 */ + 900, /* GL_MAP1_TEXTURE_COORD_3 */ + 901, /* GL_MAP1_TEXTURE_COORD_4 */ + 902, /* GL_MAP1_VERTEX_3 */ + 903, /* GL_MAP1_VERTEX_4 */ + 920, /* GL_MAP2_COLOR_4 */ + 923, /* GL_MAP2_INDEX */ + 924, /* GL_MAP2_NORMAL */ + 925, /* GL_MAP2_TEXTURE_COORD_1 */ + 926, /* GL_MAP2_TEXTURE_COORD_2 */ + 927, /* GL_MAP2_TEXTURE_COORD_3 */ + 928, /* GL_MAP2_TEXTURE_COORD_4 */ + 929, /* GL_MAP2_VERTEX_3 */ + 930, /* GL_MAP2_VERTEX_4 */ + 894, /* GL_MAP1_GRID_DOMAIN */ + 895, /* GL_MAP1_GRID_SEGMENTS */ + 921, /* GL_MAP2_GRID_DOMAIN */ + 922, /* GL_MAP2_GRID_SEGMENTS */ + 1950, /* GL_TEXTURE_1D */ + 1953, /* GL_TEXTURE_2D */ + 538, /* GL_FEEDBACK_BUFFER_POINTER */ + 539, /* GL_FEEDBACK_BUFFER_SIZE */ + 540, /* GL_FEEDBACK_BUFFER_TYPE */ + 1737, /* GL_SELECTION_BUFFER_POINTER */ + 1738, /* GL_SELECTION_BUFFER_SIZE */ + 2095, /* GL_TEXTURE_WIDTH */ + 2055, /* GL_TEXTURE_HEIGHT */ + 1999, /* GL_TEXTURE_COMPONENTS */ + 1980, /* GL_TEXTURE_BORDER_COLOR */ + 1979, /* GL_TEXTURE_BORDER */ + 441, /* GL_DONT_CARE */ + 536, /* GL_FASTEST */ + 1217, /* GL_NICEST */ + 56, /* GL_AMBIENT */ + 438, /* GL_DIFFUSE */ + 1790, /* GL_SPECULAR */ + 1392, /* GL_POSITION */ + 1793, /* GL_SPOT_DIRECTION */ + 1794, /* GL_SPOT_EXPONENT */ + 1792, /* GL_SPOT_CUTOFF */ + 317, /* GL_CONSTANT_ATTENUATION */ + 822, /* GL_LINEAR_ATTENUATION */ + 1506, /* GL_QUADRATIC_ATTENUATION */ + 284, /* GL_COMPILE */ + 285, /* GL_COMPILE_AND_EXECUTE */ + 149, /* GL_BYTE */ + 2154, /* GL_UNSIGNED_BYTE */ + 1755, /* GL_SHORT */ + 2193, /* GL_UNSIGNED_SHORT */ + 745, /* GL_INT */ + 2157, /* GL_UNSIGNED_INT */ + 548, /* GL_FLOAT */ 1, /* GL_2_BYTES */ 5, /* GL_3_BYTES */ 7, /* GL_4_BYTES */ - 413, /* GL_DOUBLE */ - 654, /* GL_HALF_FLOAT */ - 509, /* GL_FIXED */ - 144, /* GL_CLEAR */ - 50, /* GL_AND */ - 52, /* GL_AND_REVERSE */ - 313, /* GL_COPY */ - 51, /* GL_AND_INVERTED */ - 1116, /* GL_NOOP */ - 2061, /* GL_XOR */ - 1182, /* GL_OR */ - 1117, /* GL_NOR */ - 491, /* GL_EQUIV */ - 731, /* GL_INVERT */ - 1185, /* GL_OR_REVERSE */ - 314, /* GL_COPY_INVERTED */ - 1184, /* GL_OR_INVERTED */ - 1106, /* GL_NAND */ - 1565, /* GL_SET */ - 488, /* GL_EMISSION */ - 1575, /* GL_SHININESS */ - 49, /* GL_AMBIENT_AND_DIFFUSE */ - 203, /* GL_COLOR_INDEXES */ - 1055, /* GL_MODELVIEW */ - 1369, /* GL_PROJECTION */ - 1705, /* GL_TEXTURE */ - 159, /* GL_COLOR */ - 361, /* GL_DEPTH */ - 1637, /* GL_STENCIL */ - 202, /* GL_COLOR_INDEX */ - 1657, /* GL_STENCIL_INDEX */ - 376, /* GL_DEPTH_COMPONENT */ - 1423, /* GL_RED */ - 650, /* GL_GREEN */ - 98, /* GL_BLUE */ - 31, /* GL_ALPHA */ - 1474, /* GL_RGB */ - 1497, /* GL_RGBA */ - 787, /* GL_LUMINANCE */ - 808, /* GL_LUMINANCE_ALPHA */ - 74, /* GL_BITMAP */ - 1237, /* GL_POINT */ - 753, /* GL_LINE */ - 506, /* GL_FILL */ - 1434, /* GL_RENDER */ - 502, /* GL_FEEDBACK */ - 1558, /* GL_SELECT */ - 511, /* GL_FLAT */ - 1586, /* GL_SMOOTH */ - 732, /* GL_KEEP */ - 1467, /* GL_REPLACE */ - 683, /* GL_INCR */ - 357, /* GL_DECR */ - 1985, /* GL_VENDOR */ - 1464, /* GL_RENDERER */ - 1986, /* GL_VERSION */ - 495, /* GL_EXTENSIONS */ - 1522, /* GL_S */ - 1696, /* GL_T */ - 1410, /* GL_R */ - 1393, /* GL_Q */ - 1092, /* GL_MODULATE */ - 356, /* GL_DECAL */ - 1853, /* GL_TEXTURE_ENV_MODE */ - 1852, /* GL_TEXTURE_ENV_COLOR */ - 1851, /* GL_TEXTURE_ENV */ - 496, /* GL_EYE_LINEAR */ - 1143, /* GL_OBJECT_LINEAR */ - 1612, /* GL_SPHERE_MAP */ - 1856, /* GL_TEXTURE_GEN_MODE */ - 1145, /* GL_OBJECT_PLANE */ - 497, /* GL_EYE_PLANE */ - 1107, /* GL_NEAREST */ - 754, /* GL_LINEAR */ - 1111, /* GL_NEAREST_MIPMAP_NEAREST */ - 759, /* GL_LINEAR_MIPMAP_NEAREST */ - 1110, /* GL_NEAREST_MIPMAP_LINEAR */ - 758, /* GL_LINEAR_MIPMAP_LINEAR */ - 1879, /* GL_TEXTURE_MAG_FILTER */ - 1888, /* GL_TEXTURE_MIN_FILTER */ - 1907, /* GL_TEXTURE_WRAP_S */ - 1908, /* GL_TEXTURE_WRAP_T */ - 138, /* GL_CLAMP */ - 1466, /* GL_REPEAT */ - 1281, /* GL_POLYGON_OFFSET_UNITS */ - 1280, /* GL_POLYGON_OFFSET_POINT */ - 1279, /* GL_POLYGON_OFFSET_LINE */ - 1411, /* GL_R3_G3_B2 */ - 1982, /* GL_V2F */ - 1983, /* GL_V3F */ - 135, /* GL_C4UB_V2F */ - 136, /* GL_C4UB_V3F */ - 133, /* GL_C3F_V3F */ - 1104, /* GL_N3F_V3F */ - 134, /* GL_C4F_N3F_V3F */ - 1701, /* GL_T2F_V3F */ - 1703, /* GL_T4F_V4F */ - 1699, /* GL_T2F_C4UB_V3F */ - 1697, /* GL_T2F_C3F_V3F */ - 1700, /* GL_T2F_N3F_V3F */ - 1698, /* GL_T2F_C4F_N3F_V3F */ - 1702, /* GL_T4F_C4F_N3F_V4F */ - 151, /* GL_CLIP_PLANE0 */ - 152, /* GL_CLIP_PLANE1 */ - 153, /* GL_CLIP_PLANE2 */ - 154, /* GL_CLIP_PLANE3 */ - 155, /* GL_CLIP_PLANE4 */ - 156, /* GL_CLIP_PLANE5 */ - 738, /* GL_LIGHT0 */ - 739, /* GL_LIGHT1 */ - 740, /* GL_LIGHT2 */ - 741, /* GL_LIGHT3 */ - 742, /* GL_LIGHT4 */ - 743, /* GL_LIGHT5 */ - 744, /* GL_LIGHT6 */ - 745, /* GL_LIGHT7 */ - 658, /* GL_HINT_BIT */ - 290, /* GL_CONSTANT_COLOR */ - 1156, /* GL_ONE_MINUS_CONSTANT_COLOR */ - 285, /* GL_CONSTANT_ALPHA */ - 1154, /* GL_ONE_MINUS_CONSTANT_ALPHA */ - 77, /* GL_BLEND_COLOR */ - 631, /* GL_FUNC_ADD */ - 1039, /* GL_MIN */ - 925, /* GL_MAX */ - 84, /* GL_BLEND_EQUATION */ - 637, /* GL_FUNC_SUBTRACT */ - 634, /* GL_FUNC_REVERSE_SUBTRACT */ - 293, /* GL_CONVOLUTION_1D */ - 294, /* GL_CONVOLUTION_2D */ - 1561, /* GL_SEPARABLE_2D */ - 297, /* GL_CONVOLUTION_BORDER_MODE */ - 301, /* GL_CONVOLUTION_FILTER_SCALE */ - 299, /* GL_CONVOLUTION_FILTER_BIAS */ - 1424, /* GL_REDUCE */ - 303, /* GL_CONVOLUTION_FORMAT */ - 307, /* GL_CONVOLUTION_WIDTH */ - 305, /* GL_CONVOLUTION_HEIGHT */ - 942, /* GL_MAX_CONVOLUTION_WIDTH */ - 940, /* GL_MAX_CONVOLUTION_HEIGHT */ - 1320, /* GL_POST_CONVOLUTION_RED_SCALE */ - 1316, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - 1311, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - 1307, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - 1318, /* GL_POST_CONVOLUTION_RED_BIAS */ - 1314, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - 1309, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - 1305, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - 659, /* GL_HISTOGRAM */ - 1376, /* GL_PROXY_HISTOGRAM */ - 675, /* GL_HISTOGRAM_WIDTH */ - 665, /* GL_HISTOGRAM_FORMAT */ - 671, /* GL_HISTOGRAM_RED_SIZE */ - 667, /* GL_HISTOGRAM_GREEN_SIZE */ - 662, /* GL_HISTOGRAM_BLUE_SIZE */ - 660, /* GL_HISTOGRAM_ALPHA_SIZE */ - 669, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - 673, /* GL_HISTOGRAM_SINK */ - 1040, /* GL_MINMAX */ - 1042, /* GL_MINMAX_FORMAT */ - 1044, /* GL_MINMAX_SINK */ - 1704, /* GL_TABLE_TOO_LARGE_EXT */ - 1955, /* GL_UNSIGNED_BYTE_3_3_2 */ - 1971, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - 1974, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - 1965, /* GL_UNSIGNED_INT_8_8_8_8 */ - 1957, /* GL_UNSIGNED_INT_10_10_10_2 */ - 1278, /* GL_POLYGON_OFFSET_FILL */ - 1277, /* GL_POLYGON_OFFSET_FACTOR */ - 1276, /* GL_POLYGON_OFFSET_BIAS */ - 1470, /* GL_RESCALE_NORMAL */ - 36, /* GL_ALPHA4 */ - 38, /* GL_ALPHA8 */ - 32, /* GL_ALPHA12 */ - 34, /* GL_ALPHA16 */ - 798, /* GL_LUMINANCE4 */ - 804, /* GL_LUMINANCE8 */ - 788, /* GL_LUMINANCE12 */ - 794, /* GL_LUMINANCE16 */ - 799, /* GL_LUMINANCE4_ALPHA4 */ - 802, /* GL_LUMINANCE6_ALPHA2 */ - 805, /* GL_LUMINANCE8_ALPHA8 */ - 791, /* GL_LUMINANCE12_ALPHA4 */ - 789, /* GL_LUMINANCE12_ALPHA12 */ - 795, /* GL_LUMINANCE16_ALPHA16 */ - 702, /* GL_INTENSITY */ - 707, /* GL_INTENSITY4 */ - 709, /* GL_INTENSITY8 */ - 703, /* GL_INTENSITY12 */ - 705, /* GL_INTENSITY16 */ - 1483, /* GL_RGB2_EXT */ - 1484, /* GL_RGB4 */ - 1487, /* GL_RGB5 */ - 1494, /* GL_RGB8 */ - 1475, /* GL_RGB10 */ - 1479, /* GL_RGB12 */ - 1481, /* GL_RGB16 */ - 1502, /* GL_RGBA2 */ - 1504, /* GL_RGBA4 */ - 1490, /* GL_RGB5_A1 */ - 1509, /* GL_RGBA8 */ - 1476, /* GL_RGB10_A2 */ - 1498, /* GL_RGBA12 */ - 1500, /* GL_RGBA16 */ - 1895, /* GL_TEXTURE_RED_SIZE */ - 1864, /* GL_TEXTURE_GREEN_SIZE */ - 1791, /* GL_TEXTURE_BLUE_SIZE */ - 1776, /* GL_TEXTURE_ALPHA_SIZE */ - 1877, /* GL_TEXTURE_LUMINANCE_SIZE */ - 1868, /* GL_TEXTURE_INTENSITY_SIZE */ - 1468, /* GL_REPLACE_EXT */ - 1380, /* GL_PROXY_TEXTURE_1D */ - 1383, /* GL_PROXY_TEXTURE_2D */ - 1902, /* GL_TEXTURE_TOO_LARGE_EXT */ - 1890, /* GL_TEXTURE_PRIORITY */ - 1897, /* GL_TEXTURE_RESIDENT */ - 1779, /* GL_TEXTURE_BINDING_1D */ - 1781, /* GL_TEXTURE_BINDING_2D */ - 1783, /* GL_TEXTURE_BINDING_3D */ - 1192, /* GL_PACK_SKIP_IMAGES */ - 1188, /* GL_PACK_IMAGE_HEIGHT */ - 1948, /* GL_UNPACK_SKIP_IMAGES */ - 1945, /* GL_UNPACK_IMAGE_HEIGHT */ - 1774, /* GL_TEXTURE_3D */ - 1386, /* GL_PROXY_TEXTURE_3D */ - 1848, /* GL_TEXTURE_DEPTH */ - 1905, /* GL_TEXTURE_WRAP_R */ - 926, /* GL_MAX_3D_TEXTURE_SIZE */ - 1987, /* GL_VERTEX_ARRAY */ - 1119, /* GL_NORMAL_ARRAY */ - 160, /* GL_COLOR_ARRAY */ - 687, /* GL_INDEX_ARRAY */ - 1818, /* GL_TEXTURE_COORD_ARRAY */ - 480, /* GL_EDGE_FLAG_ARRAY */ - 1993, /* GL_VERTEX_ARRAY_SIZE */ - 1995, /* GL_VERTEX_ARRAY_TYPE */ - 1994, /* GL_VERTEX_ARRAY_STRIDE */ - 1124, /* GL_NORMAL_ARRAY_TYPE */ - 1123, /* GL_NORMAL_ARRAY_STRIDE */ - 164, /* GL_COLOR_ARRAY_SIZE */ - 166, /* GL_COLOR_ARRAY_TYPE */ - 165, /* GL_COLOR_ARRAY_STRIDE */ - 692, /* GL_INDEX_ARRAY_TYPE */ - 691, /* GL_INDEX_ARRAY_STRIDE */ - 1822, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - 1824, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - 1823, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - 484, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - 1992, /* GL_VERTEX_ARRAY_POINTER */ - 1122, /* GL_NORMAL_ARRAY_POINTER */ - 163, /* GL_COLOR_ARRAY_POINTER */ - 690, /* GL_INDEX_ARRAY_POINTER */ - 1821, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - 483, /* GL_EDGE_FLAG_ARRAY_POINTER */ - 1097, /* GL_MULTISAMPLE */ - 1535, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - 1537, /* GL_SAMPLE_ALPHA_TO_ONE */ - 1542, /* GL_SAMPLE_COVERAGE */ - 1539, /* GL_SAMPLE_BUFFERS */ - 1530, /* GL_SAMPLES */ - 1546, /* GL_SAMPLE_COVERAGE_VALUE */ - 1544, /* GL_SAMPLE_COVERAGE_INVERT */ - 208, /* GL_COLOR_MATRIX */ - 210, /* GL_COLOR_MATRIX_STACK_DEPTH */ - 936, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - 1303, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - 1299, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - 1294, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - 1290, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - 1301, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - 1297, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - 1292, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - 1288, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - 1801, /* GL_TEXTURE_COLOR_TABLE_SGI */ - 1387, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - 1803, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ - 82, /* GL_BLEND_DST_RGB */ - 96, /* GL_BLEND_SRC_RGB */ - 80, /* GL_BLEND_DST_ALPHA */ - 94, /* GL_BLEND_SRC_ALPHA */ - 214, /* GL_COLOR_TABLE */ - 1313, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - 1296, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - 1375, /* GL_PROXY_COLOR_TABLE */ - 1379, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - 1378, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - 238, /* GL_COLOR_TABLE_SCALE */ - 218, /* GL_COLOR_TABLE_BIAS */ - 223, /* GL_COLOR_TABLE_FORMAT */ - 240, /* GL_COLOR_TABLE_WIDTH */ - 235, /* GL_COLOR_TABLE_RED_SIZE */ - 226, /* GL_COLOR_TABLE_GREEN_SIZE */ - 220, /* GL_COLOR_TABLE_BLUE_SIZE */ - 215, /* GL_COLOR_TABLE_ALPHA_SIZE */ - 232, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ - 229, /* GL_COLOR_TABLE_INTENSITY_SIZE */ - 71, /* GL_BGR */ - 72, /* GL_BGRA */ - 951, /* GL_MAX_ELEMENTS_VERTICES */ - 950, /* GL_MAX_ELEMENTS_INDICES */ - 1867, /* GL_TEXTURE_INDEX_SIZE_EXT */ - 157, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - 1259, /* GL_POINT_SIZE_MIN */ - 1255, /* GL_POINT_SIZE_MAX */ - 1244, /* GL_POINT_FADE_THRESHOLD_SIZE */ - 1240, /* GL_POINT_DISTANCE_ATTENUATION */ - 139, /* GL_CLAMP_TO_BORDER */ - 142, /* GL_CLAMP_TO_EDGE */ - 1889, /* GL_TEXTURE_MIN_LOD */ - 1887, /* GL_TEXTURE_MAX_LOD */ - 1778, /* GL_TEXTURE_BASE_LEVEL */ - 1886, /* GL_TEXTURE_MAX_LEVEL */ - 678, /* GL_IGNORE_BORDER_HP */ - 289, /* GL_CONSTANT_BORDER_HP */ - 1469, /* GL_REPLICATE_BORDER_HP */ - 295, /* GL_CONVOLUTION_BORDER_COLOR */ - 1151, /* GL_OCCLUSION_TEST_HP */ - 1152, /* GL_OCCLUSION_TEST_RESULT_HP */ - 756, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - 1795, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - 1797, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - 1799, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - 1800, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1798, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - 1796, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - 931, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - 932, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1323, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - 1325, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - 1322, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - 1324, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - 1875, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - 1876, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - 1874, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - 640, /* GL_GENERATE_MIPMAP */ - 641, /* GL_GENERATE_MIPMAP_HINT */ - 555, /* GL_FOG_OFFSET_SGIX */ - 556, /* GL_FOG_OFFSET_VALUE_SGIX */ - 1809, /* GL_TEXTURE_COMPARE_SGIX */ - 1808, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - 1871, /* GL_TEXTURE_LEQUAL_R_SGIX */ - 1863, /* GL_TEXTURE_GEQUAL_R_SGIX */ - 377, /* GL_DEPTH_COMPONENT16 */ - 381, /* GL_DEPTH_COMPONENT24 */ - 385, /* GL_DEPTH_COMPONENT32 */ - 320, /* GL_CULL_VERTEX_EXT */ - 322, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - 321, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - 2057, /* GL_WRAP_BORDER_SUN */ - 1802, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - 749, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - 1579, /* GL_SINGLE_COLOR */ - 1563, /* GL_SEPARATE_SPECULAR_COLOR */ - 1574, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - 567, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - 568, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - 578, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - 570, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - 566, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - 565, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - 569, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - 579, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - 596, /* GL_FRAMEBUFFER_DEFAULT */ - 622, /* GL_FRAMEBUFFER_UNDEFINED */ - 393, /* GL_DEPTH_STENCIL_ATTACHMENT */ - 686, /* GL_INDEX */ - 1954, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - 1975, /* GL_UNSIGNED_SHORT_5_6_5 */ - 1976, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - 1972, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - 1969, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - 1966, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - 1963, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - 1884, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - 1885, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - 1883, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - 1047, /* GL_MIRRORED_REPEAT */ - 1517, /* GL_RGB_S3TC */ - 1486, /* GL_RGB4_S3TC */ - 1515, /* GL_RGBA_S3TC */ - 1508, /* GL_RGBA4_S3TC */ - 1513, /* GL_RGBA_DXT5_S3TC */ - 1505, /* GL_RGBA4_DXT5_S3TC */ - 277, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - 272, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - 273, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - 274, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - 1109, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - 1108, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - 757, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - 542, /* GL_FOG_COORDINATE_SOURCE */ - 534, /* GL_FOG_COORD */ - 558, /* GL_FRAGMENT_DEPTH */ - 326, /* GL_CURRENT_FOG_COORD */ - 541, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - 540, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - 539, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - 536, /* GL_FOG_COORDINATE_ARRAY */ - 212, /* GL_COLOR_SUM */ - 347, /* GL_CURRENT_SECONDARY_COLOR */ - 1555, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - 1557, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - 1556, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - 1554, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - 1551, /* GL_SECONDARY_COLOR_ARRAY */ - 345, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ - 28, /* GL_ALIASED_POINT_SIZE_RANGE */ - 27, /* GL_ALIASED_LINE_WIDTH_RANGE */ - 1706, /* GL_TEXTURE0 */ - 1708, /* GL_TEXTURE1 */ - 1730, /* GL_TEXTURE2 */ - 1752, /* GL_TEXTURE3 */ - 1758, /* GL_TEXTURE4 */ - 1760, /* GL_TEXTURE5 */ - 1762, /* GL_TEXTURE6 */ - 1764, /* GL_TEXTURE7 */ - 1766, /* GL_TEXTURE8 */ - 1768, /* GL_TEXTURE9 */ - 1709, /* GL_TEXTURE10 */ - 1711, /* GL_TEXTURE11 */ - 1713, /* GL_TEXTURE12 */ - 1715, /* GL_TEXTURE13 */ - 1717, /* GL_TEXTURE14 */ - 1719, /* GL_TEXTURE15 */ - 1721, /* GL_TEXTURE16 */ - 1723, /* GL_TEXTURE17 */ - 1725, /* GL_TEXTURE18 */ - 1727, /* GL_TEXTURE19 */ - 1731, /* GL_TEXTURE20 */ - 1733, /* GL_TEXTURE21 */ - 1735, /* GL_TEXTURE22 */ - 1737, /* GL_TEXTURE23 */ - 1739, /* GL_TEXTURE24 */ - 1741, /* GL_TEXTURE25 */ - 1743, /* GL_TEXTURE26 */ - 1745, /* GL_TEXTURE27 */ - 1747, /* GL_TEXTURE28 */ - 1749, /* GL_TEXTURE29 */ - 1753, /* GL_TEXTURE30 */ - 1755, /* GL_TEXTURE31 */ - 18, /* GL_ACTIVE_TEXTURE */ - 145, /* GL_CLIENT_ACTIVE_TEXTURE */ - 1015, /* GL_MAX_TEXTURE_UNITS */ - 1929, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - 1932, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - 1934, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - 1926, /* GL_TRANSPOSE_COLOR_MATRIX */ - 1688, /* GL_SUBTRACT */ - 998, /* GL_MAX_RENDERBUFFER_SIZE */ - 260, /* GL_COMPRESSED_ALPHA */ - 264, /* GL_COMPRESSED_LUMINANCE */ - 265, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - 262, /* GL_COMPRESSED_INTENSITY */ - 268, /* GL_COMPRESSED_RGB */ - 269, /* GL_COMPRESSED_RGBA */ - 1816, /* GL_TEXTURE_COMPRESSION_HINT */ - 1893, /* GL_TEXTURE_RECTANGLE_ARB */ - 1788, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - 1390, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - 996, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - 392, /* GL_DEPTH_STENCIL */ - 1959, /* GL_UNSIGNED_INT_24_8 */ - 1010, /* GL_MAX_TEXTURE_LOD_BIAS */ - 1882, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - 1012, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - 1854, /* GL_TEXTURE_FILTER_CONTROL */ - 1872, /* GL_TEXTURE_LOD_BIAS */ - 245, /* GL_COMBINE4 */ - 1004, /* GL_MAX_SHININESS_NV */ - 1005, /* GL_MAX_SPOT_EXPONENT_NV */ - 684, /* GL_INCR_WRAP */ - 358, /* GL_DECR_WRAP */ - 1067, /* GL_MODELVIEW1_ARB */ - 1125, /* GL_NORMAL_MAP */ - 1429, /* GL_REFLECTION_MAP */ - 1826, /* GL_TEXTURE_CUBE_MAP */ - 1785, /* GL_TEXTURE_BINDING_CUBE_MAP */ - 1838, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - 1828, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - 1841, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - 1831, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - 1844, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - 1834, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - 1388, /* GL_PROXY_TEXTURE_CUBE_MAP */ - 944, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - 1103, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - 1334, /* GL_PRIMITIVE_RESTART_NV */ - 1333, /* GL_PRIMITIVE_RESTART_INDEX_NV */ - 550, /* GL_FOG_DISTANCE_MODE_NV */ - 499, /* GL_EYE_RADIAL_NV */ - 498, /* GL_EYE_PLANE_ABSOLUTE_NV */ - 244, /* GL_COMBINE */ - 251, /* GL_COMBINE_RGB */ - 246, /* GL_COMBINE_ALPHA */ - 1518, /* GL_RGB_SCALE */ - 24, /* GL_ADD_SIGNED */ - 713, /* GL_INTERPOLATE */ - 284, /* GL_CONSTANT */ - 1329, /* GL_PRIMARY_COLOR */ - 1326, /* GL_PREVIOUS */ - 1594, /* GL_SOURCE0_RGB */ - 1600, /* GL_SOURCE1_RGB */ - 1606, /* GL_SOURCE2_RGB */ - 1610, /* GL_SOURCE3_RGB_NV */ - 1591, /* GL_SOURCE0_ALPHA */ - 1597, /* GL_SOURCE1_ALPHA */ - 1603, /* GL_SOURCE2_ALPHA */ - 1609, /* GL_SOURCE3_ALPHA_NV */ - 1165, /* GL_OPERAND0_RGB */ - 1171, /* GL_OPERAND1_RGB */ - 1177, /* GL_OPERAND2_RGB */ - 1181, /* GL_OPERAND3_RGB_NV */ - 1162, /* GL_OPERAND0_ALPHA */ - 1168, /* GL_OPERAND1_ALPHA */ - 1174, /* GL_OPERAND2_ALPHA */ - 1180, /* GL_OPERAND3_ALPHA_NV */ - 120, /* GL_BUFFER_OBJECT_APPLE */ - 1988, /* GL_VERTEX_ARRAY_BINDING */ - 1891, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - 1892, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - 2062, /* GL_YCBCR_422_APPLE */ - 1977, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - 1979, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - 1901, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - 1679, /* GL_STORAGE_PRIVATE_APPLE */ - 1678, /* GL_STORAGE_CACHED_APPLE */ - 1680, /* GL_STORAGE_SHARED_APPLE */ - 1581, /* GL_SLICE_ACCUM_SUN */ - 1398, /* GL_QUAD_MESH_SUN */ - 1939, /* GL_TRIANGLE_MESH_SUN */ - 2027, /* GL_VERTEX_PROGRAM_ARB */ - 2038, /* GL_VERTEX_STATE_PROGRAM_NV */ - 2014, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - 2020, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - 2022, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - 2024, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - 349, /* GL_CURRENT_VERTEX_ATTRIB */ - 1347, /* GL_PROGRAM_LENGTH_ARB */ - 1362, /* GL_PROGRAM_STRING_ARB */ - 1090, /* GL_MODELVIEW_PROJECTION_NV */ - 677, /* GL_IDENTITY_NV */ - 729, /* GL_INVERSE_NV */ - 1931, /* GL_TRANSPOSE_NV */ - 730, /* GL_INVERSE_TRANSPOSE_NV */ - 982, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - 981, /* GL_MAX_PROGRAM_MATRICES_ARB */ - 872, /* GL_MATRIX0_NV */ - 884, /* GL_MATRIX1_NV */ - 896, /* GL_MATRIX2_NV */ - 900, /* GL_MATRIX3_NV */ - 902, /* GL_MATRIX4_NV */ - 904, /* GL_MATRIX5_NV */ - 906, /* GL_MATRIX6_NV */ - 908, /* GL_MATRIX7_NV */ - 332, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - 329, /* GL_CURRENT_MATRIX_ARB */ - 2030, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - 2033, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - 1359, /* GL_PROGRAM_PARAMETER_NV */ - 2018, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - 1364, /* GL_PROGRAM_TARGET_NV */ - 1361, /* GL_PROGRAM_RESIDENT_NV */ - 1911, /* GL_TRACK_MATRIX_NV */ - 1912, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - 2028, /* GL_VERTEX_PROGRAM_BINDING_NV */ - 1341, /* GL_PROGRAM_ERROR_POSITION_ARB */ - 373, /* GL_DEPTH_CLAMP */ - 1996, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - 2003, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - 2004, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - 2005, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - 2006, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - 2007, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - 2008, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - 2009, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - 2010, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - 2011, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - 1997, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - 1998, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - 1999, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - 2000, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - 2001, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - 2002, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - 820, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - 827, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - 828, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - 829, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - 830, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - 831, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - 832, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - 833, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - 834, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - 835, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - 821, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - 822, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - 823, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - 824, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - 825, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - 826, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - 847, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - 854, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - 855, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - 856, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - 857, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - 858, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - 859, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - 1340, /* GL_PROGRAM_BINDING_ARB */ - 861, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - 862, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - 848, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - 849, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - 850, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - 851, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - 852, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - 853, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - 1814, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - 1811, /* GL_TEXTURE_COMPRESSED */ - 1131, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - 282, /* GL_COMPRESSED_TEXTURE_FORMATS */ - 1033, /* GL_MAX_VERTEX_UNITS_ARB */ - 22, /* GL_ACTIVE_VERTEX_UNITS_ARB */ - 2056, /* GL_WEIGHT_SUM_UNITY_ARB */ - 2026, /* GL_VERTEX_BLEND_ARB */ - 351, /* GL_CURRENT_WEIGHT_ARB */ - 2054, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - 2052, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - 2050, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - 2048, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - 2043, /* GL_WEIGHT_ARRAY_ARB */ - 407, /* GL_DOT3_RGB */ - 408, /* GL_DOT3_RGBA */ - 276, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - 271, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - 1098, /* GL_MULTISAMPLE_3DFX */ - 1540, /* GL_SAMPLE_BUFFERS_3DFX */ - 1531, /* GL_SAMPLES_3DFX */ - 1078, /* GL_MODELVIEW2_ARB */ - 1081, /* GL_MODELVIEW3_ARB */ - 1082, /* GL_MODELVIEW4_ARB */ - 1083, /* GL_MODELVIEW5_ARB */ - 1084, /* GL_MODELVIEW6_ARB */ - 1085, /* GL_MODELVIEW7_ARB */ - 1086, /* GL_MODELVIEW8_ARB */ - 1087, /* GL_MODELVIEW9_ARB */ - 1057, /* GL_MODELVIEW10_ARB */ - 1058, /* GL_MODELVIEW11_ARB */ - 1059, /* GL_MODELVIEW12_ARB */ - 1060, /* GL_MODELVIEW13_ARB */ - 1061, /* GL_MODELVIEW14_ARB */ - 1062, /* GL_MODELVIEW15_ARB */ - 1063, /* GL_MODELVIEW16_ARB */ - 1064, /* GL_MODELVIEW17_ARB */ - 1065, /* GL_MODELVIEW18_ARB */ - 1066, /* GL_MODELVIEW19_ARB */ - 1068, /* GL_MODELVIEW20_ARB */ - 1069, /* GL_MODELVIEW21_ARB */ - 1070, /* GL_MODELVIEW22_ARB */ - 1071, /* GL_MODELVIEW23_ARB */ - 1072, /* GL_MODELVIEW24_ARB */ - 1073, /* GL_MODELVIEW25_ARB */ - 1074, /* GL_MODELVIEW26_ARB */ - 1075, /* GL_MODELVIEW27_ARB */ - 1076, /* GL_MODELVIEW28_ARB */ - 1077, /* GL_MODELVIEW29_ARB */ - 1079, /* GL_MODELVIEW30_ARB */ - 1080, /* GL_MODELVIEW31_ARB */ - 412, /* GL_DOT3_RGB_EXT */ - 410, /* GL_DOT3_RGBA_EXT */ - 1051, /* GL_MIRROR_CLAMP_EXT */ - 1054, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - 1093, /* GL_MODULATE_ADD_ATI */ - 1094, /* GL_MODULATE_SIGNED_ADD_ATI */ - 1095, /* GL_MODULATE_SUBTRACT_ATI */ - 2063, /* GL_YCBCR_MESA */ - 1189, /* GL_PACK_INVERT_MESA */ - 354, /* GL_DEBUG_OBJECT_MESA */ - 355, /* GL_DEBUG_PRINT_MESA */ - 353, /* GL_DEBUG_ASSERT_MESA */ - 122, /* GL_BUFFER_SIZE */ - 124, /* GL_BUFFER_USAGE */ - 128, /* GL_BUMP_ROT_MATRIX_ATI */ - 129, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ - 127, /* GL_BUMP_NUM_TEX_UNITS_ATI */ - 131, /* GL_BUMP_TEX_UNITS_ATI */ - 472, /* GL_DUDV_ATI */ - 471, /* GL_DU8DV8_ATI */ - 126, /* GL_BUMP_ENVMAP_ATI */ - 130, /* GL_BUMP_TARGET_ATI */ - 1133, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ - 1338, /* GL_PROGRAM_BINARY_FORMATS_OES */ - 1643, /* GL_STENCIL_BACK_FUNC */ - 1641, /* GL_STENCIL_BACK_FAIL */ - 1645, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - 1647, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - 559, /* GL_FRAGMENT_PROGRAM_ARB */ - 1336, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1367, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1366, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1350, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1356, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1355, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 971, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 994, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 993, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - 984, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 990, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 989, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 947, /* GL_MAX_DRAW_BUFFERS */ - 416, /* GL_DRAW_BUFFER0 */ - 419, /* GL_DRAW_BUFFER1 */ - 440, /* GL_DRAW_BUFFER2 */ - 443, /* GL_DRAW_BUFFER3 */ - 446, /* GL_DRAW_BUFFER4 */ - 449, /* GL_DRAW_BUFFER5 */ - 452, /* GL_DRAW_BUFFER6 */ - 455, /* GL_DRAW_BUFFER7 */ - 458, /* GL_DRAW_BUFFER8 */ - 461, /* GL_DRAW_BUFFER9 */ - 420, /* GL_DRAW_BUFFER10 */ - 423, /* GL_DRAW_BUFFER11 */ - 426, /* GL_DRAW_BUFFER12 */ - 429, /* GL_DRAW_BUFFER13 */ - 432, /* GL_DRAW_BUFFER14 */ - 435, /* GL_DRAW_BUFFER15 */ - 85, /* GL_BLEND_EQUATION_ALPHA */ - 923, /* GL_MATRIX_PALETTE_ARB */ - 964, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - 967, /* GL_MAX_PALETTE_MATRICES_ARB */ - 335, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - 911, /* GL_MATRIX_INDEX_ARRAY_ARB */ - 330, /* GL_CURRENT_MATRIX_INDEX_ARB */ - 916, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - 920, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - 918, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - 914, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - 1849, /* GL_TEXTURE_DEPTH_SIZE */ - 400, /* GL_DEPTH_TEXTURE_MODE */ - 1806, /* GL_TEXTURE_COMPARE_MODE */ - 1804, /* GL_TEXTURE_COMPARE_FUNC */ - 255, /* GL_COMPARE_R_TO_TEXTURE */ - 1266, /* GL_POINT_SPRITE */ - 309, /* GL_COORD_REPLACE */ - 1271, /* GL_POINT_SPRITE_R_MODE_NV */ - 1402, /* GL_QUERY_COUNTER_BITS */ - 338, /* GL_CURRENT_QUERY */ - 1405, /* GL_QUERY_RESULT */ - 1407, /* GL_QUERY_RESULT_AVAILABLE */ - 1026, /* GL_MAX_VERTEX_ATTRIBS */ - 2016, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - 398, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - 397, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - 1006, /* GL_MAX_TEXTURE_COORDS */ - 1008, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - 1343, /* GL_PROGRAM_ERROR_STRING_ARB */ - 1345, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - 1344, /* GL_PROGRAM_FORMAT_ARB */ - 1903, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - 371, /* GL_DEPTH_BOUNDS_TEST_EXT */ - 370, /* GL_DEPTH_BOUNDS_EXT */ - 53, /* GL_ARRAY_BUFFER */ - 485, /* GL_ELEMENT_ARRAY_BUFFER */ - 54, /* GL_ARRAY_BUFFER_BINDING */ - 486, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - 1990, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - 1120, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - 161, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - 688, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - 1819, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - 481, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - 1552, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - 537, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - 2044, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - 2012, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - 1346, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - 977, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - 1352, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 986, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1365, /* GL_PROGRAM_TEMPORARIES_ARB */ - 992, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - 1354, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 988, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1358, /* GL_PROGRAM_PARAMETERS_ARB */ - 991, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - 1353, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - 987, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1337, /* GL_PROGRAM_ATTRIBS_ARB */ - 972, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - 1351, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - 985, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1335, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - 970, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1349, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 983, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 978, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - 974, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - 1368, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - 1928, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - 1419, /* GL_READ_ONLY */ - 2058, /* GL_WRITE_ONLY */ - 1421, /* GL_READ_WRITE */ - 110, /* GL_BUFFER_ACCESS */ - 114, /* GL_BUFFER_MAPPED */ - 117, /* GL_BUFFER_MAP_POINTER */ - 1910, /* GL_TIME_ELAPSED_EXT */ - 871, /* GL_MATRIX0_ARB */ - 883, /* GL_MATRIX1_ARB */ - 895, /* GL_MATRIX2_ARB */ - 899, /* GL_MATRIX3_ARB */ - 901, /* GL_MATRIX4_ARB */ - 903, /* GL_MATRIX5_ARB */ - 905, /* GL_MATRIX6_ARB */ - 907, /* GL_MATRIX7_ARB */ - 909, /* GL_MATRIX8_ARB */ - 910, /* GL_MATRIX9_ARB */ - 873, /* GL_MATRIX10_ARB */ - 874, /* GL_MATRIX11_ARB */ - 875, /* GL_MATRIX12_ARB */ - 876, /* GL_MATRIX13_ARB */ - 877, /* GL_MATRIX14_ARB */ - 878, /* GL_MATRIX15_ARB */ - 879, /* GL_MATRIX16_ARB */ - 880, /* GL_MATRIX17_ARB */ - 881, /* GL_MATRIX18_ARB */ - 882, /* GL_MATRIX19_ARB */ - 885, /* GL_MATRIX20_ARB */ - 886, /* GL_MATRIX21_ARB */ - 887, /* GL_MATRIX22_ARB */ - 888, /* GL_MATRIX23_ARB */ - 889, /* GL_MATRIX24_ARB */ - 890, /* GL_MATRIX25_ARB */ - 891, /* GL_MATRIX26_ARB */ - 892, /* GL_MATRIX27_ARB */ - 893, /* GL_MATRIX28_ARB */ - 894, /* GL_MATRIX29_ARB */ - 897, /* GL_MATRIX30_ARB */ - 898, /* GL_MATRIX31_ARB */ - 1683, /* GL_STREAM_DRAW */ - 1685, /* GL_STREAM_READ */ - 1681, /* GL_STREAM_COPY */ - 1633, /* GL_STATIC_DRAW */ - 1635, /* GL_STATIC_READ */ - 1631, /* GL_STATIC_COPY */ - 475, /* GL_DYNAMIC_DRAW */ - 477, /* GL_DYNAMIC_READ */ - 473, /* GL_DYNAMIC_COPY */ - 1229, /* GL_PIXEL_PACK_BUFFER */ - 1233, /* GL_PIXEL_UNPACK_BUFFER */ - 1230, /* GL_PIXEL_PACK_BUFFER_BINDING */ - 1234, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - 362, /* GL_DEPTH24_STENCIL8 */ - 1899, /* GL_TEXTURE_STENCIL_SIZE */ - 1847, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - 973, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - 976, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - 980, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - 979, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - 928, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ - 1674, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ - 17, /* GL_ACTIVE_STENCIL_FACE_EXT */ - 1052, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - 1533, /* GL_SAMPLES_PASSED */ - 1253, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ - 1252, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ - 1251, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ - 1089, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ - 1371, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ - 1881, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ - 121, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ - 113, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ - 1433, /* GL_RELEASED_APPLE */ - 2041, /* GL_VOLATILE_APPLE */ - 1472, /* GL_RETAINED_APPLE */ - 1943, /* GL_UNDEFINED_APPLE */ - 1392, /* GL_PURGEABLE_APPLE */ - 560, /* GL_FRAGMENT_SHADER */ - 2036, /* GL_VERTEX_SHADER */ - 1357, /* GL_PROGRAM_OBJECT_ARB */ - 1568, /* GL_SHADER_OBJECT_ARB */ - 954, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - 1030, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - 1023, /* GL_MAX_VARYING_FLOATS */ - 1028, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - 938, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - 1149, /* GL_OBJECT_TYPE_ARB */ - 1570, /* GL_SHADER_TYPE */ - 525, /* GL_FLOAT_VEC2 */ - 527, /* GL_FLOAT_VEC3 */ - 529, /* GL_FLOAT_VEC4 */ - 717, /* GL_INT_VEC2 */ - 719, /* GL_INT_VEC3 */ - 721, /* GL_INT_VEC4 */ - 102, /* GL_BOOL */ - 104, /* GL_BOOL_VEC2 */ - 106, /* GL_BOOL_VEC3 */ - 108, /* GL_BOOL_VEC4 */ - 513, /* GL_FLOAT_MAT2 */ - 517, /* GL_FLOAT_MAT3 */ - 521, /* GL_FLOAT_MAT4 */ - 1523, /* GL_SAMPLER_1D */ - 1525, /* GL_SAMPLER_2D */ - 1527, /* GL_SAMPLER_3D */ - 1529, /* GL_SAMPLER_CUBE */ - 1524, /* GL_SAMPLER_1D_SHADOW */ - 1526, /* GL_SAMPLER_2D_SHADOW */ - 515, /* GL_FLOAT_MAT2x3 */ - 516, /* GL_FLOAT_MAT2x4 */ - 519, /* GL_FLOAT_MAT3x2 */ - 520, /* GL_FLOAT_MAT3x4 */ - 523, /* GL_FLOAT_MAT4x2 */ - 524, /* GL_FLOAT_MAT4x3 */ - 360, /* GL_DELETE_STATUS */ - 259, /* GL_COMPILE_STATUS */ - 776, /* GL_LINK_STATUS */ - 1984, /* GL_VALIDATE_STATUS */ - 700, /* GL_INFO_LOG_LENGTH */ - 56, /* GL_ATTACHED_SHADERS */ - 20, /* GL_ACTIVE_UNIFORMS */ - 21, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ - 1569, /* GL_SHADER_SOURCE_LENGTH */ + 448, /* GL_DOUBLE */ + 698, /* GL_HALF_FLOAT */ + 544, /* GL_FIXED */ + 162, /* GL_CLEAR */ + 58, /* GL_AND */ + 60, /* GL_AND_REVERSE */ + 347, /* GL_COPY */ + 59, /* GL_AND_INVERTED */ + 1220, /* GL_NOOP */ + 2288, /* GL_XOR */ + 1287, /* GL_OR */ + 1221, /* GL_NOR */ + 526, /* GL_EQUIV */ + 798, /* GL_INVERT */ + 1290, /* GL_OR_REVERSE */ + 348, /* GL_COPY_INVERTED */ + 1289, /* GL_OR_INVERTED */ + 1210, /* GL_NAND */ + 1744, /* GL_SET */ + 523, /* GL_EMISSION */ + 1754, /* GL_SHININESS */ + 57, /* GL_AMBIENT_AND_DIFFUSE */ + 229, /* GL_COLOR_INDEXES */ + 1159, /* GL_MODELVIEW */ + 1478, /* GL_PROJECTION */ + 1885, /* GL_TEXTURE */ + 185, /* GL_COLOR */ + 395, /* GL_DEPTH */ + 1816, /* GL_STENCIL */ + 228, /* GL_COLOR_INDEX */ + 1837, /* GL_STENCIL_INDEX */ + 411, /* GL_DEPTH_COMPONENT */ + 1543, /* GL_RED */ + 692, /* GL_GREEN */ + 110, /* GL_BLUE */ + 32, /* GL_ALPHA */ + 1599, /* GL_RGB */ + 1639, /* GL_RGBA */ + 856, /* GL_LUMINANCE */ + 883, /* GL_LUMINANCE_ALPHA */ + 86, /* GL_BITMAP */ + 1342, /* GL_POINT */ + 820, /* GL_LINE */ + 541, /* GL_FILL */ + 1557, /* GL_RENDER */ + 537, /* GL_FEEDBACK */ + 1736, /* GL_SELECT */ + 547, /* GL_FLAT */ + 1765, /* GL_SMOOTH */ + 799, /* GL_KEEP */ + 1590, /* GL_REPLACE */ + 727, /* GL_INCR */ + 391, /* GL_DECR */ + 2210, /* GL_VENDOR */ + 1587, /* GL_RENDERER */ + 2211, /* GL_VERSION */ + 530, /* GL_EXTENSIONS */ + 1686, /* GL_S */ + 1876, /* GL_T */ + 1526, /* GL_R */ + 1505, /* GL_Q */ + 1196, /* GL_MODULATE */ + 390, /* GL_DECAL */ + 2042, /* GL_TEXTURE_ENV_MODE */ + 2041, /* GL_TEXTURE_ENV_COLOR */ + 2040, /* GL_TEXTURE_ENV */ + 531, /* GL_EYE_LINEAR */ + 1248, /* GL_OBJECT_LINEAR */ + 1791, /* GL_SPHERE_MAP */ + 2045, /* GL_TEXTURE_GEN_MODE */ + 1250, /* GL_OBJECT_PLANE */ + 532, /* GL_EYE_PLANE */ + 1211, /* GL_NEAREST */ + 821, /* GL_LINEAR */ + 1215, /* GL_NEAREST_MIPMAP_NEAREST */ + 826, /* GL_LINEAR_MIPMAP_NEAREST */ + 1214, /* GL_NEAREST_MIPMAP_LINEAR */ + 825, /* GL_LINEAR_MIPMAP_LINEAR */ + 2068, /* GL_TEXTURE_MAG_FILTER */ + 2077, /* GL_TEXTURE_MIN_FILTER */ + 2098, /* GL_TEXTURE_WRAP_S */ + 2099, /* GL_TEXTURE_WRAP_T */ + 155, /* GL_CLAMP */ + 1589, /* GL_REPEAT */ + 1386, /* GL_POLYGON_OFFSET_UNITS */ + 1385, /* GL_POLYGON_OFFSET_POINT */ + 1384, /* GL_POLYGON_OFFSET_LINE */ + 1529, /* GL_R3_G3_B2 */ + 2207, /* GL_V2F */ + 2208, /* GL_V3F */ + 152, /* GL_C4UB_V2F */ + 153, /* GL_C4UB_V3F */ + 150, /* GL_C3F_V3F */ + 1208, /* GL_N3F_V3F */ + 151, /* GL_C4F_N3F_V3F */ + 1881, /* GL_T2F_V3F */ + 1883, /* GL_T4F_V4F */ + 1879, /* GL_T2F_C4UB_V3F */ + 1877, /* GL_T2F_C3F_V3F */ + 1880, /* GL_T2F_N3F_V3F */ + 1878, /* GL_T2F_C4F_N3F_V3F */ + 1882, /* GL_T4F_C4F_N3F_V4F */ + 169, /* GL_CLIP_DISTANCE0 */ + 170, /* GL_CLIP_DISTANCE1 */ + 171, /* GL_CLIP_DISTANCE2 */ + 172, /* GL_CLIP_DISTANCE3 */ + 173, /* GL_CLIP_DISTANCE4 */ + 174, /* GL_CLIP_DISTANCE5 */ + 175, /* GL_CLIP_DISTANCE6 */ + 176, /* GL_CLIP_DISTANCE7 */ + 805, /* GL_LIGHT0 */ + 806, /* GL_LIGHT1 */ + 807, /* GL_LIGHT2 */ + 808, /* GL_LIGHT3 */ + 809, /* GL_LIGHT4 */ + 810, /* GL_LIGHT5 */ + 811, /* GL_LIGHT6 */ + 812, /* GL_LIGHT7 */ + 702, /* GL_HINT_BIT */ + 319, /* GL_CONSTANT_COLOR */ + 1261, /* GL_ONE_MINUS_CONSTANT_COLOR */ + 314, /* GL_CONSTANT_ALPHA */ + 1259, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + 89, /* GL_BLEND_COLOR */ + 669, /* GL_FUNC_ADD */ + 1140, /* GL_MIN */ + 1009, /* GL_MAX */ + 96, /* GL_BLEND_EQUATION */ + 675, /* GL_FUNC_SUBTRACT */ + 672, /* GL_FUNC_REVERSE_SUBTRACT */ + 327, /* GL_CONVOLUTION_1D */ + 328, /* GL_CONVOLUTION_2D */ + 1739, /* GL_SEPARABLE_2D */ + 331, /* GL_CONVOLUTION_BORDER_MODE */ + 335, /* GL_CONVOLUTION_FILTER_SCALE */ + 333, /* GL_CONVOLUTION_FILTER_BIAS */ + 1544, /* GL_REDUCE */ + 337, /* GL_CONVOLUTION_FORMAT */ + 341, /* GL_CONVOLUTION_WIDTH */ + 339, /* GL_CONVOLUTION_HEIGHT */ + 1028, /* GL_MAX_CONVOLUTION_WIDTH */ + 1026, /* GL_MAX_CONVOLUTION_HEIGHT */ + 1425, /* GL_POST_CONVOLUTION_RED_SCALE */ + 1421, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + 1416, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + 1412, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + 1423, /* GL_POST_CONVOLUTION_RED_BIAS */ + 1419, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + 1414, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + 1410, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + 703, /* GL_HISTOGRAM */ + 1485, /* GL_PROXY_HISTOGRAM */ + 719, /* GL_HISTOGRAM_WIDTH */ + 709, /* GL_HISTOGRAM_FORMAT */ + 715, /* GL_HISTOGRAM_RED_SIZE */ + 711, /* GL_HISTOGRAM_GREEN_SIZE */ + 706, /* GL_HISTOGRAM_BLUE_SIZE */ + 704, /* GL_HISTOGRAM_ALPHA_SIZE */ + 713, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + 717, /* GL_HISTOGRAM_SINK */ + 1141, /* GL_MINMAX */ + 1143, /* GL_MINMAX_FORMAT */ + 1145, /* GL_MINMAX_SINK */ + 1884, /* GL_TABLE_TOO_LARGE_EXT */ + 2156, /* GL_UNSIGNED_BYTE_3_3_2 */ + 2196, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + 2199, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + 2168, /* GL_UNSIGNED_INT_8_8_8_8 */ + 2159, /* GL_UNSIGNED_INT_10_10_10_2 */ + 1383, /* GL_POLYGON_OFFSET_FILL */ + 1382, /* GL_POLYGON_OFFSET_FACTOR */ + 1381, /* GL_POLYGON_OFFSET_BIAS */ + 1593, /* GL_RESCALE_NORMAL */ + 41, /* GL_ALPHA4 */ + 43, /* GL_ALPHA8 */ + 33, /* GL_ALPHA12 */ + 35, /* GL_ALPHA16 */ + 871, /* GL_LUMINANCE4 */ + 877, /* GL_LUMINANCE8 */ + 857, /* GL_LUMINANCE12 */ + 863, /* GL_LUMINANCE16 */ + 872, /* GL_LUMINANCE4_ALPHA4 */ + 875, /* GL_LUMINANCE6_ALPHA2 */ + 880, /* GL_LUMINANCE8_ALPHA8 */ + 860, /* GL_LUMINANCE12_ALPHA4 */ + 858, /* GL_LUMINANCE12_ALPHA12 */ + 866, /* GL_LUMINANCE16_ALPHA16 */ + 746, /* GL_INTENSITY */ + 755, /* GL_INTENSITY4 */ + 757, /* GL_INTENSITY8 */ + 747, /* GL_INTENSITY12 */ + 749, /* GL_INTENSITY16 */ + 1614, /* GL_RGB2_EXT */ + 1620, /* GL_RGB4 */ + 1623, /* GL_RGB5 */ + 1630, /* GL_RGB8 */ + 1600, /* GL_RGB10 */ + 1604, /* GL_RGB12 */ + 1606, /* GL_RGB16 */ + 1650, /* GL_RGBA2 */ + 1657, /* GL_RGBA4 */ + 1626, /* GL_RGB5_A1 */ + 1662, /* GL_RGBA8 */ + 1601, /* GL_RGB10_A2 */ + 1640, /* GL_RGBA12 */ + 1642, /* GL_RGBA16 */ + 2085, /* GL_TEXTURE_RED_SIZE */ + 2053, /* GL_TEXTURE_GREEN_SIZE */ + 1977, /* GL_TEXTURE_BLUE_SIZE */ + 1958, /* GL_TEXTURE_ALPHA_SIZE */ + 2066, /* GL_TEXTURE_LUMINANCE_SIZE */ + 2057, /* GL_TEXTURE_INTENSITY_SIZE */ + 1591, /* GL_REPLACE_EXT */ + 1489, /* GL_PROXY_TEXTURE_1D */ + 1493, /* GL_PROXY_TEXTURE_2D */ + 2093, /* GL_TEXTURE_TOO_LARGE_EXT */ + 2079, /* GL_TEXTURE_PRIORITY */ + 2087, /* GL_TEXTURE_RESIDENT */ + 1961, /* GL_TEXTURE_BINDING_1D */ + 1964, /* GL_TEXTURE_BINDING_2D */ + 1967, /* GL_TEXTURE_BINDING_3D */ + 1297, /* GL_PACK_SKIP_IMAGES */ + 1293, /* GL_PACK_IMAGE_HEIGHT */ + 2149, /* GL_UNPACK_SKIP_IMAGES */ + 2146, /* GL_UNPACK_IMAGE_HEIGHT */ + 1956, /* GL_TEXTURE_3D */ + 1497, /* GL_PROXY_TEXTURE_3D */ + 2037, /* GL_TEXTURE_DEPTH */ + 2096, /* GL_TEXTURE_WRAP_R */ + 1010, /* GL_MAX_3D_TEXTURE_SIZE */ + 2212, /* GL_VERTEX_ARRAY */ + 1223, /* GL_NORMAL_ARRAY */ + 186, /* GL_COLOR_ARRAY */ + 731, /* GL_INDEX_ARRAY */ + 2007, /* GL_TEXTURE_COORD_ARRAY */ + 515, /* GL_EDGE_FLAG_ARRAY */ + 2218, /* GL_VERTEX_ARRAY_SIZE */ + 2220, /* GL_VERTEX_ARRAY_TYPE */ + 2219, /* GL_VERTEX_ARRAY_STRIDE */ + 1228, /* GL_NORMAL_ARRAY_TYPE */ + 1227, /* GL_NORMAL_ARRAY_STRIDE */ + 190, /* GL_COLOR_ARRAY_SIZE */ + 192, /* GL_COLOR_ARRAY_TYPE */ + 191, /* GL_COLOR_ARRAY_STRIDE */ + 736, /* GL_INDEX_ARRAY_TYPE */ + 735, /* GL_INDEX_ARRAY_STRIDE */ + 2011, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + 2013, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + 2012, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + 519, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + 2217, /* GL_VERTEX_ARRAY_POINTER */ + 1226, /* GL_NORMAL_ARRAY_POINTER */ + 189, /* GL_COLOR_ARRAY_POINTER */ + 734, /* GL_INDEX_ARRAY_POINTER */ + 2010, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + 518, /* GL_EDGE_FLAG_ARRAY_POINTER */ + 1201, /* GL_MULTISAMPLE */ + 1713, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + 1715, /* GL_SAMPLE_ALPHA_TO_ONE */ + 1720, /* GL_SAMPLE_COVERAGE */ + 1717, /* GL_SAMPLE_BUFFERS */ + 1708, /* GL_SAMPLES */ + 1724, /* GL_SAMPLE_COVERAGE_VALUE */ + 1722, /* GL_SAMPLE_COVERAGE_INVERT */ + 234, /* GL_COLOR_MATRIX */ + 236, /* GL_COLOR_MATRIX_STACK_DEPTH */ + 1022, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + 1408, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + 1404, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + 1399, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + 1395, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + 1406, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + 1402, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + 1397, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + 1393, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + 1990, /* GL_TEXTURE_COLOR_TABLE_SGI */ + 1498, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + 1992, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + 94, /* GL_BLEND_DST_RGB */ + 108, /* GL_BLEND_SRC_RGB */ + 92, /* GL_BLEND_DST_ALPHA */ + 106, /* GL_BLEND_SRC_ALPHA */ + 240, /* GL_COLOR_TABLE */ + 1418, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + 1401, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + 1484, /* GL_PROXY_COLOR_TABLE */ + 1488, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + 1487, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + 264, /* GL_COLOR_TABLE_SCALE */ + 244, /* GL_COLOR_TABLE_BIAS */ + 249, /* GL_COLOR_TABLE_FORMAT */ + 266, /* GL_COLOR_TABLE_WIDTH */ + 261, /* GL_COLOR_TABLE_RED_SIZE */ + 252, /* GL_COLOR_TABLE_GREEN_SIZE */ + 246, /* GL_COLOR_TABLE_BLUE_SIZE */ + 241, /* GL_COLOR_TABLE_ALPHA_SIZE */ + 258, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ + 255, /* GL_COLOR_TABLE_INTENSITY_SIZE */ + 79, /* GL_BGR */ + 80, /* GL_BGRA */ + 1037, /* GL_MAX_ELEMENTS_VERTICES */ + 1036, /* GL_MAX_ELEMENTS_INDICES */ + 2056, /* GL_TEXTURE_INDEX_SIZE_EXT */ + 183, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ + 1364, /* GL_POINT_SIZE_MIN */ + 1360, /* GL_POINT_SIZE_MAX */ + 1349, /* GL_POINT_FADE_THRESHOLD_SIZE */ + 1345, /* GL_POINT_DISTANCE_ATTENUATION */ + 157, /* GL_CLAMP_TO_BORDER */ + 160, /* GL_CLAMP_TO_EDGE */ + 2078, /* GL_TEXTURE_MIN_LOD */ + 2076, /* GL_TEXTURE_MAX_LOD */ + 1960, /* GL_TEXTURE_BASE_LEVEL */ + 2075, /* GL_TEXTURE_MAX_LEVEL */ + 722, /* GL_IGNORE_BORDER_HP */ + 318, /* GL_CONSTANT_BORDER_HP */ + 1592, /* GL_REPLICATE_BORDER_HP */ + 329, /* GL_CONVOLUTION_BORDER_COLOR */ + 1256, /* GL_OCCLUSION_TEST_HP */ + 1257, /* GL_OCCLUSION_TEST_RESULT_HP */ + 823, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + 1984, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + 1986, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + 1988, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + 1989, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1987, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + 1985, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + 1016, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + 1017, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1428, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + 1430, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + 1427, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + 1429, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + 2064, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + 2065, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + 2063, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + 678, /* GL_GENERATE_MIPMAP */ + 679, /* GL_GENERATE_MIPMAP_HINT */ + 591, /* GL_FOG_OFFSET_SGIX */ + 592, /* GL_FOG_OFFSET_VALUE_SGIX */ + 1998, /* GL_TEXTURE_COMPARE_SGIX */ + 1997, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + 2060, /* GL_TEXTURE_LEQUAL_R_SGIX */ + 2052, /* GL_TEXTURE_GEQUAL_R_SGIX */ + 412, /* GL_DEPTH_COMPONENT16 */ + 416, /* GL_DEPTH_COMPONENT24 */ + 420, /* GL_DEPTH_COMPONENT32 */ + 354, /* GL_CULL_VERTEX_EXT */ + 356, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + 355, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + 2284, /* GL_WRAP_BORDER_SUN */ + 1991, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + 816, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + 1758, /* GL_SINGLE_COLOR */ + 1742, /* GL_SEPARATE_SPECULAR_COLOR */ + 1753, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + 603, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + 604, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + 615, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + 606, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + 602, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + 601, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + 605, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + 616, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + 633, /* GL_FRAMEBUFFER_DEFAULT */ + 660, /* GL_FRAMEBUFFER_UNDEFINED */ + 428, /* GL_DEPTH_STENCIL_ATTACHMENT */ + 892, /* GL_MAJOR_VERSION */ + 1147, /* GL_MINOR_VERSION */ + 1237, /* GL_NUM_EXTENSIONS */ + 324, /* GL_CONTEXT_FLAGS */ + 730, /* GL_INDEX */ + 406, /* GL_DEPTH_BUFFER */ + 1832, /* GL_STENCIL_BUFFER */ + 295, /* GL_COMPRESSED_RED */ + 296, /* GL_COMPRESSED_RG */ + 2155, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + 2200, /* GL_UNSIGNED_SHORT_5_6_5 */ + 2201, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + 2197, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + 2194, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + 2169, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + 2165, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + 2073, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + 2074, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + 2072, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + 1151, /* GL_MIRRORED_REPEAT */ + 1679, /* GL_RGB_S3TC */ + 1622, /* GL_RGB4_S3TC */ + 1675, /* GL_RGBA_S3TC */ + 1661, /* GL_RGBA4_S3TC */ + 1670, /* GL_RGBA_DXT5_S3TC */ + 1658, /* GL_RGBA4_DXT5_S3TC */ + 306, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + 301, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + 302, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + 303, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + 1213, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + 1212, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + 824, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + 578, /* GL_FOG_COORDINATE_SOURCE */ + 570, /* GL_FOG_COORD */ + 594, /* GL_FRAGMENT_DEPTH */ + 360, /* GL_CURRENT_FOG_COORD */ + 577, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + 576, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + 575, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + 572, /* GL_FOG_COORDINATE_ARRAY */ + 238, /* GL_COLOR_SUM */ + 381, /* GL_CURRENT_SECONDARY_COLOR */ + 1733, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + 1735, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + 1734, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + 1732, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + 1729, /* GL_SECONDARY_COLOR_ARRAY */ + 379, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + 29, /* GL_ALIASED_POINT_SIZE_RANGE */ + 28, /* GL_ALIASED_LINE_WIDTH_RANGE */ + 1886, /* GL_TEXTURE0 */ + 1888, /* GL_TEXTURE1 */ + 1910, /* GL_TEXTURE2 */ + 1932, /* GL_TEXTURE3 */ + 1938, /* GL_TEXTURE4 */ + 1940, /* GL_TEXTURE5 */ + 1942, /* GL_TEXTURE6 */ + 1944, /* GL_TEXTURE7 */ + 1946, /* GL_TEXTURE8 */ + 1948, /* GL_TEXTURE9 */ + 1889, /* GL_TEXTURE10 */ + 1891, /* GL_TEXTURE11 */ + 1893, /* GL_TEXTURE12 */ + 1895, /* GL_TEXTURE13 */ + 1897, /* GL_TEXTURE14 */ + 1899, /* GL_TEXTURE15 */ + 1901, /* GL_TEXTURE16 */ + 1903, /* GL_TEXTURE17 */ + 1905, /* GL_TEXTURE18 */ + 1907, /* GL_TEXTURE19 */ + 1911, /* GL_TEXTURE20 */ + 1913, /* GL_TEXTURE21 */ + 1915, /* GL_TEXTURE22 */ + 1917, /* GL_TEXTURE23 */ + 1919, /* GL_TEXTURE24 */ + 1921, /* GL_TEXTURE25 */ + 1923, /* GL_TEXTURE26 */ + 1925, /* GL_TEXTURE27 */ + 1927, /* GL_TEXTURE28 */ + 1929, /* GL_TEXTURE29 */ + 1933, /* GL_TEXTURE30 */ + 1935, /* GL_TEXTURE31 */ + 19, /* GL_ACTIVE_TEXTURE */ + 163, /* GL_CLIENT_ACTIVE_TEXTURE */ + 1112, /* GL_MAX_TEXTURE_UNITS */ + 2128, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + 2131, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + 2133, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + 2125, /* GL_TRANSPOSE_COLOR_MATRIX */ + 1868, /* GL_SUBTRACT */ + 1094, /* GL_MAX_RENDERBUFFER_SIZE */ + 287, /* GL_COMPRESSED_ALPHA */ + 291, /* GL_COMPRESSED_LUMINANCE */ + 292, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + 289, /* GL_COMPRESSED_INTENSITY */ + 297, /* GL_COMPRESSED_RGB */ + 298, /* GL_COMPRESSED_RGBA */ + 2005, /* GL_TEXTURE_COMPRESSION_HINT */ + 2082, /* GL_TEXTURE_RECTANGLE */ + 1973, /* GL_TEXTURE_BINDING_RECTANGLE */ + 1501, /* GL_PROXY_TEXTURE_RECTANGLE */ + 1091, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + 427, /* GL_DEPTH_STENCIL */ + 2161, /* GL_UNSIGNED_INT_24_8 */ + 1107, /* GL_MAX_TEXTURE_LOD_BIAS */ + 2071, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + 1109, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + 2043, /* GL_TEXTURE_FILTER_CONTROL */ + 2061, /* GL_TEXTURE_LOD_BIAS */ + 271, /* GL_COMBINE4 */ + 1100, /* GL_MAX_SHININESS_NV */ + 1101, /* GL_MAX_SPOT_EXPONENT_NV */ + 728, /* GL_INCR_WRAP */ + 392, /* GL_DECR_WRAP */ + 1171, /* GL_MODELVIEW1_ARB */ + 1229, /* GL_NORMAL_MAP */ + 1552, /* GL_REFLECTION_MAP */ + 2015, /* GL_TEXTURE_CUBE_MAP */ + 1970, /* GL_TEXTURE_BINDING_CUBE_MAP */ + 2027, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + 2017, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + 2030, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + 2020, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + 2033, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + 2023, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + 1499, /* GL_PROXY_TEXTURE_CUBE_MAP */ + 1030, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + 1207, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + 1442, /* GL_PRIMITIVE_RESTART_NV */ + 1441, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + 586, /* GL_FOG_DISTANCE_MODE_NV */ + 534, /* GL_EYE_RADIAL_NV */ + 533, /* GL_EYE_PLANE_ABSOLUTE_NV */ + 270, /* GL_COMBINE */ + 277, /* GL_COMBINE_RGB */ + 272, /* GL_COMBINE_ALPHA */ + 1680, /* GL_RGB_SCALE */ + 25, /* GL_ADD_SIGNED */ + 764, /* GL_INTERPOLATE */ + 313, /* GL_CONSTANT */ + 1434, /* GL_PRIMARY_COLOR */ + 1431, /* GL_PREVIOUS */ + 1773, /* GL_SOURCE0_RGB */ + 1779, /* GL_SOURCE1_RGB */ + 1785, /* GL_SOURCE2_RGB */ + 1789, /* GL_SOURCE3_RGB_NV */ + 1770, /* GL_SOURCE0_ALPHA */ + 1776, /* GL_SOURCE1_ALPHA */ + 1782, /* GL_SOURCE2_ALPHA */ + 1788, /* GL_SOURCE3_ALPHA_NV */ + 1270, /* GL_OPERAND0_RGB */ + 1276, /* GL_OPERAND1_RGB */ + 1282, /* GL_OPERAND2_RGB */ + 1286, /* GL_OPERAND3_RGB_NV */ + 1267, /* GL_OPERAND0_ALPHA */ + 1273, /* GL_OPERAND1_ALPHA */ + 1279, /* GL_OPERAND2_ALPHA */ + 1285, /* GL_OPERAND3_ALPHA_NV */ + 137, /* GL_BUFFER_OBJECT_APPLE */ + 2213, /* GL_VERTEX_ARRAY_BINDING */ + 2080, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + 2081, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + 2289, /* GL_YCBCR_422_APPLE */ + 2202, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + 2204, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + 2092, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + 1859, /* GL_STORAGE_PRIVATE_APPLE */ + 1858, /* GL_STORAGE_CACHED_APPLE */ + 1860, /* GL_STORAGE_SHARED_APPLE */ + 1760, /* GL_SLICE_ACCUM_SUN */ + 1510, /* GL_QUAD_MESH_SUN */ + 2139, /* GL_TRIANGLE_MESH_SUN */ + 2254, /* GL_VERTEX_PROGRAM_ARB */ + 2265, /* GL_VERTEX_STATE_PROGRAM_NV */ + 2239, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + 2247, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + 2249, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + 2251, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + 383, /* GL_CURRENT_VERTEX_ATTRIB */ + 1455, /* GL_PROGRAM_LENGTH_ARB */ + 1471, /* GL_PROGRAM_STRING_ARB */ + 1194, /* GL_MODELVIEW_PROJECTION_NV */ + 721, /* GL_IDENTITY_NV */ + 796, /* GL_INVERSE_NV */ + 2130, /* GL_TRANSPOSE_NV */ + 797, /* GL_INVERSE_TRANSPOSE_NV */ + 1075, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + 1074, /* GL_MAX_PROGRAM_MATRICES_ARB */ + 956, /* GL_MATRIX0_NV */ + 968, /* GL_MATRIX1_NV */ + 980, /* GL_MATRIX2_NV */ + 984, /* GL_MATRIX3_NV */ + 986, /* GL_MATRIX4_NV */ + 988, /* GL_MATRIX5_NV */ + 990, /* GL_MATRIX6_NV */ + 992, /* GL_MATRIX7_NV */ + 366, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + 363, /* GL_CURRENT_MATRIX_ARB */ + 1468, /* GL_PROGRAM_POINT_SIZE */ + 2260, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + 1467, /* GL_PROGRAM_PARAMETER_NV */ + 2245, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + 1473, /* GL_PROGRAM_TARGET_NV */ + 1470, /* GL_PROGRAM_RESIDENT_NV */ + 2102, /* GL_TRACK_MATRIX_NV */ + 2103, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + 2255, /* GL_VERTEX_PROGRAM_BINDING_NV */ + 1449, /* GL_PROGRAM_ERROR_POSITION_ARB */ + 408, /* GL_DEPTH_CLAMP */ + 2221, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + 2228, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + 2229, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + 2230, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + 2231, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + 2232, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + 2233, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + 2234, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + 2235, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + 2236, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + 2222, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + 2223, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + 2224, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + 2225, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + 2226, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + 2227, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + 904, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + 911, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + 912, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + 913, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + 914, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + 915, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + 916, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + 917, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + 918, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + 919, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + 905, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + 906, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + 907, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + 908, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + 909, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + 910, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + 931, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + 938, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + 939, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + 940, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + 941, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + 942, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + 943, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + 1448, /* GL_PROGRAM_BINDING_ARB */ + 945, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + 946, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + 932, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + 933, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + 934, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + 935, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + 936, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + 937, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + 2003, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + 2000, /* GL_TEXTURE_COMPRESSED */ + 1235, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + 311, /* GL_COMPRESSED_TEXTURE_FORMATS */ + 1134, /* GL_MAX_VERTEX_UNITS_ARB */ + 23, /* GL_ACTIVE_VERTEX_UNITS_ARB */ + 2283, /* GL_WEIGHT_SUM_UNITY_ARB */ + 2253, /* GL_VERTEX_BLEND_ARB */ + 385, /* GL_CURRENT_WEIGHT_ARB */ + 2281, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + 2279, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + 2277, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + 2275, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + 2270, /* GL_WEIGHT_ARRAY_ARB */ + 442, /* GL_DOT3_RGB */ + 443, /* GL_DOT3_RGBA */ + 305, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + 300, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + 1202, /* GL_MULTISAMPLE_3DFX */ + 1718, /* GL_SAMPLE_BUFFERS_3DFX */ + 1709, /* GL_SAMPLES_3DFX */ + 1182, /* GL_MODELVIEW2_ARB */ + 1185, /* GL_MODELVIEW3_ARB */ + 1186, /* GL_MODELVIEW4_ARB */ + 1187, /* GL_MODELVIEW5_ARB */ + 1188, /* GL_MODELVIEW6_ARB */ + 1189, /* GL_MODELVIEW7_ARB */ + 1190, /* GL_MODELVIEW8_ARB */ + 1191, /* GL_MODELVIEW9_ARB */ + 1161, /* GL_MODELVIEW10_ARB */ + 1162, /* GL_MODELVIEW11_ARB */ + 1163, /* GL_MODELVIEW12_ARB */ + 1164, /* GL_MODELVIEW13_ARB */ + 1165, /* GL_MODELVIEW14_ARB */ + 1166, /* GL_MODELVIEW15_ARB */ + 1167, /* GL_MODELVIEW16_ARB */ + 1168, /* GL_MODELVIEW17_ARB */ + 1169, /* GL_MODELVIEW18_ARB */ + 1170, /* GL_MODELVIEW19_ARB */ + 1172, /* GL_MODELVIEW20_ARB */ + 1173, /* GL_MODELVIEW21_ARB */ + 1174, /* GL_MODELVIEW22_ARB */ + 1175, /* GL_MODELVIEW23_ARB */ + 1176, /* GL_MODELVIEW24_ARB */ + 1177, /* GL_MODELVIEW25_ARB */ + 1178, /* GL_MODELVIEW26_ARB */ + 1179, /* GL_MODELVIEW27_ARB */ + 1180, /* GL_MODELVIEW28_ARB */ + 1181, /* GL_MODELVIEW29_ARB */ + 1183, /* GL_MODELVIEW30_ARB */ + 1184, /* GL_MODELVIEW31_ARB */ + 447, /* GL_DOT3_RGB_EXT */ + 445, /* GL_DOT3_RGBA_EXT */ + 1155, /* GL_MIRROR_CLAMP_EXT */ + 1158, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + 1197, /* GL_MODULATE_ADD_ATI */ + 1198, /* GL_MODULATE_SIGNED_ADD_ATI */ + 1199, /* GL_MODULATE_SUBTRACT_ATI */ + 2290, /* GL_YCBCR_MESA */ + 1294, /* GL_PACK_INVERT_MESA */ + 388, /* GL_DEBUG_OBJECT_MESA */ + 389, /* GL_DEBUG_PRINT_MESA */ + 387, /* GL_DEBUG_ASSERT_MESA */ + 139, /* GL_BUFFER_SIZE */ + 141, /* GL_BUFFER_USAGE */ + 145, /* GL_BUMP_ROT_MATRIX_ATI */ + 146, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ + 144, /* GL_BUMP_NUM_TEX_UNITS_ATI */ + 148, /* GL_BUMP_TEX_UNITS_ATI */ + 507, /* GL_DUDV_ATI */ + 506, /* GL_DU8DV8_ATI */ + 143, /* GL_BUMP_ENVMAP_ATI */ + 147, /* GL_BUMP_TARGET_ATI */ + 1238, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + 1446, /* GL_PROGRAM_BINARY_FORMATS_OES */ + 1822, /* GL_STENCIL_BACK_FUNC */ + 1820, /* GL_STENCIL_BACK_FAIL */ + 1824, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + 1826, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + 595, /* GL_FRAGMENT_PROGRAM_ARB */ + 1444, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1476, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1475, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1458, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1464, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1463, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1064, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1089, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1088, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1077, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1083, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1082, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1652, /* GL_RGBA32F */ + 1615, /* GL_RGB32F */ + 1643, /* GL_RGBA16F */ + 1607, /* GL_RGB16F */ + 1033, /* GL_MAX_DRAW_BUFFERS */ + 451, /* GL_DRAW_BUFFER0 */ + 454, /* GL_DRAW_BUFFER1 */ + 475, /* GL_DRAW_BUFFER2 */ + 478, /* GL_DRAW_BUFFER3 */ + 481, /* GL_DRAW_BUFFER4 */ + 484, /* GL_DRAW_BUFFER5 */ + 487, /* GL_DRAW_BUFFER6 */ + 490, /* GL_DRAW_BUFFER7 */ + 493, /* GL_DRAW_BUFFER8 */ + 496, /* GL_DRAW_BUFFER9 */ + 455, /* GL_DRAW_BUFFER10 */ + 458, /* GL_DRAW_BUFFER11 */ + 461, /* GL_DRAW_BUFFER12 */ + 464, /* GL_DRAW_BUFFER13 */ + 467, /* GL_DRAW_BUFFER14 */ + 470, /* GL_DRAW_BUFFER15 */ + 97, /* GL_BLEND_EQUATION_ALPHA */ + 1007, /* GL_MATRIX_PALETTE_ARB */ + 1057, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + 1060, /* GL_MAX_PALETTE_MATRICES_ARB */ + 369, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + 995, /* GL_MATRIX_INDEX_ARRAY_ARB */ + 364, /* GL_CURRENT_MATRIX_INDEX_ARB */ + 1000, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + 1004, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + 1002, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + 998, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + 2038, /* GL_TEXTURE_DEPTH_SIZE */ + 435, /* GL_DEPTH_TEXTURE_MODE */ + 1995, /* GL_TEXTURE_COMPARE_MODE */ + 1993, /* GL_TEXTURE_COMPARE_FUNC */ + 281, /* GL_COMPARE_REF_TO_TEXTURE */ + 1371, /* GL_POINT_SPRITE */ + 343, /* GL_COORD_REPLACE */ + 1376, /* GL_POINT_SPRITE_R_MODE_NV */ + 1516, /* GL_QUERY_COUNTER_BITS */ + 372, /* GL_CURRENT_QUERY */ + 1520, /* GL_QUERY_RESULT */ + 1522, /* GL_QUERY_RESULT_AVAILABLE */ + 1126, /* GL_MAX_VERTEX_ATTRIBS */ + 2243, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + 433, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + 432, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + 1103, /* GL_MAX_TEXTURE_COORDS */ + 1105, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + 1451, /* GL_PROGRAM_ERROR_STRING_ARB */ + 1453, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + 1452, /* GL_PROGRAM_FORMAT_ARB */ + 2094, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + 405, /* GL_DEPTH_BOUNDS_TEST_EXT */ + 404, /* GL_DEPTH_BOUNDS_EXT */ + 61, /* GL_ARRAY_BUFFER */ + 520, /* GL_ELEMENT_ARRAY_BUFFER */ + 62, /* GL_ARRAY_BUFFER_BINDING */ + 521, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + 2215, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + 1224, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + 187, /* GL_COLOR_ARRAY_BUFFER_BINDING */ + 732, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + 2008, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + 516, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + 1730, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + 573, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + 2271, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + 2237, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + 1454, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + 1070, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + 1460, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1079, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1474, /* GL_PROGRAM_TEMPORARIES_ARB */ + 1085, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + 1462, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1081, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1466, /* GL_PROGRAM_PARAMETERS_ARB */ + 1084, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + 1461, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1080, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1445, /* GL_PROGRAM_ATTRIBS_ARB */ + 1065, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + 1459, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1078, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1443, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1063, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1457, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1076, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1071, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + 1067, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + 1477, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + 2127, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + 1539, /* GL_READ_ONLY */ + 2285, /* GL_WRITE_ONLY */ + 1541, /* GL_READ_WRITE */ + 124, /* GL_BUFFER_ACCESS */ + 129, /* GL_BUFFER_MAPPED */ + 134, /* GL_BUFFER_MAP_POINTER */ + 2101, /* GL_TIME_ELAPSED_EXT */ + 955, /* GL_MATRIX0_ARB */ + 967, /* GL_MATRIX1_ARB */ + 979, /* GL_MATRIX2_ARB */ + 983, /* GL_MATRIX3_ARB */ + 985, /* GL_MATRIX4_ARB */ + 987, /* GL_MATRIX5_ARB */ + 989, /* GL_MATRIX6_ARB */ + 991, /* GL_MATRIX7_ARB */ + 993, /* GL_MATRIX8_ARB */ + 994, /* GL_MATRIX9_ARB */ + 957, /* GL_MATRIX10_ARB */ + 958, /* GL_MATRIX11_ARB */ + 959, /* GL_MATRIX12_ARB */ + 960, /* GL_MATRIX13_ARB */ + 961, /* GL_MATRIX14_ARB */ + 962, /* GL_MATRIX15_ARB */ + 963, /* GL_MATRIX16_ARB */ + 964, /* GL_MATRIX17_ARB */ + 965, /* GL_MATRIX18_ARB */ + 966, /* GL_MATRIX19_ARB */ + 969, /* GL_MATRIX20_ARB */ + 970, /* GL_MATRIX21_ARB */ + 971, /* GL_MATRIX22_ARB */ + 972, /* GL_MATRIX23_ARB */ + 973, /* GL_MATRIX24_ARB */ + 974, /* GL_MATRIX25_ARB */ + 975, /* GL_MATRIX26_ARB */ + 976, /* GL_MATRIX27_ARB */ + 977, /* GL_MATRIX28_ARB */ + 978, /* GL_MATRIX29_ARB */ + 981, /* GL_MATRIX30_ARB */ + 982, /* GL_MATRIX31_ARB */ + 1863, /* GL_STREAM_DRAW */ + 1865, /* GL_STREAM_READ */ + 1861, /* GL_STREAM_COPY */ + 1812, /* GL_STATIC_DRAW */ + 1814, /* GL_STATIC_READ */ + 1810, /* GL_STATIC_COPY */ + 510, /* GL_DYNAMIC_DRAW */ + 512, /* GL_DYNAMIC_READ */ + 508, /* GL_DYNAMIC_COPY */ + 1334, /* GL_PIXEL_PACK_BUFFER */ + 1338, /* GL_PIXEL_UNPACK_BUFFER */ + 1335, /* GL_PIXEL_PACK_BUFFER_BINDING */ + 1339, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + 396, /* GL_DEPTH24_STENCIL8 */ + 2090, /* GL_TEXTURE_STENCIL_SIZE */ + 2036, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + 1066, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + 1069, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + 1073, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + 1072, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + 2241, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + 1012, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + 1149, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + 1086, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + 1854, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + 18, /* GL_ACTIVE_STENCIL_FACE_EXT */ + 1156, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + 1711, /* GL_SAMPLES_PASSED */ + 688, /* GL_GEOMETRY_VERTICES_OUT */ + 682, /* GL_GEOMETRY_INPUT_TYPE */ + 684, /* GL_GEOMETRY_OUTPUT_TYPE */ + 156, /* GL_CLAMP_READ_COLOR */ + 546, /* GL_FIXED_ONLY */ + 1358, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + 1357, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + 1356, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + 1193, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + 1480, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + 2070, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + 138, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ + 128, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ + 1556, /* GL_RELEASED_APPLE */ + 2268, /* GL_VOLATILE_APPLE */ + 1595, /* GL_RETAINED_APPLE */ + 2144, /* GL_UNDEFINED_APPLE */ + 1504, /* GL_PURGEABLE_APPLE */ + 596, /* GL_FRAGMENT_SHADER */ + 2263, /* GL_VERTEX_SHADER */ + 1465, /* GL_PROGRAM_OBJECT_ARB */ + 1747, /* GL_SHADER_OBJECT_ARB */ + 1041, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + 1131, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + 1122, /* GL_MAX_VARYING_COMPONENTS */ + 1129, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + 1024, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + 1254, /* GL_OBJECT_TYPE_ARB */ + 1749, /* GL_SHADER_TYPE */ + 561, /* GL_FLOAT_VEC2 */ + 563, /* GL_FLOAT_VEC3 */ + 565, /* GL_FLOAT_VEC4 */ + 784, /* GL_INT_VEC2 */ + 786, /* GL_INT_VEC3 */ + 788, /* GL_INT_VEC4 */ + 116, /* GL_BOOL */ + 118, /* GL_BOOL_VEC2 */ + 120, /* GL_BOOL_VEC3 */ + 122, /* GL_BOOL_VEC4 */ + 549, /* GL_FLOAT_MAT2 */ + 553, /* GL_FLOAT_MAT3 */ + 557, /* GL_FLOAT_MAT4 */ + 1687, /* GL_SAMPLER_1D */ + 1693, /* GL_SAMPLER_2D */ + 1701, /* GL_SAMPLER_3D */ + 1705, /* GL_SAMPLER_CUBE */ + 1692, /* GL_SAMPLER_1D_SHADOW */ + 1700, /* GL_SAMPLER_2D_SHADOW */ + 1698, /* GL_SAMPLER_2D_RECT */ + 1699, /* GL_SAMPLER_2D_RECT_SHADOW */ + 551, /* GL_FLOAT_MAT2x3 */ + 552, /* GL_FLOAT_MAT2x4 */ + 555, /* GL_FLOAT_MAT3x2 */ + 556, /* GL_FLOAT_MAT3x4 */ + 559, /* GL_FLOAT_MAT4x2 */ + 560, /* GL_FLOAT_MAT4x3 */ + 394, /* GL_DELETE_STATUS */ + 286, /* GL_COMPILE_STATUS */ + 845, /* GL_LINK_STATUS */ + 2209, /* GL_VALIDATE_STATUS */ + 744, /* GL_INFO_LOG_LENGTH */ + 64, /* GL_ATTACHED_SHADERS */ + 21, /* GL_ACTIVE_UNIFORMS */ + 22, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ + 1748, /* GL_SHADER_SOURCE_LENGTH */ 15, /* GL_ACTIVE_ATTRIBUTES */ 16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */ - 562, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - 1572, /* GL_SHADING_LANGUAGE_VERSION */ - 337, /* GL_CURRENT_PROGRAM */ - 1198, /* GL_PALETTE4_RGB8_OES */ - 1200, /* GL_PALETTE4_RGBA8_OES */ - 1196, /* GL_PALETTE4_R5_G6_B5_OES */ - 1199, /* GL_PALETTE4_RGBA4_OES */ - 1197, /* GL_PALETTE4_RGB5_A1_OES */ - 1203, /* GL_PALETTE8_RGB8_OES */ - 1205, /* GL_PALETTE8_RGBA8_OES */ - 1201, /* GL_PALETTE8_R5_G6_B5_OES */ - 1204, /* GL_PALETTE8_RGBA4_OES */ - 1202, /* GL_PALETTE8_RGB5_A1_OES */ - 682, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - 680, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - 1250, /* GL_POINT_SIZE_ARRAY_OES */ - 1825, /* GL_TEXTURE_CROP_RECT_OES */ - 912, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ - 1249, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ - 1967, /* GL_UNSIGNED_NORMALIZED */ - 1771, /* GL_TEXTURE_1D_ARRAY_EXT */ - 1381, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ - 1773, /* GL_TEXTURE_2D_ARRAY_EXT */ - 1384, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ - 1780, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ - 1782, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ - 958, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ - 1625, /* GL_SRGB */ - 1626, /* GL_SRGB8 */ - 1628, /* GL_SRGB_ALPHA */ - 1627, /* GL_SRGB8_ALPHA8 */ - 1585, /* GL_SLUMINANCE_ALPHA */ - 1584, /* GL_SLUMINANCE8_ALPHA8 */ - 1582, /* GL_SLUMINANCE */ - 1583, /* GL_SLUMINANCE8 */ - 280, /* GL_COMPRESSED_SRGB */ - 281, /* GL_COMPRESSED_SRGB_ALPHA */ - 278, /* GL_COMPRESSED_SLUMINANCE */ - 279, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - 1925, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ - 1919, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ - 1021, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ - 1924, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ - 1922, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ - 1921, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ - 1332, /* GL_PRIMITIVES_GENERATED_EXT */ - 1923, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ - 1412, /* GL_RASTERIZER_DISCARD_EXT */ - 1019, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ - 1020, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ - 712, /* GL_INTERLEAVED_ATTRIBS_EXT */ - 1562, /* GL_SEPARATE_ATTRIBS_EXT */ - 1918, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ - 1917, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ - 1268, /* GL_POINT_SPRITE_COORD_ORIGIN */ - 784, /* GL_LOWER_LEFT */ - 1981, /* GL_UPPER_LEFT */ - 1649, /* GL_STENCIL_BACK_REF */ - 1650, /* GL_STENCIL_BACK_VALUE_MASK */ - 1651, /* GL_STENCIL_BACK_WRITEMASK */ - 465, /* GL_DRAW_FRAMEBUFFER_BINDING */ - 1438, /* GL_RENDERBUFFER_BINDING */ - 1415, /* GL_READ_FRAMEBUFFER */ - 464, /* GL_DRAW_FRAMEBUFFER */ - 1416, /* GL_READ_FRAMEBUFFER_BINDING */ - 1457, /* GL_RENDERBUFFER_SAMPLES */ - 575, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - 572, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - 587, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - 582, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - 585, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - 593, /* GL_FRAMEBUFFER_COMPLETE */ - 598, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - 612, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - 607, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - 602, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - 608, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - 604, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - 617, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - 623, /* GL_FRAMEBUFFER_UNSUPPORTED */ - 621, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - 934, /* GL_MAX_COLOR_ATTACHMENTS */ - 167, /* GL_COLOR_ATTACHMENT0 */ - 170, /* GL_COLOR_ATTACHMENT1 */ - 184, /* GL_COLOR_ATTACHMENT2 */ - 186, /* GL_COLOR_ATTACHMENT3 */ - 188, /* GL_COLOR_ATTACHMENT4 */ - 190, /* GL_COLOR_ATTACHMENT5 */ - 192, /* GL_COLOR_ATTACHMENT6 */ - 194, /* GL_COLOR_ATTACHMENT7 */ - 196, /* GL_COLOR_ATTACHMENT8 */ - 198, /* GL_COLOR_ATTACHMENT9 */ - 171, /* GL_COLOR_ATTACHMENT10 */ - 173, /* GL_COLOR_ATTACHMENT11 */ - 175, /* GL_COLOR_ATTACHMENT12 */ - 177, /* GL_COLOR_ATTACHMENT13 */ - 179, /* GL_COLOR_ATTACHMENT14 */ - 181, /* GL_COLOR_ATTACHMENT15 */ - 365, /* GL_DEPTH_ATTACHMENT */ - 1638, /* GL_STENCIL_ATTACHMENT */ - 564, /* GL_FRAMEBUFFER */ - 1435, /* GL_RENDERBUFFER */ - 1461, /* GL_RENDERBUFFER_WIDTH */ - 1448, /* GL_RENDERBUFFER_HEIGHT */ - 1451, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - 1669, /* GL_STENCIL_INDEX_EXT */ - 1658, /* GL_STENCIL_INDEX1 */ - 1663, /* GL_STENCIL_INDEX4 */ - 1666, /* GL_STENCIL_INDEX8 */ - 1659, /* GL_STENCIL_INDEX16 */ - 1455, /* GL_RENDERBUFFER_RED_SIZE */ - 1446, /* GL_RENDERBUFFER_GREEN_SIZE */ - 1441, /* GL_RENDERBUFFER_BLUE_SIZE */ - 1436, /* GL_RENDERBUFFER_ALPHA_SIZE */ - 1443, /* GL_RENDERBUFFER_DEPTH_SIZE */ - 1459, /* GL_RENDERBUFFER_STENCIL_SIZE */ - 615, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - 1001, /* GL_MAX_SAMPLES */ - 1861, /* GL_TEXTURE_GEN_STR_OES */ - 655, /* GL_HALF_FLOAT_OES */ - 1489, /* GL_RGB565_OES */ - 571, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ - 611, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ - 610, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ - 646, /* GL_GEOMETRY_SHADER_ARB */ - 647, /* GL_GEOMETRY_VERTICES_OUT_ARB */ - 644, /* GL_GEOMETRY_INPUT_TYPE_ARB */ - 645, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ - 961, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ - 1035, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ - 960, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ - 957, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ - 959, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ - 785, /* GL_LOW_FLOAT */ - 1037, /* GL_MEDIUM_FLOAT */ - 656, /* GL_HIGH_FLOAT */ - 786, /* GL_LOW_INT */ - 1038, /* GL_MEDIUM_INT */ - 657, /* GL_HIGH_INT */ - 1958, /* GL_UNSIGNED_INT_10_10_10_2_OES */ - 716, /* GL_INT_10_10_10_2_OES */ - 1566, /* GL_SHADER_BINARY_FORMATS */ - 1134, /* GL_NUM_SHADER_BINARY_FORMATS */ - 1567, /* GL_SHADER_COMPILER */ - 1032, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ - 1025, /* GL_MAX_VARYING_VECTORS */ - 956, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ - 1409, /* GL_QUERY_WAIT_NV */ - 1404, /* GL_QUERY_NO_WAIT_NV */ - 1401, /* GL_QUERY_BY_REGION_WAIT_NV */ - 1400, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ - 1914, /* GL_TRANSFORM_FEEDBACK */ - 1920, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ - 1916, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ - 1915, /* GL_TRANSFORM_FEEDBACK_BINDING */ - 1396, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - 507, /* GL_FIRST_VERTEX_CONVENTION */ - 733, /* GL_LAST_VERTEX_CONVENTION */ - 1373, /* GL_PROVOKING_VERTEX */ - 316, /* GL_COPY_READ_BUFFER */ - 317, /* GL_COPY_WRITE_BUFFER */ - 1516, /* GL_RGBA_SNORM */ - 1512, /* GL_RGBA8_SNORM */ - 1578, /* GL_SIGNED_NORMALIZED */ - 1003, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - 1148, /* GL_OBJECT_TYPE */ - 1690, /* GL_SYNC_CONDITION */ - 1695, /* GL_SYNC_STATUS */ - 1692, /* GL_SYNC_FLAGS */ - 1691, /* GL_SYNC_FENCE */ - 1694, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - 1952, /* GL_UNSIGNALED */ - 1577, /* GL_SIGNALED */ - 46, /* GL_ALREADY_SIGNALED */ - 1909, /* GL_TIMEOUT_EXPIRED */ - 283, /* GL_CONDITION_SATISFIED */ - 2042, /* GL_WAIT_FAILED */ - 492, /* GL_EVAL_BIT */ - 1413, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - 778, /* GL_LIST_BIT */ - 1790, /* GL_TEXTURE_BIT */ - 1548, /* GL_SCISSOR_BIT */ - 29, /* GL_ALL_ATTRIB_BITS */ - 1100, /* GL_MULTISAMPLE_BIT */ - 30, /* GL_ALL_CLIENT_ATTRIB_BITS */ + 598, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + 1751, /* GL_SHADING_LANGUAGE_VERSION */ + 371, /* GL_CURRENT_PROGRAM */ + 1303, /* GL_PALETTE4_RGB8_OES */ + 1305, /* GL_PALETTE4_RGBA8_OES */ + 1301, /* GL_PALETTE4_R5_G6_B5_OES */ + 1304, /* GL_PALETTE4_RGBA4_OES */ + 1302, /* GL_PALETTE4_RGB5_A1_OES */ + 1308, /* GL_PALETTE8_RGB8_OES */ + 1310, /* GL_PALETTE8_RGBA8_OES */ + 1306, /* GL_PALETTE8_R5_G6_B5_OES */ + 1309, /* GL_PALETTE8_RGBA4_OES */ + 1307, /* GL_PALETTE8_RGB5_A1_OES */ + 726, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + 724, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + 1355, /* GL_POINT_SIZE_ARRAY_OES */ + 2014, /* GL_TEXTURE_CROP_RECT_OES */ + 996, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + 1354, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + 2192, /* GL_UNSIGNED_NORMALIZED */ + 1951, /* GL_TEXTURE_1D_ARRAY */ + 1490, /* GL_PROXY_TEXTURE_1D_ARRAY */ + 1954, /* GL_TEXTURE_2D_ARRAY */ + 1494, /* GL_PROXY_TEXTURE_2D_ARRAY */ + 1962, /* GL_TEXTURE_BINDING_1D_ARRAY */ + 1965, /* GL_TEXTURE_BINDING_2D_ARRAY */ + 1048, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + 1981, /* GL_TEXTURE_BUFFER */ + 1102, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + 1969, /* GL_TEXTURE_BINDING_BUFFER */ + 1982, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + 1983, /* GL_TEXTURE_BUFFER_FORMAT */ + 1527, /* GL_R11F_G11F_B10F */ + 2158, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + 1638, /* GL_RGB9_E5 */ + 2167, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + 2088, /* GL_TEXTURE_SHARED_SIZE */ + 1804, /* GL_SRGB */ + 1805, /* GL_SRGB8 */ + 1807, /* GL_SRGB_ALPHA */ + 1806, /* GL_SRGB8_ALPHA8 */ + 1764, /* GL_SLUMINANCE_ALPHA */ + 1763, /* GL_SLUMINANCE8_ALPHA8 */ + 1761, /* GL_SLUMINANCE */ + 1762, /* GL_SLUMINANCE8 */ + 309, /* GL_COMPRESSED_SRGB */ + 310, /* GL_COMPRESSED_SRGB_ALPHA */ + 307, /* GL_COMPRESSED_SLUMINANCE */ + 308, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ + 2123, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + 2112, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + 1120, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + 2121, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + 2117, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + 2115, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + 1437, /* GL_PRIMITIVES_GENERATED */ + 2119, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + 1531, /* GL_RASTERIZER_DISCARD */ + 1116, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + 1118, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + 762, /* GL_INTERLEAVED_ATTRIBS */ + 1740, /* GL_SEPARATE_ATTRIBS */ + 2107, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + 2109, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + 1373, /* GL_POINT_SPRITE_COORD_ORIGIN */ + 853, /* GL_LOWER_LEFT */ + 2206, /* GL_UPPER_LEFT */ + 1828, /* GL_STENCIL_BACK_REF */ + 1829, /* GL_STENCIL_BACK_VALUE_MASK */ + 1830, /* GL_STENCIL_BACK_WRITEMASK */ + 500, /* GL_DRAW_FRAMEBUFFER_BINDING */ + 1561, /* GL_RENDERBUFFER_BINDING */ + 1535, /* GL_READ_FRAMEBUFFER */ + 499, /* GL_DRAW_FRAMEBUFFER */ + 1536, /* GL_READ_FRAMEBUFFER_BINDING */ + 1580, /* GL_RENDERBUFFER_SAMPLES */ + 612, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + 609, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + 624, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + 619, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + 622, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + 630, /* GL_FRAMEBUFFER_COMPLETE */ + 635, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + 650, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + 644, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + 639, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + 645, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + 641, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + 655, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + 661, /* GL_FRAMEBUFFER_UNSUPPORTED */ + 659, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + 1020, /* GL_MAX_COLOR_ATTACHMENTS */ + 193, /* GL_COLOR_ATTACHMENT0 */ + 196, /* GL_COLOR_ATTACHMENT1 */ + 210, /* GL_COLOR_ATTACHMENT2 */ + 212, /* GL_COLOR_ATTACHMENT3 */ + 214, /* GL_COLOR_ATTACHMENT4 */ + 216, /* GL_COLOR_ATTACHMENT5 */ + 218, /* GL_COLOR_ATTACHMENT6 */ + 220, /* GL_COLOR_ATTACHMENT7 */ + 222, /* GL_COLOR_ATTACHMENT8 */ + 224, /* GL_COLOR_ATTACHMENT9 */ + 197, /* GL_COLOR_ATTACHMENT10 */ + 199, /* GL_COLOR_ATTACHMENT11 */ + 201, /* GL_COLOR_ATTACHMENT12 */ + 203, /* GL_COLOR_ATTACHMENT13 */ + 205, /* GL_COLOR_ATTACHMENT14 */ + 207, /* GL_COLOR_ATTACHMENT15 */ + 399, /* GL_DEPTH_ATTACHMENT */ + 1817, /* GL_STENCIL_ATTACHMENT */ + 600, /* GL_FRAMEBUFFER */ + 1558, /* GL_RENDERBUFFER */ + 1584, /* GL_RENDERBUFFER_WIDTH */ + 1571, /* GL_RENDERBUFFER_HEIGHT */ + 1574, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + 1849, /* GL_STENCIL_INDEX_EXT */ + 1838, /* GL_STENCIL_INDEX1 */ + 1843, /* GL_STENCIL_INDEX4 */ + 1846, /* GL_STENCIL_INDEX8 */ + 1839, /* GL_STENCIL_INDEX16 */ + 1578, /* GL_RENDERBUFFER_RED_SIZE */ + 1569, /* GL_RENDERBUFFER_GREEN_SIZE */ + 1564, /* GL_RENDERBUFFER_BLUE_SIZE */ + 1559, /* GL_RENDERBUFFER_ALPHA_SIZE */ + 1566, /* GL_RENDERBUFFER_DEPTH_SIZE */ + 1582, /* GL_RENDERBUFFER_STENCIL_SIZE */ + 653, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + 1097, /* GL_MAX_SAMPLES */ + 2050, /* GL_TEXTURE_GEN_STR_OES */ + 699, /* GL_HALF_FLOAT_OES */ + 1625, /* GL_RGB565_OES */ + 1655, /* GL_RGBA32UI */ + 1618, /* GL_RGB32UI */ + 40, /* GL_ALPHA32UI_EXT */ + 754, /* GL_INTENSITY32UI_EXT */ + 870, /* GL_LUMINANCE32UI_EXT */ + 887, /* GL_LUMINANCE_ALPHA32UI_EXT */ + 1646, /* GL_RGBA16UI */ + 1610, /* GL_RGB16UI */ + 37, /* GL_ALPHA16UI_EXT */ + 751, /* GL_INTENSITY16UI_EXT */ + 865, /* GL_LUMINANCE16UI_EXT */ + 885, /* GL_LUMINANCE_ALPHA16UI_EXT */ + 1665, /* GL_RGBA8UI */ + 1633, /* GL_RGB8UI */ + 45, /* GL_ALPHA8UI_EXT */ + 759, /* GL_INTENSITY8UI_EXT */ + 879, /* GL_LUMINANCE8UI_EXT */ + 889, /* GL_LUMINANCE_ALPHA8UI_EXT */ + 1653, /* GL_RGBA32I */ + 1616, /* GL_RGB32I */ + 39, /* GL_ALPHA32I_EXT */ + 753, /* GL_INTENSITY32I_EXT */ + 869, /* GL_LUMINANCE32I_EXT */ + 886, /* GL_LUMINANCE_ALPHA32I_EXT */ + 1644, /* GL_RGBA16I */ + 1608, /* GL_RGB16I */ + 36, /* GL_ALPHA16I_EXT */ + 750, /* GL_INTENSITY16I_EXT */ + 864, /* GL_LUMINANCE16I_EXT */ + 884, /* GL_LUMINANCE_ALPHA16I_EXT */ + 1663, /* GL_RGBA8I */ + 1631, /* GL_RGB8I */ + 44, /* GL_ALPHA8I_EXT */ + 758, /* GL_INTENSITY8I_EXT */ + 878, /* GL_LUMINANCE8I_EXT */ + 888, /* GL_LUMINANCE_ALPHA8I_EXT */ + 1548, /* GL_RED_INTEGER */ + 695, /* GL_GREEN_INTEGER */ + 113, /* GL_BLUE_INTEGER */ + 49, /* GL_ALPHA_INTEGER_EXT */ + 1677, /* GL_RGB_INTEGER */ + 1671, /* GL_RGBA_INTEGER */ + 84, /* GL_BGR_INTEGER */ + 82, /* GL_BGRA_INTEGER */ + 891, /* GL_LUMINANCE_INTEGER_EXT */ + 890, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + 1673, /* GL_RGBA_INTEGER_MODE_EXT */ + 607, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + 648, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + 647, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + 1688, /* GL_SAMPLER_1D_ARRAY */ + 1694, /* GL_SAMPLER_2D_ARRAY */ + 1703, /* GL_SAMPLER_BUFFER */ + 1690, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + 1696, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + 1706, /* GL_SAMPLER_CUBE_SHADOW */ + 2186, /* GL_UNSIGNED_INT_VEC2 */ + 2188, /* GL_UNSIGNED_INT_VEC3 */ + 2190, /* GL_UNSIGNED_INT_VEC4 */ + 768, /* GL_INT_SAMPLER_1D */ + 772, /* GL_INT_SAMPLER_2D */ + 778, /* GL_INT_SAMPLER_3D */ + 782, /* GL_INT_SAMPLER_CUBE */ + 776, /* GL_INT_SAMPLER_2D_RECT */ + 769, /* GL_INT_SAMPLER_1D_ARRAY */ + 773, /* GL_INT_SAMPLER_2D_ARRAY */ + 780, /* GL_INT_SAMPLER_BUFFER */ + 2170, /* GL_UNSIGNED_INT_SAMPLER_1D */ + 2174, /* GL_UNSIGNED_INT_SAMPLER_2D */ + 2180, /* GL_UNSIGNED_INT_SAMPLER_3D */ + 2184, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + 2178, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + 2171, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + 2175, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + 2182, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + 686, /* GL_GEOMETRY_SHADER */ + 689, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + 683, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + 685, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + 1054, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + 1136, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + 1052, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + 1046, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + 1050, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + 854, /* GL_LOW_FLOAT */ + 1138, /* GL_MEDIUM_FLOAT */ + 700, /* GL_HIGH_FLOAT */ + 855, /* GL_LOW_INT */ + 1139, /* GL_MEDIUM_INT */ + 701, /* GL_HIGH_INT */ + 2160, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + 767, /* GL_INT_10_10_10_2_OES */ + 1745, /* GL_SHADER_BINARY_FORMATS */ + 1239, /* GL_NUM_SHADER_BINARY_FORMATS */ + 1746, /* GL_SHADER_COMPILER */ + 1133, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + 1125, /* GL_MAX_VARYING_VECTORS */ + 1043, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + 1524, /* GL_QUERY_WAIT */ + 1518, /* GL_QUERY_NO_WAIT */ + 1514, /* GL_QUERY_BY_REGION_WAIT */ + 1512, /* GL_QUERY_BY_REGION_NO_WAIT */ + 2105, /* GL_TRANSFORM_FEEDBACK */ + 2114, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + 2108, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + 2106, /* GL_TRANSFORM_FEEDBACK_BINDING */ + 1508, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + 542, /* GL_FIRST_VERTEX_CONVENTION */ + 800, /* GL_LAST_VERTEX_CONVENTION */ + 1482, /* GL_PROVOKING_VERTEX */ + 350, /* GL_COPY_READ_BUFFER */ + 351, /* GL_COPY_WRITE_BUFFER */ + 1551, /* GL_RED_SNORM */ + 1684, /* GL_RG_SNORM */ + 1683, /* GL_RGB_SNORM */ + 1676, /* GL_RGBA_SNORM */ + 1530, /* GL_R8_SNORM */ + 1598, /* GL_RG8_SNORM */ + 1637, /* GL_RGB8_SNORM */ + 1669, /* GL_RGBA8_SNORM */ + 1528, /* GL_R16_SNORM */ + 1597, /* GL_RG16_SNORM */ + 1613, /* GL_RGB16_SNORM */ + 1649, /* GL_RGBA16_SNORM */ + 1757, /* GL_SIGNED_NORMALIZED */ + 1439, /* GL_PRIMITIVE_RESTART */ + 1440, /* GL_PRIMITIVE_RESTART_INDEX */ + 1099, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + 1253, /* GL_OBJECT_TYPE */ + 1870, /* GL_SYNC_CONDITION */ + 1875, /* GL_SYNC_STATUS */ + 1872, /* GL_SYNC_FLAGS */ + 1871, /* GL_SYNC_FENCE */ + 1874, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + 2153, /* GL_UNSIGNALED */ + 1756, /* GL_SIGNALED */ + 54, /* GL_ALREADY_SIGNALED */ + 2100, /* GL_TIMEOUT_EXPIRED */ + 312, /* GL_CONDITION_SATISFIED */ + 2269, /* GL_WAIT_FAILED */ + 126, /* GL_BUFFER_ACCESS_FLAGS */ + 132, /* GL_BUFFER_MAP_LENGTH */ + 133, /* GL_BUFFER_MAP_OFFSET */ + 1128, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + 1044, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + 1045, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + 1040, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + 326, /* GL_CONTEXT_PROFILE_MASK */ + 527, /* GL_EVAL_BIT */ + 1533, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + 847, /* GL_LIST_BIT */ + 1976, /* GL_TEXTURE_BIT */ + 1726, /* GL_SCISSOR_BIT */ + 30, /* GL_ALL_ATTRIB_BITS */ + 1204, /* GL_MULTISAMPLE_BIT */ + 31, /* GL_ALL_CLIENT_ATTRIB_BITS */ }; typedef int (*cfunc)(const void *, const void *); diff --git a/src/mesa/main/enums.h b/src/mesa/main/enums.h index b5f69001b8..c03cd34da9 100644 --- a/src/mesa/main/enums.h +++ b/src/mesa/main/enums.h @@ -36,6 +36,7 @@ #ifndef _ENUMS_H_ #define _ENUMS_H_ +#include "mfeatures.h" #if defined(_HAVE_FULL_GL) && _HAVE_FULL_GL diff --git a/src/mesa/main/es_generator.py b/src/mesa/main/es_generator.py index ecb34bb5cd..aa8dab7a74 100644 --- a/src/mesa/main/es_generator.py +++ b/src/mesa/main/es_generator.py @@ -191,6 +191,8 @@ print """ #include "%s" #include "%s" #include "main/mfeatures.h" +#include "main/compiler.h" +#include "main/api_exec.h" #if FEATURE_%s """ % (versionHeader, versionExtHeader, shortname.upper()) @@ -206,50 +208,7 @@ typedef double GLclampd; /* Mesa error handling requires these */ extern void *_mesa_get_current_context(void); extern void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... ); - -#include "main/compiler.h" -#include "main/api_exec.h" -#include "main/remap.h" - -/* cannot include main/dispatch.h here */ -#ifdef IN_DRI_DRIVER -#define _GLAPI_USE_REMAP_TABLE -#endif -/* glapi uses GLAPIENTRY while GLES headers define GL_APIENTRY */ -#ifndef GLAPIENTRY -#define GLAPIENTRY GL_APIENTRY -#endif -#include "%sapi/glapi/glapitable.h" -#include "%sapi/glapi/glapioffsets.h" -#include "%sapi/glapi/glapidispatch.h" - -#if FEATURE_remap_table - -#if !FEATURE_GL -int driDispatchRemapTable[driDispatchRemapTable_size]; -#endif - -#define need_MESA_remap_table - -#include "%sapi/main/remap_helper.h" - -void -_mesa_init_remap_table_%s(void) -{ - _mesa_do_init_remap_table(_mesa_function_pool, - driDispatchRemapTable_size, - MESA_remap_table_functions); -} - -void -_mesa_map_static_functions_%s(void) -{ -} - -#endif - -typedef void (*_glapi_proc)(void); /* generic function pointer */ -""" % (shortname, shortname, shortname, shortname, shortname, shortname); +""" # Finally we get to the all-important functions print """/************************************************************* @@ -713,15 +672,73 @@ for funcName in keys: # end for each function print """ +#include "glapi/glapi.h" + +#if FEATURE_remap_table + +/* cannot include main/dispatch.h here */ +#define _GLAPI_USE_REMAP_TABLE +#include "%sapi/main/glapidispatch.h" + +#define need_MESA_remap_table +#include "%sapi/main/remap_helper.h" + +/* force SET_* macros to use the local remap table */ +#define driDispatchRemapTable remap_table +static int remap_table[driDispatchRemapTable_size]; + +static void +init_remap_table(void) +{ + _glthread_DECLARE_STATIC_MUTEX(mutex); + static GLboolean initialized = GL_FALSE; + const struct gl_function_pool_remap *remap = MESA_remap_table_functions; + int i; + + _glthread_LOCK_MUTEX(mutex); + if (initialized) { + _glthread_UNLOCK_MUTEX(mutex); + return; + } + + for (i = 0; i < driDispatchRemapTable_size; i++) { + GLint offset; + const char *spec; + + /* sanity check */ + ASSERT(i == remap[i].remap_index); + spec = _mesa_function_pool + remap[i].pool_index; + + offset = _mesa_map_function_spec(spec); + remap_table[i] = offset; + } + initialized = GL_TRUE; + _glthread_UNLOCK_MUTEX(mutex); +} + +#else /* FEATURE_remap_table */ + +/* cannot include main/dispatch.h here */ +#include "%sapi/main/glapidispatch.h" + +static INLINE void +init_remap_table(void) +{ +} + +#endif /* FEATURE_remap_table */ + struct _glapi_table * _mesa_create_exec_table_%s(void) { struct _glapi_table *exec; - exec = _mesa_alloc_dispatch_table(sizeof *exec); + + exec = _mesa_alloc_dispatch_table(_gloffset_COUNT); if (exec == NULL) return NULL; -""" % shortname + init_remap_table(); +""" % (shortname, shortname, shortname, shortname) for func in keys: prefix = "_es_" if func not in allSpecials else "_check_" diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index bc8cbef132..3d5830c01c 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -128,6 +128,7 @@ static const struct { { OFF, "GL_EXT_framebuffer_sRGB", F(EXT_framebuffer_sRGB) }, { OFF, "GL_EXT_fog_coord", F(EXT_fog_coord) }, { OFF, "GL_EXT_gpu_program_parameters", F(EXT_gpu_program_parameters) }, + { OFF, "GL_EXT_gpu_shader4", F(EXT_gpu_shader4) }, { ON, "GL_EXT_multi_draw_arrays", F(EXT_multi_draw_arrays) }, { OFF, "GL_EXT_packed_depth_stencil", F(EXT_packed_depth_stencil) }, { OFF, "GL_EXT_packed_float", F(EXT_packed_float) }, @@ -139,6 +140,7 @@ static const struct { { OFF, "GL_EXT_provoking_vertex", F(EXT_provoking_vertex) }, { ON, "GL_EXT_rescale_normal", F(EXT_rescale_normal) }, { OFF, "GL_EXT_secondary_color", F(EXT_secondary_color) }, + { OFF, "GL_EXT_separate_shader_objects", F(EXT_separate_shader_objects) }, { ON, "GL_EXT_separate_specular_color", F(EXT_separate_specular_color) }, { OFF, "GL_EXT_shadow_funcs", F(EXT_shadow_funcs) }, { OFF, "GL_EXT_shared_texture_palette", F(EXT_shared_texture_palette) }, @@ -260,6 +262,7 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) ctx->Extensions.ARB_point_sprite = GL_TRUE; #if FEATURE_ARB_shader_objects ctx->Extensions.ARB_shader_objects = GL_TRUE; + ctx->Extensions.EXT_separate_shader_objects = GL_TRUE; #endif #if FEATURE_ARB_shading_language_100 ctx->Extensions.ARB_shading_language_100 = GL_TRUE; diff --git a/src/mesa/main/extensions.h b/src/mesa/main/extensions.h index 6eb8539396..a9ed41f86b 100644 --- a/src/mesa/main/extensions.h +++ b/src/mesa/main/extensions.h @@ -36,7 +36,10 @@ #ifndef _EXTENSIONS_H_ #define _EXTENSIONS_H_ -#include "mtypes.h" +#include "glheader.h" +#include "mfeatures.h" + +struct gl_context; #if _HAVE_FULL_GL diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 3dc78f2bf5..7c3357043f 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -255,7 +255,8 @@ _mesa_get_fb0_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, * point. Update reference counts, etc. */ void -_mesa_remove_attachment(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) +_mesa_remove_attachment(struct gl_context *ctx, + struct gl_renderbuffer_attachment *att) { if (att->Type == GL_TEXTURE) { ASSERT(att->Texture); @@ -340,7 +341,8 @@ _mesa_set_renderbuffer_attachment(struct gl_context *ctx, * Attach a renderbuffer object to a framebuffer object. */ void -_mesa_framebuffer_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, +_mesa_framebuffer_renderbuffer(struct gl_context *ctx, + struct gl_framebuffer *fb, GLenum attachment, struct gl_renderbuffer *rb) { struct gl_renderbuffer_attachment *att; @@ -397,6 +399,44 @@ fbo_incomplete(const char *msg, int index) } +/** + * Is the given base format a legal format for a color renderbuffer? + */ +static GLboolean +is_legal_color_format(const struct gl_context *ctx, GLenum baseFormat) +{ + switch (baseFormat) { + case GL_RGB: + case GL_RGBA: + return GL_TRUE; + case GL_LUMINANCE: + case GL_LUMINANCE_ALPHA: + case GL_INTENSITY: + case GL_ALPHA: + return ctx->Extensions.ARB_framebuffer_object; + case GL_RED: + case GL_RG: + return ctx->Extensions.ARB_texture_rg; + default: + return GL_FALSE; + } +} + + +/** + * Is the given base format a legal format for a depth/stencil renderbuffer? + */ +static GLboolean +is_legal_depth_format(const struct gl_context *ctx, GLenum baseFormat) +{ + switch (baseFormat) { + case GL_DEPTH_COMPONENT: + case GL_DEPTH_STENCIL_EXT: + return GL_TRUE; + default: + return GL_FALSE; + } +} /** @@ -448,14 +488,7 @@ test_attachment_completeness(const struct gl_context *ctx, GLenum format, baseFormat = _mesa_get_format_base_format(texImage->TexFormat); if (format == GL_COLOR) { - if (baseFormat != GL_RGB && - baseFormat != GL_RGBA && - (!ctx->Extensions.ARB_framebuffer_object || - baseFormat != GL_ALPHA) && - (!ctx->Extensions.ARB_texture_rg || - baseFormat != GL_RED) && - (!ctx->Extensions.ARB_texture_rg || - baseFormat != GL_RG)) { + if (!is_legal_color_format(ctx, baseFormat)) { att_incomplete("bad format"); att->Complete = GL_FALSE; return; @@ -563,7 +596,8 @@ test_attachment_completeness(const struct gl_context *ctx, GLenum format, * framebuffer is complete. */ void -_mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffer *fb) +_mesa_test_framebuffer_completeness(struct gl_context *ctx, + struct gl_framebuffer *fb) { GLuint numImages; GLenum intFormat = GL_NONE; /* color buffers' internal format */ @@ -586,6 +620,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffe for (i = -2; i < (GLint) ctx->Const.MaxColorAttachments; i++) { struct gl_renderbuffer_attachment *att; GLenum f; + gl_format mesaFormat; /* * XXX for ARB_fbo, only check color buffers that are named by @@ -632,12 +667,10 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffe minHeight = MIN2(minHeight, texImg->Height); maxHeight = MAX2(maxHeight, texImg->Height); f = texImg->_BaseFormat; + mesaFormat = texImg->TexFormat; numImages++; - if (f != GL_RGB && f != GL_RGBA && f != GL_DEPTH_COMPONENT - && f != GL_DEPTH_STENCIL_EXT - && (!ctx->Extensions.ARB_framebuffer_object || f != GL_ALPHA) - && (!ctx->Extensions.ARB_texture_rg || f != GL_RED) - && (!ctx->Extensions.ARB_texture_rg || f != GL_RG)) { + if (!is_legal_color_format(ctx, f) && + !is_legal_depth_format(ctx, f)) { fb->_Status = GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT; fbo_incomplete("texture attachment incomplete", -1); return; @@ -649,6 +682,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffe minHeight = MIN2(minHeight, att->Renderbuffer->Height); maxHeight = MAX2(minHeight, att->Renderbuffer->Height); f = att->Renderbuffer->InternalFormat; + mesaFormat = att->Renderbuffer->Format; numImages++; } else { @@ -661,6 +695,9 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffe numSamples = att->Renderbuffer->NumSamples; } + /* check if integer color */ + fb->_IntegerColor = _mesa_is_format_integer_color(mesaFormat); + /* Error-check width, height, format, samples */ if (numImages == 1) { diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h index 9e18e538a6..2aace2ebd4 100644 --- a/src/mesa/main/fbobject.h +++ b/src/mesa/main/fbobject.h @@ -26,7 +26,10 @@ #ifndef FBOBJECT_H #define FBOBJECT_H -#include "mtypes.h" +#include "glheader.h" + +struct gl_context; +struct gl_texture_object; extern void _mesa_init_fbobjects(struct gl_context *ctx); diff --git a/src/mesa/main/ffvertex_prog.h b/src/mesa/main/ffvertex_prog.h index 72cd6ea115..837a15efca 100644 --- a/src/mesa/main/ffvertex_prog.h +++ b/src/mesa/main/ffvertex_prog.h @@ -30,7 +30,7 @@ #define FFVERTEX_PROG_H -#include "main/mtypes.h" +struct gl_context; struct gl_vertex_program * _mesa_get_fixed_func_vertex_program(struct gl_context *ctx); diff --git a/src/mesa/main/fog.h b/src/mesa/main/fog.h index 7df4f0b673..9191a4a54c 100644 --- a/src/mesa/main/fog.h +++ b/src/mesa/main/fog.h @@ -37,7 +37,10 @@ #define FOG_H -#include "mtypes.h" +#include "glheader.h" +#include "mfeatures.h" + +struct gl_context; #if _HAVE_FULL_GL diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index 654ea038a5..88a04e888e 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -945,6 +945,7 @@ _mesa_get_format_bits(gl_format format, GLenum pname) * GL_UNSIGNED_NORMALIZED = unsigned int representing [0,1] * GL_SIGNED_NORMALIZED = signed int representing [-1, 1] * GL_UNSIGNED_INT = an ordinary unsigned integer + * GL_INT = an ordinary signed integer * GL_FLOAT = an ordinary float */ GLenum @@ -1007,6 +1008,20 @@ _mesa_is_format_packed_depth_stencil(gl_format format) /** + * Is the given format a signed/unsigned integer color format? + */ +GLboolean +_mesa_is_format_integer_color(gl_format format) +{ + const struct gl_format_info *info = _mesa_get_format_info(format); + return (info->DataType == GL_INT || info->DataType == GL_UNSIGNED_INT) && + info->BaseFormat != GL_DEPTH_COMPONENT && + info->BaseFormat != GL_DEPTH_STENCIL && + info->BaseFormat != GL_STENCIL_INDEX; +} + + +/** * Return color encoding for given format. * \return GL_LINEAR or GL_SRGB */ @@ -1179,6 +1194,7 @@ _mesa_format_to_type_and_comps(gl_format format, case MESA_FORMAT_ARGB8888: case MESA_FORMAT_ARGB8888_REV: case MESA_FORMAT_XRGB8888: + case MESA_FORMAT_XRGB8888_REV: *datatype = GL_UNSIGNED_BYTE; *comps = 4; return; @@ -1205,6 +1221,11 @@ _mesa_format_to_type_and_comps(gl_format format, *comps = 4; return; + case MESA_FORMAT_RGBA5551: + *datatype = GL_UNSIGNED_SHORT_5_5_5_1; + *comps = 4; + return; + case MESA_FORMAT_AL88: case MESA_FORMAT_AL88_REV: case MESA_FORMAT_RG88: @@ -1236,6 +1257,7 @@ _mesa_format_to_type_and_comps(gl_format format, case MESA_FORMAT_I8: case MESA_FORMAT_CI8: case MESA_FORMAT_R8: + case MESA_FORMAT_S8: *datatype = GL_UNSIGNED_BYTE; *comps = 1; return; @@ -1281,12 +1303,26 @@ _mesa_format_to_type_and_comps(gl_format format, *comps = 2; return; + case MESA_FORMAT_SIGNED_R8: + *datatype = GL_BYTE; + *comps = 1; + return; + case MESA_FORMAT_SIGNED_RG88: + *datatype = GL_BYTE; + *comps = 2; + return; case MESA_FORMAT_SIGNED_RGBA8888: case MESA_FORMAT_SIGNED_RGBA8888_REV: + case MESA_FORMAT_SIGNED_RGBX8888: *datatype = GL_BYTE; *comps = 4; return; + case MESA_FORMAT_RGBA_16: + *datatype = GL_UNSIGNED_SHORT; + *comps = 4; + return; + case MESA_FORMAT_SIGNED_R_16: *datatype = GL_SHORT; *comps = 1; @@ -1411,9 +1447,14 @@ _mesa_format_to_type_and_comps(gl_format format, *comps = 4; return; - + case MESA_FORMAT_NONE: + case MESA_FORMAT_COUNT: + /* For debug builds, warn if any formats are not handled */ +#ifndef DEBUG default: - _mesa_problem(NULL, "bad format in _mesa_format_to_type_and_comps"); +#endif + _mesa_problem(NULL, "bad format %s in _mesa_format_to_type_and_comps", + _mesa_get_format_name(format)); *datatype = 0; *comps = 1; } diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index 7674d8eaa4..eeb460dabe 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -199,6 +199,9 @@ _mesa_is_format_compressed(gl_format format); extern GLboolean _mesa_is_format_packed_depth_stencil(gl_format format); +extern GLboolean +_mesa_is_format_integer_color(gl_format format); + extern GLenum _mesa_get_format_color_encoding(gl_format format); diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c index 7d55a84dfc..5530c51c89 100644 --- a/src/mesa/main/framebuffer.c +++ b/src/mesa/main/framebuffer.c @@ -875,6 +875,16 @@ _mesa_source_buffer_exists(struct gl_context *ctx, GLenum format) case GL_BGRA: case GL_ABGR_EXT: case GL_COLOR_INDEX: + case GL_RED_INTEGER_EXT: + case GL_GREEN_INTEGER_EXT: + case GL_BLUE_INTEGER_EXT: + case GL_ALPHA_INTEGER_EXT: + case GL_RGB_INTEGER_EXT: + case GL_RGBA_INTEGER_EXT: + case GL_BGR_INTEGER_EXT: + case GL_BGRA_INTEGER_EXT: + case GL_LUMINANCE_INTEGER_EXT: + case GL_LUMINANCE_ALPHA_INTEGER_EXT: if (ctx->ReadBuffer->_ColorReadBuffer == NULL) { return GL_FALSE; } @@ -951,6 +961,16 @@ _mesa_dest_buffer_exists(struct gl_context *ctx, GLenum format) case GL_BGRA: case GL_ABGR_EXT: case GL_COLOR_INDEX: + case GL_RED_INTEGER_EXT: + case GL_GREEN_INTEGER_EXT: + case GL_BLUE_INTEGER_EXT: + case GL_ALPHA_INTEGER_EXT: + case GL_RGB_INTEGER_EXT: + case GL_RGBA_INTEGER_EXT: + case GL_BGR_INTEGER_EXT: + case GL_BGRA_INTEGER_EXT: + case GL_LUMINANCE_INTEGER_EXT: + case GL_LUMINANCE_ALPHA_INTEGER_EXT: /* Nothing special since GL_DRAW_BUFFER could be GL_NONE. */ /* Could assert that colorbuffer has RedBits > 0 */ break; diff --git a/src/mesa/main/framebuffer.h b/src/mesa/main/framebuffer.h index 13722ea457..20e3ff56b5 100644 --- a/src/mesa/main/framebuffer.h +++ b/src/mesa/main/framebuffer.h @@ -26,7 +26,10 @@ #ifndef FRAMEBUFFER_H #define FRAMEBUFFER_H -#include "mtypes.h" +#include "glheader.h" + +struct gl_config; +struct gl_context; extern struct gl_framebuffer * _mesa_create_framebuffer(const struct gl_config *visual); diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 29a21deebc..b54af6ee86 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -173,6 +173,7 @@ union value { #define BUFFER_INT(field) BUFFER_FIELD(field, TYPE_INT) #define BUFFER_ENUM(field) BUFFER_FIELD(field, TYPE_ENUM) +#define BUFFER_BOOL(field) BUFFER_FIELD(field, TYPE_BOOLEAN) #define CONTEXT_INT(field) CONTEXT_FIELD(field, TYPE_INT) #define CONTEXT_INT2(field) CONTEXT_FIELD(field, TYPE_INT_2) @@ -260,6 +261,17 @@ static const int extra_EXT_fog_coord_flush_current[] = { EXTRA_END }; +static const int extra_EXT_texture_integer[] = { + EXT(EXT_texture_integer), + EXTRA_END +}; + +static const int extra_EXT_gpu_shader4[] = { + EXT(EXT_gpu_shader4), + EXTRA_END +}; + + EXTRA_EXT(ARB_multitexture); EXTRA_EXT(ARB_texture_cube_map); EXTRA_EXT(MESA_texture_array); @@ -285,7 +297,7 @@ EXTRA_EXT(ARB_shader_objects); EXTRA_EXT(EXT_provoking_vertex); EXTRA_EXT(ARB_fragment_shader); EXTRA_EXT(ARB_fragment_program); -EXTRA_EXT(ARB_framebuffer_object); +EXTRA_EXT2(ARB_framebuffer_object, EXT_framebuffer_multisample); EXTRA_EXT(EXT_framebuffer_object); EXTRA_EXT(APPLE_vertex_array_object); EXTRA_EXT(ARB_seamless_cube_map); @@ -1130,7 +1142,7 @@ static const struct value_desc values[] = { /* GL_ARB_framebuffer_object */ { GL_MAX_SAMPLES, CONTEXT_INT(Const.MaxSamples), - extra_ARB_framebuffer_object }, + extra_ARB_framebuffer_object_EXT_framebuffer_multisample }, /* GL_APPLE_vertex_array_object */ { GL_VERTEX_ARRAY_BINDING_APPLE, ARRAY_INT(Name), @@ -1144,6 +1156,10 @@ static const struct value_desc values[] = { { GL_MAX_SERVER_WAIT_TIMEOUT, CONTEXT_INT64(Const.MaxServerWaitTimeout), extra_ARB_sync }, + /* GL_EXT_texture_integer */ + { GL_RGBA_INTEGER_MODE_EXT, BUFFER_BOOL(_IntegerColor), + extra_EXT_texture_integer }, + /* GL_EXT_transform_feedback */ { GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, LOC_CUSTOM, TYPE_INT, 0, extra_EXT_transform_feedback }, @@ -1187,6 +1203,14 @@ static const struct value_desc values[] = { CONTEXT_INT(Const.GeometryProgram.MaxVertexVaryingComponents), extra_ARB_geometry_shader4 }, + /* GL_EXT_gpu_shader4 / GL 3.0 */ + { GL_MIN_PROGRAM_TEXEL_OFFSET, + CONTEXT_INT(Const.MinProgramTexelOffset), + extra_EXT_gpu_shader4 }, + { GL_MAX_PROGRAM_TEXEL_OFFSET, + CONTEXT_INT(Const.MaxProgramTexelOffset), + extra_EXT_gpu_shader4 }, + /* GL 3.0 */ { GL_NUM_EXTENSIONS, LOC_CUSTOM, TYPE_INT, 0, extra_version_30 }, { GL_MAJOR_VERSION, CONTEXT_INT(VersionMajor), extra_version_30 }, @@ -1568,7 +1592,7 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu break; case GL_CURRENT_PROGRAM: v->value_int = - ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0; + ctx->Shader.ActiveProgram ? ctx->Shader.ActiveProgram->Name : 0; break; case GL_READ_FRAMEBUFFER_BINDING_EXT: v->value_int = ctx->ReadBuffer->Name; diff --git a/src/mesa/main/glapidispatch.h b/src/mesa/main/glapidispatch.h new file mode 100644 index 0000000000..87784269c5 --- /dev/null +++ b/src/mesa/main/glapidispatch.h @@ -0,0 +1,4548 @@ +/* DO NOT EDIT - This file generated automatically by gl_table.py (from Mesa) script */ + +/* + * (C) Copyright IBM Corporation 2005 + * 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, sub license, + * 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 (including the next + * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL + * IBM, + * AND/OR THEIR SUPPLIERS 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. + */ + +#if !defined( _GLAPI_DISPATCH_H_ ) +# define _GLAPI_DISPATCH_H_ + + +/* this file should not be included directly in mesa */ + +/** + * \file glapidispatch.h + * Macros for handling GL dispatch tables. + * + * For each known GL function, there are 3 macros in this file. The first + * macro is named CALL_FuncName and is used to call that GL function using + * the specified dispatch table. The other 2 macros, called GET_FuncName + * can SET_FuncName, are used to get and set the dispatch pointer for the + * named function in the specified dispatch table. + */ + +#define CALL_by_offset(disp, cast, offset, parameters) \ + (*(cast (GET_by_offset(disp, offset)))) parameters +#define GET_by_offset(disp, offset) \ + (offset >= 0) ? (((_glapi_proc *)(disp))[offset]) : NULL +#define SET_by_offset(disp, offset, fn) \ + do { \ + if ( (offset) < 0 ) { \ + /* fprintf( stderr, "[%s:%u] SET_by_offset(%p, %d, %s)!\n", */ \ + /* __func__, __LINE__, disp, offset, # fn); */ \ + /* abort(); */ \ + } \ + else { \ + ( (_glapi_proc *) (disp) )[offset] = (_glapi_proc) fn; \ + } \ + } while(0) + +/* total number of offsets below */ +#define _gloffset_COUNT 881 + +#define _gloffset_NewList 0 +#define _gloffset_EndList 1 +#define _gloffset_CallList 2 +#define _gloffset_CallLists 3 +#define _gloffset_DeleteLists 4 +#define _gloffset_GenLists 5 +#define _gloffset_ListBase 6 +#define _gloffset_Begin 7 +#define _gloffset_Bitmap 8 +#define _gloffset_Color3b 9 +#define _gloffset_Color3bv 10 +#define _gloffset_Color3d 11 +#define _gloffset_Color3dv 12 +#define _gloffset_Color3f 13 +#define _gloffset_Color3fv 14 +#define _gloffset_Color3i 15 +#define _gloffset_Color3iv 16 +#define _gloffset_Color3s 17 +#define _gloffset_Color3sv 18 +#define _gloffset_Color3ub 19 +#define _gloffset_Color3ubv 20 +#define _gloffset_Color3ui 21 +#define _gloffset_Color3uiv 22 +#define _gloffset_Color3us 23 +#define _gloffset_Color3usv 24 +#define _gloffset_Color4b 25 +#define _gloffset_Color4bv 26 +#define _gloffset_Color4d 27 +#define _gloffset_Color4dv 28 +#define _gloffset_Color4f 29 +#define _gloffset_Color4fv 30 +#define _gloffset_Color4i 31 +#define _gloffset_Color4iv 32 +#define _gloffset_Color4s 33 +#define _gloffset_Color4sv 34 +#define _gloffset_Color4ub 35 +#define _gloffset_Color4ubv 36 +#define _gloffset_Color4ui 37 +#define _gloffset_Color4uiv 38 +#define _gloffset_Color4us 39 +#define _gloffset_Color4usv 40 +#define _gloffset_EdgeFlag 41 +#define _gloffset_EdgeFlagv 42 +#define _gloffset_End 43 +#define _gloffset_Indexd 44 +#define _gloffset_Indexdv 45 +#define _gloffset_Indexf 46 +#define _gloffset_Indexfv 47 +#define _gloffset_Indexi 48 +#define _gloffset_Indexiv 49 +#define _gloffset_Indexs 50 +#define _gloffset_Indexsv 51 +#define _gloffset_Normal3b 52 +#define _gloffset_Normal3bv 53 +#define _gloffset_Normal3d 54 +#define _gloffset_Normal3dv 55 +#define _gloffset_Normal3f 56 +#define _gloffset_Normal3fv 57 +#define _gloffset_Normal3i 58 +#define _gloffset_Normal3iv 59 +#define _gloffset_Normal3s 60 +#define _gloffset_Normal3sv 61 +#define _gloffset_RasterPos2d 62 +#define _gloffset_RasterPos2dv 63 +#define _gloffset_RasterPos2f 64 +#define _gloffset_RasterPos2fv 65 +#define _gloffset_RasterPos2i 66 +#define _gloffset_RasterPos2iv 67 +#define _gloffset_RasterPos2s 68 +#define _gloffset_RasterPos2sv 69 +#define _gloffset_RasterPos3d 70 +#define _gloffset_RasterPos3dv 71 +#define _gloffset_RasterPos3f 72 +#define _gloffset_RasterPos3fv 73 +#define _gloffset_RasterPos3i 74 +#define _gloffset_RasterPos3iv 75 +#define _gloffset_RasterPos3s 76 +#define _gloffset_RasterPos3sv 77 +#define _gloffset_RasterPos4d 78 +#define _gloffset_RasterPos4dv 79 +#define _gloffset_RasterPos4f 80 +#define _gloffset_RasterPos4fv 81 +#define _gloffset_RasterPos4i 82 +#define _gloffset_RasterPos4iv 83 +#define _gloffset_RasterPos4s 84 +#define _gloffset_RasterPos4sv 85 +#define _gloffset_Rectd 86 +#define _gloffset_Rectdv 87 +#define _gloffset_Rectf 88 +#define _gloffset_Rectfv 89 +#define _gloffset_Recti 90 +#define _gloffset_Rectiv 91 +#define _gloffset_Rects 92 +#define _gloffset_Rectsv 93 +#define _gloffset_TexCoord1d 94 +#define _gloffset_TexCoord1dv 95 +#define _gloffset_TexCoord1f 96 +#define _gloffset_TexCoord1fv 97 +#define _gloffset_TexCoord1i 98 +#define _gloffset_TexCoord1iv 99 +#define _gloffset_TexCoord1s 100 +#define _gloffset_TexCoord1sv 101 +#define _gloffset_TexCoord2d 102 +#define _gloffset_TexCoord2dv 103 +#define _gloffset_TexCoord2f 104 +#define _gloffset_TexCoord2fv 105 +#define _gloffset_TexCoord2i 106 +#define _gloffset_TexCoord2iv 107 +#define _gloffset_TexCoord2s 108 +#define _gloffset_TexCoord2sv 109 +#define _gloffset_TexCoord3d 110 +#define _gloffset_TexCoord3dv 111 +#define _gloffset_TexCoord3f 112 +#define _gloffset_TexCoord3fv 113 +#define _gloffset_TexCoord3i 114 +#define _gloffset_TexCoord3iv 115 +#define _gloffset_TexCoord3s 116 +#define _gloffset_TexCoord3sv 117 +#define _gloffset_TexCoord4d 118 +#define _gloffset_TexCoord4dv 119 +#define _gloffset_TexCoord4f 120 +#define _gloffset_TexCoord4fv 121 +#define _gloffset_TexCoord4i 122 +#define _gloffset_TexCoord4iv 123 +#define _gloffset_TexCoord4s 124 +#define _gloffset_TexCoord4sv 125 +#define _gloffset_Vertex2d 126 +#define _gloffset_Vertex2dv 127 +#define _gloffset_Vertex2f 128 +#define _gloffset_Vertex2fv 129 +#define _gloffset_Vertex2i 130 +#define _gloffset_Vertex2iv 131 +#define _gloffset_Vertex2s 132 +#define _gloffset_Vertex2sv 133 +#define _gloffset_Vertex3d 134 +#define _gloffset_Vertex3dv 135 +#define _gloffset_Vertex3f 136 +#define _gloffset_Vertex3fv 137 +#define _gloffset_Vertex3i 138 +#define _gloffset_Vertex3iv 139 +#define _gloffset_Vertex3s 140 +#define _gloffset_Vertex3sv 141 +#define _gloffset_Vertex4d 142 +#define _gloffset_Vertex4dv 143 +#define _gloffset_Vertex4f 144 +#define _gloffset_Vertex4fv 145 +#define _gloffset_Vertex4i 146 +#define _gloffset_Vertex4iv 147 +#define _gloffset_Vertex4s 148 +#define _gloffset_Vertex4sv 149 +#define _gloffset_ClipPlane 150 +#define _gloffset_ColorMaterial 151 +#define _gloffset_CullFace 152 +#define _gloffset_Fogf 153 +#define _gloffset_Fogfv 154 +#define _gloffset_Fogi 155 +#define _gloffset_Fogiv 156 +#define _gloffset_FrontFace 157 +#define _gloffset_Hint 158 +#define _gloffset_Lightf 159 +#define _gloffset_Lightfv 160 +#define _gloffset_Lighti 161 +#define _gloffset_Lightiv 162 +#define _gloffset_LightModelf 163 +#define _gloffset_LightModelfv 164 +#define _gloffset_LightModeli 165 +#define _gloffset_LightModeliv 166 +#define _gloffset_LineStipple 167 +#define _gloffset_LineWidth 168 +#define _gloffset_Materialf 169 +#define _gloffset_Materialfv 170 +#define _gloffset_Materiali 171 +#define _gloffset_Materialiv 172 +#define _gloffset_PointSize 173 +#define _gloffset_PolygonMode 174 +#define _gloffset_PolygonStipple 175 +#define _gloffset_Scissor 176 +#define _gloffset_ShadeModel 177 +#define _gloffset_TexParameterf 178 +#define _gloffset_TexParameterfv 179 +#define _gloffset_TexParameteri 180 +#define _gloffset_TexParameteriv 181 +#define _gloffset_TexImage1D 182 +#define _gloffset_TexImage2D 183 +#define _gloffset_TexEnvf 184 +#define _gloffset_TexEnvfv 185 +#define _gloffset_TexEnvi 186 +#define _gloffset_TexEnviv 187 +#define _gloffset_TexGend 188 +#define _gloffset_TexGendv 189 +#define _gloffset_TexGenf 190 +#define _gloffset_TexGenfv 191 +#define _gloffset_TexGeni 192 +#define _gloffset_TexGeniv 193 +#define _gloffset_FeedbackBuffer 194 +#define _gloffset_SelectBuffer 195 +#define _gloffset_RenderMode 196 +#define _gloffset_InitNames 197 +#define _gloffset_LoadName 198 +#define _gloffset_PassThrough 199 +#define _gloffset_PopName 200 +#define _gloffset_PushName 201 +#define _gloffset_DrawBuffer 202 +#define _gloffset_Clear 203 +#define _gloffset_ClearAccum 204 +#define _gloffset_ClearIndex 205 +#define _gloffset_ClearColor 206 +#define _gloffset_ClearStencil 207 +#define _gloffset_ClearDepth 208 +#define _gloffset_StencilMask 209 +#define _gloffset_ColorMask 210 +#define _gloffset_DepthMask 211 +#define _gloffset_IndexMask 212 +#define _gloffset_Accum 213 +#define _gloffset_Disable 214 +#define _gloffset_Enable 215 +#define _gloffset_Finish 216 +#define _gloffset_Flush 217 +#define _gloffset_PopAttrib 218 +#define _gloffset_PushAttrib 219 +#define _gloffset_Map1d 220 +#define _gloffset_Map1f 221 +#define _gloffset_Map2d 222 +#define _gloffset_Map2f 223 +#define _gloffset_MapGrid1d 224 +#define _gloffset_MapGrid1f 225 +#define _gloffset_MapGrid2d 226 +#define _gloffset_MapGrid2f 227 +#define _gloffset_EvalCoord1d 228 +#define _gloffset_EvalCoord1dv 229 +#define _gloffset_EvalCoord1f 230 +#define _gloffset_EvalCoord1fv 231 +#define _gloffset_EvalCoord2d 232 +#define _gloffset_EvalCoord2dv 233 +#define _gloffset_EvalCoord2f 234 +#define _gloffset_EvalCoord2fv 235 +#define _gloffset_EvalMesh1 236 +#define _gloffset_EvalPoint1 237 +#define _gloffset_EvalMesh2 238 +#define _gloffset_EvalPoint2 239 +#define _gloffset_AlphaFunc 240 +#define _gloffset_BlendFunc 241 +#define _gloffset_LogicOp 242 +#define _gloffset_StencilFunc 243 +#define _gloffset_StencilOp 244 +#define _gloffset_DepthFunc 245 +#define _gloffset_PixelZoom 246 +#define _gloffset_PixelTransferf 247 +#define _gloffset_PixelTransferi 248 +#define _gloffset_PixelStoref 249 +#define _gloffset_PixelStorei 250 +#define _gloffset_PixelMapfv 251 +#define _gloffset_PixelMapuiv 252 +#define _gloffset_PixelMapusv 253 +#define _gloffset_ReadBuffer 254 +#define _gloffset_CopyPixels 255 +#define _gloffset_ReadPixels 256 +#define _gloffset_DrawPixels 257 +#define _gloffset_GetBooleanv 258 +#define _gloffset_GetClipPlane 259 +#define _gloffset_GetDoublev 260 +#define _gloffset_GetError 261 +#define _gloffset_GetFloatv 262 +#define _gloffset_GetIntegerv 263 +#define _gloffset_GetLightfv 264 +#define _gloffset_GetLightiv 265 +#define _gloffset_GetMapdv 266 +#define _gloffset_GetMapfv 267 +#define _gloffset_GetMapiv 268 +#define _gloffset_GetMaterialfv 269 +#define _gloffset_GetMaterialiv 270 +#define _gloffset_GetPixelMapfv 271 +#define _gloffset_GetPixelMapuiv 272 +#define _gloffset_GetPixelMapusv 273 +#define _gloffset_GetPolygonStipple 274 +#define _gloffset_GetString 275 +#define _gloffset_GetTexEnvfv 276 +#define _gloffset_GetTexEnviv 277 +#define _gloffset_GetTexGendv 278 +#define _gloffset_GetTexGenfv 279 +#define _gloffset_GetTexGeniv 280 +#define _gloffset_GetTexImage 281 +#define _gloffset_GetTexParameterfv 282 +#define _gloffset_GetTexParameteriv 283 +#define _gloffset_GetTexLevelParameterfv 284 +#define _gloffset_GetTexLevelParameteriv 285 +#define _gloffset_IsEnabled 286 +#define _gloffset_IsList 287 +#define _gloffset_DepthRange 288 +#define _gloffset_Frustum 289 +#define _gloffset_LoadIdentity 290 +#define _gloffset_LoadMatrixf 291 +#define _gloffset_LoadMatrixd 292 +#define _gloffset_MatrixMode 293 +#define _gloffset_MultMatrixf 294 +#define _gloffset_MultMatrixd 295 +#define _gloffset_Ortho 296 +#define _gloffset_PopMatrix 297 +#define _gloffset_PushMatrix 298 +#define _gloffset_Rotated 299 +#define _gloffset_Rotatef 300 +#define _gloffset_Scaled 301 +#define _gloffset_Scalef 302 +#define _gloffset_Translated 303 +#define _gloffset_Translatef 304 +#define _gloffset_Viewport 305 +#define _gloffset_ArrayElement 306 +#define _gloffset_BindTexture 307 +#define _gloffset_ColorPointer 308 +#define _gloffset_DisableClientState 309 +#define _gloffset_DrawArrays 310 +#define _gloffset_DrawElements 311 +#define _gloffset_EdgeFlagPointer 312 +#define _gloffset_EnableClientState 313 +#define _gloffset_IndexPointer 314 +#define _gloffset_Indexub 315 +#define _gloffset_Indexubv 316 +#define _gloffset_InterleavedArrays 317 +#define _gloffset_NormalPointer 318 +#define _gloffset_PolygonOffset 319 +#define _gloffset_TexCoordPointer 320 +#define _gloffset_VertexPointer 321 +#define _gloffset_AreTexturesResident 322 +#define _gloffset_CopyTexImage1D 323 +#define _gloffset_CopyTexImage2D 324 +#define _gloffset_CopyTexSubImage1D 325 +#define _gloffset_CopyTexSubImage2D 326 +#define _gloffset_DeleteTextures 327 +#define _gloffset_GenTextures 328 +#define _gloffset_GetPointerv 329 +#define _gloffset_IsTexture 330 +#define _gloffset_PrioritizeTextures 331 +#define _gloffset_TexSubImage1D 332 +#define _gloffset_TexSubImage2D 333 +#define _gloffset_PopClientAttrib 334 +#define _gloffset_PushClientAttrib 335 +#define _gloffset_BlendColor 336 +#define _gloffset_BlendEquation 337 +#define _gloffset_DrawRangeElements 338 +#define _gloffset_ColorTable 339 +#define _gloffset_ColorTableParameterfv 340 +#define _gloffset_ColorTableParameteriv 341 +#define _gloffset_CopyColorTable 342 +#define _gloffset_GetColorTable 343 +#define _gloffset_GetColorTableParameterfv 344 +#define _gloffset_GetColorTableParameteriv 345 +#define _gloffset_ColorSubTable 346 +#define _gloffset_CopyColorSubTable 347 +#define _gloffset_ConvolutionFilter1D 348 +#define _gloffset_ConvolutionFilter2D 349 +#define _gloffset_ConvolutionParameterf 350 +#define _gloffset_ConvolutionParameterfv 351 +#define _gloffset_ConvolutionParameteri 352 +#define _gloffset_ConvolutionParameteriv 353 +#define _gloffset_CopyConvolutionFilter1D 354 +#define _gloffset_CopyConvolutionFilter2D 355 +#define _gloffset_GetConvolutionFilter 356 +#define _gloffset_GetConvolutionParameterfv 357 +#define _gloffset_GetConvolutionParameteriv 358 +#define _gloffset_GetSeparableFilter 359 +#define _gloffset_SeparableFilter2D 360 +#define _gloffset_GetHistogram 361 +#define _gloffset_GetHistogramParameterfv 362 +#define _gloffset_GetHistogramParameteriv 363 +#define _gloffset_GetMinmax 364 +#define _gloffset_GetMinmaxParameterfv 365 +#define _gloffset_GetMinmaxParameteriv 366 +#define _gloffset_Histogram 367 +#define _gloffset_Minmax 368 +#define _gloffset_ResetHistogram 369 +#define _gloffset_ResetMinmax 370 +#define _gloffset_TexImage3D 371 +#define _gloffset_TexSubImage3D 372 +#define _gloffset_CopyTexSubImage3D 373 +#define _gloffset_ActiveTextureARB 374 +#define _gloffset_ClientActiveTextureARB 375 +#define _gloffset_MultiTexCoord1dARB 376 +#define _gloffset_MultiTexCoord1dvARB 377 +#define _gloffset_MultiTexCoord1fARB 378 +#define _gloffset_MultiTexCoord1fvARB 379 +#define _gloffset_MultiTexCoord1iARB 380 +#define _gloffset_MultiTexCoord1ivARB 381 +#define _gloffset_MultiTexCoord1sARB 382 +#define _gloffset_MultiTexCoord1svARB 383 +#define _gloffset_MultiTexCoord2dARB 384 +#define _gloffset_MultiTexCoord2dvARB 385 +#define _gloffset_MultiTexCoord2fARB 386 +#define _gloffset_MultiTexCoord2fvARB 387 +#define _gloffset_MultiTexCoord2iARB 388 +#define _gloffset_MultiTexCoord2ivARB 389 +#define _gloffset_MultiTexCoord2sARB 390 +#define _gloffset_MultiTexCoord2svARB 391 +#define _gloffset_MultiTexCoord3dARB 392 +#define _gloffset_MultiTexCoord3dvARB 393 +#define _gloffset_MultiTexCoord3fARB 394 +#define _gloffset_MultiTexCoord3fvARB 395 +#define _gloffset_MultiTexCoord3iARB 396 +#define _gloffset_MultiTexCoord3ivARB 397 +#define _gloffset_MultiTexCoord3sARB 398 +#define _gloffset_MultiTexCoord3svARB 399 +#define _gloffset_MultiTexCoord4dARB 400 +#define _gloffset_MultiTexCoord4dvARB 401 +#define _gloffset_MultiTexCoord4fARB 402 +#define _gloffset_MultiTexCoord4fvARB 403 +#define _gloffset_MultiTexCoord4iARB 404 +#define _gloffset_MultiTexCoord4ivARB 405 +#define _gloffset_MultiTexCoord4sARB 406 +#define _gloffset_MultiTexCoord4svARB 407 + +#if !defined(_GLAPI_USE_REMAP_TABLE) + +#define _gloffset_AttachShader 408 +#define _gloffset_CreateProgram 409 +#define _gloffset_CreateShader 410 +#define _gloffset_DeleteProgram 411 +#define _gloffset_DeleteShader 412 +#define _gloffset_DetachShader 413 +#define _gloffset_GetAttachedShaders 414 +#define _gloffset_GetProgramInfoLog 415 +#define _gloffset_GetProgramiv 416 +#define _gloffset_GetShaderInfoLog 417 +#define _gloffset_GetShaderiv 418 +#define _gloffset_IsProgram 419 +#define _gloffset_IsShader 420 +#define _gloffset_StencilFuncSeparate 421 +#define _gloffset_StencilMaskSeparate 422 +#define _gloffset_StencilOpSeparate 423 +#define _gloffset_UniformMatrix2x3fv 424 +#define _gloffset_UniformMatrix2x4fv 425 +#define _gloffset_UniformMatrix3x2fv 426 +#define _gloffset_UniformMatrix3x4fv 427 +#define _gloffset_UniformMatrix4x2fv 428 +#define _gloffset_UniformMatrix4x3fv 429 +#define _gloffset_ClampColor 430 +#define _gloffset_ClearBufferfi 431 +#define _gloffset_ClearBufferfv 432 +#define _gloffset_ClearBufferiv 433 +#define _gloffset_ClearBufferuiv 434 +#define _gloffset_GetStringi 435 +#define _gloffset_TexBuffer 436 +#define _gloffset_FramebufferTexture 437 +#define _gloffset_GetBufferParameteri64v 438 +#define _gloffset_GetInteger64i_v 439 +#define _gloffset_VertexAttribDivisor 440 +#define _gloffset_LoadTransposeMatrixdARB 441 +#define _gloffset_LoadTransposeMatrixfARB 442 +#define _gloffset_MultTransposeMatrixdARB 443 +#define _gloffset_MultTransposeMatrixfARB 444 +#define _gloffset_SampleCoverageARB 445 +#define _gloffset_CompressedTexImage1DARB 446 +#define _gloffset_CompressedTexImage2DARB 447 +#define _gloffset_CompressedTexImage3DARB 448 +#define _gloffset_CompressedTexSubImage1DARB 449 +#define _gloffset_CompressedTexSubImage2DARB 450 +#define _gloffset_CompressedTexSubImage3DARB 451 +#define _gloffset_GetCompressedTexImageARB 452 +#define _gloffset_DisableVertexAttribArrayARB 453 +#define _gloffset_EnableVertexAttribArrayARB 454 +#define _gloffset_GetProgramEnvParameterdvARB 455 +#define _gloffset_GetProgramEnvParameterfvARB 456 +#define _gloffset_GetProgramLocalParameterdvARB 457 +#define _gloffset_GetProgramLocalParameterfvARB 458 +#define _gloffset_GetProgramStringARB 459 +#define _gloffset_GetProgramivARB 460 +#define _gloffset_GetVertexAttribdvARB 461 +#define _gloffset_GetVertexAttribfvARB 462 +#define _gloffset_GetVertexAttribivARB 463 +#define _gloffset_ProgramEnvParameter4dARB 464 +#define _gloffset_ProgramEnvParameter4dvARB 465 +#define _gloffset_ProgramEnvParameter4fARB 466 +#define _gloffset_ProgramEnvParameter4fvARB 467 +#define _gloffset_ProgramLocalParameter4dARB 468 +#define _gloffset_ProgramLocalParameter4dvARB 469 +#define _gloffset_ProgramLocalParameter4fARB 470 +#define _gloffset_ProgramLocalParameter4fvARB 471 +#define _gloffset_ProgramStringARB 472 +#define _gloffset_VertexAttrib1dARB 473 +#define _gloffset_VertexAttrib1dvARB 474 +#define _gloffset_VertexAttrib1fARB 475 +#define _gloffset_VertexAttrib1fvARB 476 +#define _gloffset_VertexAttrib1sARB 477 +#define _gloffset_VertexAttrib1svARB 478 +#define _gloffset_VertexAttrib2dARB 479 +#define _gloffset_VertexAttrib2dvARB 480 +#define _gloffset_VertexAttrib2fARB 481 +#define _gloffset_VertexAttrib2fvARB 482 +#define _gloffset_VertexAttrib2sARB 483 +#define _gloffset_VertexAttrib2svARB 484 +#define _gloffset_VertexAttrib3dARB 485 +#define _gloffset_VertexAttrib3dvARB 486 +#define _gloffset_VertexAttrib3fARB 487 +#define _gloffset_VertexAttrib3fvARB 488 +#define _gloffset_VertexAttrib3sARB 489 +#define _gloffset_VertexAttrib3svARB 490 +#define _gloffset_VertexAttrib4NbvARB 491 +#define _gloffset_VertexAttrib4NivARB 492 +#define _gloffset_VertexAttrib4NsvARB 493 +#define _gloffset_VertexAttrib4NubARB 494 +#define _gloffset_VertexAttrib4NubvARB 495 +#define _gloffset_VertexAttrib4NuivARB 496 +#define _gloffset_VertexAttrib4NusvARB 497 +#define _gloffset_VertexAttrib4bvARB 498 +#define _gloffset_VertexAttrib4dARB 499 +#define _gloffset_VertexAttrib4dvARB 500 +#define _gloffset_VertexAttrib4fARB 501 +#define _gloffset_VertexAttrib4fvARB 502 +#define _gloffset_VertexAttrib4ivARB 503 +#define _gloffset_VertexAttrib4sARB 504 +#define _gloffset_VertexAttrib4svARB 505 +#define _gloffset_VertexAttrib4ubvARB 506 +#define _gloffset_VertexAttrib4uivARB 507 +#define _gloffset_VertexAttrib4usvARB 508 +#define _gloffset_VertexAttribPointerARB 509 +#define _gloffset_BindBufferARB 510 +#define _gloffset_BufferDataARB 511 +#define _gloffset_BufferSubDataARB 512 +#define _gloffset_DeleteBuffersARB 513 +#define _gloffset_GenBuffersARB 514 +#define _gloffset_GetBufferParameterivARB 515 +#define _gloffset_GetBufferPointervARB 516 +#define _gloffset_GetBufferSubDataARB 517 +#define _gloffset_IsBufferARB 518 +#define _gloffset_MapBufferARB 519 +#define _gloffset_UnmapBufferARB 520 +#define _gloffset_BeginQueryARB 521 +#define _gloffset_DeleteQueriesARB 522 +#define _gloffset_EndQueryARB 523 +#define _gloffset_GenQueriesARB 524 +#define _gloffset_GetQueryObjectivARB 525 +#define _gloffset_GetQueryObjectuivARB 526 +#define _gloffset_GetQueryivARB 527 +#define _gloffset_IsQueryARB 528 +#define _gloffset_AttachObjectARB 529 +#define _gloffset_CompileShaderARB 530 +#define _gloffset_CreateProgramObjectARB 531 +#define _gloffset_CreateShaderObjectARB 532 +#define _gloffset_DeleteObjectARB 533 +#define _gloffset_DetachObjectARB 534 +#define _gloffset_GetActiveUniformARB 535 +#define _gloffset_GetAttachedObjectsARB 536 +#define _gloffset_GetHandleARB 537 +#define _gloffset_GetInfoLogARB 538 +#define _gloffset_GetObjectParameterfvARB 539 +#define _gloffset_GetObjectParameterivARB 540 +#define _gloffset_GetShaderSourceARB 541 +#define _gloffset_GetUniformLocationARB 542 +#define _gloffset_GetUniformfvARB 543 +#define _gloffset_GetUniformivARB 544 +#define _gloffset_LinkProgramARB 545 +#define _gloffset_ShaderSourceARB 546 +#define _gloffset_Uniform1fARB 547 +#define _gloffset_Uniform1fvARB 548 +#define _gloffset_Uniform1iARB 549 +#define _gloffset_Uniform1ivARB 550 +#define _gloffset_Uniform2fARB 551 +#define _gloffset_Uniform2fvARB 552 +#define _gloffset_Uniform2iARB 553 +#define _gloffset_Uniform2ivARB 554 +#define _gloffset_Uniform3fARB 555 +#define _gloffset_Uniform3fvARB 556 +#define _gloffset_Uniform3iARB 557 +#define _gloffset_Uniform3ivARB 558 +#define _gloffset_Uniform4fARB 559 +#define _gloffset_Uniform4fvARB 560 +#define _gloffset_Uniform4iARB 561 +#define _gloffset_Uniform4ivARB 562 +#define _gloffset_UniformMatrix2fvARB 563 +#define _gloffset_UniformMatrix3fvARB 564 +#define _gloffset_UniformMatrix4fvARB 565 +#define _gloffset_UseProgramObjectARB 566 +#define _gloffset_ValidateProgramARB 567 +#define _gloffset_BindAttribLocationARB 568 +#define _gloffset_GetActiveAttribARB 569 +#define _gloffset_GetAttribLocationARB 570 +#define _gloffset_DrawBuffersARB 571 +#define _gloffset_DrawArraysInstancedARB 572 +#define _gloffset_DrawElementsInstancedARB 573 +#define _gloffset_RenderbufferStorageMultisample 574 +#define _gloffset_FramebufferTextureARB 575 +#define _gloffset_FramebufferTextureFaceARB 576 +#define _gloffset_ProgramParameteriARB 577 +#define _gloffset_FlushMappedBufferRange 578 +#define _gloffset_MapBufferRange 579 +#define _gloffset_BindVertexArray 580 +#define _gloffset_GenVertexArrays 581 +#define _gloffset_CopyBufferSubData 582 +#define _gloffset_ClientWaitSync 583 +#define _gloffset_DeleteSync 584 +#define _gloffset_FenceSync 585 +#define _gloffset_GetInteger64v 586 +#define _gloffset_GetSynciv 587 +#define _gloffset_IsSync 588 +#define _gloffset_WaitSync 589 +#define _gloffset_DrawElementsBaseVertex 590 +#define _gloffset_DrawRangeElementsBaseVertex 591 +#define _gloffset_MultiDrawElementsBaseVertex 592 +#define _gloffset_BindTransformFeedback 593 +#define _gloffset_DeleteTransformFeedbacks 594 +#define _gloffset_DrawTransformFeedback 595 +#define _gloffset_GenTransformFeedbacks 596 +#define _gloffset_IsTransformFeedback 597 +#define _gloffset_PauseTransformFeedback 598 +#define _gloffset_ResumeTransformFeedback 599 +#define _gloffset_PolygonOffsetEXT 600 +#define _gloffset_GetPixelTexGenParameterfvSGIS 601 +#define _gloffset_GetPixelTexGenParameterivSGIS 602 +#define _gloffset_PixelTexGenParameterfSGIS 603 +#define _gloffset_PixelTexGenParameterfvSGIS 604 +#define _gloffset_PixelTexGenParameteriSGIS 605 +#define _gloffset_PixelTexGenParameterivSGIS 606 +#define _gloffset_SampleMaskSGIS 607 +#define _gloffset_SamplePatternSGIS 608 +#define _gloffset_ColorPointerEXT 609 +#define _gloffset_EdgeFlagPointerEXT 610 +#define _gloffset_IndexPointerEXT 611 +#define _gloffset_NormalPointerEXT 612 +#define _gloffset_TexCoordPointerEXT 613 +#define _gloffset_VertexPointerEXT 614 +#define _gloffset_PointParameterfEXT 615 +#define _gloffset_PointParameterfvEXT 616 +#define _gloffset_LockArraysEXT 617 +#define _gloffset_UnlockArraysEXT 618 +#define _gloffset_SecondaryColor3bEXT 619 +#define _gloffset_SecondaryColor3bvEXT 620 +#define _gloffset_SecondaryColor3dEXT 621 +#define _gloffset_SecondaryColor3dvEXT 622 +#define _gloffset_SecondaryColor3fEXT 623 +#define _gloffset_SecondaryColor3fvEXT 624 +#define _gloffset_SecondaryColor3iEXT 625 +#define _gloffset_SecondaryColor3ivEXT 626 +#define _gloffset_SecondaryColor3sEXT 627 +#define _gloffset_SecondaryColor3svEXT 628 +#define _gloffset_SecondaryColor3ubEXT 629 +#define _gloffset_SecondaryColor3ubvEXT 630 +#define _gloffset_SecondaryColor3uiEXT 631 +#define _gloffset_SecondaryColor3uivEXT 632 +#define _gloffset_SecondaryColor3usEXT 633 +#define _gloffset_SecondaryColor3usvEXT 634 +#define _gloffset_SecondaryColorPointerEXT 635 +#define _gloffset_MultiDrawArraysEXT 636 +#define _gloffset_MultiDrawElementsEXT 637 +#define _gloffset_FogCoordPointerEXT 638 +#define _gloffset_FogCoorddEXT 639 +#define _gloffset_FogCoorddvEXT 640 +#define _gloffset_FogCoordfEXT 641 +#define _gloffset_FogCoordfvEXT 642 +#define _gloffset_PixelTexGenSGIX 643 +#define _gloffset_BlendFuncSeparateEXT 644 +#define _gloffset_FlushVertexArrayRangeNV 645 +#define _gloffset_VertexArrayRangeNV 646 +#define _gloffset_CombinerInputNV 647 +#define _gloffset_CombinerOutputNV 648 +#define _gloffset_CombinerParameterfNV 649 +#define _gloffset_CombinerParameterfvNV 650 +#define _gloffset_CombinerParameteriNV 651 +#define _gloffset_CombinerParameterivNV 652 +#define _gloffset_FinalCombinerInputNV 653 +#define _gloffset_GetCombinerInputParameterfvNV 654 +#define _gloffset_GetCombinerInputParameterivNV 655 +#define _gloffset_GetCombinerOutputParameterfvNV 656 +#define _gloffset_GetCombinerOutputParameterivNV 657 +#define _gloffset_GetFinalCombinerInputParameterfvNV 658 +#define _gloffset_GetFinalCombinerInputParameterivNV 659 +#define _gloffset_ResizeBuffersMESA 660 +#define _gloffset_WindowPos2dMESA 661 +#define _gloffset_WindowPos2dvMESA 662 +#define _gloffset_WindowPos2fMESA 663 +#define _gloffset_WindowPos2fvMESA 664 +#define _gloffset_WindowPos2iMESA 665 +#define _gloffset_WindowPos2ivMESA 666 +#define _gloffset_WindowPos2sMESA 667 +#define _gloffset_WindowPos2svMESA 668 +#define _gloffset_WindowPos3dMESA 669 +#define _gloffset_WindowPos3dvMESA 670 +#define _gloffset_WindowPos3fMESA 671 +#define _gloffset_WindowPos3fvMESA 672 +#define _gloffset_WindowPos3iMESA 673 +#define _gloffset_WindowPos3ivMESA 674 +#define _gloffset_WindowPos3sMESA 675 +#define _gloffset_WindowPos3svMESA 676 +#define _gloffset_WindowPos4dMESA 677 +#define _gloffset_WindowPos4dvMESA 678 +#define _gloffset_WindowPos4fMESA 679 +#define _gloffset_WindowPos4fvMESA 680 +#define _gloffset_WindowPos4iMESA 681 +#define _gloffset_WindowPos4ivMESA 682 +#define _gloffset_WindowPos4sMESA 683 +#define _gloffset_WindowPos4svMESA 684 +#define _gloffset_MultiModeDrawArraysIBM 685 +#define _gloffset_MultiModeDrawElementsIBM 686 +#define _gloffset_DeleteFencesNV 687 +#define _gloffset_FinishFenceNV 688 +#define _gloffset_GenFencesNV 689 +#define _gloffset_GetFenceivNV 690 +#define _gloffset_IsFenceNV 691 +#define _gloffset_SetFenceNV 692 +#define _gloffset_TestFenceNV 693 +#define _gloffset_AreProgramsResidentNV 694 +#define _gloffset_BindProgramNV 695 +#define _gloffset_DeleteProgramsNV 696 +#define _gloffset_ExecuteProgramNV 697 +#define _gloffset_GenProgramsNV 698 +#define _gloffset_GetProgramParameterdvNV 699 +#define _gloffset_GetProgramParameterfvNV 700 +#define _gloffset_GetProgramStringNV 701 +#define _gloffset_GetProgramivNV 702 +#define _gloffset_GetTrackMatrixivNV 703 +#define _gloffset_GetVertexAttribPointervNV 704 +#define _gloffset_GetVertexAttribdvNV 705 +#define _gloffset_GetVertexAttribfvNV 706 +#define _gloffset_GetVertexAttribivNV 707 +#define _gloffset_IsProgramNV 708 +#define _gloffset_LoadProgramNV 709 +#define _gloffset_ProgramParameters4dvNV 710 +#define _gloffset_ProgramParameters4fvNV 711 +#define _gloffset_RequestResidentProgramsNV 712 +#define _gloffset_TrackMatrixNV 713 +#define _gloffset_VertexAttrib1dNV 714 +#define _gloffset_VertexAttrib1dvNV 715 +#define _gloffset_VertexAttrib1fNV 716 +#define _gloffset_VertexAttrib1fvNV 717 +#define _gloffset_VertexAttrib1sNV 718 +#define _gloffset_VertexAttrib1svNV 719 +#define _gloffset_VertexAttrib2dNV 720 +#define _gloffset_VertexAttrib2dvNV 721 +#define _gloffset_VertexAttrib2fNV 722 +#define _gloffset_VertexAttrib2fvNV 723 +#define _gloffset_VertexAttrib2sNV 724 +#define _gloffset_VertexAttrib2svNV 725 +#define _gloffset_VertexAttrib3dNV 726 +#define _gloffset_VertexAttrib3dvNV 727 +#define _gloffset_VertexAttrib3fNV 728 +#define _gloffset_VertexAttrib3fvNV 729 +#define _gloffset_VertexAttrib3sNV 730 +#define _gloffset_VertexAttrib3svNV 731 +#define _gloffset_VertexAttrib4dNV 732 +#define _gloffset_VertexAttrib4dvNV 733 +#define _gloffset_VertexAttrib4fNV 734 +#define _gloffset_VertexAttrib4fvNV 735 +#define _gloffset_VertexAttrib4sNV 736 +#define _gloffset_VertexAttrib4svNV 737 +#define _gloffset_VertexAttrib4ubNV 738 +#define _gloffset_VertexAttrib4ubvNV 739 +#define _gloffset_VertexAttribPointerNV 740 +#define _gloffset_VertexAttribs1dvNV 741 +#define _gloffset_VertexAttribs1fvNV 742 +#define _gloffset_VertexAttribs1svNV 743 +#define _gloffset_VertexAttribs2dvNV 744 +#define _gloffset_VertexAttribs2fvNV 745 +#define _gloffset_VertexAttribs2svNV 746 +#define _gloffset_VertexAttribs3dvNV 747 +#define _gloffset_VertexAttribs3fvNV 748 +#define _gloffset_VertexAttribs3svNV 749 +#define _gloffset_VertexAttribs4dvNV 750 +#define _gloffset_VertexAttribs4fvNV 751 +#define _gloffset_VertexAttribs4svNV 752 +#define _gloffset_VertexAttribs4ubvNV 753 +#define _gloffset_GetTexBumpParameterfvATI 754 +#define _gloffset_GetTexBumpParameterivATI 755 +#define _gloffset_TexBumpParameterfvATI 756 +#define _gloffset_TexBumpParameterivATI 757 +#define _gloffset_AlphaFragmentOp1ATI 758 +#define _gloffset_AlphaFragmentOp2ATI 759 +#define _gloffset_AlphaFragmentOp3ATI 760 +#define _gloffset_BeginFragmentShaderATI 761 +#define _gloffset_BindFragmentShaderATI 762 +#define _gloffset_ColorFragmentOp1ATI 763 +#define _gloffset_ColorFragmentOp2ATI 764 +#define _gloffset_ColorFragmentOp3ATI 765 +#define _gloffset_DeleteFragmentShaderATI 766 +#define _gloffset_EndFragmentShaderATI 767 +#define _gloffset_GenFragmentShadersATI 768 +#define _gloffset_PassTexCoordATI 769 +#define _gloffset_SampleMapATI 770 +#define _gloffset_SetFragmentShaderConstantATI 771 +#define _gloffset_PointParameteriNV 772 +#define _gloffset_PointParameterivNV 773 +#define _gloffset_ActiveStencilFaceEXT 774 +#define _gloffset_BindVertexArrayAPPLE 775 +#define _gloffset_DeleteVertexArraysAPPLE 776 +#define _gloffset_GenVertexArraysAPPLE 777 +#define _gloffset_IsVertexArrayAPPLE 778 +#define _gloffset_GetProgramNamedParameterdvNV 779 +#define _gloffset_GetProgramNamedParameterfvNV 780 +#define _gloffset_ProgramNamedParameter4dNV 781 +#define _gloffset_ProgramNamedParameter4dvNV 782 +#define _gloffset_ProgramNamedParameter4fNV 783 +#define _gloffset_ProgramNamedParameter4fvNV 784 +#define _gloffset_PrimitiveRestartIndexNV 785 +#define _gloffset_PrimitiveRestartNV 786 +#define _gloffset_DepthBoundsEXT 787 +#define _gloffset_BlendEquationSeparateEXT 788 +#define _gloffset_BindFramebufferEXT 789 +#define _gloffset_BindRenderbufferEXT 790 +#define _gloffset_CheckFramebufferStatusEXT 791 +#define _gloffset_DeleteFramebuffersEXT 792 +#define _gloffset_DeleteRenderbuffersEXT 793 +#define _gloffset_FramebufferRenderbufferEXT 794 +#define _gloffset_FramebufferTexture1DEXT 795 +#define _gloffset_FramebufferTexture2DEXT 796 +#define _gloffset_FramebufferTexture3DEXT 797 +#define _gloffset_GenFramebuffersEXT 798 +#define _gloffset_GenRenderbuffersEXT 799 +#define _gloffset_GenerateMipmapEXT 800 +#define _gloffset_GetFramebufferAttachmentParameterivEXT 801 +#define _gloffset_GetRenderbufferParameterivEXT 802 +#define _gloffset_IsFramebufferEXT 803 +#define _gloffset_IsRenderbufferEXT 804 +#define _gloffset_RenderbufferStorageEXT 805 +#define _gloffset_BlitFramebufferEXT 806 +#define _gloffset_BufferParameteriAPPLE 807 +#define _gloffset_FlushMappedBufferRangeAPPLE 808 +#define _gloffset_BindFragDataLocationEXT 809 +#define _gloffset_GetFragDataLocationEXT 810 +#define _gloffset_GetUniformuivEXT 811 +#define _gloffset_GetVertexAttribIivEXT 812 +#define _gloffset_GetVertexAttribIuivEXT 813 +#define _gloffset_Uniform1uiEXT 814 +#define _gloffset_Uniform1uivEXT 815 +#define _gloffset_Uniform2uiEXT 816 +#define _gloffset_Uniform2uivEXT 817 +#define _gloffset_Uniform3uiEXT 818 +#define _gloffset_Uniform3uivEXT 819 +#define _gloffset_Uniform4uiEXT 820 +#define _gloffset_Uniform4uivEXT 821 +#define _gloffset_VertexAttribI1iEXT 822 +#define _gloffset_VertexAttribI1ivEXT 823 +#define _gloffset_VertexAttribI1uiEXT 824 +#define _gloffset_VertexAttribI1uivEXT 825 +#define _gloffset_VertexAttribI2iEXT 826 +#define _gloffset_VertexAttribI2ivEXT 827 +#define _gloffset_VertexAttribI2uiEXT 828 +#define _gloffset_VertexAttribI2uivEXT 829 +#define _gloffset_VertexAttribI3iEXT 830 +#define _gloffset_VertexAttribI3ivEXT 831 +#define _gloffset_VertexAttribI3uiEXT 832 +#define _gloffset_VertexAttribI3uivEXT 833 +#define _gloffset_VertexAttribI4bvEXT 834 +#define _gloffset_VertexAttribI4iEXT 835 +#define _gloffset_VertexAttribI4ivEXT 836 +#define _gloffset_VertexAttribI4svEXT 837 +#define _gloffset_VertexAttribI4ubvEXT 838 +#define _gloffset_VertexAttribI4uiEXT 839 +#define _gloffset_VertexAttribI4uivEXT 840 +#define _gloffset_VertexAttribI4usvEXT 841 +#define _gloffset_VertexAttribIPointerEXT 842 +#define _gloffset_FramebufferTextureLayerEXT 843 +#define _gloffset_ColorMaskIndexedEXT 844 +#define _gloffset_DisableIndexedEXT 845 +#define _gloffset_EnableIndexedEXT 846 +#define _gloffset_GetBooleanIndexedvEXT 847 +#define _gloffset_GetIntegerIndexedvEXT 848 +#define _gloffset_IsEnabledIndexedEXT 849 +#define _gloffset_ClearColorIiEXT 850 +#define _gloffset_ClearColorIuiEXT 851 +#define _gloffset_GetTexParameterIivEXT 852 +#define _gloffset_GetTexParameterIuivEXT 853 +#define _gloffset_TexParameterIivEXT 854 +#define _gloffset_TexParameterIuivEXT 855 +#define _gloffset_BeginConditionalRenderNV 856 +#define _gloffset_EndConditionalRenderNV 857 +#define _gloffset_BeginTransformFeedbackEXT 858 +#define _gloffset_BindBufferBaseEXT 859 +#define _gloffset_BindBufferOffsetEXT 860 +#define _gloffset_BindBufferRangeEXT 861 +#define _gloffset_EndTransformFeedbackEXT 862 +#define _gloffset_GetTransformFeedbackVaryingEXT 863 +#define _gloffset_TransformFeedbackVaryingsEXT 864 +#define _gloffset_ProvokingVertexEXT 865 +#define _gloffset_GetTexParameterPointervAPPLE 866 +#define _gloffset_TextureRangeAPPLE 867 +#define _gloffset_GetObjectParameterivAPPLE 868 +#define _gloffset_ObjectPurgeableAPPLE 869 +#define _gloffset_ObjectUnpurgeableAPPLE 870 +#define _gloffset_ActiveProgramEXT 871 +#define _gloffset_CreateShaderProgramEXT 872 +#define _gloffset_UseShaderProgramEXT 873 +#define _gloffset_StencilFuncSeparateATI 874 +#define _gloffset_ProgramEnvParameters4fvEXT 875 +#define _gloffset_ProgramLocalParameters4fvEXT 876 +#define _gloffset_GetQueryObjecti64vEXT 877 +#define _gloffset_GetQueryObjectui64vEXT 878 +#define _gloffset_EGLImageTargetRenderbufferStorageOES 879 +#define _gloffset_EGLImageTargetTexture2DOES 880 + +#else /* !_GLAPI_USE_REMAP_TABLE */ + +#define driDispatchRemapTable_size 473 +extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; + +#define AttachShader_remap_index 0 +#define CreateProgram_remap_index 1 +#define CreateShader_remap_index 2 +#define DeleteProgram_remap_index 3 +#define DeleteShader_remap_index 4 +#define DetachShader_remap_index 5 +#define GetAttachedShaders_remap_index 6 +#define GetProgramInfoLog_remap_index 7 +#define GetProgramiv_remap_index 8 +#define GetShaderInfoLog_remap_index 9 +#define GetShaderiv_remap_index 10 +#define IsProgram_remap_index 11 +#define IsShader_remap_index 12 +#define StencilFuncSeparate_remap_index 13 +#define StencilMaskSeparate_remap_index 14 +#define StencilOpSeparate_remap_index 15 +#define UniformMatrix2x3fv_remap_index 16 +#define UniformMatrix2x4fv_remap_index 17 +#define UniformMatrix3x2fv_remap_index 18 +#define UniformMatrix3x4fv_remap_index 19 +#define UniformMatrix4x2fv_remap_index 20 +#define UniformMatrix4x3fv_remap_index 21 +#define ClampColor_remap_index 22 +#define ClearBufferfi_remap_index 23 +#define ClearBufferfv_remap_index 24 +#define ClearBufferiv_remap_index 25 +#define ClearBufferuiv_remap_index 26 +#define GetStringi_remap_index 27 +#define TexBuffer_remap_index 28 +#define FramebufferTexture_remap_index 29 +#define GetBufferParameteri64v_remap_index 30 +#define GetInteger64i_v_remap_index 31 +#define VertexAttribDivisor_remap_index 32 +#define LoadTransposeMatrixdARB_remap_index 33 +#define LoadTransposeMatrixfARB_remap_index 34 +#define MultTransposeMatrixdARB_remap_index 35 +#define MultTransposeMatrixfARB_remap_index 36 +#define SampleCoverageARB_remap_index 37 +#define CompressedTexImage1DARB_remap_index 38 +#define CompressedTexImage2DARB_remap_index 39 +#define CompressedTexImage3DARB_remap_index 40 +#define CompressedTexSubImage1DARB_remap_index 41 +#define CompressedTexSubImage2DARB_remap_index 42 +#define CompressedTexSubImage3DARB_remap_index 43 +#define GetCompressedTexImageARB_remap_index 44 +#define DisableVertexAttribArrayARB_remap_index 45 +#define EnableVertexAttribArrayARB_remap_index 46 +#define GetProgramEnvParameterdvARB_remap_index 47 +#define GetProgramEnvParameterfvARB_remap_index 48 +#define GetProgramLocalParameterdvARB_remap_index 49 +#define GetProgramLocalParameterfvARB_remap_index 50 +#define GetProgramStringARB_remap_index 51 +#define GetProgramivARB_remap_index 52 +#define GetVertexAttribdvARB_remap_index 53 +#define GetVertexAttribfvARB_remap_index 54 +#define GetVertexAttribivARB_remap_index 55 +#define ProgramEnvParameter4dARB_remap_index 56 +#define ProgramEnvParameter4dvARB_remap_index 57 +#define ProgramEnvParameter4fARB_remap_index 58 +#define ProgramEnvParameter4fvARB_remap_index 59 +#define ProgramLocalParameter4dARB_remap_index 60 +#define ProgramLocalParameter4dvARB_remap_index 61 +#define ProgramLocalParameter4fARB_remap_index 62 +#define ProgramLocalParameter4fvARB_remap_index 63 +#define ProgramStringARB_remap_index 64 +#define VertexAttrib1dARB_remap_index 65 +#define VertexAttrib1dvARB_remap_index 66 +#define VertexAttrib1fARB_remap_index 67 +#define VertexAttrib1fvARB_remap_index 68 +#define VertexAttrib1sARB_remap_index 69 +#define VertexAttrib1svARB_remap_index 70 +#define VertexAttrib2dARB_remap_index 71 +#define VertexAttrib2dvARB_remap_index 72 +#define VertexAttrib2fARB_remap_index 73 +#define VertexAttrib2fvARB_remap_index 74 +#define VertexAttrib2sARB_remap_index 75 +#define VertexAttrib2svARB_remap_index 76 +#define VertexAttrib3dARB_remap_index 77 +#define VertexAttrib3dvARB_remap_index 78 +#define VertexAttrib3fARB_remap_index 79 +#define VertexAttrib3fvARB_remap_index 80 +#define VertexAttrib3sARB_remap_index 81 +#define VertexAttrib3svARB_remap_index 82 +#define VertexAttrib4NbvARB_remap_index 83 +#define VertexAttrib4NivARB_remap_index 84 +#define VertexAttrib4NsvARB_remap_index 85 +#define VertexAttrib4NubARB_remap_index 86 +#define VertexAttrib4NubvARB_remap_index 87 +#define VertexAttrib4NuivARB_remap_index 88 +#define VertexAttrib4NusvARB_remap_index 89 +#define VertexAttrib4bvARB_remap_index 90 +#define VertexAttrib4dARB_remap_index 91 +#define VertexAttrib4dvARB_remap_index 92 +#define VertexAttrib4fARB_remap_index 93 +#define VertexAttrib4fvARB_remap_index 94 +#define VertexAttrib4ivARB_remap_index 95 +#define VertexAttrib4sARB_remap_index 96 +#define VertexAttrib4svARB_remap_index 97 +#define VertexAttrib4ubvARB_remap_index 98 +#define VertexAttrib4uivARB_remap_index 99 +#define VertexAttrib4usvARB_remap_index 100 +#define VertexAttribPointerARB_remap_index 101 +#define BindBufferARB_remap_index 102 +#define BufferDataARB_remap_index 103 +#define BufferSubDataARB_remap_index 104 +#define DeleteBuffersARB_remap_index 105 +#define GenBuffersARB_remap_index 106 +#define GetBufferParameterivARB_remap_index 107 +#define GetBufferPointervARB_remap_index 108 +#define GetBufferSubDataARB_remap_index 109 +#define IsBufferARB_remap_index 110 +#define MapBufferARB_remap_index 111 +#define UnmapBufferARB_remap_index 112 +#define BeginQueryARB_remap_index 113 +#define DeleteQueriesARB_remap_index 114 +#define EndQueryARB_remap_index 115 +#define GenQueriesARB_remap_index 116 +#define GetQueryObjectivARB_remap_index 117 +#define GetQueryObjectuivARB_remap_index 118 +#define GetQueryivARB_remap_index 119 +#define IsQueryARB_remap_index 120 +#define AttachObjectARB_remap_index 121 +#define CompileShaderARB_remap_index 122 +#define CreateProgramObjectARB_remap_index 123 +#define CreateShaderObjectARB_remap_index 124 +#define DeleteObjectARB_remap_index 125 +#define DetachObjectARB_remap_index 126 +#define GetActiveUniformARB_remap_index 127 +#define GetAttachedObjectsARB_remap_index 128 +#define GetHandleARB_remap_index 129 +#define GetInfoLogARB_remap_index 130 +#define GetObjectParameterfvARB_remap_index 131 +#define GetObjectParameterivARB_remap_index 132 +#define GetShaderSourceARB_remap_index 133 +#define GetUniformLocationARB_remap_index 134 +#define GetUniformfvARB_remap_index 135 +#define GetUniformivARB_remap_index 136 +#define LinkProgramARB_remap_index 137 +#define ShaderSourceARB_remap_index 138 +#define Uniform1fARB_remap_index 139 +#define Uniform1fvARB_remap_index 140 +#define Uniform1iARB_remap_index 141 +#define Uniform1ivARB_remap_index 142 +#define Uniform2fARB_remap_index 143 +#define Uniform2fvARB_remap_index 144 +#define Uniform2iARB_remap_index 145 +#define Uniform2ivARB_remap_index 146 +#define Uniform3fARB_remap_index 147 +#define Uniform3fvARB_remap_index 148 +#define Uniform3iARB_remap_index 149 +#define Uniform3ivARB_remap_index 150 +#define Uniform4fARB_remap_index 151 +#define Uniform4fvARB_remap_index 152 +#define Uniform4iARB_remap_index 153 +#define Uniform4ivARB_remap_index 154 +#define UniformMatrix2fvARB_remap_index 155 +#define UniformMatrix3fvARB_remap_index 156 +#define UniformMatrix4fvARB_remap_index 157 +#define UseProgramObjectARB_remap_index 158 +#define ValidateProgramARB_remap_index 159 +#define BindAttribLocationARB_remap_index 160 +#define GetActiveAttribARB_remap_index 161 +#define GetAttribLocationARB_remap_index 162 +#define DrawBuffersARB_remap_index 163 +#define DrawArraysInstancedARB_remap_index 164 +#define DrawElementsInstancedARB_remap_index 165 +#define RenderbufferStorageMultisample_remap_index 166 +#define FramebufferTextureARB_remap_index 167 +#define FramebufferTextureFaceARB_remap_index 168 +#define ProgramParameteriARB_remap_index 169 +#define FlushMappedBufferRange_remap_index 170 +#define MapBufferRange_remap_index 171 +#define BindVertexArray_remap_index 172 +#define GenVertexArrays_remap_index 173 +#define CopyBufferSubData_remap_index 174 +#define ClientWaitSync_remap_index 175 +#define DeleteSync_remap_index 176 +#define FenceSync_remap_index 177 +#define GetInteger64v_remap_index 178 +#define GetSynciv_remap_index 179 +#define IsSync_remap_index 180 +#define WaitSync_remap_index 181 +#define DrawElementsBaseVertex_remap_index 182 +#define DrawRangeElementsBaseVertex_remap_index 183 +#define MultiDrawElementsBaseVertex_remap_index 184 +#define BindTransformFeedback_remap_index 185 +#define DeleteTransformFeedbacks_remap_index 186 +#define DrawTransformFeedback_remap_index 187 +#define GenTransformFeedbacks_remap_index 188 +#define IsTransformFeedback_remap_index 189 +#define PauseTransformFeedback_remap_index 190 +#define ResumeTransformFeedback_remap_index 191 +#define PolygonOffsetEXT_remap_index 192 +#define GetPixelTexGenParameterfvSGIS_remap_index 193 +#define GetPixelTexGenParameterivSGIS_remap_index 194 +#define PixelTexGenParameterfSGIS_remap_index 195 +#define PixelTexGenParameterfvSGIS_remap_index 196 +#define PixelTexGenParameteriSGIS_remap_index 197 +#define PixelTexGenParameterivSGIS_remap_index 198 +#define SampleMaskSGIS_remap_index 199 +#define SamplePatternSGIS_remap_index 200 +#define ColorPointerEXT_remap_index 201 +#define EdgeFlagPointerEXT_remap_index 202 +#define IndexPointerEXT_remap_index 203 +#define NormalPointerEXT_remap_index 204 +#define TexCoordPointerEXT_remap_index 205 +#define VertexPointerEXT_remap_index 206 +#define PointParameterfEXT_remap_index 207 +#define PointParameterfvEXT_remap_index 208 +#define LockArraysEXT_remap_index 209 +#define UnlockArraysEXT_remap_index 210 +#define SecondaryColor3bEXT_remap_index 211 +#define SecondaryColor3bvEXT_remap_index 212 +#define SecondaryColor3dEXT_remap_index 213 +#define SecondaryColor3dvEXT_remap_index 214 +#define SecondaryColor3fEXT_remap_index 215 +#define SecondaryColor3fvEXT_remap_index 216 +#define SecondaryColor3iEXT_remap_index 217 +#define SecondaryColor3ivEXT_remap_index 218 +#define SecondaryColor3sEXT_remap_index 219 +#define SecondaryColor3svEXT_remap_index 220 +#define SecondaryColor3ubEXT_remap_index 221 +#define SecondaryColor3ubvEXT_remap_index 222 +#define SecondaryColor3uiEXT_remap_index 223 +#define SecondaryColor3uivEXT_remap_index 224 +#define SecondaryColor3usEXT_remap_index 225 +#define SecondaryColor3usvEXT_remap_index 226 +#define SecondaryColorPointerEXT_remap_index 227 +#define MultiDrawArraysEXT_remap_index 228 +#define MultiDrawElementsEXT_remap_index 229 +#define FogCoordPointerEXT_remap_index 230 +#define FogCoorddEXT_remap_index 231 +#define FogCoorddvEXT_remap_index 232 +#define FogCoordfEXT_remap_index 233 +#define FogCoordfvEXT_remap_index 234 +#define PixelTexGenSGIX_remap_index 235 +#define BlendFuncSeparateEXT_remap_index 236 +#define FlushVertexArrayRangeNV_remap_index 237 +#define VertexArrayRangeNV_remap_index 238 +#define CombinerInputNV_remap_index 239 +#define CombinerOutputNV_remap_index 240 +#define CombinerParameterfNV_remap_index 241 +#define CombinerParameterfvNV_remap_index 242 +#define CombinerParameteriNV_remap_index 243 +#define CombinerParameterivNV_remap_index 244 +#define FinalCombinerInputNV_remap_index 245 +#define GetCombinerInputParameterfvNV_remap_index 246 +#define GetCombinerInputParameterivNV_remap_index 247 +#define GetCombinerOutputParameterfvNV_remap_index 248 +#define GetCombinerOutputParameterivNV_remap_index 249 +#define GetFinalCombinerInputParameterfvNV_remap_index 250 +#define GetFinalCombinerInputParameterivNV_remap_index 251 +#define ResizeBuffersMESA_remap_index 252 +#define WindowPos2dMESA_remap_index 253 +#define WindowPos2dvMESA_remap_index 254 +#define WindowPos2fMESA_remap_index 255 +#define WindowPos2fvMESA_remap_index 256 +#define WindowPos2iMESA_remap_index 257 +#define WindowPos2ivMESA_remap_index 258 +#define WindowPos2sMESA_remap_index 259 +#define WindowPos2svMESA_remap_index 260 +#define WindowPos3dMESA_remap_index 261 +#define WindowPos3dvMESA_remap_index 262 +#define WindowPos3fMESA_remap_index 263 +#define WindowPos3fvMESA_remap_index 264 +#define WindowPos3iMESA_remap_index 265 +#define WindowPos3ivMESA_remap_index 266 +#define WindowPos3sMESA_remap_index 267 +#define WindowPos3svMESA_remap_index 268 +#define WindowPos4dMESA_remap_index 269 +#define WindowPos4dvMESA_remap_index 270 +#define WindowPos4fMESA_remap_index 271 +#define WindowPos4fvMESA_remap_index 272 +#define WindowPos4iMESA_remap_index 273 +#define WindowPos4ivMESA_remap_index 274 +#define WindowPos4sMESA_remap_index 275 +#define WindowPos4svMESA_remap_index 276 +#define MultiModeDrawArraysIBM_remap_index 277 +#define MultiModeDrawElementsIBM_remap_index 278 +#define DeleteFencesNV_remap_index 279 +#define FinishFenceNV_remap_index 280 +#define GenFencesNV_remap_index 281 +#define GetFenceivNV_remap_index 282 +#define IsFenceNV_remap_index 283 +#define SetFenceNV_remap_index 284 +#define TestFenceNV_remap_index 285 +#define AreProgramsResidentNV_remap_index 286 +#define BindProgramNV_remap_index 287 +#define DeleteProgramsNV_remap_index 288 +#define ExecuteProgramNV_remap_index 289 +#define GenProgramsNV_remap_index 290 +#define GetProgramParameterdvNV_remap_index 291 +#define GetProgramParameterfvNV_remap_index 292 +#define GetProgramStringNV_remap_index 293 +#define GetProgramivNV_remap_index 294 +#define GetTrackMatrixivNV_remap_index 295 +#define GetVertexAttribPointervNV_remap_index 296 +#define GetVertexAttribdvNV_remap_index 297 +#define GetVertexAttribfvNV_remap_index 298 +#define GetVertexAttribivNV_remap_index 299 +#define IsProgramNV_remap_index 300 +#define LoadProgramNV_remap_index 301 +#define ProgramParameters4dvNV_remap_index 302 +#define ProgramParameters4fvNV_remap_index 303 +#define RequestResidentProgramsNV_remap_index 304 +#define TrackMatrixNV_remap_index 305 +#define VertexAttrib1dNV_remap_index 306 +#define VertexAttrib1dvNV_remap_index 307 +#define VertexAttrib1fNV_remap_index 308 +#define VertexAttrib1fvNV_remap_index 309 +#define VertexAttrib1sNV_remap_index 310 +#define VertexAttrib1svNV_remap_index 311 +#define VertexAttrib2dNV_remap_index 312 +#define VertexAttrib2dvNV_remap_index 313 +#define VertexAttrib2fNV_remap_index 314 +#define VertexAttrib2fvNV_remap_index 315 +#define VertexAttrib2sNV_remap_index 316 +#define VertexAttrib2svNV_remap_index 317 +#define VertexAttrib3dNV_remap_index 318 +#define VertexAttrib3dvNV_remap_index 319 +#define VertexAttrib3fNV_remap_index 320 +#define VertexAttrib3fvNV_remap_index 321 +#define VertexAttrib3sNV_remap_index 322 +#define VertexAttrib3svNV_remap_index 323 +#define VertexAttrib4dNV_remap_index 324 +#define VertexAttrib4dvNV_remap_index 325 +#define VertexAttrib4fNV_remap_index 326 +#define VertexAttrib4fvNV_remap_index 327 +#define VertexAttrib4sNV_remap_index 328 +#define VertexAttrib4svNV_remap_index 329 +#define VertexAttrib4ubNV_remap_index 330 +#define VertexAttrib4ubvNV_remap_index 331 +#define VertexAttribPointerNV_remap_index 332 +#define VertexAttribs1dvNV_remap_index 333 +#define VertexAttribs1fvNV_remap_index 334 +#define VertexAttribs1svNV_remap_index 335 +#define VertexAttribs2dvNV_remap_index 336 +#define VertexAttribs2fvNV_remap_index 337 +#define VertexAttribs2svNV_remap_index 338 +#define VertexAttribs3dvNV_remap_index 339 +#define VertexAttribs3fvNV_remap_index 340 +#define VertexAttribs3svNV_remap_index 341 +#define VertexAttribs4dvNV_remap_index 342 +#define VertexAttribs4fvNV_remap_index 343 +#define VertexAttribs4svNV_remap_index 344 +#define VertexAttribs4ubvNV_remap_index 345 +#define GetTexBumpParameterfvATI_remap_index 346 +#define GetTexBumpParameterivATI_remap_index 347 +#define TexBumpParameterfvATI_remap_index 348 +#define TexBumpParameterivATI_remap_index 349 +#define AlphaFragmentOp1ATI_remap_index 350 +#define AlphaFragmentOp2ATI_remap_index 351 +#define AlphaFragmentOp3ATI_remap_index 352 +#define BeginFragmentShaderATI_remap_index 353 +#define BindFragmentShaderATI_remap_index 354 +#define ColorFragmentOp1ATI_remap_index 355 +#define ColorFragmentOp2ATI_remap_index 356 +#define ColorFragmentOp3ATI_remap_index 357 +#define DeleteFragmentShaderATI_remap_index 358 +#define EndFragmentShaderATI_remap_index 359 +#define GenFragmentShadersATI_remap_index 360 +#define PassTexCoordATI_remap_index 361 +#define SampleMapATI_remap_index 362 +#define SetFragmentShaderConstantATI_remap_index 363 +#define PointParameteriNV_remap_index 364 +#define PointParameterivNV_remap_index 365 +#define ActiveStencilFaceEXT_remap_index 366 +#define BindVertexArrayAPPLE_remap_index 367 +#define DeleteVertexArraysAPPLE_remap_index 368 +#define GenVertexArraysAPPLE_remap_index 369 +#define IsVertexArrayAPPLE_remap_index 370 +#define GetProgramNamedParameterdvNV_remap_index 371 +#define GetProgramNamedParameterfvNV_remap_index 372 +#define ProgramNamedParameter4dNV_remap_index 373 +#define ProgramNamedParameter4dvNV_remap_index 374 +#define ProgramNamedParameter4fNV_remap_index 375 +#define ProgramNamedParameter4fvNV_remap_index 376 +#define PrimitiveRestartIndexNV_remap_index 377 +#define PrimitiveRestartNV_remap_index 378 +#define DepthBoundsEXT_remap_index 379 +#define BlendEquationSeparateEXT_remap_index 380 +#define BindFramebufferEXT_remap_index 381 +#define BindRenderbufferEXT_remap_index 382 +#define CheckFramebufferStatusEXT_remap_index 383 +#define DeleteFramebuffersEXT_remap_index 384 +#define DeleteRenderbuffersEXT_remap_index 385 +#define FramebufferRenderbufferEXT_remap_index 386 +#define FramebufferTexture1DEXT_remap_index 387 +#define FramebufferTexture2DEXT_remap_index 388 +#define FramebufferTexture3DEXT_remap_index 389 +#define GenFramebuffersEXT_remap_index 390 +#define GenRenderbuffersEXT_remap_index 391 +#define GenerateMipmapEXT_remap_index 392 +#define GetFramebufferAttachmentParameterivEXT_remap_index 393 +#define GetRenderbufferParameterivEXT_remap_index 394 +#define IsFramebufferEXT_remap_index 395 +#define IsRenderbufferEXT_remap_index 396 +#define RenderbufferStorageEXT_remap_index 397 +#define BlitFramebufferEXT_remap_index 398 +#define BufferParameteriAPPLE_remap_index 399 +#define FlushMappedBufferRangeAPPLE_remap_index 400 +#define BindFragDataLocationEXT_remap_index 401 +#define GetFragDataLocationEXT_remap_index 402 +#define GetUniformuivEXT_remap_index 403 +#define GetVertexAttribIivEXT_remap_index 404 +#define GetVertexAttribIuivEXT_remap_index 405 +#define Uniform1uiEXT_remap_index 406 +#define Uniform1uivEXT_remap_index 407 +#define Uniform2uiEXT_remap_index 408 +#define Uniform2uivEXT_remap_index 409 +#define Uniform3uiEXT_remap_index 410 +#define Uniform3uivEXT_remap_index 411 +#define Uniform4uiEXT_remap_index 412 +#define Uniform4uivEXT_remap_index 413 +#define VertexAttribI1iEXT_remap_index 414 +#define VertexAttribI1ivEXT_remap_index 415 +#define VertexAttribI1uiEXT_remap_index 416 +#define VertexAttribI1uivEXT_remap_index 417 +#define VertexAttribI2iEXT_remap_index 418 +#define VertexAttribI2ivEXT_remap_index 419 +#define VertexAttribI2uiEXT_remap_index 420 +#define VertexAttribI2uivEXT_remap_index 421 +#define VertexAttribI3iEXT_remap_index 422 +#define VertexAttribI3ivEXT_remap_index 423 +#define VertexAttribI3uiEXT_remap_index 424 +#define VertexAttribI3uivEXT_remap_index 425 +#define VertexAttribI4bvEXT_remap_index 426 +#define VertexAttribI4iEXT_remap_index 427 +#define VertexAttribI4ivEXT_remap_index 428 +#define VertexAttribI4svEXT_remap_index 429 +#define VertexAttribI4ubvEXT_remap_index 430 +#define VertexAttribI4uiEXT_remap_index 431 +#define VertexAttribI4uivEXT_remap_index 432 +#define VertexAttribI4usvEXT_remap_index 433 +#define VertexAttribIPointerEXT_remap_index 434 +#define FramebufferTextureLayerEXT_remap_index 435 +#define ColorMaskIndexedEXT_remap_index 436 +#define DisableIndexedEXT_remap_index 437 +#define EnableIndexedEXT_remap_index 438 +#define GetBooleanIndexedvEXT_remap_index 439 +#define GetIntegerIndexedvEXT_remap_index 440 +#define IsEnabledIndexedEXT_remap_index 441 +#define ClearColorIiEXT_remap_index 442 +#define ClearColorIuiEXT_remap_index 443 +#define GetTexParameterIivEXT_remap_index 444 +#define GetTexParameterIuivEXT_remap_index 445 +#define TexParameterIivEXT_remap_index 446 +#define TexParameterIuivEXT_remap_index 447 +#define BeginConditionalRenderNV_remap_index 448 +#define EndConditionalRenderNV_remap_index 449 +#define BeginTransformFeedbackEXT_remap_index 450 +#define BindBufferBaseEXT_remap_index 451 +#define BindBufferOffsetEXT_remap_index 452 +#define BindBufferRangeEXT_remap_index 453 +#define EndTransformFeedbackEXT_remap_index 454 +#define GetTransformFeedbackVaryingEXT_remap_index 455 +#define TransformFeedbackVaryingsEXT_remap_index 456 +#define ProvokingVertexEXT_remap_index 457 +#define GetTexParameterPointervAPPLE_remap_index 458 +#define TextureRangeAPPLE_remap_index 459 +#define GetObjectParameterivAPPLE_remap_index 460 +#define ObjectPurgeableAPPLE_remap_index 461 +#define ObjectUnpurgeableAPPLE_remap_index 462 +#define ActiveProgramEXT_remap_index 463 +#define CreateShaderProgramEXT_remap_index 464 +#define UseShaderProgramEXT_remap_index 465 +#define StencilFuncSeparateATI_remap_index 466 +#define ProgramEnvParameters4fvEXT_remap_index 467 +#define ProgramLocalParameters4fvEXT_remap_index 468 +#define GetQueryObjecti64vEXT_remap_index 469 +#define GetQueryObjectui64vEXT_remap_index 470 +#define EGLImageTargetRenderbufferStorageOES_remap_index 471 +#define EGLImageTargetTexture2DOES_remap_index 472 + +#define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index] +#define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index] +#define _gloffset_CreateShader driDispatchRemapTable[CreateShader_remap_index] +#define _gloffset_DeleteProgram driDispatchRemapTable[DeleteProgram_remap_index] +#define _gloffset_DeleteShader driDispatchRemapTable[DeleteShader_remap_index] +#define _gloffset_DetachShader driDispatchRemapTable[DetachShader_remap_index] +#define _gloffset_GetAttachedShaders driDispatchRemapTable[GetAttachedShaders_remap_index] +#define _gloffset_GetProgramInfoLog driDispatchRemapTable[GetProgramInfoLog_remap_index] +#define _gloffset_GetProgramiv driDispatchRemapTable[GetProgramiv_remap_index] +#define _gloffset_GetShaderInfoLog driDispatchRemapTable[GetShaderInfoLog_remap_index] +#define _gloffset_GetShaderiv driDispatchRemapTable[GetShaderiv_remap_index] +#define _gloffset_IsProgram driDispatchRemapTable[IsProgram_remap_index] +#define _gloffset_IsShader driDispatchRemapTable[IsShader_remap_index] +#define _gloffset_StencilFuncSeparate driDispatchRemapTable[StencilFuncSeparate_remap_index] +#define _gloffset_StencilMaskSeparate driDispatchRemapTable[StencilMaskSeparate_remap_index] +#define _gloffset_StencilOpSeparate driDispatchRemapTable[StencilOpSeparate_remap_index] +#define _gloffset_UniformMatrix2x3fv driDispatchRemapTable[UniformMatrix2x3fv_remap_index] +#define _gloffset_UniformMatrix2x4fv driDispatchRemapTable[UniformMatrix2x4fv_remap_index] +#define _gloffset_UniformMatrix3x2fv driDispatchRemapTable[UniformMatrix3x2fv_remap_index] +#define _gloffset_UniformMatrix3x4fv driDispatchRemapTable[UniformMatrix3x4fv_remap_index] +#define _gloffset_UniformMatrix4x2fv driDispatchRemapTable[UniformMatrix4x2fv_remap_index] +#define _gloffset_UniformMatrix4x3fv driDispatchRemapTable[UniformMatrix4x3fv_remap_index] +#define _gloffset_ClampColor driDispatchRemapTable[ClampColor_remap_index] +#define _gloffset_ClearBufferfi driDispatchRemapTable[ClearBufferfi_remap_index] +#define _gloffset_ClearBufferfv driDispatchRemapTable[ClearBufferfv_remap_index] +#define _gloffset_ClearBufferiv driDispatchRemapTable[ClearBufferiv_remap_index] +#define _gloffset_ClearBufferuiv driDispatchRemapTable[ClearBufferuiv_remap_index] +#define _gloffset_GetStringi driDispatchRemapTable[GetStringi_remap_index] +#define _gloffset_TexBuffer driDispatchRemapTable[TexBuffer_remap_index] +#define _gloffset_FramebufferTexture driDispatchRemapTable[FramebufferTexture_remap_index] +#define _gloffset_GetBufferParameteri64v driDispatchRemapTable[GetBufferParameteri64v_remap_index] +#define _gloffset_GetInteger64i_v driDispatchRemapTable[GetInteger64i_v_remap_index] +#define _gloffset_VertexAttribDivisor driDispatchRemapTable[VertexAttribDivisor_remap_index] +#define _gloffset_LoadTransposeMatrixdARB driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index] +#define _gloffset_LoadTransposeMatrixfARB driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index] +#define _gloffset_MultTransposeMatrixdARB driDispatchRemapTable[MultTransposeMatrixdARB_remap_index] +#define _gloffset_MultTransposeMatrixfARB driDispatchRemapTable[MultTransposeMatrixfARB_remap_index] +#define _gloffset_SampleCoverageARB driDispatchRemapTable[SampleCoverageARB_remap_index] +#define _gloffset_CompressedTexImage1DARB driDispatchRemapTable[CompressedTexImage1DARB_remap_index] +#define _gloffset_CompressedTexImage2DARB driDispatchRemapTable[CompressedTexImage2DARB_remap_index] +#define _gloffset_CompressedTexImage3DARB driDispatchRemapTable[CompressedTexImage3DARB_remap_index] +#define _gloffset_CompressedTexSubImage1DARB driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index] +#define _gloffset_CompressedTexSubImage2DARB driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index] +#define _gloffset_CompressedTexSubImage3DARB driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index] +#define _gloffset_GetCompressedTexImageARB driDispatchRemapTable[GetCompressedTexImageARB_remap_index] +#define _gloffset_DisableVertexAttribArrayARB driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index] +#define _gloffset_EnableVertexAttribArrayARB driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index] +#define _gloffset_GetProgramEnvParameterdvARB driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index] +#define _gloffset_GetProgramEnvParameterfvARB driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index] +#define _gloffset_GetProgramLocalParameterdvARB driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index] +#define _gloffset_GetProgramLocalParameterfvARB driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index] +#define _gloffset_GetProgramStringARB driDispatchRemapTable[GetProgramStringARB_remap_index] +#define _gloffset_GetProgramivARB driDispatchRemapTable[GetProgramivARB_remap_index] +#define _gloffset_GetVertexAttribdvARB driDispatchRemapTable[GetVertexAttribdvARB_remap_index] +#define _gloffset_GetVertexAttribfvARB driDispatchRemapTable[GetVertexAttribfvARB_remap_index] +#define _gloffset_GetVertexAttribivARB driDispatchRemapTable[GetVertexAttribivARB_remap_index] +#define _gloffset_ProgramEnvParameter4dARB driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index] +#define _gloffset_ProgramEnvParameter4dvARB driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index] +#define _gloffset_ProgramEnvParameter4fARB driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index] +#define _gloffset_ProgramEnvParameter4fvARB driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index] +#define _gloffset_ProgramLocalParameter4dARB driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index] +#define _gloffset_ProgramLocalParameter4dvARB driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index] +#define _gloffset_ProgramLocalParameter4fARB driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index] +#define _gloffset_ProgramLocalParameter4fvARB driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index] +#define _gloffset_ProgramStringARB driDispatchRemapTable[ProgramStringARB_remap_index] +#define _gloffset_VertexAttrib1dARB driDispatchRemapTable[VertexAttrib1dARB_remap_index] +#define _gloffset_VertexAttrib1dvARB driDispatchRemapTable[VertexAttrib1dvARB_remap_index] +#define _gloffset_VertexAttrib1fARB driDispatchRemapTable[VertexAttrib1fARB_remap_index] +#define _gloffset_VertexAttrib1fvARB driDispatchRemapTable[VertexAttrib1fvARB_remap_index] +#define _gloffset_VertexAttrib1sARB driDispatchRemapTable[VertexAttrib1sARB_remap_index] +#define _gloffset_VertexAttrib1svARB driDispatchRemapTable[VertexAttrib1svARB_remap_index] +#define _gloffset_VertexAttrib2dARB driDispatchRemapTable[VertexAttrib2dARB_remap_index] +#define _gloffset_VertexAttrib2dvARB driDispatchRemapTable[VertexAttrib2dvARB_remap_index] +#define _gloffset_VertexAttrib2fARB driDispatchRemapTable[VertexAttrib2fARB_remap_index] +#define _gloffset_VertexAttrib2fvARB driDispatchRemapTable[VertexAttrib2fvARB_remap_index] +#define _gloffset_VertexAttrib2sARB driDispatchRemapTable[VertexAttrib2sARB_remap_index] +#define _gloffset_VertexAttrib2svARB driDispatchRemapTable[VertexAttrib2svARB_remap_index] +#define _gloffset_VertexAttrib3dARB driDispatchRemapTable[VertexAttrib3dARB_remap_index] +#define _gloffset_VertexAttrib3dvARB driDispatchRemapTable[VertexAttrib3dvARB_remap_index] +#define _gloffset_VertexAttrib3fARB driDispatchRemapTable[VertexAttrib3fARB_remap_index] +#define _gloffset_VertexAttrib3fvARB driDispatchRemapTable[VertexAttrib3fvARB_remap_index] +#define _gloffset_VertexAttrib3sARB driDispatchRemapTable[VertexAttrib3sARB_remap_index] +#define _gloffset_VertexAttrib3svARB driDispatchRemapTable[VertexAttrib3svARB_remap_index] +#define _gloffset_VertexAttrib4NbvARB driDispatchRemapTable[VertexAttrib4NbvARB_remap_index] +#define _gloffset_VertexAttrib4NivARB driDispatchRemapTable[VertexAttrib4NivARB_remap_index] +#define _gloffset_VertexAttrib4NsvARB driDispatchRemapTable[VertexAttrib4NsvARB_remap_index] +#define _gloffset_VertexAttrib4NubARB driDispatchRemapTable[VertexAttrib4NubARB_remap_index] +#define _gloffset_VertexAttrib4NubvARB driDispatchRemapTable[VertexAttrib4NubvARB_remap_index] +#define _gloffset_VertexAttrib4NuivARB driDispatchRemapTable[VertexAttrib4NuivARB_remap_index] +#define _gloffset_VertexAttrib4NusvARB driDispatchRemapTable[VertexAttrib4NusvARB_remap_index] +#define _gloffset_VertexAttrib4bvARB driDispatchRemapTable[VertexAttrib4bvARB_remap_index] +#define _gloffset_VertexAttrib4dARB driDispatchRemapTable[VertexAttrib4dARB_remap_index] +#define _gloffset_VertexAttrib4dvARB driDispatchRemapTable[VertexAttrib4dvARB_remap_index] +#define _gloffset_VertexAttrib4fARB driDispatchRemapTable[VertexAttrib4fARB_remap_index] +#define _gloffset_VertexAttrib4fvARB driDispatchRemapTable[VertexAttrib4fvARB_remap_index] +#define _gloffset_VertexAttrib4ivARB driDispatchRemapTable[VertexAttrib4ivARB_remap_index] +#define _gloffset_VertexAttrib4sARB driDispatchRemapTable[VertexAttrib4sARB_remap_index] +#define _gloffset_VertexAttrib4svARB driDispatchRemapTable[VertexAttrib4svARB_remap_index] +#define _gloffset_VertexAttrib4ubvARB driDispatchRemapTable[VertexAttrib4ubvARB_remap_index] +#define _gloffset_VertexAttrib4uivARB driDispatchRemapTable[VertexAttrib4uivARB_remap_index] +#define _gloffset_VertexAttrib4usvARB driDispatchRemapTable[VertexAttrib4usvARB_remap_index] +#define _gloffset_VertexAttribPointerARB driDispatchRemapTable[VertexAttribPointerARB_remap_index] +#define _gloffset_BindBufferARB driDispatchRemapTable[BindBufferARB_remap_index] +#define _gloffset_BufferDataARB driDispatchRemapTable[BufferDataARB_remap_index] +#define _gloffset_BufferSubDataARB driDispatchRemapTable[BufferSubDataARB_remap_index] +#define _gloffset_DeleteBuffersARB driDispatchRemapTable[DeleteBuffersARB_remap_index] +#define _gloffset_GenBuffersARB driDispatchRemapTable[GenBuffersARB_remap_index] +#define _gloffset_GetBufferParameterivARB driDispatchRemapTable[GetBufferParameterivARB_remap_index] +#define _gloffset_GetBufferPointervARB driDispatchRemapTable[GetBufferPointervARB_remap_index] +#define _gloffset_GetBufferSubDataARB driDispatchRemapTable[GetBufferSubDataARB_remap_index] +#define _gloffset_IsBufferARB driDispatchRemapTable[IsBufferARB_remap_index] +#define _gloffset_MapBufferARB driDispatchRemapTable[MapBufferARB_remap_index] +#define _gloffset_UnmapBufferARB driDispatchRemapTable[UnmapBufferARB_remap_index] +#define _gloffset_BeginQueryARB driDispatchRemapTable[BeginQueryARB_remap_index] +#define _gloffset_DeleteQueriesARB driDispatchRemapTable[DeleteQueriesARB_remap_index] +#define _gloffset_EndQueryARB driDispatchRemapTable[EndQueryARB_remap_index] +#define _gloffset_GenQueriesARB driDispatchRemapTable[GenQueriesARB_remap_index] +#define _gloffset_GetQueryObjectivARB driDispatchRemapTable[GetQueryObjectivARB_remap_index] +#define _gloffset_GetQueryObjectuivARB driDispatchRemapTable[GetQueryObjectuivARB_remap_index] +#define _gloffset_GetQueryivARB driDispatchRemapTable[GetQueryivARB_remap_index] +#define _gloffset_IsQueryARB driDispatchRemapTable[IsQueryARB_remap_index] +#define _gloffset_AttachObjectARB driDispatchRemapTable[AttachObjectARB_remap_index] +#define _gloffset_CompileShaderARB driDispatchRemapTable[CompileShaderARB_remap_index] +#define _gloffset_CreateProgramObjectARB driDispatchRemapTable[CreateProgramObjectARB_remap_index] +#define _gloffset_CreateShaderObjectARB driDispatchRemapTable[CreateShaderObjectARB_remap_index] +#define _gloffset_DeleteObjectARB driDispatchRemapTable[DeleteObjectARB_remap_index] +#define _gloffset_DetachObjectARB driDispatchRemapTable[DetachObjectARB_remap_index] +#define _gloffset_GetActiveUniformARB driDispatchRemapTable[GetActiveUniformARB_remap_index] +#define _gloffset_GetAttachedObjectsARB driDispatchRemapTable[GetAttachedObjectsARB_remap_index] +#define _gloffset_GetHandleARB driDispatchRemapTable[GetHandleARB_remap_index] +#define _gloffset_GetInfoLogARB driDispatchRemapTable[GetInfoLogARB_remap_index] +#define _gloffset_GetObjectParameterfvARB driDispatchRemapTable[GetObjectParameterfvARB_remap_index] +#define _gloffset_GetObjectParameterivARB driDispatchRemapTable[GetObjectParameterivARB_remap_index] +#define _gloffset_GetShaderSourceARB driDispatchRemapTable[GetShaderSourceARB_remap_index] +#define _gloffset_GetUniformLocationARB driDispatchRemapTable[GetUniformLocationARB_remap_index] +#define _gloffset_GetUniformfvARB driDispatchRemapTable[GetUniformfvARB_remap_index] +#define _gloffset_GetUniformivARB driDispatchRemapTable[GetUniformivARB_remap_index] +#define _gloffset_LinkProgramARB driDispatchRemapTable[LinkProgramARB_remap_index] +#define _gloffset_ShaderSourceARB driDispatchRemapTable[ShaderSourceARB_remap_index] +#define _gloffset_Uniform1fARB driDispatchRemapTable[Uniform1fARB_remap_index] +#define _gloffset_Uniform1fvARB driDispatchRemapTable[Uniform1fvARB_remap_index] +#define _gloffset_Uniform1iARB driDispatchRemapTable[Uniform1iARB_remap_index] +#define _gloffset_Uniform1ivARB driDispatchRemapTable[Uniform1ivARB_remap_index] +#define _gloffset_Uniform2fARB driDispatchRemapTable[Uniform2fARB_remap_index] +#define _gloffset_Uniform2fvARB driDispatchRemapTable[Uniform2fvARB_remap_index] +#define _gloffset_Uniform2iARB driDispatchRemapTable[Uniform2iARB_remap_index] +#define _gloffset_Uniform2ivARB driDispatchRemapTable[Uniform2ivARB_remap_index] +#define _gloffset_Uniform3fARB driDispatchRemapTable[Uniform3fARB_remap_index] +#define _gloffset_Uniform3fvARB driDispatchRemapTable[Uniform3fvARB_remap_index] +#define _gloffset_Uniform3iARB driDispatchRemapTable[Uniform3iARB_remap_index] +#define _gloffset_Uniform3ivARB driDispatchRemapTable[Uniform3ivARB_remap_index] +#define _gloffset_Uniform4fARB driDispatchRemapTable[Uniform4fARB_remap_index] +#define _gloffset_Uniform4fvARB driDispatchRemapTable[Uniform4fvARB_remap_index] +#define _gloffset_Uniform4iARB driDispatchRemapTable[Uniform4iARB_remap_index] +#define _gloffset_Uniform4ivARB driDispatchRemapTable[Uniform4ivARB_remap_index] +#define _gloffset_UniformMatrix2fvARB driDispatchRemapTable[UniformMatrix2fvARB_remap_index] +#define _gloffset_UniformMatrix3fvARB driDispatchRemapTable[UniformMatrix3fvARB_remap_index] +#define _gloffset_UniformMatrix4fvARB driDispatchRemapTable[UniformMatrix4fvARB_remap_index] +#define _gloffset_UseProgramObjectARB driDispatchRemapTable[UseProgramObjectARB_remap_index] +#define _gloffset_ValidateProgramARB driDispatchRemapTable[ValidateProgramARB_remap_index] +#define _gloffset_BindAttribLocationARB driDispatchRemapTable[BindAttribLocationARB_remap_index] +#define _gloffset_GetActiveAttribARB driDispatchRemapTable[GetActiveAttribARB_remap_index] +#define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index] +#define _gloffset_DrawBuffersARB driDispatchRemapTable[DrawBuffersARB_remap_index] +#define _gloffset_DrawArraysInstancedARB driDispatchRemapTable[DrawArraysInstancedARB_remap_index] +#define _gloffset_DrawElementsInstancedARB driDispatchRemapTable[DrawElementsInstancedARB_remap_index] +#define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index] +#define _gloffset_FramebufferTextureARB driDispatchRemapTable[FramebufferTextureARB_remap_index] +#define _gloffset_FramebufferTextureFaceARB driDispatchRemapTable[FramebufferTextureFaceARB_remap_index] +#define _gloffset_ProgramParameteriARB driDispatchRemapTable[ProgramParameteriARB_remap_index] +#define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index] +#define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index] +#define _gloffset_BindVertexArray driDispatchRemapTable[BindVertexArray_remap_index] +#define _gloffset_GenVertexArrays driDispatchRemapTable[GenVertexArrays_remap_index] +#define _gloffset_CopyBufferSubData driDispatchRemapTable[CopyBufferSubData_remap_index] +#define _gloffset_ClientWaitSync driDispatchRemapTable[ClientWaitSync_remap_index] +#define _gloffset_DeleteSync driDispatchRemapTable[DeleteSync_remap_index] +#define _gloffset_FenceSync driDispatchRemapTable[FenceSync_remap_index] +#define _gloffset_GetInteger64v driDispatchRemapTable[GetInteger64v_remap_index] +#define _gloffset_GetSynciv driDispatchRemapTable[GetSynciv_remap_index] +#define _gloffset_IsSync driDispatchRemapTable[IsSync_remap_index] +#define _gloffset_WaitSync driDispatchRemapTable[WaitSync_remap_index] +#define _gloffset_DrawElementsBaseVertex driDispatchRemapTable[DrawElementsBaseVertex_remap_index] +#define _gloffset_DrawRangeElementsBaseVertex driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index] +#define _gloffset_MultiDrawElementsBaseVertex driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index] +#define _gloffset_BindTransformFeedback driDispatchRemapTable[BindTransformFeedback_remap_index] +#define _gloffset_DeleteTransformFeedbacks driDispatchRemapTable[DeleteTransformFeedbacks_remap_index] +#define _gloffset_DrawTransformFeedback driDispatchRemapTable[DrawTransformFeedback_remap_index] +#define _gloffset_GenTransformFeedbacks driDispatchRemapTable[GenTransformFeedbacks_remap_index] +#define _gloffset_IsTransformFeedback driDispatchRemapTable[IsTransformFeedback_remap_index] +#define _gloffset_PauseTransformFeedback driDispatchRemapTable[PauseTransformFeedback_remap_index] +#define _gloffset_ResumeTransformFeedback driDispatchRemapTable[ResumeTransformFeedback_remap_index] +#define _gloffset_PolygonOffsetEXT driDispatchRemapTable[PolygonOffsetEXT_remap_index] +#define _gloffset_GetPixelTexGenParameterfvSGIS driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index] +#define _gloffset_GetPixelTexGenParameterivSGIS driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index] +#define _gloffset_PixelTexGenParameterfSGIS driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index] +#define _gloffset_PixelTexGenParameterfvSGIS driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index] +#define _gloffset_PixelTexGenParameteriSGIS driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index] +#define _gloffset_PixelTexGenParameterivSGIS driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index] +#define _gloffset_SampleMaskSGIS driDispatchRemapTable[SampleMaskSGIS_remap_index] +#define _gloffset_SamplePatternSGIS driDispatchRemapTable[SamplePatternSGIS_remap_index] +#define _gloffset_ColorPointerEXT driDispatchRemapTable[ColorPointerEXT_remap_index] +#define _gloffset_EdgeFlagPointerEXT driDispatchRemapTable[EdgeFlagPointerEXT_remap_index] +#define _gloffset_IndexPointerEXT driDispatchRemapTable[IndexPointerEXT_remap_index] +#define _gloffset_NormalPointerEXT driDispatchRemapTable[NormalPointerEXT_remap_index] +#define _gloffset_TexCoordPointerEXT driDispatchRemapTable[TexCoordPointerEXT_remap_index] +#define _gloffset_VertexPointerEXT driDispatchRemapTable[VertexPointerEXT_remap_index] +#define _gloffset_PointParameterfEXT driDispatchRemapTable[PointParameterfEXT_remap_index] +#define _gloffset_PointParameterfvEXT driDispatchRemapTable[PointParameterfvEXT_remap_index] +#define _gloffset_LockArraysEXT driDispatchRemapTable[LockArraysEXT_remap_index] +#define _gloffset_UnlockArraysEXT driDispatchRemapTable[UnlockArraysEXT_remap_index] +#define _gloffset_SecondaryColor3bEXT driDispatchRemapTable[SecondaryColor3bEXT_remap_index] +#define _gloffset_SecondaryColor3bvEXT driDispatchRemapTable[SecondaryColor3bvEXT_remap_index] +#define _gloffset_SecondaryColor3dEXT driDispatchRemapTable[SecondaryColor3dEXT_remap_index] +#define _gloffset_SecondaryColor3dvEXT driDispatchRemapTable[SecondaryColor3dvEXT_remap_index] +#define _gloffset_SecondaryColor3fEXT driDispatchRemapTable[SecondaryColor3fEXT_remap_index] +#define _gloffset_SecondaryColor3fvEXT driDispatchRemapTable[SecondaryColor3fvEXT_remap_index] +#define _gloffset_SecondaryColor3iEXT driDispatchRemapTable[SecondaryColor3iEXT_remap_index] +#define _gloffset_SecondaryColor3ivEXT driDispatchRemapTable[SecondaryColor3ivEXT_remap_index] +#define _gloffset_SecondaryColor3sEXT driDispatchRemapTable[SecondaryColor3sEXT_remap_index] +#define _gloffset_SecondaryColor3svEXT driDispatchRemapTable[SecondaryColor3svEXT_remap_index] +#define _gloffset_SecondaryColor3ubEXT driDispatchRemapTable[SecondaryColor3ubEXT_remap_index] +#define _gloffset_SecondaryColor3ubvEXT driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index] +#define _gloffset_SecondaryColor3uiEXT driDispatchRemapTable[SecondaryColor3uiEXT_remap_index] +#define _gloffset_SecondaryColor3uivEXT driDispatchRemapTable[SecondaryColor3uivEXT_remap_index] +#define _gloffset_SecondaryColor3usEXT driDispatchRemapTable[SecondaryColor3usEXT_remap_index] +#define _gloffset_SecondaryColor3usvEXT driDispatchRemapTable[SecondaryColor3usvEXT_remap_index] +#define _gloffset_SecondaryColorPointerEXT driDispatchRemapTable[SecondaryColorPointerEXT_remap_index] +#define _gloffset_MultiDrawArraysEXT driDispatchRemapTable[MultiDrawArraysEXT_remap_index] +#define _gloffset_MultiDrawElementsEXT driDispatchRemapTable[MultiDrawElementsEXT_remap_index] +#define _gloffset_FogCoordPointerEXT driDispatchRemapTable[FogCoordPointerEXT_remap_index] +#define _gloffset_FogCoorddEXT driDispatchRemapTable[FogCoorddEXT_remap_index] +#define _gloffset_FogCoorddvEXT driDispatchRemapTable[FogCoorddvEXT_remap_index] +#define _gloffset_FogCoordfEXT driDispatchRemapTable[FogCoordfEXT_remap_index] +#define _gloffset_FogCoordfvEXT driDispatchRemapTable[FogCoordfvEXT_remap_index] +#define _gloffset_PixelTexGenSGIX driDispatchRemapTable[PixelTexGenSGIX_remap_index] +#define _gloffset_BlendFuncSeparateEXT driDispatchRemapTable[BlendFuncSeparateEXT_remap_index] +#define _gloffset_FlushVertexArrayRangeNV driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index] +#define _gloffset_VertexArrayRangeNV driDispatchRemapTable[VertexArrayRangeNV_remap_index] +#define _gloffset_CombinerInputNV driDispatchRemapTable[CombinerInputNV_remap_index] +#define _gloffset_CombinerOutputNV driDispatchRemapTable[CombinerOutputNV_remap_index] +#define _gloffset_CombinerParameterfNV driDispatchRemapTable[CombinerParameterfNV_remap_index] +#define _gloffset_CombinerParameterfvNV driDispatchRemapTable[CombinerParameterfvNV_remap_index] +#define _gloffset_CombinerParameteriNV driDispatchRemapTable[CombinerParameteriNV_remap_index] +#define _gloffset_CombinerParameterivNV driDispatchRemapTable[CombinerParameterivNV_remap_index] +#define _gloffset_FinalCombinerInputNV driDispatchRemapTable[FinalCombinerInputNV_remap_index] +#define _gloffset_GetCombinerInputParameterfvNV driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index] +#define _gloffset_GetCombinerInputParameterivNV driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index] +#define _gloffset_GetCombinerOutputParameterfvNV driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index] +#define _gloffset_GetCombinerOutputParameterivNV driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index] +#define _gloffset_GetFinalCombinerInputParameterfvNV driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index] +#define _gloffset_GetFinalCombinerInputParameterivNV driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index] +#define _gloffset_ResizeBuffersMESA driDispatchRemapTable[ResizeBuffersMESA_remap_index] +#define _gloffset_WindowPos2dMESA driDispatchRemapTable[WindowPos2dMESA_remap_index] +#define _gloffset_WindowPos2dvMESA driDispatchRemapTable[WindowPos2dvMESA_remap_index] +#define _gloffset_WindowPos2fMESA driDispatchRemapTable[WindowPos2fMESA_remap_index] +#define _gloffset_WindowPos2fvMESA driDispatchRemapTable[WindowPos2fvMESA_remap_index] +#define _gloffset_WindowPos2iMESA driDispatchRemapTable[WindowPos2iMESA_remap_index] +#define _gloffset_WindowPos2ivMESA driDispatchRemapTable[WindowPos2ivMESA_remap_index] +#define _gloffset_WindowPos2sMESA driDispatchRemapTable[WindowPos2sMESA_remap_index] +#define _gloffset_WindowPos2svMESA driDispatchRemapTable[WindowPos2svMESA_remap_index] +#define _gloffset_WindowPos3dMESA driDispatchRemapTable[WindowPos3dMESA_remap_index] +#define _gloffset_WindowPos3dvMESA driDispatchRemapTable[WindowPos3dvMESA_remap_index] +#define _gloffset_WindowPos3fMESA driDispatchRemapTable[WindowPos3fMESA_remap_index] +#define _gloffset_WindowPos3fvMESA driDispatchRemapTable[WindowPos3fvMESA_remap_index] +#define _gloffset_WindowPos3iMESA driDispatchRemapTable[WindowPos3iMESA_remap_index] +#define _gloffset_WindowPos3ivMESA driDispatchRemapTable[WindowPos3ivMESA_remap_index] +#define _gloffset_WindowPos3sMESA driDispatchRemapTable[WindowPos3sMESA_remap_index] +#define _gloffset_WindowPos3svMESA driDispatchRemapTable[WindowPos3svMESA_remap_index] +#define _gloffset_WindowPos4dMESA driDispatchRemapTable[WindowPos4dMESA_remap_index] +#define _gloffset_WindowPos4dvMESA driDispatchRemapTable[WindowPos4dvMESA_remap_index] +#define _gloffset_WindowPos4fMESA driDispatchRemapTable[WindowPos4fMESA_remap_index] +#define _gloffset_WindowPos4fvMESA driDispatchRemapTable[WindowPos4fvMESA_remap_index] +#define _gloffset_WindowPos4iMESA driDispatchRemapTable[WindowPos4iMESA_remap_index] +#define _gloffset_WindowPos4ivMESA driDispatchRemapTable[WindowPos4ivMESA_remap_index] +#define _gloffset_WindowPos4sMESA driDispatchRemapTable[WindowPos4sMESA_remap_index] +#define _gloffset_WindowPos4svMESA driDispatchRemapTable[WindowPos4svMESA_remap_index] +#define _gloffset_MultiModeDrawArraysIBM driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index] +#define _gloffset_MultiModeDrawElementsIBM driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index] +#define _gloffset_DeleteFencesNV driDispatchRemapTable[DeleteFencesNV_remap_index] +#define _gloffset_FinishFenceNV driDispatchRemapTable[FinishFenceNV_remap_index] +#define _gloffset_GenFencesNV driDispatchRemapTable[GenFencesNV_remap_index] +#define _gloffset_GetFenceivNV driDispatchRemapTable[GetFenceivNV_remap_index] +#define _gloffset_IsFenceNV driDispatchRemapTable[IsFenceNV_remap_index] +#define _gloffset_SetFenceNV driDispatchRemapTable[SetFenceNV_remap_index] +#define _gloffset_TestFenceNV driDispatchRemapTable[TestFenceNV_remap_index] +#define _gloffset_AreProgramsResidentNV driDispatchRemapTable[AreProgramsResidentNV_remap_index] +#define _gloffset_BindProgramNV driDispatchRemapTable[BindProgramNV_remap_index] +#define _gloffset_DeleteProgramsNV driDispatchRemapTable[DeleteProgramsNV_remap_index] +#define _gloffset_ExecuteProgramNV driDispatchRemapTable[ExecuteProgramNV_remap_index] +#define _gloffset_GenProgramsNV driDispatchRemapTable[GenProgramsNV_remap_index] +#define _gloffset_GetProgramParameterdvNV driDispatchRemapTable[GetProgramParameterdvNV_remap_index] +#define _gloffset_GetProgramParameterfvNV driDispatchRemapTable[GetProgramParameterfvNV_remap_index] +#define _gloffset_GetProgramStringNV driDispatchRemapTable[GetProgramStringNV_remap_index] +#define _gloffset_GetProgramivNV driDispatchRemapTable[GetProgramivNV_remap_index] +#define _gloffset_GetTrackMatrixivNV driDispatchRemapTable[GetTrackMatrixivNV_remap_index] +#define _gloffset_GetVertexAttribPointervNV driDispatchRemapTable[GetVertexAttribPointervNV_remap_index] +#define _gloffset_GetVertexAttribdvNV driDispatchRemapTable[GetVertexAttribdvNV_remap_index] +#define _gloffset_GetVertexAttribfvNV driDispatchRemapTable[GetVertexAttribfvNV_remap_index] +#define _gloffset_GetVertexAttribivNV driDispatchRemapTable[GetVertexAttribivNV_remap_index] +#define _gloffset_IsProgramNV driDispatchRemapTable[IsProgramNV_remap_index] +#define _gloffset_LoadProgramNV driDispatchRemapTable[LoadProgramNV_remap_index] +#define _gloffset_ProgramParameters4dvNV driDispatchRemapTable[ProgramParameters4dvNV_remap_index] +#define _gloffset_ProgramParameters4fvNV driDispatchRemapTable[ProgramParameters4fvNV_remap_index] +#define _gloffset_RequestResidentProgramsNV driDispatchRemapTable[RequestResidentProgramsNV_remap_index] +#define _gloffset_TrackMatrixNV driDispatchRemapTable[TrackMatrixNV_remap_index] +#define _gloffset_VertexAttrib1dNV driDispatchRemapTable[VertexAttrib1dNV_remap_index] +#define _gloffset_VertexAttrib1dvNV driDispatchRemapTable[VertexAttrib1dvNV_remap_index] +#define _gloffset_VertexAttrib1fNV driDispatchRemapTable[VertexAttrib1fNV_remap_index] +#define _gloffset_VertexAttrib1fvNV driDispatchRemapTable[VertexAttrib1fvNV_remap_index] +#define _gloffset_VertexAttrib1sNV driDispatchRemapTable[VertexAttrib1sNV_remap_index] +#define _gloffset_VertexAttrib1svNV driDispatchRemapTable[VertexAttrib1svNV_remap_index] +#define _gloffset_VertexAttrib2dNV driDispatchRemapTable[VertexAttrib2dNV_remap_index] +#define _gloffset_VertexAttrib2dvNV driDispatchRemapTable[VertexAttrib2dvNV_remap_index] +#define _gloffset_VertexAttrib2fNV driDispatchRemapTable[VertexAttrib2fNV_remap_index] +#define _gloffset_VertexAttrib2fvNV driDispatchRemapTable[VertexAttrib2fvNV_remap_index] +#define _gloffset_VertexAttrib2sNV driDispatchRemapTable[VertexAttrib2sNV_remap_index] +#define _gloffset_VertexAttrib2svNV driDispatchRemapTable[VertexAttrib2svNV_remap_index] +#define _gloffset_VertexAttrib3dNV driDispatchRemapTable[VertexAttrib3dNV_remap_index] +#define _gloffset_VertexAttrib3dvNV driDispatchRemapTable[VertexAttrib3dvNV_remap_index] +#define _gloffset_VertexAttrib3fNV driDispatchRemapTable[VertexAttrib3fNV_remap_index] +#define _gloffset_VertexAttrib3fvNV driDispatchRemapTable[VertexAttrib3fvNV_remap_index] +#define _gloffset_VertexAttrib3sNV driDispatchRemapTable[VertexAttrib3sNV_remap_index] +#define _gloffset_VertexAttrib3svNV driDispatchRemapTable[VertexAttrib3svNV_remap_index] +#define _gloffset_VertexAttrib4dNV driDispatchRemapTable[VertexAttrib4dNV_remap_index] +#define _gloffset_VertexAttrib4dvNV driDispatchRemapTable[VertexAttrib4dvNV_remap_index] +#define _gloffset_VertexAttrib4fNV driDispatchRemapTable[VertexAttrib4fNV_remap_index] +#define _gloffset_VertexAttrib4fvNV driDispatchRemapTable[VertexAttrib4fvNV_remap_index] +#define _gloffset_VertexAttrib4sNV driDispatchRemapTable[VertexAttrib4sNV_remap_index] +#define _gloffset_VertexAttrib4svNV driDispatchRemapTable[VertexAttrib4svNV_remap_index] +#define _gloffset_VertexAttrib4ubNV driDispatchRemapTable[VertexAttrib4ubNV_remap_index] +#define _gloffset_VertexAttrib4ubvNV driDispatchRemapTable[VertexAttrib4ubvNV_remap_index] +#define _gloffset_VertexAttribPointerNV driDispatchRemapTable[VertexAttribPointerNV_remap_index] +#define _gloffset_VertexAttribs1dvNV driDispatchRemapTable[VertexAttribs1dvNV_remap_index] +#define _gloffset_VertexAttribs1fvNV driDispatchRemapTable[VertexAttribs1fvNV_remap_index] +#define _gloffset_VertexAttribs1svNV driDispatchRemapTable[VertexAttribs1svNV_remap_index] +#define _gloffset_VertexAttribs2dvNV driDispatchRemapTable[VertexAttribs2dvNV_remap_index] +#define _gloffset_VertexAttribs2fvNV driDispatchRemapTable[VertexAttribs2fvNV_remap_index] +#define _gloffset_VertexAttribs2svNV driDispatchRemapTable[VertexAttribs2svNV_remap_index] +#define _gloffset_VertexAttribs3dvNV driDispatchRemapTable[VertexAttribs3dvNV_remap_index] +#define _gloffset_VertexAttribs3fvNV driDispatchRemapTable[VertexAttribs3fvNV_remap_index] +#define _gloffset_VertexAttribs3svNV driDispatchRemapTable[VertexAttribs3svNV_remap_index] +#define _gloffset_VertexAttribs4dvNV driDispatchRemapTable[VertexAttribs4dvNV_remap_index] +#define _gloffset_VertexAttribs4fvNV driDispatchRemapTable[VertexAttribs4fvNV_remap_index] +#define _gloffset_VertexAttribs4svNV driDispatchRemapTable[VertexAttribs4svNV_remap_index] +#define _gloffset_VertexAttribs4ubvNV driDispatchRemapTable[VertexAttribs4ubvNV_remap_index] +#define _gloffset_GetTexBumpParameterfvATI driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index] +#define _gloffset_GetTexBumpParameterivATI driDispatchRemapTable[GetTexBumpParameterivATI_remap_index] +#define _gloffset_TexBumpParameterfvATI driDispatchRemapTable[TexBumpParameterfvATI_remap_index] +#define _gloffset_TexBumpParameterivATI driDispatchRemapTable[TexBumpParameterivATI_remap_index] +#define _gloffset_AlphaFragmentOp1ATI driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index] +#define _gloffset_AlphaFragmentOp2ATI driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index] +#define _gloffset_AlphaFragmentOp3ATI driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index] +#define _gloffset_BeginFragmentShaderATI driDispatchRemapTable[BeginFragmentShaderATI_remap_index] +#define _gloffset_BindFragmentShaderATI driDispatchRemapTable[BindFragmentShaderATI_remap_index] +#define _gloffset_ColorFragmentOp1ATI driDispatchRemapTable[ColorFragmentOp1ATI_remap_index] +#define _gloffset_ColorFragmentOp2ATI driDispatchRemapTable[ColorFragmentOp2ATI_remap_index] +#define _gloffset_ColorFragmentOp3ATI driDispatchRemapTable[ColorFragmentOp3ATI_remap_index] +#define _gloffset_DeleteFragmentShaderATI driDispatchRemapTable[DeleteFragmentShaderATI_remap_index] +#define _gloffset_EndFragmentShaderATI driDispatchRemapTable[EndFragmentShaderATI_remap_index] +#define _gloffset_GenFragmentShadersATI driDispatchRemapTable[GenFragmentShadersATI_remap_index] +#define _gloffset_PassTexCoordATI driDispatchRemapTable[PassTexCoordATI_remap_index] +#define _gloffset_SampleMapATI driDispatchRemapTable[SampleMapATI_remap_index] +#define _gloffset_SetFragmentShaderConstantATI driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index] +#define _gloffset_PointParameteriNV driDispatchRemapTable[PointParameteriNV_remap_index] +#define _gloffset_PointParameterivNV driDispatchRemapTable[PointParameterivNV_remap_index] +#define _gloffset_ActiveStencilFaceEXT driDispatchRemapTable[ActiveStencilFaceEXT_remap_index] +#define _gloffset_BindVertexArrayAPPLE driDispatchRemapTable[BindVertexArrayAPPLE_remap_index] +#define _gloffset_DeleteVertexArraysAPPLE driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index] +#define _gloffset_GenVertexArraysAPPLE driDispatchRemapTable[GenVertexArraysAPPLE_remap_index] +#define _gloffset_IsVertexArrayAPPLE driDispatchRemapTable[IsVertexArrayAPPLE_remap_index] +#define _gloffset_GetProgramNamedParameterdvNV driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index] +#define _gloffset_GetProgramNamedParameterfvNV driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index] +#define _gloffset_ProgramNamedParameter4dNV driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index] +#define _gloffset_ProgramNamedParameter4dvNV driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index] +#define _gloffset_ProgramNamedParameter4fNV driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index] +#define _gloffset_ProgramNamedParameter4fvNV driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index] +#define _gloffset_PrimitiveRestartIndexNV driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index] +#define _gloffset_PrimitiveRestartNV driDispatchRemapTable[PrimitiveRestartNV_remap_index] +#define _gloffset_DepthBoundsEXT driDispatchRemapTable[DepthBoundsEXT_remap_index] +#define _gloffset_BlendEquationSeparateEXT driDispatchRemapTable[BlendEquationSeparateEXT_remap_index] +#define _gloffset_BindFramebufferEXT driDispatchRemapTable[BindFramebufferEXT_remap_index] +#define _gloffset_BindRenderbufferEXT driDispatchRemapTable[BindRenderbufferEXT_remap_index] +#define _gloffset_CheckFramebufferStatusEXT driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index] +#define _gloffset_DeleteFramebuffersEXT driDispatchRemapTable[DeleteFramebuffersEXT_remap_index] +#define _gloffset_DeleteRenderbuffersEXT driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index] +#define _gloffset_FramebufferRenderbufferEXT driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index] +#define _gloffset_FramebufferTexture1DEXT driDispatchRemapTable[FramebufferTexture1DEXT_remap_index] +#define _gloffset_FramebufferTexture2DEXT driDispatchRemapTable[FramebufferTexture2DEXT_remap_index] +#define _gloffset_FramebufferTexture3DEXT driDispatchRemapTable[FramebufferTexture3DEXT_remap_index] +#define _gloffset_GenFramebuffersEXT driDispatchRemapTable[GenFramebuffersEXT_remap_index] +#define _gloffset_GenRenderbuffersEXT driDispatchRemapTable[GenRenderbuffersEXT_remap_index] +#define _gloffset_GenerateMipmapEXT driDispatchRemapTable[GenerateMipmapEXT_remap_index] +#define _gloffset_GetFramebufferAttachmentParameterivEXT driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index] +#define _gloffset_GetRenderbufferParameterivEXT driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index] +#define _gloffset_IsFramebufferEXT driDispatchRemapTable[IsFramebufferEXT_remap_index] +#define _gloffset_IsRenderbufferEXT driDispatchRemapTable[IsRenderbufferEXT_remap_index] +#define _gloffset_RenderbufferStorageEXT driDispatchRemapTable[RenderbufferStorageEXT_remap_index] +#define _gloffset_BlitFramebufferEXT driDispatchRemapTable[BlitFramebufferEXT_remap_index] +#define _gloffset_BufferParameteriAPPLE driDispatchRemapTable[BufferParameteriAPPLE_remap_index] +#define _gloffset_FlushMappedBufferRangeAPPLE driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index] +#define _gloffset_BindFragDataLocationEXT driDispatchRemapTable[BindFragDataLocationEXT_remap_index] +#define _gloffset_GetFragDataLocationEXT driDispatchRemapTable[GetFragDataLocationEXT_remap_index] +#define _gloffset_GetUniformuivEXT driDispatchRemapTable[GetUniformuivEXT_remap_index] +#define _gloffset_GetVertexAttribIivEXT driDispatchRemapTable[GetVertexAttribIivEXT_remap_index] +#define _gloffset_GetVertexAttribIuivEXT driDispatchRemapTable[GetVertexAttribIuivEXT_remap_index] +#define _gloffset_Uniform1uiEXT driDispatchRemapTable[Uniform1uiEXT_remap_index] +#define _gloffset_Uniform1uivEXT driDispatchRemapTable[Uniform1uivEXT_remap_index] +#define _gloffset_Uniform2uiEXT driDispatchRemapTable[Uniform2uiEXT_remap_index] +#define _gloffset_Uniform2uivEXT driDispatchRemapTable[Uniform2uivEXT_remap_index] +#define _gloffset_Uniform3uiEXT driDispatchRemapTable[Uniform3uiEXT_remap_index] +#define _gloffset_Uniform3uivEXT driDispatchRemapTable[Uniform3uivEXT_remap_index] +#define _gloffset_Uniform4uiEXT driDispatchRemapTable[Uniform4uiEXT_remap_index] +#define _gloffset_Uniform4uivEXT driDispatchRemapTable[Uniform4uivEXT_remap_index] +#define _gloffset_VertexAttribI1iEXT driDispatchRemapTable[VertexAttribI1iEXT_remap_index] +#define _gloffset_VertexAttribI1ivEXT driDispatchRemapTable[VertexAttribI1ivEXT_remap_index] +#define _gloffset_VertexAttribI1uiEXT driDispatchRemapTable[VertexAttribI1uiEXT_remap_index] +#define _gloffset_VertexAttribI1uivEXT driDispatchRemapTable[VertexAttribI1uivEXT_remap_index] +#define _gloffset_VertexAttribI2iEXT driDispatchRemapTable[VertexAttribI2iEXT_remap_index] +#define _gloffset_VertexAttribI2ivEXT driDispatchRemapTable[VertexAttribI2ivEXT_remap_index] +#define _gloffset_VertexAttribI2uiEXT driDispatchRemapTable[VertexAttribI2uiEXT_remap_index] +#define _gloffset_VertexAttribI2uivEXT driDispatchRemapTable[VertexAttribI2uivEXT_remap_index] +#define _gloffset_VertexAttribI3iEXT driDispatchRemapTable[VertexAttribI3iEXT_remap_index] +#define _gloffset_VertexAttribI3ivEXT driDispatchRemapTable[VertexAttribI3ivEXT_remap_index] +#define _gloffset_VertexAttribI3uiEXT driDispatchRemapTable[VertexAttribI3uiEXT_remap_index] +#define _gloffset_VertexAttribI3uivEXT driDispatchRemapTable[VertexAttribI3uivEXT_remap_index] +#define _gloffset_VertexAttribI4bvEXT driDispatchRemapTable[VertexAttribI4bvEXT_remap_index] +#define _gloffset_VertexAttribI4iEXT driDispatchRemapTable[VertexAttribI4iEXT_remap_index] +#define _gloffset_VertexAttribI4ivEXT driDispatchRemapTable[VertexAttribI4ivEXT_remap_index] +#define _gloffset_VertexAttribI4svEXT driDispatchRemapTable[VertexAttribI4svEXT_remap_index] +#define _gloffset_VertexAttribI4ubvEXT driDispatchRemapTable[VertexAttribI4ubvEXT_remap_index] +#define _gloffset_VertexAttribI4uiEXT driDispatchRemapTable[VertexAttribI4uiEXT_remap_index] +#define _gloffset_VertexAttribI4uivEXT driDispatchRemapTable[VertexAttribI4uivEXT_remap_index] +#define _gloffset_VertexAttribI4usvEXT driDispatchRemapTable[VertexAttribI4usvEXT_remap_index] +#define _gloffset_VertexAttribIPointerEXT driDispatchRemapTable[VertexAttribIPointerEXT_remap_index] +#define _gloffset_FramebufferTextureLayerEXT driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index] +#define _gloffset_ColorMaskIndexedEXT driDispatchRemapTable[ColorMaskIndexedEXT_remap_index] +#define _gloffset_DisableIndexedEXT driDispatchRemapTable[DisableIndexedEXT_remap_index] +#define _gloffset_EnableIndexedEXT driDispatchRemapTable[EnableIndexedEXT_remap_index] +#define _gloffset_GetBooleanIndexedvEXT driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index] +#define _gloffset_GetIntegerIndexedvEXT driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index] +#define _gloffset_IsEnabledIndexedEXT driDispatchRemapTable[IsEnabledIndexedEXT_remap_index] +#define _gloffset_ClearColorIiEXT driDispatchRemapTable[ClearColorIiEXT_remap_index] +#define _gloffset_ClearColorIuiEXT driDispatchRemapTable[ClearColorIuiEXT_remap_index] +#define _gloffset_GetTexParameterIivEXT driDispatchRemapTable[GetTexParameterIivEXT_remap_index] +#define _gloffset_GetTexParameterIuivEXT driDispatchRemapTable[GetTexParameterIuivEXT_remap_index] +#define _gloffset_TexParameterIivEXT driDispatchRemapTable[TexParameterIivEXT_remap_index] +#define _gloffset_TexParameterIuivEXT driDispatchRemapTable[TexParameterIuivEXT_remap_index] +#define _gloffset_BeginConditionalRenderNV driDispatchRemapTable[BeginConditionalRenderNV_remap_index] +#define _gloffset_EndConditionalRenderNV driDispatchRemapTable[EndConditionalRenderNV_remap_index] +#define _gloffset_BeginTransformFeedbackEXT driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index] +#define _gloffset_BindBufferBaseEXT driDispatchRemapTable[BindBufferBaseEXT_remap_index] +#define _gloffset_BindBufferOffsetEXT driDispatchRemapTable[BindBufferOffsetEXT_remap_index] +#define _gloffset_BindBufferRangeEXT driDispatchRemapTable[BindBufferRangeEXT_remap_index] +#define _gloffset_EndTransformFeedbackEXT driDispatchRemapTable[EndTransformFeedbackEXT_remap_index] +#define _gloffset_GetTransformFeedbackVaryingEXT driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index] +#define _gloffset_TransformFeedbackVaryingsEXT driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index] +#define _gloffset_ProvokingVertexEXT driDispatchRemapTable[ProvokingVertexEXT_remap_index] +#define _gloffset_GetTexParameterPointervAPPLE driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index] +#define _gloffset_TextureRangeAPPLE driDispatchRemapTable[TextureRangeAPPLE_remap_index] +#define _gloffset_GetObjectParameterivAPPLE driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index] +#define _gloffset_ObjectPurgeableAPPLE driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index] +#define _gloffset_ObjectUnpurgeableAPPLE driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index] +#define _gloffset_ActiveProgramEXT driDispatchRemapTable[ActiveProgramEXT_remap_index] +#define _gloffset_CreateShaderProgramEXT driDispatchRemapTable[CreateShaderProgramEXT_remap_index] +#define _gloffset_UseShaderProgramEXT driDispatchRemapTable[UseShaderProgramEXT_remap_index] +#define _gloffset_StencilFuncSeparateATI driDispatchRemapTable[StencilFuncSeparateATI_remap_index] +#define _gloffset_ProgramEnvParameters4fvEXT driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index] +#define _gloffset_ProgramLocalParameters4fvEXT driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index] +#define _gloffset_GetQueryObjecti64vEXT driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index] +#define _gloffset_GetQueryObjectui64vEXT driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index] +#define _gloffset_EGLImageTargetRenderbufferStorageOES driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index] +#define _gloffset_EGLImageTargetTexture2DOES driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index] + +#endif /* _GLAPI_USE_REMAP_TABLE */ + +#define CALL_NewList(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), _gloffset_NewList, parameters) +#define GET_NewList(disp) GET_by_offset(disp, _gloffset_NewList) +#define SET_NewList(disp, fn) SET_by_offset(disp, _gloffset_NewList, fn) +#define CALL_EndList(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_EndList, parameters) +#define GET_EndList(disp) GET_by_offset(disp, _gloffset_EndList) +#define SET_EndList(disp, fn) SET_by_offset(disp, _gloffset_EndList, fn) +#define CALL_CallList(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_CallList, parameters) +#define GET_CallList(disp) GET_by_offset(disp, _gloffset_CallList) +#define SET_CallList(disp, fn) SET_by_offset(disp, _gloffset_CallList, fn) +#define CALL_CallLists(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLenum, const GLvoid *)), _gloffset_CallLists, parameters) +#define GET_CallLists(disp) GET_by_offset(disp, _gloffset_CallLists) +#define SET_CallLists(disp, fn) SET_by_offset(disp, _gloffset_CallLists, fn) +#define CALL_DeleteLists(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei)), _gloffset_DeleteLists, parameters) +#define GET_DeleteLists(disp) GET_by_offset(disp, _gloffset_DeleteLists) +#define SET_DeleteLists(disp, fn) SET_by_offset(disp, _gloffset_DeleteLists, fn) +#define CALL_GenLists(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLsizei)), _gloffset_GenLists, parameters) +#define GET_GenLists(disp) GET_by_offset(disp, _gloffset_GenLists) +#define SET_GenLists(disp, fn) SET_by_offset(disp, _gloffset_GenLists, fn) +#define CALL_ListBase(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_ListBase, parameters) +#define GET_ListBase(disp) GET_by_offset(disp, _gloffset_ListBase) +#define SET_ListBase(disp, fn) SET_by_offset(disp, _gloffset_ListBase, fn) +#define CALL_Begin(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_Begin, parameters) +#define GET_Begin(disp) GET_by_offset(disp, _gloffset_Begin) +#define SET_Begin(disp, fn) SET_by_offset(disp, _gloffset_Begin, fn) +#define CALL_Bitmap(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLsizei, GLfloat, GLfloat, GLfloat, GLfloat, const GLubyte *)), _gloffset_Bitmap, parameters) +#define GET_Bitmap(disp) GET_by_offset(disp, _gloffset_Bitmap) +#define SET_Bitmap(disp, fn) SET_by_offset(disp, _gloffset_Bitmap, fn) +#define CALL_Color3b(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte)), _gloffset_Color3b, parameters) +#define GET_Color3b(disp) GET_by_offset(disp, _gloffset_Color3b) +#define SET_Color3b(disp, fn) SET_by_offset(disp, _gloffset_Color3b, fn) +#define CALL_Color3bv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), _gloffset_Color3bv, parameters) +#define GET_Color3bv(disp) GET_by_offset(disp, _gloffset_Color3bv) +#define SET_Color3bv(disp, fn) SET_by_offset(disp, _gloffset_Color3bv, fn) +#define CALL_Color3d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_Color3d, parameters) +#define GET_Color3d(disp) GET_by_offset(disp, _gloffset_Color3d) +#define SET_Color3d(disp, fn) SET_by_offset(disp, _gloffset_Color3d, fn) +#define CALL_Color3dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Color3dv, parameters) +#define GET_Color3dv(disp) GET_by_offset(disp, _gloffset_Color3dv) +#define SET_Color3dv(disp, fn) SET_by_offset(disp, _gloffset_Color3dv, fn) +#define CALL_Color3f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_Color3f, parameters) +#define GET_Color3f(disp) GET_by_offset(disp, _gloffset_Color3f) +#define SET_Color3f(disp, fn) SET_by_offset(disp, _gloffset_Color3f, fn) +#define CALL_Color3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Color3fv, parameters) +#define GET_Color3fv(disp) GET_by_offset(disp, _gloffset_Color3fv) +#define SET_Color3fv(disp, fn) SET_by_offset(disp, _gloffset_Color3fv, fn) +#define CALL_Color3i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_Color3i, parameters) +#define GET_Color3i(disp) GET_by_offset(disp, _gloffset_Color3i) +#define SET_Color3i(disp, fn) SET_by_offset(disp, _gloffset_Color3i, fn) +#define CALL_Color3iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Color3iv, parameters) +#define GET_Color3iv(disp) GET_by_offset(disp, _gloffset_Color3iv) +#define SET_Color3iv(disp, fn) SET_by_offset(disp, _gloffset_Color3iv, fn) +#define CALL_Color3s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_Color3s, parameters) +#define GET_Color3s(disp) GET_by_offset(disp, _gloffset_Color3s) +#define SET_Color3s(disp, fn) SET_by_offset(disp, _gloffset_Color3s, fn) +#define CALL_Color3sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Color3sv, parameters) +#define GET_Color3sv(disp) GET_by_offset(disp, _gloffset_Color3sv) +#define SET_Color3sv(disp, fn) SET_by_offset(disp, _gloffset_Color3sv, fn) +#define CALL_Color3ub(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte, GLubyte, GLubyte)), _gloffset_Color3ub, parameters) +#define GET_Color3ub(disp) GET_by_offset(disp, _gloffset_Color3ub) +#define SET_Color3ub(disp, fn) SET_by_offset(disp, _gloffset_Color3ub, fn) +#define CALL_Color3ubv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), _gloffset_Color3ubv, parameters) +#define GET_Color3ubv(disp) GET_by_offset(disp, _gloffset_Color3ubv) +#define SET_Color3ubv(disp, fn) SET_by_offset(disp, _gloffset_Color3ubv, fn) +#define CALL_Color3ui(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint)), _gloffset_Color3ui, parameters) +#define GET_Color3ui(disp) GET_by_offset(disp, _gloffset_Color3ui) +#define SET_Color3ui(disp, fn) SET_by_offset(disp, _gloffset_Color3ui, fn) +#define CALL_Color3uiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLuint *)), _gloffset_Color3uiv, parameters) +#define GET_Color3uiv(disp) GET_by_offset(disp, _gloffset_Color3uiv) +#define SET_Color3uiv(disp, fn) SET_by_offset(disp, _gloffset_Color3uiv, fn) +#define CALL_Color3us(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLushort, GLushort, GLushort)), _gloffset_Color3us, parameters) +#define GET_Color3us(disp) GET_by_offset(disp, _gloffset_Color3us) +#define SET_Color3us(disp, fn) SET_by_offset(disp, _gloffset_Color3us, fn) +#define CALL_Color3usv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLushort *)), _gloffset_Color3usv, parameters) +#define GET_Color3usv(disp) GET_by_offset(disp, _gloffset_Color3usv) +#define SET_Color3usv(disp, fn) SET_by_offset(disp, _gloffset_Color3usv, fn) +#define CALL_Color4b(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte, GLbyte)), _gloffset_Color4b, parameters) +#define GET_Color4b(disp) GET_by_offset(disp, _gloffset_Color4b) +#define SET_Color4b(disp, fn) SET_by_offset(disp, _gloffset_Color4b, fn) +#define CALL_Color4bv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), _gloffset_Color4bv, parameters) +#define GET_Color4bv(disp) GET_by_offset(disp, _gloffset_Color4bv) +#define SET_Color4bv(disp, fn) SET_by_offset(disp, _gloffset_Color4bv, fn) +#define CALL_Color4d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Color4d, parameters) +#define GET_Color4d(disp) GET_by_offset(disp, _gloffset_Color4d) +#define SET_Color4d(disp, fn) SET_by_offset(disp, _gloffset_Color4d, fn) +#define CALL_Color4dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Color4dv, parameters) +#define GET_Color4dv(disp) GET_by_offset(disp, _gloffset_Color4dv) +#define SET_Color4dv(disp, fn) SET_by_offset(disp, _gloffset_Color4dv, fn) +#define CALL_Color4f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_Color4f, parameters) +#define GET_Color4f(disp) GET_by_offset(disp, _gloffset_Color4f) +#define SET_Color4f(disp, fn) SET_by_offset(disp, _gloffset_Color4f, fn) +#define CALL_Color4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Color4fv, parameters) +#define GET_Color4fv(disp) GET_by_offset(disp, _gloffset_Color4fv) +#define SET_Color4fv(disp, fn) SET_by_offset(disp, _gloffset_Color4fv, fn) +#define CALL_Color4i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_Color4i, parameters) +#define GET_Color4i(disp) GET_by_offset(disp, _gloffset_Color4i) +#define SET_Color4i(disp, fn) SET_by_offset(disp, _gloffset_Color4i, fn) +#define CALL_Color4iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Color4iv, parameters) +#define GET_Color4iv(disp) GET_by_offset(disp, _gloffset_Color4iv) +#define SET_Color4iv(disp, fn) SET_by_offset(disp, _gloffset_Color4iv, fn) +#define CALL_Color4s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_Color4s, parameters) +#define GET_Color4s(disp) GET_by_offset(disp, _gloffset_Color4s) +#define SET_Color4s(disp, fn) SET_by_offset(disp, _gloffset_Color4s, fn) +#define CALL_Color4sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Color4sv, parameters) +#define GET_Color4sv(disp) GET_by_offset(disp, _gloffset_Color4sv) +#define SET_Color4sv(disp, fn) SET_by_offset(disp, _gloffset_Color4sv, fn) +#define CALL_Color4ub(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte, GLubyte, GLubyte, GLubyte)), _gloffset_Color4ub, parameters) +#define GET_Color4ub(disp) GET_by_offset(disp, _gloffset_Color4ub) +#define SET_Color4ub(disp, fn) SET_by_offset(disp, _gloffset_Color4ub, fn) +#define CALL_Color4ubv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), _gloffset_Color4ubv, parameters) +#define GET_Color4ubv(disp) GET_by_offset(disp, _gloffset_Color4ubv) +#define SET_Color4ubv(disp, fn) SET_by_offset(disp, _gloffset_Color4ubv, fn) +#define CALL_Color4ui(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint, GLuint)), _gloffset_Color4ui, parameters) +#define GET_Color4ui(disp) GET_by_offset(disp, _gloffset_Color4ui) +#define SET_Color4ui(disp, fn) SET_by_offset(disp, _gloffset_Color4ui, fn) +#define CALL_Color4uiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLuint *)), _gloffset_Color4uiv, parameters) +#define GET_Color4uiv(disp) GET_by_offset(disp, _gloffset_Color4uiv) +#define SET_Color4uiv(disp, fn) SET_by_offset(disp, _gloffset_Color4uiv, fn) +#define CALL_Color4us(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLushort, GLushort, GLushort, GLushort)), _gloffset_Color4us, parameters) +#define GET_Color4us(disp) GET_by_offset(disp, _gloffset_Color4us) +#define SET_Color4us(disp, fn) SET_by_offset(disp, _gloffset_Color4us, fn) +#define CALL_Color4usv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLushort *)), _gloffset_Color4usv, parameters) +#define GET_Color4usv(disp) GET_by_offset(disp, _gloffset_Color4usv) +#define SET_Color4usv(disp, fn) SET_by_offset(disp, _gloffset_Color4usv, fn) +#define CALL_EdgeFlag(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLboolean)), _gloffset_EdgeFlag, parameters) +#define GET_EdgeFlag(disp) GET_by_offset(disp, _gloffset_EdgeFlag) +#define SET_EdgeFlag(disp, fn) SET_by_offset(disp, _gloffset_EdgeFlag, fn) +#define CALL_EdgeFlagv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLboolean *)), _gloffset_EdgeFlagv, parameters) +#define GET_EdgeFlagv(disp) GET_by_offset(disp, _gloffset_EdgeFlagv) +#define SET_EdgeFlagv(disp, fn) SET_by_offset(disp, _gloffset_EdgeFlagv, fn) +#define CALL_End(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_End, parameters) +#define GET_End(disp) GET_by_offset(disp, _gloffset_End) +#define SET_End(disp, fn) SET_by_offset(disp, _gloffset_End, fn) +#define CALL_Indexd(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), _gloffset_Indexd, parameters) +#define GET_Indexd(disp) GET_by_offset(disp, _gloffset_Indexd) +#define SET_Indexd(disp, fn) SET_by_offset(disp, _gloffset_Indexd, fn) +#define CALL_Indexdv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Indexdv, parameters) +#define GET_Indexdv(disp) GET_by_offset(disp, _gloffset_Indexdv) +#define SET_Indexdv(disp, fn) SET_by_offset(disp, _gloffset_Indexdv, fn) +#define CALL_Indexf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_Indexf, parameters) +#define GET_Indexf(disp) GET_by_offset(disp, _gloffset_Indexf) +#define SET_Indexf(disp, fn) SET_by_offset(disp, _gloffset_Indexf, fn) +#define CALL_Indexfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Indexfv, parameters) +#define GET_Indexfv(disp) GET_by_offset(disp, _gloffset_Indexfv) +#define SET_Indexfv(disp, fn) SET_by_offset(disp, _gloffset_Indexfv, fn) +#define CALL_Indexi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint)), _gloffset_Indexi, parameters) +#define GET_Indexi(disp) GET_by_offset(disp, _gloffset_Indexi) +#define SET_Indexi(disp, fn) SET_by_offset(disp, _gloffset_Indexi, fn) +#define CALL_Indexiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Indexiv, parameters) +#define GET_Indexiv(disp) GET_by_offset(disp, _gloffset_Indexiv) +#define SET_Indexiv(disp, fn) SET_by_offset(disp, _gloffset_Indexiv, fn) +#define CALL_Indexs(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort)), _gloffset_Indexs, parameters) +#define GET_Indexs(disp) GET_by_offset(disp, _gloffset_Indexs) +#define SET_Indexs(disp, fn) SET_by_offset(disp, _gloffset_Indexs, fn) +#define CALL_Indexsv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Indexsv, parameters) +#define GET_Indexsv(disp) GET_by_offset(disp, _gloffset_Indexsv) +#define SET_Indexsv(disp, fn) SET_by_offset(disp, _gloffset_Indexsv, fn) +#define CALL_Normal3b(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte)), _gloffset_Normal3b, parameters) +#define GET_Normal3b(disp) GET_by_offset(disp, _gloffset_Normal3b) +#define SET_Normal3b(disp, fn) SET_by_offset(disp, _gloffset_Normal3b, fn) +#define CALL_Normal3bv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), _gloffset_Normal3bv, parameters) +#define GET_Normal3bv(disp) GET_by_offset(disp, _gloffset_Normal3bv) +#define SET_Normal3bv(disp, fn) SET_by_offset(disp, _gloffset_Normal3bv, fn) +#define CALL_Normal3d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_Normal3d, parameters) +#define GET_Normal3d(disp) GET_by_offset(disp, _gloffset_Normal3d) +#define SET_Normal3d(disp, fn) SET_by_offset(disp, _gloffset_Normal3d, fn) +#define CALL_Normal3dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Normal3dv, parameters) +#define GET_Normal3dv(disp) GET_by_offset(disp, _gloffset_Normal3dv) +#define SET_Normal3dv(disp, fn) SET_by_offset(disp, _gloffset_Normal3dv, fn) +#define CALL_Normal3f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_Normal3f, parameters) +#define GET_Normal3f(disp) GET_by_offset(disp, _gloffset_Normal3f) +#define SET_Normal3f(disp, fn) SET_by_offset(disp, _gloffset_Normal3f, fn) +#define CALL_Normal3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Normal3fv, parameters) +#define GET_Normal3fv(disp) GET_by_offset(disp, _gloffset_Normal3fv) +#define SET_Normal3fv(disp, fn) SET_by_offset(disp, _gloffset_Normal3fv, fn) +#define CALL_Normal3i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_Normal3i, parameters) +#define GET_Normal3i(disp) GET_by_offset(disp, _gloffset_Normal3i) +#define SET_Normal3i(disp, fn) SET_by_offset(disp, _gloffset_Normal3i, fn) +#define CALL_Normal3iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Normal3iv, parameters) +#define GET_Normal3iv(disp) GET_by_offset(disp, _gloffset_Normal3iv) +#define SET_Normal3iv(disp, fn) SET_by_offset(disp, _gloffset_Normal3iv, fn) +#define CALL_Normal3s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_Normal3s, parameters) +#define GET_Normal3s(disp) GET_by_offset(disp, _gloffset_Normal3s) +#define SET_Normal3s(disp, fn) SET_by_offset(disp, _gloffset_Normal3s, fn) +#define CALL_Normal3sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Normal3sv, parameters) +#define GET_Normal3sv(disp) GET_by_offset(disp, _gloffset_Normal3sv) +#define SET_Normal3sv(disp, fn) SET_by_offset(disp, _gloffset_Normal3sv, fn) +#define CALL_RasterPos2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), _gloffset_RasterPos2d, parameters) +#define GET_RasterPos2d(disp) GET_by_offset(disp, _gloffset_RasterPos2d) +#define SET_RasterPos2d(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2d, fn) +#define CALL_RasterPos2dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_RasterPos2dv, parameters) +#define GET_RasterPos2dv(disp) GET_by_offset(disp, _gloffset_RasterPos2dv) +#define SET_RasterPos2dv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2dv, fn) +#define CALL_RasterPos2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_RasterPos2f, parameters) +#define GET_RasterPos2f(disp) GET_by_offset(disp, _gloffset_RasterPos2f) +#define SET_RasterPos2f(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2f, fn) +#define CALL_RasterPos2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_RasterPos2fv, parameters) +#define GET_RasterPos2fv(disp) GET_by_offset(disp, _gloffset_RasterPos2fv) +#define SET_RasterPos2fv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2fv, fn) +#define CALL_RasterPos2i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_RasterPos2i, parameters) +#define GET_RasterPos2i(disp) GET_by_offset(disp, _gloffset_RasterPos2i) +#define SET_RasterPos2i(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2i, fn) +#define CALL_RasterPos2iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_RasterPos2iv, parameters) +#define GET_RasterPos2iv(disp) GET_by_offset(disp, _gloffset_RasterPos2iv) +#define SET_RasterPos2iv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2iv, fn) +#define CALL_RasterPos2s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), _gloffset_RasterPos2s, parameters) +#define GET_RasterPos2s(disp) GET_by_offset(disp, _gloffset_RasterPos2s) +#define SET_RasterPos2s(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2s, fn) +#define CALL_RasterPos2sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_RasterPos2sv, parameters) +#define GET_RasterPos2sv(disp) GET_by_offset(disp, _gloffset_RasterPos2sv) +#define SET_RasterPos2sv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2sv, fn) +#define CALL_RasterPos3d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_RasterPos3d, parameters) +#define GET_RasterPos3d(disp) GET_by_offset(disp, _gloffset_RasterPos3d) +#define SET_RasterPos3d(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3d, fn) +#define CALL_RasterPos3dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_RasterPos3dv, parameters) +#define GET_RasterPos3dv(disp) GET_by_offset(disp, _gloffset_RasterPos3dv) +#define SET_RasterPos3dv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3dv, fn) +#define CALL_RasterPos3f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_RasterPos3f, parameters) +#define GET_RasterPos3f(disp) GET_by_offset(disp, _gloffset_RasterPos3f) +#define SET_RasterPos3f(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3f, fn) +#define CALL_RasterPos3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_RasterPos3fv, parameters) +#define GET_RasterPos3fv(disp) GET_by_offset(disp, _gloffset_RasterPos3fv) +#define SET_RasterPos3fv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3fv, fn) +#define CALL_RasterPos3i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_RasterPos3i, parameters) +#define GET_RasterPos3i(disp) GET_by_offset(disp, _gloffset_RasterPos3i) +#define SET_RasterPos3i(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3i, fn) +#define CALL_RasterPos3iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_RasterPos3iv, parameters) +#define GET_RasterPos3iv(disp) GET_by_offset(disp, _gloffset_RasterPos3iv) +#define SET_RasterPos3iv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3iv, fn) +#define CALL_RasterPos3s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_RasterPos3s, parameters) +#define GET_RasterPos3s(disp) GET_by_offset(disp, _gloffset_RasterPos3s) +#define SET_RasterPos3s(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3s, fn) +#define CALL_RasterPos3sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_RasterPos3sv, parameters) +#define GET_RasterPos3sv(disp) GET_by_offset(disp, _gloffset_RasterPos3sv) +#define SET_RasterPos3sv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3sv, fn) +#define CALL_RasterPos4d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_RasterPos4d, parameters) +#define GET_RasterPos4d(disp) GET_by_offset(disp, _gloffset_RasterPos4d) +#define SET_RasterPos4d(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4d, fn) +#define CALL_RasterPos4dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_RasterPos4dv, parameters) +#define GET_RasterPos4dv(disp) GET_by_offset(disp, _gloffset_RasterPos4dv) +#define SET_RasterPos4dv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4dv, fn) +#define CALL_RasterPos4f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_RasterPos4f, parameters) +#define GET_RasterPos4f(disp) GET_by_offset(disp, _gloffset_RasterPos4f) +#define SET_RasterPos4f(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4f, fn) +#define CALL_RasterPos4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_RasterPos4fv, parameters) +#define GET_RasterPos4fv(disp) GET_by_offset(disp, _gloffset_RasterPos4fv) +#define SET_RasterPos4fv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4fv, fn) +#define CALL_RasterPos4i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_RasterPos4i, parameters) +#define GET_RasterPos4i(disp) GET_by_offset(disp, _gloffset_RasterPos4i) +#define SET_RasterPos4i(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4i, fn) +#define CALL_RasterPos4iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_RasterPos4iv, parameters) +#define GET_RasterPos4iv(disp) GET_by_offset(disp, _gloffset_RasterPos4iv) +#define SET_RasterPos4iv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4iv, fn) +#define CALL_RasterPos4s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_RasterPos4s, parameters) +#define GET_RasterPos4s(disp) GET_by_offset(disp, _gloffset_RasterPos4s) +#define SET_RasterPos4s(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4s, fn) +#define CALL_RasterPos4sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_RasterPos4sv, parameters) +#define GET_RasterPos4sv(disp) GET_by_offset(disp, _gloffset_RasterPos4sv) +#define SET_RasterPos4sv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4sv, fn) +#define CALL_Rectd(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Rectd, parameters) +#define GET_Rectd(disp) GET_by_offset(disp, _gloffset_Rectd) +#define SET_Rectd(disp, fn) SET_by_offset(disp, _gloffset_Rectd, fn) +#define CALL_Rectdv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *, const GLdouble *)), _gloffset_Rectdv, parameters) +#define GET_Rectdv(disp) GET_by_offset(disp, _gloffset_Rectdv) +#define SET_Rectdv(disp, fn) SET_by_offset(disp, _gloffset_Rectdv, fn) +#define CALL_Rectf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_Rectf, parameters) +#define GET_Rectf(disp) GET_by_offset(disp, _gloffset_Rectf) +#define SET_Rectf(disp, fn) SET_by_offset(disp, _gloffset_Rectf, fn) +#define CALL_Rectfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *, const GLfloat *)), _gloffset_Rectfv, parameters) +#define GET_Rectfv(disp) GET_by_offset(disp, _gloffset_Rectfv) +#define SET_Rectfv(disp, fn) SET_by_offset(disp, _gloffset_Rectfv, fn) +#define CALL_Recti(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_Recti, parameters) +#define GET_Recti(disp) GET_by_offset(disp, _gloffset_Recti) +#define SET_Recti(disp, fn) SET_by_offset(disp, _gloffset_Recti, fn) +#define CALL_Rectiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *, const GLint *)), _gloffset_Rectiv, parameters) +#define GET_Rectiv(disp) GET_by_offset(disp, _gloffset_Rectiv) +#define SET_Rectiv(disp, fn) SET_by_offset(disp, _gloffset_Rectiv, fn) +#define CALL_Rects(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_Rects, parameters) +#define GET_Rects(disp) GET_by_offset(disp, _gloffset_Rects) +#define SET_Rects(disp, fn) SET_by_offset(disp, _gloffset_Rects, fn) +#define CALL_Rectsv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *, const GLshort *)), _gloffset_Rectsv, parameters) +#define GET_Rectsv(disp) GET_by_offset(disp, _gloffset_Rectsv) +#define SET_Rectsv(disp, fn) SET_by_offset(disp, _gloffset_Rectsv, fn) +#define CALL_TexCoord1d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), _gloffset_TexCoord1d, parameters) +#define GET_TexCoord1d(disp) GET_by_offset(disp, _gloffset_TexCoord1d) +#define SET_TexCoord1d(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1d, fn) +#define CALL_TexCoord1dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_TexCoord1dv, parameters) +#define GET_TexCoord1dv(disp) GET_by_offset(disp, _gloffset_TexCoord1dv) +#define SET_TexCoord1dv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1dv, fn) +#define CALL_TexCoord1f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_TexCoord1f, parameters) +#define GET_TexCoord1f(disp) GET_by_offset(disp, _gloffset_TexCoord1f) +#define SET_TexCoord1f(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1f, fn) +#define CALL_TexCoord1fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_TexCoord1fv, parameters) +#define GET_TexCoord1fv(disp) GET_by_offset(disp, _gloffset_TexCoord1fv) +#define SET_TexCoord1fv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1fv, fn) +#define CALL_TexCoord1i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint)), _gloffset_TexCoord1i, parameters) +#define GET_TexCoord1i(disp) GET_by_offset(disp, _gloffset_TexCoord1i) +#define SET_TexCoord1i(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1i, fn) +#define CALL_TexCoord1iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_TexCoord1iv, parameters) +#define GET_TexCoord1iv(disp) GET_by_offset(disp, _gloffset_TexCoord1iv) +#define SET_TexCoord1iv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1iv, fn) +#define CALL_TexCoord1s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort)), _gloffset_TexCoord1s, parameters) +#define GET_TexCoord1s(disp) GET_by_offset(disp, _gloffset_TexCoord1s) +#define SET_TexCoord1s(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1s, fn) +#define CALL_TexCoord1sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_TexCoord1sv, parameters) +#define GET_TexCoord1sv(disp) GET_by_offset(disp, _gloffset_TexCoord1sv) +#define SET_TexCoord1sv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1sv, fn) +#define CALL_TexCoord2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), _gloffset_TexCoord2d, parameters) +#define GET_TexCoord2d(disp) GET_by_offset(disp, _gloffset_TexCoord2d) +#define SET_TexCoord2d(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2d, fn) +#define CALL_TexCoord2dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_TexCoord2dv, parameters) +#define GET_TexCoord2dv(disp) GET_by_offset(disp, _gloffset_TexCoord2dv) +#define SET_TexCoord2dv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2dv, fn) +#define CALL_TexCoord2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_TexCoord2f, parameters) +#define GET_TexCoord2f(disp) GET_by_offset(disp, _gloffset_TexCoord2f) +#define SET_TexCoord2f(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2f, fn) +#define CALL_TexCoord2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_TexCoord2fv, parameters) +#define GET_TexCoord2fv(disp) GET_by_offset(disp, _gloffset_TexCoord2fv) +#define SET_TexCoord2fv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2fv, fn) +#define CALL_TexCoord2i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_TexCoord2i, parameters) +#define GET_TexCoord2i(disp) GET_by_offset(disp, _gloffset_TexCoord2i) +#define SET_TexCoord2i(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2i, fn) +#define CALL_TexCoord2iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_TexCoord2iv, parameters) +#define GET_TexCoord2iv(disp) GET_by_offset(disp, _gloffset_TexCoord2iv) +#define SET_TexCoord2iv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2iv, fn) +#define CALL_TexCoord2s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), _gloffset_TexCoord2s, parameters) +#define GET_TexCoord2s(disp) GET_by_offset(disp, _gloffset_TexCoord2s) +#define SET_TexCoord2s(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2s, fn) +#define CALL_TexCoord2sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_TexCoord2sv, parameters) +#define GET_TexCoord2sv(disp) GET_by_offset(disp, _gloffset_TexCoord2sv) +#define SET_TexCoord2sv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2sv, fn) +#define CALL_TexCoord3d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_TexCoord3d, parameters) +#define GET_TexCoord3d(disp) GET_by_offset(disp, _gloffset_TexCoord3d) +#define SET_TexCoord3d(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3d, fn) +#define CALL_TexCoord3dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_TexCoord3dv, parameters) +#define GET_TexCoord3dv(disp) GET_by_offset(disp, _gloffset_TexCoord3dv) +#define SET_TexCoord3dv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3dv, fn) +#define CALL_TexCoord3f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_TexCoord3f, parameters) +#define GET_TexCoord3f(disp) GET_by_offset(disp, _gloffset_TexCoord3f) +#define SET_TexCoord3f(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3f, fn) +#define CALL_TexCoord3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_TexCoord3fv, parameters) +#define GET_TexCoord3fv(disp) GET_by_offset(disp, _gloffset_TexCoord3fv) +#define SET_TexCoord3fv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3fv, fn) +#define CALL_TexCoord3i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_TexCoord3i, parameters) +#define GET_TexCoord3i(disp) GET_by_offset(disp, _gloffset_TexCoord3i) +#define SET_TexCoord3i(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3i, fn) +#define CALL_TexCoord3iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_TexCoord3iv, parameters) +#define GET_TexCoord3iv(disp) GET_by_offset(disp, _gloffset_TexCoord3iv) +#define SET_TexCoord3iv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3iv, fn) +#define CALL_TexCoord3s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_TexCoord3s, parameters) +#define GET_TexCoord3s(disp) GET_by_offset(disp, _gloffset_TexCoord3s) +#define SET_TexCoord3s(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3s, fn) +#define CALL_TexCoord3sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_TexCoord3sv, parameters) +#define GET_TexCoord3sv(disp) GET_by_offset(disp, _gloffset_TexCoord3sv) +#define SET_TexCoord3sv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3sv, fn) +#define CALL_TexCoord4d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_TexCoord4d, parameters) +#define GET_TexCoord4d(disp) GET_by_offset(disp, _gloffset_TexCoord4d) +#define SET_TexCoord4d(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4d, fn) +#define CALL_TexCoord4dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_TexCoord4dv, parameters) +#define GET_TexCoord4dv(disp) GET_by_offset(disp, _gloffset_TexCoord4dv) +#define SET_TexCoord4dv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4dv, fn) +#define CALL_TexCoord4f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_TexCoord4f, parameters) +#define GET_TexCoord4f(disp) GET_by_offset(disp, _gloffset_TexCoord4f) +#define SET_TexCoord4f(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4f, fn) +#define CALL_TexCoord4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_TexCoord4fv, parameters) +#define GET_TexCoord4fv(disp) GET_by_offset(disp, _gloffset_TexCoord4fv) +#define SET_TexCoord4fv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4fv, fn) +#define CALL_TexCoord4i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_TexCoord4i, parameters) +#define GET_TexCoord4i(disp) GET_by_offset(disp, _gloffset_TexCoord4i) +#define SET_TexCoord4i(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4i, fn) +#define CALL_TexCoord4iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_TexCoord4iv, parameters) +#define GET_TexCoord4iv(disp) GET_by_offset(disp, _gloffset_TexCoord4iv) +#define SET_TexCoord4iv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4iv, fn) +#define CALL_TexCoord4s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_TexCoord4s, parameters) +#define GET_TexCoord4s(disp) GET_by_offset(disp, _gloffset_TexCoord4s) +#define SET_TexCoord4s(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4s, fn) +#define CALL_TexCoord4sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_TexCoord4sv, parameters) +#define GET_TexCoord4sv(disp) GET_by_offset(disp, _gloffset_TexCoord4sv) +#define SET_TexCoord4sv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4sv, fn) +#define CALL_Vertex2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), _gloffset_Vertex2d, parameters) +#define GET_Vertex2d(disp) GET_by_offset(disp, _gloffset_Vertex2d) +#define SET_Vertex2d(disp, fn) SET_by_offset(disp, _gloffset_Vertex2d, fn) +#define CALL_Vertex2dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Vertex2dv, parameters) +#define GET_Vertex2dv(disp) GET_by_offset(disp, _gloffset_Vertex2dv) +#define SET_Vertex2dv(disp, fn) SET_by_offset(disp, _gloffset_Vertex2dv, fn) +#define CALL_Vertex2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_Vertex2f, parameters) +#define GET_Vertex2f(disp) GET_by_offset(disp, _gloffset_Vertex2f) +#define SET_Vertex2f(disp, fn) SET_by_offset(disp, _gloffset_Vertex2f, fn) +#define CALL_Vertex2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Vertex2fv, parameters) +#define GET_Vertex2fv(disp) GET_by_offset(disp, _gloffset_Vertex2fv) +#define SET_Vertex2fv(disp, fn) SET_by_offset(disp, _gloffset_Vertex2fv, fn) +#define CALL_Vertex2i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_Vertex2i, parameters) +#define GET_Vertex2i(disp) GET_by_offset(disp, _gloffset_Vertex2i) +#define SET_Vertex2i(disp, fn) SET_by_offset(disp, _gloffset_Vertex2i, fn) +#define CALL_Vertex2iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Vertex2iv, parameters) +#define GET_Vertex2iv(disp) GET_by_offset(disp, _gloffset_Vertex2iv) +#define SET_Vertex2iv(disp, fn) SET_by_offset(disp, _gloffset_Vertex2iv, fn) +#define CALL_Vertex2s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), _gloffset_Vertex2s, parameters) +#define GET_Vertex2s(disp) GET_by_offset(disp, _gloffset_Vertex2s) +#define SET_Vertex2s(disp, fn) SET_by_offset(disp, _gloffset_Vertex2s, fn) +#define CALL_Vertex2sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Vertex2sv, parameters) +#define GET_Vertex2sv(disp) GET_by_offset(disp, _gloffset_Vertex2sv) +#define SET_Vertex2sv(disp, fn) SET_by_offset(disp, _gloffset_Vertex2sv, fn) +#define CALL_Vertex3d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_Vertex3d, parameters) +#define GET_Vertex3d(disp) GET_by_offset(disp, _gloffset_Vertex3d) +#define SET_Vertex3d(disp, fn) SET_by_offset(disp, _gloffset_Vertex3d, fn) +#define CALL_Vertex3dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Vertex3dv, parameters) +#define GET_Vertex3dv(disp) GET_by_offset(disp, _gloffset_Vertex3dv) +#define SET_Vertex3dv(disp, fn) SET_by_offset(disp, _gloffset_Vertex3dv, fn) +#define CALL_Vertex3f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_Vertex3f, parameters) +#define GET_Vertex3f(disp) GET_by_offset(disp, _gloffset_Vertex3f) +#define SET_Vertex3f(disp, fn) SET_by_offset(disp, _gloffset_Vertex3f, fn) +#define CALL_Vertex3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Vertex3fv, parameters) +#define GET_Vertex3fv(disp) GET_by_offset(disp, _gloffset_Vertex3fv) +#define SET_Vertex3fv(disp, fn) SET_by_offset(disp, _gloffset_Vertex3fv, fn) +#define CALL_Vertex3i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_Vertex3i, parameters) +#define GET_Vertex3i(disp) GET_by_offset(disp, _gloffset_Vertex3i) +#define SET_Vertex3i(disp, fn) SET_by_offset(disp, _gloffset_Vertex3i, fn) +#define CALL_Vertex3iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Vertex3iv, parameters) +#define GET_Vertex3iv(disp) GET_by_offset(disp, _gloffset_Vertex3iv) +#define SET_Vertex3iv(disp, fn) SET_by_offset(disp, _gloffset_Vertex3iv, fn) +#define CALL_Vertex3s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_Vertex3s, parameters) +#define GET_Vertex3s(disp) GET_by_offset(disp, _gloffset_Vertex3s) +#define SET_Vertex3s(disp, fn) SET_by_offset(disp, _gloffset_Vertex3s, fn) +#define CALL_Vertex3sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Vertex3sv, parameters) +#define GET_Vertex3sv(disp) GET_by_offset(disp, _gloffset_Vertex3sv) +#define SET_Vertex3sv(disp, fn) SET_by_offset(disp, _gloffset_Vertex3sv, fn) +#define CALL_Vertex4d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Vertex4d, parameters) +#define GET_Vertex4d(disp) GET_by_offset(disp, _gloffset_Vertex4d) +#define SET_Vertex4d(disp, fn) SET_by_offset(disp, _gloffset_Vertex4d, fn) +#define CALL_Vertex4dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Vertex4dv, parameters) +#define GET_Vertex4dv(disp) GET_by_offset(disp, _gloffset_Vertex4dv) +#define SET_Vertex4dv(disp, fn) SET_by_offset(disp, _gloffset_Vertex4dv, fn) +#define CALL_Vertex4f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_Vertex4f, parameters) +#define GET_Vertex4f(disp) GET_by_offset(disp, _gloffset_Vertex4f) +#define SET_Vertex4f(disp, fn) SET_by_offset(disp, _gloffset_Vertex4f, fn) +#define CALL_Vertex4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Vertex4fv, parameters) +#define GET_Vertex4fv(disp) GET_by_offset(disp, _gloffset_Vertex4fv) +#define SET_Vertex4fv(disp, fn) SET_by_offset(disp, _gloffset_Vertex4fv, fn) +#define CALL_Vertex4i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_Vertex4i, parameters) +#define GET_Vertex4i(disp) GET_by_offset(disp, _gloffset_Vertex4i) +#define SET_Vertex4i(disp, fn) SET_by_offset(disp, _gloffset_Vertex4i, fn) +#define CALL_Vertex4iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Vertex4iv, parameters) +#define GET_Vertex4iv(disp) GET_by_offset(disp, _gloffset_Vertex4iv) +#define SET_Vertex4iv(disp, fn) SET_by_offset(disp, _gloffset_Vertex4iv, fn) +#define CALL_Vertex4s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_Vertex4s, parameters) +#define GET_Vertex4s(disp) GET_by_offset(disp, _gloffset_Vertex4s) +#define SET_Vertex4s(disp, fn) SET_by_offset(disp, _gloffset_Vertex4s, fn) +#define CALL_Vertex4sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Vertex4sv, parameters) +#define GET_Vertex4sv(disp) GET_by_offset(disp, _gloffset_Vertex4sv) +#define SET_Vertex4sv(disp, fn) SET_by_offset(disp, _gloffset_Vertex4sv, fn) +#define CALL_ClipPlane(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLdouble *)), _gloffset_ClipPlane, parameters) +#define GET_ClipPlane(disp) GET_by_offset(disp, _gloffset_ClipPlane) +#define SET_ClipPlane(disp, fn) SET_by_offset(disp, _gloffset_ClipPlane, fn) +#define CALL_ColorMaterial(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ColorMaterial, parameters) +#define GET_ColorMaterial(disp) GET_by_offset(disp, _gloffset_ColorMaterial) +#define SET_ColorMaterial(disp, fn) SET_by_offset(disp, _gloffset_ColorMaterial, fn) +#define CALL_CullFace(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_CullFace, parameters) +#define GET_CullFace(disp) GET_by_offset(disp, _gloffset_CullFace) +#define SET_CullFace(disp, fn) SET_by_offset(disp, _gloffset_CullFace, fn) +#define CALL_Fogf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_Fogf, parameters) +#define GET_Fogf(disp) GET_by_offset(disp, _gloffset_Fogf) +#define SET_Fogf(disp, fn) SET_by_offset(disp, _gloffset_Fogf, fn) +#define CALL_Fogfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_Fogfv, parameters) +#define GET_Fogfv(disp) GET_by_offset(disp, _gloffset_Fogfv) +#define SET_Fogfv(disp, fn) SET_by_offset(disp, _gloffset_Fogfv, fn) +#define CALL_Fogi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_Fogi, parameters) +#define GET_Fogi(disp) GET_by_offset(disp, _gloffset_Fogi) +#define SET_Fogi(disp, fn) SET_by_offset(disp, _gloffset_Fogi, fn) +#define CALL_Fogiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_Fogiv, parameters) +#define GET_Fogiv(disp) GET_by_offset(disp, _gloffset_Fogiv) +#define SET_Fogiv(disp, fn) SET_by_offset(disp, _gloffset_Fogiv, fn) +#define CALL_FrontFace(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_FrontFace, parameters) +#define GET_FrontFace(disp) GET_by_offset(disp, _gloffset_FrontFace) +#define SET_FrontFace(disp, fn) SET_by_offset(disp, _gloffset_FrontFace, fn) +#define CALL_Hint(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_Hint, parameters) +#define GET_Hint(disp) GET_by_offset(disp, _gloffset_Hint) +#define SET_Hint(disp, fn) SET_by_offset(disp, _gloffset_Hint, fn) +#define CALL_Lightf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_Lightf, parameters) +#define GET_Lightf(disp) GET_by_offset(disp, _gloffset_Lightf) +#define SET_Lightf(disp, fn) SET_by_offset(disp, _gloffset_Lightf, fn) +#define CALL_Lightfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_Lightfv, parameters) +#define GET_Lightfv(disp) GET_by_offset(disp, _gloffset_Lightfv) +#define SET_Lightfv(disp, fn) SET_by_offset(disp, _gloffset_Lightfv, fn) +#define CALL_Lighti(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_Lighti, parameters) +#define GET_Lighti(disp) GET_by_offset(disp, _gloffset_Lighti) +#define SET_Lighti(disp, fn) SET_by_offset(disp, _gloffset_Lighti, fn) +#define CALL_Lightiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_Lightiv, parameters) +#define GET_Lightiv(disp) GET_by_offset(disp, _gloffset_Lightiv) +#define SET_Lightiv(disp, fn) SET_by_offset(disp, _gloffset_Lightiv, fn) +#define CALL_LightModelf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_LightModelf, parameters) +#define GET_LightModelf(disp) GET_by_offset(disp, _gloffset_LightModelf) +#define SET_LightModelf(disp, fn) SET_by_offset(disp, _gloffset_LightModelf, fn) +#define CALL_LightModelfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_LightModelfv, parameters) +#define GET_LightModelfv(disp) GET_by_offset(disp, _gloffset_LightModelfv) +#define SET_LightModelfv(disp, fn) SET_by_offset(disp, _gloffset_LightModelfv, fn) +#define CALL_LightModeli(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_LightModeli, parameters) +#define GET_LightModeli(disp) GET_by_offset(disp, _gloffset_LightModeli) +#define SET_LightModeli(disp, fn) SET_by_offset(disp, _gloffset_LightModeli, fn) +#define CALL_LightModeliv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_LightModeliv, parameters) +#define GET_LightModeliv(disp) GET_by_offset(disp, _gloffset_LightModeliv) +#define SET_LightModeliv(disp, fn) SET_by_offset(disp, _gloffset_LightModeliv, fn) +#define CALL_LineStipple(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLushort)), _gloffset_LineStipple, parameters) +#define GET_LineStipple(disp) GET_by_offset(disp, _gloffset_LineStipple) +#define SET_LineStipple(disp, fn) SET_by_offset(disp, _gloffset_LineStipple, fn) +#define CALL_LineWidth(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_LineWidth, parameters) +#define GET_LineWidth(disp) GET_by_offset(disp, _gloffset_LineWidth) +#define SET_LineWidth(disp, fn) SET_by_offset(disp, _gloffset_LineWidth, fn) +#define CALL_Materialf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_Materialf, parameters) +#define GET_Materialf(disp) GET_by_offset(disp, _gloffset_Materialf) +#define SET_Materialf(disp, fn) SET_by_offset(disp, _gloffset_Materialf, fn) +#define CALL_Materialfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_Materialfv, parameters) +#define GET_Materialfv(disp) GET_by_offset(disp, _gloffset_Materialfv) +#define SET_Materialfv(disp, fn) SET_by_offset(disp, _gloffset_Materialfv, fn) +#define CALL_Materiali(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_Materiali, parameters) +#define GET_Materiali(disp) GET_by_offset(disp, _gloffset_Materiali) +#define SET_Materiali(disp, fn) SET_by_offset(disp, _gloffset_Materiali, fn) +#define CALL_Materialiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_Materialiv, parameters) +#define GET_Materialiv(disp) GET_by_offset(disp, _gloffset_Materialiv) +#define SET_Materialiv(disp, fn) SET_by_offset(disp, _gloffset_Materialiv, fn) +#define CALL_PointSize(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_PointSize, parameters) +#define GET_PointSize(disp) GET_by_offset(disp, _gloffset_PointSize) +#define SET_PointSize(disp, fn) SET_by_offset(disp, _gloffset_PointSize, fn) +#define CALL_PolygonMode(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_PolygonMode, parameters) +#define GET_PolygonMode(disp) GET_by_offset(disp, _gloffset_PolygonMode) +#define SET_PolygonMode(disp, fn) SET_by_offset(disp, _gloffset_PolygonMode, fn) +#define CALL_PolygonStipple(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), _gloffset_PolygonStipple, parameters) +#define GET_PolygonStipple(disp) GET_by_offset(disp, _gloffset_PolygonStipple) +#define SET_PolygonStipple(disp, fn) SET_by_offset(disp, _gloffset_PolygonStipple, fn) +#define CALL_Scissor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLsizei, GLsizei)), _gloffset_Scissor, parameters) +#define GET_Scissor(disp) GET_by_offset(disp, _gloffset_Scissor) +#define SET_Scissor(disp, fn) SET_by_offset(disp, _gloffset_Scissor, fn) +#define CALL_ShadeModel(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ShadeModel, parameters) +#define GET_ShadeModel(disp) GET_by_offset(disp, _gloffset_ShadeModel) +#define SET_ShadeModel(disp, fn) SET_by_offset(disp, _gloffset_ShadeModel, fn) +#define CALL_TexParameterf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_TexParameterf, parameters) +#define GET_TexParameterf(disp) GET_by_offset(disp, _gloffset_TexParameterf) +#define SET_TexParameterf(disp, fn) SET_by_offset(disp, _gloffset_TexParameterf, fn) +#define CALL_TexParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_TexParameterfv, parameters) +#define GET_TexParameterfv(disp) GET_by_offset(disp, _gloffset_TexParameterfv) +#define SET_TexParameterfv(disp, fn) SET_by_offset(disp, _gloffset_TexParameterfv, fn) +#define CALL_TexParameteri(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_TexParameteri, parameters) +#define GET_TexParameteri(disp) GET_by_offset(disp, _gloffset_TexParameteri) +#define SET_TexParameteri(disp, fn) SET_by_offset(disp, _gloffset_TexParameteri, fn) +#define CALL_TexParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_TexParameteriv, parameters) +#define GET_TexParameteriv(disp) GET_by_offset(disp, _gloffset_TexParameteriv) +#define SET_TexParameteriv(disp, fn) SET_by_offset(disp, _gloffset_TexParameteriv, fn) +#define CALL_TexImage1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const GLvoid *)), _gloffset_TexImage1D, parameters) +#define GET_TexImage1D(disp) GET_by_offset(disp, _gloffset_TexImage1D) +#define SET_TexImage1D(disp, fn) SET_by_offset(disp, _gloffset_TexImage1D, fn) +#define CALL_TexImage2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *)), _gloffset_TexImage2D, parameters) +#define GET_TexImage2D(disp) GET_by_offset(disp, _gloffset_TexImage2D) +#define SET_TexImage2D(disp, fn) SET_by_offset(disp, _gloffset_TexImage2D, fn) +#define CALL_TexEnvf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_TexEnvf, parameters) +#define GET_TexEnvf(disp) GET_by_offset(disp, _gloffset_TexEnvf) +#define SET_TexEnvf(disp, fn) SET_by_offset(disp, _gloffset_TexEnvf, fn) +#define CALL_TexEnvfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_TexEnvfv, parameters) +#define GET_TexEnvfv(disp) GET_by_offset(disp, _gloffset_TexEnvfv) +#define SET_TexEnvfv(disp, fn) SET_by_offset(disp, _gloffset_TexEnvfv, fn) +#define CALL_TexEnvi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_TexEnvi, parameters) +#define GET_TexEnvi(disp) GET_by_offset(disp, _gloffset_TexEnvi) +#define SET_TexEnvi(disp, fn) SET_by_offset(disp, _gloffset_TexEnvi, fn) +#define CALL_TexEnviv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_TexEnviv, parameters) +#define GET_TexEnviv(disp) GET_by_offset(disp, _gloffset_TexEnviv) +#define SET_TexEnviv(disp, fn) SET_by_offset(disp, _gloffset_TexEnviv, fn) +#define CALL_TexGend(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLdouble)), _gloffset_TexGend, parameters) +#define GET_TexGend(disp) GET_by_offset(disp, _gloffset_TexGend) +#define SET_TexGend(disp, fn) SET_by_offset(disp, _gloffset_TexGend, fn) +#define CALL_TexGendv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLdouble *)), _gloffset_TexGendv, parameters) +#define GET_TexGendv(disp) GET_by_offset(disp, _gloffset_TexGendv) +#define SET_TexGendv(disp, fn) SET_by_offset(disp, _gloffset_TexGendv, fn) +#define CALL_TexGenf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_TexGenf, parameters) +#define GET_TexGenf(disp) GET_by_offset(disp, _gloffset_TexGenf) +#define SET_TexGenf(disp, fn) SET_by_offset(disp, _gloffset_TexGenf, fn) +#define CALL_TexGenfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_TexGenfv, parameters) +#define GET_TexGenfv(disp) GET_by_offset(disp, _gloffset_TexGenfv) +#define SET_TexGenfv(disp, fn) SET_by_offset(disp, _gloffset_TexGenfv, fn) +#define CALL_TexGeni(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_TexGeni, parameters) +#define GET_TexGeni(disp) GET_by_offset(disp, _gloffset_TexGeni) +#define SET_TexGeni(disp, fn) SET_by_offset(disp, _gloffset_TexGeni, fn) +#define CALL_TexGeniv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_TexGeniv, parameters) +#define GET_TexGeniv(disp) GET_by_offset(disp, _gloffset_TexGeniv) +#define SET_TexGeniv(disp, fn) SET_by_offset(disp, _gloffset_TexGeniv, fn) +#define CALL_FeedbackBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLenum, GLfloat *)), _gloffset_FeedbackBuffer, parameters) +#define GET_FeedbackBuffer(disp) GET_by_offset(disp, _gloffset_FeedbackBuffer) +#define SET_FeedbackBuffer(disp, fn) SET_by_offset(disp, _gloffset_FeedbackBuffer, fn) +#define CALL_SelectBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_SelectBuffer, parameters) +#define GET_SelectBuffer(disp) GET_by_offset(disp, _gloffset_SelectBuffer) +#define SET_SelectBuffer(disp, fn) SET_by_offset(disp, _gloffset_SelectBuffer, fn) +#define CALL_RenderMode(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLenum)), _gloffset_RenderMode, parameters) +#define GET_RenderMode(disp) GET_by_offset(disp, _gloffset_RenderMode) +#define SET_RenderMode(disp, fn) SET_by_offset(disp, _gloffset_RenderMode, fn) +#define CALL_InitNames(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_InitNames, parameters) +#define GET_InitNames(disp) GET_by_offset(disp, _gloffset_InitNames) +#define SET_InitNames(disp, fn) SET_by_offset(disp, _gloffset_InitNames, fn) +#define CALL_LoadName(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_LoadName, parameters) +#define GET_LoadName(disp) GET_by_offset(disp, _gloffset_LoadName) +#define SET_LoadName(disp, fn) SET_by_offset(disp, _gloffset_LoadName, fn) +#define CALL_PassThrough(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_PassThrough, parameters) +#define GET_PassThrough(disp) GET_by_offset(disp, _gloffset_PassThrough) +#define SET_PassThrough(disp, fn) SET_by_offset(disp, _gloffset_PassThrough, fn) +#define CALL_PopName(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PopName, parameters) +#define GET_PopName(disp) GET_by_offset(disp, _gloffset_PopName) +#define SET_PopName(disp, fn) SET_by_offset(disp, _gloffset_PopName, fn) +#define CALL_PushName(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_PushName, parameters) +#define GET_PushName(disp) GET_by_offset(disp, _gloffset_PushName) +#define SET_PushName(disp, fn) SET_by_offset(disp, _gloffset_PushName, fn) +#define CALL_DrawBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_DrawBuffer, parameters) +#define GET_DrawBuffer(disp) GET_by_offset(disp, _gloffset_DrawBuffer) +#define SET_DrawBuffer(disp, fn) SET_by_offset(disp, _gloffset_DrawBuffer, fn) +#define CALL_Clear(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbitfield)), _gloffset_Clear, parameters) +#define GET_Clear(disp) GET_by_offset(disp, _gloffset_Clear) +#define SET_Clear(disp, fn) SET_by_offset(disp, _gloffset_Clear, fn) +#define CALL_ClearAccum(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_ClearAccum, parameters) +#define GET_ClearAccum(disp) GET_by_offset(disp, _gloffset_ClearAccum) +#define SET_ClearAccum(disp, fn) SET_by_offset(disp, _gloffset_ClearAccum, fn) +#define CALL_ClearIndex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_ClearIndex, parameters) +#define GET_ClearIndex(disp) GET_by_offset(disp, _gloffset_ClearIndex) +#define SET_ClearIndex(disp, fn) SET_by_offset(disp, _gloffset_ClearIndex, fn) +#define CALL_ClearColor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLclampf, GLclampf, GLclampf)), _gloffset_ClearColor, parameters) +#define GET_ClearColor(disp) GET_by_offset(disp, _gloffset_ClearColor) +#define SET_ClearColor(disp, fn) SET_by_offset(disp, _gloffset_ClearColor, fn) +#define CALL_ClearStencil(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint)), _gloffset_ClearStencil, parameters) +#define GET_ClearStencil(disp) GET_by_offset(disp, _gloffset_ClearStencil) +#define SET_ClearStencil(disp, fn) SET_by_offset(disp, _gloffset_ClearStencil, fn) +#define CALL_ClearDepth(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampd)), _gloffset_ClearDepth, parameters) +#define GET_ClearDepth(disp) GET_by_offset(disp, _gloffset_ClearDepth) +#define SET_ClearDepth(disp, fn) SET_by_offset(disp, _gloffset_ClearDepth, fn) +#define CALL_StencilMask(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_StencilMask, parameters) +#define GET_StencilMask(disp) GET_by_offset(disp, _gloffset_StencilMask) +#define SET_StencilMask(disp, fn) SET_by_offset(disp, _gloffset_StencilMask, fn) +#define CALL_ColorMask(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLboolean, GLboolean, GLboolean, GLboolean)), _gloffset_ColorMask, parameters) +#define GET_ColorMask(disp) GET_by_offset(disp, _gloffset_ColorMask) +#define SET_ColorMask(disp, fn) SET_by_offset(disp, _gloffset_ColorMask, fn) +#define CALL_DepthMask(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLboolean)), _gloffset_DepthMask, parameters) +#define GET_DepthMask(disp) GET_by_offset(disp, _gloffset_DepthMask) +#define SET_DepthMask(disp, fn) SET_by_offset(disp, _gloffset_DepthMask, fn) +#define CALL_IndexMask(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_IndexMask, parameters) +#define GET_IndexMask(disp) GET_by_offset(disp, _gloffset_IndexMask) +#define SET_IndexMask(disp, fn) SET_by_offset(disp, _gloffset_IndexMask, fn) +#define CALL_Accum(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_Accum, parameters) +#define GET_Accum(disp) GET_by_offset(disp, _gloffset_Accum) +#define SET_Accum(disp, fn) SET_by_offset(disp, _gloffset_Accum, fn) +#define CALL_Disable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_Disable, parameters) +#define GET_Disable(disp) GET_by_offset(disp, _gloffset_Disable) +#define SET_Disable(disp, fn) SET_by_offset(disp, _gloffset_Disable, fn) +#define CALL_Enable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_Enable, parameters) +#define GET_Enable(disp) GET_by_offset(disp, _gloffset_Enable) +#define SET_Enable(disp, fn) SET_by_offset(disp, _gloffset_Enable, fn) +#define CALL_Finish(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_Finish, parameters) +#define GET_Finish(disp) GET_by_offset(disp, _gloffset_Finish) +#define SET_Finish(disp, fn) SET_by_offset(disp, _gloffset_Finish, fn) +#define CALL_Flush(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_Flush, parameters) +#define GET_Flush(disp) GET_by_offset(disp, _gloffset_Flush) +#define SET_Flush(disp, fn) SET_by_offset(disp, _gloffset_Flush, fn) +#define CALL_PopAttrib(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PopAttrib, parameters) +#define GET_PopAttrib(disp) GET_by_offset(disp, _gloffset_PopAttrib) +#define SET_PopAttrib(disp, fn) SET_by_offset(disp, _gloffset_PopAttrib, fn) +#define CALL_PushAttrib(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbitfield)), _gloffset_PushAttrib, parameters) +#define GET_PushAttrib(disp) GET_by_offset(disp, _gloffset_PushAttrib) +#define SET_PushAttrib(disp, fn) SET_by_offset(disp, _gloffset_PushAttrib, fn) +#define CALL_Map1d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble, GLdouble, GLint, GLint, const GLdouble *)), _gloffset_Map1d, parameters) +#define GET_Map1d(disp) GET_by_offset(disp, _gloffset_Map1d) +#define SET_Map1d(disp, fn) SET_by_offset(disp, _gloffset_Map1d, fn) +#define CALL_Map1f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat, GLfloat, GLint, GLint, const GLfloat *)), _gloffset_Map1f, parameters) +#define GET_Map1f(disp) GET_by_offset(disp, _gloffset_Map1f) +#define SET_Map1f(disp, fn) SET_by_offset(disp, _gloffset_Map1f, fn) +#define CALL_Map2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *)), _gloffset_Map2d, parameters) +#define GET_Map2d(disp) GET_by_offset(disp, _gloffset_Map2d) +#define SET_Map2d(disp, fn) SET_by_offset(disp, _gloffset_Map2d, fn) +#define CALL_Map2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *)), _gloffset_Map2f, parameters) +#define GET_Map2f(disp) GET_by_offset(disp, _gloffset_Map2f) +#define SET_Map2f(disp, fn) SET_by_offset(disp, _gloffset_Map2f, fn) +#define CALL_MapGrid1d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLdouble, GLdouble)), _gloffset_MapGrid1d, parameters) +#define GET_MapGrid1d(disp) GET_by_offset(disp, _gloffset_MapGrid1d) +#define SET_MapGrid1d(disp, fn) SET_by_offset(disp, _gloffset_MapGrid1d, fn) +#define CALL_MapGrid1f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat)), _gloffset_MapGrid1f, parameters) +#define GET_MapGrid1f(disp) GET_by_offset(disp, _gloffset_MapGrid1f) +#define SET_MapGrid1f(disp, fn) SET_by_offset(disp, _gloffset_MapGrid1f, fn) +#define CALL_MapGrid2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLdouble, GLdouble, GLint, GLdouble, GLdouble)), _gloffset_MapGrid2d, parameters) +#define GET_MapGrid2d(disp) GET_by_offset(disp, _gloffset_MapGrid2d) +#define SET_MapGrid2d(disp, fn) SET_by_offset(disp, _gloffset_MapGrid2d, fn) +#define CALL_MapGrid2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLint, GLfloat, GLfloat)), _gloffset_MapGrid2f, parameters) +#define GET_MapGrid2f(disp) GET_by_offset(disp, _gloffset_MapGrid2f) +#define SET_MapGrid2f(disp, fn) SET_by_offset(disp, _gloffset_MapGrid2f, fn) +#define CALL_EvalCoord1d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), _gloffset_EvalCoord1d, parameters) +#define GET_EvalCoord1d(disp) GET_by_offset(disp, _gloffset_EvalCoord1d) +#define SET_EvalCoord1d(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord1d, fn) +#define CALL_EvalCoord1dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_EvalCoord1dv, parameters) +#define GET_EvalCoord1dv(disp) GET_by_offset(disp, _gloffset_EvalCoord1dv) +#define SET_EvalCoord1dv(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord1dv, fn) +#define CALL_EvalCoord1f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_EvalCoord1f, parameters) +#define GET_EvalCoord1f(disp) GET_by_offset(disp, _gloffset_EvalCoord1f) +#define SET_EvalCoord1f(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord1f, fn) +#define CALL_EvalCoord1fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_EvalCoord1fv, parameters) +#define GET_EvalCoord1fv(disp) GET_by_offset(disp, _gloffset_EvalCoord1fv) +#define SET_EvalCoord1fv(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord1fv, fn) +#define CALL_EvalCoord2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), _gloffset_EvalCoord2d, parameters) +#define GET_EvalCoord2d(disp) GET_by_offset(disp, _gloffset_EvalCoord2d) +#define SET_EvalCoord2d(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord2d, fn) +#define CALL_EvalCoord2dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_EvalCoord2dv, parameters) +#define GET_EvalCoord2dv(disp) GET_by_offset(disp, _gloffset_EvalCoord2dv) +#define SET_EvalCoord2dv(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord2dv, fn) +#define CALL_EvalCoord2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_EvalCoord2f, parameters) +#define GET_EvalCoord2f(disp) GET_by_offset(disp, _gloffset_EvalCoord2f) +#define SET_EvalCoord2f(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord2f, fn) +#define CALL_EvalCoord2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_EvalCoord2fv, parameters) +#define GET_EvalCoord2fv(disp) GET_by_offset(disp, _gloffset_EvalCoord2fv) +#define SET_EvalCoord2fv(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord2fv, fn) +#define CALL_EvalMesh1(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint)), _gloffset_EvalMesh1, parameters) +#define GET_EvalMesh1(disp) GET_by_offset(disp, _gloffset_EvalMesh1) +#define SET_EvalMesh1(disp, fn) SET_by_offset(disp, _gloffset_EvalMesh1, fn) +#define CALL_EvalPoint1(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint)), _gloffset_EvalPoint1, parameters) +#define GET_EvalPoint1(disp) GET_by_offset(disp, _gloffset_EvalPoint1) +#define SET_EvalPoint1(disp, fn) SET_by_offset(disp, _gloffset_EvalPoint1, fn) +#define CALL_EvalMesh2(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint)), _gloffset_EvalMesh2, parameters) +#define GET_EvalMesh2(disp) GET_by_offset(disp, _gloffset_EvalMesh2) +#define SET_EvalMesh2(disp, fn) SET_by_offset(disp, _gloffset_EvalMesh2, fn) +#define CALL_EvalPoint2(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_EvalPoint2, parameters) +#define GET_EvalPoint2(disp) GET_by_offset(disp, _gloffset_EvalPoint2) +#define SET_EvalPoint2(disp, fn) SET_by_offset(disp, _gloffset_EvalPoint2, fn) +#define CALL_AlphaFunc(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLclampf)), _gloffset_AlphaFunc, parameters) +#define GET_AlphaFunc(disp) GET_by_offset(disp, _gloffset_AlphaFunc) +#define SET_AlphaFunc(disp, fn) SET_by_offset(disp, _gloffset_AlphaFunc, fn) +#define CALL_BlendFunc(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_BlendFunc, parameters) +#define GET_BlendFunc(disp) GET_by_offset(disp, _gloffset_BlendFunc) +#define SET_BlendFunc(disp, fn) SET_by_offset(disp, _gloffset_BlendFunc, fn) +#define CALL_LogicOp(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_LogicOp, parameters) +#define GET_LogicOp(disp) GET_by_offset(disp, _gloffset_LogicOp) +#define SET_LogicOp(disp, fn) SET_by_offset(disp, _gloffset_LogicOp, fn) +#define CALL_StencilFunc(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLuint)), _gloffset_StencilFunc, parameters) +#define GET_StencilFunc(disp) GET_by_offset(disp, _gloffset_StencilFunc) +#define SET_StencilFunc(disp, fn) SET_by_offset(disp, _gloffset_StencilFunc, fn) +#define CALL_StencilOp(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum)), _gloffset_StencilOp, parameters) +#define GET_StencilOp(disp) GET_by_offset(disp, _gloffset_StencilOp) +#define SET_StencilOp(disp, fn) SET_by_offset(disp, _gloffset_StencilOp, fn) +#define CALL_DepthFunc(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_DepthFunc, parameters) +#define GET_DepthFunc(disp) GET_by_offset(disp, _gloffset_DepthFunc) +#define SET_DepthFunc(disp, fn) SET_by_offset(disp, _gloffset_DepthFunc, fn) +#define CALL_PixelZoom(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_PixelZoom, parameters) +#define GET_PixelZoom(disp) GET_by_offset(disp, _gloffset_PixelZoom) +#define SET_PixelZoom(disp, fn) SET_by_offset(disp, _gloffset_PixelZoom, fn) +#define CALL_PixelTransferf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_PixelTransferf, parameters) +#define GET_PixelTransferf(disp) GET_by_offset(disp, _gloffset_PixelTransferf) +#define SET_PixelTransferf(disp, fn) SET_by_offset(disp, _gloffset_PixelTransferf, fn) +#define CALL_PixelTransferi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_PixelTransferi, parameters) +#define GET_PixelTransferi(disp) GET_by_offset(disp, _gloffset_PixelTransferi) +#define SET_PixelTransferi(disp, fn) SET_by_offset(disp, _gloffset_PixelTransferi, fn) +#define CALL_PixelStoref(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_PixelStoref, parameters) +#define GET_PixelStoref(disp) GET_by_offset(disp, _gloffset_PixelStoref) +#define SET_PixelStoref(disp, fn) SET_by_offset(disp, _gloffset_PixelStoref, fn) +#define CALL_PixelStorei(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_PixelStorei, parameters) +#define GET_PixelStorei(disp) GET_by_offset(disp, _gloffset_PixelStorei) +#define SET_PixelStorei(disp, fn) SET_by_offset(disp, _gloffset_PixelStorei, fn) +#define CALL_PixelMapfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLfloat *)), _gloffset_PixelMapfv, parameters) +#define GET_PixelMapfv(disp) GET_by_offset(disp, _gloffset_PixelMapfv) +#define SET_PixelMapfv(disp, fn) SET_by_offset(disp, _gloffset_PixelMapfv, fn) +#define CALL_PixelMapuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLuint *)), _gloffset_PixelMapuiv, parameters) +#define GET_PixelMapuiv(disp) GET_by_offset(disp, _gloffset_PixelMapuiv) +#define SET_PixelMapuiv(disp, fn) SET_by_offset(disp, _gloffset_PixelMapuiv, fn) +#define CALL_PixelMapusv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLushort *)), _gloffset_PixelMapusv, parameters) +#define GET_PixelMapusv(disp) GET_by_offset(disp, _gloffset_PixelMapusv) +#define SET_PixelMapusv(disp, fn) SET_by_offset(disp, _gloffset_PixelMapusv, fn) +#define CALL_ReadBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ReadBuffer, parameters) +#define GET_ReadBuffer(disp) GET_by_offset(disp, _gloffset_ReadBuffer) +#define SET_ReadBuffer(disp, fn) SET_by_offset(disp, _gloffset_ReadBuffer, fn) +#define CALL_CopyPixels(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLsizei, GLsizei, GLenum)), _gloffset_CopyPixels, parameters) +#define GET_CopyPixels(disp) GET_by_offset(disp, _gloffset_CopyPixels) +#define SET_CopyPixels(disp, fn) SET_by_offset(disp, _gloffset_CopyPixels, fn) +#define CALL_ReadPixels(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid *)), _gloffset_ReadPixels, parameters) +#define GET_ReadPixels(disp) GET_by_offset(disp, _gloffset_ReadPixels) +#define SET_ReadPixels(disp, fn) SET_by_offset(disp, _gloffset_ReadPixels, fn) +#define CALL_DrawPixels(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_DrawPixels, parameters) +#define GET_DrawPixels(disp) GET_by_offset(disp, _gloffset_DrawPixels) +#define SET_DrawPixels(disp, fn) SET_by_offset(disp, _gloffset_DrawPixels, fn) +#define CALL_GetBooleanv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLboolean *)), _gloffset_GetBooleanv, parameters) +#define GET_GetBooleanv(disp) GET_by_offset(disp, _gloffset_GetBooleanv) +#define SET_GetBooleanv(disp, fn) SET_by_offset(disp, _gloffset_GetBooleanv, fn) +#define CALL_GetClipPlane(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble *)), _gloffset_GetClipPlane, parameters) +#define GET_GetClipPlane(disp) GET_by_offset(disp, _gloffset_GetClipPlane) +#define SET_GetClipPlane(disp, fn) SET_by_offset(disp, _gloffset_GetClipPlane, fn) +#define CALL_GetDoublev(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble *)), _gloffset_GetDoublev, parameters) +#define GET_GetDoublev(disp) GET_by_offset(disp, _gloffset_GetDoublev) +#define SET_GetDoublev(disp, fn) SET_by_offset(disp, _gloffset_GetDoublev, fn) +#define CALL_GetError(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(void)), _gloffset_GetError, parameters) +#define GET_GetError(disp) GET_by_offset(disp, _gloffset_GetError) +#define SET_GetError(disp, fn) SET_by_offset(disp, _gloffset_GetError, fn) +#define CALL_GetFloatv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), _gloffset_GetFloatv, parameters) +#define GET_GetFloatv(disp) GET_by_offset(disp, _gloffset_GetFloatv) +#define SET_GetFloatv(disp, fn) SET_by_offset(disp, _gloffset_GetFloatv, fn) +#define CALL_GetIntegerv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), _gloffset_GetIntegerv, parameters) +#define GET_GetIntegerv(disp) GET_by_offset(disp, _gloffset_GetIntegerv) +#define SET_GetIntegerv(disp, fn) SET_by_offset(disp, _gloffset_GetIntegerv, fn) +#define CALL_GetLightfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetLightfv, parameters) +#define GET_GetLightfv(disp) GET_by_offset(disp, _gloffset_GetLightfv) +#define SET_GetLightfv(disp, fn) SET_by_offset(disp, _gloffset_GetLightfv, fn) +#define CALL_GetLightiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetLightiv, parameters) +#define GET_GetLightiv(disp) GET_by_offset(disp, _gloffset_GetLightiv) +#define SET_GetLightiv(disp, fn) SET_by_offset(disp, _gloffset_GetLightiv, fn) +#define CALL_GetMapdv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLdouble *)), _gloffset_GetMapdv, parameters) +#define GET_GetMapdv(disp) GET_by_offset(disp, _gloffset_GetMapdv) +#define SET_GetMapdv(disp, fn) SET_by_offset(disp, _gloffset_GetMapdv, fn) +#define CALL_GetMapfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetMapfv, parameters) +#define GET_GetMapfv(disp) GET_by_offset(disp, _gloffset_GetMapfv) +#define SET_GetMapfv(disp, fn) SET_by_offset(disp, _gloffset_GetMapfv, fn) +#define CALL_GetMapiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetMapiv, parameters) +#define GET_GetMapiv(disp) GET_by_offset(disp, _gloffset_GetMapiv) +#define SET_GetMapiv(disp, fn) SET_by_offset(disp, _gloffset_GetMapiv, fn) +#define CALL_GetMaterialfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetMaterialfv, parameters) +#define GET_GetMaterialfv(disp) GET_by_offset(disp, _gloffset_GetMaterialfv) +#define SET_GetMaterialfv(disp, fn) SET_by_offset(disp, _gloffset_GetMaterialfv, fn) +#define CALL_GetMaterialiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetMaterialiv, parameters) +#define GET_GetMaterialiv(disp) GET_by_offset(disp, _gloffset_GetMaterialiv) +#define SET_GetMaterialiv(disp, fn) SET_by_offset(disp, _gloffset_GetMaterialiv, fn) +#define CALL_GetPixelMapfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), _gloffset_GetPixelMapfv, parameters) +#define GET_GetPixelMapfv(disp) GET_by_offset(disp, _gloffset_GetPixelMapfv) +#define SET_GetPixelMapfv(disp, fn) SET_by_offset(disp, _gloffset_GetPixelMapfv, fn) +#define CALL_GetPixelMapuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint *)), _gloffset_GetPixelMapuiv, parameters) +#define GET_GetPixelMapuiv(disp) GET_by_offset(disp, _gloffset_GetPixelMapuiv) +#define SET_GetPixelMapuiv(disp, fn) SET_by_offset(disp, _gloffset_GetPixelMapuiv, fn) +#define CALL_GetPixelMapusv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLushort *)), _gloffset_GetPixelMapusv, parameters) +#define GET_GetPixelMapusv(disp) GET_by_offset(disp, _gloffset_GetPixelMapusv) +#define SET_GetPixelMapusv(disp, fn) SET_by_offset(disp, _gloffset_GetPixelMapusv, fn) +#define CALL_GetPolygonStipple(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte *)), _gloffset_GetPolygonStipple, parameters) +#define GET_GetPolygonStipple(disp) GET_by_offset(disp, _gloffset_GetPolygonStipple) +#define SET_GetPolygonStipple(disp, fn) SET_by_offset(disp, _gloffset_GetPolygonStipple, fn) +#define CALL_GetString(disp, parameters) CALL_by_offset(disp, (const GLubyte * (GLAPIENTRYP)(GLenum)), _gloffset_GetString, parameters) +#define GET_GetString(disp) GET_by_offset(disp, _gloffset_GetString) +#define SET_GetString(disp, fn) SET_by_offset(disp, _gloffset_GetString, fn) +#define CALL_GetTexEnvfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetTexEnvfv, parameters) +#define GET_GetTexEnvfv(disp) GET_by_offset(disp, _gloffset_GetTexEnvfv) +#define SET_GetTexEnvfv(disp, fn) SET_by_offset(disp, _gloffset_GetTexEnvfv, fn) +#define CALL_GetTexEnviv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetTexEnviv, parameters) +#define GET_GetTexEnviv(disp) GET_by_offset(disp, _gloffset_GetTexEnviv) +#define SET_GetTexEnviv(disp, fn) SET_by_offset(disp, _gloffset_GetTexEnviv, fn) +#define CALL_GetTexGendv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLdouble *)), _gloffset_GetTexGendv, parameters) +#define GET_GetTexGendv(disp) GET_by_offset(disp, _gloffset_GetTexGendv) +#define SET_GetTexGendv(disp, fn) SET_by_offset(disp, _gloffset_GetTexGendv, fn) +#define CALL_GetTexGenfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetTexGenfv, parameters) +#define GET_GetTexGenfv(disp) GET_by_offset(disp, _gloffset_GetTexGenfv) +#define SET_GetTexGenfv(disp, fn) SET_by_offset(disp, _gloffset_GetTexGenfv, fn) +#define CALL_GetTexGeniv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetTexGeniv, parameters) +#define GET_GetTexGeniv(disp) GET_by_offset(disp, _gloffset_GetTexGeniv) +#define SET_GetTexGeniv(disp, fn) SET_by_offset(disp, _gloffset_GetTexGeniv, fn) +#define CALL_GetTexImage(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLenum, GLvoid *)), _gloffset_GetTexImage, parameters) +#define GET_GetTexImage(disp) GET_by_offset(disp, _gloffset_GetTexImage) +#define SET_GetTexImage(disp, fn) SET_by_offset(disp, _gloffset_GetTexImage, fn) +#define CALL_GetTexParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetTexParameterfv, parameters) +#define GET_GetTexParameterfv(disp) GET_by_offset(disp, _gloffset_GetTexParameterfv) +#define SET_GetTexParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetTexParameterfv, fn) +#define CALL_GetTexParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetTexParameteriv, parameters) +#define GET_GetTexParameteriv(disp) GET_by_offset(disp, _gloffset_GetTexParameteriv) +#define SET_GetTexParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetTexParameteriv, fn) +#define CALL_GetTexLevelParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLfloat *)), _gloffset_GetTexLevelParameterfv, parameters) +#define GET_GetTexLevelParameterfv(disp) GET_by_offset(disp, _gloffset_GetTexLevelParameterfv) +#define SET_GetTexLevelParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetTexLevelParameterfv, fn) +#define CALL_GetTexLevelParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLint *)), _gloffset_GetTexLevelParameteriv, parameters) +#define GET_GetTexLevelParameteriv(disp) GET_by_offset(disp, _gloffset_GetTexLevelParameteriv) +#define SET_GetTexLevelParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetTexLevelParameteriv, fn) +#define CALL_IsEnabled(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum)), _gloffset_IsEnabled, parameters) +#define GET_IsEnabled(disp) GET_by_offset(disp, _gloffset_IsEnabled) +#define SET_IsEnabled(disp, fn) SET_by_offset(disp, _gloffset_IsEnabled, fn) +#define CALL_IsList(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsList, parameters) +#define GET_IsList(disp) GET_by_offset(disp, _gloffset_IsList) +#define SET_IsList(disp, fn) SET_by_offset(disp, _gloffset_IsList, fn) +#define CALL_DepthRange(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampd, GLclampd)), _gloffset_DepthRange, parameters) +#define GET_DepthRange(disp) GET_by_offset(disp, _gloffset_DepthRange) +#define SET_DepthRange(disp, fn) SET_by_offset(disp, _gloffset_DepthRange, fn) +#define CALL_Frustum(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Frustum, parameters) +#define GET_Frustum(disp) GET_by_offset(disp, _gloffset_Frustum) +#define SET_Frustum(disp, fn) SET_by_offset(disp, _gloffset_Frustum, fn) +#define CALL_LoadIdentity(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_LoadIdentity, parameters) +#define GET_LoadIdentity(disp) GET_by_offset(disp, _gloffset_LoadIdentity) +#define SET_LoadIdentity(disp, fn) SET_by_offset(disp, _gloffset_LoadIdentity, fn) +#define CALL_LoadMatrixf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_LoadMatrixf, parameters) +#define GET_LoadMatrixf(disp) GET_by_offset(disp, _gloffset_LoadMatrixf) +#define SET_LoadMatrixf(disp, fn) SET_by_offset(disp, _gloffset_LoadMatrixf, fn) +#define CALL_LoadMatrixd(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_LoadMatrixd, parameters) +#define GET_LoadMatrixd(disp) GET_by_offset(disp, _gloffset_LoadMatrixd) +#define SET_LoadMatrixd(disp, fn) SET_by_offset(disp, _gloffset_LoadMatrixd, fn) +#define CALL_MatrixMode(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_MatrixMode, parameters) +#define GET_MatrixMode(disp) GET_by_offset(disp, _gloffset_MatrixMode) +#define SET_MatrixMode(disp, fn) SET_by_offset(disp, _gloffset_MatrixMode, fn) +#define CALL_MultMatrixf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_MultMatrixf, parameters) +#define GET_MultMatrixf(disp) GET_by_offset(disp, _gloffset_MultMatrixf) +#define SET_MultMatrixf(disp, fn) SET_by_offset(disp, _gloffset_MultMatrixf, fn) +#define CALL_MultMatrixd(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_MultMatrixd, parameters) +#define GET_MultMatrixd(disp) GET_by_offset(disp, _gloffset_MultMatrixd) +#define SET_MultMatrixd(disp, fn) SET_by_offset(disp, _gloffset_MultMatrixd, fn) +#define CALL_Ortho(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Ortho, parameters) +#define GET_Ortho(disp) GET_by_offset(disp, _gloffset_Ortho) +#define SET_Ortho(disp, fn) SET_by_offset(disp, _gloffset_Ortho, fn) +#define CALL_PopMatrix(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PopMatrix, parameters) +#define GET_PopMatrix(disp) GET_by_offset(disp, _gloffset_PopMatrix) +#define SET_PopMatrix(disp, fn) SET_by_offset(disp, _gloffset_PopMatrix, fn) +#define CALL_PushMatrix(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PushMatrix, parameters) +#define GET_PushMatrix(disp) GET_by_offset(disp, _gloffset_PushMatrix) +#define SET_PushMatrix(disp, fn) SET_by_offset(disp, _gloffset_PushMatrix, fn) +#define CALL_Rotated(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Rotated, parameters) +#define GET_Rotated(disp) GET_by_offset(disp, _gloffset_Rotated) +#define SET_Rotated(disp, fn) SET_by_offset(disp, _gloffset_Rotated, fn) +#define CALL_Rotatef(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_Rotatef, parameters) +#define GET_Rotatef(disp) GET_by_offset(disp, _gloffset_Rotatef) +#define SET_Rotatef(disp, fn) SET_by_offset(disp, _gloffset_Rotatef, fn) +#define CALL_Scaled(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_Scaled, parameters) +#define GET_Scaled(disp) GET_by_offset(disp, _gloffset_Scaled) +#define SET_Scaled(disp, fn) SET_by_offset(disp, _gloffset_Scaled, fn) +#define CALL_Scalef(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_Scalef, parameters) +#define GET_Scalef(disp) GET_by_offset(disp, _gloffset_Scalef) +#define SET_Scalef(disp, fn) SET_by_offset(disp, _gloffset_Scalef, fn) +#define CALL_Translated(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_Translated, parameters) +#define GET_Translated(disp) GET_by_offset(disp, _gloffset_Translated) +#define SET_Translated(disp, fn) SET_by_offset(disp, _gloffset_Translated, fn) +#define CALL_Translatef(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_Translatef, parameters) +#define GET_Translatef(disp) GET_by_offset(disp, _gloffset_Translatef) +#define SET_Translatef(disp, fn) SET_by_offset(disp, _gloffset_Translatef, fn) +#define CALL_Viewport(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLsizei, GLsizei)), _gloffset_Viewport, parameters) +#define GET_Viewport(disp) GET_by_offset(disp, _gloffset_Viewport) +#define SET_Viewport(disp, fn) SET_by_offset(disp, _gloffset_Viewport, fn) +#define CALL_ArrayElement(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint)), _gloffset_ArrayElement, parameters) +#define GET_ArrayElement(disp) GET_by_offset(disp, _gloffset_ArrayElement) +#define SET_ArrayElement(disp, fn) SET_by_offset(disp, _gloffset_ArrayElement, fn) +#define CALL_BindTexture(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindTexture, parameters) +#define GET_BindTexture(disp) GET_by_offset(disp, _gloffset_BindTexture) +#define SET_BindTexture(disp, fn) SET_by_offset(disp, _gloffset_BindTexture, fn) +#define CALL_ColorPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_ColorPointer, parameters) +#define GET_ColorPointer(disp) GET_by_offset(disp, _gloffset_ColorPointer) +#define SET_ColorPointer(disp, fn) SET_by_offset(disp, _gloffset_ColorPointer, fn) +#define CALL_DisableClientState(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_DisableClientState, parameters) +#define GET_DisableClientState(disp) GET_by_offset(disp, _gloffset_DisableClientState) +#define SET_DisableClientState(disp, fn) SET_by_offset(disp, _gloffset_DisableClientState, fn) +#define CALL_DrawArrays(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei)), _gloffset_DrawArrays, parameters) +#define GET_DrawArrays(disp) GET_by_offset(disp, _gloffset_DrawArrays) +#define SET_DrawArrays(disp, fn) SET_by_offset(disp, _gloffset_DrawArrays, fn) +#define CALL_DrawElements(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *)), _gloffset_DrawElements, parameters) +#define GET_DrawElements(disp) GET_by_offset(disp, _gloffset_DrawElements) +#define SET_DrawElements(disp, fn) SET_by_offset(disp, _gloffset_DrawElements, fn) +#define CALL_EdgeFlagPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLvoid *)), _gloffset_EdgeFlagPointer, parameters) +#define GET_EdgeFlagPointer(disp) GET_by_offset(disp, _gloffset_EdgeFlagPointer) +#define SET_EdgeFlagPointer(disp, fn) SET_by_offset(disp, _gloffset_EdgeFlagPointer, fn) +#define CALL_EnableClientState(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_EnableClientState, parameters) +#define GET_EnableClientState(disp) GET_by_offset(disp, _gloffset_EnableClientState) +#define SET_EnableClientState(disp, fn) SET_by_offset(disp, _gloffset_EnableClientState, fn) +#define CALL_IndexPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), _gloffset_IndexPointer, parameters) +#define GET_IndexPointer(disp) GET_by_offset(disp, _gloffset_IndexPointer) +#define SET_IndexPointer(disp, fn) SET_by_offset(disp, _gloffset_IndexPointer, fn) +#define CALL_Indexub(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte)), _gloffset_Indexub, parameters) +#define GET_Indexub(disp) GET_by_offset(disp, _gloffset_Indexub) +#define SET_Indexub(disp, fn) SET_by_offset(disp, _gloffset_Indexub, fn) +#define CALL_Indexubv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), _gloffset_Indexubv, parameters) +#define GET_Indexubv(disp) GET_by_offset(disp, _gloffset_Indexubv) +#define SET_Indexubv(disp, fn) SET_by_offset(disp, _gloffset_Indexubv, fn) +#define CALL_InterleavedArrays(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), _gloffset_InterleavedArrays, parameters) +#define GET_InterleavedArrays(disp) GET_by_offset(disp, _gloffset_InterleavedArrays) +#define SET_InterleavedArrays(disp, fn) SET_by_offset(disp, _gloffset_InterleavedArrays, fn) +#define CALL_NormalPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), _gloffset_NormalPointer, parameters) +#define GET_NormalPointer(disp) GET_by_offset(disp, _gloffset_NormalPointer) +#define SET_NormalPointer(disp, fn) SET_by_offset(disp, _gloffset_NormalPointer, fn) +#define CALL_PolygonOffset(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_PolygonOffset, parameters) +#define GET_PolygonOffset(disp) GET_by_offset(disp, _gloffset_PolygonOffset) +#define SET_PolygonOffset(disp, fn) SET_by_offset(disp, _gloffset_PolygonOffset, fn) +#define CALL_TexCoordPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_TexCoordPointer, parameters) +#define GET_TexCoordPointer(disp) GET_by_offset(disp, _gloffset_TexCoordPointer) +#define SET_TexCoordPointer(disp, fn) SET_by_offset(disp, _gloffset_TexCoordPointer, fn) +#define CALL_VertexPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_VertexPointer, parameters) +#define GET_VertexPointer(disp) GET_by_offset(disp, _gloffset_VertexPointer) +#define SET_VertexPointer(disp, fn) SET_by_offset(disp, _gloffset_VertexPointer, fn) +#define CALL_AreTexturesResident(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsizei, const GLuint *, GLboolean *)), _gloffset_AreTexturesResident, parameters) +#define GET_AreTexturesResident(disp) GET_by_offset(disp, _gloffset_AreTexturesResident) +#define SET_AreTexturesResident(disp, fn) SET_by_offset(disp, _gloffset_AreTexturesResident, fn) +#define CALL_CopyTexImage1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint)), _gloffset_CopyTexImage1D, parameters) +#define GET_CopyTexImage1D(disp) GET_by_offset(disp, _gloffset_CopyTexImage1D) +#define SET_CopyTexImage1D(disp, fn) SET_by_offset(disp, _gloffset_CopyTexImage1D, fn) +#define CALL_CopyTexImage2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint)), _gloffset_CopyTexImage2D, parameters) +#define GET_CopyTexImage2D(disp) GET_by_offset(disp, _gloffset_CopyTexImage2D) +#define SET_CopyTexImage2D(disp, fn) SET_by_offset(disp, _gloffset_CopyTexImage2D, fn) +#define CALL_CopyTexSubImage1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei)), _gloffset_CopyTexSubImage1D, parameters) +#define GET_CopyTexSubImage1D(disp) GET_by_offset(disp, _gloffset_CopyTexSubImage1D) +#define SET_CopyTexSubImage1D(disp, fn) SET_by_offset(disp, _gloffset_CopyTexSubImage1D, fn) +#define CALL_CopyTexSubImage2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei)), _gloffset_CopyTexSubImage2D, parameters) +#define GET_CopyTexSubImage2D(disp) GET_by_offset(disp, _gloffset_CopyTexSubImage2D) +#define SET_CopyTexSubImage2D(disp, fn) SET_by_offset(disp, _gloffset_CopyTexSubImage2D, fn) +#define CALL_DeleteTextures(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteTextures, parameters) +#define GET_DeleteTextures(disp) GET_by_offset(disp, _gloffset_DeleteTextures) +#define SET_DeleteTextures(disp, fn) SET_by_offset(disp, _gloffset_DeleteTextures, fn) +#define CALL_GenTextures(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenTextures, parameters) +#define GET_GenTextures(disp) GET_by_offset(disp, _gloffset_GenTextures) +#define SET_GenTextures(disp, fn) SET_by_offset(disp, _gloffset_GenTextures, fn) +#define CALL_GetPointerv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid **)), _gloffset_GetPointerv, parameters) +#define GET_GetPointerv(disp) GET_by_offset(disp, _gloffset_GetPointerv) +#define SET_GetPointerv(disp, fn) SET_by_offset(disp, _gloffset_GetPointerv, fn) +#define CALL_IsTexture(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsTexture, parameters) +#define GET_IsTexture(disp) GET_by_offset(disp, _gloffset_IsTexture) +#define SET_IsTexture(disp, fn) SET_by_offset(disp, _gloffset_IsTexture, fn) +#define CALL_PrioritizeTextures(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *, const GLclampf *)), _gloffset_PrioritizeTextures, parameters) +#define GET_PrioritizeTextures(disp) GET_by_offset(disp, _gloffset_PrioritizeTextures) +#define SET_PrioritizeTextures(disp, fn) SET_by_offset(disp, _gloffset_PrioritizeTextures, fn) +#define CALL_TexSubImage1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_TexSubImage1D, parameters) +#define GET_TexSubImage1D(disp) GET_by_offset(disp, _gloffset_TexSubImage1D) +#define SET_TexSubImage1D(disp, fn) SET_by_offset(disp, _gloffset_TexSubImage1D, fn) +#define CALL_TexSubImage2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_TexSubImage2D, parameters) +#define GET_TexSubImage2D(disp) GET_by_offset(disp, _gloffset_TexSubImage2D) +#define SET_TexSubImage2D(disp, fn) SET_by_offset(disp, _gloffset_TexSubImage2D, fn) +#define CALL_PopClientAttrib(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PopClientAttrib, parameters) +#define GET_PopClientAttrib(disp) GET_by_offset(disp, _gloffset_PopClientAttrib) +#define SET_PopClientAttrib(disp, fn) SET_by_offset(disp, _gloffset_PopClientAttrib, fn) +#define CALL_PushClientAttrib(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbitfield)), _gloffset_PushClientAttrib, parameters) +#define GET_PushClientAttrib(disp) GET_by_offset(disp, _gloffset_PushClientAttrib) +#define SET_PushClientAttrib(disp, fn) SET_by_offset(disp, _gloffset_PushClientAttrib, fn) +#define CALL_BlendColor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLclampf, GLclampf, GLclampf)), _gloffset_BlendColor, parameters) +#define GET_BlendColor(disp) GET_by_offset(disp, _gloffset_BlendColor) +#define SET_BlendColor(disp, fn) SET_by_offset(disp, _gloffset_BlendColor, fn) +#define CALL_BlendEquation(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_BlendEquation, parameters) +#define GET_BlendEquation(disp) GET_by_offset(disp, _gloffset_BlendEquation) +#define SET_BlendEquation(disp, fn) SET_by_offset(disp, _gloffset_BlendEquation, fn) +#define CALL_DrawRangeElements(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *)), _gloffset_DrawRangeElements, parameters) +#define GET_DrawRangeElements(disp) GET_by_offset(disp, _gloffset_DrawRangeElements) +#define SET_DrawRangeElements(disp, fn) SET_by_offset(disp, _gloffset_DrawRangeElements, fn) +#define CALL_ColorTable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_ColorTable, parameters) +#define GET_ColorTable(disp) GET_by_offset(disp, _gloffset_ColorTable) +#define SET_ColorTable(disp, fn) SET_by_offset(disp, _gloffset_ColorTable, fn) +#define CALL_ColorTableParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_ColorTableParameterfv, parameters) +#define GET_ColorTableParameterfv(disp) GET_by_offset(disp, _gloffset_ColorTableParameterfv) +#define SET_ColorTableParameterfv(disp, fn) SET_by_offset(disp, _gloffset_ColorTableParameterfv, fn) +#define CALL_ColorTableParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_ColorTableParameteriv, parameters) +#define GET_ColorTableParameteriv(disp) GET_by_offset(disp, _gloffset_ColorTableParameteriv) +#define SET_ColorTableParameteriv(disp, fn) SET_by_offset(disp, _gloffset_ColorTableParameteriv, fn) +#define CALL_CopyColorTable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLint, GLsizei)), _gloffset_CopyColorTable, parameters) +#define GET_CopyColorTable(disp) GET_by_offset(disp, _gloffset_CopyColorTable) +#define SET_CopyColorTable(disp, fn) SET_by_offset(disp, _gloffset_CopyColorTable, fn) +#define CALL_GetColorTable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLvoid *)), _gloffset_GetColorTable, parameters) +#define GET_GetColorTable(disp) GET_by_offset(disp, _gloffset_GetColorTable) +#define SET_GetColorTable(disp, fn) SET_by_offset(disp, _gloffset_GetColorTable, fn) +#define CALL_GetColorTableParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetColorTableParameterfv, parameters) +#define GET_GetColorTableParameterfv(disp) GET_by_offset(disp, _gloffset_GetColorTableParameterfv) +#define SET_GetColorTableParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetColorTableParameterfv, fn) +#define CALL_GetColorTableParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetColorTableParameteriv, parameters) +#define GET_GetColorTableParameteriv(disp) GET_by_offset(disp, _gloffset_GetColorTableParameteriv) +#define SET_GetColorTableParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetColorTableParameteriv, fn) +#define CALL_ColorSubTable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_ColorSubTable, parameters) +#define GET_ColorSubTable(disp) GET_by_offset(disp, _gloffset_ColorSubTable) +#define SET_ColorSubTable(disp, fn) SET_by_offset(disp, _gloffset_ColorSubTable, fn) +#define CALL_CopyColorSubTable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLint, GLint, GLsizei)), _gloffset_CopyColorSubTable, parameters) +#define GET_CopyColorSubTable(disp) GET_by_offset(disp, _gloffset_CopyColorSubTable) +#define SET_CopyColorSubTable(disp, fn) SET_by_offset(disp, _gloffset_CopyColorSubTable, fn) +#define CALL_ConvolutionFilter1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_ConvolutionFilter1D, parameters) +#define GET_ConvolutionFilter1D(disp) GET_by_offset(disp, _gloffset_ConvolutionFilter1D) +#define SET_ConvolutionFilter1D(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionFilter1D, fn) +#define CALL_ConvolutionFilter2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_ConvolutionFilter2D, parameters) +#define GET_ConvolutionFilter2D(disp) GET_by_offset(disp, _gloffset_ConvolutionFilter2D) +#define SET_ConvolutionFilter2D(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionFilter2D, fn) +#define CALL_ConvolutionParameterf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_ConvolutionParameterf, parameters) +#define GET_ConvolutionParameterf(disp) GET_by_offset(disp, _gloffset_ConvolutionParameterf) +#define SET_ConvolutionParameterf(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionParameterf, fn) +#define CALL_ConvolutionParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_ConvolutionParameterfv, parameters) +#define GET_ConvolutionParameterfv(disp) GET_by_offset(disp, _gloffset_ConvolutionParameterfv) +#define SET_ConvolutionParameterfv(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionParameterfv, fn) +#define CALL_ConvolutionParameteri(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_ConvolutionParameteri, parameters) +#define GET_ConvolutionParameteri(disp) GET_by_offset(disp, _gloffset_ConvolutionParameteri) +#define SET_ConvolutionParameteri(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionParameteri, fn) +#define CALL_ConvolutionParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_ConvolutionParameteriv, parameters) +#define GET_ConvolutionParameteriv(disp) GET_by_offset(disp, _gloffset_ConvolutionParameteriv) +#define SET_ConvolutionParameteriv(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionParameteriv, fn) +#define CALL_CopyConvolutionFilter1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLint, GLsizei)), _gloffset_CopyConvolutionFilter1D, parameters) +#define GET_CopyConvolutionFilter1D(disp) GET_by_offset(disp, _gloffset_CopyConvolutionFilter1D) +#define SET_CopyConvolutionFilter1D(disp, fn) SET_by_offset(disp, _gloffset_CopyConvolutionFilter1D, fn) +#define CALL_CopyConvolutionFilter2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLint, GLsizei, GLsizei)), _gloffset_CopyConvolutionFilter2D, parameters) +#define GET_CopyConvolutionFilter2D(disp) GET_by_offset(disp, _gloffset_CopyConvolutionFilter2D) +#define SET_CopyConvolutionFilter2D(disp, fn) SET_by_offset(disp, _gloffset_CopyConvolutionFilter2D, fn) +#define CALL_GetConvolutionFilter(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLvoid *)), _gloffset_GetConvolutionFilter, parameters) +#define GET_GetConvolutionFilter(disp) GET_by_offset(disp, _gloffset_GetConvolutionFilter) +#define SET_GetConvolutionFilter(disp, fn) SET_by_offset(disp, _gloffset_GetConvolutionFilter, fn) +#define CALL_GetConvolutionParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetConvolutionParameterfv, parameters) +#define GET_GetConvolutionParameterfv(disp) GET_by_offset(disp, _gloffset_GetConvolutionParameterfv) +#define SET_GetConvolutionParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetConvolutionParameterfv, fn) +#define CALL_GetConvolutionParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetConvolutionParameteriv, parameters) +#define GET_GetConvolutionParameteriv(disp) GET_by_offset(disp, _gloffset_GetConvolutionParameteriv) +#define SET_GetConvolutionParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetConvolutionParameteriv, fn) +#define CALL_GetSeparableFilter(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *)), _gloffset_GetSeparableFilter, parameters) +#define GET_GetSeparableFilter(disp) GET_by_offset(disp, _gloffset_GetSeparableFilter) +#define SET_GetSeparableFilter(disp, fn) SET_by_offset(disp, _gloffset_GetSeparableFilter, fn) +#define CALL_SeparableFilter2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *)), _gloffset_SeparableFilter2D, parameters) +#define GET_SeparableFilter2D(disp) GET_by_offset(disp, _gloffset_SeparableFilter2D) +#define SET_SeparableFilter2D(disp, fn) SET_by_offset(disp, _gloffset_SeparableFilter2D, fn) +#define CALL_GetHistogram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLboolean, GLenum, GLenum, GLvoid *)), _gloffset_GetHistogram, parameters) +#define GET_GetHistogram(disp) GET_by_offset(disp, _gloffset_GetHistogram) +#define SET_GetHistogram(disp, fn) SET_by_offset(disp, _gloffset_GetHistogram, fn) +#define CALL_GetHistogramParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetHistogramParameterfv, parameters) +#define GET_GetHistogramParameterfv(disp) GET_by_offset(disp, _gloffset_GetHistogramParameterfv) +#define SET_GetHistogramParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetHistogramParameterfv, fn) +#define CALL_GetHistogramParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetHistogramParameteriv, parameters) +#define GET_GetHistogramParameteriv(disp) GET_by_offset(disp, _gloffset_GetHistogramParameteriv) +#define SET_GetHistogramParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetHistogramParameteriv, fn) +#define CALL_GetMinmax(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLboolean, GLenum, GLenum, GLvoid *)), _gloffset_GetMinmax, parameters) +#define GET_GetMinmax(disp) GET_by_offset(disp, _gloffset_GetMinmax) +#define SET_GetMinmax(disp, fn) SET_by_offset(disp, _gloffset_GetMinmax, fn) +#define CALL_GetMinmaxParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetMinmaxParameterfv, parameters) +#define GET_GetMinmaxParameterfv(disp) GET_by_offset(disp, _gloffset_GetMinmaxParameterfv) +#define SET_GetMinmaxParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetMinmaxParameterfv, fn) +#define CALL_GetMinmaxParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetMinmaxParameteriv, parameters) +#define GET_GetMinmaxParameteriv(disp) GET_by_offset(disp, _gloffset_GetMinmaxParameteriv) +#define SET_GetMinmaxParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetMinmaxParameteriv, fn) +#define CALL_Histogram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, GLboolean)), _gloffset_Histogram, parameters) +#define GET_Histogram(disp) GET_by_offset(disp, _gloffset_Histogram) +#define SET_Histogram(disp, fn) SET_by_offset(disp, _gloffset_Histogram, fn) +#define CALL_Minmax(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLboolean)), _gloffset_Minmax, parameters) +#define GET_Minmax(disp) GET_by_offset(disp, _gloffset_Minmax) +#define SET_Minmax(disp, fn) SET_by_offset(disp, _gloffset_Minmax, fn) +#define CALL_ResetHistogram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ResetHistogram, parameters) +#define GET_ResetHistogram(disp) GET_by_offset(disp, _gloffset_ResetHistogram) +#define SET_ResetHistogram(disp, fn) SET_by_offset(disp, _gloffset_ResetHistogram, fn) +#define CALL_ResetMinmax(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ResetMinmax, parameters) +#define GET_ResetMinmax(disp) GET_by_offset(disp, _gloffset_ResetMinmax) +#define SET_ResetMinmax(disp, fn) SET_by_offset(disp, _gloffset_ResetMinmax, fn) +#define CALL_TexImage3D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *)), _gloffset_TexImage3D, parameters) +#define GET_TexImage3D(disp) GET_by_offset(disp, _gloffset_TexImage3D) +#define SET_TexImage3D(disp, fn) SET_by_offset(disp, _gloffset_TexImage3D, fn) +#define CALL_TexSubImage3D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_TexSubImage3D, parameters) +#define GET_TexSubImage3D(disp) GET_by_offset(disp, _gloffset_TexSubImage3D) +#define SET_TexSubImage3D(disp, fn) SET_by_offset(disp, _gloffset_TexSubImage3D, fn) +#define CALL_CopyTexSubImage3D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei)), _gloffset_CopyTexSubImage3D, parameters) +#define GET_CopyTexSubImage3D(disp) GET_by_offset(disp, _gloffset_CopyTexSubImage3D) +#define SET_CopyTexSubImage3D(disp, fn) SET_by_offset(disp, _gloffset_CopyTexSubImage3D, fn) +#define CALL_ActiveTextureARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ActiveTextureARB, parameters) +#define GET_ActiveTextureARB(disp) GET_by_offset(disp, _gloffset_ActiveTextureARB) +#define SET_ActiveTextureARB(disp, fn) SET_by_offset(disp, _gloffset_ActiveTextureARB, fn) +#define CALL_ClientActiveTextureARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ClientActiveTextureARB, parameters) +#define GET_ClientActiveTextureARB(disp) GET_by_offset(disp, _gloffset_ClientActiveTextureARB) +#define SET_ClientActiveTextureARB(disp, fn) SET_by_offset(disp, _gloffset_ClientActiveTextureARB, fn) +#define CALL_MultiTexCoord1dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble)), _gloffset_MultiTexCoord1dARB, parameters) +#define GET_MultiTexCoord1dARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1dARB) +#define SET_MultiTexCoord1dARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1dARB, fn) +#define CALL_MultiTexCoord1dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLdouble *)), _gloffset_MultiTexCoord1dvARB, parameters) +#define GET_MultiTexCoord1dvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1dvARB) +#define SET_MultiTexCoord1dvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1dvARB, fn) +#define CALL_MultiTexCoord1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_MultiTexCoord1fARB, parameters) +#define GET_MultiTexCoord1fARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1fARB) +#define SET_MultiTexCoord1fARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1fARB, fn) +#define CALL_MultiTexCoord1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_MultiTexCoord1fvARB, parameters) +#define GET_MultiTexCoord1fvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1fvARB) +#define SET_MultiTexCoord1fvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1fvARB, fn) +#define CALL_MultiTexCoord1iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_MultiTexCoord1iARB, parameters) +#define GET_MultiTexCoord1iARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1iARB) +#define SET_MultiTexCoord1iARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1iARB, fn) +#define CALL_MultiTexCoord1ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_MultiTexCoord1ivARB, parameters) +#define GET_MultiTexCoord1ivARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1ivARB) +#define SET_MultiTexCoord1ivARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1ivARB, fn) +#define CALL_MultiTexCoord1sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLshort)), _gloffset_MultiTexCoord1sARB, parameters) +#define GET_MultiTexCoord1sARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1sARB) +#define SET_MultiTexCoord1sARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1sARB, fn) +#define CALL_MultiTexCoord1svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLshort *)), _gloffset_MultiTexCoord1svARB, parameters) +#define GET_MultiTexCoord1svARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1svARB) +#define SET_MultiTexCoord1svARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1svARB, fn) +#define CALL_MultiTexCoord2dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble, GLdouble)), _gloffset_MultiTexCoord2dARB, parameters) +#define GET_MultiTexCoord2dARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2dARB) +#define SET_MultiTexCoord2dARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2dARB, fn) +#define CALL_MultiTexCoord2dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLdouble *)), _gloffset_MultiTexCoord2dvARB, parameters) +#define GET_MultiTexCoord2dvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2dvARB) +#define SET_MultiTexCoord2dvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2dvARB, fn) +#define CALL_MultiTexCoord2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat, GLfloat)), _gloffset_MultiTexCoord2fARB, parameters) +#define GET_MultiTexCoord2fARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2fARB) +#define SET_MultiTexCoord2fARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2fARB, fn) +#define CALL_MultiTexCoord2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_MultiTexCoord2fvARB, parameters) +#define GET_MultiTexCoord2fvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2fvARB) +#define SET_MultiTexCoord2fvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2fvARB, fn) +#define CALL_MultiTexCoord2iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint)), _gloffset_MultiTexCoord2iARB, parameters) +#define GET_MultiTexCoord2iARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2iARB) +#define SET_MultiTexCoord2iARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2iARB, fn) +#define CALL_MultiTexCoord2ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_MultiTexCoord2ivARB, parameters) +#define GET_MultiTexCoord2ivARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2ivARB) +#define SET_MultiTexCoord2ivARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2ivARB, fn) +#define CALL_MultiTexCoord2sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLshort, GLshort)), _gloffset_MultiTexCoord2sARB, parameters) +#define GET_MultiTexCoord2sARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2sARB) +#define SET_MultiTexCoord2sARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2sARB, fn) +#define CALL_MultiTexCoord2svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLshort *)), _gloffset_MultiTexCoord2svARB, parameters) +#define GET_MultiTexCoord2svARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2svARB) +#define SET_MultiTexCoord2svARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2svARB, fn) +#define CALL_MultiTexCoord3dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble, GLdouble, GLdouble)), _gloffset_MultiTexCoord3dARB, parameters) +#define GET_MultiTexCoord3dARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3dARB) +#define SET_MultiTexCoord3dARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3dARB, fn) +#define CALL_MultiTexCoord3dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLdouble *)), _gloffset_MultiTexCoord3dvARB, parameters) +#define GET_MultiTexCoord3dvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3dvARB) +#define SET_MultiTexCoord3dvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3dvARB, fn) +#define CALL_MultiTexCoord3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat, GLfloat, GLfloat)), _gloffset_MultiTexCoord3fARB, parameters) +#define GET_MultiTexCoord3fARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3fARB) +#define SET_MultiTexCoord3fARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3fARB, fn) +#define CALL_MultiTexCoord3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_MultiTexCoord3fvARB, parameters) +#define GET_MultiTexCoord3fvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3fvARB) +#define SET_MultiTexCoord3fvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3fvARB, fn) +#define CALL_MultiTexCoord3iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint)), _gloffset_MultiTexCoord3iARB, parameters) +#define GET_MultiTexCoord3iARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3iARB) +#define SET_MultiTexCoord3iARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3iARB, fn) +#define CALL_MultiTexCoord3ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_MultiTexCoord3ivARB, parameters) +#define GET_MultiTexCoord3ivARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3ivARB) +#define SET_MultiTexCoord3ivARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3ivARB, fn) +#define CALL_MultiTexCoord3sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLshort, GLshort, GLshort)), _gloffset_MultiTexCoord3sARB, parameters) +#define GET_MultiTexCoord3sARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3sARB) +#define SET_MultiTexCoord3sARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3sARB, fn) +#define CALL_MultiTexCoord3svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLshort *)), _gloffset_MultiTexCoord3svARB, parameters) +#define GET_MultiTexCoord3svARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3svARB) +#define SET_MultiTexCoord3svARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3svARB, fn) +#define CALL_MultiTexCoord4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_MultiTexCoord4dARB, parameters) +#define GET_MultiTexCoord4dARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4dARB) +#define SET_MultiTexCoord4dARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4dARB, fn) +#define CALL_MultiTexCoord4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLdouble *)), _gloffset_MultiTexCoord4dvARB, parameters) +#define GET_MultiTexCoord4dvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4dvARB) +#define SET_MultiTexCoord4dvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4dvARB, fn) +#define CALL_MultiTexCoord4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_MultiTexCoord4fARB, parameters) +#define GET_MultiTexCoord4fARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4fARB) +#define SET_MultiTexCoord4fARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4fARB, fn) +#define CALL_MultiTexCoord4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_MultiTexCoord4fvARB, parameters) +#define GET_MultiTexCoord4fvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4fvARB) +#define SET_MultiTexCoord4fvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4fvARB, fn) +#define CALL_MultiTexCoord4iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint)), _gloffset_MultiTexCoord4iARB, parameters) +#define GET_MultiTexCoord4iARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4iARB) +#define SET_MultiTexCoord4iARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4iARB, fn) +#define CALL_MultiTexCoord4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_MultiTexCoord4ivARB, parameters) +#define GET_MultiTexCoord4ivARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4ivARB) +#define SET_MultiTexCoord4ivARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4ivARB, fn) +#define CALL_MultiTexCoord4sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLshort, GLshort, GLshort, GLshort)), _gloffset_MultiTexCoord4sARB, parameters) +#define GET_MultiTexCoord4sARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4sARB) +#define SET_MultiTexCoord4sARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4sARB, fn) +#define CALL_MultiTexCoord4svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLshort *)), _gloffset_MultiTexCoord4svARB, parameters) +#define GET_MultiTexCoord4svARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4svARB) +#define SET_MultiTexCoord4svARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4svARB, fn) +#define CALL_AttachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_AttachShader, parameters) +#define GET_AttachShader(disp) GET_by_offset(disp, _gloffset_AttachShader) +#define SET_AttachShader(disp, fn) SET_by_offset(disp, _gloffset_AttachShader, fn) +#define CALL_CreateProgram(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(void)), _gloffset_CreateProgram, parameters) +#define GET_CreateProgram(disp) GET_by_offset(disp, _gloffset_CreateProgram) +#define SET_CreateProgram(disp, fn) SET_by_offset(disp, _gloffset_CreateProgram, fn) +#define CALL_CreateShader(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLenum)), _gloffset_CreateShader, parameters) +#define GET_CreateShader(disp) GET_by_offset(disp, _gloffset_CreateShader) +#define SET_CreateShader(disp, fn) SET_by_offset(disp, _gloffset_CreateShader, fn) +#define CALL_DeleteProgram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_DeleteProgram, parameters) +#define GET_DeleteProgram(disp) GET_by_offset(disp, _gloffset_DeleteProgram) +#define SET_DeleteProgram(disp, fn) SET_by_offset(disp, _gloffset_DeleteProgram, fn) +#define CALL_DeleteShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_DeleteShader, parameters) +#define GET_DeleteShader(disp) GET_by_offset(disp, _gloffset_DeleteShader) +#define SET_DeleteShader(disp, fn) SET_by_offset(disp, _gloffset_DeleteShader, fn) +#define CALL_DetachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_DetachShader, parameters) +#define GET_DetachShader(disp) GET_by_offset(disp, _gloffset_DetachShader) +#define SET_DetachShader(disp, fn) SET_by_offset(disp, _gloffset_DetachShader, fn) +#define CALL_GetAttachedShaders(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLuint *)), _gloffset_GetAttachedShaders, parameters) +#define GET_GetAttachedShaders(disp) GET_by_offset(disp, _gloffset_GetAttachedShaders) +#define SET_GetAttachedShaders(disp, fn) SET_by_offset(disp, _gloffset_GetAttachedShaders, fn) +#define CALL_GetProgramInfoLog(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLchar *)), _gloffset_GetProgramInfoLog, parameters) +#define GET_GetProgramInfoLog(disp) GET_by_offset(disp, _gloffset_GetProgramInfoLog) +#define SET_GetProgramInfoLog(disp, fn) SET_by_offset(disp, _gloffset_GetProgramInfoLog, fn) +#define CALL_GetProgramiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetProgramiv, parameters) +#define GET_GetProgramiv(disp) GET_by_offset(disp, _gloffset_GetProgramiv) +#define SET_GetProgramiv(disp, fn) SET_by_offset(disp, _gloffset_GetProgramiv, fn) +#define CALL_GetShaderInfoLog(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLchar *)), _gloffset_GetShaderInfoLog, parameters) +#define GET_GetShaderInfoLog(disp) GET_by_offset(disp, _gloffset_GetShaderInfoLog) +#define SET_GetShaderInfoLog(disp, fn) SET_by_offset(disp, _gloffset_GetShaderInfoLog, fn) +#define CALL_GetShaderiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetShaderiv, parameters) +#define GET_GetShaderiv(disp) GET_by_offset(disp, _gloffset_GetShaderiv) +#define SET_GetShaderiv(disp, fn) SET_by_offset(disp, _gloffset_GetShaderiv, fn) +#define CALL_IsProgram(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsProgram, parameters) +#define GET_IsProgram(disp) GET_by_offset(disp, _gloffset_IsProgram) +#define SET_IsProgram(disp, fn) SET_by_offset(disp, _gloffset_IsProgram, fn) +#define CALL_IsShader(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsShader, parameters) +#define GET_IsShader(disp) GET_by_offset(disp, _gloffset_IsShader) +#define SET_IsShader(disp, fn) SET_by_offset(disp, _gloffset_IsShader, fn) +#define CALL_StencilFuncSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLuint)), _gloffset_StencilFuncSeparate, parameters) +#define GET_StencilFuncSeparate(disp) GET_by_offset(disp, _gloffset_StencilFuncSeparate) +#define SET_StencilFuncSeparate(disp, fn) SET_by_offset(disp, _gloffset_StencilFuncSeparate, fn) +#define CALL_StencilMaskSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_StencilMaskSeparate, parameters) +#define GET_StencilMaskSeparate(disp) GET_by_offset(disp, _gloffset_StencilMaskSeparate) +#define SET_StencilMaskSeparate(disp, fn) SET_by_offset(disp, _gloffset_StencilMaskSeparate, fn) +#define CALL_StencilOpSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), _gloffset_StencilOpSeparate, parameters) +#define GET_StencilOpSeparate(disp) GET_by_offset(disp, _gloffset_StencilOpSeparate) +#define SET_StencilOpSeparate(disp, fn) SET_by_offset(disp, _gloffset_StencilOpSeparate, fn) +#define CALL_UniformMatrix2x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix2x3fv, parameters) +#define GET_UniformMatrix2x3fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix2x3fv) +#define SET_UniformMatrix2x3fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix2x3fv, fn) +#define CALL_UniformMatrix2x4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix2x4fv, parameters) +#define GET_UniformMatrix2x4fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix2x4fv) +#define SET_UniformMatrix2x4fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix2x4fv, fn) +#define CALL_UniformMatrix3x2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix3x2fv, parameters) +#define GET_UniformMatrix3x2fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix3x2fv) +#define SET_UniformMatrix3x2fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix3x2fv, fn) +#define CALL_UniformMatrix3x4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix3x4fv, parameters) +#define GET_UniformMatrix3x4fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix3x4fv) +#define SET_UniformMatrix3x4fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix3x4fv, fn) +#define CALL_UniformMatrix4x2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix4x2fv, parameters) +#define GET_UniformMatrix4x2fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix4x2fv) +#define SET_UniformMatrix4x2fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix4x2fv, fn) +#define CALL_UniformMatrix4x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix4x3fv, parameters) +#define GET_UniformMatrix4x3fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix4x3fv) +#define SET_UniformMatrix4x3fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix4x3fv, fn) +#define CALL_ClampColor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ClampColor, parameters) +#define GET_ClampColor(disp) GET_by_offset(disp, _gloffset_ClampColor) +#define SET_ClampColor(disp, fn) SET_by_offset(disp, _gloffset_ClampColor, fn) +#define CALL_ClearBufferfi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat, const GLint)), _gloffset_ClearBufferfi, parameters) +#define GET_ClearBufferfi(disp) GET_by_offset(disp, _gloffset_ClearBufferfi) +#define SET_ClearBufferfi(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferfi, fn) +#define CALL_ClearBufferfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat *)), _gloffset_ClearBufferfv, parameters) +#define GET_ClearBufferfv(disp) GET_by_offset(disp, _gloffset_ClearBufferfv) +#define SET_ClearBufferfv(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferfv, fn) +#define CALL_ClearBufferiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLint *)), _gloffset_ClearBufferiv, parameters) +#define GET_ClearBufferiv(disp) GET_by_offset(disp, _gloffset_ClearBufferiv) +#define SET_ClearBufferiv(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferiv, fn) +#define CALL_ClearBufferuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLuint *)), _gloffset_ClearBufferuiv, parameters) +#define GET_ClearBufferuiv(disp) GET_by_offset(disp, _gloffset_ClearBufferuiv) +#define SET_ClearBufferuiv(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferuiv, fn) +#define CALL_GetStringi(disp, parameters) CALL_by_offset(disp, (const GLubyte * (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_GetStringi, parameters) +#define GET_GetStringi(disp) GET_by_offset(disp, _gloffset_GetStringi) +#define SET_GetStringi(disp, fn) SET_by_offset(disp, _gloffset_GetStringi, fn) +#define CALL_TexBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint)), _gloffset_TexBuffer, parameters) +#define GET_TexBuffer(disp) GET_by_offset(disp, _gloffset_TexBuffer) +#define SET_TexBuffer(disp, fn) SET_by_offset(disp, _gloffset_TexBuffer, fn) +#define CALL_FramebufferTexture(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint)), _gloffset_FramebufferTexture, parameters) +#define GET_FramebufferTexture(disp) GET_by_offset(disp, _gloffset_FramebufferTexture) +#define SET_FramebufferTexture(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTexture, fn) +#define CALL_GetBufferParameteri64v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint64 *)), _gloffset_GetBufferParameteri64v, parameters) +#define GET_GetBufferParameteri64v(disp) GET_by_offset(disp, _gloffset_GetBufferParameteri64v) +#define SET_GetBufferParameteri64v(disp, fn) SET_by_offset(disp, _gloffset_GetBufferParameteri64v, fn) +#define CALL_GetInteger64i_v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLint64 *)), _gloffset_GetInteger64i_v, parameters) +#define GET_GetInteger64i_v(disp) GET_by_offset(disp, _gloffset_GetInteger64i_v) +#define SET_GetInteger64i_v(disp, fn) SET_by_offset(disp, _gloffset_GetInteger64i_v, fn) +#define CALL_VertexAttribDivisor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_VertexAttribDivisor, parameters) +#define GET_VertexAttribDivisor(disp) GET_by_offset(disp, _gloffset_VertexAttribDivisor) +#define SET_VertexAttribDivisor(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribDivisor, fn) +#define CALL_LoadTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_LoadTransposeMatrixdARB, parameters) +#define GET_LoadTransposeMatrixdARB(disp) GET_by_offset(disp, _gloffset_LoadTransposeMatrixdARB) +#define SET_LoadTransposeMatrixdARB(disp, fn) SET_by_offset(disp, _gloffset_LoadTransposeMatrixdARB, fn) +#define CALL_LoadTransposeMatrixfARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_LoadTransposeMatrixfARB, parameters) +#define GET_LoadTransposeMatrixfARB(disp) GET_by_offset(disp, _gloffset_LoadTransposeMatrixfARB) +#define SET_LoadTransposeMatrixfARB(disp, fn) SET_by_offset(disp, _gloffset_LoadTransposeMatrixfARB, fn) +#define CALL_MultTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_MultTransposeMatrixdARB, parameters) +#define GET_MultTransposeMatrixdARB(disp) GET_by_offset(disp, _gloffset_MultTransposeMatrixdARB) +#define SET_MultTransposeMatrixdARB(disp, fn) SET_by_offset(disp, _gloffset_MultTransposeMatrixdARB, fn) +#define CALL_MultTransposeMatrixfARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_MultTransposeMatrixfARB, parameters) +#define GET_MultTransposeMatrixfARB(disp) GET_by_offset(disp, _gloffset_MultTransposeMatrixfARB) +#define SET_MultTransposeMatrixfARB(disp, fn) SET_by_offset(disp, _gloffset_MultTransposeMatrixfARB, fn) +#define CALL_SampleCoverageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLboolean)), _gloffset_SampleCoverageARB, parameters) +#define GET_SampleCoverageARB(disp) GET_by_offset(disp, _gloffset_SampleCoverageARB) +#define SET_SampleCoverageARB(disp, fn) SET_by_offset(disp, _gloffset_SampleCoverageARB, fn) +#define CALL_CompressedTexImage1DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *)), _gloffset_CompressedTexImage1DARB, parameters) +#define GET_CompressedTexImage1DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexImage1DARB) +#define SET_CompressedTexImage1DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexImage1DARB, fn) +#define CALL_CompressedTexImage2DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)), _gloffset_CompressedTexImage2DARB, parameters) +#define GET_CompressedTexImage2DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexImage2DARB) +#define SET_CompressedTexImage2DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexImage2DARB, fn) +#define CALL_CompressedTexImage3DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)), _gloffset_CompressedTexImage3DARB, parameters) +#define GET_CompressedTexImage3DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexImage3DARB) +#define SET_CompressedTexImage3DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexImage3DARB, fn) +#define CALL_CompressedTexSubImage1DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *)), _gloffset_CompressedTexSubImage1DARB, parameters) +#define GET_CompressedTexSubImage1DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexSubImage1DARB) +#define SET_CompressedTexSubImage1DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexSubImage1DARB, fn) +#define CALL_CompressedTexSubImage2DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)), _gloffset_CompressedTexSubImage2DARB, parameters) +#define GET_CompressedTexSubImage2DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexSubImage2DARB) +#define SET_CompressedTexSubImage2DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexSubImage2DARB, fn) +#define CALL_CompressedTexSubImage3DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)), _gloffset_CompressedTexSubImage3DARB, parameters) +#define GET_CompressedTexSubImage3DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexSubImage3DARB) +#define SET_CompressedTexSubImage3DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexSubImage3DARB, fn) +#define CALL_GetCompressedTexImageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLvoid *)), _gloffset_GetCompressedTexImageARB, parameters) +#define GET_GetCompressedTexImageARB(disp) GET_by_offset(disp, _gloffset_GetCompressedTexImageARB) +#define SET_GetCompressedTexImageARB(disp, fn) SET_by_offset(disp, _gloffset_GetCompressedTexImageARB, fn) +#define CALL_DisableVertexAttribArrayARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_DisableVertexAttribArrayARB, parameters) +#define GET_DisableVertexAttribArrayARB(disp) GET_by_offset(disp, _gloffset_DisableVertexAttribArrayARB) +#define SET_DisableVertexAttribArrayARB(disp, fn) SET_by_offset(disp, _gloffset_DisableVertexAttribArrayARB, fn) +#define CALL_EnableVertexAttribArrayARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_EnableVertexAttribArrayARB, parameters) +#define GET_EnableVertexAttribArrayARB(disp) GET_by_offset(disp, _gloffset_EnableVertexAttribArrayARB) +#define SET_EnableVertexAttribArrayARB(disp, fn) SET_by_offset(disp, _gloffset_EnableVertexAttribArrayARB, fn) +#define CALL_GetProgramEnvParameterdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble *)), _gloffset_GetProgramEnvParameterdvARB, parameters) +#define GET_GetProgramEnvParameterdvARB(disp) GET_by_offset(disp, _gloffset_GetProgramEnvParameterdvARB) +#define SET_GetProgramEnvParameterdvARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramEnvParameterdvARB, fn) +#define CALL_GetProgramEnvParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat *)), _gloffset_GetProgramEnvParameterfvARB, parameters) +#define GET_GetProgramEnvParameterfvARB(disp) GET_by_offset(disp, _gloffset_GetProgramEnvParameterfvARB) +#define SET_GetProgramEnvParameterfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramEnvParameterfvARB, fn) +#define CALL_GetProgramLocalParameterdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble *)), _gloffset_GetProgramLocalParameterdvARB, parameters) +#define GET_GetProgramLocalParameterdvARB(disp) GET_by_offset(disp, _gloffset_GetProgramLocalParameterdvARB) +#define SET_GetProgramLocalParameterdvARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramLocalParameterdvARB, fn) +#define CALL_GetProgramLocalParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat *)), _gloffset_GetProgramLocalParameterfvARB, parameters) +#define GET_GetProgramLocalParameterfvARB(disp) GET_by_offset(disp, _gloffset_GetProgramLocalParameterfvARB) +#define SET_GetProgramLocalParameterfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramLocalParameterfvARB, fn) +#define CALL_GetProgramStringARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid *)), _gloffset_GetProgramStringARB, parameters) +#define GET_GetProgramStringARB(disp) GET_by_offset(disp, _gloffset_GetProgramStringARB) +#define SET_GetProgramStringARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramStringARB, fn) +#define CALL_GetProgramivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetProgramivARB, parameters) +#define GET_GetProgramivARB(disp) GET_by_offset(disp, _gloffset_GetProgramivARB) +#define SET_GetProgramivARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramivARB, fn) +#define CALL_GetVertexAttribdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLdouble *)), _gloffset_GetVertexAttribdvARB, parameters) +#define GET_GetVertexAttribdvARB(disp) GET_by_offset(disp, _gloffset_GetVertexAttribdvARB) +#define SET_GetVertexAttribdvARB(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribdvARB, fn) +#define CALL_GetVertexAttribfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), _gloffset_GetVertexAttribfvARB, parameters) +#define GET_GetVertexAttribfvARB(disp) GET_by_offset(disp, _gloffset_GetVertexAttribfvARB) +#define SET_GetVertexAttribfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribfvARB, fn) +#define CALL_GetVertexAttribivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetVertexAttribivARB, parameters) +#define GET_GetVertexAttribivARB(disp) GET_by_offset(disp, _gloffset_GetVertexAttribivARB) +#define SET_GetVertexAttribivARB(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribivARB, fn) +#define CALL_ProgramEnvParameter4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_ProgramEnvParameter4dARB, parameters) +#define GET_ProgramEnvParameter4dARB(disp) GET_by_offset(disp, _gloffset_ProgramEnvParameter4dARB) +#define SET_ProgramEnvParameter4dARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramEnvParameter4dARB, fn) +#define CALL_ProgramEnvParameter4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLdouble *)), _gloffset_ProgramEnvParameter4dvARB, parameters) +#define GET_ProgramEnvParameter4dvARB(disp) GET_by_offset(disp, _gloffset_ProgramEnvParameter4dvARB) +#define SET_ProgramEnvParameter4dvARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramEnvParameter4dvARB, fn) +#define CALL_ProgramEnvParameter4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_ProgramEnvParameter4fARB, parameters) +#define GET_ProgramEnvParameter4fARB(disp) GET_by_offset(disp, _gloffset_ProgramEnvParameter4fARB) +#define SET_ProgramEnvParameter4fARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramEnvParameter4fARB, fn) +#define CALL_ProgramEnvParameter4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), _gloffset_ProgramEnvParameter4fvARB, parameters) +#define GET_ProgramEnvParameter4fvARB(disp) GET_by_offset(disp, _gloffset_ProgramEnvParameter4fvARB) +#define SET_ProgramEnvParameter4fvARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramEnvParameter4fvARB, fn) +#define CALL_ProgramLocalParameter4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_ProgramLocalParameter4dARB, parameters) +#define GET_ProgramLocalParameter4dARB(disp) GET_by_offset(disp, _gloffset_ProgramLocalParameter4dARB) +#define SET_ProgramLocalParameter4dARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramLocalParameter4dARB, fn) +#define CALL_ProgramLocalParameter4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLdouble *)), _gloffset_ProgramLocalParameter4dvARB, parameters) +#define GET_ProgramLocalParameter4dvARB(disp) GET_by_offset(disp, _gloffset_ProgramLocalParameter4dvARB) +#define SET_ProgramLocalParameter4dvARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramLocalParameter4dvARB, fn) +#define CALL_ProgramLocalParameter4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_ProgramLocalParameter4fARB, parameters) +#define GET_ProgramLocalParameter4fARB(disp) GET_by_offset(disp, _gloffset_ProgramLocalParameter4fARB) +#define SET_ProgramLocalParameter4fARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramLocalParameter4fARB, fn) +#define CALL_ProgramLocalParameter4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), _gloffset_ProgramLocalParameter4fvARB, parameters) +#define GET_ProgramLocalParameter4fvARB(disp) GET_by_offset(disp, _gloffset_ProgramLocalParameter4fvARB) +#define SET_ProgramLocalParameter4fvARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramLocalParameter4fvARB, fn) +#define CALL_ProgramStringARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, const GLvoid *)), _gloffset_ProgramStringARB, parameters) +#define GET_ProgramStringARB(disp) GET_by_offset(disp, _gloffset_ProgramStringARB) +#define SET_ProgramStringARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramStringARB, fn) +#define CALL_VertexAttrib1dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble)), _gloffset_VertexAttrib1dARB, parameters) +#define GET_VertexAttrib1dARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1dARB) +#define SET_VertexAttrib1dARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1dARB, fn) +#define CALL_VertexAttrib1dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib1dvARB, parameters) +#define GET_VertexAttrib1dvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1dvARB) +#define SET_VertexAttrib1dvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1dvARB, fn) +#define CALL_VertexAttrib1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat)), _gloffset_VertexAttrib1fARB, parameters) +#define GET_VertexAttrib1fARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1fARB) +#define SET_VertexAttrib1fARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1fARB, fn) +#define CALL_VertexAttrib1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib1fvARB, parameters) +#define GET_VertexAttrib1fvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1fvARB) +#define SET_VertexAttrib1fvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1fvARB, fn) +#define CALL_VertexAttrib1sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort)), _gloffset_VertexAttrib1sARB, parameters) +#define GET_VertexAttrib1sARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1sARB) +#define SET_VertexAttrib1sARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1sARB, fn) +#define CALL_VertexAttrib1svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib1svARB, parameters) +#define GET_VertexAttrib1svARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1svARB) +#define SET_VertexAttrib1svARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1svARB, fn) +#define CALL_VertexAttrib2dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble)), _gloffset_VertexAttrib2dARB, parameters) +#define GET_VertexAttrib2dARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2dARB) +#define SET_VertexAttrib2dARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2dARB, fn) +#define CALL_VertexAttrib2dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib2dvARB, parameters) +#define GET_VertexAttrib2dvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2dvARB) +#define SET_VertexAttrib2dvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2dvARB, fn) +#define CALL_VertexAttrib2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat)), _gloffset_VertexAttrib2fARB, parameters) +#define GET_VertexAttrib2fARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2fARB) +#define SET_VertexAttrib2fARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2fARB, fn) +#define CALL_VertexAttrib2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib2fvARB, parameters) +#define GET_VertexAttrib2fvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2fvARB) +#define SET_VertexAttrib2fvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2fvARB, fn) +#define CALL_VertexAttrib2sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort)), _gloffset_VertexAttrib2sARB, parameters) +#define GET_VertexAttrib2sARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2sARB) +#define SET_VertexAttrib2sARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2sARB, fn) +#define CALL_VertexAttrib2svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib2svARB, parameters) +#define GET_VertexAttrib2svARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2svARB) +#define SET_VertexAttrib2svARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2svARB, fn) +#define CALL_VertexAttrib3dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble)), _gloffset_VertexAttrib3dARB, parameters) +#define GET_VertexAttrib3dARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3dARB) +#define SET_VertexAttrib3dARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3dARB, fn) +#define CALL_VertexAttrib3dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib3dvARB, parameters) +#define GET_VertexAttrib3dvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3dvARB) +#define SET_VertexAttrib3dvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3dvARB, fn) +#define CALL_VertexAttrib3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat)), _gloffset_VertexAttrib3fARB, parameters) +#define GET_VertexAttrib3fARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3fARB) +#define SET_VertexAttrib3fARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3fARB, fn) +#define CALL_VertexAttrib3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib3fvARB, parameters) +#define GET_VertexAttrib3fvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3fvARB) +#define SET_VertexAttrib3fvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3fvARB, fn) +#define CALL_VertexAttrib3sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort)), _gloffset_VertexAttrib3sARB, parameters) +#define GET_VertexAttrib3sARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3sARB) +#define SET_VertexAttrib3sARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3sARB, fn) +#define CALL_VertexAttrib3svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib3svARB, parameters) +#define GET_VertexAttrib3svARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3svARB) +#define SET_VertexAttrib3svARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3svARB, fn) +#define CALL_VertexAttrib4NbvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), _gloffset_VertexAttrib4NbvARB, parameters) +#define GET_VertexAttrib4NbvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NbvARB) +#define SET_VertexAttrib4NbvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NbvARB, fn) +#define CALL_VertexAttrib4NivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttrib4NivARB, parameters) +#define GET_VertexAttrib4NivARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NivARB) +#define SET_VertexAttrib4NivARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NivARB, fn) +#define CALL_VertexAttrib4NsvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib4NsvARB, parameters) +#define GET_VertexAttrib4NsvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NsvARB) +#define SET_VertexAttrib4NsvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NsvARB, fn) +#define CALL_VertexAttrib4NubARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte)), _gloffset_VertexAttrib4NubARB, parameters) +#define GET_VertexAttrib4NubARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NubARB) +#define SET_VertexAttrib4NubARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NubARB, fn) +#define CALL_VertexAttrib4NubvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), _gloffset_VertexAttrib4NubvARB, parameters) +#define GET_VertexAttrib4NubvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NubvARB) +#define SET_VertexAttrib4NubvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NubvARB, fn) +#define CALL_VertexAttrib4NuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttrib4NuivARB, parameters) +#define GET_VertexAttrib4NuivARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NuivARB) +#define SET_VertexAttrib4NuivARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NuivARB, fn) +#define CALL_VertexAttrib4NusvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), _gloffset_VertexAttrib4NusvARB, parameters) +#define GET_VertexAttrib4NusvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NusvARB) +#define SET_VertexAttrib4NusvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NusvARB, fn) +#define CALL_VertexAttrib4bvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), _gloffset_VertexAttrib4bvARB, parameters) +#define GET_VertexAttrib4bvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4bvARB) +#define SET_VertexAttrib4bvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4bvARB, fn) +#define CALL_VertexAttrib4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_VertexAttrib4dARB, parameters) +#define GET_VertexAttrib4dARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4dARB) +#define SET_VertexAttrib4dARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4dARB, fn) +#define CALL_VertexAttrib4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib4dvARB, parameters) +#define GET_VertexAttrib4dvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4dvARB) +#define SET_VertexAttrib4dvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4dvARB, fn) +#define CALL_VertexAttrib4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_VertexAttrib4fARB, parameters) +#define GET_VertexAttrib4fARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4fARB) +#define SET_VertexAttrib4fARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4fARB, fn) +#define CALL_VertexAttrib4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib4fvARB, parameters) +#define GET_VertexAttrib4fvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4fvARB) +#define SET_VertexAttrib4fvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4fvARB, fn) +#define CALL_VertexAttrib4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttrib4ivARB, parameters) +#define GET_VertexAttrib4ivARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4ivARB) +#define SET_VertexAttrib4ivARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4ivARB, fn) +#define CALL_VertexAttrib4sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort, GLshort)), _gloffset_VertexAttrib4sARB, parameters) +#define GET_VertexAttrib4sARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4sARB) +#define SET_VertexAttrib4sARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4sARB, fn) +#define CALL_VertexAttrib4svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib4svARB, parameters) +#define GET_VertexAttrib4svARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4svARB) +#define SET_VertexAttrib4svARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4svARB, fn) +#define CALL_VertexAttrib4ubvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), _gloffset_VertexAttrib4ubvARB, parameters) +#define GET_VertexAttrib4ubvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4ubvARB) +#define SET_VertexAttrib4ubvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4ubvARB, fn) +#define CALL_VertexAttrib4uivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttrib4uivARB, parameters) +#define GET_VertexAttrib4uivARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4uivARB) +#define SET_VertexAttrib4uivARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4uivARB, fn) +#define CALL_VertexAttrib4usvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), _gloffset_VertexAttrib4usvARB, parameters) +#define GET_VertexAttrib4usvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4usvARB) +#define SET_VertexAttrib4usvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4usvARB, fn) +#define CALL_VertexAttribPointerARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *)), _gloffset_VertexAttribPointerARB, parameters) +#define GET_VertexAttribPointerARB(disp) GET_by_offset(disp, _gloffset_VertexAttribPointerARB) +#define SET_VertexAttribPointerARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribPointerARB, fn) +#define CALL_BindBufferARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindBufferARB, parameters) +#define GET_BindBufferARB(disp) GET_by_offset(disp, _gloffset_BindBufferARB) +#define SET_BindBufferARB(disp, fn) SET_by_offset(disp, _gloffset_BindBufferARB, fn) +#define CALL_BufferDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizeiptrARB, const GLvoid *, GLenum)), _gloffset_BufferDataARB, parameters) +#define GET_BufferDataARB(disp) GET_by_offset(disp, _gloffset_BufferDataARB) +#define SET_BufferDataARB(disp, fn) SET_by_offset(disp, _gloffset_BufferDataARB, fn) +#define CALL_BufferSubDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *)), _gloffset_BufferSubDataARB, parameters) +#define GET_BufferSubDataARB(disp) GET_by_offset(disp, _gloffset_BufferSubDataARB) +#define SET_BufferSubDataARB(disp, fn) SET_by_offset(disp, _gloffset_BufferSubDataARB, fn) +#define CALL_DeleteBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteBuffersARB, parameters) +#define GET_DeleteBuffersARB(disp) GET_by_offset(disp, _gloffset_DeleteBuffersARB) +#define SET_DeleteBuffersARB(disp, fn) SET_by_offset(disp, _gloffset_DeleteBuffersARB, fn) +#define CALL_GenBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenBuffersARB, parameters) +#define GET_GenBuffersARB(disp) GET_by_offset(disp, _gloffset_GenBuffersARB) +#define SET_GenBuffersARB(disp, fn) SET_by_offset(disp, _gloffset_GenBuffersARB, fn) +#define CALL_GetBufferParameterivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetBufferParameterivARB, parameters) +#define GET_GetBufferParameterivARB(disp) GET_by_offset(disp, _gloffset_GetBufferParameterivARB) +#define SET_GetBufferParameterivARB(disp, fn) SET_by_offset(disp, _gloffset_GetBufferParameterivARB, fn) +#define CALL_GetBufferPointervARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid **)), _gloffset_GetBufferPointervARB, parameters) +#define GET_GetBufferPointervARB(disp) GET_by_offset(disp, _gloffset_GetBufferPointervARB) +#define SET_GetBufferPointervARB(disp, fn) SET_by_offset(disp, _gloffset_GetBufferPointervARB, fn) +#define CALL_GetBufferSubDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *)), _gloffset_GetBufferSubDataARB, parameters) +#define GET_GetBufferSubDataARB(disp) GET_by_offset(disp, _gloffset_GetBufferSubDataARB) +#define SET_GetBufferSubDataARB(disp, fn) SET_by_offset(disp, _gloffset_GetBufferSubDataARB, fn) +#define CALL_IsBufferARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsBufferARB, parameters) +#define GET_IsBufferARB(disp) GET_by_offset(disp, _gloffset_IsBufferARB) +#define SET_IsBufferARB(disp, fn) SET_by_offset(disp, _gloffset_IsBufferARB, fn) +#define CALL_MapBufferARB(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_MapBufferARB, parameters) +#define GET_MapBufferARB(disp) GET_by_offset(disp, _gloffset_MapBufferARB) +#define SET_MapBufferARB(disp, fn) SET_by_offset(disp, _gloffset_MapBufferARB, fn) +#define CALL_UnmapBufferARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum)), _gloffset_UnmapBufferARB, parameters) +#define GET_UnmapBufferARB(disp) GET_by_offset(disp, _gloffset_UnmapBufferARB) +#define SET_UnmapBufferARB(disp, fn) SET_by_offset(disp, _gloffset_UnmapBufferARB, fn) +#define CALL_BeginQueryARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BeginQueryARB, parameters) +#define GET_BeginQueryARB(disp) GET_by_offset(disp, _gloffset_BeginQueryARB) +#define SET_BeginQueryARB(disp, fn) SET_by_offset(disp, _gloffset_BeginQueryARB, fn) +#define CALL_DeleteQueriesARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteQueriesARB, parameters) +#define GET_DeleteQueriesARB(disp) GET_by_offset(disp, _gloffset_DeleteQueriesARB) +#define SET_DeleteQueriesARB(disp, fn) SET_by_offset(disp, _gloffset_DeleteQueriesARB, fn) +#define CALL_EndQueryARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_EndQueryARB, parameters) +#define GET_EndQueryARB(disp) GET_by_offset(disp, _gloffset_EndQueryARB) +#define SET_EndQueryARB(disp, fn) SET_by_offset(disp, _gloffset_EndQueryARB, fn) +#define CALL_GenQueriesARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenQueriesARB, parameters) +#define GET_GenQueriesARB(disp) GET_by_offset(disp, _gloffset_GenQueriesARB) +#define SET_GenQueriesARB(disp, fn) SET_by_offset(disp, _gloffset_GenQueriesARB, fn) +#define CALL_GetQueryObjectivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetQueryObjectivARB, parameters) +#define GET_GetQueryObjectivARB(disp) GET_by_offset(disp, _gloffset_GetQueryObjectivARB) +#define SET_GetQueryObjectivARB(disp, fn) SET_by_offset(disp, _gloffset_GetQueryObjectivARB, fn) +#define CALL_GetQueryObjectuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint *)), _gloffset_GetQueryObjectuivARB, parameters) +#define GET_GetQueryObjectuivARB(disp) GET_by_offset(disp, _gloffset_GetQueryObjectuivARB) +#define SET_GetQueryObjectuivARB(disp, fn) SET_by_offset(disp, _gloffset_GetQueryObjectuivARB, fn) +#define CALL_GetQueryivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetQueryivARB, parameters) +#define GET_GetQueryivARB(disp) GET_by_offset(disp, _gloffset_GetQueryivARB) +#define SET_GetQueryivARB(disp, fn) SET_by_offset(disp, _gloffset_GetQueryivARB, fn) +#define CALL_IsQueryARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsQueryARB, parameters) +#define GET_IsQueryARB(disp) GET_by_offset(disp, _gloffset_IsQueryARB) +#define SET_IsQueryARB(disp, fn) SET_by_offset(disp, _gloffset_IsQueryARB, fn) +#define CALL_AttachObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLhandleARB)), _gloffset_AttachObjectARB, parameters) +#define GET_AttachObjectARB(disp) GET_by_offset(disp, _gloffset_AttachObjectARB) +#define SET_AttachObjectARB(disp, fn) SET_by_offset(disp, _gloffset_AttachObjectARB, fn) +#define CALL_CompileShaderARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), _gloffset_CompileShaderARB, parameters) +#define GET_CompileShaderARB(disp) GET_by_offset(disp, _gloffset_CompileShaderARB) +#define SET_CompileShaderARB(disp, fn) SET_by_offset(disp, _gloffset_CompileShaderARB, fn) +#define CALL_CreateProgramObjectARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(void)), _gloffset_CreateProgramObjectARB, parameters) +#define GET_CreateProgramObjectARB(disp) GET_by_offset(disp, _gloffset_CreateProgramObjectARB) +#define SET_CreateProgramObjectARB(disp, fn) SET_by_offset(disp, _gloffset_CreateProgramObjectARB, fn) +#define CALL_CreateShaderObjectARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(GLenum)), _gloffset_CreateShaderObjectARB, parameters) +#define GET_CreateShaderObjectARB(disp) GET_by_offset(disp, _gloffset_CreateShaderObjectARB) +#define SET_CreateShaderObjectARB(disp, fn) SET_by_offset(disp, _gloffset_CreateShaderObjectARB, fn) +#define CALL_DeleteObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), _gloffset_DeleteObjectARB, parameters) +#define GET_DeleteObjectARB(disp) GET_by_offset(disp, _gloffset_DeleteObjectARB) +#define SET_DeleteObjectARB(disp, fn) SET_by_offset(disp, _gloffset_DeleteObjectARB, fn) +#define CALL_DetachObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLhandleARB)), _gloffset_DetachObjectARB, parameters) +#define GET_DetachObjectARB(disp) GET_by_offset(disp, _gloffset_DetachObjectARB) +#define SET_DetachObjectARB(disp, fn) SET_by_offset(disp, _gloffset_DetachObjectARB, fn) +#define CALL_GetActiveUniformARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)), _gloffset_GetActiveUniformARB, parameters) +#define GET_GetActiveUniformARB(disp) GET_by_offset(disp, _gloffset_GetActiveUniformARB) +#define SET_GetActiveUniformARB(disp, fn) SET_by_offset(disp, _gloffset_GetActiveUniformARB, fn) +#define CALL_GetAttachedObjectsARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *)), _gloffset_GetAttachedObjectsARB, parameters) +#define GET_GetAttachedObjectsARB(disp) GET_by_offset(disp, _gloffset_GetAttachedObjectsARB) +#define SET_GetAttachedObjectsARB(disp, fn) SET_by_offset(disp, _gloffset_GetAttachedObjectsARB, fn) +#define CALL_GetHandleARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(GLenum)), _gloffset_GetHandleARB, parameters) +#define GET_GetHandleARB(disp) GET_by_offset(disp, _gloffset_GetHandleARB) +#define SET_GetHandleARB(disp, fn) SET_by_offset(disp, _gloffset_GetHandleARB, fn) +#define CALL_GetInfoLogARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)), _gloffset_GetInfoLogARB, parameters) +#define GET_GetInfoLogARB(disp) GET_by_offset(disp, _gloffset_GetInfoLogARB) +#define SET_GetInfoLogARB(disp, fn) SET_by_offset(disp, _gloffset_GetInfoLogARB, fn) +#define CALL_GetObjectParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLenum, GLfloat *)), _gloffset_GetObjectParameterfvARB, parameters) +#define GET_GetObjectParameterfvARB(disp) GET_by_offset(disp, _gloffset_GetObjectParameterfvARB) +#define SET_GetObjectParameterfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetObjectParameterfvARB, fn) +#define CALL_GetObjectParameterivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLenum, GLint *)), _gloffset_GetObjectParameterivARB, parameters) +#define GET_GetObjectParameterivARB(disp) GET_by_offset(disp, _gloffset_GetObjectParameterivARB) +#define SET_GetObjectParameterivARB(disp, fn) SET_by_offset(disp, _gloffset_GetObjectParameterivARB, fn) +#define CALL_GetShaderSourceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)), _gloffset_GetShaderSourceARB, parameters) +#define GET_GetShaderSourceARB(disp) GET_by_offset(disp, _gloffset_GetShaderSourceARB) +#define SET_GetShaderSourceARB(disp, fn) SET_by_offset(disp, _gloffset_GetShaderSourceARB, fn) +#define CALL_GetUniformLocationARB(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLhandleARB, const GLcharARB *)), _gloffset_GetUniformLocationARB, parameters) +#define GET_GetUniformLocationARB(disp) GET_by_offset(disp, _gloffset_GetUniformLocationARB) +#define SET_GetUniformLocationARB(disp, fn) SET_by_offset(disp, _gloffset_GetUniformLocationARB, fn) +#define CALL_GetUniformfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLfloat *)), _gloffset_GetUniformfvARB, parameters) +#define GET_GetUniformfvARB(disp) GET_by_offset(disp, _gloffset_GetUniformfvARB) +#define SET_GetUniformfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetUniformfvARB, fn) +#define CALL_GetUniformivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLint *)), _gloffset_GetUniformivARB, parameters) +#define GET_GetUniformivARB(disp) GET_by_offset(disp, _gloffset_GetUniformivARB) +#define SET_GetUniformivARB(disp, fn) SET_by_offset(disp, _gloffset_GetUniformivARB, fn) +#define CALL_LinkProgramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), _gloffset_LinkProgramARB, parameters) +#define GET_LinkProgramARB(disp) GET_by_offset(disp, _gloffset_LinkProgramARB) +#define SET_LinkProgramARB(disp, fn) SET_by_offset(disp, _gloffset_LinkProgramARB, fn) +#define CALL_ShaderSourceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, const GLcharARB **, const GLint *)), _gloffset_ShaderSourceARB, parameters) +#define GET_ShaderSourceARB(disp) GET_by_offset(disp, _gloffset_ShaderSourceARB) +#define SET_ShaderSourceARB(disp, fn) SET_by_offset(disp, _gloffset_ShaderSourceARB, fn) +#define CALL_Uniform1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat)), _gloffset_Uniform1fARB, parameters) +#define GET_Uniform1fARB(disp) GET_by_offset(disp, _gloffset_Uniform1fARB) +#define SET_Uniform1fARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform1fARB, fn) +#define CALL_Uniform1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), _gloffset_Uniform1fvARB, parameters) +#define GET_Uniform1fvARB(disp) GET_by_offset(disp, _gloffset_Uniform1fvARB) +#define SET_Uniform1fvARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform1fvARB, fn) +#define CALL_Uniform1iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_Uniform1iARB, parameters) +#define GET_Uniform1iARB(disp) GET_by_offset(disp, _gloffset_Uniform1iARB) +#define SET_Uniform1iARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform1iARB, fn) +#define CALL_Uniform1ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), _gloffset_Uniform1ivARB, parameters) +#define GET_Uniform1ivARB(disp) GET_by_offset(disp, _gloffset_Uniform1ivARB) +#define SET_Uniform1ivARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform1ivARB, fn) +#define CALL_Uniform2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat)), _gloffset_Uniform2fARB, parameters) +#define GET_Uniform2fARB(disp) GET_by_offset(disp, _gloffset_Uniform2fARB) +#define SET_Uniform2fARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform2fARB, fn) +#define CALL_Uniform2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), _gloffset_Uniform2fvARB, parameters) +#define GET_Uniform2fvARB(disp) GET_by_offset(disp, _gloffset_Uniform2fvARB) +#define SET_Uniform2fvARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform2fvARB, fn) +#define CALL_Uniform2iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_Uniform2iARB, parameters) +#define GET_Uniform2iARB(disp) GET_by_offset(disp, _gloffset_Uniform2iARB) +#define SET_Uniform2iARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform2iARB, fn) +#define CALL_Uniform2ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), _gloffset_Uniform2ivARB, parameters) +#define GET_Uniform2ivARB(disp) GET_by_offset(disp, _gloffset_Uniform2ivARB) +#define SET_Uniform2ivARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform2ivARB, fn) +#define CALL_Uniform3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLfloat)), _gloffset_Uniform3fARB, parameters) +#define GET_Uniform3fARB(disp) GET_by_offset(disp, _gloffset_Uniform3fARB) +#define SET_Uniform3fARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform3fARB, fn) +#define CALL_Uniform3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), _gloffset_Uniform3fvARB, parameters) +#define GET_Uniform3fvARB(disp) GET_by_offset(disp, _gloffset_Uniform3fvARB) +#define SET_Uniform3fvARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform3fvARB, fn) +#define CALL_Uniform3iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_Uniform3iARB, parameters) +#define GET_Uniform3iARB(disp) GET_by_offset(disp, _gloffset_Uniform3iARB) +#define SET_Uniform3iARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform3iARB, fn) +#define CALL_Uniform3ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), _gloffset_Uniform3ivARB, parameters) +#define GET_Uniform3ivARB(disp) GET_by_offset(disp, _gloffset_Uniform3ivARB) +#define SET_Uniform3ivARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform3ivARB, fn) +#define CALL_Uniform4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_Uniform4fARB, parameters) +#define GET_Uniform4fARB(disp) GET_by_offset(disp, _gloffset_Uniform4fARB) +#define SET_Uniform4fARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform4fARB, fn) +#define CALL_Uniform4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), _gloffset_Uniform4fvARB, parameters) +#define GET_Uniform4fvARB(disp) GET_by_offset(disp, _gloffset_Uniform4fvARB) +#define SET_Uniform4fvARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform4fvARB, fn) +#define CALL_Uniform4iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint)), _gloffset_Uniform4iARB, parameters) +#define GET_Uniform4iARB(disp) GET_by_offset(disp, _gloffset_Uniform4iARB) +#define SET_Uniform4iARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform4iARB, fn) +#define CALL_Uniform4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), _gloffset_Uniform4ivARB, parameters) +#define GET_Uniform4ivARB(disp) GET_by_offset(disp, _gloffset_Uniform4ivARB) +#define SET_Uniform4ivARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform4ivARB, fn) +#define CALL_UniformMatrix2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix2fvARB, parameters) +#define GET_UniformMatrix2fvARB(disp) GET_by_offset(disp, _gloffset_UniformMatrix2fvARB) +#define SET_UniformMatrix2fvARB(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix2fvARB, fn) +#define CALL_UniformMatrix3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix3fvARB, parameters) +#define GET_UniformMatrix3fvARB(disp) GET_by_offset(disp, _gloffset_UniformMatrix3fvARB) +#define SET_UniformMatrix3fvARB(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix3fvARB, fn) +#define CALL_UniformMatrix4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix4fvARB, parameters) +#define GET_UniformMatrix4fvARB(disp) GET_by_offset(disp, _gloffset_UniformMatrix4fvARB) +#define SET_UniformMatrix4fvARB(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix4fvARB, fn) +#define CALL_UseProgramObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), _gloffset_UseProgramObjectARB, parameters) +#define GET_UseProgramObjectARB(disp) GET_by_offset(disp, _gloffset_UseProgramObjectARB) +#define SET_UseProgramObjectARB(disp, fn) SET_by_offset(disp, _gloffset_UseProgramObjectARB, fn) +#define CALL_ValidateProgramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), _gloffset_ValidateProgramARB, parameters) +#define GET_ValidateProgramARB(disp) GET_by_offset(disp, _gloffset_ValidateProgramARB) +#define SET_ValidateProgramARB(disp, fn) SET_by_offset(disp, _gloffset_ValidateProgramARB, fn) +#define CALL_BindAttribLocationARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, const GLcharARB *)), _gloffset_BindAttribLocationARB, parameters) +#define GET_BindAttribLocationARB(disp) GET_by_offset(disp, _gloffset_BindAttribLocationARB) +#define SET_BindAttribLocationARB(disp, fn) SET_by_offset(disp, _gloffset_BindAttribLocationARB, fn) +#define CALL_GetActiveAttribARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)), _gloffset_GetActiveAttribARB, parameters) +#define GET_GetActiveAttribARB(disp) GET_by_offset(disp, _gloffset_GetActiveAttribARB) +#define SET_GetActiveAttribARB(disp, fn) SET_by_offset(disp, _gloffset_GetActiveAttribARB, fn) +#define CALL_GetAttribLocationARB(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLhandleARB, const GLcharARB *)), _gloffset_GetAttribLocationARB, parameters) +#define GET_GetAttribLocationARB(disp) GET_by_offset(disp, _gloffset_GetAttribLocationARB) +#define SET_GetAttribLocationARB(disp, fn) SET_by_offset(disp, _gloffset_GetAttribLocationARB, fn) +#define CALL_DrawBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLenum *)), _gloffset_DrawBuffersARB, parameters) +#define GET_DrawBuffersARB(disp) GET_by_offset(disp, _gloffset_DrawBuffersARB) +#define SET_DrawBuffersARB(disp, fn) SET_by_offset(disp, _gloffset_DrawBuffersARB, fn) +#define CALL_DrawArraysInstancedARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLsizei)), _gloffset_DrawArraysInstancedARB, parameters) +#define GET_DrawArraysInstancedARB(disp) GET_by_offset(disp, _gloffset_DrawArraysInstancedARB) +#define SET_DrawArraysInstancedARB(disp, fn) SET_by_offset(disp, _gloffset_DrawArraysInstancedARB, fn) +#define CALL_DrawElementsInstancedARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei)), _gloffset_DrawElementsInstancedARB, parameters) +#define GET_DrawElementsInstancedARB(disp) GET_by_offset(disp, _gloffset_DrawElementsInstancedARB) +#define SET_DrawElementsInstancedARB(disp, fn) SET_by_offset(disp, _gloffset_DrawElementsInstancedARB, fn) +#define CALL_RenderbufferStorageMultisample(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)), _gloffset_RenderbufferStorageMultisample, parameters) +#define GET_RenderbufferStorageMultisample(disp) GET_by_offset(disp, _gloffset_RenderbufferStorageMultisample) +#define SET_RenderbufferStorageMultisample(disp, fn) SET_by_offset(disp, _gloffset_RenderbufferStorageMultisample, fn) +#define CALL_FramebufferTextureARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint)), _gloffset_FramebufferTextureARB, parameters) +#define GET_FramebufferTextureARB(disp) GET_by_offset(disp, _gloffset_FramebufferTextureARB) +#define SET_FramebufferTextureARB(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTextureARB, fn) +#define CALL_FramebufferTextureFaceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLenum)), _gloffset_FramebufferTextureFaceARB, parameters) +#define GET_FramebufferTextureFaceARB(disp) GET_by_offset(disp, _gloffset_FramebufferTextureFaceARB) +#define SET_FramebufferTextureFaceARB(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTextureFaceARB, fn) +#define CALL_ProgramParameteriARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint)), _gloffset_ProgramParameteriARB, parameters) +#define GET_ProgramParameteriARB(disp) GET_by_offset(disp, _gloffset_ProgramParameteriARB) +#define SET_ProgramParameteriARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramParameteriARB, fn) +#define CALL_FlushMappedBufferRange(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr)), _gloffset_FlushMappedBufferRange, parameters) +#define GET_FlushMappedBufferRange(disp) GET_by_offset(disp, _gloffset_FlushMappedBufferRange) +#define SET_FlushMappedBufferRange(disp, fn) SET_by_offset(disp, _gloffset_FlushMappedBufferRange, fn) +#define CALL_MapBufferRange(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr, GLbitfield)), _gloffset_MapBufferRange, parameters) +#define GET_MapBufferRange(disp) GET_by_offset(disp, _gloffset_MapBufferRange) +#define SET_MapBufferRange(disp, fn) SET_by_offset(disp, _gloffset_MapBufferRange, fn) +#define CALL_BindVertexArray(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_BindVertexArray, parameters) +#define GET_BindVertexArray(disp) GET_by_offset(disp, _gloffset_BindVertexArray) +#define SET_BindVertexArray(disp, fn) SET_by_offset(disp, _gloffset_BindVertexArray, fn) +#define CALL_GenVertexArrays(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenVertexArrays, parameters) +#define GET_GenVertexArrays(disp) GET_by_offset(disp, _gloffset_GenVertexArrays) +#define SET_GenVertexArrays(disp, fn) SET_by_offset(disp, _gloffset_GenVertexArrays, fn) +#define CALL_CopyBufferSubData(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr)), _gloffset_CopyBufferSubData, parameters) +#define GET_CopyBufferSubData(disp) GET_by_offset(disp, _gloffset_CopyBufferSubData) +#define SET_CopyBufferSubData(disp, fn) SET_by_offset(disp, _gloffset_CopyBufferSubData, fn) +#define CALL_ClientWaitSync(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLsync, GLbitfield, GLuint64)), _gloffset_ClientWaitSync, parameters) +#define GET_ClientWaitSync(disp) GET_by_offset(disp, _gloffset_ClientWaitSync) +#define SET_ClientWaitSync(disp, fn) SET_by_offset(disp, _gloffset_ClientWaitSync, fn) +#define CALL_DeleteSync(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync)), _gloffset_DeleteSync, parameters) +#define GET_DeleteSync(disp) GET_by_offset(disp, _gloffset_DeleteSync) +#define SET_DeleteSync(disp, fn) SET_by_offset(disp, _gloffset_DeleteSync, fn) +#define CALL_FenceSync(disp, parameters) CALL_by_offset(disp, (GLsync (GLAPIENTRYP)(GLenum, GLbitfield)), _gloffset_FenceSync, parameters) +#define GET_FenceSync(disp) GET_by_offset(disp, _gloffset_FenceSync) +#define SET_FenceSync(disp, fn) SET_by_offset(disp, _gloffset_FenceSync, fn) +#define CALL_GetInteger64v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint64 *)), _gloffset_GetInteger64v, parameters) +#define GET_GetInteger64v(disp) GET_by_offset(disp, _gloffset_GetInteger64v) +#define SET_GetInteger64v(disp, fn) SET_by_offset(disp, _gloffset_GetInteger64v, fn) +#define CALL_GetSynciv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync, GLenum, GLsizei, GLsizei *, GLint *)), _gloffset_GetSynciv, parameters) +#define GET_GetSynciv(disp) GET_by_offset(disp, _gloffset_GetSynciv) +#define SET_GetSynciv(disp, fn) SET_by_offset(disp, _gloffset_GetSynciv, fn) +#define CALL_IsSync(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsync)), _gloffset_IsSync, parameters) +#define GET_IsSync(disp) GET_by_offset(disp, _gloffset_IsSync) +#define SET_IsSync(disp, fn) SET_by_offset(disp, _gloffset_IsSync, fn) +#define CALL_WaitSync(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync, GLbitfield, GLuint64)), _gloffset_WaitSync, parameters) +#define GET_WaitSync(disp) GET_by_offset(disp, _gloffset_WaitSync) +#define SET_WaitSync(disp, fn) SET_by_offset(disp, _gloffset_WaitSync, fn) +#define CALL_DrawElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLint)), _gloffset_DrawElementsBaseVertex, parameters) +#define GET_DrawElementsBaseVertex(disp) GET_by_offset(disp, _gloffset_DrawElementsBaseVertex) +#define SET_DrawElementsBaseVertex(disp, fn) SET_by_offset(disp, _gloffset_DrawElementsBaseVertex, fn) +#define CALL_DrawRangeElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *, GLint)), _gloffset_DrawRangeElementsBaseVertex, parameters) +#define GET_DrawRangeElementsBaseVertex(disp) GET_by_offset(disp, _gloffset_DrawRangeElementsBaseVertex) +#define SET_DrawRangeElementsBaseVertex(disp, fn) SET_by_offset(disp, _gloffset_DrawRangeElementsBaseVertex, fn) +#define CALL_MultiDrawElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei, const GLint *)), _gloffset_MultiDrawElementsBaseVertex, parameters) +#define GET_MultiDrawElementsBaseVertex(disp) GET_by_offset(disp, _gloffset_MultiDrawElementsBaseVertex) +#define SET_MultiDrawElementsBaseVertex(disp, fn) SET_by_offset(disp, _gloffset_MultiDrawElementsBaseVertex, fn) +#define CALL_BindTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindTransformFeedback, parameters) +#define GET_BindTransformFeedback(disp) GET_by_offset(disp, _gloffset_BindTransformFeedback) +#define SET_BindTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_BindTransformFeedback, fn) +#define CALL_DeleteTransformFeedbacks(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteTransformFeedbacks, parameters) +#define GET_DeleteTransformFeedbacks(disp) GET_by_offset(disp, _gloffset_DeleteTransformFeedbacks) +#define SET_DeleteTransformFeedbacks(disp, fn) SET_by_offset(disp, _gloffset_DeleteTransformFeedbacks, fn) +#define CALL_DrawTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_DrawTransformFeedback, parameters) +#define GET_DrawTransformFeedback(disp) GET_by_offset(disp, _gloffset_DrawTransformFeedback) +#define SET_DrawTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_DrawTransformFeedback, fn) +#define CALL_GenTransformFeedbacks(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenTransformFeedbacks, parameters) +#define GET_GenTransformFeedbacks(disp) GET_by_offset(disp, _gloffset_GenTransformFeedbacks) +#define SET_GenTransformFeedbacks(disp, fn) SET_by_offset(disp, _gloffset_GenTransformFeedbacks, fn) +#define CALL_IsTransformFeedback(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsTransformFeedback, parameters) +#define GET_IsTransformFeedback(disp) GET_by_offset(disp, _gloffset_IsTransformFeedback) +#define SET_IsTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_IsTransformFeedback, fn) +#define CALL_PauseTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PauseTransformFeedback, parameters) +#define GET_PauseTransformFeedback(disp) GET_by_offset(disp, _gloffset_PauseTransformFeedback) +#define SET_PauseTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_PauseTransformFeedback, fn) +#define CALL_ResumeTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_ResumeTransformFeedback, parameters) +#define GET_ResumeTransformFeedback(disp) GET_by_offset(disp, _gloffset_ResumeTransformFeedback) +#define SET_ResumeTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_ResumeTransformFeedback, fn) +#define CALL_PolygonOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_PolygonOffsetEXT, parameters) +#define GET_PolygonOffsetEXT(disp) GET_by_offset(disp, _gloffset_PolygonOffsetEXT) +#define SET_PolygonOffsetEXT(disp, fn) SET_by_offset(disp, _gloffset_PolygonOffsetEXT, fn) +#define CALL_GetPixelTexGenParameterfvSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), _gloffset_GetPixelTexGenParameterfvSGIS, parameters) +#define GET_GetPixelTexGenParameterfvSGIS(disp) GET_by_offset(disp, _gloffset_GetPixelTexGenParameterfvSGIS) +#define SET_GetPixelTexGenParameterfvSGIS(disp, fn) SET_by_offset(disp, _gloffset_GetPixelTexGenParameterfvSGIS, fn) +#define CALL_GetPixelTexGenParameterivSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), _gloffset_GetPixelTexGenParameterivSGIS, parameters) +#define GET_GetPixelTexGenParameterivSGIS(disp) GET_by_offset(disp, _gloffset_GetPixelTexGenParameterivSGIS) +#define SET_GetPixelTexGenParameterivSGIS(disp, fn) SET_by_offset(disp, _gloffset_GetPixelTexGenParameterivSGIS, fn) +#define CALL_PixelTexGenParameterfSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_PixelTexGenParameterfSGIS, parameters) +#define GET_PixelTexGenParameterfSGIS(disp) GET_by_offset(disp, _gloffset_PixelTexGenParameterfSGIS) +#define SET_PixelTexGenParameterfSGIS(disp, fn) SET_by_offset(disp, _gloffset_PixelTexGenParameterfSGIS, fn) +#define CALL_PixelTexGenParameterfvSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_PixelTexGenParameterfvSGIS, parameters) +#define GET_PixelTexGenParameterfvSGIS(disp) GET_by_offset(disp, _gloffset_PixelTexGenParameterfvSGIS) +#define SET_PixelTexGenParameterfvSGIS(disp, fn) SET_by_offset(disp, _gloffset_PixelTexGenParameterfvSGIS, fn) +#define CALL_PixelTexGenParameteriSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_PixelTexGenParameteriSGIS, parameters) +#define GET_PixelTexGenParameteriSGIS(disp) GET_by_offset(disp, _gloffset_PixelTexGenParameteriSGIS) +#define SET_PixelTexGenParameteriSGIS(disp, fn) SET_by_offset(disp, _gloffset_PixelTexGenParameteriSGIS, fn) +#define CALL_PixelTexGenParameterivSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_PixelTexGenParameterivSGIS, parameters) +#define GET_PixelTexGenParameterivSGIS(disp) GET_by_offset(disp, _gloffset_PixelTexGenParameterivSGIS) +#define SET_PixelTexGenParameterivSGIS(disp, fn) SET_by_offset(disp, _gloffset_PixelTexGenParameterivSGIS, fn) +#define CALL_SampleMaskSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLboolean)), _gloffset_SampleMaskSGIS, parameters) +#define GET_SampleMaskSGIS(disp) GET_by_offset(disp, _gloffset_SampleMaskSGIS) +#define SET_SampleMaskSGIS(disp, fn) SET_by_offset(disp, _gloffset_SampleMaskSGIS, fn) +#define CALL_SamplePatternSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_SamplePatternSGIS, parameters) +#define GET_SamplePatternSGIS(disp) GET_by_offset(disp, _gloffset_SamplePatternSGIS) +#define SET_SamplePatternSGIS(disp, fn) SET_by_offset(disp, _gloffset_SamplePatternSGIS, fn) +#define CALL_ColorPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), _gloffset_ColorPointerEXT, parameters) +#define GET_ColorPointerEXT(disp) GET_by_offset(disp, _gloffset_ColorPointerEXT) +#define SET_ColorPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_ColorPointerEXT, fn) +#define CALL_EdgeFlagPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLsizei, const GLboolean *)), _gloffset_EdgeFlagPointerEXT, parameters) +#define GET_EdgeFlagPointerEXT(disp) GET_by_offset(disp, _gloffset_EdgeFlagPointerEXT) +#define SET_EdgeFlagPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_EdgeFlagPointerEXT, fn) +#define CALL_IndexPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, const GLvoid *)), _gloffset_IndexPointerEXT, parameters) +#define GET_IndexPointerEXT(disp) GET_by_offset(disp, _gloffset_IndexPointerEXT) +#define SET_IndexPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_IndexPointerEXT, fn) +#define CALL_NormalPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, const GLvoid *)), _gloffset_NormalPointerEXT, parameters) +#define GET_NormalPointerEXT(disp) GET_by_offset(disp, _gloffset_NormalPointerEXT) +#define SET_NormalPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_NormalPointerEXT, fn) +#define CALL_TexCoordPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), _gloffset_TexCoordPointerEXT, parameters) +#define GET_TexCoordPointerEXT(disp) GET_by_offset(disp, _gloffset_TexCoordPointerEXT) +#define SET_TexCoordPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_TexCoordPointerEXT, fn) +#define CALL_VertexPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), _gloffset_VertexPointerEXT, parameters) +#define GET_VertexPointerEXT(disp) GET_by_offset(disp, _gloffset_VertexPointerEXT) +#define SET_VertexPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexPointerEXT, fn) +#define CALL_PointParameterfEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_PointParameterfEXT, parameters) +#define GET_PointParameterfEXT(disp) GET_by_offset(disp, _gloffset_PointParameterfEXT) +#define SET_PointParameterfEXT(disp, fn) SET_by_offset(disp, _gloffset_PointParameterfEXT, fn) +#define CALL_PointParameterfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_PointParameterfvEXT, parameters) +#define GET_PointParameterfvEXT(disp) GET_by_offset(disp, _gloffset_PointParameterfvEXT) +#define SET_PointParameterfvEXT(disp, fn) SET_by_offset(disp, _gloffset_PointParameterfvEXT, fn) +#define CALL_LockArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei)), _gloffset_LockArraysEXT, parameters) +#define GET_LockArraysEXT(disp) GET_by_offset(disp, _gloffset_LockArraysEXT) +#define SET_LockArraysEXT(disp, fn) SET_by_offset(disp, _gloffset_LockArraysEXT, fn) +#define CALL_UnlockArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_UnlockArraysEXT, parameters) +#define GET_UnlockArraysEXT(disp) GET_by_offset(disp, _gloffset_UnlockArraysEXT) +#define SET_UnlockArraysEXT(disp, fn) SET_by_offset(disp, _gloffset_UnlockArraysEXT, fn) +#define CALL_SecondaryColor3bEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte)), _gloffset_SecondaryColor3bEXT, parameters) +#define GET_SecondaryColor3bEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3bEXT) +#define SET_SecondaryColor3bEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3bEXT, fn) +#define CALL_SecondaryColor3bvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), _gloffset_SecondaryColor3bvEXT, parameters) +#define GET_SecondaryColor3bvEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3bvEXT) +#define SET_SecondaryColor3bvEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3bvEXT, fn) +#define CALL_SecondaryColor3dEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_SecondaryColor3dEXT, parameters) +#define GET_SecondaryColor3dEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3dEXT) +#define SET_SecondaryColor3dEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3dEXT, fn) +#define CALL_SecondaryColor3dvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_SecondaryColor3dvEXT, parameters) +#define GET_SecondaryColor3dvEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3dvEXT) +#define SET_SecondaryColor3dvEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3dvEXT, fn) +#define CALL_SecondaryColor3fEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_SecondaryColor3fEXT, parameters) +#define GET_SecondaryColor3fEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3fEXT) +#define SET_SecondaryColor3fEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3fEXT, fn) +#define CALL_SecondaryColor3fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_SecondaryColor3fvEXT, parameters) +#define GET_SecondaryColor3fvEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3fvEXT) +#define SET_SecondaryColor3fvEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3fvEXT, fn) +#define CALL_SecondaryColor3iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_SecondaryColor3iEXT, parameters) +#define GET_SecondaryColor3iEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3iEXT) +#define SET_SecondaryColor3iEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3iEXT, fn) +#define CALL_SecondaryColor3ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_SecondaryColor3ivEXT, parameters) +#define GET_SecondaryColor3ivEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3ivEXT) +#define SET_SecondaryColor3ivEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3ivEXT, fn) +#define CALL_SecondaryColor3sEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_SecondaryColor3sEXT, parameters) +#define GET_SecondaryColor3sEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3sEXT) +#define SET_SecondaryColor3sEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3sEXT, fn) +#define CALL_SecondaryColor3svEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_SecondaryColor3svEXT, parameters) +#define GET_SecondaryColor3svEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3svEXT) +#define SET_SecondaryColor3svEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3svEXT, fn) +#define CALL_SecondaryColor3ubEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte, GLubyte, GLubyte)), _gloffset_SecondaryColor3ubEXT, parameters) +#define GET_SecondaryColor3ubEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3ubEXT) +#define SET_SecondaryColor3ubEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3ubEXT, fn) +#define CALL_SecondaryColor3ubvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), _gloffset_SecondaryColor3ubvEXT, parameters) +#define GET_SecondaryColor3ubvEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3ubvEXT) +#define SET_SecondaryColor3ubvEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3ubvEXT, fn) +#define CALL_SecondaryColor3uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint)), _gloffset_SecondaryColor3uiEXT, parameters) +#define GET_SecondaryColor3uiEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3uiEXT) +#define SET_SecondaryColor3uiEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3uiEXT, fn) +#define CALL_SecondaryColor3uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLuint *)), _gloffset_SecondaryColor3uivEXT, parameters) +#define GET_SecondaryColor3uivEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3uivEXT) +#define SET_SecondaryColor3uivEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3uivEXT, fn) +#define CALL_SecondaryColor3usEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLushort, GLushort, GLushort)), _gloffset_SecondaryColor3usEXT, parameters) +#define GET_SecondaryColor3usEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3usEXT) +#define SET_SecondaryColor3usEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3usEXT, fn) +#define CALL_SecondaryColor3usvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLushort *)), _gloffset_SecondaryColor3usvEXT, parameters) +#define GET_SecondaryColor3usvEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3usvEXT) +#define SET_SecondaryColor3usvEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3usvEXT, fn) +#define CALL_SecondaryColorPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_SecondaryColorPointerEXT, parameters) +#define GET_SecondaryColorPointerEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColorPointerEXT) +#define SET_SecondaryColorPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColorPointerEXT, fn) +#define CALL_MultiDrawArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *, const GLsizei *, GLsizei)), _gloffset_MultiDrawArraysEXT, parameters) +#define GET_MultiDrawArraysEXT(disp) GET_by_offset(disp, _gloffset_MultiDrawArraysEXT) +#define SET_MultiDrawArraysEXT(disp, fn) SET_by_offset(disp, _gloffset_MultiDrawArraysEXT, fn) +#define CALL_MultiDrawElementsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei)), _gloffset_MultiDrawElementsEXT, parameters) +#define GET_MultiDrawElementsEXT(disp) GET_by_offset(disp, _gloffset_MultiDrawElementsEXT) +#define SET_MultiDrawElementsEXT(disp, fn) SET_by_offset(disp, _gloffset_MultiDrawElementsEXT, fn) +#define CALL_FogCoordPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), _gloffset_FogCoordPointerEXT, parameters) +#define GET_FogCoordPointerEXT(disp) GET_by_offset(disp, _gloffset_FogCoordPointerEXT) +#define SET_FogCoordPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_FogCoordPointerEXT, fn) +#define CALL_FogCoorddEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), _gloffset_FogCoorddEXT, parameters) +#define GET_FogCoorddEXT(disp) GET_by_offset(disp, _gloffset_FogCoorddEXT) +#define SET_FogCoorddEXT(disp, fn) SET_by_offset(disp, _gloffset_FogCoorddEXT, fn) +#define CALL_FogCoorddvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_FogCoorddvEXT, parameters) +#define GET_FogCoorddvEXT(disp) GET_by_offset(disp, _gloffset_FogCoorddvEXT) +#define SET_FogCoorddvEXT(disp, fn) SET_by_offset(disp, _gloffset_FogCoorddvEXT, fn) +#define CALL_FogCoordfEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_FogCoordfEXT, parameters) +#define GET_FogCoordfEXT(disp) GET_by_offset(disp, _gloffset_FogCoordfEXT) +#define SET_FogCoordfEXT(disp, fn) SET_by_offset(disp, _gloffset_FogCoordfEXT, fn) +#define CALL_FogCoordfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_FogCoordfvEXT, parameters) +#define GET_FogCoordfvEXT(disp) GET_by_offset(disp, _gloffset_FogCoordfvEXT) +#define SET_FogCoordfvEXT(disp, fn) SET_by_offset(disp, _gloffset_FogCoordfvEXT, fn) +#define CALL_PixelTexGenSGIX(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_PixelTexGenSGIX, parameters) +#define GET_PixelTexGenSGIX(disp) GET_by_offset(disp, _gloffset_PixelTexGenSGIX) +#define SET_PixelTexGenSGIX(disp, fn) SET_by_offset(disp, _gloffset_PixelTexGenSGIX, fn) +#define CALL_BlendFuncSeparateEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), _gloffset_BlendFuncSeparateEXT, parameters) +#define GET_BlendFuncSeparateEXT(disp) GET_by_offset(disp, _gloffset_BlendFuncSeparateEXT) +#define SET_BlendFuncSeparateEXT(disp, fn) SET_by_offset(disp, _gloffset_BlendFuncSeparateEXT, fn) +#define CALL_FlushVertexArrayRangeNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_FlushVertexArrayRangeNV, parameters) +#define GET_FlushVertexArrayRangeNV(disp) GET_by_offset(disp, _gloffset_FlushVertexArrayRangeNV) +#define SET_FlushVertexArrayRangeNV(disp, fn) SET_by_offset(disp, _gloffset_FlushVertexArrayRangeNV, fn) +#define CALL_VertexArrayRangeNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLvoid *)), _gloffset_VertexArrayRangeNV, parameters) +#define GET_VertexArrayRangeNV(disp) GET_by_offset(disp, _gloffset_VertexArrayRangeNV) +#define SET_VertexArrayRangeNV(disp, fn) SET_by_offset(disp, _gloffset_VertexArrayRangeNV, fn) +#define CALL_CombinerInputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum)), _gloffset_CombinerInputNV, parameters) +#define GET_CombinerInputNV(disp) GET_by_offset(disp, _gloffset_CombinerInputNV) +#define SET_CombinerInputNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerInputNV, fn) +#define CALL_CombinerOutputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean)), _gloffset_CombinerOutputNV, parameters) +#define GET_CombinerOutputNV(disp) GET_by_offset(disp, _gloffset_CombinerOutputNV) +#define SET_CombinerOutputNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerOutputNV, fn) +#define CALL_CombinerParameterfNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_CombinerParameterfNV, parameters) +#define GET_CombinerParameterfNV(disp) GET_by_offset(disp, _gloffset_CombinerParameterfNV) +#define SET_CombinerParameterfNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerParameterfNV, fn) +#define CALL_CombinerParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_CombinerParameterfvNV, parameters) +#define GET_CombinerParameterfvNV(disp) GET_by_offset(disp, _gloffset_CombinerParameterfvNV) +#define SET_CombinerParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerParameterfvNV, fn) +#define CALL_CombinerParameteriNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_CombinerParameteriNV, parameters) +#define GET_CombinerParameteriNV(disp) GET_by_offset(disp, _gloffset_CombinerParameteriNV) +#define SET_CombinerParameteriNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerParameteriNV, fn) +#define CALL_CombinerParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_CombinerParameterivNV, parameters) +#define GET_CombinerParameterivNV(disp) GET_by_offset(disp, _gloffset_CombinerParameterivNV) +#define SET_CombinerParameterivNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerParameterivNV, fn) +#define CALL_FinalCombinerInputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), _gloffset_FinalCombinerInputNV, parameters) +#define GET_FinalCombinerInputNV(disp) GET_by_offset(disp, _gloffset_FinalCombinerInputNV) +#define SET_FinalCombinerInputNV(disp, fn) SET_by_offset(disp, _gloffset_FinalCombinerInputNV, fn) +#define CALL_GetCombinerInputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLfloat *)), _gloffset_GetCombinerInputParameterfvNV, parameters) +#define GET_GetCombinerInputParameterfvNV(disp) GET_by_offset(disp, _gloffset_GetCombinerInputParameterfvNV) +#define SET_GetCombinerInputParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetCombinerInputParameterfvNV, fn) +#define CALL_GetCombinerInputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLint *)), _gloffset_GetCombinerInputParameterivNV, parameters) +#define GET_GetCombinerInputParameterivNV(disp) GET_by_offset(disp, _gloffset_GetCombinerInputParameterivNV) +#define SET_GetCombinerInputParameterivNV(disp, fn) SET_by_offset(disp, _gloffset_GetCombinerInputParameterivNV, fn) +#define CALL_GetCombinerOutputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLfloat *)), _gloffset_GetCombinerOutputParameterfvNV, parameters) +#define GET_GetCombinerOutputParameterfvNV(disp) GET_by_offset(disp, _gloffset_GetCombinerOutputParameterfvNV) +#define SET_GetCombinerOutputParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetCombinerOutputParameterfvNV, fn) +#define CALL_GetCombinerOutputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLint *)), _gloffset_GetCombinerOutputParameterivNV, parameters) +#define GET_GetCombinerOutputParameterivNV(disp) GET_by_offset(disp, _gloffset_GetCombinerOutputParameterivNV) +#define SET_GetCombinerOutputParameterivNV(disp, fn) SET_by_offset(disp, _gloffset_GetCombinerOutputParameterivNV, fn) +#define CALL_GetFinalCombinerInputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetFinalCombinerInputParameterfvNV, parameters) +#define GET_GetFinalCombinerInputParameterfvNV(disp) GET_by_offset(disp, _gloffset_GetFinalCombinerInputParameterfvNV) +#define SET_GetFinalCombinerInputParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetFinalCombinerInputParameterfvNV, fn) +#define CALL_GetFinalCombinerInputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetFinalCombinerInputParameterivNV, parameters) +#define GET_GetFinalCombinerInputParameterivNV(disp) GET_by_offset(disp, _gloffset_GetFinalCombinerInputParameterivNV) +#define SET_GetFinalCombinerInputParameterivNV(disp, fn) SET_by_offset(disp, _gloffset_GetFinalCombinerInputParameterivNV, fn) +#define CALL_ResizeBuffersMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_ResizeBuffersMESA, parameters) +#define GET_ResizeBuffersMESA(disp) GET_by_offset(disp, _gloffset_ResizeBuffersMESA) +#define SET_ResizeBuffersMESA(disp, fn) SET_by_offset(disp, _gloffset_ResizeBuffersMESA, fn) +#define CALL_WindowPos2dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), _gloffset_WindowPos2dMESA, parameters) +#define GET_WindowPos2dMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2dMESA) +#define SET_WindowPos2dMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2dMESA, fn) +#define CALL_WindowPos2dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_WindowPos2dvMESA, parameters) +#define GET_WindowPos2dvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2dvMESA) +#define SET_WindowPos2dvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2dvMESA, fn) +#define CALL_WindowPos2fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_WindowPos2fMESA, parameters) +#define GET_WindowPos2fMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2fMESA) +#define SET_WindowPos2fMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2fMESA, fn) +#define CALL_WindowPos2fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_WindowPos2fvMESA, parameters) +#define GET_WindowPos2fvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2fvMESA) +#define SET_WindowPos2fvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2fvMESA, fn) +#define CALL_WindowPos2iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_WindowPos2iMESA, parameters) +#define GET_WindowPos2iMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2iMESA) +#define SET_WindowPos2iMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2iMESA, fn) +#define CALL_WindowPos2ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_WindowPos2ivMESA, parameters) +#define GET_WindowPos2ivMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2ivMESA) +#define SET_WindowPos2ivMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2ivMESA, fn) +#define CALL_WindowPos2sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), _gloffset_WindowPos2sMESA, parameters) +#define GET_WindowPos2sMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2sMESA) +#define SET_WindowPos2sMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2sMESA, fn) +#define CALL_WindowPos2svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_WindowPos2svMESA, parameters) +#define GET_WindowPos2svMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2svMESA) +#define SET_WindowPos2svMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2svMESA, fn) +#define CALL_WindowPos3dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_WindowPos3dMESA, parameters) +#define GET_WindowPos3dMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3dMESA) +#define SET_WindowPos3dMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3dMESA, fn) +#define CALL_WindowPos3dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_WindowPos3dvMESA, parameters) +#define GET_WindowPos3dvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3dvMESA) +#define SET_WindowPos3dvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3dvMESA, fn) +#define CALL_WindowPos3fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_WindowPos3fMESA, parameters) +#define GET_WindowPos3fMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3fMESA) +#define SET_WindowPos3fMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3fMESA, fn) +#define CALL_WindowPos3fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_WindowPos3fvMESA, parameters) +#define GET_WindowPos3fvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3fvMESA) +#define SET_WindowPos3fvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3fvMESA, fn) +#define CALL_WindowPos3iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_WindowPos3iMESA, parameters) +#define GET_WindowPos3iMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3iMESA) +#define SET_WindowPos3iMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3iMESA, fn) +#define CALL_WindowPos3ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_WindowPos3ivMESA, parameters) +#define GET_WindowPos3ivMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3ivMESA) +#define SET_WindowPos3ivMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3ivMESA, fn) +#define CALL_WindowPos3sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_WindowPos3sMESA, parameters) +#define GET_WindowPos3sMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3sMESA) +#define SET_WindowPos3sMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3sMESA, fn) +#define CALL_WindowPos3svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_WindowPos3svMESA, parameters) +#define GET_WindowPos3svMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3svMESA) +#define SET_WindowPos3svMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3svMESA, fn) +#define CALL_WindowPos4dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_WindowPos4dMESA, parameters) +#define GET_WindowPos4dMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4dMESA) +#define SET_WindowPos4dMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4dMESA, fn) +#define CALL_WindowPos4dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_WindowPos4dvMESA, parameters) +#define GET_WindowPos4dvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4dvMESA) +#define SET_WindowPos4dvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4dvMESA, fn) +#define CALL_WindowPos4fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_WindowPos4fMESA, parameters) +#define GET_WindowPos4fMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4fMESA) +#define SET_WindowPos4fMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4fMESA, fn) +#define CALL_WindowPos4fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_WindowPos4fvMESA, parameters) +#define GET_WindowPos4fvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4fvMESA) +#define SET_WindowPos4fvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4fvMESA, fn) +#define CALL_WindowPos4iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_WindowPos4iMESA, parameters) +#define GET_WindowPos4iMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4iMESA) +#define SET_WindowPos4iMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4iMESA, fn) +#define CALL_WindowPos4ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_WindowPos4ivMESA, parameters) +#define GET_WindowPos4ivMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4ivMESA) +#define SET_WindowPos4ivMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4ivMESA, fn) +#define CALL_WindowPos4sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_WindowPos4sMESA, parameters) +#define GET_WindowPos4sMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4sMESA) +#define SET_WindowPos4sMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4sMESA, fn) +#define CALL_WindowPos4svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_WindowPos4svMESA, parameters) +#define GET_WindowPos4svMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4svMESA) +#define SET_WindowPos4svMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4svMESA, fn) +#define CALL_MultiModeDrawArraysIBM(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint)), _gloffset_MultiModeDrawArraysIBM, parameters) +#define GET_MultiModeDrawArraysIBM(disp) GET_by_offset(disp, _gloffset_MultiModeDrawArraysIBM) +#define SET_MultiModeDrawArraysIBM(disp, fn) SET_by_offset(disp, _gloffset_MultiModeDrawArraysIBM, fn) +#define CALL_MultiModeDrawElementsIBM(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLenum *, const GLsizei *, GLenum, const GLvoid * const *, GLsizei, GLint)), _gloffset_MultiModeDrawElementsIBM, parameters) +#define GET_MultiModeDrawElementsIBM(disp) GET_by_offset(disp, _gloffset_MultiModeDrawElementsIBM) +#define SET_MultiModeDrawElementsIBM(disp, fn) SET_by_offset(disp, _gloffset_MultiModeDrawElementsIBM, fn) +#define CALL_DeleteFencesNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteFencesNV, parameters) +#define GET_DeleteFencesNV(disp) GET_by_offset(disp, _gloffset_DeleteFencesNV) +#define SET_DeleteFencesNV(disp, fn) SET_by_offset(disp, _gloffset_DeleteFencesNV, fn) +#define CALL_FinishFenceNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_FinishFenceNV, parameters) +#define GET_FinishFenceNV(disp) GET_by_offset(disp, _gloffset_FinishFenceNV) +#define SET_FinishFenceNV(disp, fn) SET_by_offset(disp, _gloffset_FinishFenceNV, fn) +#define CALL_GenFencesNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenFencesNV, parameters) +#define GET_GenFencesNV(disp) GET_by_offset(disp, _gloffset_GenFencesNV) +#define SET_GenFencesNV(disp, fn) SET_by_offset(disp, _gloffset_GenFencesNV, fn) +#define CALL_GetFenceivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetFenceivNV, parameters) +#define GET_GetFenceivNV(disp) GET_by_offset(disp, _gloffset_GetFenceivNV) +#define SET_GetFenceivNV(disp, fn) SET_by_offset(disp, _gloffset_GetFenceivNV, fn) +#define CALL_IsFenceNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsFenceNV, parameters) +#define GET_IsFenceNV(disp) GET_by_offset(disp, _gloffset_IsFenceNV) +#define SET_IsFenceNV(disp, fn) SET_by_offset(disp, _gloffset_IsFenceNV, fn) +#define CALL_SetFenceNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), _gloffset_SetFenceNV, parameters) +#define GET_SetFenceNV(disp) GET_by_offset(disp, _gloffset_SetFenceNV) +#define SET_SetFenceNV(disp, fn) SET_by_offset(disp, _gloffset_SetFenceNV, fn) +#define CALL_TestFenceNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_TestFenceNV, parameters) +#define GET_TestFenceNV(disp) GET_by_offset(disp, _gloffset_TestFenceNV) +#define SET_TestFenceNV(disp, fn) SET_by_offset(disp, _gloffset_TestFenceNV, fn) +#define CALL_AreProgramsResidentNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsizei, const GLuint *, GLboolean *)), _gloffset_AreProgramsResidentNV, parameters) +#define GET_AreProgramsResidentNV(disp) GET_by_offset(disp, _gloffset_AreProgramsResidentNV) +#define SET_AreProgramsResidentNV(disp, fn) SET_by_offset(disp, _gloffset_AreProgramsResidentNV, fn) +#define CALL_BindProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindProgramNV, parameters) +#define GET_BindProgramNV(disp) GET_by_offset(disp, _gloffset_BindProgramNV) +#define SET_BindProgramNV(disp, fn) SET_by_offset(disp, _gloffset_BindProgramNV, fn) +#define CALL_DeleteProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteProgramsNV, parameters) +#define GET_DeleteProgramsNV(disp) GET_by_offset(disp, _gloffset_DeleteProgramsNV) +#define SET_DeleteProgramsNV(disp, fn) SET_by_offset(disp, _gloffset_DeleteProgramsNV, fn) +#define CALL_ExecuteProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), _gloffset_ExecuteProgramNV, parameters) +#define GET_ExecuteProgramNV(disp) GET_by_offset(disp, _gloffset_ExecuteProgramNV) +#define SET_ExecuteProgramNV(disp, fn) SET_by_offset(disp, _gloffset_ExecuteProgramNV, fn) +#define CALL_GenProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenProgramsNV, parameters) +#define GET_GenProgramsNV(disp) GET_by_offset(disp, _gloffset_GenProgramsNV) +#define SET_GenProgramsNV(disp, fn) SET_by_offset(disp, _gloffset_GenProgramsNV, fn) +#define CALL_GetProgramParameterdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLdouble *)), _gloffset_GetProgramParameterdvNV, parameters) +#define GET_GetProgramParameterdvNV(disp) GET_by_offset(disp, _gloffset_GetProgramParameterdvNV) +#define SET_GetProgramParameterdvNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramParameterdvNV, fn) +#define CALL_GetProgramParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLfloat *)), _gloffset_GetProgramParameterfvNV, parameters) +#define GET_GetProgramParameterfvNV(disp) GET_by_offset(disp, _gloffset_GetProgramParameterfvNV) +#define SET_GetProgramParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramParameterfvNV, fn) +#define CALL_GetProgramStringNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLubyte *)), _gloffset_GetProgramStringNV, parameters) +#define GET_GetProgramStringNV(disp) GET_by_offset(disp, _gloffset_GetProgramStringNV) +#define SET_GetProgramStringNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramStringNV, fn) +#define CALL_GetProgramivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetProgramivNV, parameters) +#define GET_GetProgramivNV(disp) GET_by_offset(disp, _gloffset_GetProgramivNV) +#define SET_GetProgramivNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramivNV, fn) +#define CALL_GetTrackMatrixivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLint *)), _gloffset_GetTrackMatrixivNV, parameters) +#define GET_GetTrackMatrixivNV(disp) GET_by_offset(disp, _gloffset_GetTrackMatrixivNV) +#define SET_GetTrackMatrixivNV(disp, fn) SET_by_offset(disp, _gloffset_GetTrackMatrixivNV, fn) +#define CALL_GetVertexAttribPointervNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLvoid **)), _gloffset_GetVertexAttribPointervNV, parameters) +#define GET_GetVertexAttribPointervNV(disp) GET_by_offset(disp, _gloffset_GetVertexAttribPointervNV) +#define SET_GetVertexAttribPointervNV(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribPointervNV, fn) +#define CALL_GetVertexAttribdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLdouble *)), _gloffset_GetVertexAttribdvNV, parameters) +#define GET_GetVertexAttribdvNV(disp) GET_by_offset(disp, _gloffset_GetVertexAttribdvNV) +#define SET_GetVertexAttribdvNV(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribdvNV, fn) +#define CALL_GetVertexAttribfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), _gloffset_GetVertexAttribfvNV, parameters) +#define GET_GetVertexAttribfvNV(disp) GET_by_offset(disp, _gloffset_GetVertexAttribfvNV) +#define SET_GetVertexAttribfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribfvNV, fn) +#define CALL_GetVertexAttribivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetVertexAttribivNV, parameters) +#define GET_GetVertexAttribivNV(disp) GET_by_offset(disp, _gloffset_GetVertexAttribivNV) +#define SET_GetVertexAttribivNV(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribivNV, fn) +#define CALL_IsProgramNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsProgramNV, parameters) +#define GET_IsProgramNV(disp) GET_by_offset(disp, _gloffset_IsProgramNV) +#define SET_IsProgramNV(disp, fn) SET_by_offset(disp, _gloffset_IsProgramNV, fn) +#define CALL_LoadProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLubyte *)), _gloffset_LoadProgramNV, parameters) +#define GET_LoadProgramNV(disp) GET_by_offset(disp, _gloffset_LoadProgramNV) +#define SET_LoadProgramNV(disp, fn) SET_by_offset(disp, _gloffset_LoadProgramNV, fn) +#define CALL_ProgramParameters4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLdouble *)), _gloffset_ProgramParameters4dvNV, parameters) +#define GET_ProgramParameters4dvNV(disp) GET_by_offset(disp, _gloffset_ProgramParameters4dvNV) +#define SET_ProgramParameters4dvNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramParameters4dvNV, fn) +#define CALL_ProgramParameters4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), _gloffset_ProgramParameters4fvNV, parameters) +#define GET_ProgramParameters4fvNV(disp) GET_by_offset(disp, _gloffset_ProgramParameters4fvNV) +#define SET_ProgramParameters4fvNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramParameters4fvNV, fn) +#define CALL_RequestResidentProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_RequestResidentProgramsNV, parameters) +#define GET_RequestResidentProgramsNV(disp) GET_by_offset(disp, _gloffset_RequestResidentProgramsNV) +#define SET_RequestResidentProgramsNV(disp, fn) SET_by_offset(disp, _gloffset_RequestResidentProgramsNV, fn) +#define CALL_TrackMatrixNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLenum)), _gloffset_TrackMatrixNV, parameters) +#define GET_TrackMatrixNV(disp) GET_by_offset(disp, _gloffset_TrackMatrixNV) +#define SET_TrackMatrixNV(disp, fn) SET_by_offset(disp, _gloffset_TrackMatrixNV, fn) +#define CALL_VertexAttrib1dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble)), _gloffset_VertexAttrib1dNV, parameters) +#define GET_VertexAttrib1dNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1dNV) +#define SET_VertexAttrib1dNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1dNV, fn) +#define CALL_VertexAttrib1dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib1dvNV, parameters) +#define GET_VertexAttrib1dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1dvNV) +#define SET_VertexAttrib1dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1dvNV, fn) +#define CALL_VertexAttrib1fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat)), _gloffset_VertexAttrib1fNV, parameters) +#define GET_VertexAttrib1fNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1fNV) +#define SET_VertexAttrib1fNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1fNV, fn) +#define CALL_VertexAttrib1fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib1fvNV, parameters) +#define GET_VertexAttrib1fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1fvNV) +#define SET_VertexAttrib1fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1fvNV, fn) +#define CALL_VertexAttrib1sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort)), _gloffset_VertexAttrib1sNV, parameters) +#define GET_VertexAttrib1sNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1sNV) +#define SET_VertexAttrib1sNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1sNV, fn) +#define CALL_VertexAttrib1svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib1svNV, parameters) +#define GET_VertexAttrib1svNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1svNV) +#define SET_VertexAttrib1svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1svNV, fn) +#define CALL_VertexAttrib2dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble)), _gloffset_VertexAttrib2dNV, parameters) +#define GET_VertexAttrib2dNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2dNV) +#define SET_VertexAttrib2dNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2dNV, fn) +#define CALL_VertexAttrib2dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib2dvNV, parameters) +#define GET_VertexAttrib2dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2dvNV) +#define SET_VertexAttrib2dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2dvNV, fn) +#define CALL_VertexAttrib2fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat)), _gloffset_VertexAttrib2fNV, parameters) +#define GET_VertexAttrib2fNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2fNV) +#define SET_VertexAttrib2fNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2fNV, fn) +#define CALL_VertexAttrib2fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib2fvNV, parameters) +#define GET_VertexAttrib2fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2fvNV) +#define SET_VertexAttrib2fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2fvNV, fn) +#define CALL_VertexAttrib2sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort)), _gloffset_VertexAttrib2sNV, parameters) +#define GET_VertexAttrib2sNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2sNV) +#define SET_VertexAttrib2sNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2sNV, fn) +#define CALL_VertexAttrib2svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib2svNV, parameters) +#define GET_VertexAttrib2svNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2svNV) +#define SET_VertexAttrib2svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2svNV, fn) +#define CALL_VertexAttrib3dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble)), _gloffset_VertexAttrib3dNV, parameters) +#define GET_VertexAttrib3dNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3dNV) +#define SET_VertexAttrib3dNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3dNV, fn) +#define CALL_VertexAttrib3dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib3dvNV, parameters) +#define GET_VertexAttrib3dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3dvNV) +#define SET_VertexAttrib3dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3dvNV, fn) +#define CALL_VertexAttrib3fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat)), _gloffset_VertexAttrib3fNV, parameters) +#define GET_VertexAttrib3fNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3fNV) +#define SET_VertexAttrib3fNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3fNV, fn) +#define CALL_VertexAttrib3fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib3fvNV, parameters) +#define GET_VertexAttrib3fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3fvNV) +#define SET_VertexAttrib3fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3fvNV, fn) +#define CALL_VertexAttrib3sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort)), _gloffset_VertexAttrib3sNV, parameters) +#define GET_VertexAttrib3sNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3sNV) +#define SET_VertexAttrib3sNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3sNV, fn) +#define CALL_VertexAttrib3svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib3svNV, parameters) +#define GET_VertexAttrib3svNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3svNV) +#define SET_VertexAttrib3svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3svNV, fn) +#define CALL_VertexAttrib4dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_VertexAttrib4dNV, parameters) +#define GET_VertexAttrib4dNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4dNV) +#define SET_VertexAttrib4dNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4dNV, fn) +#define CALL_VertexAttrib4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib4dvNV, parameters) +#define GET_VertexAttrib4dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4dvNV) +#define SET_VertexAttrib4dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4dvNV, fn) +#define CALL_VertexAttrib4fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_VertexAttrib4fNV, parameters) +#define GET_VertexAttrib4fNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4fNV) +#define SET_VertexAttrib4fNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4fNV, fn) +#define CALL_VertexAttrib4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib4fvNV, parameters) +#define GET_VertexAttrib4fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4fvNV) +#define SET_VertexAttrib4fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4fvNV, fn) +#define CALL_VertexAttrib4sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort, GLshort)), _gloffset_VertexAttrib4sNV, parameters) +#define GET_VertexAttrib4sNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4sNV) +#define SET_VertexAttrib4sNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4sNV, fn) +#define CALL_VertexAttrib4svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib4svNV, parameters) +#define GET_VertexAttrib4svNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4svNV) +#define SET_VertexAttrib4svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4svNV, fn) +#define CALL_VertexAttrib4ubNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte)), _gloffset_VertexAttrib4ubNV, parameters) +#define GET_VertexAttrib4ubNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4ubNV) +#define SET_VertexAttrib4ubNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4ubNV, fn) +#define CALL_VertexAttrib4ubvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), _gloffset_VertexAttrib4ubvNV, parameters) +#define GET_VertexAttrib4ubvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4ubvNV) +#define SET_VertexAttrib4ubvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4ubvNV, fn) +#define CALL_VertexAttribPointerNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_VertexAttribPointerNV, parameters) +#define GET_VertexAttribPointerNV(disp) GET_by_offset(disp, _gloffset_VertexAttribPointerNV) +#define SET_VertexAttribPointerNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribPointerNV, fn) +#define CALL_VertexAttribs1dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), _gloffset_VertexAttribs1dvNV, parameters) +#define GET_VertexAttribs1dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs1dvNV) +#define SET_VertexAttribs1dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs1dvNV, fn) +#define CALL_VertexAttribs1fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), _gloffset_VertexAttribs1fvNV, parameters) +#define GET_VertexAttribs1fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs1fvNV) +#define SET_VertexAttribs1fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs1fvNV, fn) +#define CALL_VertexAttribs1svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), _gloffset_VertexAttribs1svNV, parameters) +#define GET_VertexAttribs1svNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs1svNV) +#define SET_VertexAttribs1svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs1svNV, fn) +#define CALL_VertexAttribs2dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), _gloffset_VertexAttribs2dvNV, parameters) +#define GET_VertexAttribs2dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs2dvNV) +#define SET_VertexAttribs2dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs2dvNV, fn) +#define CALL_VertexAttribs2fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), _gloffset_VertexAttribs2fvNV, parameters) +#define GET_VertexAttribs2fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs2fvNV) +#define SET_VertexAttribs2fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs2fvNV, fn) +#define CALL_VertexAttribs2svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), _gloffset_VertexAttribs2svNV, parameters) +#define GET_VertexAttribs2svNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs2svNV) +#define SET_VertexAttribs2svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs2svNV, fn) +#define CALL_VertexAttribs3dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), _gloffset_VertexAttribs3dvNV, parameters) +#define GET_VertexAttribs3dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs3dvNV) +#define SET_VertexAttribs3dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs3dvNV, fn) +#define CALL_VertexAttribs3fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), _gloffset_VertexAttribs3fvNV, parameters) +#define GET_VertexAttribs3fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs3fvNV) +#define SET_VertexAttribs3fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs3fvNV, fn) +#define CALL_VertexAttribs3svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), _gloffset_VertexAttribs3svNV, parameters) +#define GET_VertexAttribs3svNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs3svNV) +#define SET_VertexAttribs3svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs3svNV, fn) +#define CALL_VertexAttribs4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), _gloffset_VertexAttribs4dvNV, parameters) +#define GET_VertexAttribs4dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs4dvNV) +#define SET_VertexAttribs4dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs4dvNV, fn) +#define CALL_VertexAttribs4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), _gloffset_VertexAttribs4fvNV, parameters) +#define GET_VertexAttribs4fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs4fvNV) +#define SET_VertexAttribs4fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs4fvNV, fn) +#define CALL_VertexAttribs4svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), _gloffset_VertexAttribs4svNV, parameters) +#define GET_VertexAttribs4svNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs4svNV) +#define SET_VertexAttribs4svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs4svNV, fn) +#define CALL_VertexAttribs4ubvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *)), _gloffset_VertexAttribs4ubvNV, parameters) +#define GET_VertexAttribs4ubvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs4ubvNV) +#define SET_VertexAttribs4ubvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs4ubvNV, fn) +#define CALL_GetTexBumpParameterfvATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), _gloffset_GetTexBumpParameterfvATI, parameters) +#define GET_GetTexBumpParameterfvATI(disp) GET_by_offset(disp, _gloffset_GetTexBumpParameterfvATI) +#define SET_GetTexBumpParameterfvATI(disp, fn) SET_by_offset(disp, _gloffset_GetTexBumpParameterfvATI, fn) +#define CALL_GetTexBumpParameterivATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), _gloffset_GetTexBumpParameterivATI, parameters) +#define GET_GetTexBumpParameterivATI(disp) GET_by_offset(disp, _gloffset_GetTexBumpParameterivATI) +#define SET_GetTexBumpParameterivATI(disp, fn) SET_by_offset(disp, _gloffset_GetTexBumpParameterivATI, fn) +#define CALL_TexBumpParameterfvATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_TexBumpParameterfvATI, parameters) +#define GET_TexBumpParameterfvATI(disp) GET_by_offset(disp, _gloffset_TexBumpParameterfvATI) +#define SET_TexBumpParameterfvATI(disp, fn) SET_by_offset(disp, _gloffset_TexBumpParameterfvATI, fn) +#define CALL_TexBumpParameterivATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_TexBumpParameterivATI, parameters) +#define GET_TexBumpParameterivATI(disp) GET_by_offset(disp, _gloffset_TexBumpParameterivATI) +#define SET_TexBumpParameterivATI(disp, fn) SET_by_offset(disp, _gloffset_TexBumpParameterivATI, fn) +#define CALL_AlphaFragmentOp1ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_AlphaFragmentOp1ATI, parameters) +#define GET_AlphaFragmentOp1ATI(disp) GET_by_offset(disp, _gloffset_AlphaFragmentOp1ATI) +#define SET_AlphaFragmentOp1ATI(disp, fn) SET_by_offset(disp, _gloffset_AlphaFragmentOp1ATI, fn) +#define CALL_AlphaFragmentOp2ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_AlphaFragmentOp2ATI, parameters) +#define GET_AlphaFragmentOp2ATI(disp) GET_by_offset(disp, _gloffset_AlphaFragmentOp2ATI) +#define SET_AlphaFragmentOp2ATI(disp, fn) SET_by_offset(disp, _gloffset_AlphaFragmentOp2ATI, fn) +#define CALL_AlphaFragmentOp3ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_AlphaFragmentOp3ATI, parameters) +#define GET_AlphaFragmentOp3ATI(disp) GET_by_offset(disp, _gloffset_AlphaFragmentOp3ATI) +#define SET_AlphaFragmentOp3ATI(disp, fn) SET_by_offset(disp, _gloffset_AlphaFragmentOp3ATI, fn) +#define CALL_BeginFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_BeginFragmentShaderATI, parameters) +#define GET_BeginFragmentShaderATI(disp) GET_by_offset(disp, _gloffset_BeginFragmentShaderATI) +#define SET_BeginFragmentShaderATI(disp, fn) SET_by_offset(disp, _gloffset_BeginFragmentShaderATI, fn) +#define CALL_BindFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_BindFragmentShaderATI, parameters) +#define GET_BindFragmentShaderATI(disp) GET_by_offset(disp, _gloffset_BindFragmentShaderATI) +#define SET_BindFragmentShaderATI(disp, fn) SET_by_offset(disp, _gloffset_BindFragmentShaderATI, fn) +#define CALL_ColorFragmentOp1ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_ColorFragmentOp1ATI, parameters) +#define GET_ColorFragmentOp1ATI(disp) GET_by_offset(disp, _gloffset_ColorFragmentOp1ATI) +#define SET_ColorFragmentOp1ATI(disp, fn) SET_by_offset(disp, _gloffset_ColorFragmentOp1ATI, fn) +#define CALL_ColorFragmentOp2ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_ColorFragmentOp2ATI, parameters) +#define GET_ColorFragmentOp2ATI(disp) GET_by_offset(disp, _gloffset_ColorFragmentOp2ATI) +#define SET_ColorFragmentOp2ATI(disp, fn) SET_by_offset(disp, _gloffset_ColorFragmentOp2ATI, fn) +#define CALL_ColorFragmentOp3ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_ColorFragmentOp3ATI, parameters) +#define GET_ColorFragmentOp3ATI(disp) GET_by_offset(disp, _gloffset_ColorFragmentOp3ATI) +#define SET_ColorFragmentOp3ATI(disp, fn) SET_by_offset(disp, _gloffset_ColorFragmentOp3ATI, fn) +#define CALL_DeleteFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_DeleteFragmentShaderATI, parameters) +#define GET_DeleteFragmentShaderATI(disp) GET_by_offset(disp, _gloffset_DeleteFragmentShaderATI) +#define SET_DeleteFragmentShaderATI(disp, fn) SET_by_offset(disp, _gloffset_DeleteFragmentShaderATI, fn) +#define CALL_EndFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_EndFragmentShaderATI, parameters) +#define GET_EndFragmentShaderATI(disp) GET_by_offset(disp, _gloffset_EndFragmentShaderATI) +#define SET_EndFragmentShaderATI(disp, fn) SET_by_offset(disp, _gloffset_EndFragmentShaderATI, fn) +#define CALL_GenFragmentShadersATI(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLuint)), _gloffset_GenFragmentShadersATI, parameters) +#define GET_GenFragmentShadersATI(disp) GET_by_offset(disp, _gloffset_GenFragmentShadersATI) +#define SET_GenFragmentShadersATI(disp, fn) SET_by_offset(disp, _gloffset_GenFragmentShadersATI, fn) +#define CALL_PassTexCoordATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLenum)), _gloffset_PassTexCoordATI, parameters) +#define GET_PassTexCoordATI(disp) GET_by_offset(disp, _gloffset_PassTexCoordATI) +#define SET_PassTexCoordATI(disp, fn) SET_by_offset(disp, _gloffset_PassTexCoordATI, fn) +#define CALL_SampleMapATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLenum)), _gloffset_SampleMapATI, parameters) +#define GET_SampleMapATI(disp) GET_by_offset(disp, _gloffset_SampleMapATI) +#define SET_SampleMapATI(disp, fn) SET_by_offset(disp, _gloffset_SampleMapATI, fn) +#define CALL_SetFragmentShaderConstantATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_SetFragmentShaderConstantATI, parameters) +#define GET_SetFragmentShaderConstantATI(disp) GET_by_offset(disp, _gloffset_SetFragmentShaderConstantATI) +#define SET_SetFragmentShaderConstantATI(disp, fn) SET_by_offset(disp, _gloffset_SetFragmentShaderConstantATI, fn) +#define CALL_PointParameteriNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_PointParameteriNV, parameters) +#define GET_PointParameteriNV(disp) GET_by_offset(disp, _gloffset_PointParameteriNV) +#define SET_PointParameteriNV(disp, fn) SET_by_offset(disp, _gloffset_PointParameteriNV, fn) +#define CALL_PointParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_PointParameterivNV, parameters) +#define GET_PointParameterivNV(disp) GET_by_offset(disp, _gloffset_PointParameterivNV) +#define SET_PointParameterivNV(disp, fn) SET_by_offset(disp, _gloffset_PointParameterivNV, fn) +#define CALL_ActiveStencilFaceEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ActiveStencilFaceEXT, parameters) +#define GET_ActiveStencilFaceEXT(disp) GET_by_offset(disp, _gloffset_ActiveStencilFaceEXT) +#define SET_ActiveStencilFaceEXT(disp, fn) SET_by_offset(disp, _gloffset_ActiveStencilFaceEXT, fn) +#define CALL_BindVertexArrayAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_BindVertexArrayAPPLE, parameters) +#define GET_BindVertexArrayAPPLE(disp) GET_by_offset(disp, _gloffset_BindVertexArrayAPPLE) +#define SET_BindVertexArrayAPPLE(disp, fn) SET_by_offset(disp, _gloffset_BindVertexArrayAPPLE, fn) +#define CALL_DeleteVertexArraysAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteVertexArraysAPPLE, parameters) +#define GET_DeleteVertexArraysAPPLE(disp) GET_by_offset(disp, _gloffset_DeleteVertexArraysAPPLE) +#define SET_DeleteVertexArraysAPPLE(disp, fn) SET_by_offset(disp, _gloffset_DeleteVertexArraysAPPLE, fn) +#define CALL_GenVertexArraysAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenVertexArraysAPPLE, parameters) +#define GET_GenVertexArraysAPPLE(disp) GET_by_offset(disp, _gloffset_GenVertexArraysAPPLE) +#define SET_GenVertexArraysAPPLE(disp, fn) SET_by_offset(disp, _gloffset_GenVertexArraysAPPLE, fn) +#define CALL_IsVertexArrayAPPLE(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsVertexArrayAPPLE, parameters) +#define GET_IsVertexArrayAPPLE(disp) GET_by_offset(disp, _gloffset_IsVertexArrayAPPLE) +#define SET_IsVertexArrayAPPLE(disp, fn) SET_by_offset(disp, _gloffset_IsVertexArrayAPPLE, fn) +#define CALL_GetProgramNamedParameterdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLdouble *)), _gloffset_GetProgramNamedParameterdvNV, parameters) +#define GET_GetProgramNamedParameterdvNV(disp) GET_by_offset(disp, _gloffset_GetProgramNamedParameterdvNV) +#define SET_GetProgramNamedParameterdvNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramNamedParameterdvNV, fn) +#define CALL_GetProgramNamedParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLfloat *)), _gloffset_GetProgramNamedParameterfvNV, parameters) +#define GET_GetProgramNamedParameterfvNV(disp) GET_by_offset(disp, _gloffset_GetProgramNamedParameterfvNV) +#define SET_GetProgramNamedParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramNamedParameterfvNV, fn) +#define CALL_ProgramNamedParameter4dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_ProgramNamedParameter4dNV, parameters) +#define GET_ProgramNamedParameter4dNV(disp) GET_by_offset(disp, _gloffset_ProgramNamedParameter4dNV) +#define SET_ProgramNamedParameter4dNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramNamedParameter4dNV, fn) +#define CALL_ProgramNamedParameter4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, const GLdouble *)), _gloffset_ProgramNamedParameter4dvNV, parameters) +#define GET_ProgramNamedParameter4dvNV(disp) GET_by_offset(disp, _gloffset_ProgramNamedParameter4dvNV) +#define SET_ProgramNamedParameter4dvNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramNamedParameter4dvNV, fn) +#define CALL_ProgramNamedParameter4fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_ProgramNamedParameter4fNV, parameters) +#define GET_ProgramNamedParameter4fNV(disp) GET_by_offset(disp, _gloffset_ProgramNamedParameter4fNV) +#define SET_ProgramNamedParameter4fNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramNamedParameter4fNV, fn) +#define CALL_ProgramNamedParameter4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, const GLfloat *)), _gloffset_ProgramNamedParameter4fvNV, parameters) +#define GET_ProgramNamedParameter4fvNV(disp) GET_by_offset(disp, _gloffset_ProgramNamedParameter4fvNV) +#define SET_ProgramNamedParameter4fvNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramNamedParameter4fvNV, fn) +#define CALL_PrimitiveRestartIndexNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_PrimitiveRestartIndexNV, parameters) +#define GET_PrimitiveRestartIndexNV(disp) GET_by_offset(disp, _gloffset_PrimitiveRestartIndexNV) +#define SET_PrimitiveRestartIndexNV(disp, fn) SET_by_offset(disp, _gloffset_PrimitiveRestartIndexNV, fn) +#define CALL_PrimitiveRestartNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PrimitiveRestartNV, parameters) +#define GET_PrimitiveRestartNV(disp) GET_by_offset(disp, _gloffset_PrimitiveRestartNV) +#define SET_PrimitiveRestartNV(disp, fn) SET_by_offset(disp, _gloffset_PrimitiveRestartNV, fn) +#define CALL_DepthBoundsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampd, GLclampd)), _gloffset_DepthBoundsEXT, parameters) +#define GET_DepthBoundsEXT(disp) GET_by_offset(disp, _gloffset_DepthBoundsEXT) +#define SET_DepthBoundsEXT(disp, fn) SET_by_offset(disp, _gloffset_DepthBoundsEXT, fn) +#define CALL_BlendEquationSeparateEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_BlendEquationSeparateEXT, parameters) +#define GET_BlendEquationSeparateEXT(disp) GET_by_offset(disp, _gloffset_BlendEquationSeparateEXT) +#define SET_BlendEquationSeparateEXT(disp, fn) SET_by_offset(disp, _gloffset_BlendEquationSeparateEXT, fn) +#define CALL_BindFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindFramebufferEXT, parameters) +#define GET_BindFramebufferEXT(disp) GET_by_offset(disp, _gloffset_BindFramebufferEXT) +#define SET_BindFramebufferEXT(disp, fn) SET_by_offset(disp, _gloffset_BindFramebufferEXT, fn) +#define CALL_BindRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindRenderbufferEXT, parameters) +#define GET_BindRenderbufferEXT(disp) GET_by_offset(disp, _gloffset_BindRenderbufferEXT) +#define SET_BindRenderbufferEXT(disp, fn) SET_by_offset(disp, _gloffset_BindRenderbufferEXT, fn) +#define CALL_CheckFramebufferStatusEXT(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum)), _gloffset_CheckFramebufferStatusEXT, parameters) +#define GET_CheckFramebufferStatusEXT(disp) GET_by_offset(disp, _gloffset_CheckFramebufferStatusEXT) +#define SET_CheckFramebufferStatusEXT(disp, fn) SET_by_offset(disp, _gloffset_CheckFramebufferStatusEXT, fn) +#define CALL_DeleteFramebuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteFramebuffersEXT, parameters) +#define GET_DeleteFramebuffersEXT(disp) GET_by_offset(disp, _gloffset_DeleteFramebuffersEXT) +#define SET_DeleteFramebuffersEXT(disp, fn) SET_by_offset(disp, _gloffset_DeleteFramebuffersEXT, fn) +#define CALL_DeleteRenderbuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteRenderbuffersEXT, parameters) +#define GET_DeleteRenderbuffersEXT(disp) GET_by_offset(disp, _gloffset_DeleteRenderbuffersEXT) +#define SET_DeleteRenderbuffersEXT(disp, fn) SET_by_offset(disp, _gloffset_DeleteRenderbuffersEXT, fn) +#define CALL_FramebufferRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint)), _gloffset_FramebufferRenderbufferEXT, parameters) +#define GET_FramebufferRenderbufferEXT(disp) GET_by_offset(disp, _gloffset_FramebufferRenderbufferEXT) +#define SET_FramebufferRenderbufferEXT(disp, fn) SET_by_offset(disp, _gloffset_FramebufferRenderbufferEXT, fn) +#define CALL_FramebufferTexture1DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint)), _gloffset_FramebufferTexture1DEXT, parameters) +#define GET_FramebufferTexture1DEXT(disp) GET_by_offset(disp, _gloffset_FramebufferTexture1DEXT) +#define SET_FramebufferTexture1DEXT(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTexture1DEXT, fn) +#define CALL_FramebufferTexture2DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint)), _gloffset_FramebufferTexture2DEXT, parameters) +#define GET_FramebufferTexture2DEXT(disp) GET_by_offset(disp, _gloffset_FramebufferTexture2DEXT) +#define SET_FramebufferTexture2DEXT(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTexture2DEXT, fn) +#define CALL_FramebufferTexture3DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint, GLint)), _gloffset_FramebufferTexture3DEXT, parameters) +#define GET_FramebufferTexture3DEXT(disp) GET_by_offset(disp, _gloffset_FramebufferTexture3DEXT) +#define SET_FramebufferTexture3DEXT(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTexture3DEXT, fn) +#define CALL_GenFramebuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenFramebuffersEXT, parameters) +#define GET_GenFramebuffersEXT(disp) GET_by_offset(disp, _gloffset_GenFramebuffersEXT) +#define SET_GenFramebuffersEXT(disp, fn) SET_by_offset(disp, _gloffset_GenFramebuffersEXT, fn) +#define CALL_GenRenderbuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenRenderbuffersEXT, parameters) +#define GET_GenRenderbuffersEXT(disp) GET_by_offset(disp, _gloffset_GenRenderbuffersEXT) +#define SET_GenRenderbuffersEXT(disp, fn) SET_by_offset(disp, _gloffset_GenRenderbuffersEXT, fn) +#define CALL_GenerateMipmapEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_GenerateMipmapEXT, parameters) +#define GET_GenerateMipmapEXT(disp) GET_by_offset(disp, _gloffset_GenerateMipmapEXT) +#define SET_GenerateMipmapEXT(disp, fn) SET_by_offset(disp, _gloffset_GenerateMipmapEXT, fn) +#define CALL_GetFramebufferAttachmentParameterivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLint *)), _gloffset_GetFramebufferAttachmentParameterivEXT, parameters) +#define GET_GetFramebufferAttachmentParameterivEXT(disp) GET_by_offset(disp, _gloffset_GetFramebufferAttachmentParameterivEXT) +#define SET_GetFramebufferAttachmentParameterivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetFramebufferAttachmentParameterivEXT, fn) +#define CALL_GetRenderbufferParameterivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetRenderbufferParameterivEXT, parameters) +#define GET_GetRenderbufferParameterivEXT(disp) GET_by_offset(disp, _gloffset_GetRenderbufferParameterivEXT) +#define SET_GetRenderbufferParameterivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetRenderbufferParameterivEXT, fn) +#define CALL_IsFramebufferEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsFramebufferEXT, parameters) +#define GET_IsFramebufferEXT(disp) GET_by_offset(disp, _gloffset_IsFramebufferEXT) +#define SET_IsFramebufferEXT(disp, fn) SET_by_offset(disp, _gloffset_IsFramebufferEXT, fn) +#define CALL_IsRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsRenderbufferEXT, parameters) +#define GET_IsRenderbufferEXT(disp) GET_by_offset(disp, _gloffset_IsRenderbufferEXT) +#define SET_IsRenderbufferEXT(disp, fn) SET_by_offset(disp, _gloffset_IsRenderbufferEXT, fn) +#define CALL_RenderbufferStorageEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLsizei)), _gloffset_RenderbufferStorageEXT, parameters) +#define GET_RenderbufferStorageEXT(disp) GET_by_offset(disp, _gloffset_RenderbufferStorageEXT) +#define SET_RenderbufferStorageEXT(disp, fn) SET_by_offset(disp, _gloffset_RenderbufferStorageEXT, fn) +#define CALL_BlitFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)), _gloffset_BlitFramebufferEXT, parameters) +#define GET_BlitFramebufferEXT(disp) GET_by_offset(disp, _gloffset_BlitFramebufferEXT) +#define SET_BlitFramebufferEXT(disp, fn) SET_by_offset(disp, _gloffset_BlitFramebufferEXT, fn) +#define CALL_BufferParameteriAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_BufferParameteriAPPLE, parameters) +#define GET_BufferParameteriAPPLE(disp) GET_by_offset(disp, _gloffset_BufferParameteriAPPLE) +#define SET_BufferParameteriAPPLE(disp, fn) SET_by_offset(disp, _gloffset_BufferParameteriAPPLE, fn) +#define CALL_FlushMappedBufferRangeAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr)), _gloffset_FlushMappedBufferRangeAPPLE, parameters) +#define GET_FlushMappedBufferRangeAPPLE(disp) GET_by_offset(disp, _gloffset_FlushMappedBufferRangeAPPLE) +#define SET_FlushMappedBufferRangeAPPLE(disp, fn) SET_by_offset(disp, _gloffset_FlushMappedBufferRangeAPPLE, fn) +#define CALL_BindFragDataLocationEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, const GLchar *)), _gloffset_BindFragDataLocationEXT, parameters) +#define GET_BindFragDataLocationEXT(disp) GET_by_offset(disp, _gloffset_BindFragDataLocationEXT) +#define SET_BindFragDataLocationEXT(disp, fn) SET_by_offset(disp, _gloffset_BindFragDataLocationEXT, fn) +#define CALL_GetFragDataLocationEXT(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLuint, const GLchar *)), _gloffset_GetFragDataLocationEXT, parameters) +#define GET_GetFragDataLocationEXT(disp) GET_by_offset(disp, _gloffset_GetFragDataLocationEXT) +#define SET_GetFragDataLocationEXT(disp, fn) SET_by_offset(disp, _gloffset_GetFragDataLocationEXT, fn) +#define CALL_GetUniformuivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLuint *)), _gloffset_GetUniformuivEXT, parameters) +#define GET_GetUniformuivEXT(disp) GET_by_offset(disp, _gloffset_GetUniformuivEXT) +#define SET_GetUniformuivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetUniformuivEXT, fn) +#define CALL_GetVertexAttribIivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetVertexAttribIivEXT, parameters) +#define GET_GetVertexAttribIivEXT(disp) GET_by_offset(disp, _gloffset_GetVertexAttribIivEXT) +#define SET_GetVertexAttribIivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribIivEXT, fn) +#define CALL_GetVertexAttribIuivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint *)), _gloffset_GetVertexAttribIuivEXT, parameters) +#define GET_GetVertexAttribIuivEXT(disp) GET_by_offset(disp, _gloffset_GetVertexAttribIuivEXT) +#define SET_GetVertexAttribIuivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribIuivEXT, fn) +#define CALL_Uniform1uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLuint)), _gloffset_Uniform1uiEXT, parameters) +#define GET_Uniform1uiEXT(disp) GET_by_offset(disp, _gloffset_Uniform1uiEXT) +#define SET_Uniform1uiEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform1uiEXT, fn) +#define CALL_Uniform1uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLuint *)), _gloffset_Uniform1uivEXT, parameters) +#define GET_Uniform1uivEXT(disp) GET_by_offset(disp, _gloffset_Uniform1uivEXT) +#define SET_Uniform1uivEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform1uivEXT, fn) +#define CALL_Uniform2uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLuint, GLuint)), _gloffset_Uniform2uiEXT, parameters) +#define GET_Uniform2uiEXT(disp) GET_by_offset(disp, _gloffset_Uniform2uiEXT) +#define SET_Uniform2uiEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform2uiEXT, fn) +#define CALL_Uniform2uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLuint *)), _gloffset_Uniform2uivEXT, parameters) +#define GET_Uniform2uivEXT(disp) GET_by_offset(disp, _gloffset_Uniform2uivEXT) +#define SET_Uniform2uivEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform2uivEXT, fn) +#define CALL_Uniform3uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLuint, GLuint, GLuint)), _gloffset_Uniform3uiEXT, parameters) +#define GET_Uniform3uiEXT(disp) GET_by_offset(disp, _gloffset_Uniform3uiEXT) +#define SET_Uniform3uiEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform3uiEXT, fn) +#define CALL_Uniform3uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLuint *)), _gloffset_Uniform3uivEXT, parameters) +#define GET_Uniform3uivEXT(disp) GET_by_offset(disp, _gloffset_Uniform3uivEXT) +#define SET_Uniform3uivEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform3uivEXT, fn) +#define CALL_Uniform4uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLuint, GLuint, GLuint, GLuint)), _gloffset_Uniform4uiEXT, parameters) +#define GET_Uniform4uiEXT(disp) GET_by_offset(disp, _gloffset_Uniform4uiEXT) +#define SET_Uniform4uiEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform4uiEXT, fn) +#define CALL_Uniform4uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLuint *)), _gloffset_Uniform4uivEXT, parameters) +#define GET_Uniform4uivEXT(disp) GET_by_offset(disp, _gloffset_Uniform4uivEXT) +#define SET_Uniform4uivEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform4uivEXT, fn) +#define CALL_VertexAttribI1iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint)), _gloffset_VertexAttribI1iEXT, parameters) +#define GET_VertexAttribI1iEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI1iEXT) +#define SET_VertexAttribI1iEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI1iEXT, fn) +#define CALL_VertexAttribI1ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttribI1ivEXT, parameters) +#define GET_VertexAttribI1ivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI1ivEXT) +#define SET_VertexAttribI1ivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI1ivEXT, fn) +#define CALL_VertexAttribI1uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_VertexAttribI1uiEXT, parameters) +#define GET_VertexAttribI1uiEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI1uiEXT) +#define SET_VertexAttribI1uiEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI1uiEXT, fn) +#define CALL_VertexAttribI1uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttribI1uivEXT, parameters) +#define GET_VertexAttribI1uivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI1uivEXT) +#define SET_VertexAttribI1uivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI1uivEXT, fn) +#define CALL_VertexAttribI2iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLint)), _gloffset_VertexAttribI2iEXT, parameters) +#define GET_VertexAttribI2iEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI2iEXT) +#define SET_VertexAttribI2iEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI2iEXT, fn) +#define CALL_VertexAttribI2ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttribI2ivEXT, parameters) +#define GET_VertexAttribI2ivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI2ivEXT) +#define SET_VertexAttribI2ivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI2ivEXT, fn) +#define CALL_VertexAttribI2uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint)), _gloffset_VertexAttribI2uiEXT, parameters) +#define GET_VertexAttribI2uiEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI2uiEXT) +#define SET_VertexAttribI2uiEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI2uiEXT, fn) +#define CALL_VertexAttribI2uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttribI2uivEXT, parameters) +#define GET_VertexAttribI2uivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI2uivEXT) +#define SET_VertexAttribI2uivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI2uivEXT, fn) +#define CALL_VertexAttribI3iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLint, GLint)), _gloffset_VertexAttribI3iEXT, parameters) +#define GET_VertexAttribI3iEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI3iEXT) +#define SET_VertexAttribI3iEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI3iEXT, fn) +#define CALL_VertexAttribI3ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttribI3ivEXT, parameters) +#define GET_VertexAttribI3ivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI3ivEXT) +#define SET_VertexAttribI3ivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI3ivEXT, fn) +#define CALL_VertexAttribI3uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint, GLuint)), _gloffset_VertexAttribI3uiEXT, parameters) +#define GET_VertexAttribI3uiEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI3uiEXT) +#define SET_VertexAttribI3uiEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI3uiEXT, fn) +#define CALL_VertexAttribI3uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttribI3uivEXT, parameters) +#define GET_VertexAttribI3uivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI3uivEXT) +#define SET_VertexAttribI3uivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI3uivEXT, fn) +#define CALL_VertexAttribI4bvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), _gloffset_VertexAttribI4bvEXT, parameters) +#define GET_VertexAttribI4bvEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4bvEXT) +#define SET_VertexAttribI4bvEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4bvEXT, fn) +#define CALL_VertexAttribI4iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLint, GLint, GLint)), _gloffset_VertexAttribI4iEXT, parameters) +#define GET_VertexAttribI4iEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4iEXT) +#define SET_VertexAttribI4iEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4iEXT, fn) +#define CALL_VertexAttribI4ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttribI4ivEXT, parameters) +#define GET_VertexAttribI4ivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4ivEXT) +#define SET_VertexAttribI4ivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4ivEXT, fn) +#define CALL_VertexAttribI4svEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttribI4svEXT, parameters) +#define GET_VertexAttribI4svEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4svEXT) +#define SET_VertexAttribI4svEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4svEXT, fn) +#define CALL_VertexAttribI4ubvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), _gloffset_VertexAttribI4ubvEXT, parameters) +#define GET_VertexAttribI4ubvEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4ubvEXT) +#define SET_VertexAttribI4ubvEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4ubvEXT, fn) +#define CALL_VertexAttribI4uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_VertexAttribI4uiEXT, parameters) +#define GET_VertexAttribI4uiEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4uiEXT) +#define SET_VertexAttribI4uiEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4uiEXT, fn) +#define CALL_VertexAttribI4uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttribI4uivEXT, parameters) +#define GET_VertexAttribI4uivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4uivEXT) +#define SET_VertexAttribI4uivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4uivEXT, fn) +#define CALL_VertexAttribI4usvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), _gloffset_VertexAttribI4usvEXT, parameters) +#define GET_VertexAttribI4usvEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4usvEXT) +#define SET_VertexAttribI4usvEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4usvEXT, fn) +#define CALL_VertexAttribIPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_VertexAttribIPointerEXT, parameters) +#define GET_VertexAttribIPointerEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribIPointerEXT) +#define SET_VertexAttribIPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribIPointerEXT, fn) +#define CALL_FramebufferTextureLayerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLint)), _gloffset_FramebufferTextureLayerEXT, parameters) +#define GET_FramebufferTextureLayerEXT(disp) GET_by_offset(disp, _gloffset_FramebufferTextureLayerEXT) +#define SET_FramebufferTextureLayerEXT(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTextureLayerEXT, fn) +#define CALL_ColorMaskIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean)), _gloffset_ColorMaskIndexedEXT, parameters) +#define GET_ColorMaskIndexedEXT(disp) GET_by_offset(disp, _gloffset_ColorMaskIndexedEXT) +#define SET_ColorMaskIndexedEXT(disp, fn) SET_by_offset(disp, _gloffset_ColorMaskIndexedEXT, fn) +#define CALL_DisableIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_DisableIndexedEXT, parameters) +#define GET_DisableIndexedEXT(disp) GET_by_offset(disp, _gloffset_DisableIndexedEXT) +#define SET_DisableIndexedEXT(disp, fn) SET_by_offset(disp, _gloffset_DisableIndexedEXT, fn) +#define CALL_EnableIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_EnableIndexedEXT, parameters) +#define GET_EnableIndexedEXT(disp) GET_by_offset(disp, _gloffset_EnableIndexedEXT) +#define SET_EnableIndexedEXT(disp, fn) SET_by_offset(disp, _gloffset_EnableIndexedEXT, fn) +#define CALL_GetBooleanIndexedvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLboolean *)), _gloffset_GetBooleanIndexedvEXT, parameters) +#define GET_GetBooleanIndexedvEXT(disp) GET_by_offset(disp, _gloffset_GetBooleanIndexedvEXT) +#define SET_GetBooleanIndexedvEXT(disp, fn) SET_by_offset(disp, _gloffset_GetBooleanIndexedvEXT, fn) +#define CALL_GetIntegerIndexedvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLint *)), _gloffset_GetIntegerIndexedvEXT, parameters) +#define GET_GetIntegerIndexedvEXT(disp) GET_by_offset(disp, _gloffset_GetIntegerIndexedvEXT) +#define SET_GetIntegerIndexedvEXT(disp, fn) SET_by_offset(disp, _gloffset_GetIntegerIndexedvEXT, fn) +#define CALL_IsEnabledIndexedEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_IsEnabledIndexedEXT, parameters) +#define GET_IsEnabledIndexedEXT(disp) GET_by_offset(disp, _gloffset_IsEnabledIndexedEXT) +#define SET_IsEnabledIndexedEXT(disp, fn) SET_by_offset(disp, _gloffset_IsEnabledIndexedEXT, fn) +#define CALL_ClearColorIiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_ClearColorIiEXT, parameters) +#define GET_ClearColorIiEXT(disp) GET_by_offset(disp, _gloffset_ClearColorIiEXT) +#define SET_ClearColorIiEXT(disp, fn) SET_by_offset(disp, _gloffset_ClearColorIiEXT, fn) +#define CALL_ClearColorIuiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint, GLuint)), _gloffset_ClearColorIuiEXT, parameters) +#define GET_ClearColorIuiEXT(disp) GET_by_offset(disp, _gloffset_ClearColorIuiEXT) +#define SET_ClearColorIuiEXT(disp, fn) SET_by_offset(disp, _gloffset_ClearColorIuiEXT, fn) +#define CALL_GetTexParameterIivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetTexParameterIivEXT, parameters) +#define GET_GetTexParameterIivEXT(disp) GET_by_offset(disp, _gloffset_GetTexParameterIivEXT) +#define SET_GetTexParameterIivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetTexParameterIivEXT, fn) +#define CALL_GetTexParameterIuivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint *)), _gloffset_GetTexParameterIuivEXT, parameters) +#define GET_GetTexParameterIuivEXT(disp) GET_by_offset(disp, _gloffset_GetTexParameterIuivEXT) +#define SET_GetTexParameterIuivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetTexParameterIuivEXT, fn) +#define CALL_TexParameterIivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_TexParameterIivEXT, parameters) +#define GET_TexParameterIivEXT(disp) GET_by_offset(disp, _gloffset_TexParameterIivEXT) +#define SET_TexParameterIivEXT(disp, fn) SET_by_offset(disp, _gloffset_TexParameterIivEXT, fn) +#define CALL_TexParameterIuivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLuint *)), _gloffset_TexParameterIuivEXT, parameters) +#define GET_TexParameterIuivEXT(disp) GET_by_offset(disp, _gloffset_TexParameterIuivEXT) +#define SET_TexParameterIuivEXT(disp, fn) SET_by_offset(disp, _gloffset_TexParameterIuivEXT, fn) +#define CALL_BeginConditionalRenderNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), _gloffset_BeginConditionalRenderNV, parameters) +#define GET_BeginConditionalRenderNV(disp) GET_by_offset(disp, _gloffset_BeginConditionalRenderNV) +#define SET_BeginConditionalRenderNV(disp, fn) SET_by_offset(disp, _gloffset_BeginConditionalRenderNV, fn) +#define CALL_EndConditionalRenderNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_EndConditionalRenderNV, parameters) +#define GET_EndConditionalRenderNV(disp) GET_by_offset(disp, _gloffset_EndConditionalRenderNV) +#define SET_EndConditionalRenderNV(disp, fn) SET_by_offset(disp, _gloffset_EndConditionalRenderNV, fn) +#define CALL_BeginTransformFeedbackEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_BeginTransformFeedbackEXT, parameters) +#define GET_BeginTransformFeedbackEXT(disp) GET_by_offset(disp, _gloffset_BeginTransformFeedbackEXT) +#define SET_BeginTransformFeedbackEXT(disp, fn) SET_by_offset(disp, _gloffset_BeginTransformFeedbackEXT, fn) +#define CALL_BindBufferBaseEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint)), _gloffset_BindBufferBaseEXT, parameters) +#define GET_BindBufferBaseEXT(disp) GET_by_offset(disp, _gloffset_BindBufferBaseEXT) +#define SET_BindBufferBaseEXT(disp, fn) SET_by_offset(disp, _gloffset_BindBufferBaseEXT, fn) +#define CALL_BindBufferOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLintptr)), _gloffset_BindBufferOffsetEXT, parameters) +#define GET_BindBufferOffsetEXT(disp) GET_by_offset(disp, _gloffset_BindBufferOffsetEXT) +#define SET_BindBufferOffsetEXT(disp, fn) SET_by_offset(disp, _gloffset_BindBufferOffsetEXT, fn) +#define CALL_BindBufferRangeEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr)), _gloffset_BindBufferRangeEXT, parameters) +#define GET_BindBufferRangeEXT(disp) GET_by_offset(disp, _gloffset_BindBufferRangeEXT) +#define SET_BindBufferRangeEXT(disp, fn) SET_by_offset(disp, _gloffset_BindBufferRangeEXT, fn) +#define CALL_EndTransformFeedbackEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_EndTransformFeedbackEXT, parameters) +#define GET_EndTransformFeedbackEXT(disp) GET_by_offset(disp, _gloffset_EndTransformFeedbackEXT) +#define SET_EndTransformFeedbackEXT(disp, fn) SET_by_offset(disp, _gloffset_EndTransformFeedbackEXT, fn) +#define CALL_GetTransformFeedbackVaryingEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *)), _gloffset_GetTransformFeedbackVaryingEXT, parameters) +#define GET_GetTransformFeedbackVaryingEXT(disp) GET_by_offset(disp, _gloffset_GetTransformFeedbackVaryingEXT) +#define SET_GetTransformFeedbackVaryingEXT(disp, fn) SET_by_offset(disp, _gloffset_GetTransformFeedbackVaryingEXT, fn) +#define CALL_TransformFeedbackVaryingsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const char **, GLenum)), _gloffset_TransformFeedbackVaryingsEXT, parameters) +#define GET_TransformFeedbackVaryingsEXT(disp) GET_by_offset(disp, _gloffset_TransformFeedbackVaryingsEXT) +#define SET_TransformFeedbackVaryingsEXT(disp, fn) SET_by_offset(disp, _gloffset_TransformFeedbackVaryingsEXT, fn) +#define CALL_ProvokingVertexEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ProvokingVertexEXT, parameters) +#define GET_ProvokingVertexEXT(disp) GET_by_offset(disp, _gloffset_ProvokingVertexEXT) +#define SET_ProvokingVertexEXT(disp, fn) SET_by_offset(disp, _gloffset_ProvokingVertexEXT, fn) +#define CALL_GetTexParameterPointervAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid **)), _gloffset_GetTexParameterPointervAPPLE, parameters) +#define GET_GetTexParameterPointervAPPLE(disp) GET_by_offset(disp, _gloffset_GetTexParameterPointervAPPLE) +#define SET_GetTexParameterPointervAPPLE(disp, fn) SET_by_offset(disp, _gloffset_GetTexParameterPointervAPPLE, fn) +#define CALL_TextureRangeAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLvoid *)), _gloffset_TextureRangeAPPLE, parameters) +#define GET_TextureRangeAPPLE(disp) GET_by_offset(disp, _gloffset_TextureRangeAPPLE) +#define SET_TextureRangeAPPLE(disp, fn) SET_by_offset(disp, _gloffset_TextureRangeAPPLE, fn) +#define CALL_GetObjectParameterivAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLint *)), _gloffset_GetObjectParameterivAPPLE, parameters) +#define GET_GetObjectParameterivAPPLE(disp) GET_by_offset(disp, _gloffset_GetObjectParameterivAPPLE) +#define SET_GetObjectParameterivAPPLE(disp, fn) SET_by_offset(disp, _gloffset_GetObjectParameterivAPPLE, fn) +#define CALL_ObjectPurgeableAPPLE(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum, GLuint, GLenum)), _gloffset_ObjectPurgeableAPPLE, parameters) +#define GET_ObjectPurgeableAPPLE(disp) GET_by_offset(disp, _gloffset_ObjectPurgeableAPPLE) +#define SET_ObjectPurgeableAPPLE(disp, fn) SET_by_offset(disp, _gloffset_ObjectPurgeableAPPLE, fn) +#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum, GLuint, GLenum)), _gloffset_ObjectUnpurgeableAPPLE, parameters) +#define GET_ObjectUnpurgeableAPPLE(disp) GET_by_offset(disp, _gloffset_ObjectUnpurgeableAPPLE) +#define SET_ObjectUnpurgeableAPPLE(disp, fn) SET_by_offset(disp, _gloffset_ObjectUnpurgeableAPPLE, fn) +#define CALL_ActiveProgramEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_ActiveProgramEXT, parameters) +#define GET_ActiveProgramEXT(disp) GET_by_offset(disp, _gloffset_ActiveProgramEXT) +#define SET_ActiveProgramEXT(disp, fn) SET_by_offset(disp, _gloffset_ActiveProgramEXT, fn) +#define CALL_CreateShaderProgramEXT(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLenum, const GLchar *)), _gloffset_CreateShaderProgramEXT, parameters) +#define GET_CreateShaderProgramEXT(disp) GET_by_offset(disp, _gloffset_CreateShaderProgramEXT) +#define SET_CreateShaderProgramEXT(disp, fn) SET_by_offset(disp, _gloffset_CreateShaderProgramEXT, fn) +#define CALL_UseShaderProgramEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_UseShaderProgramEXT, parameters) +#define GET_UseShaderProgramEXT(disp) GET_by_offset(disp, _gloffset_UseShaderProgramEXT) +#define SET_UseShaderProgramEXT(disp, fn) SET_by_offset(disp, _gloffset_UseShaderProgramEXT, fn) +#define CALL_StencilFuncSeparateATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLuint)), _gloffset_StencilFuncSeparateATI, parameters) +#define GET_StencilFuncSeparateATI(disp) GET_by_offset(disp, _gloffset_StencilFuncSeparateATI) +#define SET_StencilFuncSeparateATI(disp, fn) SET_by_offset(disp, _gloffset_StencilFuncSeparateATI, fn) +#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), _gloffset_ProgramEnvParameters4fvEXT, parameters) +#define GET_ProgramEnvParameters4fvEXT(disp) GET_by_offset(disp, _gloffset_ProgramEnvParameters4fvEXT) +#define SET_ProgramEnvParameters4fvEXT(disp, fn) SET_by_offset(disp, _gloffset_ProgramEnvParameters4fvEXT, fn) +#define CALL_ProgramLocalParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), _gloffset_ProgramLocalParameters4fvEXT, parameters) +#define GET_ProgramLocalParameters4fvEXT(disp) GET_by_offset(disp, _gloffset_ProgramLocalParameters4fvEXT) +#define SET_ProgramLocalParameters4fvEXT(disp, fn) SET_by_offset(disp, _gloffset_ProgramLocalParameters4fvEXT, fn) +#define CALL_GetQueryObjecti64vEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint64EXT *)), _gloffset_GetQueryObjecti64vEXT, parameters) +#define GET_GetQueryObjecti64vEXT(disp) GET_by_offset(disp, _gloffset_GetQueryObjecti64vEXT) +#define SET_GetQueryObjecti64vEXT(disp, fn) SET_by_offset(disp, _gloffset_GetQueryObjecti64vEXT, fn) +#define CALL_GetQueryObjectui64vEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint64EXT *)), _gloffset_GetQueryObjectui64vEXT, parameters) +#define GET_GetQueryObjectui64vEXT(disp) GET_by_offset(disp, _gloffset_GetQueryObjectui64vEXT) +#define SET_GetQueryObjectui64vEXT(disp, fn) SET_by_offset(disp, _gloffset_GetQueryObjectui64vEXT, fn) +#define CALL_EGLImageTargetRenderbufferStorageOES(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid *)), _gloffset_EGLImageTargetRenderbufferStorageOES, parameters) +#define GET_EGLImageTargetRenderbufferStorageOES(disp) GET_by_offset(disp, _gloffset_EGLImageTargetRenderbufferStorageOES) +#define SET_EGLImageTargetRenderbufferStorageOES(disp, fn) SET_by_offset(disp, _gloffset_EGLImageTargetRenderbufferStorageOES, fn) +#define CALL_EGLImageTargetTexture2DOES(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid *)), _gloffset_EGLImageTargetTexture2DOES, parameters) +#define GET_EGLImageTargetTexture2DOES(disp) GET_by_offset(disp, _gloffset_EGLImageTargetTexture2DOES) +#define SET_EGLImageTargetTexture2DOES(disp, fn) SET_by_offset(disp, _gloffset_EGLImageTargetTexture2DOES, fn) + +#endif /* !defined( _GLAPI_DISPATCH_H_ ) */ diff --git a/src/mesa/main/hint.h b/src/mesa/main/hint.h index 66e78ad655..6c62068743 100644 --- a/src/mesa/main/hint.h +++ b/src/mesa/main/hint.h @@ -36,8 +36,10 @@ #ifndef HINT_H #define HINT_H +#include "glheader.h" +#include "mfeatures.h" -#include "mtypes.h" +struct gl_context; #if _HAVE_FULL_GL diff --git a/src/mesa/main/histogram.h b/src/mesa/main/histogram.h index 240087141b..577324222c 100644 --- a/src/mesa/main/histogram.h +++ b/src/mesa/main/histogram.h @@ -36,7 +36,10 @@ #ifndef HISTOGRAM_H #define HISTOGRAM_H -#include "main/mtypes.h" +#include "compiler.h" +#include "mfeatures.h" + +struct _glapi_table; #if FEATURE_histogram diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index 4b5d7dadc9..df1527b47f 100644 --- a/src/mesa/main/image.c +++ b/src/mesa/main/image.c @@ -32,7 +32,6 @@ #include "glheader.h" #include "colormac.h" -#include "enums.h" #include "image.h" #include "imports.h" #include "macros.h" @@ -86,36 +85,6 @@ _mesa_type_is_packed(GLenum type) return GL_FALSE; } -/** - * Flip the 8 bits in each byte of the given array. - * - * \param p array. - * \param n number of bytes. - * - * \todo try this trick to flip bytes someday: - * \code - * v = ((v & 0x55555555) << 1) | ((v >> 1) & 0x55555555); - * v = ((v & 0x33333333) << 2) | ((v >> 2) & 0x33333333); - * v = ((v & 0x0f0f0f0f) << 4) | ((v >> 4) & 0x0f0f0f0f); - * \endcode - */ -static void -flip_bytes( GLubyte *p, GLuint n ) -{ - GLuint i, a, b; - for (i = 0; i < n; i++) { - b = (GLuint) p[i]; /* words are often faster than bytes */ - a = ((b & 0x01) << 7) | - ((b & 0x02) << 5) | - ((b & 0x04) << 3) | - ((b & 0x08) << 1) | - ((b & 0x10) >> 1) | - ((b & 0x20) >> 3) | - ((b & 0x40) >> 5) | - ((b & 0x80) >> 7); - p[i] = (GLubyte) a; - } -} /** @@ -346,13 +315,15 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type ) return comps * sizeof(GLhalfARB); case GL_UNSIGNED_BYTE_3_3_2: case GL_UNSIGNED_BYTE_2_3_3_REV: - if (format == GL_RGB || format == GL_BGR) + if (format == GL_RGB || format == GL_BGR || + format == GL_RGB_INTEGER_EXT || format == GL_BGR_INTEGER_EXT) return sizeof(GLubyte); else return -1; /* error */ case GL_UNSIGNED_SHORT_5_6_5: case GL_UNSIGNED_SHORT_5_6_5_REV: - if (format == GL_RGB || format == GL_BGR) + if (format == GL_RGB || format == GL_BGR || + format == GL_RGB_INTEGER_EXT || format == GL_BGR_INTEGER_EXT) return sizeof(GLushort); else return -1; /* error */ @@ -360,7 +331,8 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type ) case GL_UNSIGNED_SHORT_4_4_4_4_REV: case GL_UNSIGNED_SHORT_5_5_5_1: case GL_UNSIGNED_SHORT_1_5_5_5_REV: - if (format == GL_RGBA || format == GL_BGRA || format == GL_ABGR_EXT) + if (format == GL_RGBA || format == GL_BGRA || format == GL_ABGR_EXT || + format == GL_RGBA_INTEGER_EXT || format == GL_BGRA_INTEGER_EXT) return sizeof(GLushort); else return -1; @@ -368,7 +340,8 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type ) case GL_UNSIGNED_INT_8_8_8_8_REV: case GL_UNSIGNED_INT_10_10_10_2: case GL_UNSIGNED_INT_2_10_10_10_REV: - if (format == GL_RGBA || format == GL_BGRA || format == GL_ABGR_EXT) + if (format == GL_RGBA || format == GL_BGRA || format == GL_ABGR_EXT || + format == GL_RGBA_INTEGER_EXT || format == GL_BGRA_INTEGER_EXT) return sizeof(GLuint); else return -1; @@ -399,7 +372,8 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type ) * otherwise. */ GLboolean -_mesa_is_legal_format_and_type( struct gl_context *ctx, GLenum format, GLenum type ) +_mesa_is_legal_format_and_type(const struct gl_context *ctx, + GLenum format, GLenum type) { switch (format) { case GL_COLOR_INDEX: @@ -549,14 +523,77 @@ _mesa_is_legal_format_and_type( struct gl_context *ctx, GLenum format, GLenum ty default: return GL_FALSE; } + + /* integer-valued formats */ case GL_RED_INTEGER_EXT: case GL_GREEN_INTEGER_EXT: case GL_BLUE_INTEGER_EXT: case GL_ALPHA_INTEGER_EXT: + switch (type) { + case GL_BYTE: + case GL_UNSIGNED_BYTE: + case GL_SHORT: + case GL_UNSIGNED_SHORT: + case GL_INT: + case GL_UNSIGNED_INT: + return ctx->Extensions.EXT_texture_integer; + default: + return GL_FALSE; + } + case GL_RGB_INTEGER_EXT: - case GL_RGBA_INTEGER_EXT: + switch (type) { + case GL_BYTE: + case GL_UNSIGNED_BYTE: + case GL_SHORT: + case GL_UNSIGNED_SHORT: + case GL_INT: + case GL_UNSIGNED_INT: + case GL_UNSIGNED_BYTE_3_3_2: + case GL_UNSIGNED_BYTE_2_3_3_REV: + case GL_UNSIGNED_SHORT_5_6_5: + case GL_UNSIGNED_SHORT_5_6_5_REV: + return ctx->Extensions.EXT_texture_integer; + default: + return GL_FALSE; + } + case GL_BGR_INTEGER_EXT: + switch (type) { + case GL_BYTE: + case GL_UNSIGNED_BYTE: + case GL_SHORT: + case GL_UNSIGNED_SHORT: + case GL_INT: + case GL_UNSIGNED_INT: + /* NOTE: no packed formats w/ BGR format */ + return ctx->Extensions.EXT_texture_integer; + default: + return GL_FALSE; + } + + case GL_RGBA_INTEGER_EXT: case GL_BGRA_INTEGER_EXT: + switch (type) { + case GL_BYTE: + case GL_UNSIGNED_BYTE: + case GL_SHORT: + case GL_UNSIGNED_SHORT: + case GL_INT: + case GL_UNSIGNED_INT: + case GL_UNSIGNED_SHORT_4_4_4_4: + case GL_UNSIGNED_SHORT_4_4_4_4_REV: + case GL_UNSIGNED_SHORT_5_5_5_1: + case GL_UNSIGNED_SHORT_1_5_5_5_REV: + case GL_UNSIGNED_INT_8_8_8_8: + case GL_UNSIGNED_INT_8_8_8_8_REV: + case GL_UNSIGNED_INT_10_10_10_2: + case GL_UNSIGNED_INT_2_10_10_10_REV: + return ctx->Extensions.EXT_texture_integer; + default: + return GL_FALSE; + } + case GL_LUMINANCE_INTEGER_EXT: case GL_LUMINANCE_ALPHA_INTEGER_EXT: switch (type) { @@ -699,10 +736,57 @@ _mesa_is_color_format(GLenum format) case GL_COMPRESSED_SIGNED_RED_RGTC1: case GL_COMPRESSED_RG_RGTC2: case GL_COMPRESSED_SIGNED_RG_RGTC2: - return GL_TRUE; - /* signed texture formats */ + /* signed, normalized texture formats */ case GL_RGBA_SNORM: case GL_RGBA8_SNORM: + /* generic integer formats */ + case GL_RED_INTEGER_EXT: + case GL_GREEN_INTEGER_EXT: + case GL_BLUE_INTEGER_EXT: + case GL_ALPHA_INTEGER_EXT: + case GL_RGB_INTEGER_EXT: + case GL_RGBA_INTEGER_EXT: + case GL_BGR_INTEGER_EXT: + case GL_BGRA_INTEGER_EXT: + case GL_LUMINANCE_INTEGER_EXT: + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + /* sized integer formats */ + case GL_RGBA32UI_EXT: + case GL_RGB32UI_EXT: + case GL_ALPHA32UI_EXT: + case GL_INTENSITY32UI_EXT: + case GL_LUMINANCE32UI_EXT: + case GL_LUMINANCE_ALPHA32UI_EXT: + case GL_RGBA16UI_EXT: + case GL_RGB16UI_EXT: + case GL_ALPHA16UI_EXT: + case GL_INTENSITY16UI_EXT: + case GL_LUMINANCE16UI_EXT: + case GL_LUMINANCE_ALPHA16UI_EXT: + case GL_RGBA8UI_EXT: + case GL_RGB8UI_EXT: + case GL_ALPHA8UI_EXT: + case GL_INTENSITY8UI_EXT: + case GL_LUMINANCE8UI_EXT: + case GL_LUMINANCE_ALPHA8UI_EXT: + case GL_RGBA32I_EXT: + case GL_RGB32I_EXT: + case GL_ALPHA32I_EXT: + case GL_INTENSITY32I_EXT: + case GL_LUMINANCE32I_EXT: + case GL_LUMINANCE_ALPHA32I_EXT: + case GL_RGBA16I_EXT: + case GL_RGB16I_EXT: + case GL_ALPHA16I_EXT: + case GL_INTENSITY16I_EXT: + case GL_LUMINANCE16I_EXT: + case GL_LUMINANCE_ALPHA16I_EXT: + case GL_RGBA8I_EXT: + case GL_RGB8I_EXT: + case GL_ALPHA8I_EXT: + case GL_INTENSITY8I_EXT: + case GL_LUMINANCE8I_EXT: + case GL_LUMINANCE_ALPHA8I_EXT: return GL_TRUE; case GL_YCBCR_MESA: /* not considered to be RGB */ /* fall-through */ @@ -846,6 +930,7 @@ GLboolean _mesa_is_integer_format(GLenum format) { switch (format) { + /* generic integer formats */ case GL_RED_INTEGER_EXT: case GL_GREEN_INTEGER_EXT: case GL_BLUE_INTEGER_EXT: @@ -856,6 +941,43 @@ _mesa_is_integer_format(GLenum format) case GL_BGRA_INTEGER_EXT: case GL_LUMINANCE_INTEGER_EXT: case GL_LUMINANCE_ALPHA_INTEGER_EXT: + /* specific integer formats */ + case GL_RGBA32UI_EXT: + case GL_RGB32UI_EXT: + case GL_ALPHA32UI_EXT: + case GL_INTENSITY32UI_EXT: + case GL_LUMINANCE32UI_EXT: + case GL_LUMINANCE_ALPHA32UI_EXT: + case GL_RGBA16UI_EXT: + case GL_RGB16UI_EXT: + case GL_ALPHA16UI_EXT: + case GL_INTENSITY16UI_EXT: + case GL_LUMINANCE16UI_EXT: + case GL_LUMINANCE_ALPHA16UI_EXT: + case GL_RGBA8UI_EXT: + case GL_RGB8UI_EXT: + case GL_ALPHA8UI_EXT: + case GL_INTENSITY8UI_EXT: + case GL_LUMINANCE8UI_EXT: + case GL_LUMINANCE_ALPHA8UI_EXT: + case GL_RGBA32I_EXT: + case GL_RGB32I_EXT: + case GL_ALPHA32I_EXT: + case GL_INTENSITY32I_EXT: + case GL_LUMINANCE32I_EXT: + case GL_LUMINANCE_ALPHA32I_EXT: + case GL_RGBA16I_EXT: + case GL_RGB16I_EXT: + case GL_ALPHA16I_EXT: + case GL_INTENSITY16I_EXT: + case GL_LUMINANCE16I_EXT: + case GL_LUMINANCE_ALPHA16I_EXT: + case GL_RGBA8I_EXT: + case GL_RGB8I_EXT: + case GL_ALPHA8I_EXT: + case GL_INTENSITY8I_EXT: + case GL_LUMINANCE8I_EXT: + case GL_LUMINANCE_ALPHA8I_EXT: return GL_TRUE; default: return GL_FALSE; @@ -1119,8 +1241,6 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing, } -#if _HAVE_FULL_GL - /* * Compute the stride between images in a 3D texture (in bytes) for the given * pixel packing parameters and image width, format and type. @@ -1168,248 +1288,6 @@ _mesa_image_image_stride( const struct gl_pixelstore_attrib *packing, } -/* - * Unpack a 32x32 pixel polygon stipple from user memory using the - * current pixel unpack settings. - */ -void -_mesa_unpack_polygon_stipple( const GLubyte *pattern, GLuint dest[32], - const struct gl_pixelstore_attrib *unpacking ) -{ - GLubyte *ptrn = (GLubyte *) _mesa_unpack_bitmap(32, 32, pattern, unpacking); - if (ptrn) { - /* Convert pattern from GLubytes to GLuints and handle big/little - * endian differences - */ - GLubyte *p = ptrn; - GLint i; - for (i = 0; i < 32; i++) { - dest[i] = (p[0] << 24) - | (p[1] << 16) - | (p[2] << 8) - | (p[3] ); - p += 4; - } - free(ptrn); - } -} - - -/* - * Pack polygon stipple into user memory given current pixel packing - * settings. - */ -void -_mesa_pack_polygon_stipple( const GLuint pattern[32], GLubyte *dest, - const struct gl_pixelstore_attrib *packing ) -{ - /* Convert pattern from GLuints to GLubytes to handle big/little - * endian differences. - */ - GLubyte ptrn[32*4]; - GLint i; - for (i = 0; i < 32; i++) { - ptrn[i * 4 + 0] = (GLubyte) ((pattern[i] >> 24) & 0xff); - ptrn[i * 4 + 1] = (GLubyte) ((pattern[i] >> 16) & 0xff); - ptrn[i * 4 + 2] = (GLubyte) ((pattern[i] >> 8 ) & 0xff); - ptrn[i * 4 + 3] = (GLubyte) ((pattern[i] ) & 0xff); - } - - _mesa_pack_bitmap(32, 32, ptrn, dest, packing); -} - - -/* - * Unpack bitmap data. Resulting data will be in most-significant-bit-first - * order with row alignment = 1 byte. - */ -GLvoid * -_mesa_unpack_bitmap( GLint width, GLint height, const GLubyte *pixels, - const struct gl_pixelstore_attrib *packing ) -{ - GLint bytes, row, width_in_bytes; - GLubyte *buffer, *dst; - - if (!pixels) - return NULL; - - /* Alloc dest storage */ - bytes = ((width + 7) / 8 * height); - buffer = (GLubyte *) malloc( bytes ); - if (!buffer) - return NULL; - - width_in_bytes = CEILING( width, 8 ); - dst = buffer; - for (row = 0; row < height; row++) { - const GLubyte *src = (const GLubyte *) - _mesa_image_address2d(packing, pixels, width, height, - GL_COLOR_INDEX, GL_BITMAP, row, 0); - if (!src) { - free(buffer); - return NULL; - } - - if ((packing->SkipPixels & 7) == 0) { - memcpy( dst, src, width_in_bytes ); - if (packing->LsbFirst) { - flip_bytes( dst, width_in_bytes ); - } - } - else { - /* handling SkipPixels is a bit tricky (no pun intended!) */ - GLint i; - if (packing->LsbFirst) { - GLubyte srcMask = 1 << (packing->SkipPixels & 0x7); - GLubyte dstMask = 128; - const GLubyte *s = src; - GLubyte *d = dst; - *d = 0; - for (i = 0; i < width; i++) { - if (*s & srcMask) { - *d |= dstMask; - } - if (srcMask == 128) { - srcMask = 1; - s++; - } - else { - srcMask = srcMask << 1; - } - if (dstMask == 1) { - dstMask = 128; - d++; - *d = 0; - } - else { - dstMask = dstMask >> 1; - } - } - } - else { - GLubyte srcMask = 128 >> (packing->SkipPixels & 0x7); - GLubyte dstMask = 128; - const GLubyte *s = src; - GLubyte *d = dst; - *d = 0; - for (i = 0; i < width; i++) { - if (*s & srcMask) { - *d |= dstMask; - } - if (srcMask == 1) { - srcMask = 128; - s++; - } - else { - srcMask = srcMask >> 1; - } - if (dstMask == 1) { - dstMask = 128; - d++; - *d = 0; - } - else { - dstMask = dstMask >> 1; - } - } - } - } - dst += width_in_bytes; - } - - return buffer; -} - - -/* - * Pack bitmap data. - */ -void -_mesa_pack_bitmap( GLint width, GLint height, const GLubyte *source, - GLubyte *dest, const struct gl_pixelstore_attrib *packing ) -{ - GLint row, width_in_bytes; - const GLubyte *src; - - if (!source) - return; - - width_in_bytes = CEILING( width, 8 ); - src = source; - for (row = 0; row < height; row++) { - GLubyte *dst = (GLubyte *) _mesa_image_address2d(packing, dest, - width, height, GL_COLOR_INDEX, GL_BITMAP, row, 0); - if (!dst) - return; - - if ((packing->SkipPixels & 7) == 0) { - memcpy( dst, src, width_in_bytes ); - if (packing->LsbFirst) { - flip_bytes( dst, width_in_bytes ); - } - } - else { - /* handling SkipPixels is a bit tricky (no pun intended!) */ - GLint i; - if (packing->LsbFirst) { - GLubyte srcMask = 128; - GLubyte dstMask = 1 << (packing->SkipPixels & 0x7); - const GLubyte *s = src; - GLubyte *d = dst; - *d = 0; - for (i = 0; i < width; i++) { - if (*s & srcMask) { - *d |= dstMask; - } - if (srcMask == 1) { - srcMask = 128; - s++; - } - else { - srcMask = srcMask >> 1; - } - if (dstMask == 128) { - dstMask = 1; - d++; - *d = 0; - } - else { - dstMask = dstMask << 1; - } - } - } - else { - GLubyte srcMask = 128; - GLubyte dstMask = 128 >> (packing->SkipPixels & 0x7); - const GLubyte *s = src; - GLubyte *d = dst; - *d = 0; - for (i = 0; i < width; i++) { - if (*s & srcMask) { - *d |= dstMask; - } - if (srcMask == 1) { - srcMask = 128; - s++; - } - else { - srcMask = srcMask >> 1; - } - if (dstMask == 1) { - dstMask = 128; - d++; - *d = 0; - } - else { - dstMask = dstMask >> 1; - } - } - } - } - src += width_in_bytes; - } -} - /** * "Expand" a bitmap from 1-bit per pixel to 8-bits per pixel. @@ -1496,4095 +1374,6 @@ _mesa_expand_bitmap(GLsizei width, GLsizei height, } -/**********************************************************************/ -/***** Pixel processing functions ******/ -/**********************************************************************/ - -/* - * Apply scale and bias factors to an array of RGBA pixels. - */ -void -_mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4], - GLfloat rScale, GLfloat gScale, - GLfloat bScale, GLfloat aScale, - GLfloat rBias, GLfloat gBias, - GLfloat bBias, GLfloat aBias) -{ - if (rScale != 1.0 || rBias != 0.0) { - GLuint i; - for (i = 0; i < n; i++) { - rgba[i][RCOMP] = rgba[i][RCOMP] * rScale + rBias; - } - } - if (gScale != 1.0 || gBias != 0.0) { - GLuint i; - for (i = 0; i < n; i++) { - rgba[i][GCOMP] = rgba[i][GCOMP] * gScale + gBias; - } - } - if (bScale != 1.0 || bBias != 0.0) { - GLuint i; - for (i = 0; i < n; i++) { - rgba[i][BCOMP] = rgba[i][BCOMP] * bScale + bBias; - } - } - if (aScale != 1.0 || aBias != 0.0) { - GLuint i; - for (i = 0; i < n; i++) { - rgba[i][ACOMP] = rgba[i][ACOMP] * aScale + aBias; - } - } -} - - -/* - * Apply pixel mapping to an array of floating point RGBA pixels. - */ -void -_mesa_map_rgba( const struct gl_context *ctx, GLuint n, GLfloat rgba[][4] ) -{ - const GLfloat rscale = (GLfloat) (ctx->PixelMaps.RtoR.Size - 1); - const GLfloat gscale = (GLfloat) (ctx->PixelMaps.GtoG.Size - 1); - const GLfloat bscale = (GLfloat) (ctx->PixelMaps.BtoB.Size - 1); - const GLfloat ascale = (GLfloat) (ctx->PixelMaps.AtoA.Size - 1); - const GLfloat *rMap = ctx->PixelMaps.RtoR.Map; - const GLfloat *gMap = ctx->PixelMaps.GtoG.Map; - const GLfloat *bMap = ctx->PixelMaps.BtoB.Map; - const GLfloat *aMap = ctx->PixelMaps.AtoA.Map; - GLuint i; - for (i=0;i<n;i++) { - GLfloat r = CLAMP(rgba[i][RCOMP], 0.0F, 1.0F); - GLfloat g = CLAMP(rgba[i][GCOMP], 0.0F, 1.0F); - GLfloat b = CLAMP(rgba[i][BCOMP], 0.0F, 1.0F); - GLfloat a = CLAMP(rgba[i][ACOMP], 0.0F, 1.0F); - rgba[i][RCOMP] = rMap[IROUND(r * rscale)]; - rgba[i][GCOMP] = gMap[IROUND(g * gscale)]; - rgba[i][BCOMP] = bMap[IROUND(b * bscale)]; - rgba[i][ACOMP] = aMap[IROUND(a * ascale)]; - } -} - -/** - * Apply a color table lookup to an array of floating point RGBA colors. - */ -void -_mesa_lookup_rgba_float(const struct gl_color_table *table, - GLuint n, GLfloat rgba[][4]) -{ - const GLint max = table->Size - 1; - const GLfloat scale = (GLfloat) max; - const GLfloat *lut = table->TableF; - GLuint i; - - if (!table->TableF || table->Size == 0) - return; - - switch (table->_BaseFormat) { - case GL_INTENSITY: - /* replace RGBA with I */ - for (i = 0; i < n; i++) { - GLint j = IROUND(rgba[i][RCOMP] * scale); - GLfloat c = lut[CLAMP(j, 0, max)]; - rgba[i][RCOMP] = - rgba[i][GCOMP] = - rgba[i][BCOMP] = - rgba[i][ACOMP] = c; - } - break; - case GL_LUMINANCE: - /* replace RGB with L */ - for (i = 0; i < n; i++) { - GLint j = IROUND(rgba[i][RCOMP] * scale); - GLfloat c = lut[CLAMP(j, 0, max)]; - rgba[i][RCOMP] = - rgba[i][GCOMP] = - rgba[i][BCOMP] = c; - } - break; - case GL_ALPHA: - /* replace A with A */ - for (i = 0; i < n; i++) { - GLint j = IROUND(rgba[i][ACOMP] * scale); - rgba[i][ACOMP] = lut[CLAMP(j, 0, max)]; - } - break; - case GL_LUMINANCE_ALPHA: - /* replace RGBA with LLLA */ - for (i = 0; i < n; i++) { - GLint jL = IROUND(rgba[i][RCOMP] * scale); - GLint jA = IROUND(rgba[i][ACOMP] * scale); - GLfloat luminance, alpha; - jL = CLAMP(jL, 0, max); - jA = CLAMP(jA, 0, max); - luminance = lut[jL * 2 + 0]; - alpha = lut[jA * 2 + 1]; - rgba[i][RCOMP] = - rgba[i][GCOMP] = - rgba[i][BCOMP] = luminance; - rgba[i][ACOMP] = alpha;; - } - break; - case GL_RED: - /* replace RGB with RGB */ - for (i = 0; i < n; i++) { - GLint jR = IROUND(rgba[i][RCOMP] * scale); - jR = CLAMP(jR, 0, max); - rgba[i][RCOMP] = lut[jR * 3 + 0]; - } - break; - case GL_RG: - /* replace RG with RG */ - for (i = 0; i < n; i++) { - GLint jR = IROUND(rgba[i][RCOMP] * scale); - GLint jG = IROUND(rgba[i][GCOMP] * scale); - jR = CLAMP(jR, 0, max); - jG = CLAMP(jG, 0, max); - rgba[i][RCOMP] = lut[jR * 3 + 0]; - rgba[i][GCOMP] = lut[jG * 3 + 1]; - } - break; - case GL_RGB: - /* replace RGB with RGB */ - for (i = 0; i < n; i++) { - GLint jR = IROUND(rgba[i][RCOMP] * scale); - GLint jG = IROUND(rgba[i][GCOMP] * scale); - GLint jB = IROUND(rgba[i][BCOMP] * scale); - jR = CLAMP(jR, 0, max); - jG = CLAMP(jG, 0, max); - jB = CLAMP(jB, 0, max); - rgba[i][RCOMP] = lut[jR * 3 + 0]; - rgba[i][GCOMP] = lut[jG * 3 + 1]; - rgba[i][BCOMP] = lut[jB * 3 + 2]; - } - break; - case GL_RGBA: - /* replace RGBA with RGBA */ - for (i = 0; i < n; i++) { - GLint jR = IROUND(rgba[i][RCOMP] * scale); - GLint jG = IROUND(rgba[i][GCOMP] * scale); - GLint jB = IROUND(rgba[i][BCOMP] * scale); - GLint jA = IROUND(rgba[i][ACOMP] * scale); - jR = CLAMP(jR, 0, max); - jG = CLAMP(jG, 0, max); - jB = CLAMP(jB, 0, max); - jA = CLAMP(jA, 0, max); - rgba[i][RCOMP] = lut[jR * 4 + 0]; - rgba[i][GCOMP] = lut[jG * 4 + 1]; - rgba[i][BCOMP] = lut[jB * 4 + 2]; - rgba[i][ACOMP] = lut[jA * 4 + 3]; - } - break; - default: - _mesa_problem(NULL, "Bad format in _mesa_lookup_rgba_float"); - return; - } -} - - - -/** - * Apply a color table lookup to an array of ubyte/RGBA colors. - */ -void -_mesa_lookup_rgba_ubyte(const struct gl_color_table *table, - GLuint n, GLubyte rgba[][4]) -{ - const GLubyte *lut = table->TableUB; - const GLfloat scale = (GLfloat) (table->Size - 1) / (GLfloat)255.0; - GLuint i; - - if (!table->TableUB || table->Size == 0) - return; - - switch (table->_BaseFormat) { - case GL_INTENSITY: - /* replace RGBA with I */ - if (table->Size == 256) { - for (i = 0; i < n; i++) { - const GLubyte c = lut[rgba[i][RCOMP]]; - rgba[i][RCOMP] = - rgba[i][GCOMP] = - rgba[i][BCOMP] = - rgba[i][ACOMP] = c; - } - } - else { - for (i = 0; i < n; i++) { - GLint j = IROUND((GLfloat) rgba[i][RCOMP] * scale); - rgba[i][RCOMP] = - rgba[i][GCOMP] = - rgba[i][BCOMP] = - rgba[i][ACOMP] = lut[j]; - } - } - break; - case GL_LUMINANCE: - /* replace RGB with L */ - if (table->Size == 256) { - for (i = 0; i < n; i++) { - const GLubyte c = lut[rgba[i][RCOMP]]; - rgba[i][RCOMP] = - rgba[i][GCOMP] = - rgba[i][BCOMP] = c; - } - } - else { - for (i = 0; i < n; i++) { - GLint j = IROUND((GLfloat) rgba[i][RCOMP] * scale); - rgba[i][RCOMP] = - rgba[i][GCOMP] = - rgba[i][BCOMP] = lut[j]; - } - } - break; - case GL_ALPHA: - /* replace A with A */ - if (table->Size == 256) { - for (i = 0; i < n; i++) { - rgba[i][ACOMP] = lut[rgba[i][ACOMP]]; - } - } - else { - for (i = 0; i < n; i++) { - GLint j = IROUND((GLfloat) rgba[i][ACOMP] * scale); - rgba[i][ACOMP] = lut[j]; - } - } - break; - case GL_LUMINANCE_ALPHA: - /* replace RGBA with LLLA */ - if (table->Size == 256) { - for (i = 0; i < n; i++) { - GLubyte l = lut[rgba[i][RCOMP] * 2 + 0]; - GLubyte a = lut[rgba[i][ACOMP] * 2 + 1];; - rgba[i][RCOMP] = - rgba[i][GCOMP] = - rgba[i][BCOMP] = l; - rgba[i][ACOMP] = a; - } - } - else { - for (i = 0; i < n; i++) { - GLint jL = IROUND((GLfloat) rgba[i][RCOMP] * scale); - GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale); - GLubyte luminance = lut[jL * 2 + 0]; - GLubyte alpha = lut[jA * 2 + 1]; - rgba[i][RCOMP] = - rgba[i][GCOMP] = - rgba[i][BCOMP] = luminance; - rgba[i][ACOMP] = alpha; - } - } - break; - case GL_RGB: - if (table->Size == 256) { - for (i = 0; i < n; i++) { - rgba[i][RCOMP] = lut[rgba[i][RCOMP] * 3 + 0]; - rgba[i][GCOMP] = lut[rgba[i][GCOMP] * 3 + 1]; - rgba[i][BCOMP] = lut[rgba[i][BCOMP] * 3 + 2]; - } - } - else { - for (i = 0; i < n; i++) { - GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale); - GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale); - GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale); - rgba[i][RCOMP] = lut[jR * 3 + 0]; - rgba[i][GCOMP] = lut[jG * 3 + 1]; - rgba[i][BCOMP] = lut[jB * 3 + 2]; - } - } - break; - case GL_RGBA: - if (table->Size == 256) { - for (i = 0; i < n; i++) { - rgba[i][RCOMP] = lut[rgba[i][RCOMP] * 4 + 0]; - rgba[i][GCOMP] = lut[rgba[i][GCOMP] * 4 + 1]; - rgba[i][BCOMP] = lut[rgba[i][BCOMP] * 4 + 2]; - rgba[i][ACOMP] = lut[rgba[i][ACOMP] * 4 + 3]; - } - } - else { - for (i = 0; i < n; i++) { - GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale); - GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale); - GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale); - GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale); - CLAMPED_FLOAT_TO_CHAN(rgba[i][RCOMP], lut[jR * 4 + 0]); - CLAMPED_FLOAT_TO_CHAN(rgba[i][GCOMP], lut[jG * 4 + 1]); - CLAMPED_FLOAT_TO_CHAN(rgba[i][BCOMP], lut[jB * 4 + 2]); - CLAMPED_FLOAT_TO_CHAN(rgba[i][ACOMP], lut[jA * 4 + 3]); - } - } - break; - default: - _mesa_problem(NULL, "Bad format in _mesa_lookup_rgba_chan"); - return; - } -} - - - -/* - * Map color indexes to float rgba values. - */ -void -_mesa_map_ci_to_rgba( const struct gl_context *ctx, GLuint n, - const GLuint index[], GLfloat rgba[][4] ) -{ - GLuint rmask = ctx->PixelMaps.ItoR.Size - 1; - GLuint gmask = ctx->PixelMaps.ItoG.Size - 1; - GLuint bmask = ctx->PixelMaps.ItoB.Size - 1; - GLuint amask = ctx->PixelMaps.ItoA.Size - 1; - const GLfloat *rMap = ctx->PixelMaps.ItoR.Map; - const GLfloat *gMap = ctx->PixelMaps.ItoG.Map; - const GLfloat *bMap = ctx->PixelMaps.ItoB.Map; - const GLfloat *aMap = ctx->PixelMaps.ItoA.Map; - GLuint i; - for (i=0;i<n;i++) { - rgba[i][RCOMP] = rMap[index[i] & rmask]; - rgba[i][GCOMP] = gMap[index[i] & gmask]; - rgba[i][BCOMP] = bMap[index[i] & bmask]; - rgba[i][ACOMP] = aMap[index[i] & amask]; - } -} - - -/** - * Map ubyte color indexes to ubyte/RGBA values. - */ -void -_mesa_map_ci8_to_rgba8(const struct gl_context *ctx, GLuint n, const GLubyte index[], - GLubyte rgba[][4]) -{ - GLuint rmask = ctx->PixelMaps.ItoR.Size - 1; - GLuint gmask = ctx->PixelMaps.ItoG.Size - 1; - GLuint bmask = ctx->PixelMaps.ItoB.Size - 1; - GLuint amask = ctx->PixelMaps.ItoA.Size - 1; - const GLubyte *rMap = ctx->PixelMaps.ItoR.Map8; - const GLubyte *gMap = ctx->PixelMaps.ItoG.Map8; - const GLubyte *bMap = ctx->PixelMaps.ItoB.Map8; - const GLubyte *aMap = ctx->PixelMaps.ItoA.Map8; - GLuint i; - for (i=0;i<n;i++) { - rgba[i][RCOMP] = rMap[index[i] & rmask]; - rgba[i][GCOMP] = gMap[index[i] & gmask]; - rgba[i][BCOMP] = bMap[index[i] & bmask]; - rgba[i][ACOMP] = aMap[index[i] & amask]; - } -} - - -void -_mesa_scale_and_bias_depth(const struct gl_context *ctx, GLuint n, - GLfloat depthValues[]) -{ - const GLfloat scale = ctx->Pixel.DepthScale; - const GLfloat bias = ctx->Pixel.DepthBias; - GLuint i; - for (i = 0; i < n; i++) { - GLfloat d = depthValues[i] * scale + bias; - depthValues[i] = CLAMP(d, 0.0F, 1.0F); - } -} - - -void -_mesa_scale_and_bias_depth_uint(const struct gl_context *ctx, GLuint n, - GLuint depthValues[]) -{ - const GLdouble max = (double) 0xffffffff; - const GLdouble scale = ctx->Pixel.DepthScale; - const GLdouble bias = ctx->Pixel.DepthBias * max; - GLuint i; - for (i = 0; i < n; i++) { - GLdouble d = (GLdouble) depthValues[i] * scale + bias; - d = CLAMP(d, 0.0, max); - depthValues[i] = (GLuint) d; - } -} - -/** - * Apply various pixel transfer operations to an array of RGBA pixels - * as indicated by the transferOps bitmask - */ -void -_mesa_apply_rgba_transfer_ops(struct gl_context *ctx, GLbitfield transferOps, - GLuint n, GLfloat rgba[][4]) -{ - /* scale & bias */ - if (transferOps & IMAGE_SCALE_BIAS_BIT) { - _mesa_scale_and_bias_rgba(n, rgba, - ctx->Pixel.RedScale, ctx->Pixel.GreenScale, - ctx->Pixel.BlueScale, ctx->Pixel.AlphaScale, - ctx->Pixel.RedBias, ctx->Pixel.GreenBias, - ctx->Pixel.BlueBias, ctx->Pixel.AlphaBias); - } - /* color map lookup */ - if (transferOps & IMAGE_MAP_COLOR_BIT) { - _mesa_map_rgba( ctx, n, rgba ); - } - - /* clamping to [0,1] */ - if (transferOps & IMAGE_CLAMP_BIT) { - GLuint i; - for (i = 0; i < n; i++) { - rgba[i][RCOMP] = CLAMP(rgba[i][RCOMP], 0.0F, 1.0F); - rgba[i][GCOMP] = CLAMP(rgba[i][GCOMP], 0.0F, 1.0F); - rgba[i][BCOMP] = CLAMP(rgba[i][BCOMP], 0.0F, 1.0F); - rgba[i][ACOMP] = CLAMP(rgba[i][ACOMP], 0.0F, 1.0F); - } - } -} - - -/* - * Apply color index shift and offset to an array of pixels. - */ -static void -shift_and_offset_ci( const struct gl_context *ctx, GLuint n, GLuint indexes[] ) -{ - GLint shift = ctx->Pixel.IndexShift; - GLint offset = ctx->Pixel.IndexOffset; - GLuint i; - if (shift > 0) { - for (i=0;i<n;i++) { - indexes[i] = (indexes[i] << shift) + offset; - } - } - else if (shift < 0) { - shift = -shift; - for (i=0;i<n;i++) { - indexes[i] = (indexes[i] >> shift) + offset; - } - } - else { - for (i=0;i<n;i++) { - indexes[i] = indexes[i] + offset; - } - } -} - - - -/** - * Apply color index shift, offset and table lookup to an array - * of color indexes; - */ -void -_mesa_apply_ci_transfer_ops(const struct gl_context *ctx, GLbitfield transferOps, - GLuint n, GLuint indexes[]) -{ - if (transferOps & IMAGE_SHIFT_OFFSET_BIT) { - shift_and_offset_ci(ctx, n, indexes); - } - if (transferOps & IMAGE_MAP_COLOR_BIT) { - const GLuint mask = ctx->PixelMaps.ItoI.Size - 1; - GLuint i; - for (i = 0; i < n; i++) { - const GLuint j = indexes[i] & mask; - indexes[i] = IROUND(ctx->PixelMaps.ItoI.Map[j]); - } - } -} - - -/** - * Apply stencil index shift, offset and table lookup to an array - * of stencil values. - */ -void -_mesa_apply_stencil_transfer_ops(const struct gl_context *ctx, GLuint n, - GLstencil stencil[]) -{ - if (ctx->Pixel.IndexShift != 0 || ctx->Pixel.IndexOffset != 0) { - const GLint offset = ctx->Pixel.IndexOffset; - GLint shift = ctx->Pixel.IndexShift; - GLuint i; - if (shift > 0) { - for (i = 0; i < n; i++) { - stencil[i] = (stencil[i] << shift) + offset; - } - } - else if (shift < 0) { - shift = -shift; - for (i = 0; i < n; i++) { - stencil[i] = (stencil[i] >> shift) + offset; - } - } - else { - for (i = 0; i < n; i++) { - stencil[i] = stencil[i] + offset; - } - } - } - if (ctx->Pixel.MapStencilFlag) { - GLuint mask = ctx->PixelMaps.StoS.Size - 1; - GLuint i; - for (i = 0; i < n; i++) { - stencil[i] = (GLstencil)ctx->PixelMaps.StoS.Map[ stencil[i] & mask ]; - } - } -} - - -/** - * Used to pack an array [][4] of RGBA float colors as specified - * by the dstFormat, dstType and dstPacking. Used by glReadPixels. - * Note: the rgba values will be modified by this function when any pixel - * transfer ops are enabled. - */ -void -_mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4], - GLenum dstFormat, GLenum dstType, - GLvoid *dstAddr, - const struct gl_pixelstore_attrib *dstPacking, - GLbitfield transferOps) -{ - GLfloat luminance[MAX_WIDTH]; - const GLint comps = _mesa_components_in_format(dstFormat); - GLuint i; - - /* XXX - * This test should probably go away. Have the caller set/clear the - * IMAGE_CLAMP_BIT as needed. - */ - if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) { - /* need to clamp to [0, 1] */ - transferOps |= IMAGE_CLAMP_BIT; - } - - if (transferOps) { - _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba); - } - - if (dstFormat == GL_LUMINANCE || dstFormat == GL_LUMINANCE_ALPHA) { - /* compute luminance values */ - if (transferOps & IMAGE_CLAMP_BIT) { - for (i = 0; i < n; i++) { - GLfloat sum = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP]; - luminance[i] = CLAMP(sum, 0.0F, 1.0F); - } - } - else { - for (i = 0; i < n; i++) { - luminance[i] = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP]; - } - } - } - - /* - * Pack/store the pixels. Ugh! Lots of cases!!! - */ - switch (dstType) { - case GL_UNSIGNED_BYTE: - { - GLubyte *dst = (GLubyte *) dstAddr; - switch (dstFormat) { - case GL_RED: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); - break; - case GL_GREEN: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); - break; - case GL_BLUE: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); - break; - case GL_ALPHA: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_UBYTE(rgba[i][ACOMP]); - break; - case GL_LUMINANCE: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_UBYTE(luminance[i]); - break; - case GL_LUMINANCE_ALPHA: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_UBYTE(luminance[i]); - dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][ACOMP]); - } - break; - case GL_RG: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); - } - break; - case GL_RGB: - for (i=0;i<n;i++) { - dst[i*3+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); - dst[i*3+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); - dst[i*3+2] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); - } - break; - case GL_RGBA: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); - dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); - dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); - dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][ACOMP]); - } - break; - case GL_BGR: - for (i=0;i<n;i++) { - dst[i*3+0] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); - dst[i*3+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); - dst[i*3+2] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); - } - break; - case GL_BGRA: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); - dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); - dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); - dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][ACOMP]); - } - break; - case GL_ABGR_EXT: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][ACOMP]); - dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); - dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); - dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); - } - break; - case GL_DUDV_ATI: - case GL_DU8DV8_ATI: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); - } - break; - default: - _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); - } - } - break; - case GL_BYTE: - { - GLbyte *dst = (GLbyte *) dstAddr; - switch (dstFormat) { - case GL_RED: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_BYTE(rgba[i][RCOMP]); - break; - case GL_GREEN: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_BYTE(rgba[i][GCOMP]); - break; - case GL_BLUE: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_BYTE(rgba[i][BCOMP]); - break; - case GL_ALPHA: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_BYTE(rgba[i][ACOMP]); - break; - case GL_LUMINANCE: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_BYTE(luminance[i]); - break; - case GL_LUMINANCE_ALPHA: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_BYTE(luminance[i]); - dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][ACOMP]); - } - break; - case GL_RG: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); - } - break; - case GL_RGB: - for (i=0;i<n;i++) { - dst[i*3+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]); - dst[i*3+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); - dst[i*3+2] = FLOAT_TO_BYTE(rgba[i][BCOMP]); - } - break; - case GL_RGBA: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]); - dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); - dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][BCOMP]); - dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][ACOMP]); - } - break; - case GL_BGR: - for (i=0;i<n;i++) { - dst[i*3+0] = FLOAT_TO_BYTE(rgba[i][BCOMP]); - dst[i*3+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); - dst[i*3+2] = FLOAT_TO_BYTE(rgba[i][RCOMP]); - } - break; - case GL_BGRA: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][BCOMP]); - dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); - dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][RCOMP]); - dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][ACOMP]); - } - break; - case GL_ABGR_EXT: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][ACOMP]); - dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][BCOMP]); - dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][GCOMP]); - dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][RCOMP]); - } - break; - case GL_DUDV_ATI: - case GL_DU8DV8_ATI: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); - } - break; - default: - _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); - } - } - break; - case GL_UNSIGNED_SHORT: - { - GLushort *dst = (GLushort *) dstAddr; - switch (dstFormat) { - case GL_RED: - for (i=0;i<n;i++) - CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][RCOMP]); - break; - case GL_GREEN: - for (i=0;i<n;i++) - CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][GCOMP]); - break; - case GL_BLUE: - for (i=0;i<n;i++) - CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][BCOMP]); - break; - case GL_ALPHA: - for (i=0;i<n;i++) - CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][ACOMP]); - break; - case GL_LUMINANCE: - for (i=0;i<n;i++) - UNCLAMPED_FLOAT_TO_USHORT(dst[i], luminance[i]); - break; - case GL_LUMINANCE_ALPHA: - for (i=0;i<n;i++) { - UNCLAMPED_FLOAT_TO_USHORT(dst[i*2+0], luminance[i]); - CLAMPED_FLOAT_TO_USHORT(dst[i*2+1], rgba[i][ACOMP]); - } - break; - case GL_RG: - for (i=0;i<n;i++) { - CLAMPED_FLOAT_TO_USHORT(dst[i*2+0], rgba[i][RCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*2+1], rgba[i][GCOMP]); - } - break; - case GL_RGB: - for (i=0;i<n;i++) { - CLAMPED_FLOAT_TO_USHORT(dst[i*3+0], rgba[i][RCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*3+1], rgba[i][GCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*3+2], rgba[i][BCOMP]); - } - break; - case GL_RGBA: - for (i=0;i<n;i++) { - CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][RCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][GCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][BCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][ACOMP]); - } - break; - case GL_BGR: - for (i=0;i<n;i++) { - CLAMPED_FLOAT_TO_USHORT(dst[i*3+0], rgba[i][BCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*3+1], rgba[i][GCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*3+2], rgba[i][RCOMP]); - } - break; - case GL_BGRA: - for (i=0;i<n;i++) { - CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][BCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][GCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][RCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][ACOMP]); - } - break; - case GL_ABGR_EXT: - for (i=0;i<n;i++) { - CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][ACOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][BCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][GCOMP]); - CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][RCOMP]); - } - break; - case GL_DUDV_ATI: - case GL_DU8DV8_ATI: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_USHORT(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_USHORT(rgba[i][GCOMP]); - } - break; - default: - _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); - } - } - break; - case GL_SHORT: - { - GLshort *dst = (GLshort *) dstAddr; - switch (dstFormat) { - case GL_RED: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_SHORT(rgba[i][RCOMP]); - break; - case GL_GREEN: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_SHORT(rgba[i][GCOMP]); - break; - case GL_BLUE: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_SHORT(rgba[i][BCOMP]); - break; - case GL_ALPHA: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_SHORT(rgba[i][ACOMP]); - break; - case GL_LUMINANCE: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_SHORT(luminance[i]); - break; - case GL_LUMINANCE_ALPHA: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_SHORT(luminance[i]); - dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][ACOMP]); - } - break; - case GL_RG: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); - } - break; - case GL_RGB: - for (i=0;i<n;i++) { - dst[i*3+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]); - dst[i*3+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); - dst[i*3+2] = FLOAT_TO_SHORT(rgba[i][BCOMP]); - } - break; - case GL_RGBA: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]); - dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); - dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][BCOMP]); - dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][ACOMP]); - } - break; - case GL_BGR: - for (i=0;i<n;i++) { - dst[i*3+0] = FLOAT_TO_SHORT(rgba[i][BCOMP]); - dst[i*3+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); - dst[i*3+2] = FLOAT_TO_SHORT(rgba[i][RCOMP]); - } - break; - case GL_BGRA: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][BCOMP]); - dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); - dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][RCOMP]); - dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][ACOMP]); - } - break; - case GL_ABGR_EXT: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][ACOMP]); - dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][BCOMP]); - dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][GCOMP]); - dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][RCOMP]); - } - break; - case GL_DUDV_ATI: - case GL_DU8DV8_ATI: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); - } - break; - default: - _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); - } - } - break; - case GL_UNSIGNED_INT: - { - GLuint *dst = (GLuint *) dstAddr; - switch (dstFormat) { - case GL_RED: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_UINT(rgba[i][RCOMP]); - break; - case GL_GREEN: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_UINT(rgba[i][GCOMP]); - break; - case GL_BLUE: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_UINT(rgba[i][BCOMP]); - break; - case GL_ALPHA: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_UINT(rgba[i][ACOMP]); - break; - case GL_LUMINANCE: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_UINT(luminance[i]); - break; - case GL_LUMINANCE_ALPHA: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_UINT(luminance[i]); - dst[i*2+1] = FLOAT_TO_UINT(rgba[i][ACOMP]); - } - break; - case GL_RG: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_UINT(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); - } - break; - case GL_RGB: - for (i=0;i<n;i++) { - dst[i*3+0] = FLOAT_TO_UINT(rgba[i][RCOMP]); - dst[i*3+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); - dst[i*3+2] = FLOAT_TO_UINT(rgba[i][BCOMP]); - } - break; - case GL_RGBA: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_UINT(rgba[i][RCOMP]); - dst[i*4+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); - dst[i*4+2] = FLOAT_TO_UINT(rgba[i][BCOMP]); - dst[i*4+3] = FLOAT_TO_UINT(rgba[i][ACOMP]); - } - break; - case GL_BGR: - for (i=0;i<n;i++) { - dst[i*3+0] = FLOAT_TO_UINT(rgba[i][BCOMP]); - dst[i*3+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); - dst[i*3+2] = FLOAT_TO_UINT(rgba[i][RCOMP]); - } - break; - case GL_BGRA: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_UINT(rgba[i][BCOMP]); - dst[i*4+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); - dst[i*4+2] = FLOAT_TO_UINT(rgba[i][RCOMP]); - dst[i*4+3] = FLOAT_TO_UINT(rgba[i][ACOMP]); - } - break; - case GL_ABGR_EXT: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_UINT(rgba[i][ACOMP]); - dst[i*4+1] = FLOAT_TO_UINT(rgba[i][BCOMP]); - dst[i*4+2] = FLOAT_TO_UINT(rgba[i][GCOMP]); - dst[i*4+3] = FLOAT_TO_UINT(rgba[i][RCOMP]); - } - break; - case GL_DUDV_ATI: - case GL_DU8DV8_ATI: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_UINT(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); - } - break; - default: - _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); - } - } - break; - case GL_INT: - { - GLint *dst = (GLint *) dstAddr; - switch (dstFormat) { - case GL_RED: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_INT(rgba[i][RCOMP]); - break; - case GL_GREEN: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_INT(rgba[i][GCOMP]); - break; - case GL_BLUE: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_INT(rgba[i][BCOMP]); - break; - case GL_ALPHA: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_INT(rgba[i][ACOMP]); - break; - case GL_LUMINANCE: - for (i=0;i<n;i++) - dst[i] = FLOAT_TO_INT(luminance[i]); - break; - case GL_LUMINANCE_ALPHA: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_INT(luminance[i]); - dst[i*2+1] = FLOAT_TO_INT(rgba[i][ACOMP]); - } - break; - case GL_RG: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_INT(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_INT(rgba[i][GCOMP]); - } - break; - case GL_RGB: - for (i=0;i<n;i++) { - dst[i*3+0] = FLOAT_TO_INT(rgba[i][RCOMP]); - dst[i*3+1] = FLOAT_TO_INT(rgba[i][GCOMP]); - dst[i*3+2] = FLOAT_TO_INT(rgba[i][BCOMP]); - } - break; - case GL_RGBA: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_INT(rgba[i][RCOMP]); - dst[i*4+1] = FLOAT_TO_INT(rgba[i][GCOMP]); - dst[i*4+2] = FLOAT_TO_INT(rgba[i][BCOMP]); - dst[i*4+3] = FLOAT_TO_INT(rgba[i][ACOMP]); - } - break; - case GL_BGR: - for (i=0;i<n;i++) { - dst[i*3+0] = FLOAT_TO_INT(rgba[i][BCOMP]); - dst[i*3+1] = FLOAT_TO_INT(rgba[i][GCOMP]); - dst[i*3+2] = FLOAT_TO_INT(rgba[i][RCOMP]); - } - break; - case GL_BGRA: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_INT(rgba[i][BCOMP]); - dst[i*4+1] = FLOAT_TO_INT(rgba[i][GCOMP]); - dst[i*4+2] = FLOAT_TO_INT(rgba[i][RCOMP]); - dst[i*4+3] = FLOAT_TO_INT(rgba[i][ACOMP]); - } - break; - case GL_ABGR_EXT: - for (i=0;i<n;i++) { - dst[i*4+0] = FLOAT_TO_INT(rgba[i][ACOMP]); - dst[i*4+1] = FLOAT_TO_INT(rgba[i][BCOMP]); - dst[i*4+2] = FLOAT_TO_INT(rgba[i][GCOMP]); - dst[i*4+3] = FLOAT_TO_INT(rgba[i][RCOMP]); - } - break; - case GL_DUDV_ATI: - case GL_DU8DV8_ATI: - for (i=0;i<n;i++) { - dst[i*2+0] = FLOAT_TO_INT(rgba[i][RCOMP]); - dst[i*2+1] = FLOAT_TO_INT(rgba[i][GCOMP]); - } - break; - default: - _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); - } - } - break; - case GL_FLOAT: - { - GLfloat *dst = (GLfloat *) dstAddr; - switch (dstFormat) { - case GL_RED: - for (i=0;i<n;i++) - dst[i] = rgba[i][RCOMP]; - break; - case GL_GREEN: - for (i=0;i<n;i++) - dst[i] = rgba[i][GCOMP]; - break; - case GL_BLUE: - for (i=0;i<n;i++) - dst[i] = rgba[i][BCOMP]; - break; - case GL_ALPHA: - for (i=0;i<n;i++) - dst[i] = rgba[i][ACOMP]; - break; - case GL_LUMINANCE: - for (i=0;i<n;i++) - dst[i] = luminance[i]; - break; - case GL_LUMINANCE_ALPHA: - for (i=0;i<n;i++) { - dst[i*2+0] = luminance[i]; - dst[i*2+1] = rgba[i][ACOMP]; - } - break; - case GL_RG: - for (i=0;i<n;i++) { - dst[i*2+0] = rgba[i][RCOMP]; - dst[i*2+1] = rgba[i][GCOMP]; - } - break; - case GL_RGB: - for (i=0;i<n;i++) { - dst[i*3+0] = rgba[i][RCOMP]; - dst[i*3+1] = rgba[i][GCOMP]; - dst[i*3+2] = rgba[i][BCOMP]; - } - break; - case GL_RGBA: - for (i=0;i<n;i++) { - dst[i*4+0] = rgba[i][RCOMP]; - dst[i*4+1] = rgba[i][GCOMP]; - dst[i*4+2] = rgba[i][BCOMP]; - dst[i*4+3] = rgba[i][ACOMP]; - } - break; - case GL_BGR: - for (i=0;i<n;i++) { - dst[i*3+0] = rgba[i][BCOMP]; - dst[i*3+1] = rgba[i][GCOMP]; - dst[i*3+2] = rgba[i][RCOMP]; - } - break; - case GL_BGRA: - for (i=0;i<n;i++) { - dst[i*4+0] = rgba[i][BCOMP]; - dst[i*4+1] = rgba[i][GCOMP]; - dst[i*4+2] = rgba[i][RCOMP]; - dst[i*4+3] = rgba[i][ACOMP]; - } - break; - case GL_ABGR_EXT: - for (i=0;i<n;i++) { - dst[i*4+0] = rgba[i][ACOMP]; - dst[i*4+1] = rgba[i][BCOMP]; - dst[i*4+2] = rgba[i][GCOMP]; - dst[i*4+3] = rgba[i][RCOMP]; - } - break; - case GL_DUDV_ATI: - case GL_DU8DV8_ATI: - for (i=0;i<n;i++) { - dst[i*2+0] = rgba[i][RCOMP]; - dst[i*2+1] = rgba[i][GCOMP]; - } - break; - default: - _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); - } - } - break; - case GL_HALF_FLOAT_ARB: - { - GLhalfARB *dst = (GLhalfARB *) dstAddr; - switch (dstFormat) { - case GL_RED: - for (i=0;i<n;i++) - dst[i] = _mesa_float_to_half(rgba[i][RCOMP]); - break; - case GL_GREEN: - for (i=0;i<n;i++) - dst[i] = _mesa_float_to_half(rgba[i][GCOMP]); - break; - case GL_BLUE: - for (i=0;i<n;i++) - dst[i] = _mesa_float_to_half(rgba[i][BCOMP]); - break; - case GL_ALPHA: - for (i=0;i<n;i++) - dst[i] = _mesa_float_to_half(rgba[i][ACOMP]); - break; - case GL_LUMINANCE: - for (i=0;i<n;i++) - dst[i] = _mesa_float_to_half(luminance[i]); - break; - case GL_LUMINANCE_ALPHA: - for (i=0;i<n;i++) { - dst[i*2+0] = _mesa_float_to_half(luminance[i]); - dst[i*2+1] = _mesa_float_to_half(rgba[i][ACOMP]); - } - break; - case GL_RG: - for (i=0;i<n;i++) { - dst[i*2+0] = _mesa_float_to_half(rgba[i][RCOMP]); - dst[i*2+1] = _mesa_float_to_half(rgba[i][GCOMP]); - } - break; - case GL_RGB: - for (i=0;i<n;i++) { - dst[i*3+0] = _mesa_float_to_half(rgba[i][RCOMP]); - dst[i*3+1] = _mesa_float_to_half(rgba[i][GCOMP]); - dst[i*3+2] = _mesa_float_to_half(rgba[i][BCOMP]); - } - break; - case GL_RGBA: - for (i=0;i<n;i++) { - dst[i*4+0] = _mesa_float_to_half(rgba[i][RCOMP]); - dst[i*4+1] = _mesa_float_to_half(rgba[i][GCOMP]); - dst[i*4+2] = _mesa_float_to_half(rgba[i][BCOMP]); - dst[i*4+3] = _mesa_float_to_half(rgba[i][ACOMP]); - } - break; - case GL_BGR: - for (i=0;i<n;i++) { - dst[i*3+0] = _mesa_float_to_half(rgba[i][BCOMP]); - dst[i*3+1] = _mesa_float_to_half(rgba[i][GCOMP]); - dst[i*3+2] = _mesa_float_to_half(rgba[i][RCOMP]); - } - break; - case GL_BGRA: - for (i=0;i<n;i++) { - dst[i*4+0] = _mesa_float_to_half(rgba[i][BCOMP]); - dst[i*4+1] = _mesa_float_to_half(rgba[i][GCOMP]); - dst[i*4+2] = _mesa_float_to_half(rgba[i][RCOMP]); - dst[i*4+3] = _mesa_float_to_half(rgba[i][ACOMP]); - } - break; - case GL_ABGR_EXT: - for (i=0;i<n;i++) { - dst[i*4+0] = _mesa_float_to_half(rgba[i][ACOMP]); - dst[i*4+1] = _mesa_float_to_half(rgba[i][BCOMP]); - dst[i*4+2] = _mesa_float_to_half(rgba[i][GCOMP]); - dst[i*4+3] = _mesa_float_to_half(rgba[i][RCOMP]); - } - break; - case GL_DUDV_ATI: - case GL_DU8DV8_ATI: - for (i=0;i<n;i++) { - dst[i*2+0] = _mesa_float_to_half(rgba[i][RCOMP]); - dst[i*2+1] = _mesa_float_to_half(rgba[i][GCOMP]); - } - break; - default: - _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); - } - } - break; - case GL_UNSIGNED_BYTE_3_3_2: - if (dstFormat == GL_RGB) { - GLubyte *dst = (GLubyte *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 7.0F) << 5) - | (IROUND(rgba[i][GCOMP] * 7.0F) << 2) - | (IROUND(rgba[i][BCOMP] * 3.0F) ); - } - } - break; - case GL_UNSIGNED_BYTE_2_3_3_REV: - if (dstFormat == GL_RGB) { - GLubyte *dst = (GLubyte *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 7.0F) ) - | (IROUND(rgba[i][GCOMP] * 7.0F) << 3) - | (IROUND(rgba[i][BCOMP] * 3.0F) << 6); - } - } - break; - case GL_UNSIGNED_SHORT_5_6_5: - if (dstFormat == GL_RGB) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) << 11) - | (IROUND(rgba[i][GCOMP] * 63.0F) << 5) - | (IROUND(rgba[i][BCOMP] * 31.0F) ); - } - } - break; - case GL_UNSIGNED_SHORT_5_6_5_REV: - if (dstFormat == GL_RGB) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) ) - | (IROUND(rgba[i][GCOMP] * 63.0F) << 5) - | (IROUND(rgba[i][BCOMP] * 31.0F) << 11); - } - } - break; - case GL_UNSIGNED_SHORT_4_4_4_4: - if (dstFormat == GL_RGBA) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 15.0F) << 12) - | (IROUND(rgba[i][GCOMP] * 15.0F) << 8) - | (IROUND(rgba[i][BCOMP] * 15.0F) << 4) - | (IROUND(rgba[i][ACOMP] * 15.0F) ); - } - } - else if (dstFormat == GL_BGRA) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][BCOMP] * 15.0F) << 12) - | (IROUND(rgba[i][GCOMP] * 15.0F) << 8) - | (IROUND(rgba[i][RCOMP] * 15.0F) << 4) - | (IROUND(rgba[i][ACOMP] * 15.0F) ); - } - } - else if (dstFormat == GL_ABGR_EXT) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][ACOMP] * 15.0F) << 12) - | (IROUND(rgba[i][BCOMP] * 15.0F) << 8) - | (IROUND(rgba[i][GCOMP] * 15.0F) << 4) - | (IROUND(rgba[i][RCOMP] * 15.0F) ); - } - } - break; - case GL_UNSIGNED_SHORT_4_4_4_4_REV: - if (dstFormat == GL_RGBA) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 15.0F) ) - | (IROUND(rgba[i][GCOMP] * 15.0F) << 4) - | (IROUND(rgba[i][BCOMP] * 15.0F) << 8) - | (IROUND(rgba[i][ACOMP] * 15.0F) << 12); - } - } - else if (dstFormat == GL_BGRA) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][BCOMP] * 15.0F) ) - | (IROUND(rgba[i][GCOMP] * 15.0F) << 4) - | (IROUND(rgba[i][RCOMP] * 15.0F) << 8) - | (IROUND(rgba[i][ACOMP] * 15.0F) << 12); - } - } - else if (dstFormat == GL_ABGR_EXT) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][ACOMP] * 15.0F) ) - | (IROUND(rgba[i][BCOMP] * 15.0F) << 4) - | (IROUND(rgba[i][GCOMP] * 15.0F) << 8) - | (IROUND(rgba[i][RCOMP] * 15.0F) << 12); - } - } - break; - case GL_UNSIGNED_SHORT_5_5_5_1: - if (dstFormat == GL_RGBA) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) << 11) - | (IROUND(rgba[i][GCOMP] * 31.0F) << 6) - | (IROUND(rgba[i][BCOMP] * 31.0F) << 1) - | (IROUND(rgba[i][ACOMP] * 1.0F) ); - } - } - else if (dstFormat == GL_BGRA) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][BCOMP] * 31.0F) << 11) - | (IROUND(rgba[i][GCOMP] * 31.0F) << 6) - | (IROUND(rgba[i][RCOMP] * 31.0F) << 1) - | (IROUND(rgba[i][ACOMP] * 1.0F) ); - } - } - else if (dstFormat == GL_ABGR_EXT) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][ACOMP] * 31.0F) << 11) - | (IROUND(rgba[i][BCOMP] * 31.0F) << 6) - | (IROUND(rgba[i][GCOMP] * 31.0F) << 1) - | (IROUND(rgba[i][RCOMP] * 1.0F) ); - } - } - break; - case GL_UNSIGNED_SHORT_1_5_5_5_REV: - if (dstFormat == GL_RGBA) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) ) - | (IROUND(rgba[i][GCOMP] * 31.0F) << 5) - | (IROUND(rgba[i][BCOMP] * 31.0F) << 10) - | (IROUND(rgba[i][ACOMP] * 1.0F) << 15); - } - } - else if (dstFormat == GL_BGRA) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][BCOMP] * 31.0F) ) - | (IROUND(rgba[i][GCOMP] * 31.0F) << 5) - | (IROUND(rgba[i][RCOMP] * 31.0F) << 10) - | (IROUND(rgba[i][ACOMP] * 1.0F) << 15); - } - } - else if (dstFormat == GL_ABGR_EXT) { - GLushort *dst = (GLushort *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][ACOMP] * 31.0F) ) - | (IROUND(rgba[i][BCOMP] * 31.0F) << 5) - | (IROUND(rgba[i][GCOMP] * 31.0F) << 10) - | (IROUND(rgba[i][RCOMP] * 1.0F) << 15); - } - } - break; - case GL_UNSIGNED_INT_8_8_8_8: - if (dstFormat == GL_RGBA) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 255.F) << 24) - | (IROUND(rgba[i][GCOMP] * 255.F) << 16) - | (IROUND(rgba[i][BCOMP] * 255.F) << 8) - | (IROUND(rgba[i][ACOMP] * 255.F) ); - } - } - else if (dstFormat == GL_BGRA) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][BCOMP] * 255.F) << 24) - | (IROUND(rgba[i][GCOMP] * 255.F) << 16) - | (IROUND(rgba[i][RCOMP] * 255.F) << 8) - | (IROUND(rgba[i][ACOMP] * 255.F) ); - } - } - else if (dstFormat == GL_ABGR_EXT) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][ACOMP] * 255.F) << 24) - | (IROUND(rgba[i][BCOMP] * 255.F) << 16) - | (IROUND(rgba[i][GCOMP] * 255.F) << 8) - | (IROUND(rgba[i][RCOMP] * 255.F) ); - } - } - break; - case GL_UNSIGNED_INT_8_8_8_8_REV: - if (dstFormat == GL_RGBA) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 255.0F) ) - | (IROUND(rgba[i][GCOMP] * 255.0F) << 8) - | (IROUND(rgba[i][BCOMP] * 255.0F) << 16) - | (IROUND(rgba[i][ACOMP] * 255.0F) << 24); - } - } - else if (dstFormat == GL_BGRA) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][BCOMP] * 255.0F) ) - | (IROUND(rgba[i][GCOMP] * 255.0F) << 8) - | (IROUND(rgba[i][RCOMP] * 255.0F) << 16) - | (IROUND(rgba[i][ACOMP] * 255.0F) << 24); - } - } - else if (dstFormat == GL_ABGR_EXT) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][ACOMP] * 255.0F) ) - | (IROUND(rgba[i][BCOMP] * 255.0F) << 8) - | (IROUND(rgba[i][GCOMP] * 255.0F) << 16) - | (IROUND(rgba[i][RCOMP] * 255.0F) << 24); - } - } - break; - case GL_UNSIGNED_INT_10_10_10_2: - if (dstFormat == GL_RGBA) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 1023.0F) << 22) - | (IROUND(rgba[i][GCOMP] * 1023.0F) << 12) - | (IROUND(rgba[i][BCOMP] * 1023.0F) << 2) - | (IROUND(rgba[i][ACOMP] * 3.0F) ); - } - } - else if (dstFormat == GL_BGRA) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][BCOMP] * 1023.0F) << 22) - | (IROUND(rgba[i][GCOMP] * 1023.0F) << 12) - | (IROUND(rgba[i][RCOMP] * 1023.0F) << 2) - | (IROUND(rgba[i][ACOMP] * 3.0F) ); - } - } - else if (dstFormat == GL_ABGR_EXT) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][ACOMP] * 1023.0F) << 22) - | (IROUND(rgba[i][BCOMP] * 1023.0F) << 12) - | (IROUND(rgba[i][GCOMP] * 1023.0F) << 2) - | (IROUND(rgba[i][RCOMP] * 3.0F) ); - } - } - break; - case GL_UNSIGNED_INT_2_10_10_10_REV: - if (dstFormat == GL_RGBA) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][RCOMP] * 1023.0F) ) - | (IROUND(rgba[i][GCOMP] * 1023.0F) << 10) - | (IROUND(rgba[i][BCOMP] * 1023.0F) << 20) - | (IROUND(rgba[i][ACOMP] * 3.0F) << 30); - } - } - else if (dstFormat == GL_BGRA) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][BCOMP] * 1023.0F) ) - | (IROUND(rgba[i][GCOMP] * 1023.0F) << 10) - | (IROUND(rgba[i][RCOMP] * 1023.0F) << 20) - | (IROUND(rgba[i][ACOMP] * 3.0F) << 30); - } - } - else if (dstFormat == GL_ABGR_EXT) { - GLuint *dst = (GLuint *) dstAddr; - for (i=0;i<n;i++) { - dst[i] = (IROUND(rgba[i][ACOMP] * 1023.0F) ) - | (IROUND(rgba[i][BCOMP] * 1023.0F) << 10) - | (IROUND(rgba[i][GCOMP] * 1023.0F) << 20) - | (IROUND(rgba[i][RCOMP] * 3.0F) << 30); - } - } - break; - default: - _mesa_problem(ctx, "bad type in _mesa_pack_rgba_span_float"); - return; - } - - if (dstPacking->SwapBytes) { - GLint swapSize = _mesa_sizeof_packed_type(dstType); - if (swapSize == 2) { - if (dstPacking->SwapBytes) { - _mesa_swap2((GLushort *) dstAddr, n * comps); - } - } - else if (swapSize == 4) { - if (dstPacking->SwapBytes) { - _mesa_swap4((GLuint *) dstAddr, n * comps); - } - } - } -} - - -#define SWAP2BYTE(VALUE) \ - { \ - GLubyte *bytes = (GLubyte *) &(VALUE); \ - GLubyte tmp = bytes[0]; \ - bytes[0] = bytes[1]; \ - bytes[1] = tmp; \ - } - -#define SWAP4BYTE(VALUE) \ - { \ - GLubyte *bytes = (GLubyte *) &(VALUE); \ - GLubyte tmp = bytes[0]; \ - bytes[0] = bytes[3]; \ - bytes[3] = tmp; \ - tmp = bytes[1]; \ - bytes[1] = bytes[2]; \ - bytes[2] = tmp; \ - } - - -static void -extract_uint_indexes(GLuint n, GLuint indexes[], - GLenum srcFormat, GLenum srcType, const GLvoid *src, - const struct gl_pixelstore_attrib *unpack ) -{ - ASSERT(srcFormat == GL_COLOR_INDEX || srcFormat == GL_STENCIL_INDEX); - - ASSERT(srcType == GL_BITMAP || - srcType == GL_UNSIGNED_BYTE || - srcType == GL_BYTE || - srcType == GL_UNSIGNED_SHORT || - srcType == GL_SHORT || - srcType == GL_UNSIGNED_INT || - srcType == GL_INT || - srcType == GL_UNSIGNED_INT_24_8_EXT || - srcType == GL_HALF_FLOAT_ARB || - srcType == GL_FLOAT); - - switch (srcType) { - case GL_BITMAP: - { - GLubyte *ubsrc = (GLubyte *) src; - if (unpack->LsbFirst) { - GLubyte mask = 1 << (unpack->SkipPixels & 0x7); - GLuint i; - for (i = 0; i < n; i++) { - indexes[i] = (*ubsrc & mask) ? 1 : 0; - if (mask == 128) { - mask = 1; - ubsrc++; - } - else { - mask = mask << 1; - } - } - } - else { - GLubyte mask = 128 >> (unpack->SkipPixels & 0x7); - GLuint i; - for (i = 0; i < n; i++) { - indexes[i] = (*ubsrc & mask) ? 1 : 0; - if (mask == 1) { - mask = 128; - ubsrc++; - } - else { - mask = mask >> 1; - } - } - } - } - break; - case GL_UNSIGNED_BYTE: - { - GLuint i; - const GLubyte *s = (const GLubyte *) src; - for (i = 0; i < n; i++) - indexes[i] = s[i]; - } - break; - case GL_BYTE: - { - GLuint i; - const GLbyte *s = (const GLbyte *) src; - for (i = 0; i < n; i++) - indexes[i] = s[i]; - } - break; - case GL_UNSIGNED_SHORT: - { - GLuint i; - const GLushort *s = (const GLushort *) src; - if (unpack->SwapBytes) { - for (i = 0; i < n; i++) { - GLushort value = s[i]; - SWAP2BYTE(value); - indexes[i] = value; - } - } - else { - for (i = 0; i < n; i++) - indexes[i] = s[i]; - } - } - break; - case GL_SHORT: - { - GLuint i; - const GLshort *s = (const GLshort *) src; - if (unpack->SwapBytes) { - for (i = 0; i < n; i++) { - GLshort value = s[i]; - SWAP2BYTE(value); - indexes[i] = value; - } - } - else { - for (i = 0; i < n; i++) - indexes[i] = s[i]; - } - } - break; - case GL_UNSIGNED_INT: - { - GLuint i; - const GLuint *s = (const GLuint *) src; - if (unpack->SwapBytes) { - for (i = 0; i < n; i++) { - GLuint value = s[i]; - SWAP4BYTE(value); - indexes[i] = value; - } - } - else { - for (i = 0; i < n; i++) - indexes[i] = s[i]; - } - } - break; - case GL_INT: - { - GLuint i; - const GLint *s = (const GLint *) src; - if (unpack->SwapBytes) { - for (i = 0; i < n; i++) { - GLint value = s[i]; - SWAP4BYTE(value); - indexes[i] = value; - } - } - else { - for (i = 0; i < n; i++) - indexes[i] = s[i]; - } - } - break; - case GL_FLOAT: - { - GLuint i; - const GLfloat *s = (const GLfloat *) src; - if (unpack->SwapBytes) { - for (i = 0; i < n; i++) { - GLfloat value = s[i]; - SWAP4BYTE(value); - indexes[i] = (GLuint) value; - } - } - else { - for (i = 0; i < n; i++) - indexes[i] = (GLuint) s[i]; - } - } - break; - case GL_HALF_FLOAT_ARB: - { - GLuint i; - const GLhalfARB *s = (const GLhalfARB *) src; - if (unpack->SwapBytes) { - for (i = 0; i < n; i++) { - GLhalfARB value = s[i]; - SWAP2BYTE(value); - indexes[i] = (GLuint) _mesa_half_to_float(value); - } - } - else { - for (i = 0; i < n; i++) - indexes[i] = (GLuint) _mesa_half_to_float(s[i]); - } - } - break; - case GL_UNSIGNED_INT_24_8_EXT: - { - GLuint i; - const GLuint *s = (const GLuint *) src; - if (unpack->SwapBytes) { - for (i = 0; i < n; i++) { - GLuint value = s[i]; - SWAP4BYTE(value); - indexes[i] = value & 0xff; /* lower 8 bits */ - } - } - else { - for (i = 0; i < n; i++) - indexes[i] = s[i] & 0xff; /* lower 8 bits */ - } - } - break; - - default: - _mesa_problem(NULL, "bad srcType in extract_uint_indexes"); - return; - } -} - - -/* - * This function extracts floating point RGBA values from arbitrary - * image data. srcFormat and srcType are the format and type parameters - * passed to glDrawPixels, glTexImage[123]D, glTexSubImage[123]D, etc. - * - * Refering to section 3.6.4 of the OpenGL 1.2 spec, this function - * implements the "Conversion to floating point", "Conversion to RGB", - * and "Final Expansion to RGBA" operations. - * - * Args: n - number of pixels - * rgba - output colors - * srcFormat - format of incoming data - * srcType - data type of incoming data - * src - source data pointer - * swapBytes - perform byteswapping of incoming data? - */ -static void -extract_float_rgba(GLuint n, GLfloat rgba[][4], - GLenum srcFormat, GLenum srcType, const GLvoid *src, - GLboolean swapBytes) -{ - GLint redIndex, greenIndex, blueIndex, alphaIndex; - GLint stride; - GLint rComp, bComp, gComp, aComp; - GLboolean intFormat; - GLfloat rs = 1.0f, gs = 1.0f, bs = 1.0f, as = 1.0f; /* scale factors */ - - ASSERT(srcFormat == GL_RED || - srcFormat == GL_GREEN || - srcFormat == GL_BLUE || - srcFormat == GL_ALPHA || - srcFormat == GL_LUMINANCE || - srcFormat == GL_LUMINANCE_ALPHA || - srcFormat == GL_INTENSITY || - srcFormat == GL_RG || - srcFormat == GL_RGB || - srcFormat == GL_BGR || - srcFormat == GL_RGBA || - srcFormat == GL_BGRA || - srcFormat == GL_ABGR_EXT || - srcFormat == GL_DU8DV8_ATI || - srcFormat == GL_DUDV_ATI || - srcFormat == GL_RED_INTEGER_EXT || - srcFormat == GL_GREEN_INTEGER_EXT || - srcFormat == GL_BLUE_INTEGER_EXT || - srcFormat == GL_ALPHA_INTEGER_EXT || - srcFormat == GL_RGB_INTEGER_EXT || - srcFormat == GL_RGBA_INTEGER_EXT || - srcFormat == GL_BGR_INTEGER_EXT || - srcFormat == GL_BGRA_INTEGER_EXT || - srcFormat == GL_LUMINANCE_INTEGER_EXT || - srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT); - - ASSERT(srcType == GL_UNSIGNED_BYTE || - srcType == GL_BYTE || - srcType == GL_UNSIGNED_SHORT || - srcType == GL_SHORT || - srcType == GL_UNSIGNED_INT || - srcType == GL_INT || - srcType == GL_HALF_FLOAT_ARB || - srcType == GL_FLOAT || - srcType == GL_UNSIGNED_BYTE_3_3_2 || - srcType == GL_UNSIGNED_BYTE_2_3_3_REV || - srcType == GL_UNSIGNED_SHORT_5_6_5 || - srcType == GL_UNSIGNED_SHORT_5_6_5_REV || - srcType == GL_UNSIGNED_SHORT_4_4_4_4 || - srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV || - srcType == GL_UNSIGNED_SHORT_5_5_5_1 || - srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV || - srcType == GL_UNSIGNED_INT_8_8_8_8 || - srcType == GL_UNSIGNED_INT_8_8_8_8_REV || - srcType == GL_UNSIGNED_INT_10_10_10_2 || - srcType == GL_UNSIGNED_INT_2_10_10_10_REV); - - rComp = gComp = bComp = aComp = -1; - - switch (srcFormat) { - case GL_RED: - case GL_RED_INTEGER_EXT: - redIndex = 0; - greenIndex = blueIndex = alphaIndex = -1; - stride = 1; - break; - case GL_GREEN: - case GL_GREEN_INTEGER_EXT: - greenIndex = 0; - redIndex = blueIndex = alphaIndex = -1; - stride = 1; - break; - case GL_BLUE: - case GL_BLUE_INTEGER_EXT: - blueIndex = 0; - redIndex = greenIndex = alphaIndex = -1; - stride = 1; - break; - case GL_ALPHA: - case GL_ALPHA_INTEGER_EXT: - redIndex = greenIndex = blueIndex = -1; - alphaIndex = 0; - stride = 1; - break; - case GL_LUMINANCE: - case GL_LUMINANCE_INTEGER_EXT: - redIndex = greenIndex = blueIndex = 0; - alphaIndex = -1; - stride = 1; - break; - case GL_LUMINANCE_ALPHA: - case GL_LUMINANCE_ALPHA_INTEGER_EXT: - redIndex = greenIndex = blueIndex = 0; - alphaIndex = 1; - stride = 2; - break; - case GL_INTENSITY: - redIndex = greenIndex = blueIndex = alphaIndex = 0; - stride = 1; - break; - case GL_RG: - case GL_RG_INTEGER: - redIndex = 0; - greenIndex = 1; - blueIndex = -1; - alphaIndex = -1; - rComp = 0; - gComp = 1; - bComp = 2; - aComp = 3; - stride = 2; - break; - case GL_RGB: - case GL_RGB_INTEGER: - redIndex = 0; - greenIndex = 1; - blueIndex = 2; - alphaIndex = -1; - rComp = 0; - gComp = 1; - bComp = 2; - aComp = 3; - stride = 3; - break; - case GL_BGR: - redIndex = 2; - greenIndex = 1; - blueIndex = 0; - alphaIndex = -1; - rComp = 2; - gComp = 1; - bComp = 0; - aComp = 3; - stride = 3; - break; - case GL_RGBA: - case GL_RGBA_INTEGER: - redIndex = 0; - greenIndex = 1; - blueIndex = 2; - alphaIndex = 3; - rComp = 0; - gComp = 1; - bComp = 2; - aComp = 3; - stride = 4; - break; - case GL_BGRA: - redIndex = 2; - greenIndex = 1; - blueIndex = 0; - alphaIndex = 3; - rComp = 2; - gComp = 1; - bComp = 0; - aComp = 3; - stride = 4; - break; - case GL_ABGR_EXT: - redIndex = 3; - greenIndex = 2; - blueIndex = 1; - alphaIndex = 0; - rComp = 3; - gComp = 2; - bComp = 1; - aComp = 0; - stride = 4; - break; - case GL_DU8DV8_ATI: - case GL_DUDV_ATI: - redIndex = 0; - greenIndex = 1; - blueIndex = -1; - alphaIndex = -1; - stride = 2; - break; - default: - _mesa_problem(NULL, "bad srcFormat %s in extract float data", - _mesa_lookup_enum_by_nr(srcFormat)); - return; - } - - intFormat = _mesa_is_integer_format(srcFormat); - -#define PROCESS(INDEX, CHANNEL, DEFAULT, DEFAULT_INT, TYPE, CONVERSION) \ - if ((INDEX) < 0) { \ - GLuint i; \ - if (intFormat) { \ - for (i = 0; i < n; i++) { \ - rgba[i][CHANNEL] = DEFAULT_INT; \ - } \ - } \ - else { \ - for (i = 0; i < n; i++) { \ - rgba[i][CHANNEL] = DEFAULT; \ - } \ - } \ - } \ - else if (swapBytes) { \ - const TYPE *s = (const TYPE *) src; \ - GLuint i; \ - for (i = 0; i < n; i++) { \ - TYPE value = s[INDEX]; \ - if (sizeof(TYPE) == 2) { \ - SWAP2BYTE(value); \ - } \ - else if (sizeof(TYPE) == 4) { \ - SWAP4BYTE(value); \ - } \ - if (intFormat) \ - rgba[i][CHANNEL] = (GLfloat) value; \ - else \ - rgba[i][CHANNEL] = (GLfloat) CONVERSION(value); \ - s += stride; \ - } \ - } \ - else { \ - const TYPE *s = (const TYPE *) src; \ - GLuint i; \ - if (intFormat) { \ - for (i = 0; i < n; i++) { \ - rgba[i][CHANNEL] = (GLfloat) s[INDEX]; \ - s += stride; \ - } \ - } \ - else { \ - for (i = 0; i < n; i++) { \ - rgba[i][CHANNEL] = (GLfloat) CONVERSION(s[INDEX]); \ - s += stride; \ - } \ - } \ - } - - switch (srcType) { - case GL_UNSIGNED_BYTE: - PROCESS(redIndex, RCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT); - PROCESS(greenIndex, GCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT); - PROCESS(blueIndex, BCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT); - PROCESS(alphaIndex, ACOMP, 1.0F, 255, GLubyte, UBYTE_TO_FLOAT); - break; - case GL_BYTE: - PROCESS(redIndex, RCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT); - PROCESS(greenIndex, GCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT); - PROCESS(blueIndex, BCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT); - PROCESS(alphaIndex, ACOMP, 1.0F, 127, GLbyte, BYTE_TO_FLOAT); - break; - case GL_UNSIGNED_SHORT: - PROCESS(redIndex, RCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT); - PROCESS(greenIndex, GCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT); - PROCESS(blueIndex, BCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT); - PROCESS(alphaIndex, ACOMP, 1.0F, 0xffff, GLushort, USHORT_TO_FLOAT); - break; - case GL_SHORT: - PROCESS(redIndex, RCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT); - PROCESS(greenIndex, GCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT); - PROCESS(blueIndex, BCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT); - PROCESS(alphaIndex, ACOMP, 1.0F, 32767, GLshort, SHORT_TO_FLOAT); - break; - case GL_UNSIGNED_INT: - PROCESS(redIndex, RCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT); - PROCESS(greenIndex, GCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT); - PROCESS(blueIndex, BCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT); - PROCESS(alphaIndex, ACOMP, 1.0F, 0xffffffff, GLuint, UINT_TO_FLOAT); - break; - case GL_INT: - PROCESS(redIndex, RCOMP, 0.0F, 0, GLint, INT_TO_FLOAT); - PROCESS(greenIndex, GCOMP, 0.0F, 0, GLint, INT_TO_FLOAT); - PROCESS(blueIndex, BCOMP, 0.0F, 0, GLint, INT_TO_FLOAT); - PROCESS(alphaIndex, ACOMP, 1.0F, 2147483647, GLint, INT_TO_FLOAT); - break; - case GL_FLOAT: - PROCESS(redIndex, RCOMP, 0.0F, 0.0F, GLfloat, (GLfloat)); - PROCESS(greenIndex, GCOMP, 0.0F, 0.0F, GLfloat, (GLfloat)); - PROCESS(blueIndex, BCOMP, 0.0F, 0.0F, GLfloat, (GLfloat)); - PROCESS(alphaIndex, ACOMP, 1.0F, 1.0F, GLfloat, (GLfloat)); - break; - case GL_HALF_FLOAT_ARB: - PROCESS(redIndex, RCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float); - PROCESS(greenIndex, GCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float); - PROCESS(blueIndex, BCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float); - PROCESS(alphaIndex, ACOMP, 1.0F, 1.0F, GLhalfARB, _mesa_half_to_float); - break; - case GL_UNSIGNED_BYTE_3_3_2: - { - const GLubyte *ubsrc = (const GLubyte *) src; - GLuint i; - if (!intFormat) { - rs = 1.0F / 7.0F; - gs = 1.0F / 7.0F; - bs = 1.0F / 3.0F; - } - for (i = 0; i < n; i ++) { - GLubyte p = ubsrc[i]; - rgba[i][rComp] = ((p >> 5) ) * rs; - rgba[i][gComp] = ((p >> 2) & 0x7) * gs; - rgba[i][bComp] = ((p ) & 0x3) * bs; - rgba[i][aComp] = 1.0F; - } - } - break; - case GL_UNSIGNED_BYTE_2_3_3_REV: - { - const GLubyte *ubsrc = (const GLubyte *) src; - GLuint i; - if (!intFormat) { - rs = 1.0F / 7.0F; - gs = 1.0F / 7.0F; - bs = 1.0F / 3.0F; - } - for (i = 0; i < n; i ++) { - GLubyte p = ubsrc[i]; - rgba[i][rComp] = ((p ) & 0x7) * rs; - rgba[i][gComp] = ((p >> 3) & 0x7) * gs; - rgba[i][bComp] = ((p >> 6) ) * bs; - rgba[i][aComp] = 1.0F; - } - } - break; - case GL_UNSIGNED_SHORT_5_6_5: - if (!intFormat) { - rs = 1.0F / 31.0F; - gs = 1.0F / 63.0F; - bs = 1.0F / 31.0F; - } - if (swapBytes) { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - SWAP2BYTE(p); - rgba[i][rComp] = ((p >> 11) ) * rs; - rgba[i][gComp] = ((p >> 5) & 0x3f) * gs; - rgba[i][bComp] = ((p ) & 0x1f) * bs; - rgba[i][aComp] = 1.0F; - } - } - else { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - rgba[i][rComp] = ((p >> 11) ) * rs; - rgba[i][gComp] = ((p >> 5) & 0x3f) * gs; - rgba[i][bComp] = ((p ) & 0x1f) * bs; - rgba[i][aComp] = 1.0F; - } - } - break; - case GL_UNSIGNED_SHORT_5_6_5_REV: - if (!intFormat) { - rs = 1.0F / 31.0F; - gs = 1.0F / 63.0F; - bs = 1.0F / 31.0F; - } - if (swapBytes) { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - SWAP2BYTE(p); - rgba[i][rComp] = ((p ) & 0x1f) * rs; - rgba[i][gComp] = ((p >> 5) & 0x3f) * gs; - rgba[i][bComp] = ((p >> 11) ) * bs; - rgba[i][aComp] = 1.0F; - } - } - else { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - rgba[i][rComp] = ((p ) & 0x1f) * rs; - rgba[i][gComp] = ((p >> 5) & 0x3f) * gs; - rgba[i][bComp] = ((p >> 11) ) * bs; - rgba[i][aComp] = 1.0F; - } - } - break; - case GL_UNSIGNED_SHORT_4_4_4_4: - if (!intFormat) { - rs = gs = bs = as = 1.0F / 15.0F; - } - if (swapBytes) { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - SWAP2BYTE(p); - rgba[i][rComp] = ((p >> 12) ) * rs; - rgba[i][gComp] = ((p >> 8) & 0xf) * gs; - rgba[i][bComp] = ((p >> 4) & 0xf) * bs; - rgba[i][aComp] = ((p ) & 0xf) * as; - } - } - else { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - rgba[i][rComp] = ((p >> 12) ) * rs; - rgba[i][gComp] = ((p >> 8) & 0xf) * gs; - rgba[i][bComp] = ((p >> 4) & 0xf) * bs; - rgba[i][aComp] = ((p ) & 0xf) * as; - } - } - break; - case GL_UNSIGNED_SHORT_4_4_4_4_REV: - if (!intFormat) { - rs = gs = bs = as = 1.0F / 15.0F; - } - if (swapBytes) { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - SWAP2BYTE(p); - rgba[i][rComp] = ((p ) & 0xf) * rs; - rgba[i][gComp] = ((p >> 4) & 0xf) * gs; - rgba[i][bComp] = ((p >> 8) & 0xf) * bs; - rgba[i][aComp] = ((p >> 12) ) * as; - } - } - else { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - rgba[i][rComp] = ((p ) & 0xf) * rs; - rgba[i][gComp] = ((p >> 4) & 0xf) * gs; - rgba[i][bComp] = ((p >> 8) & 0xf) * bs; - rgba[i][aComp] = ((p >> 12) ) * as; - } - } - break; - case GL_UNSIGNED_SHORT_5_5_5_1: - if (!intFormat) { - rs = gs = bs = 1.0F / 31.0F; - } - if (swapBytes) { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - SWAP2BYTE(p); - rgba[i][rComp] = ((p >> 11) ) * rs; - rgba[i][gComp] = ((p >> 6) & 0x1f) * gs; - rgba[i][bComp] = ((p >> 1) & 0x1f) * bs; - rgba[i][aComp] = ((p ) & 0x1) * as; - } - } - else { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - rgba[i][rComp] = ((p >> 11) ) * rs; - rgba[i][gComp] = ((p >> 6) & 0x1f) * gs; - rgba[i][bComp] = ((p >> 1) & 0x1f) * bs; - rgba[i][aComp] = ((p ) & 0x1) * as; - } - } - break; - case GL_UNSIGNED_SHORT_1_5_5_5_REV: - if (!intFormat) { - rs = gs = bs = 1.0F / 31.0F; - } - if (swapBytes) { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - SWAP2BYTE(p); - rgba[i][rComp] = ((p ) & 0x1f) * rs; - rgba[i][gComp] = ((p >> 5) & 0x1f) * gs; - rgba[i][bComp] = ((p >> 10) & 0x1f) * bs; - rgba[i][aComp] = ((p >> 15) ) * as; - } - } - else { - const GLushort *ussrc = (const GLushort *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLushort p = ussrc[i]; - rgba[i][rComp] = ((p ) & 0x1f) * rs; - rgba[i][gComp] = ((p >> 5) & 0x1f) * gs; - rgba[i][bComp] = ((p >> 10) & 0x1f) * bs; - rgba[i][aComp] = ((p >> 15) ) * as; - } - } - break; - case GL_UNSIGNED_INT_8_8_8_8: - if (swapBytes) { - const GLuint *uisrc = (const GLuint *) src; - GLuint i; - if (intFormat) { - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - rgba[i][rComp] = (GLfloat) ((p ) & 0xff); - rgba[i][gComp] = (GLfloat) ((p >> 8) & 0xff); - rgba[i][bComp] = (GLfloat) ((p >> 16) & 0xff); - rgba[i][aComp] = (GLfloat) ((p >> 24) ); - } - } - else { - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - rgba[i][rComp] = UBYTE_TO_FLOAT((p ) & 0xff); - rgba[i][gComp] = UBYTE_TO_FLOAT((p >> 8) & 0xff); - rgba[i][bComp] = UBYTE_TO_FLOAT((p >> 16) & 0xff); - rgba[i][aComp] = UBYTE_TO_FLOAT((p >> 24) ); - } - } - } - else { - const GLuint *uisrc = (const GLuint *) src; - GLuint i; - if (intFormat) { - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - rgba[i][rComp] = (GLfloat) ((p >> 24) ); - rgba[i][gComp] = (GLfloat) ((p >> 16) & 0xff); - rgba[i][bComp] = (GLfloat) ((p >> 8) & 0xff); - rgba[i][aComp] = (GLfloat) ((p ) & 0xff); - } - } - else { - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - rgba[i][rComp] = UBYTE_TO_FLOAT((p >> 24) ); - rgba[i][gComp] = UBYTE_TO_FLOAT((p >> 16) & 0xff); - rgba[i][bComp] = UBYTE_TO_FLOAT((p >> 8) & 0xff); - rgba[i][aComp] = UBYTE_TO_FLOAT((p ) & 0xff); - } - } - } - break; - case GL_UNSIGNED_INT_8_8_8_8_REV: - if (swapBytes) { - const GLuint *uisrc = (const GLuint *) src; - GLuint i; - if (intFormat) { - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - rgba[i][rComp] = (GLfloat) ((p >> 24) ); - rgba[i][gComp] = (GLfloat) ((p >> 16) & 0xff); - rgba[i][bComp] = (GLfloat) ((p >> 8) & 0xff); - rgba[i][aComp] = (GLfloat) ((p ) & 0xff); - } - } - else { - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - rgba[i][rComp] = UBYTE_TO_FLOAT((p >> 24) ); - rgba[i][gComp] = UBYTE_TO_FLOAT((p >> 16) & 0xff); - rgba[i][bComp] = UBYTE_TO_FLOAT((p >> 8) & 0xff); - rgba[i][aComp] = UBYTE_TO_FLOAT((p ) & 0xff); - } - } - } - else { - const GLuint *uisrc = (const GLuint *) src; - GLuint i; - if (intFormat) { - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - rgba[i][rComp] = (GLfloat) ((p ) & 0xff); - rgba[i][gComp] = (GLfloat) ((p >> 8) & 0xff); - rgba[i][bComp] = (GLfloat) ((p >> 16) & 0xff); - rgba[i][aComp] = (GLfloat) ((p >> 24) ); - } - } - else { - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - rgba[i][rComp] = UBYTE_TO_FLOAT((p ) & 0xff); - rgba[i][gComp] = UBYTE_TO_FLOAT((p >> 8) & 0xff); - rgba[i][bComp] = UBYTE_TO_FLOAT((p >> 16) & 0xff); - rgba[i][aComp] = UBYTE_TO_FLOAT((p >> 24) ); - } - } - } - break; - case GL_UNSIGNED_INT_10_10_10_2: - if (!intFormat) { - rs = 1.0F / 1023.0F; - gs = 1.0F / 1023.0F; - bs = 1.0F / 1023.0F; - as = 1.0F / 3.0F; - } - if (swapBytes) { - const GLuint *uisrc = (const GLuint *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - SWAP4BYTE(p); - rgba[i][rComp] = ((p >> 22) ) * rs; - rgba[i][gComp] = ((p >> 12) & 0x3ff) * gs; - rgba[i][bComp] = ((p >> 2) & 0x3ff) * bs; - rgba[i][aComp] = ((p ) & 0x3 ) * as; - } - } - else { - const GLuint *uisrc = (const GLuint *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - rgba[i][rComp] = ((p >> 22) ) * rs; - rgba[i][gComp] = ((p >> 12) & 0x3ff) * gs; - rgba[i][bComp] = ((p >> 2) & 0x3ff) * bs; - rgba[i][aComp] = ((p ) & 0x3 ) * as; - } - } - break; - case GL_UNSIGNED_INT_2_10_10_10_REV: - if (!intFormat) { - rs = 1.0F / 1023.0F; - gs = 1.0F / 1023.0F; - bs = 1.0F / 1023.0F; - as = 1.0F / 3.0F; - } - if (swapBytes) { - const GLuint *uisrc = (const GLuint *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - SWAP4BYTE(p); - rgba[i][rComp] = ((p ) & 0x3ff) * rs; - rgba[i][gComp] = ((p >> 10) & 0x3ff) * gs; - rgba[i][bComp] = ((p >> 20) & 0x3ff) * bs; - rgba[i][aComp] = ((p >> 30) ) * as; - } - } - else { - const GLuint *uisrc = (const GLuint *) src; - GLuint i; - for (i = 0; i < n; i ++) { - GLuint p = uisrc[i]; - rgba[i][rComp] = ((p ) & 0x3ff) * rs; - rgba[i][gComp] = ((p >> 10) & 0x3ff) * gs; - rgba[i][bComp] = ((p >> 20) & 0x3ff) * bs; - rgba[i][aComp] = ((p >> 30) ) * as; - } - } - break; - default: - _mesa_problem(NULL, "bad srcType in extract float data"); - break; - } -} - - -/* - * Unpack a row of color image data from a client buffer according to - * the pixel unpacking parameters. - * Return GLchan values in the specified dest image format. - * This is used by glDrawPixels and glTexImage?D(). - * \param ctx - the context - * n - number of pixels in the span - * dstFormat - format of destination color array - * dest - the destination color array - * srcFormat - source image format - * srcType - source image data type - * source - source image pointer - * srcPacking - pixel unpacking parameters - * transferOps - bitmask of IMAGE_*_BIT values of operations to apply - * - * XXX perhaps expand this to process whole images someday. - */ -void -_mesa_unpack_color_span_chan( struct gl_context *ctx, - GLuint n, GLenum dstFormat, GLchan dest[], - GLenum srcFormat, GLenum srcType, - const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking, - GLbitfield transferOps ) -{ - ASSERT(dstFormat == GL_ALPHA || - dstFormat == GL_LUMINANCE || - dstFormat == GL_LUMINANCE_ALPHA || - dstFormat == GL_INTENSITY || - dstFormat == GL_RED || - dstFormat == GL_RG || - dstFormat == GL_RGB || - dstFormat == GL_RGBA || - dstFormat == GL_COLOR_INDEX); - - ASSERT(srcFormat == GL_RED || - srcFormat == GL_GREEN || - srcFormat == GL_BLUE || - srcFormat == GL_ALPHA || - srcFormat == GL_LUMINANCE || - srcFormat == GL_LUMINANCE_ALPHA || - srcFormat == GL_INTENSITY || - srcFormat == GL_RG || - srcFormat == GL_RGB || - srcFormat == GL_BGR || - srcFormat == GL_RGBA || - srcFormat == GL_BGRA || - srcFormat == GL_ABGR_EXT || - srcFormat == GL_COLOR_INDEX); - - ASSERT(srcType == GL_BITMAP || - srcType == GL_UNSIGNED_BYTE || - srcType == GL_BYTE || - srcType == GL_UNSIGNED_SHORT || - srcType == GL_SHORT || - srcType == GL_UNSIGNED_INT || - srcType == GL_INT || - srcType == GL_HALF_FLOAT_ARB || - srcType == GL_FLOAT || - srcType == GL_UNSIGNED_BYTE_3_3_2 || - srcType == GL_UNSIGNED_BYTE_2_3_3_REV || - srcType == GL_UNSIGNED_SHORT_5_6_5 || - srcType == GL_UNSIGNED_SHORT_5_6_5_REV || - srcType == GL_UNSIGNED_SHORT_4_4_4_4 || - srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV || - srcType == GL_UNSIGNED_SHORT_5_5_5_1 || - srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV || - srcType == GL_UNSIGNED_INT_8_8_8_8 || - srcType == GL_UNSIGNED_INT_8_8_8_8_REV || - srcType == GL_UNSIGNED_INT_10_10_10_2 || - srcType == GL_UNSIGNED_INT_2_10_10_10_REV); - - /* Try simple cases first */ - if (transferOps == 0) { - if (srcType == CHAN_TYPE) { - if (dstFormat == GL_RGBA) { - if (srcFormat == GL_RGBA) { - memcpy( dest, source, n * 4 * sizeof(GLchan) ); - return; - } - else if (srcFormat == GL_RGB) { - GLuint i; - const GLchan *src = (const GLchan *) source; - GLchan *dst = dest; - for (i = 0; i < n; i++) { - dst[0] = src[0]; - dst[1] = src[1]; - dst[2] = src[2]; - dst[3] = CHAN_MAX; - src += 3; - dst += 4; - } - return; - } - } - else if (dstFormat == GL_RGB) { - if (srcFormat == GL_RGB) { - memcpy( dest, source, n * 3 * sizeof(GLchan) ); - return; - } - else if (srcFormat == GL_RGBA) { - GLuint i; - const GLchan *src = (const GLchan *) source; - GLchan *dst = dest; - for (i = 0; i < n; i++) { - dst[0] = src[0]; - dst[1] = src[1]; - dst[2] = src[2]; - src += 4; - dst += 3; - } - return; - } - } - else if (dstFormat == srcFormat) { - GLint comps = _mesa_components_in_format(srcFormat); - assert(comps > 0); - memcpy( dest, source, n * comps * sizeof(GLchan) ); - return; - } - } - /* - * Common situation, loading 8bit RGBA/RGB source images - * into 16/32 bit destination. (OSMesa16/32) - */ - else if (srcType == GL_UNSIGNED_BYTE) { - if (dstFormat == GL_RGBA) { - if (srcFormat == GL_RGB) { - GLuint i; - const GLubyte *src = (const GLubyte *) source; - GLchan *dst = dest; - for (i = 0; i < n; i++) { - dst[0] = UBYTE_TO_CHAN(src[0]); - dst[1] = UBYTE_TO_CHAN(src[1]); - dst[2] = UBYTE_TO_CHAN(src[2]); - dst[3] = CHAN_MAX; - src += 3; - dst += 4; - } - return; - } - else if (srcFormat == GL_RGBA) { - GLuint i; - const GLubyte *src = (const GLubyte *) source; - GLchan *dst = dest; - for (i = 0; i < n; i++) { - dst[0] = UBYTE_TO_CHAN(src[0]); - dst[1] = UBYTE_TO_CHAN(src[1]); - dst[2] = UBYTE_TO_CHAN(src[2]); - dst[3] = UBYTE_TO_CHAN(src[3]); - src += 4; - dst += 4; - } - return; - } - } - else if (dstFormat == GL_RGB) { - if (srcFormat == GL_RGB) { - GLuint i; - const GLubyte *src = (const GLubyte *) source; - GLchan *dst = dest; - for (i = 0; i < n; i++) { - dst[0] = UBYTE_TO_CHAN(src[0]); - dst[1] = UBYTE_TO_CHAN(src[1]); - dst[2] = UBYTE_TO_CHAN(src[2]); - src += 3; - dst += 3; - } - return; - } - else if (srcFormat == GL_RGBA) { - GLuint i; - const GLubyte *src = (const GLubyte *) source; - GLchan *dst = dest; - for (i = 0; i < n; i++) { - dst[0] = UBYTE_TO_CHAN(src[0]); - dst[1] = UBYTE_TO_CHAN(src[1]); - dst[2] = UBYTE_TO_CHAN(src[2]); - src += 4; - dst += 3; - } - return; - } - } - } - } - - - /* general solution begins here */ - { - GLint dstComponents; - GLint dstRedIndex, dstGreenIndex, dstBlueIndex, dstAlphaIndex; - GLint dstLuminanceIndex, dstIntensityIndex; - GLfloat rgba[MAX_WIDTH][4]; - - dstComponents = _mesa_components_in_format( dstFormat ); - /* source & dest image formats should have been error checked by now */ - assert(dstComponents > 0); - - /* - * Extract image data and convert to RGBA floats - */ - assert(n <= MAX_WIDTH); - if (srcFormat == GL_COLOR_INDEX) { - GLuint indexes[MAX_WIDTH]; - extract_uint_indexes(n, indexes, srcFormat, srcType, source, - srcPacking); - - if (dstFormat == GL_COLOR_INDEX) { - GLuint i; - _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes); - /* convert to GLchan and return */ - for (i = 0; i < n; i++) { - dest[i] = (GLchan) (indexes[i] & 0xff); - } - return; - } - else { - /* Convert indexes to RGBA */ - if (transferOps & IMAGE_SHIFT_OFFSET_BIT) { - shift_and_offset_ci(ctx, n, indexes); - } - _mesa_map_ci_to_rgba(ctx, n, indexes, rgba); - } - - /* Don't do RGBA scale/bias or RGBA->RGBA mapping if starting - * with color indexes. - */ - transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT); - } - else { - /* non-color index data */ - extract_float_rgba(n, rgba, srcFormat, srcType, source, - srcPacking->SwapBytes); - } - - /* Need to clamp if returning GLubytes or GLushorts */ -#if CHAN_TYPE != GL_FLOAT - transferOps |= IMAGE_CLAMP_BIT; -#endif - - if (transferOps) { - _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba); - } - - /* Now determine which color channels we need to produce. - * And determine the dest index (offset) within each color tuple. - */ - switch (dstFormat) { - case GL_ALPHA: - dstAlphaIndex = 0; - dstRedIndex = dstGreenIndex = dstBlueIndex = -1; - dstLuminanceIndex = dstIntensityIndex = -1; - break; - case GL_LUMINANCE: - dstLuminanceIndex = 0; - dstRedIndex = dstGreenIndex = dstBlueIndex = dstAlphaIndex = -1; - dstIntensityIndex = -1; - break; - case GL_LUMINANCE_ALPHA: - dstLuminanceIndex = 0; - dstAlphaIndex = 1; - dstRedIndex = dstGreenIndex = dstBlueIndex = -1; - dstIntensityIndex = -1; - break; - case GL_INTENSITY: - dstIntensityIndex = 0; - dstRedIndex = dstGreenIndex = dstBlueIndex = dstAlphaIndex = -1; - dstLuminanceIndex = -1; - break; - case GL_RED: - dstRedIndex = 0; - dstGreenIndex = dstBlueIndex = -1; - dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1; - break; - case GL_RG: - dstRedIndex = 0; - dstGreenIndex = 1; - dstBlueIndex = -1; - dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1; - break; - case GL_RGB: - dstRedIndex = 0; - dstGreenIndex = 1; - dstBlueIndex = 2; - dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1; - break; - case GL_RGBA: - dstRedIndex = 0; - dstGreenIndex = 1; - dstBlueIndex = 2; - dstAlphaIndex = 3; - dstLuminanceIndex = dstIntensityIndex = -1; - break; - default: - _mesa_problem(ctx, "bad dstFormat in _mesa_unpack_chan_span()"); - return; - } - - - /* Now return the GLchan data in the requested dstFormat */ - - if (dstRedIndex >= 0) { - GLchan *dst = dest; - GLuint i; - for (i = 0; i < n; i++) { - CLAMPED_FLOAT_TO_CHAN(dst[dstRedIndex], rgba[i][RCOMP]); - dst += dstComponents; - } - } - - if (dstGreenIndex >= 0) { - GLchan *dst = dest; - GLuint i; - for (i = 0; i < n; i++) { - CLAMPED_FLOAT_TO_CHAN(dst[dstGreenIndex], rgba[i][GCOMP]); - dst += dstComponents; - } - } - - if (dstBlueIndex >= 0) { - GLchan *dst = dest; - GLuint i; - for (i = 0; i < n; i++) { - CLAMPED_FLOAT_TO_CHAN(dst[dstBlueIndex], rgba[i][BCOMP]); - dst += dstComponents; - } - } - - if (dstAlphaIndex >= 0) { - GLchan *dst = dest; - GLuint i; - for (i = 0; i < n; i++) { - CLAMPED_FLOAT_TO_CHAN(dst[dstAlphaIndex], rgba[i][ACOMP]); - dst += dstComponents; - } - } - - if (dstIntensityIndex >= 0) { - GLchan *dst = dest; - GLuint i; - assert(dstIntensityIndex == 0); - assert(dstComponents == 1); - for (i = 0; i < n; i++) { - /* Intensity comes from red channel */ - CLAMPED_FLOAT_TO_CHAN(dst[i], rgba[i][RCOMP]); - } - } - - if (dstLuminanceIndex >= 0) { - GLchan *dst = dest; - GLuint i; - assert(dstLuminanceIndex == 0); - for (i = 0; i < n; i++) { - /* Luminance comes from red channel */ - CLAMPED_FLOAT_TO_CHAN(dst[0], rgba[i][RCOMP]); - dst += dstComponents; - } - } - } -} - - -/** - * Same as _mesa_unpack_color_span_chan(), but return GLfloat data - * instead of GLchan. - */ -void -_mesa_unpack_color_span_float( struct gl_context *ctx, - GLuint n, GLenum dstFormat, GLfloat dest[], - GLenum srcFormat, GLenum srcType, - const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking, - GLbitfield transferOps ) -{ - ASSERT(dstFormat == GL_ALPHA || - dstFormat == GL_LUMINANCE || - dstFormat == GL_LUMINANCE_ALPHA || - dstFormat == GL_INTENSITY || - dstFormat == GL_RED || - dstFormat == GL_RG || - dstFormat == GL_RGB || - dstFormat == GL_RGBA || - dstFormat == GL_COLOR_INDEX); - - ASSERT(srcFormat == GL_RED || - srcFormat == GL_GREEN || - srcFormat == GL_BLUE || - srcFormat == GL_ALPHA || - srcFormat == GL_LUMINANCE || - srcFormat == GL_LUMINANCE_ALPHA || - srcFormat == GL_INTENSITY || - srcFormat == GL_RG || - srcFormat == GL_RGB || - srcFormat == GL_BGR || - srcFormat == GL_RGBA || - srcFormat == GL_BGRA || - srcFormat == GL_ABGR_EXT || - srcFormat == GL_RED_INTEGER_EXT || - srcFormat == GL_GREEN_INTEGER_EXT || - srcFormat == GL_BLUE_INTEGER_EXT || - srcFormat == GL_ALPHA_INTEGER_EXT || - srcFormat == GL_RGB_INTEGER_EXT || - srcFormat == GL_RGBA_INTEGER_EXT || - srcFormat == GL_BGR_INTEGER_EXT || - srcFormat == GL_BGRA_INTEGER_EXT || - srcFormat == GL_LUMINANCE_INTEGER_EXT || - srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT || - srcFormat == GL_COLOR_INDEX); - - ASSERT(srcType == GL_BITMAP || - srcType == GL_UNSIGNED_BYTE || - srcType == GL_BYTE || - srcType == GL_UNSIGNED_SHORT || - srcType == GL_SHORT || - srcType == GL_UNSIGNED_INT || - srcType == GL_INT || - srcType == GL_HALF_FLOAT_ARB || - srcType == GL_FLOAT || - srcType == GL_UNSIGNED_BYTE_3_3_2 || - srcType == GL_UNSIGNED_BYTE_2_3_3_REV || - srcType == GL_UNSIGNED_SHORT_5_6_5 || - srcType == GL_UNSIGNED_SHORT_5_6_5_REV || - srcType == GL_UNSIGNED_SHORT_4_4_4_4 || - srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV || - srcType == GL_UNSIGNED_SHORT_5_5_5_1 || - srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV || - srcType == GL_UNSIGNED_INT_8_8_8_8 || - srcType == GL_UNSIGNED_INT_8_8_8_8_REV || - srcType == GL_UNSIGNED_INT_10_10_10_2 || - srcType == GL_UNSIGNED_INT_2_10_10_10_REV); - - /* general solution, no special cases, yet */ - { - GLint dstComponents; - GLint dstRedIndex, dstGreenIndex, dstBlueIndex, dstAlphaIndex; - GLint dstLuminanceIndex, dstIntensityIndex; - GLfloat rgba[MAX_WIDTH][4]; - - dstComponents = _mesa_components_in_format( dstFormat ); - /* source & dest image formats should have been error checked by now */ - assert(dstComponents > 0); - - /* - * Extract image data and convert to RGBA floats - */ - assert(n <= MAX_WIDTH); - if (srcFormat == GL_COLOR_INDEX) { - GLuint indexes[MAX_WIDTH]; - extract_uint_indexes(n, indexes, srcFormat, srcType, source, - srcPacking); - - if (dstFormat == GL_COLOR_INDEX) { - GLuint i; - _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes); - /* convert to GLchan and return */ - for (i = 0; i < n; i++) { - dest[i] = (GLchan) (indexes[i] & 0xff); - } - return; - } - else { - /* Convert indexes to RGBA */ - if (transferOps & IMAGE_SHIFT_OFFSET_BIT) { - shift_and_offset_ci(ctx, n, indexes); - } - _mesa_map_ci_to_rgba(ctx, n, indexes, rgba); - } - - /* Don't do RGBA scale/bias or RGBA->RGBA mapping if starting - * with color indexes. - */ - transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT); - } - else { - /* non-color index data */ - extract_float_rgba(n, rgba, srcFormat, srcType, source, - srcPacking->SwapBytes); - } - - if (transferOps) { - _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba); - } - - /* Now determine which color channels we need to produce. - * And determine the dest index (offset) within each color tuple. - */ - switch (dstFormat) { - case GL_ALPHA: - dstAlphaIndex = 0; - dstRedIndex = dstGreenIndex = dstBlueIndex = -1; - dstLuminanceIndex = dstIntensityIndex = -1; - break; - case GL_LUMINANCE: - dstLuminanceIndex = 0; - dstRedIndex = dstGreenIndex = dstBlueIndex = dstAlphaIndex = -1; - dstIntensityIndex = -1; - break; - case GL_LUMINANCE_ALPHA: - dstLuminanceIndex = 0; - dstAlphaIndex = 1; - dstRedIndex = dstGreenIndex = dstBlueIndex = -1; - dstIntensityIndex = -1; - break; - case GL_INTENSITY: - dstIntensityIndex = 0; - dstRedIndex = dstGreenIndex = dstBlueIndex = dstAlphaIndex = -1; - dstLuminanceIndex = -1; - break; - case GL_RED: - dstRedIndex = 0; - dstGreenIndex = dstBlueIndex = -1; - dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1; - break; - case GL_RG: - dstRedIndex = 0; - dstGreenIndex = 1; - dstBlueIndex = -1; - dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1; - break; - case GL_RGB: - dstRedIndex = 0; - dstGreenIndex = 1; - dstBlueIndex = 2; - dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1; - break; - case GL_RGBA: - dstRedIndex = 0; - dstGreenIndex = 1; - dstBlueIndex = 2; - dstAlphaIndex = 3; - dstLuminanceIndex = dstIntensityIndex = -1; - break; - default: - _mesa_problem(ctx, "bad dstFormat in _mesa_unpack_color_span_float()"); - return; - } - - /* Now pack results in the requested dstFormat */ - if (dstRedIndex >= 0) { - GLfloat *dst = dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[dstRedIndex] = rgba[i][RCOMP]; - dst += dstComponents; - } - } - - if (dstGreenIndex >= 0) { - GLfloat *dst = dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[dstGreenIndex] = rgba[i][GCOMP]; - dst += dstComponents; - } - } - - if (dstBlueIndex >= 0) { - GLfloat *dst = dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[dstBlueIndex] = rgba[i][BCOMP]; - dst += dstComponents; - } - } - - if (dstAlphaIndex >= 0) { - GLfloat *dst = dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[dstAlphaIndex] = rgba[i][ACOMP]; - dst += dstComponents; - } - } - - if (dstIntensityIndex >= 0) { - GLfloat *dst = dest; - GLuint i; - assert(dstIntensityIndex == 0); - assert(dstComponents == 1); - for (i = 0; i < n; i++) { - /* Intensity comes from red channel */ - dst[i] = rgba[i][RCOMP]; - } - } - - if (dstLuminanceIndex >= 0) { - GLfloat *dst = dest; - GLuint i; - assert(dstLuminanceIndex == 0); - for (i = 0; i < n; i++) { - /* Luminance comes from red channel */ - dst[0] = rgba[i][RCOMP]; - dst += dstComponents; - } - } - } -} - -/** - * Similar to _mesa_unpack_color_span_float(), but for dudv data instead of rgba, - * directly return GLbyte data, no transfer ops apply. - */ -void -_mesa_unpack_dudv_span_byte( struct gl_context *ctx, - GLuint n, GLenum dstFormat, GLbyte dest[], - GLenum srcFormat, GLenum srcType, - const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking, - GLbitfield transferOps ) -{ - ASSERT(dstFormat == GL_DUDV_ATI); - ASSERT(srcFormat == GL_DUDV_ATI); - - ASSERT(srcType == GL_UNSIGNED_BYTE || - srcType == GL_BYTE || - srcType == GL_UNSIGNED_SHORT || - srcType == GL_SHORT || - srcType == GL_UNSIGNED_INT || - srcType == GL_INT || - srcType == GL_HALF_FLOAT_ARB || - srcType == GL_FLOAT); - - /* general solution */ - { - GLint dstComponents; - GLfloat rgba[MAX_WIDTH][4]; - GLbyte *dst = dest; - GLuint i; - - dstComponents = _mesa_components_in_format( dstFormat ); - /* source & dest image formats should have been error checked by now */ - assert(dstComponents > 0); - - /* - * Extract image data and convert to RGBA floats - */ - assert(n <= MAX_WIDTH); - extract_float_rgba(n, rgba, srcFormat, srcType, source, - srcPacking->SwapBytes); - - - /* Now determine which color channels we need to produce. - * And determine the dest index (offset) within each color tuple. - */ - - /* Now pack results in the requested dstFormat */ - for (i = 0; i < n; i++) { - /* not sure - need clamp[-1,1] here? */ - dst[0] = FLOAT_TO_BYTE(rgba[i][RCOMP]); - dst[1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); - dst += dstComponents; - } - } -} - -/* - * Unpack a row of color index data from a client buffer according to - * the pixel unpacking parameters. - * This is (or will be) used by glDrawPixels, glTexImage[123]D, etc. - * - * Args: ctx - the context - * n - number of pixels - * dstType - destination data type - * dest - destination array - * srcType - source pixel type - * source - source data pointer - * srcPacking - pixel unpacking parameters - * transferOps - the pixel transfer operations to apply - */ -void -_mesa_unpack_index_span( const struct gl_context *ctx, GLuint n, - GLenum dstType, GLvoid *dest, - GLenum srcType, const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking, - GLbitfield transferOps ) -{ - ASSERT(srcType == GL_BITMAP || - srcType == GL_UNSIGNED_BYTE || - srcType == GL_BYTE || - srcType == GL_UNSIGNED_SHORT || - srcType == GL_SHORT || - srcType == GL_UNSIGNED_INT || - srcType == GL_INT || - srcType == GL_HALF_FLOAT_ARB || - srcType == GL_FLOAT); - - ASSERT(dstType == GL_UNSIGNED_BYTE || - dstType == GL_UNSIGNED_SHORT || - dstType == GL_UNSIGNED_INT); - - - transferOps &= (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT); - - /* - * Try simple cases first - */ - if (transferOps == 0 && srcType == GL_UNSIGNED_BYTE - && dstType == GL_UNSIGNED_BYTE) { - memcpy(dest, source, n * sizeof(GLubyte)); - } - else if (transferOps == 0 && srcType == GL_UNSIGNED_INT - && dstType == GL_UNSIGNED_INT && !srcPacking->SwapBytes) { - memcpy(dest, source, n * sizeof(GLuint)); - } - else { - /* - * general solution - */ - GLuint indexes[MAX_WIDTH]; - assert(n <= MAX_WIDTH); - - extract_uint_indexes(n, indexes, GL_COLOR_INDEX, srcType, source, - srcPacking); - - if (transferOps) - _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes); - - /* convert to dest type */ - switch (dstType) { - case GL_UNSIGNED_BYTE: - { - GLubyte *dst = (GLubyte *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = (GLubyte) (indexes[i] & 0xff); - } - } - break; - case GL_UNSIGNED_SHORT: - { - GLuint *dst = (GLuint *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = (GLushort) (indexes[i] & 0xffff); - } - } - break; - case GL_UNSIGNED_INT: - memcpy(dest, indexes, n * sizeof(GLuint)); - break; - default: - _mesa_problem(ctx, "bad dstType in _mesa_unpack_index_span"); - } - } -} - - -void -_mesa_pack_index_span( const struct gl_context *ctx, GLuint n, - GLenum dstType, GLvoid *dest, const GLuint *source, - const struct gl_pixelstore_attrib *dstPacking, - GLbitfield transferOps ) -{ - GLuint indexes[MAX_WIDTH]; - - ASSERT(n <= MAX_WIDTH); - - transferOps &= (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT); - - if (transferOps & (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT)) { - /* make a copy of input */ - memcpy(indexes, source, n * sizeof(GLuint)); - _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes); - source = indexes; - } - - switch (dstType) { - case GL_UNSIGNED_BYTE: - { - GLubyte *dst = (GLubyte *) dest; - GLuint i; - for (i = 0; i < n; i++) { - *dst++ = (GLubyte) source[i]; - } - } - break; - case GL_BYTE: - { - GLbyte *dst = (GLbyte *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = (GLbyte) source[i]; - } - } - break; - case GL_UNSIGNED_SHORT: - { - GLushort *dst = (GLushort *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = (GLushort) source[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; - case GL_SHORT: - { - GLshort *dst = (GLshort *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = (GLshort) source[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; - case GL_UNSIGNED_INT: - { - GLuint *dst = (GLuint *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = (GLuint) source[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap4( (GLuint *) dst, n ); - } - } - break; - case GL_INT: - { - GLint *dst = (GLint *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = (GLint) source[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap4( (GLuint *) dst, n ); - } - } - break; - case GL_FLOAT: - { - GLfloat *dst = (GLfloat *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = (GLfloat) source[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap4( (GLuint *) dst, n ); - } - } - break; - case GL_HALF_FLOAT_ARB: - { - GLhalfARB *dst = (GLhalfARB *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = _mesa_float_to_half((GLfloat) source[i]); - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; - default: - _mesa_problem(ctx, "bad type in _mesa_pack_index_span"); - } -} - - -/* - * Unpack a row of stencil data from a client buffer according to - * the pixel unpacking parameters. - * This is (or will be) used by glDrawPixels - * - * Args: ctx - the context - * n - number of pixels - * dstType - destination data type - * dest - destination array - * srcType - source pixel type - * source - source data pointer - * srcPacking - pixel unpacking parameters - * transferOps - apply offset/bias/lookup ops? - */ -void -_mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n, - GLenum dstType, GLvoid *dest, - GLenum srcType, const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking, - GLbitfield transferOps ) -{ - ASSERT(srcType == GL_BITMAP || - srcType == GL_UNSIGNED_BYTE || - srcType == GL_BYTE || - srcType == GL_UNSIGNED_SHORT || - srcType == GL_SHORT || - srcType == GL_UNSIGNED_INT || - srcType == GL_INT || - srcType == GL_UNSIGNED_INT_24_8_EXT || - srcType == GL_HALF_FLOAT_ARB || - srcType == GL_FLOAT); - - ASSERT(dstType == GL_UNSIGNED_BYTE || - dstType == GL_UNSIGNED_SHORT || - dstType == GL_UNSIGNED_INT); - - /* only shift and offset apply to stencil */ - transferOps &= IMAGE_SHIFT_OFFSET_BIT; - - /* - * Try simple cases first - */ - if (transferOps == 0 && - !ctx->Pixel.MapStencilFlag && - srcType == GL_UNSIGNED_BYTE && - dstType == GL_UNSIGNED_BYTE) { - memcpy(dest, source, n * sizeof(GLubyte)); - } - else if (transferOps == 0 && - !ctx->Pixel.MapStencilFlag && - srcType == GL_UNSIGNED_INT && - dstType == GL_UNSIGNED_INT && - !srcPacking->SwapBytes) { - memcpy(dest, source, n * sizeof(GLuint)); - } - else { - /* - * general solution - */ - GLuint indexes[MAX_WIDTH]; - assert(n <= MAX_WIDTH); - - extract_uint_indexes(n, indexes, GL_STENCIL_INDEX, srcType, source, - srcPacking); - - if (transferOps & IMAGE_SHIFT_OFFSET_BIT) { - /* shift and offset indexes */ - shift_and_offset_ci(ctx, n, indexes); - } - - if (ctx->Pixel.MapStencilFlag) { - /* Apply stencil lookup table */ - const GLuint mask = ctx->PixelMaps.StoS.Size - 1; - GLuint i; - for (i = 0; i < n; i++) { - indexes[i] = (GLuint)ctx->PixelMaps.StoS.Map[ indexes[i] & mask ]; - } - } - - /* convert to dest type */ - switch (dstType) { - case GL_UNSIGNED_BYTE: - { - GLubyte *dst = (GLubyte *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = (GLubyte) (indexes[i] & 0xff); - } - } - break; - case GL_UNSIGNED_SHORT: - { - GLuint *dst = (GLuint *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = (GLushort) (indexes[i] & 0xffff); - } - } - break; - case GL_UNSIGNED_INT: - memcpy(dest, indexes, n * sizeof(GLuint)); - break; - default: - _mesa_problem(ctx, "bad dstType in _mesa_unpack_stencil_span"); - } - } -} - - -void -_mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n, - GLenum dstType, GLvoid *dest, const GLstencil *source, - const struct gl_pixelstore_attrib *dstPacking ) -{ - GLstencil stencil[MAX_WIDTH]; - - ASSERT(n <= MAX_WIDTH); - - if (ctx->Pixel.IndexShift || ctx->Pixel.IndexOffset || - ctx->Pixel.MapStencilFlag) { - /* make a copy of input */ - memcpy(stencil, source, n * sizeof(GLstencil)); - _mesa_apply_stencil_transfer_ops(ctx, n, stencil); - source = stencil; - } - - switch (dstType) { - case GL_UNSIGNED_BYTE: - if (sizeof(GLstencil) == 1) { - memcpy( dest, source, n ); - } - else { - GLubyte *dst = (GLubyte *) dest; - GLuint i; - for (i=0;i<n;i++) { - dst[i] = (GLubyte) source[i]; - } - } - break; - case GL_BYTE: - { - GLbyte *dst = (GLbyte *) dest; - GLuint i; - for (i=0;i<n;i++) { - dst[i] = (GLbyte) (source[i] & 0x7f); - } - } - break; - case GL_UNSIGNED_SHORT: - { - GLushort *dst = (GLushort *) dest; - GLuint i; - for (i=0;i<n;i++) { - dst[i] = (GLushort) source[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; - case GL_SHORT: - { - GLshort *dst = (GLshort *) dest; - GLuint i; - for (i=0;i<n;i++) { - dst[i] = (GLshort) source[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; - case GL_UNSIGNED_INT: - { - GLuint *dst = (GLuint *) dest; - GLuint i; - for (i=0;i<n;i++) { - dst[i] = (GLuint) source[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap4( (GLuint *) dst, n ); - } - } - break; - case GL_INT: - { - GLint *dst = (GLint *) dest; - GLuint i; - for (i=0;i<n;i++) { - dst[i] = (GLint) source[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap4( (GLuint *) dst, n ); - } - } - break; - case GL_FLOAT: - { - GLfloat *dst = (GLfloat *) dest; - GLuint i; - for (i=0;i<n;i++) { - dst[i] = (GLfloat) source[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap4( (GLuint *) dst, n ); - } - } - break; - case GL_HALF_FLOAT_ARB: - { - GLhalfARB *dst = (GLhalfARB *) dest; - GLuint i; - for (i=0;i<n;i++) { - dst[i] = _mesa_float_to_half( (float) source[i] ); - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; - case GL_BITMAP: - if (dstPacking->LsbFirst) { - GLubyte *dst = (GLubyte *) dest; - GLint shift = 0; - GLuint i; - for (i = 0; i < n; i++) { - if (shift == 0) - *dst = 0; - *dst |= ((source[i] != 0) << shift); - shift++; - if (shift == 8) { - shift = 0; - dst++; - } - } - } - else { - GLubyte *dst = (GLubyte *) dest; - GLint shift = 7; - GLuint i; - for (i = 0; i < n; i++) { - if (shift == 7) - *dst = 0; - *dst |= ((source[i] != 0) << shift); - shift--; - if (shift < 0) { - shift = 7; - dst++; - } - } - } - break; - default: - _mesa_problem(ctx, "bad type in _mesa_pack_index_span"); - } -} - -#define DEPTH_VALUES(GLTYPE, GLTYPE2FLOAT) \ - do { \ - GLuint i; \ - const GLTYPE *src = (const GLTYPE *)source; \ - for (i = 0; i < n; i++) { \ - GLTYPE value = src[i]; \ - if (srcPacking->SwapBytes) { \ - if (sizeof(GLTYPE) == 2) { \ - SWAP2BYTE(value); \ - } else if (sizeof(GLTYPE) == 4) { \ - SWAP4BYTE(value); \ - } \ - } \ - depthValues[i] = GLTYPE2FLOAT(value); \ - } \ - } while (0) - - -/** - * Unpack a row of depth/z values from memory, returning GLushort, GLuint - * or GLfloat values. - * The glPixelTransfer (scale/bias) params will be applied. - * - * \param dstType one of GL_UNSIGNED_SHORT, GL_UNSIGNED_INT, GL_FLOAT - * \param depthMax max value for returned GLushort or GLuint values - * (ignored for GLfloat). - */ -void -_mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n, - GLenum dstType, GLvoid *dest, GLuint depthMax, - GLenum srcType, const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking ) -{ - GLfloat depthTemp[MAX_WIDTH], *depthValues; - GLboolean needClamp = GL_FALSE; - - /* Look for special cases first. - * Not only are these faster, they're less prone to numeric conversion - * problems. Otherwise, converting from an int type to a float then - * back to an int type can introduce errors that will show up as - * artifacts in things like depth peeling which uses glCopyTexImage. - */ - if (ctx->Pixel.DepthScale == 1.0 && ctx->Pixel.DepthBias == 0.0) { - if (srcType == GL_UNSIGNED_INT && dstType == GL_UNSIGNED_SHORT) { - const GLuint *src = (const GLuint *) source; - GLushort *dst = (GLushort *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = src[i] >> 16; - } - return; - } - if (srcType == GL_UNSIGNED_SHORT - && dstType == GL_UNSIGNED_INT - && depthMax == 0xffffffff) { - const GLushort *src = (const GLushort *) source; - GLuint *dst = (GLuint *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = src[i] | (src[i] << 16); - } - return; - } - if (srcType == GL_UNSIGNED_INT_24_8 - && dstType == GL_UNSIGNED_INT - && depthMax == 0xffffff) { - const GLuint *src = (const GLuint *) source; - GLuint *dst = (GLuint *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = src[i] >> 8; - } - return; - } - /* XXX may want to add additional cases here someday */ - } - - /* general case path follows */ - - if (dstType == GL_FLOAT) { - depthValues = (GLfloat *) dest; - } - else { - depthValues = depthTemp; - } - - /* Convert incoming values to GLfloat. Some conversions will require - * clamping, below. - */ - switch (srcType) { - case GL_BYTE: - DEPTH_VALUES(GLbyte, BYTE_TO_FLOAT); - needClamp = GL_TRUE; - break; - case GL_UNSIGNED_BYTE: - DEPTH_VALUES(GLubyte, UBYTE_TO_FLOAT); - break; - case GL_SHORT: - DEPTH_VALUES(GLshort, SHORT_TO_FLOAT); - needClamp = GL_TRUE; - break; - case GL_UNSIGNED_SHORT: - DEPTH_VALUES(GLushort, USHORT_TO_FLOAT); - break; - case GL_INT: - DEPTH_VALUES(GLint, INT_TO_FLOAT); - needClamp = GL_TRUE; - break; - case GL_UNSIGNED_INT: - DEPTH_VALUES(GLuint, UINT_TO_FLOAT); - break; - case GL_UNSIGNED_INT_24_8_EXT: /* GL_EXT_packed_depth_stencil */ - if (dstType == GL_UNSIGNED_INT_24_8_EXT && - depthMax == 0xffffff && - ctx->Pixel.DepthScale == 1.0 && - ctx->Pixel.DepthBias == 0.0) { - const GLuint *src = (const GLuint *) source; - GLuint *zValues = (GLuint *) dest; - GLuint i; - for (i = 0; i < n; i++) { - GLuint value = src[i]; - if (srcPacking->SwapBytes) { - SWAP4BYTE(value); - } - zValues[i] = value & 0xffffff00; - } - return; - } - else { - const GLuint *src = (const GLuint *) source; - const GLfloat scale = 1.0f / 0xffffff; - GLuint i; - for (i = 0; i < n; i++) { - GLuint value = src[i]; - if (srcPacking->SwapBytes) { - SWAP4BYTE(value); - } - depthValues[i] = (value >> 8) * scale; - } - } - break; - case GL_FLOAT: - DEPTH_VALUES(GLfloat, 1*); - needClamp = GL_TRUE; - break; - case GL_HALF_FLOAT_ARB: - { - GLuint i; - const GLhalfARB *src = (const GLhalfARB *) source; - for (i = 0; i < n; i++) { - GLhalfARB value = src[i]; - if (srcPacking->SwapBytes) { - SWAP2BYTE(value); - } - depthValues[i] = _mesa_half_to_float(value); - } - needClamp = GL_TRUE; - } - break; - default: - _mesa_problem(NULL, "bad type in _mesa_unpack_depth_span()"); - return; - } - - /* apply depth scale and bias */ - { - const GLfloat scale = ctx->Pixel.DepthScale; - const GLfloat bias = ctx->Pixel.DepthBias; - if (scale != 1.0 || bias != 0.0) { - GLuint i; - for (i = 0; i < n; i++) { - depthValues[i] = depthValues[i] * scale + bias; - } - needClamp = GL_TRUE; - } - } - - /* clamp to [0, 1] */ - if (needClamp) { - GLuint i; - for (i = 0; i < n; i++) { - depthValues[i] = (GLfloat)CLAMP(depthValues[i], 0.0, 1.0); - } - } - - /* - * Convert values to dstType - */ - if (dstType == GL_UNSIGNED_INT) { - GLuint *zValues = (GLuint *) dest; - GLuint i; - if (depthMax <= 0xffffff) { - /* no overflow worries */ - for (i = 0; i < n; i++) { - zValues[i] = (GLuint) (depthValues[i] * (GLfloat) depthMax); - } - } - else { - /* need to use double precision to prevent overflow problems */ - for (i = 0; i < n; i++) { - GLdouble z = depthValues[i] * (GLfloat) depthMax; - if (z >= (GLdouble) 0xffffffff) - zValues[i] = 0xffffffff; - else - zValues[i] = (GLuint) z; - } - } - } - else if (dstType == GL_UNSIGNED_SHORT) { - GLushort *zValues = (GLushort *) dest; - GLuint i; - ASSERT(depthMax <= 0xffff); - for (i = 0; i < n; i++) { - zValues[i] = (GLushort) (depthValues[i] * (GLfloat) depthMax); - } - } - else { - ASSERT(dstType == GL_FLOAT); - /*ASSERT(depthMax == 1.0F);*/ - } -} - - -/* - * Pack an array of depth values. The values are floats in [0,1]. - */ -void -_mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest, - GLenum dstType, const GLfloat *depthSpan, - const struct gl_pixelstore_attrib *dstPacking ) -{ - GLfloat depthCopy[MAX_WIDTH]; - - ASSERT(n <= MAX_WIDTH); - - if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) { - memcpy(depthCopy, depthSpan, n * sizeof(GLfloat)); - _mesa_scale_and_bias_depth(ctx, n, depthCopy); - depthSpan = depthCopy; - } - - switch (dstType) { - case GL_UNSIGNED_BYTE: - { - GLubyte *dst = (GLubyte *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = FLOAT_TO_UBYTE( depthSpan[i] ); - } - } - break; - case GL_BYTE: - { - GLbyte *dst = (GLbyte *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = FLOAT_TO_BYTE( depthSpan[i] ); - } - } - break; - case GL_UNSIGNED_SHORT: - { - GLushort *dst = (GLushort *) dest; - GLuint i; - for (i = 0; i < n; i++) { - CLAMPED_FLOAT_TO_USHORT(dst[i], depthSpan[i]); - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; - case GL_SHORT: - { - GLshort *dst = (GLshort *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = FLOAT_TO_SHORT( depthSpan[i] ); - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; - case GL_UNSIGNED_INT: - { - GLuint *dst = (GLuint *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = FLOAT_TO_UINT( depthSpan[i] ); - } - if (dstPacking->SwapBytes) { - _mesa_swap4( (GLuint *) dst, n ); - } - } - break; - case GL_INT: - { - GLint *dst = (GLint *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = FLOAT_TO_INT( depthSpan[i] ); - } - if (dstPacking->SwapBytes) { - _mesa_swap4( (GLuint *) dst, n ); - } - } - break; - case GL_FLOAT: - { - GLfloat *dst = (GLfloat *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = depthSpan[i]; - } - if (dstPacking->SwapBytes) { - _mesa_swap4( (GLuint *) dst, n ); - } - } - break; - case GL_HALF_FLOAT_ARB: - { - GLhalfARB *dst = (GLhalfARB *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = _mesa_float_to_half(depthSpan[i]); - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; - default: - _mesa_problem(ctx, "bad type in _mesa_pack_depth_span"); - } -} - - - -/** - * Pack depth and stencil values as GL_DEPTH_STENCIL/GL_UNSIGNED_INT_24_8. - */ -void -_mesa_pack_depth_stencil_span(const struct gl_context *ctx, GLuint n, GLuint *dest, - const GLfloat *depthVals, - const GLstencil *stencilVals, - const struct gl_pixelstore_attrib *dstPacking) -{ - GLfloat depthCopy[MAX_WIDTH]; - GLstencil stencilCopy[MAX_WIDTH]; - GLuint i; - - ASSERT(n <= MAX_WIDTH); - - if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) { - memcpy(depthCopy, depthVals, n * sizeof(GLfloat)); - _mesa_scale_and_bias_depth(ctx, n, depthCopy); - depthVals = depthCopy; - } - - if (ctx->Pixel.IndexShift || - ctx->Pixel.IndexOffset || - ctx->Pixel.MapStencilFlag) { - memcpy(stencilCopy, stencilVals, n * sizeof(GLstencil)); - _mesa_apply_stencil_transfer_ops(ctx, n, stencilCopy); - stencilVals = stencilCopy; - } - - for (i = 0; i < n; i++) { - GLuint z = (GLuint) (depthVals[i] * 0xffffff); - dest[i] = (z << 8) | (stencilVals[i] & 0xff); - } - - if (dstPacking->SwapBytes) { - _mesa_swap4(dest, n); - } -} - - - - -/** - * Unpack image data. Apply byte swapping, byte flipping (bitmap). - * Return all image data in a contiguous block. This is used when we - * compile glDrawPixels, glTexImage, etc into a display list. We - * need a copy of the data in a standard format. - */ -void * -_mesa_unpack_image( GLuint dimensions, - GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, const GLvoid *pixels, - const struct gl_pixelstore_attrib *unpack ) -{ - GLint bytesPerRow, compsPerRow; - GLboolean flipBytes, swap2, swap4; - - if (!pixels) - return NULL; /* not necessarily an error */ - - if (width <= 0 || height <= 0 || depth <= 0) - return NULL; /* generate error later */ - - if (type == GL_BITMAP) { - bytesPerRow = (width + 7) >> 3; - flipBytes = unpack->LsbFirst; - swap2 = swap4 = GL_FALSE; - compsPerRow = 0; - } - else { - const GLint bytesPerPixel = _mesa_bytes_per_pixel(format, type); - GLint components = _mesa_components_in_format(format); - GLint bytesPerComp; - - if (_mesa_type_is_packed(type)) - components = 1; - - if (bytesPerPixel <= 0 || components <= 0) - return NULL; /* bad format or type. generate error later */ - bytesPerRow = bytesPerPixel * width; - bytesPerComp = bytesPerPixel / components; - flipBytes = GL_FALSE; - swap2 = (bytesPerComp == 2) && unpack->SwapBytes; - swap4 = (bytesPerComp == 4) && unpack->SwapBytes; - compsPerRow = components * width; - assert(compsPerRow >= width); - } - - { - GLubyte *destBuffer - = (GLubyte *) malloc(bytesPerRow * height * depth); - GLubyte *dst; - GLint img, row; - if (!destBuffer) - return NULL; /* generate GL_OUT_OF_MEMORY later */ - - dst = destBuffer; - for (img = 0; img < depth; img++) { - for (row = 0; row < height; row++) { - const GLvoid *src = _mesa_image_address(dimensions, unpack, pixels, - width, height, format, type, img, row, 0); - - if ((type == GL_BITMAP) && (unpack->SkipPixels & 0x7)) { - GLint i; - flipBytes = GL_FALSE; - if (unpack->LsbFirst) { - GLubyte srcMask = 1 << (unpack->SkipPixels & 0x7); - GLubyte dstMask = 128; - const GLubyte *s = src; - GLubyte *d = dst; - *d = 0; - for (i = 0; i < width; i++) { - if (*s & srcMask) { - *d |= dstMask; - } - if (srcMask == 128) { - srcMask = 1; - s++; - } - else { - srcMask = srcMask << 1; - } - if (dstMask == 1) { - dstMask = 128; - d++; - *d = 0; - } - else { - dstMask = dstMask >> 1; - } - } - } - else { - GLubyte srcMask = 128 >> (unpack->SkipPixels & 0x7); - GLubyte dstMask = 128; - const GLubyte *s = src; - GLubyte *d = dst; - *d = 0; - for (i = 0; i < width; i++) { - if (*s & srcMask) { - *d |= dstMask; - } - if (srcMask == 1) { - srcMask = 128; - s++; - } - else { - srcMask = srcMask >> 1; - } - if (dstMask == 1) { - dstMask = 128; - d++; - *d = 0; - } - else { - dstMask = dstMask >> 1; - } - } - } - } - else { - memcpy(dst, src, bytesPerRow); - } - - /* byte flipping/swapping */ - if (flipBytes) { - flip_bytes((GLubyte *) dst, bytesPerRow); - } - else if (swap2) { - _mesa_swap2((GLushort*) dst, compsPerRow); - } - else if (swap4) { - _mesa_swap4((GLuint*) dst, compsPerRow); - } - dst += bytesPerRow; - } - } - return destBuffer; - } -} - -#endif /* _HAVE_FULL_GL */ - /** diff --git a/src/mesa/main/image.h b/src/mesa/main/image.h index ed5ffa368c..005fbccbeb 100644 --- a/src/mesa/main/image.h +++ b/src/mesa/main/image.h @@ -27,8 +27,10 @@ #define IMAGE_H -#include "mtypes.h" +#include "glheader.h" +struct gl_context; +struct gl_pixelstore_attrib; extern void _mesa_swap2( GLushort *p, GLuint n ); @@ -52,7 +54,8 @@ extern GLint _mesa_bytes_per_pixel( GLenum format, GLenum type ); extern GLboolean -_mesa_is_legal_format_and_type( struct gl_context *ctx, GLenum format, GLenum type ); +_mesa_is_legal_format_and_type(const struct gl_context *ctx, + GLenum format, GLenum type); extern GLboolean _mesa_is_color_format(GLenum format); @@ -124,23 +127,6 @@ _mesa_image_image_stride( const struct gl_pixelstore_attrib *packing, GLint width, GLint height, GLenum format, GLenum type ); -extern void -_mesa_unpack_polygon_stipple( const GLubyte *pattern, GLuint dest[32], - const struct gl_pixelstore_attrib *unpacking ); - - -extern void -_mesa_pack_polygon_stipple( const GLuint pattern[32], GLubyte *dest, - const struct gl_pixelstore_attrib *packing ); - - -extern GLvoid * -_mesa_unpack_bitmap( GLint width, GLint height, const GLubyte *pixels, - const struct gl_pixelstore_attrib *packing ); - -extern void -_mesa_pack_bitmap( GLint width, GLint height, const GLubyte *source, - GLubyte *dest, const struct gl_pixelstore_attrib *packing ); extern void _mesa_expand_bitmap(GLsizei width, GLsizei height, @@ -150,147 +136,6 @@ _mesa_expand_bitmap(GLsizei width, GLsizei height, GLubyte onValue); -/** \name Pixel processing functions */ -/*@{*/ - -extern void -_mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4], - GLfloat rScale, GLfloat gScale, - GLfloat bScale, GLfloat aScale, - GLfloat rBias, GLfloat gBias, - GLfloat bBias, GLfloat aBias); - -extern void -_mesa_map_rgba(const struct gl_context *ctx, GLuint n, GLfloat rgba[][4]); - -extern void -_mesa_lookup_rgba_float(const struct gl_color_table *table, - GLuint n, GLfloat rgba[][4]); - -extern void -_mesa_lookup_rgba_ubyte(const struct gl_color_table *table, - GLuint n, GLubyte rgba[][4]); - - -extern void -_mesa_map_ci_to_rgba(const struct gl_context *ctx, - GLuint n, const GLuint index[], GLfloat rgba[][4]); - - -extern void -_mesa_map_ci8_to_rgba8(const struct gl_context *ctx, GLuint n, const GLubyte index[], - GLubyte rgba[][4]); - - -extern void -_mesa_scale_and_bias_depth(const struct gl_context *ctx, GLuint n, - GLfloat depthValues[]); - -extern void -_mesa_scale_and_bias_depth_uint(const struct gl_context *ctx, GLuint n, - GLuint depthValues[]); - -extern void -_mesa_apply_rgba_transfer_ops(struct gl_context *ctx, GLbitfield transferOps, - GLuint n, GLfloat rgba[][4]); - - -extern void -_mesa_apply_ci_transfer_ops(const struct gl_context *ctx, GLbitfield transferOps, - GLuint n, GLuint indexes[]); - - -extern void -_mesa_apply_stencil_transfer_ops(const struct gl_context *ctx, GLuint n, - GLstencil stencil[]); - - -extern void -_mesa_pack_rgba_span_float( struct gl_context *ctx, GLuint n, GLfloat rgba[][4], - GLenum dstFormat, GLenum dstType, GLvoid *dstAddr, - const struct gl_pixelstore_attrib *dstPacking, - GLbitfield transferOps ); - - -extern void -_mesa_unpack_color_span_chan( struct gl_context *ctx, - GLuint n, GLenum dstFormat, GLchan dest[], - GLenum srcFormat, GLenum srcType, - const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking, - GLbitfield transferOps ); - - -extern void -_mesa_unpack_color_span_float( struct gl_context *ctx, - GLuint n, GLenum dstFormat, GLfloat dest[], - GLenum srcFormat, GLenum srcType, - const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking, - GLbitfield transferOps ); - -extern void -_mesa_unpack_dudv_span_byte( struct gl_context *ctx, - GLuint n, GLenum dstFormat, GLbyte dest[], - GLenum srcFormat, GLenum srcType, - const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking, - GLbitfield transferOps ); - -extern void -_mesa_unpack_index_span( const struct gl_context *ctx, GLuint n, - GLenum dstType, GLvoid *dest, - GLenum srcType, const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking, - GLbitfield transferOps ); - - -extern void -_mesa_pack_index_span( const struct gl_context *ctx, GLuint n, - GLenum dstType, GLvoid *dest, const GLuint *source, - const struct gl_pixelstore_attrib *dstPacking, - GLbitfield transferOps ); - - -extern void -_mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n, - GLenum dstType, GLvoid *dest, - GLenum srcType, const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking, - GLbitfield transferOps ); - -extern void -_mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n, - GLenum dstType, GLvoid *dest, const GLstencil *source, - const struct gl_pixelstore_attrib *dstPacking ); - - -extern void -_mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n, - GLenum dstType, GLvoid *dest, GLuint depthMax, - GLenum srcType, const GLvoid *source, - const struct gl_pixelstore_attrib *srcPacking ); - -extern void -_mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest, - GLenum dstType, const GLfloat *depthSpan, - const struct gl_pixelstore_attrib *dstPacking ); - - -extern void -_mesa_pack_depth_stencil_span(const struct gl_context *ctx, GLuint n, GLuint *dest, - const GLfloat *depthVals, - const GLstencil *stencilVals, - const struct gl_pixelstore_attrib *dstPacking); - - -extern void * -_mesa_unpack_image( GLuint dimensions, - GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, const GLvoid *pixels, - const struct gl_pixelstore_attrib *unpack ); - - extern void _mesa_convert_colors(GLenum srcType, const GLvoid *src, GLenum dstType, GLvoid *dst, diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index 30fc152389..5ea647ad8d 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -141,12 +141,18 @@ typedef union { GLfloat f; GLint i; } fi_type; #define sqrtf(f) ((float) sqrt(f)) #define tanf(f) ((float) tan(f)) #define tanhf(f) ((float) tanh(f)) +#define acoshf(f) ((float) acosh(f)) +#define asinhf(f) ((float) asinh(f)) +#define atanhf(f) ((float) atanh(f)) #endif #if defined(_MSC_VER) static INLINE float truncf(float x) { return x < 0.0f ? ceilf(x) : floorf(x); } static INLINE float exp2f(float x) { return powf(2.0f, x); } static INLINE float log2f(float x) { return logf(x) * 1.442695041f; } +static INLINE float asinhf(float x) { return logf(x + sqrtf(x * x + 1.0f)); } +static INLINE float acoshf(float x) { return logf(x + sqrtf(x * x - 1.0f)); } +static INLINE float atanhf(float x) { return (logf(1.0f + x) - logf(1.0f - x)) / 2.0f; } static INLINE int isblank(int ch) { return ch == ' ' || ch == '\t'; } #define strtoll(p, e, b) _strtoi64(p, e, b) #endif diff --git a/src/mesa/main/light.h b/src/mesa/main/light.h index 021f5ea193..f42fbe6f50 100644 --- a/src/mesa/main/light.h +++ b/src/mesa/main/light.h @@ -28,7 +28,12 @@ #define LIGHT_H -#include "mtypes.h" +#include "glheader.h" +#include "mfeatures.h" + +struct gl_context; +struct gl_light; +struct gl_material; extern void GLAPIENTRY _mesa_ShadeModel( GLenum mode ); diff --git a/src/mesa/main/lines.c b/src/mesa/main/lines.c index 505f840ba5..81e179a925 100644 --- a/src/mesa/main/lines.c +++ b/src/mesa/main/lines.c @@ -54,11 +54,6 @@ _mesa_LineWidth( GLfloat width ) FLUSH_VERTICES(ctx, _NEW_LINE); ctx->Line.Width = width; - if (width != 1.0F) - ctx->_TriangleCaps |= DD_LINE_WIDTH; - else - ctx->_TriangleCaps &= ~DD_LINE_WIDTH; - if (ctx->Driver.LineWidth) ctx->Driver.LineWidth(ctx, width); } diff --git a/src/mesa/main/lines.h b/src/mesa/main/lines.h index 3accdd7800..8e8b3f8d6e 100644 --- a/src/mesa/main/lines.h +++ b/src/mesa/main/lines.h @@ -33,8 +33,9 @@ #define LINES_H -#include "mtypes.h" +#include "glheader.h" +struct gl_context; extern void GLAPIENTRY _mesa_LineWidth( GLfloat width ); diff --git a/src/mesa/main/matrix.h b/src/mesa/main/matrix.h index 38fd235b11..2878cc134b 100644 --- a/src/mesa/main/matrix.h +++ b/src/mesa/main/matrix.h @@ -28,8 +28,9 @@ #define MATRIX_H -#include "mtypes.h" +#include "glheader.h" +struct gl_context; extern void GLAPIENTRY _mesa_Frustum( GLdouble left, GLdouble right, diff --git a/src/mesa/main/mfeatures.h b/src/mesa/main/mfeatures.h index 5afd65d976..1b39f5fdd3 100644 --- a/src/mesa/main/mfeatures.h +++ b/src/mesa/main/mfeatures.h @@ -78,7 +78,7 @@ #define FEATURE_GL !FEATURE_ES #endif -#ifdef IN_DRI_DRIVER +#if defined(IN_DRI_DRIVER) || (FEATURE_GL + FEATURE_ES1 + FEATURE_ES2 > 1) #define FEATURE_remap_table 1 #else #define FEATURE_remap_table 0 @@ -107,9 +107,7 @@ #define FEATURE_texture_s3tc FEATURE_GL #define FEATURE_extra_context_init FEATURE_ES -#define FEATURE_fixedpt FEATURE_ES #define FEATURE_point_size_array FEATURE_ES -#define FEATURE_vertex_array_byte FEATURE_ES #define FEATURE_es2_glsl FEATURE_ES2 diff --git a/src/mesa/main/mipmap.c b/src/mesa/main/mipmap.c index 11d5a0519e..ad63b178df 100644 --- a/src/mesa/main/mipmap.c +++ b/src/mesa/main/mipmap.c @@ -288,6 +288,54 @@ do_row(GLenum datatype, GLuint comps, GLint srcWidth, dst[i] = (rowA[j] + rowA[k] + rowB[j] + rowB[k]) / 4; } } + + else if (datatype == GL_SHORT && comps == 4) { + GLuint i, j, k; + const GLshort(*rowA)[4] = (const GLshort(*)[4]) srcRowA; + const GLshort(*rowB)[4] = (const GLshort(*)[4]) srcRowB; + GLshort(*dst)[4] = (GLshort(*)[4]) dstRow; + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + dst[i][0] = (rowA[j][0] + rowA[k][0] + rowB[j][0] + rowB[k][0]) / 4; + dst[i][1] = (rowA[j][1] + rowA[k][1] + rowB[j][1] + rowB[k][1]) / 4; + dst[i][2] = (rowA[j][2] + rowA[k][2] + rowB[j][2] + rowB[k][2]) / 4; + dst[i][3] = (rowA[j][3] + rowA[k][3] + rowB[j][3] + rowB[k][3]) / 4; + } + } + else if (datatype == GL_SHORT && comps == 3) { + GLuint i, j, k; + const GLshort(*rowA)[3] = (const GLshort(*)[3]) srcRowA; + const GLshort(*rowB)[3] = (const GLshort(*)[3]) srcRowB; + GLshort(*dst)[3] = (GLshort(*)[3]) dstRow; + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + dst[i][0] = (rowA[j][0] + rowA[k][0] + rowB[j][0] + rowB[k][0]) / 4; + dst[i][1] = (rowA[j][1] + rowA[k][1] + rowB[j][1] + rowB[k][1]) / 4; + dst[i][2] = (rowA[j][2] + rowA[k][2] + rowB[j][2] + rowB[k][2]) / 4; + } + } + else if (datatype == GL_SHORT && comps == 2) { + GLuint i, j, k; + const GLshort(*rowA)[2] = (const GLshort(*)[2]) srcRowA; + const GLshort(*rowB)[2] = (const GLshort(*)[2]) srcRowB; + GLshort(*dst)[2] = (GLshort(*)[2]) dstRow; + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + dst[i][0] = (rowA[j][0] + rowA[k][0] + rowB[j][0] + rowB[k][0]) / 4; + dst[i][1] = (rowA[j][1] + rowA[k][1] + rowB[j][1] + rowB[k][1]) / 4; + } + } + else if (datatype == GL_SHORT && comps == 1) { + GLuint i, j, k; + const GLshort *rowA = (const GLshort *) srcRowA; + const GLshort *rowB = (const GLshort *) srcRowB; + GLshort *dst = (GLshort *) dstRow; + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + dst[i] = (rowA[j] + rowA[k] + rowB[j] + rowB[k]) / 4; + } + } + else if (datatype == GL_FLOAT && comps == 4) { GLuint i, j, k; const GLfloat(*rowA)[4] = (const GLfloat(*)[4]) srcRowA; @@ -507,6 +555,37 @@ do_row(GLenum datatype, GLuint comps, GLint srcWidth, dst[i] = (alpha << 15) | (blue << 10) | (green << 5) | red; } } + else if (datatype == GL_UNSIGNED_SHORT_5_5_5_1 && comps == 4) { + GLuint i, j, k; + const GLushort *rowA = (const GLushort *) srcRowA; + const GLushort *rowB = (const GLushort *) srcRowB; + GLushort *dst = (GLushort *) dstRow; + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + const GLint rowAr0 = (rowA[j] >> 11) & 0x1f; + const GLint rowAr1 = (rowA[k] >> 11) & 0x1f; + const GLint rowBr0 = (rowB[j] >> 11) & 0x1f; + const GLint rowBr1 = (rowB[k] >> 11) & 0x1f; + const GLint rowAg0 = (rowA[j] >> 6) & 0x1f; + const GLint rowAg1 = (rowA[k] >> 6) & 0x1f; + const GLint rowBg0 = (rowB[j] >> 6) & 0x1f; + const GLint rowBg1 = (rowB[k] >> 6) & 0x1f; + const GLint rowAb0 = (rowA[j] >> 1) & 0x1f; + const GLint rowAb1 = (rowA[k] >> 1) & 0x1f; + const GLint rowBb0 = (rowB[j] >> 1) & 0x1f; + const GLint rowBb1 = (rowB[k] >> 1) & 0x1f; + const GLint rowAa0 = (rowA[j] & 0x1); + const GLint rowAa1 = (rowA[k] & 0x1); + const GLint rowBa0 = (rowB[j] & 0x1); + const GLint rowBa1 = (rowB[k] & 0x1); + const GLint red = (rowAr0 + rowAr1 + rowBr0 + rowBr1) >> 2; + const GLint green = (rowAg0 + rowAg1 + rowBg0 + rowBg1) >> 2; + const GLint blue = (rowAb0 + rowAb1 + rowBb0 + rowBb1) >> 2; + const GLint alpha = (rowAa0 + rowAa1 + rowBa0 + rowBa1) >> 2; + dst[i] = (red << 11) | (green << 6) | (blue << 1) | alpha; + } + } + else if (datatype == GL_UNSIGNED_BYTE_3_3_2 && comps == 3) { GLuint i, j, k; const GLubyte *rowA = (const GLubyte *) srcRowA; @@ -682,6 +761,44 @@ do_row_3D(GLenum datatype, GLuint comps, GLint srcWidth, FILTER_3D(0); } } + else if ((datatype == GL_SHORT) && (comps == 4)) { + DECLARE_ROW_POINTERS(GLshort, 4); + + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + FILTER_3D(0); + FILTER_3D(1); + FILTER_3D(2); + FILTER_3D(3); + } + } + else if ((datatype == GL_SHORT) && (comps == 3)) { + DECLARE_ROW_POINTERS(GLshort, 3); + + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + FILTER_3D(0); + FILTER_3D(1); + FILTER_3D(2); + } + } + else if ((datatype == GL_SHORT) && (comps == 2)) { + DECLARE_ROW_POINTERS(GLshort, 2); + + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + FILTER_3D(0); + FILTER_3D(1); + } + } + else if ((datatype == GL_SHORT) && (comps == 1)) { + DECLARE_ROW_POINTERS(GLshort, 1); + + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + FILTER_3D(0); + } + } else if ((datatype == GL_FLOAT) && (comps == 4)) { DECLARE_ROW_POINTERS(GLfloat, 4); @@ -910,6 +1027,55 @@ do_row_3D(GLenum datatype, GLuint comps, GLint srcWidth, dst[i] = (a << 15) | (b << 10) | (g << 5) | r; } } + else if ((datatype == GL_UNSIGNED_SHORT_5_5_5_1) && (comps == 4)) { + DECLARE_ROW_POINTERS0(GLushort); + + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + const GLint rowAr0 = (rowA[j] >> 11) & 0x1f; + const GLint rowAr1 = (rowA[k] >> 11) & 0x1f; + const GLint rowBr0 = (rowB[j] >> 11) & 0x1f; + const GLint rowBr1 = (rowB[k] >> 11) & 0x1f; + const GLint rowCr0 = (rowC[j] >> 11) & 0x1f; + const GLint rowCr1 = (rowC[k] >> 11) & 0x1f; + const GLint rowDr0 = (rowD[j] >> 11) & 0x1f; + const GLint rowDr1 = (rowD[k] >> 11) & 0x1f; + const GLint rowAg0 = (rowA[j] >> 6) & 0x1f; + const GLint rowAg1 = (rowA[k] >> 6) & 0x1f; + const GLint rowBg0 = (rowB[j] >> 6) & 0x1f; + const GLint rowBg1 = (rowB[k] >> 6) & 0x1f; + const GLint rowCg0 = (rowC[j] >> 6) & 0x1f; + const GLint rowCg1 = (rowC[k] >> 6) & 0x1f; + const GLint rowDg0 = (rowD[j] >> 6) & 0x1f; + const GLint rowDg1 = (rowD[k] >> 6) & 0x1f; + const GLint rowAb0 = (rowA[j] >> 1) & 0x1f; + const GLint rowAb1 = (rowA[k] >> 1) & 0x1f; + const GLint rowBb0 = (rowB[j] >> 1) & 0x1f; + const GLint rowBb1 = (rowB[k] >> 1) & 0x1f; + const GLint rowCb0 = (rowC[j] >> 1) & 0x1f; + const GLint rowCb1 = (rowC[k] >> 1) & 0x1f; + const GLint rowDb0 = (rowD[j] >> 1) & 0x1f; + const GLint rowDb1 = (rowD[k] >> 1) & 0x1f; + const GLint rowAa0 = (rowA[j] & 0x1); + const GLint rowAa1 = (rowA[k] & 0x1); + const GLint rowBa0 = (rowB[j] & 0x1); + const GLint rowBa1 = (rowB[k] & 0x1); + const GLint rowCa0 = (rowC[j] & 0x1); + const GLint rowCa1 = (rowC[k] & 0x1); + const GLint rowDa0 = (rowD[j] & 0x1); + const GLint rowDa1 = (rowD[k] & 0x1); + const GLint r = FILTER_SUM_3D(rowAr0, rowAr1, rowBr0, rowBr1, + rowCr0, rowCr1, rowDr0, rowDr1); + const GLint g = FILTER_SUM_3D(rowAg0, rowAg1, rowBg0, rowBg1, + rowCg0, rowCg1, rowDg0, rowDg1); + const GLint b = FILTER_SUM_3D(rowAb0, rowAb1, rowBb0, rowBb1, + rowCb0, rowCb1, rowDb0, rowDb1); + const GLint a = FILTER_SUM_3D(rowAa0, rowAa1, rowBa0, rowBa1, + rowCa0, rowCa1, rowDa0, rowDa1); + + dst[i] = (r << 11) | (g << 6) | (b << 1) | a; + } + } else if ((datatype == GL_UNSIGNED_BYTE_3_3_2) && (comps == 3)) { DECLARE_ROW_POINTERS0(GLushort); @@ -1624,9 +1790,9 @@ _mesa_generate_mipmap(struct gl_context *ctx, GLenum target, /* initialize new image */ _mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight, - dstDepth, border, srcImage->InternalFormat); + dstDepth, border, srcImage->InternalFormat, + srcImage->TexFormat); dstImage->DriverData = NULL; - dstImage->TexFormat = srcImage->TexFormat; dstImage->FetchTexelc = srcImage->FetchTexelc; dstImage->FetchTexelf = srcImage->FetchTexelf; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 13aa66fc1e..87b96489db 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -454,6 +454,68 @@ typedef enum /** + * Framebuffer configuration (aka visual / pixelformat) + * Note: some of these fields should be boolean, but it appears that + * code in drivers/dri/common/util.c requires int-sized fields. + */ +struct gl_config +{ + GLboolean rgbMode; + GLboolean floatMode; + GLboolean colorIndexMode; /* XXX is this used anywhere? */ + GLuint doubleBufferMode; + GLuint stereoMode; + + GLboolean haveAccumBuffer; + GLboolean haveDepthBuffer; + GLboolean haveStencilBuffer; + + GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */ + GLuint redMask, greenMask, blueMask, alphaMask; + GLint rgbBits; /* total bits for rgb */ + GLint indexBits; /* total bits for colorindex */ + + GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits; + GLint depthBits; + GLint stencilBits; + + GLint numAuxBuffers; + + GLint level; + + /* EXT_visual_rating / GLX 1.2 */ + GLint visualRating; + + /* EXT_visual_info / GLX 1.2 */ + GLint transparentPixel; + /* colors are floats scaled to ints */ + GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha; + GLint transparentIndex; + + /* ARB_multisample / SGIS_multisample */ + GLint sampleBuffers; + GLint samples; + + /* SGIX_pbuffer / GLX 1.3 */ + GLint maxPbufferWidth; + GLint maxPbufferHeight; + GLint maxPbufferPixels; + GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */ + GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */ + + /* OML_swap_method */ + GLint swapMethod; + + /* EXT_texture_from_pixmap */ + GLint bindToTextureRgb; + GLint bindToTextureRgba; + GLint bindToMipmapTexture; + GLint bindToTextureTargets; + GLint yInverted; +}; + + +/** * Data structure for color tables */ struct gl_color_table @@ -547,60 +609,6 @@ struct gl_shine_tab GLuint refcount; }; -struct gl_config { - GLboolean rgbMode; - GLboolean floatMode; - GLboolean colorIndexMode; - GLuint doubleBufferMode; - GLuint stereoMode; - - GLboolean haveAccumBuffer; - GLboolean haveDepthBuffer; - GLboolean haveStencilBuffer; - - GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */ - GLuint redMask, greenMask, blueMask, alphaMask; - GLint rgbBits; /* total bits for rgb */ - GLint indexBits; /* total bits for colorindex */ - - GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits; - GLint depthBits; - GLint stencilBits; - - GLint numAuxBuffers; - - GLint level; - - /* EXT_visual_rating / GLX 1.2 */ - GLint visualRating; - - /* EXT_visual_info / GLX 1.2 */ - GLint transparentPixel; - /* colors are floats scaled to ints */ - GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha; - GLint transparentIndex; - - /* ARB_multisample / SGIS_multisample */ - GLint sampleBuffers; - GLint samples; - - /* SGIX_pbuffer / GLX 1.3 */ - GLint maxPbufferWidth; - GLint maxPbufferHeight; - GLint maxPbufferPixels; - GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */ - GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */ - - /* OML_swap_method */ - GLint swapMethod; - - /* EXT_texture_from_pixmap */ - GLint bindToTextureRgb; - GLint bindToTextureRgba; - GLint bindToMipmapTexture; - GLint bindToTextureTargets; - GLint yInverted; -}; /** * Light source state. @@ -1530,6 +1538,7 @@ struct gl_client_array const GLubyte *Ptr; /**< Points to array data */ GLboolean Enabled; /**< Enabled flag is a boolean */ GLboolean Normalized; /**< GL_ARB_vertex_program */ + GLboolean Integer; /**< Integer-valued? */ GLuint _ElementSize; /**< size of each element in bytes */ struct gl_buffer_object *BufferObj;/**< GL_ARB_vertex_buffer_object */ @@ -2141,7 +2150,24 @@ struct gl_shader_program */ struct gl_shader_state { - struct gl_shader_program *CurrentProgram; /**< The user-bound program */ + /** + * Programs used for rendering + * + * There is a separate program set for each shader stage. If + * GL_EXT_separate_shader_objects is not supported, each of these must point + * to \c NULL or to the same program. + */ + struct gl_shader_program *CurrentVertexProgram; + struct gl_shader_program *CurrentGeometryProgram; + struct gl_shader_program *CurrentFragmentProgram; + + /** + * Program used by glUniform calls. + * + * Explicitly set by \c glUseProgram and \c glActiveProgramEXT. + */ + struct gl_shader_program *ActiveProgram; + void *MemPool; GLbitfield Flags; /**< Mask of GLSL_x flags */ @@ -2462,6 +2488,9 @@ struct gl_framebuffer /** One of the GL_FRAMEBUFFER_(IN)COMPLETE_* tokens */ GLenum _Status; + /** Integer color values */ + GLboolean _IntegerColor; + /** Array of all renderbuffer attachments, indexed by BUFFER_* tokens. */ struct gl_renderbuffer_attachment Attachment[BUFFER_COUNT]; @@ -2604,6 +2633,9 @@ struct gl_constants GLuint MaxTransformFeedbackSeparateAttribs; GLuint MaxTransformFeedbackSeparateComponents; GLuint MaxTransformFeedbackInterleavedComponents; + + /** GL_EXT_gpu_shader4 */ + GLint MinProgramTexelOffset, MaxProgramTexelOffset; }; @@ -2690,6 +2722,7 @@ struct gl_extensions GLboolean EXT_framebuffer_object; GLboolean EXT_framebuffer_sRGB; GLboolean EXT_gpu_program_parameters; + GLboolean EXT_gpu_shader4; GLboolean EXT_multi_draw_arrays; GLboolean EXT_paletted_texture; GLboolean EXT_packed_depth_stencil; @@ -2702,6 +2735,7 @@ struct gl_extensions GLboolean EXT_rescale_normal; GLboolean EXT_shadow_funcs; GLboolean EXT_secondary_color; + GLboolean EXT_separate_shader_objects; GLboolean EXT_separate_specular_color; GLboolean EXT_shared_texture_palette; GLboolean EXT_stencil_wrap; @@ -2891,11 +2925,9 @@ struct gl_matrix_stack #define DD_TRI_OFFSET 0x80 #define DD_LINE_SMOOTH 0x100 #define DD_LINE_STIPPLE 0x200 -#define DD_LINE_WIDTH 0x400 -#define DD_POINT_SMOOTH 0x800 -#define DD_POINT_SIZE 0x1000 -#define DD_POINT_ATTEN 0x2000 -#define DD_TRI_TWOSTENCIL 0x4000 +#define DD_POINT_SMOOTH 0x400 +#define DD_POINT_ATTEN 0x800 +#define DD_TRI_TWOSTENCIL 0x1000 /*@}*/ diff --git a/src/mesa/main/multisample.h b/src/mesa/main/multisample.h index c7cc432daa..e86d4092bc 100644 --- a/src/mesa/main/multisample.h +++ b/src/mesa/main/multisample.h @@ -26,7 +26,9 @@ #ifndef MULTISAMPLE_H #define MULTISAMPLE_H -#include "mtypes.h" +#include "glheader.h" + +struct gl_context; extern void GLAPIENTRY _mesa_SampleCoverageARB(GLclampf value, GLboolean invert); diff --git a/src/mesa/main/nvprogram.c b/src/mesa/main/nvprogram.c index 833bf916ec..36cea3bb9a 100644 --- a/src/mesa/main/nvprogram.c +++ b/src/mesa/main/nvprogram.c @@ -685,13 +685,13 @@ _mesa_LoadProgramNV(GLenum target, GLuint id, GLsizei len, */ void GLAPIENTRY _mesa_ProgramParameters4dvNV(GLenum target, GLuint index, - GLuint num, const GLdouble *params) + GLsizei num, const GLdouble *params) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); if (target == GL_VERTEX_PROGRAM_NV && ctx->Extensions.NV_vertex_program) { - GLuint i; + GLint i; if (index + num > MAX_NV_VERTEX_PROGRAM_PARAMS) { _mesa_error(ctx, GL_INVALID_VALUE, "glProgramParameters4dvNV"); return; @@ -717,13 +717,13 @@ _mesa_ProgramParameters4dvNV(GLenum target, GLuint index, */ void GLAPIENTRY _mesa_ProgramParameters4fvNV(GLenum target, GLuint index, - GLuint num, const GLfloat *params) + GLsizei num, const GLfloat *params) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); if (target == GL_VERTEX_PROGRAM_NV && ctx->Extensions.NV_vertex_program) { - GLuint i; + GLint i; if (index + num > MAX_NV_VERTEX_PROGRAM_PARAMS) { _mesa_error(ctx, GL_INVALID_VALUE, "glProgramParameters4fvNV"); return; diff --git a/src/mesa/main/nvprogram.h b/src/mesa/main/nvprogram.h index 035f2fe242..3a55783773 100644 --- a/src/mesa/main/nvprogram.h +++ b/src/mesa/main/nvprogram.h @@ -30,7 +30,9 @@ #define NVPROGRAM_H #include "glheader.h" -#include "mtypes.h" + +struct gl_context; +struct gl_program; extern void GLAPIENTRY _mesa_ExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params); @@ -72,10 +74,12 @@ extern void GLAPIENTRY _mesa_LoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte *program); extern void GLAPIENTRY -_mesa_ProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, const GLdouble *params); +_mesa_ProgramParameters4dvNV(GLenum target, GLuint index, GLsizei num, + const GLdouble *params); extern void GLAPIENTRY -_mesa_ProgramParameters4fvNV(GLenum target, GLuint index, GLuint num, const GLfloat *params); +_mesa_ProgramParameters4fvNV(GLenum target, GLuint index, GLsizei num, + const GLfloat *params); extern void GLAPIENTRY _mesa_TrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform); diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c new file mode 100644 index 0000000000..fdb647c7ea --- /dev/null +++ b/src/mesa/main/pack.c @@ -0,0 +1,4960 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * Copyright (C) 2009-2010 VMware, Inc. 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 + * THEA AUTHORS 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. + */ + + +/** + * \file pack.c + * Image and pixel span packing and unpacking. + */ + + +#include "glheader.h" +#include "colormac.h" +#include "enums.h" +#include "image.h" +#include "imports.h" +#include "pack.h" +#include "pixeltransfer.h" +#include "imports.h" + + +/** + * NOTE: + * Normally, BYTE_TO_FLOAT(0) returns 0.00392 That causes problems when + * we later convert the float to a packed integer value (such as for + * GL_RGB5_A1) because we'll wind up with a non-zero value. + * + * We redefine the macros here so zero is handled correctly. + */ +#undef BYTE_TO_FLOAT +#define BYTE_TO_FLOAT(B) ((B) == 0 ? 0.0F : ((2.0F * (B) + 1.0F) * (1.0F/255.0F))) + +#undef SHORT_TO_FLOAT +#define SHORT_TO_FLOAT(S) ((S) == 0 ? 0.0F : ((2.0F * (S) + 1.0F) * (1.0F/65535.0F))) + + + +/** Compute ceiling of integer quotient of A divided by B. */ +#define CEILING( A, B ) ( (A) % (B) == 0 ? (A)/(B) : (A)/(B)+1 ) + + +/** + * Flip the 8 bits in each byte of the given array. + * + * \param p array. + * \param n number of bytes. + * + * \todo try this trick to flip bytes someday: + * \code + * v = ((v & 0x55555555) << 1) | ((v >> 1) & 0x55555555); + * v = ((v & 0x33333333) << 2) | ((v >> 2) & 0x33333333); + * v = ((v & 0x0f0f0f0f) << 4) | ((v >> 4) & 0x0f0f0f0f); + * \endcode + */ +static void +flip_bytes( GLubyte *p, GLuint n ) +{ + GLuint i, a, b; + for (i = 0; i < n; i++) { + b = (GLuint) p[i]; /* words are often faster than bytes */ + a = ((b & 0x01) << 7) | + ((b & 0x02) << 5) | + ((b & 0x04) << 3) | + ((b & 0x08) << 1) | + ((b & 0x10) >> 1) | + ((b & 0x20) >> 3) | + ((b & 0x40) >> 5) | + ((b & 0x80) >> 7); + p[i] = (GLubyte) a; + } +} + + + +/* + * Unpack a 32x32 pixel polygon stipple from user memory using the + * current pixel unpack settings. + */ +void +_mesa_unpack_polygon_stipple( const GLubyte *pattern, GLuint dest[32], + const struct gl_pixelstore_attrib *unpacking ) +{ + GLubyte *ptrn = (GLubyte *) _mesa_unpack_bitmap(32, 32, pattern, unpacking); + if (ptrn) { + /* Convert pattern from GLubytes to GLuints and handle big/little + * endian differences + */ + GLubyte *p = ptrn; + GLint i; + for (i = 0; i < 32; i++) { + dest[i] = (p[0] << 24) + | (p[1] << 16) + | (p[2] << 8) + | (p[3] ); + p += 4; + } + free(ptrn); + } +} + + +/* + * Pack polygon stipple into user memory given current pixel packing + * settings. + */ +void +_mesa_pack_polygon_stipple( const GLuint pattern[32], GLubyte *dest, + const struct gl_pixelstore_attrib *packing ) +{ + /* Convert pattern from GLuints to GLubytes to handle big/little + * endian differences. + */ + GLubyte ptrn[32*4]; + GLint i; + for (i = 0; i < 32; i++) { + ptrn[i * 4 + 0] = (GLubyte) ((pattern[i] >> 24) & 0xff); + ptrn[i * 4 + 1] = (GLubyte) ((pattern[i] >> 16) & 0xff); + ptrn[i * 4 + 2] = (GLubyte) ((pattern[i] >> 8 ) & 0xff); + ptrn[i * 4 + 3] = (GLubyte) ((pattern[i] ) & 0xff); + } + + _mesa_pack_bitmap(32, 32, ptrn, dest, packing); +} + + +/* + * Unpack bitmap data. Resulting data will be in most-significant-bit-first + * order with row alignment = 1 byte. + */ +GLvoid * +_mesa_unpack_bitmap( GLint width, GLint height, const GLubyte *pixels, + const struct gl_pixelstore_attrib *packing ) +{ + GLint bytes, row, width_in_bytes; + GLubyte *buffer, *dst; + + if (!pixels) + return NULL; + + /* Alloc dest storage */ + bytes = ((width + 7) / 8 * height); + buffer = (GLubyte *) malloc( bytes ); + if (!buffer) + return NULL; + + width_in_bytes = CEILING( width, 8 ); + dst = buffer; + for (row = 0; row < height; row++) { + const GLubyte *src = (const GLubyte *) + _mesa_image_address2d(packing, pixels, width, height, + GL_COLOR_INDEX, GL_BITMAP, row, 0); + if (!src) { + free(buffer); + return NULL; + } + + if ((packing->SkipPixels & 7) == 0) { + memcpy( dst, src, width_in_bytes ); + if (packing->LsbFirst) { + flip_bytes( dst, width_in_bytes ); + } + } + else { + /* handling SkipPixels is a bit tricky (no pun intended!) */ + GLint i; + if (packing->LsbFirst) { + GLubyte srcMask = 1 << (packing->SkipPixels & 0x7); + GLubyte dstMask = 128; + const GLubyte *s = src; + GLubyte *d = dst; + *d = 0; + for (i = 0; i < width; i++) { + if (*s & srcMask) { + *d |= dstMask; + } + if (srcMask == 128) { + srcMask = 1; + s++; + } + else { + srcMask = srcMask << 1; + } + if (dstMask == 1) { + dstMask = 128; + d++; + *d = 0; + } + else { + dstMask = dstMask >> 1; + } + } + } + else { + GLubyte srcMask = 128 >> (packing->SkipPixels & 0x7); + GLubyte dstMask = 128; + const GLubyte *s = src; + GLubyte *d = dst; + *d = 0; + for (i = 0; i < width; i++) { + if (*s & srcMask) { + *d |= dstMask; + } + if (srcMask == 1) { + srcMask = 128; + s++; + } + else { + srcMask = srcMask >> 1; + } + if (dstMask == 1) { + dstMask = 128; + d++; + *d = 0; + } + else { + dstMask = dstMask >> 1; + } + } + } + } + dst += width_in_bytes; + } + + return buffer; +} + + +/* + * Pack bitmap data. + */ +void +_mesa_pack_bitmap( GLint width, GLint height, const GLubyte *source, + GLubyte *dest, const struct gl_pixelstore_attrib *packing ) +{ + GLint row, width_in_bytes; + const GLubyte *src; + + if (!source) + return; + + width_in_bytes = CEILING( width, 8 ); + src = source; + for (row = 0; row < height; row++) { + GLubyte *dst = (GLubyte *) _mesa_image_address2d(packing, dest, + width, height, GL_COLOR_INDEX, GL_BITMAP, row, 0); + if (!dst) + return; + + if ((packing->SkipPixels & 7) == 0) { + memcpy( dst, src, width_in_bytes ); + if (packing->LsbFirst) { + flip_bytes( dst, width_in_bytes ); + } + } + else { + /* handling SkipPixels is a bit tricky (no pun intended!) */ + GLint i; + if (packing->LsbFirst) { + GLubyte srcMask = 128; + GLubyte dstMask = 1 << (packing->SkipPixels & 0x7); + const GLubyte *s = src; + GLubyte *d = dst; + *d = 0; + for (i = 0; i < width; i++) { + if (*s & srcMask) { + *d |= dstMask; + } + if (srcMask == 1) { + srcMask = 128; + s++; + } + else { + srcMask = srcMask >> 1; + } + if (dstMask == 128) { + dstMask = 1; + d++; + *d = 0; + } + else { + dstMask = dstMask << 1; + } + } + } + else { + GLubyte srcMask = 128; + GLubyte dstMask = 128 >> (packing->SkipPixels & 0x7); + const GLubyte *s = src; + GLubyte *d = dst; + *d = 0; + for (i = 0; i < width; i++) { + if (*s & srcMask) { + *d |= dstMask; + } + if (srcMask == 1) { + srcMask = 128; + s++; + } + else { + srcMask = srcMask >> 1; + } + if (dstMask == 1) { + dstMask = 128; + d++; + *d = 0; + } + else { + dstMask = dstMask >> 1; + } + } + } + } + src += width_in_bytes; + } +} + + +/** + * Get indexes of color components for a basic color format, such as + * GL_RGBA, GL_RED, GL_LUMINANCE_ALPHA, etc. Return -1 for indexes + * that do not apply. + */ +static void +get_component_indexes(GLenum format, + GLint *redIndex, + GLint *greenIndex, + GLint *blueIndex, + GLint *alphaIndex, + GLint *luminanceIndex, + GLint *intensityIndex) +{ + *redIndex = -1; + *greenIndex = -1; + *blueIndex = -1; + *alphaIndex = -1; + *luminanceIndex = -1; + *intensityIndex = -1; + + switch (format) { + case GL_LUMINANCE: + case GL_LUMINANCE_INTEGER_EXT: + *luminanceIndex = 0; + break; + case GL_LUMINANCE_ALPHA: + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + *luminanceIndex = 0; + *alphaIndex = 1; + break; + case GL_INTENSITY: + *intensityIndex = 0; + break; + case GL_RED: + case GL_RED_INTEGER_EXT: + *redIndex = 0; + break; + case GL_GREEN: + case GL_GREEN_INTEGER_EXT: + *greenIndex = 0; + break; + case GL_BLUE: + case GL_BLUE_INTEGER_EXT: + *blueIndex = 0; + break; + case GL_ALPHA: + case GL_ALPHA_INTEGER_EXT: + *alphaIndex = 0; + break; + case GL_RG: + case GL_RG_INTEGER: + *redIndex = 0; + *greenIndex = 1; + break; + case GL_RGB: + case GL_RGB_INTEGER_EXT: + *redIndex = 0; + *greenIndex = 1; + *blueIndex = 2; + break; + case GL_BGR: + case GL_BGR_INTEGER_EXT: + *blueIndex = 0; + *greenIndex = 1; + *redIndex = 2; + break; + case GL_RGBA: + case GL_RGBA_INTEGER_EXT: + *redIndex = 0; + *greenIndex = 1; + *blueIndex = 2; + *alphaIndex = 3; + break; + case GL_BGRA: + case GL_BGRA_INTEGER: + *redIndex = 2; + *greenIndex = 1; + *blueIndex = 0; + *alphaIndex = 3; + break; + case GL_ABGR_EXT: + *redIndex = 3; + *greenIndex = 2; + *blueIndex = 1; + *alphaIndex = 0; + break; + case GL_DU8DV8_ATI: + case GL_DUDV_ATI: + *redIndex = 0; + *greenIndex = 1; + break; + default: + assert(0 && "bad format in get_component_indexes()"); + } +} + + + +/** + * For small integer types, return the min and max possible values. + * Used for clamping floats to unscaled integer types. + * \return GL_TRUE if type is handled, GL_FALSE otherwise. + */ +static GLboolean +get_type_min_max(GLenum type, GLfloat *min, GLfloat *max) +{ + switch (type) { + case GL_BYTE: + *min = -128.0; + *max = 127.0; + return GL_TRUE; + case GL_UNSIGNED_BYTE: + *min = 0.0; + *max = 255.0; + return GL_TRUE; + case GL_SHORT: + *min = -32768.0; + *max = 32767.0; + return GL_TRUE; + case GL_UNSIGNED_SHORT: + *min = 0.0; + *max = 65535.0; + return GL_TRUE; + default: + return GL_FALSE; + } +} + + + +/** + * Used to pack an array [][4] of RGBA float colors as specified + * by the dstFormat, dstType and dstPacking. Used by glReadPixels. + * Historically, the RGBA values were in [0,1] and rescaled to fit + * into GLubytes, etc. But with new integer formats, the RGBA values + * may have any value and we don't always rescale when converting to + * integers. + * + * Note: the rgba values will be modified by this function when any pixel + * transfer ops are enabled. + */ +void +_mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4], + GLenum dstFormat, GLenum dstType, + GLvoid *dstAddr, + const struct gl_pixelstore_attrib *dstPacking, + GLbitfield transferOps) +{ + GLfloat luminance[MAX_WIDTH]; + const GLint comps = _mesa_components_in_format(dstFormat); + const GLboolean intDstFormat = _mesa_is_integer_format(dstFormat); + GLuint i; + + /* XXX + * This test should probably go away. Have the caller set/clear the + * IMAGE_CLAMP_BIT as needed. + */ + if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) { + if (!intDstFormat) { + /* need to clamp to [0, 1] */ + transferOps |= IMAGE_CLAMP_BIT; + } + } + + if (transferOps) { + _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba); + } + + /* + * Component clamping (besides clamping to [0,1] in + * _mesa_apply_rgba_transfer_ops()). + */ + if (intDstFormat) { + /* clamping to dest type's min/max values */ + GLfloat min, max; + if (get_type_min_max(dstType, &min, &max)) { + for (i = 0; i < n; i++) { + rgba[i][RCOMP] = CLAMP(rgba[i][RCOMP], min, max); + rgba[i][GCOMP] = CLAMP(rgba[i][GCOMP], min, max); + rgba[i][BCOMP] = CLAMP(rgba[i][BCOMP], min, max); + rgba[i][ACOMP] = CLAMP(rgba[i][ACOMP], min, max); + } + } + } + else if (dstFormat == GL_LUMINANCE || dstFormat == GL_LUMINANCE_ALPHA) { + /* compute luminance values */ + if (transferOps & IMAGE_CLAMP_BIT) { + for (i = 0; i < n; i++) { + GLfloat sum = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP]; + luminance[i] = CLAMP(sum, 0.0F, 1.0F); + } + } + else { + for (i = 0; i < n; i++) { + luminance[i] = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP]; + } + } + } + + /* + * Pack/store the pixels. Ugh! Lots of cases!!! + */ + switch (dstType) { + case GL_UNSIGNED_BYTE: + { + GLubyte *dst = (GLubyte *) dstAddr; + switch (dstFormat) { + case GL_RED: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); + break; + case GL_GREEN: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); + break; + case GL_BLUE: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); + break; + case GL_ALPHA: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_UBYTE(rgba[i][ACOMP]); + break; + case GL_LUMINANCE: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_UBYTE(luminance[i]); + break; + case GL_LUMINANCE_ALPHA: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_UBYTE(luminance[i]); + dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][ACOMP]); + } + break; + case GL_RG: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); + } + break; + case GL_RGB: + for (i=0;i<n;i++) { + dst[i*3+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); + dst[i*3+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); + dst[i*3+2] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); + } + break; + case GL_RGBA: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); + dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); + dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); + dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][ACOMP]); + } + break; + case GL_BGR: + for (i=0;i<n;i++) { + dst[i*3+0] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); + dst[i*3+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); + dst[i*3+2] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); + } + break; + case GL_BGRA: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); + dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); + dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); + dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][ACOMP]); + } + break; + case GL_ABGR_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][ACOMP]); + dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][BCOMP]); + dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); + dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); + } + break; + case GL_RED_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLubyte) rgba[i][RCOMP]; + } + break; + case GL_GREEN_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLubyte) rgba[i][GCOMP]; + } + break; + case GL_BLUE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLubyte) rgba[i][BCOMP]; + } + break; + case GL_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLubyte) rgba[i][ACOMP]; + } + break; + case GL_RGB_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLubyte) rgba[i][RCOMP]; + dst[i*3+1] = (GLubyte) rgba[i][GCOMP]; + dst[i*3+2] = (GLubyte) rgba[i][BCOMP]; + } + break; + case GL_RGBA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLubyte) rgba[i][RCOMP]; + dst[i*4+1] = (GLubyte) rgba[i][GCOMP]; + dst[i*4+2] = (GLubyte) rgba[i][BCOMP]; + dst[i*4+3] = (GLubyte) rgba[i][ACOMP]; + } + break; + case GL_BGR_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLubyte) rgba[i][BCOMP]; + dst[i*3+1] = (GLubyte) rgba[i][GCOMP]; + dst[i*3+2] = (GLubyte) rgba[i][RCOMP]; + } + break; + case GL_BGRA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLubyte) rgba[i][BCOMP]; + dst[i*4+1] = (GLubyte) rgba[i][GCOMP]; + dst[i*4+2] = (GLubyte) rgba[i][RCOMP]; + dst[i*4+3] = (GLubyte) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*2+0] = (GLubyte) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + dst[i*2+1] = (GLubyte) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLubyte) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + } + break; + case GL_DUDV_ATI: + case GL_DU8DV8_ATI: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]); + } + break; + default: + _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); + } + } + break; + case GL_BYTE: + { + GLbyte *dst = (GLbyte *) dstAddr; + switch (dstFormat) { + case GL_RED: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_BYTE(rgba[i][RCOMP]); + break; + case GL_GREEN: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_BYTE(rgba[i][GCOMP]); + break; + case GL_BLUE: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_BYTE(rgba[i][BCOMP]); + break; + case GL_ALPHA: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_BYTE(rgba[i][ACOMP]); + break; + case GL_LUMINANCE: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_BYTE(luminance[i]); + break; + case GL_LUMINANCE_ALPHA: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_BYTE(luminance[i]); + dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][ACOMP]); + } + break; + case GL_RG: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); + } + break; + case GL_RGB: + for (i=0;i<n;i++) { + dst[i*3+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]); + dst[i*3+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); + dst[i*3+2] = FLOAT_TO_BYTE(rgba[i][BCOMP]); + } + break; + case GL_RGBA: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]); + dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); + dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][BCOMP]); + dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][ACOMP]); + } + break; + case GL_BGR: + for (i=0;i<n;i++) { + dst[i*3+0] = FLOAT_TO_BYTE(rgba[i][BCOMP]); + dst[i*3+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); + dst[i*3+2] = FLOAT_TO_BYTE(rgba[i][RCOMP]); + } + break; + case GL_BGRA: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][BCOMP]); + dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); + dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][RCOMP]); + dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][ACOMP]); + } + break; + case GL_ABGR_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][ACOMP]); + dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][BCOMP]); + dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][GCOMP]); + dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][RCOMP]); + } + break; + case GL_RED_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLbyte) rgba[i][RCOMP]; + } + break; + case GL_GREEN_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLbyte) rgba[i][GCOMP]; + } + break; + case GL_BLUE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLbyte) rgba[i][BCOMP]; + } + break; + case GL_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLbyte) rgba[i][ACOMP]; + } + break; + case GL_RGB_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLbyte) rgba[i][RCOMP]; + dst[i*3+1] = (GLbyte) rgba[i][GCOMP]; + dst[i*3+2] = (GLbyte) rgba[i][BCOMP]; + } + break; + case GL_RGBA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLbyte) rgba[i][RCOMP]; + dst[i*4+1] = (GLbyte) rgba[i][GCOMP]; + dst[i*4+2] = (GLbyte) rgba[i][BCOMP]; + dst[i*4+3] = (GLbyte) rgba[i][ACOMP]; + } + break; + case GL_BGR_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLbyte) rgba[i][BCOMP]; + dst[i*3+1] = (GLbyte) rgba[i][GCOMP]; + dst[i*3+2] = (GLbyte) rgba[i][RCOMP]; + } + break; + case GL_BGRA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLbyte) rgba[i][BCOMP]; + dst[i*4+1] = (GLbyte) rgba[i][GCOMP]; + dst[i*4+2] = (GLbyte) rgba[i][RCOMP]; + dst[i*4+3] = (GLbyte) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*2+0] = (GLbyte) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + dst[i*2+1] = (GLbyte) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLbyte) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + } + break; + case GL_DUDV_ATI: + case GL_DU8DV8_ATI: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); + } + break; + default: + _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); + } + } + break; + case GL_UNSIGNED_SHORT: + { + GLushort *dst = (GLushort *) dstAddr; + switch (dstFormat) { + case GL_RED: + for (i=0;i<n;i++) + CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][RCOMP]); + break; + case GL_GREEN: + for (i=0;i<n;i++) + CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][GCOMP]); + break; + case GL_BLUE: + for (i=0;i<n;i++) + CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][BCOMP]); + break; + case GL_ALPHA: + for (i=0;i<n;i++) + CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][ACOMP]); + break; + case GL_LUMINANCE: + for (i=0;i<n;i++) + UNCLAMPED_FLOAT_TO_USHORT(dst[i], luminance[i]); + break; + case GL_LUMINANCE_ALPHA: + for (i=0;i<n;i++) { + UNCLAMPED_FLOAT_TO_USHORT(dst[i*2+0], luminance[i]); + CLAMPED_FLOAT_TO_USHORT(dst[i*2+1], rgba[i][ACOMP]); + } + break; + case GL_RG: + for (i=0;i<n;i++) { + CLAMPED_FLOAT_TO_USHORT(dst[i*2+0], rgba[i][RCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*2+1], rgba[i][GCOMP]); + } + break; + case GL_RGB: + for (i=0;i<n;i++) { + CLAMPED_FLOAT_TO_USHORT(dst[i*3+0], rgba[i][RCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*3+1], rgba[i][GCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*3+2], rgba[i][BCOMP]); + } + break; + case GL_RGBA: + for (i=0;i<n;i++) { + CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][RCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][GCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][BCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][ACOMP]); + } + break; + case GL_BGR: + for (i=0;i<n;i++) { + CLAMPED_FLOAT_TO_USHORT(dst[i*3+0], rgba[i][BCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*3+1], rgba[i][GCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*3+2], rgba[i][RCOMP]); + } + break; + case GL_BGRA: + for (i=0;i<n;i++) { + CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][BCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][GCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][RCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][ACOMP]); + } + break; + case GL_ABGR_EXT: + for (i=0;i<n;i++) { + CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][ACOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][BCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][GCOMP]); + CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][RCOMP]); + } + break; + case GL_RED_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLushort) rgba[i][RCOMP]; + } + break; + case GL_GREEN_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLushort) rgba[i][GCOMP]; + } + break; + case GL_BLUE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLushort) rgba[i][BCOMP]; + } + break; + case GL_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLushort) rgba[i][ACOMP]; + } + break; + case GL_RGB_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLushort) rgba[i][RCOMP]; + dst[i*3+1] = (GLushort) rgba[i][GCOMP]; + dst[i*3+2] = (GLushort) rgba[i][BCOMP]; + } + break; + case GL_RGBA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLushort) rgba[i][RCOMP]; + dst[i*4+1] = (GLushort) rgba[i][GCOMP]; + dst[i*4+2] = (GLushort) rgba[i][BCOMP]; + dst[i*4+3] = (GLushort) rgba[i][ACOMP]; + } + break; + case GL_BGR_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLushort) rgba[i][BCOMP]; + dst[i*3+1] = (GLushort) rgba[i][GCOMP]; + dst[i*3+2] = (GLushort) rgba[i][RCOMP]; + } + break; + case GL_BGRA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLushort) rgba[i][BCOMP]; + dst[i*4+1] = (GLushort) rgba[i][GCOMP]; + dst[i*4+2] = (GLushort) rgba[i][RCOMP]; + dst[i*4+3] = (GLushort) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*2+0] = (GLushort) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + dst[i*2+1] = (GLushort) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLushort) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + } + break; + case GL_DUDV_ATI: + case GL_DU8DV8_ATI: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_USHORT(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_USHORT(rgba[i][GCOMP]); + } + break; + default: + _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); + } + } + break; + case GL_SHORT: + { + GLshort *dst = (GLshort *) dstAddr; + switch (dstFormat) { + case GL_RED: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_SHORT(rgba[i][RCOMP]); + break; + case GL_GREEN: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_SHORT(rgba[i][GCOMP]); + break; + case GL_BLUE: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_SHORT(rgba[i][BCOMP]); + break; + case GL_ALPHA: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_SHORT(rgba[i][ACOMP]); + break; + case GL_LUMINANCE: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_SHORT(luminance[i]); + break; + case GL_LUMINANCE_ALPHA: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_SHORT(luminance[i]); + dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][ACOMP]); + } + break; + case GL_RG: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); + } + break; + case GL_RGB: + for (i=0;i<n;i++) { + dst[i*3+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]); + dst[i*3+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); + dst[i*3+2] = FLOAT_TO_SHORT(rgba[i][BCOMP]); + } + break; + case GL_RGBA: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]); + dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); + dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][BCOMP]); + dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][ACOMP]); + } + break; + case GL_BGR: + for (i=0;i<n;i++) { + dst[i*3+0] = FLOAT_TO_SHORT(rgba[i][BCOMP]); + dst[i*3+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); + dst[i*3+2] = FLOAT_TO_SHORT(rgba[i][RCOMP]); + } + break; + case GL_BGRA: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][BCOMP]); + dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); + dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][RCOMP]); + dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][ACOMP]); + } + break; + case GL_ABGR_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][ACOMP]); + dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][BCOMP]); + dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][GCOMP]); + dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][RCOMP]); + } + break; + case GL_RED_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLshort) rgba[i][RCOMP]; + } + break; + case GL_GREEN_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLshort) rgba[i][GCOMP]; + } + break; + case GL_BLUE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLshort) rgba[i][BCOMP]; + } + break; + case GL_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLshort) rgba[i][ACOMP]; + } + break; + case GL_RGB_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLshort) rgba[i][RCOMP]; + dst[i*3+1] = (GLshort) rgba[i][GCOMP]; + dst[i*3+2] = (GLshort) rgba[i][BCOMP]; + } + break; + case GL_RGBA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLshort) rgba[i][RCOMP]; + dst[i*4+1] = (GLshort) rgba[i][GCOMP]; + dst[i*4+2] = (GLshort) rgba[i][BCOMP]; + dst[i*4+3] = (GLshort) rgba[i][ACOMP]; + } + break; + case GL_BGR_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLshort) rgba[i][BCOMP]; + dst[i*3+1] = (GLshort) rgba[i][GCOMP]; + dst[i*3+2] = (GLshort) rgba[i][RCOMP]; + } + break; + case GL_BGRA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLshort) rgba[i][BCOMP]; + dst[i*4+1] = (GLshort) rgba[i][GCOMP]; + dst[i*4+2] = (GLshort) rgba[i][RCOMP]; + dst[i*4+3] = (GLshort) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*2+0] = (GLshort) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + dst[i*2+1] = (GLshort) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLshort) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + } + break; + case GL_DUDV_ATI: + case GL_DU8DV8_ATI: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]); + } + break; + default: + _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); + } + } + break; + case GL_UNSIGNED_INT: + { + GLuint *dst = (GLuint *) dstAddr; + switch (dstFormat) { + case GL_RED: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_UINT(rgba[i][RCOMP]); + break; + case GL_GREEN: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_UINT(rgba[i][GCOMP]); + break; + case GL_BLUE: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_UINT(rgba[i][BCOMP]); + break; + case GL_ALPHA: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_UINT(rgba[i][ACOMP]); + break; + case GL_LUMINANCE: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_UINT(luminance[i]); + break; + case GL_LUMINANCE_ALPHA: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_UINT(luminance[i]); + dst[i*2+1] = FLOAT_TO_UINT(rgba[i][ACOMP]); + } + break; + case GL_RG: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_UINT(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); + } + break; + case GL_RGB: + for (i=0;i<n;i++) { + dst[i*3+0] = FLOAT_TO_UINT(rgba[i][RCOMP]); + dst[i*3+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); + dst[i*3+2] = FLOAT_TO_UINT(rgba[i][BCOMP]); + } + break; + case GL_RGBA: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_UINT(rgba[i][RCOMP]); + dst[i*4+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); + dst[i*4+2] = FLOAT_TO_UINT(rgba[i][BCOMP]); + dst[i*4+3] = FLOAT_TO_UINT(rgba[i][ACOMP]); + } + break; + case GL_BGR: + for (i=0;i<n;i++) { + dst[i*3+0] = FLOAT_TO_UINT(rgba[i][BCOMP]); + dst[i*3+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); + dst[i*3+2] = FLOAT_TO_UINT(rgba[i][RCOMP]); + } + break; + case GL_BGRA: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_UINT(rgba[i][BCOMP]); + dst[i*4+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); + dst[i*4+2] = FLOAT_TO_UINT(rgba[i][RCOMP]); + dst[i*4+3] = FLOAT_TO_UINT(rgba[i][ACOMP]); + } + break; + case GL_ABGR_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_UINT(rgba[i][ACOMP]); + dst[i*4+1] = FLOAT_TO_UINT(rgba[i][BCOMP]); + dst[i*4+2] = FLOAT_TO_UINT(rgba[i][GCOMP]); + dst[i*4+3] = FLOAT_TO_UINT(rgba[i][RCOMP]); + } + break; + case GL_RED_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLuint) rgba[i][RCOMP]; + } + break; + case GL_GREEN_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLuint) rgba[i][GCOMP]; + } + break; + case GL_BLUE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLuint) rgba[i][BCOMP]; + } + break; + case GL_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLuint) rgba[i][ACOMP]; + } + break; + case GL_RGB_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLuint) rgba[i][RCOMP]; + dst[i*3+1] = (GLuint) rgba[i][GCOMP]; + dst[i*3+2] = (GLuint) rgba[i][BCOMP]; + } + break; + case GL_RGBA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLuint) rgba[i][RCOMP]; + dst[i*4+1] = (GLuint) rgba[i][GCOMP]; + dst[i*4+2] = (GLuint) rgba[i][BCOMP]; + dst[i*4+3] = (GLuint) rgba[i][ACOMP]; + } + break; + case GL_BGR_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLuint) rgba[i][BCOMP]; + dst[i*3+1] = (GLuint) rgba[i][GCOMP]; + dst[i*3+2] = (GLuint) rgba[i][RCOMP]; + } + break; + case GL_BGRA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLuint) rgba[i][BCOMP]; + dst[i*4+1] = (GLuint) rgba[i][GCOMP]; + dst[i*4+2] = (GLuint) rgba[i][RCOMP]; + dst[i*4+3] = (GLuint) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*2+0] = (GLuint) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + dst[i*2+1] = (GLuint) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLuint) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + } + break; + case GL_DUDV_ATI: + case GL_DU8DV8_ATI: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_UINT(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_UINT(rgba[i][GCOMP]); + } + break; + default: + _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); + } + } + break; + case GL_INT: + { + GLint *dst = (GLint *) dstAddr; + switch (dstFormat) { + case GL_RED: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_INT(rgba[i][RCOMP]); + break; + case GL_GREEN: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_INT(rgba[i][GCOMP]); + break; + case GL_BLUE: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_INT(rgba[i][BCOMP]); + break; + case GL_ALPHA: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_INT(rgba[i][ACOMP]); + break; + case GL_LUMINANCE: + for (i=0;i<n;i++) + dst[i] = FLOAT_TO_INT(luminance[i]); + break; + case GL_LUMINANCE_ALPHA: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_INT(luminance[i]); + dst[i*2+1] = FLOAT_TO_INT(rgba[i][ACOMP]); + } + break; + case GL_RG: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_INT(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_INT(rgba[i][GCOMP]); + } + break; + case GL_RGB: + for (i=0;i<n;i++) { + dst[i*3+0] = FLOAT_TO_INT(rgba[i][RCOMP]); + dst[i*3+1] = FLOAT_TO_INT(rgba[i][GCOMP]); + dst[i*3+2] = FLOAT_TO_INT(rgba[i][BCOMP]); + } + break; + case GL_RGBA: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_INT(rgba[i][RCOMP]); + dst[i*4+1] = FLOAT_TO_INT(rgba[i][GCOMP]); + dst[i*4+2] = FLOAT_TO_INT(rgba[i][BCOMP]); + dst[i*4+3] = FLOAT_TO_INT(rgba[i][ACOMP]); + } + break; + case GL_BGR: + for (i=0;i<n;i++) { + dst[i*3+0] = FLOAT_TO_INT(rgba[i][BCOMP]); + dst[i*3+1] = FLOAT_TO_INT(rgba[i][GCOMP]); + dst[i*3+2] = FLOAT_TO_INT(rgba[i][RCOMP]); + } + break; + case GL_BGRA: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_INT(rgba[i][BCOMP]); + dst[i*4+1] = FLOAT_TO_INT(rgba[i][GCOMP]); + dst[i*4+2] = FLOAT_TO_INT(rgba[i][RCOMP]); + dst[i*4+3] = FLOAT_TO_INT(rgba[i][ACOMP]); + } + break; + case GL_ABGR_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = FLOAT_TO_INT(rgba[i][ACOMP]); + dst[i*4+1] = FLOAT_TO_INT(rgba[i][BCOMP]); + dst[i*4+2] = FLOAT_TO_INT(rgba[i][GCOMP]); + dst[i*4+3] = FLOAT_TO_INT(rgba[i][RCOMP]); + } + break; + case GL_DUDV_ATI: + case GL_DU8DV8_ATI: + for (i=0;i<n;i++) { + dst[i*2+0] = FLOAT_TO_INT(rgba[i][RCOMP]); + dst[i*2+1] = FLOAT_TO_INT(rgba[i][GCOMP]); + } + break; + case GL_RED_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLint) rgba[i][RCOMP]; + } + break; + case GL_GREEN_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLint) rgba[i][GCOMP]; + } + break; + case GL_BLUE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLint) rgba[i][BCOMP]; + } + break; + case GL_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLint) rgba[i][ACOMP]; + } + break; + case GL_RGB_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLint) rgba[i][RCOMP]; + dst[i*3+1] = (GLint) rgba[i][GCOMP]; + dst[i*3+2] = (GLint) rgba[i][BCOMP]; + } + break; + case GL_RGBA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLint) rgba[i][RCOMP]; + dst[i*4+1] = (GLint) rgba[i][GCOMP]; + dst[i*4+2] = (GLint) rgba[i][BCOMP]; + dst[i*4+3] = (GLint) rgba[i][ACOMP]; + } + break; + case GL_BGR_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*3+0] = (GLint) rgba[i][BCOMP]; + dst[i*3+1] = (GLint) rgba[i][GCOMP]; + dst[i*3+2] = (GLint) rgba[i][RCOMP]; + } + break; + case GL_BGRA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = (GLint) rgba[i][BCOMP]; + dst[i*4+1] = (GLint) rgba[i][GCOMP]; + dst[i*4+2] = (GLint) rgba[i][RCOMP]; + dst[i*4+3] = (GLint) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i*2+0] = (GLint) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + dst[i*2+1] = (GLint) rgba[i][ACOMP]; + } + break; + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + for (i=0;i<n;i++) { + dst[i] = (GLint) (rgba[i][RCOMP] + + rgba[i][GCOMP] + + rgba[i][BCOMP]); + } + break; + default: + _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); + } + } + break; + case GL_FLOAT: + { + GLfloat *dst = (GLfloat *) dstAddr; + switch (dstFormat) { + case GL_RED: + for (i=0;i<n;i++) + dst[i] = rgba[i][RCOMP]; + break; + case GL_GREEN: + for (i=0;i<n;i++) + dst[i] = rgba[i][GCOMP]; + break; + case GL_BLUE: + for (i=0;i<n;i++) + dst[i] = rgba[i][BCOMP]; + break; + case GL_ALPHA: + for (i=0;i<n;i++) + dst[i] = rgba[i][ACOMP]; + break; + case GL_LUMINANCE: + for (i=0;i<n;i++) + dst[i] = luminance[i]; + break; + case GL_LUMINANCE_ALPHA: + for (i=0;i<n;i++) { + dst[i*2+0] = luminance[i]; + dst[i*2+1] = rgba[i][ACOMP]; + } + break; + case GL_RG: + for (i=0;i<n;i++) { + dst[i*2+0] = rgba[i][RCOMP]; + dst[i*2+1] = rgba[i][GCOMP]; + } + break; + case GL_RGB: + for (i=0;i<n;i++) { + dst[i*3+0] = rgba[i][RCOMP]; + dst[i*3+1] = rgba[i][GCOMP]; + dst[i*3+2] = rgba[i][BCOMP]; + } + break; + case GL_RGBA: + for (i=0;i<n;i++) { + dst[i*4+0] = rgba[i][RCOMP]; + dst[i*4+1] = rgba[i][GCOMP]; + dst[i*4+2] = rgba[i][BCOMP]; + dst[i*4+3] = rgba[i][ACOMP]; + } + break; + case GL_BGR: + for (i=0;i<n;i++) { + dst[i*3+0] = rgba[i][BCOMP]; + dst[i*3+1] = rgba[i][GCOMP]; + dst[i*3+2] = rgba[i][RCOMP]; + } + break; + case GL_BGRA: + for (i=0;i<n;i++) { + dst[i*4+0] = rgba[i][BCOMP]; + dst[i*4+1] = rgba[i][GCOMP]; + dst[i*4+2] = rgba[i][RCOMP]; + dst[i*4+3] = rgba[i][ACOMP]; + } + break; + case GL_ABGR_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = rgba[i][ACOMP]; + dst[i*4+1] = rgba[i][BCOMP]; + dst[i*4+2] = rgba[i][GCOMP]; + dst[i*4+3] = rgba[i][RCOMP]; + } + break; + case GL_DUDV_ATI: + case GL_DU8DV8_ATI: + for (i=0;i<n;i++) { + dst[i*2+0] = rgba[i][RCOMP]; + dst[i*2+1] = rgba[i][GCOMP]; + } + break; + default: + _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); + } + } + break; + case GL_HALF_FLOAT_ARB: + { + GLhalfARB *dst = (GLhalfARB *) dstAddr; + switch (dstFormat) { + case GL_RED: + for (i=0;i<n;i++) + dst[i] = _mesa_float_to_half(rgba[i][RCOMP]); + break; + case GL_GREEN: + for (i=0;i<n;i++) + dst[i] = _mesa_float_to_half(rgba[i][GCOMP]); + break; + case GL_BLUE: + for (i=0;i<n;i++) + dst[i] = _mesa_float_to_half(rgba[i][BCOMP]); + break; + case GL_ALPHA: + for (i=0;i<n;i++) + dst[i] = _mesa_float_to_half(rgba[i][ACOMP]); + break; + case GL_LUMINANCE: + for (i=0;i<n;i++) + dst[i] = _mesa_float_to_half(luminance[i]); + break; + case GL_LUMINANCE_ALPHA: + for (i=0;i<n;i++) { + dst[i*2+0] = _mesa_float_to_half(luminance[i]); + dst[i*2+1] = _mesa_float_to_half(rgba[i][ACOMP]); + } + break; + case GL_RG: + for (i=0;i<n;i++) { + dst[i*2+0] = _mesa_float_to_half(rgba[i][RCOMP]); + dst[i*2+1] = _mesa_float_to_half(rgba[i][GCOMP]); + } + break; + case GL_RGB: + for (i=0;i<n;i++) { + dst[i*3+0] = _mesa_float_to_half(rgba[i][RCOMP]); + dst[i*3+1] = _mesa_float_to_half(rgba[i][GCOMP]); + dst[i*3+2] = _mesa_float_to_half(rgba[i][BCOMP]); + } + break; + case GL_RGBA: + for (i=0;i<n;i++) { + dst[i*4+0] = _mesa_float_to_half(rgba[i][RCOMP]); + dst[i*4+1] = _mesa_float_to_half(rgba[i][GCOMP]); + dst[i*4+2] = _mesa_float_to_half(rgba[i][BCOMP]); + dst[i*4+3] = _mesa_float_to_half(rgba[i][ACOMP]); + } + break; + case GL_BGR: + for (i=0;i<n;i++) { + dst[i*3+0] = _mesa_float_to_half(rgba[i][BCOMP]); + dst[i*3+1] = _mesa_float_to_half(rgba[i][GCOMP]); + dst[i*3+2] = _mesa_float_to_half(rgba[i][RCOMP]); + } + break; + case GL_BGRA: + for (i=0;i<n;i++) { + dst[i*4+0] = _mesa_float_to_half(rgba[i][BCOMP]); + dst[i*4+1] = _mesa_float_to_half(rgba[i][GCOMP]); + dst[i*4+2] = _mesa_float_to_half(rgba[i][RCOMP]); + dst[i*4+3] = _mesa_float_to_half(rgba[i][ACOMP]); + } + break; + case GL_ABGR_EXT: + for (i=0;i<n;i++) { + dst[i*4+0] = _mesa_float_to_half(rgba[i][ACOMP]); + dst[i*4+1] = _mesa_float_to_half(rgba[i][BCOMP]); + dst[i*4+2] = _mesa_float_to_half(rgba[i][GCOMP]); + dst[i*4+3] = _mesa_float_to_half(rgba[i][RCOMP]); + } + break; + case GL_DUDV_ATI: + case GL_DU8DV8_ATI: + for (i=0;i<n;i++) { + dst[i*2+0] = _mesa_float_to_half(rgba[i][RCOMP]); + dst[i*2+1] = _mesa_float_to_half(rgba[i][GCOMP]); + } + break; + default: + _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n"); + } + } + break; + case GL_UNSIGNED_BYTE_3_3_2: + if (dstFormat == GL_RGB) { + GLubyte *dst = (GLubyte *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 7.0F) << 5) + | (IROUND(rgba[i][GCOMP] * 7.0F) << 2) + | (IROUND(rgba[i][BCOMP] * 3.0F) ); + } + } + break; + case GL_UNSIGNED_BYTE_2_3_3_REV: + if (dstFormat == GL_RGB) { + GLubyte *dst = (GLubyte *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 7.0F) ) + | (IROUND(rgba[i][GCOMP] * 7.0F) << 3) + | (IROUND(rgba[i][BCOMP] * 3.0F) << 6); + } + } + break; + case GL_UNSIGNED_SHORT_5_6_5: + if (dstFormat == GL_RGB) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) << 11) + | (IROUND(rgba[i][GCOMP] * 63.0F) << 5) + | (IROUND(rgba[i][BCOMP] * 31.0F) ); + } + } + break; + case GL_UNSIGNED_SHORT_5_6_5_REV: + if (dstFormat == GL_RGB) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) ) + | (IROUND(rgba[i][GCOMP] * 63.0F) << 5) + | (IROUND(rgba[i][BCOMP] * 31.0F) << 11); + } + } + break; + case GL_UNSIGNED_SHORT_4_4_4_4: + if (dstFormat == GL_RGBA) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 15.0F) << 12) + | (IROUND(rgba[i][GCOMP] * 15.0F) << 8) + | (IROUND(rgba[i][BCOMP] * 15.0F) << 4) + | (IROUND(rgba[i][ACOMP] * 15.0F) ); + } + } + else if (dstFormat == GL_BGRA) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][BCOMP] * 15.0F) << 12) + | (IROUND(rgba[i][GCOMP] * 15.0F) << 8) + | (IROUND(rgba[i][RCOMP] * 15.0F) << 4) + | (IROUND(rgba[i][ACOMP] * 15.0F) ); + } + } + else if (dstFormat == GL_ABGR_EXT) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][ACOMP] * 15.0F) << 12) + | (IROUND(rgba[i][BCOMP] * 15.0F) << 8) + | (IROUND(rgba[i][GCOMP] * 15.0F) << 4) + | (IROUND(rgba[i][RCOMP] * 15.0F) ); + } + } + break; + case GL_UNSIGNED_SHORT_4_4_4_4_REV: + if (dstFormat == GL_RGBA) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 15.0F) ) + | (IROUND(rgba[i][GCOMP] * 15.0F) << 4) + | (IROUND(rgba[i][BCOMP] * 15.0F) << 8) + | (IROUND(rgba[i][ACOMP] * 15.0F) << 12); + } + } + else if (dstFormat == GL_BGRA) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][BCOMP] * 15.0F) ) + | (IROUND(rgba[i][GCOMP] * 15.0F) << 4) + | (IROUND(rgba[i][RCOMP] * 15.0F) << 8) + | (IROUND(rgba[i][ACOMP] * 15.0F) << 12); + } + } + else if (dstFormat == GL_ABGR_EXT) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][ACOMP] * 15.0F) ) + | (IROUND(rgba[i][BCOMP] * 15.0F) << 4) + | (IROUND(rgba[i][GCOMP] * 15.0F) << 8) + | (IROUND(rgba[i][RCOMP] * 15.0F) << 12); + } + } + break; + case GL_UNSIGNED_SHORT_5_5_5_1: + if (dstFormat == GL_RGBA) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) << 11) + | (IROUND(rgba[i][GCOMP] * 31.0F) << 6) + | (IROUND(rgba[i][BCOMP] * 31.0F) << 1) + | (IROUND(rgba[i][ACOMP] * 1.0F) ); + } + } + else if (dstFormat == GL_BGRA) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][BCOMP] * 31.0F) << 11) + | (IROUND(rgba[i][GCOMP] * 31.0F) << 6) + | (IROUND(rgba[i][RCOMP] * 31.0F) << 1) + | (IROUND(rgba[i][ACOMP] * 1.0F) ); + } + } + else if (dstFormat == GL_ABGR_EXT) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][ACOMP] * 31.0F) << 11) + | (IROUND(rgba[i][BCOMP] * 31.0F) << 6) + | (IROUND(rgba[i][GCOMP] * 31.0F) << 1) + | (IROUND(rgba[i][RCOMP] * 1.0F) ); + } + } + break; + case GL_UNSIGNED_SHORT_1_5_5_5_REV: + if (dstFormat == GL_RGBA) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) ) + | (IROUND(rgba[i][GCOMP] * 31.0F) << 5) + | (IROUND(rgba[i][BCOMP] * 31.0F) << 10) + | (IROUND(rgba[i][ACOMP] * 1.0F) << 15); + } + } + else if (dstFormat == GL_BGRA) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][BCOMP] * 31.0F) ) + | (IROUND(rgba[i][GCOMP] * 31.0F) << 5) + | (IROUND(rgba[i][RCOMP] * 31.0F) << 10) + | (IROUND(rgba[i][ACOMP] * 1.0F) << 15); + } + } + else if (dstFormat == GL_ABGR_EXT) { + GLushort *dst = (GLushort *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][ACOMP] * 31.0F) ) + | (IROUND(rgba[i][BCOMP] * 31.0F) << 5) + | (IROUND(rgba[i][GCOMP] * 31.0F) << 10) + | (IROUND(rgba[i][RCOMP] * 1.0F) << 15); + } + } + break; + case GL_UNSIGNED_INT_8_8_8_8: + if (dstFormat == GL_RGBA) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 255.F) << 24) + | (IROUND(rgba[i][GCOMP] * 255.F) << 16) + | (IROUND(rgba[i][BCOMP] * 255.F) << 8) + | (IROUND(rgba[i][ACOMP] * 255.F) ); + } + } + else if (dstFormat == GL_BGRA) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][BCOMP] * 255.F) << 24) + | (IROUND(rgba[i][GCOMP] * 255.F) << 16) + | (IROUND(rgba[i][RCOMP] * 255.F) << 8) + | (IROUND(rgba[i][ACOMP] * 255.F) ); + } + } + else if (dstFormat == GL_ABGR_EXT) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][ACOMP] * 255.F) << 24) + | (IROUND(rgba[i][BCOMP] * 255.F) << 16) + | (IROUND(rgba[i][GCOMP] * 255.F) << 8) + | (IROUND(rgba[i][RCOMP] * 255.F) ); + } + } + break; + case GL_UNSIGNED_INT_8_8_8_8_REV: + if (dstFormat == GL_RGBA) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 255.0F) ) + | (IROUND(rgba[i][GCOMP] * 255.0F) << 8) + | (IROUND(rgba[i][BCOMP] * 255.0F) << 16) + | (IROUND(rgba[i][ACOMP] * 255.0F) << 24); + } + } + else if (dstFormat == GL_BGRA) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][BCOMP] * 255.0F) ) + | (IROUND(rgba[i][GCOMP] * 255.0F) << 8) + | (IROUND(rgba[i][RCOMP] * 255.0F) << 16) + | (IROUND(rgba[i][ACOMP] * 255.0F) << 24); + } + } + else if (dstFormat == GL_ABGR_EXT) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][ACOMP] * 255.0F) ) + | (IROUND(rgba[i][BCOMP] * 255.0F) << 8) + | (IROUND(rgba[i][GCOMP] * 255.0F) << 16) + | (IROUND(rgba[i][RCOMP] * 255.0F) << 24); + } + } + break; + case GL_UNSIGNED_INT_10_10_10_2: + if (dstFormat == GL_RGBA) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 1023.0F) << 22) + | (IROUND(rgba[i][GCOMP] * 1023.0F) << 12) + | (IROUND(rgba[i][BCOMP] * 1023.0F) << 2) + | (IROUND(rgba[i][ACOMP] * 3.0F) ); + } + } + else if (dstFormat == GL_BGRA) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][BCOMP] * 1023.0F) << 22) + | (IROUND(rgba[i][GCOMP] * 1023.0F) << 12) + | (IROUND(rgba[i][RCOMP] * 1023.0F) << 2) + | (IROUND(rgba[i][ACOMP] * 3.0F) ); + } + } + else if (dstFormat == GL_ABGR_EXT) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][ACOMP] * 1023.0F) << 22) + | (IROUND(rgba[i][BCOMP] * 1023.0F) << 12) + | (IROUND(rgba[i][GCOMP] * 1023.0F) << 2) + | (IROUND(rgba[i][RCOMP] * 3.0F) ); + } + } + break; + case GL_UNSIGNED_INT_2_10_10_10_REV: + if (dstFormat == GL_RGBA) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][RCOMP] * 1023.0F) ) + | (IROUND(rgba[i][GCOMP] * 1023.0F) << 10) + | (IROUND(rgba[i][BCOMP] * 1023.0F) << 20) + | (IROUND(rgba[i][ACOMP] * 3.0F) << 30); + } + } + else if (dstFormat == GL_BGRA) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][BCOMP] * 1023.0F) ) + | (IROUND(rgba[i][GCOMP] * 1023.0F) << 10) + | (IROUND(rgba[i][RCOMP] * 1023.0F) << 20) + | (IROUND(rgba[i][ACOMP] * 3.0F) << 30); + } + } + else if (dstFormat == GL_ABGR_EXT) { + GLuint *dst = (GLuint *) dstAddr; + for (i=0;i<n;i++) { + dst[i] = (IROUND(rgba[i][ACOMP] * 1023.0F) ) + | (IROUND(rgba[i][BCOMP] * 1023.0F) << 10) + | (IROUND(rgba[i][GCOMP] * 1023.0F) << 20) + | (IROUND(rgba[i][RCOMP] * 3.0F) << 30); + } + } + break; + default: + _mesa_problem(ctx, "bad type in _mesa_pack_rgba_span_float"); + return; + } + + if (dstPacking->SwapBytes) { + GLint swapSize = _mesa_sizeof_packed_type(dstType); + if (swapSize == 2) { + if (dstPacking->SwapBytes) { + _mesa_swap2((GLushort *) dstAddr, n * comps); + } + } + else if (swapSize == 4) { + if (dstPacking->SwapBytes) { + _mesa_swap4((GLuint *) dstAddr, n * comps); + } + } + } +} + + + +#define SWAP2BYTE(VALUE) \ + { \ + GLubyte *bytes = (GLubyte *) &(VALUE); \ + GLubyte tmp = bytes[0]; \ + bytes[0] = bytes[1]; \ + bytes[1] = tmp; \ + } + +#define SWAP4BYTE(VALUE) \ + { \ + GLubyte *bytes = (GLubyte *) &(VALUE); \ + GLubyte tmp = bytes[0]; \ + bytes[0] = bytes[3]; \ + bytes[3] = tmp; \ + tmp = bytes[1]; \ + bytes[1] = bytes[2]; \ + bytes[2] = tmp; \ + } + + +static void +extract_uint_indexes(GLuint n, GLuint indexes[], + GLenum srcFormat, GLenum srcType, const GLvoid *src, + const struct gl_pixelstore_attrib *unpack ) +{ + ASSERT(srcFormat == GL_COLOR_INDEX || srcFormat == GL_STENCIL_INDEX); + + ASSERT(srcType == GL_BITMAP || + srcType == GL_UNSIGNED_BYTE || + srcType == GL_BYTE || + srcType == GL_UNSIGNED_SHORT || + srcType == GL_SHORT || + srcType == GL_UNSIGNED_INT || + srcType == GL_INT || + srcType == GL_UNSIGNED_INT_24_8_EXT || + srcType == GL_HALF_FLOAT_ARB || + srcType == GL_FLOAT); + + switch (srcType) { + case GL_BITMAP: + { + GLubyte *ubsrc = (GLubyte *) src; + if (unpack->LsbFirst) { + GLubyte mask = 1 << (unpack->SkipPixels & 0x7); + GLuint i; + for (i = 0; i < n; i++) { + indexes[i] = (*ubsrc & mask) ? 1 : 0; + if (mask == 128) { + mask = 1; + ubsrc++; + } + else { + mask = mask << 1; + } + } + } + else { + GLubyte mask = 128 >> (unpack->SkipPixels & 0x7); + GLuint i; + for (i = 0; i < n; i++) { + indexes[i] = (*ubsrc & mask) ? 1 : 0; + if (mask == 1) { + mask = 128; + ubsrc++; + } + else { + mask = mask >> 1; + } + } + } + } + break; + case GL_UNSIGNED_BYTE: + { + GLuint i; + const GLubyte *s = (const GLubyte *) src; + for (i = 0; i < n; i++) + indexes[i] = s[i]; + } + break; + case GL_BYTE: + { + GLuint i; + const GLbyte *s = (const GLbyte *) src; + for (i = 0; i < n; i++) + indexes[i] = s[i]; + } + break; + case GL_UNSIGNED_SHORT: + { + GLuint i; + const GLushort *s = (const GLushort *) src; + if (unpack->SwapBytes) { + for (i = 0; i < n; i++) { + GLushort value = s[i]; + SWAP2BYTE(value); + indexes[i] = value; + } + } + else { + for (i = 0; i < n; i++) + indexes[i] = s[i]; + } + } + break; + case GL_SHORT: + { + GLuint i; + const GLshort *s = (const GLshort *) src; + if (unpack->SwapBytes) { + for (i = 0; i < n; i++) { + GLshort value = s[i]; + SWAP2BYTE(value); + indexes[i] = value; + } + } + else { + for (i = 0; i < n; i++) + indexes[i] = s[i]; + } + } + break; + case GL_UNSIGNED_INT: + { + GLuint i; + const GLuint *s = (const GLuint *) src; + if (unpack->SwapBytes) { + for (i = 0; i < n; i++) { + GLuint value = s[i]; + SWAP4BYTE(value); + indexes[i] = value; + } + } + else { + for (i = 0; i < n; i++) + indexes[i] = s[i]; + } + } + break; + case GL_INT: + { + GLuint i; + const GLint *s = (const GLint *) src; + if (unpack->SwapBytes) { + for (i = 0; i < n; i++) { + GLint value = s[i]; + SWAP4BYTE(value); + indexes[i] = value; + } + } + else { + for (i = 0; i < n; i++) + indexes[i] = s[i]; + } + } + break; + case GL_FLOAT: + { + GLuint i; + const GLfloat *s = (const GLfloat *) src; + if (unpack->SwapBytes) { + for (i = 0; i < n; i++) { + GLfloat value = s[i]; + SWAP4BYTE(value); + indexes[i] = (GLuint) value; + } + } + else { + for (i = 0; i < n; i++) + indexes[i] = (GLuint) s[i]; + } + } + break; + case GL_HALF_FLOAT_ARB: + { + GLuint i; + const GLhalfARB *s = (const GLhalfARB *) src; + if (unpack->SwapBytes) { + for (i = 0; i < n; i++) { + GLhalfARB value = s[i]; + SWAP2BYTE(value); + indexes[i] = (GLuint) _mesa_half_to_float(value); + } + } + else { + for (i = 0; i < n; i++) + indexes[i] = (GLuint) _mesa_half_to_float(s[i]); + } + } + break; + case GL_UNSIGNED_INT_24_8_EXT: + { + GLuint i; + const GLuint *s = (const GLuint *) src; + if (unpack->SwapBytes) { + for (i = 0; i < n; i++) { + GLuint value = s[i]; + SWAP4BYTE(value); + indexes[i] = value & 0xff; /* lower 8 bits */ + } + } + else { + for (i = 0; i < n; i++) + indexes[i] = s[i] & 0xff; /* lower 8 bits */ + } + } + break; + + default: + _mesa_problem(NULL, "bad srcType in extract_uint_indexes"); + return; + } +} + + +/** + * Return source/dest RGBA indexes for unpacking pixels. + */ +static void +get_component_mapping(GLenum format, + GLint *rSrc, + GLint *gSrc, + GLint *bSrc, + GLint *aSrc, + GLint *rDst, + GLint *gDst, + GLint *bDst, + GLint *aDst) +{ + switch (format) { + case GL_RED: + case GL_RED_INTEGER_EXT: + *rSrc = 0; + *gSrc = *bSrc = *aSrc = -1; + break; + case GL_GREEN: + case GL_GREEN_INTEGER_EXT: + *gSrc = 0; + *rSrc = *bSrc = *aSrc = -1; + break; + case GL_BLUE: + case GL_BLUE_INTEGER_EXT: + *bSrc = 0; + *rSrc = *gSrc = *aSrc = -1; + break; + case GL_ALPHA: + case GL_ALPHA_INTEGER_EXT: + *rSrc = *gSrc = *bSrc = -1; + *aSrc = 0; + break; + case GL_LUMINANCE: + case GL_LUMINANCE_INTEGER_EXT: + *rSrc = *gSrc = *bSrc = 0; + *aSrc = -1; + break; + case GL_LUMINANCE_ALPHA: + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + *rSrc = *gSrc = *bSrc = 0; + *aSrc = 1; + break; + case GL_INTENSITY: + *rSrc = *gSrc = *bSrc = *aSrc = 0; + break; + case GL_RG: + case GL_RG_INTEGER: + *rSrc = 0; + *gSrc = 1; + *bSrc = -1; + *aSrc = -1; + *rDst = 0; + *gDst = 1; + *bDst = 2; + *aDst = 3; + break; + case GL_RGB: + case GL_RGB_INTEGER: + *rSrc = 0; + *gSrc = 1; + *bSrc = 2; + *aSrc = -1; + *rDst = 0; + *gDst = 1; + *bDst = 2; + *aDst = 3; + break; + case GL_BGR: + *rSrc = 2; + *gSrc = 1; + *bSrc = 0; + *aSrc = -1; + *rDst = 2; + *gDst = 1; + *bDst = 0; + *aDst = 3; + break; + case GL_RGBA: + case GL_RGBA_INTEGER: + *rSrc = 0; + *gSrc = 1; + *bSrc = 2; + *aSrc = 3; + *rDst = 0; + *gDst = 1; + *bDst = 2; + *aDst = 3; + break; + case GL_BGRA: + *rSrc = 2; + *gSrc = 1; + *bSrc = 0; + *aSrc = 3; + *rDst = 2; + *gDst = 1; + *bDst = 0; + *aDst = 3; + break; + case GL_ABGR_EXT: + *rSrc = 3; + *gSrc = 2; + *bSrc = 1; + *aSrc = 0; + *rDst = 3; + *gDst = 2; + *bDst = 1; + *aDst = 0; + break; + case GL_DU8DV8_ATI: + case GL_DUDV_ATI: + *rSrc = 0; + *gSrc = 1; + *bSrc = -1; + *aSrc = -1; + break; + default: + _mesa_problem(NULL, "bad srcFormat %s in get_component_mapping", + _mesa_lookup_enum_by_nr(format)); + return; + } +} + + + +/* + * This function extracts floating point RGBA values from arbitrary + * image data. srcFormat and srcType are the format and type parameters + * passed to glDrawPixels, glTexImage[123]D, glTexSubImage[123]D, etc. + * + * Refering to section 3.6.4 of the OpenGL 1.2 spec, this function + * implements the "Conversion to floating point", "Conversion to RGB", + * and "Final Expansion to RGBA" operations. + * + * Args: n - number of pixels + * rgba - output colors + * srcFormat - format of incoming data + * srcType - data type of incoming data + * src - source data pointer + * swapBytes - perform byteswapping of incoming data? + */ +static void +extract_float_rgba(GLuint n, GLfloat rgba[][4], + GLenum srcFormat, GLenum srcType, const GLvoid *src, + GLboolean swapBytes) +{ + GLint rSrc, gSrc, bSrc, aSrc; + GLint stride; + GLint rDst, bDst, gDst, aDst; + GLboolean intFormat; + GLfloat rs = 1.0f, gs = 1.0f, bs = 1.0f, as = 1.0f; /* scale factors */ + + ASSERT(srcFormat == GL_RED || + srcFormat == GL_GREEN || + srcFormat == GL_BLUE || + srcFormat == GL_ALPHA || + srcFormat == GL_LUMINANCE || + srcFormat == GL_LUMINANCE_ALPHA || + srcFormat == GL_INTENSITY || + srcFormat == GL_RG || + srcFormat == GL_RGB || + srcFormat == GL_BGR || + srcFormat == GL_RGBA || + srcFormat == GL_BGRA || + srcFormat == GL_ABGR_EXT || + srcFormat == GL_DU8DV8_ATI || + srcFormat == GL_DUDV_ATI || + srcFormat == GL_RED_INTEGER_EXT || + srcFormat == GL_GREEN_INTEGER_EXT || + srcFormat == GL_BLUE_INTEGER_EXT || + srcFormat == GL_ALPHA_INTEGER_EXT || + srcFormat == GL_RGB_INTEGER_EXT || + srcFormat == GL_RGBA_INTEGER_EXT || + srcFormat == GL_BGR_INTEGER_EXT || + srcFormat == GL_BGRA_INTEGER_EXT || + srcFormat == GL_LUMINANCE_INTEGER_EXT || + srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT); + + ASSERT(srcType == GL_UNSIGNED_BYTE || + srcType == GL_BYTE || + srcType == GL_UNSIGNED_SHORT || + srcType == GL_SHORT || + srcType == GL_UNSIGNED_INT || + srcType == GL_INT || + srcType == GL_HALF_FLOAT_ARB || + srcType == GL_FLOAT || + srcType == GL_UNSIGNED_BYTE_3_3_2 || + srcType == GL_UNSIGNED_BYTE_2_3_3_REV || + srcType == GL_UNSIGNED_SHORT_5_6_5 || + srcType == GL_UNSIGNED_SHORT_5_6_5_REV || + srcType == GL_UNSIGNED_SHORT_4_4_4_4 || + srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV || + srcType == GL_UNSIGNED_SHORT_5_5_5_1 || + srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV || + srcType == GL_UNSIGNED_INT_8_8_8_8 || + srcType == GL_UNSIGNED_INT_8_8_8_8_REV || + srcType == GL_UNSIGNED_INT_10_10_10_2 || + srcType == GL_UNSIGNED_INT_2_10_10_10_REV); + + get_component_mapping(srcFormat, + &rSrc, &gSrc, &bSrc, &aSrc, + &rDst, &gDst, &bDst, &aDst); + + stride = _mesa_components_in_format(srcFormat); + + intFormat = _mesa_is_integer_format(srcFormat); + +#define PROCESS(SRC_INDEX, DST_INDEX, DEFAULT_FLT, DEFAULT_INT, TYPE, CONVERSION) \ + if ((SRC_INDEX) < 0) { \ + GLuint i; \ + if (intFormat) { \ + for (i = 0; i < n; i++) { \ + rgba[i][DST_INDEX] = DEFAULT_INT; \ + } \ + } \ + else { \ + for (i = 0; i < n; i++) { \ + rgba[i][DST_INDEX] = DEFAULT_FLT; \ + } \ + } \ + } \ + else if (swapBytes) { \ + const TYPE *s = (const TYPE *) src; \ + GLuint i; \ + for (i = 0; i < n; i++) { \ + TYPE value = s[SRC_INDEX]; \ + if (sizeof(TYPE) == 2) { \ + SWAP2BYTE(value); \ + } \ + else if (sizeof(TYPE) == 4) { \ + SWAP4BYTE(value); \ + } \ + if (intFormat) \ + rgba[i][DST_INDEX] = (GLfloat) value; \ + else \ + rgba[i][DST_INDEX] = (GLfloat) CONVERSION(value); \ + s += stride; \ + } \ + } \ + else { \ + const TYPE *s = (const TYPE *) src; \ + GLuint i; \ + if (intFormat) { \ + for (i = 0; i < n; i++) { \ + rgba[i][DST_INDEX] = (GLfloat) s[SRC_INDEX]; \ + s += stride; \ + } \ + } \ + else { \ + for (i = 0; i < n; i++) { \ + rgba[i][DST_INDEX] = (GLfloat) CONVERSION(s[SRC_INDEX]); \ + s += stride; \ + } \ + } \ + } + + switch (srcType) { + case GL_UNSIGNED_BYTE: + PROCESS(rSrc, RCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT); + PROCESS(gSrc, GCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT); + PROCESS(bSrc, BCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT); + PROCESS(aSrc, ACOMP, 1.0F, 255, GLubyte, UBYTE_TO_FLOAT); + break; + case GL_BYTE: + PROCESS(rSrc, RCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT); + PROCESS(gSrc, GCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT); + PROCESS(bSrc, BCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT); + PROCESS(aSrc, ACOMP, 1.0F, 127, GLbyte, BYTE_TO_FLOAT); + break; + case GL_UNSIGNED_SHORT: + PROCESS(rSrc, RCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT); + PROCESS(gSrc, GCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT); + PROCESS(bSrc, BCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT); + PROCESS(aSrc, ACOMP, 1.0F, 0xffff, GLushort, USHORT_TO_FLOAT); + break; + case GL_SHORT: + PROCESS(rSrc, RCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT); + PROCESS(gSrc, GCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT); + PROCESS(bSrc, BCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT); + PROCESS(aSrc, ACOMP, 1.0F, 32767, GLshort, SHORT_TO_FLOAT); + break; + case GL_UNSIGNED_INT: + PROCESS(rSrc, RCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT); + PROCESS(gSrc, GCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT); + PROCESS(bSrc, BCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT); + PROCESS(aSrc, ACOMP, 1.0F, 0xffffffff, GLuint, UINT_TO_FLOAT); + break; + case GL_INT: + PROCESS(rSrc, RCOMP, 0.0F, 0, GLint, INT_TO_FLOAT); + PROCESS(gSrc, GCOMP, 0.0F, 0, GLint, INT_TO_FLOAT); + PROCESS(bSrc, BCOMP, 0.0F, 0, GLint, INT_TO_FLOAT); + PROCESS(aSrc, ACOMP, 1.0F, 2147483647, GLint, INT_TO_FLOAT); + break; + case GL_FLOAT: + PROCESS(rSrc, RCOMP, 0.0F, 0.0F, GLfloat, (GLfloat)); + PROCESS(gSrc, GCOMP, 0.0F, 0.0F, GLfloat, (GLfloat)); + PROCESS(bSrc, BCOMP, 0.0F, 0.0F, GLfloat, (GLfloat)); + PROCESS(aSrc, ACOMP, 1.0F, 1.0F, GLfloat, (GLfloat)); + break; + case GL_HALF_FLOAT_ARB: + PROCESS(rSrc, RCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float); + PROCESS(gSrc, GCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float); + PROCESS(bSrc, BCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float); + PROCESS(aSrc, ACOMP, 1.0F, 1.0F, GLhalfARB, _mesa_half_to_float); + break; + case GL_UNSIGNED_BYTE_3_3_2: + { + const GLubyte *ubsrc = (const GLubyte *) src; + GLuint i; + if (!intFormat) { + rs = 1.0F / 7.0F; + gs = 1.0F / 7.0F; + bs = 1.0F / 3.0F; + } + for (i = 0; i < n; i ++) { + GLubyte p = ubsrc[i]; + rgba[i][rDst] = ((p >> 5) ) * rs; + rgba[i][gDst] = ((p >> 2) & 0x7) * gs; + rgba[i][bDst] = ((p ) & 0x3) * bs; + rgba[i][aDst] = 1.0F; + } + } + break; + case GL_UNSIGNED_BYTE_2_3_3_REV: + { + const GLubyte *ubsrc = (const GLubyte *) src; + GLuint i; + if (!intFormat) { + rs = 1.0F / 7.0F; + gs = 1.0F / 7.0F; + bs = 1.0F / 3.0F; + } + for (i = 0; i < n; i ++) { + GLubyte p = ubsrc[i]; + rgba[i][rDst] = ((p ) & 0x7) * rs; + rgba[i][gDst] = ((p >> 3) & 0x7) * gs; + rgba[i][bDst] = ((p >> 6) ) * bs; + rgba[i][aDst] = 1.0F; + } + } + break; + case GL_UNSIGNED_SHORT_5_6_5: + if (!intFormat) { + rs = 1.0F / 31.0F; + gs = 1.0F / 63.0F; + bs = 1.0F / 31.0F; + } + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p >> 11) ) * rs; + rgba[i][gDst] = ((p >> 5) & 0x3f) * gs; + rgba[i][bDst] = ((p ) & 0x1f) * bs; + rgba[i][aDst] = 1.0F; + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p >> 11) ) * rs; + rgba[i][gDst] = ((p >> 5) & 0x3f) * gs; + rgba[i][bDst] = ((p ) & 0x1f) * bs; + rgba[i][aDst] = 1.0F; + } + } + break; + case GL_UNSIGNED_SHORT_5_6_5_REV: + if (!intFormat) { + rs = 1.0F / 31.0F; + gs = 1.0F / 63.0F; + bs = 1.0F / 31.0F; + } + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p ) & 0x1f) * rs; + rgba[i][gDst] = ((p >> 5) & 0x3f) * gs; + rgba[i][bDst] = ((p >> 11) ) * bs; + rgba[i][aDst] = 1.0F; + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p ) & 0x1f) * rs; + rgba[i][gDst] = ((p >> 5) & 0x3f) * gs; + rgba[i][bDst] = ((p >> 11) ) * bs; + rgba[i][aDst] = 1.0F; + } + } + break; + case GL_UNSIGNED_SHORT_4_4_4_4: + if (!intFormat) { + rs = gs = bs = as = 1.0F / 15.0F; + } + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p >> 12) ) * rs; + rgba[i][gDst] = ((p >> 8) & 0xf) * gs; + rgba[i][bDst] = ((p >> 4) & 0xf) * bs; + rgba[i][aDst] = ((p ) & 0xf) * as; + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p >> 12) ) * rs; + rgba[i][gDst] = ((p >> 8) & 0xf) * gs; + rgba[i][bDst] = ((p >> 4) & 0xf) * bs; + rgba[i][aDst] = ((p ) & 0xf) * as; + } + } + break; + case GL_UNSIGNED_SHORT_4_4_4_4_REV: + if (!intFormat) { + rs = gs = bs = as = 1.0F / 15.0F; + } + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p ) & 0xf) * rs; + rgba[i][gDst] = ((p >> 4) & 0xf) * gs; + rgba[i][bDst] = ((p >> 8) & 0xf) * bs; + rgba[i][aDst] = ((p >> 12) ) * as; + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p ) & 0xf) * rs; + rgba[i][gDst] = ((p >> 4) & 0xf) * gs; + rgba[i][bDst] = ((p >> 8) & 0xf) * bs; + rgba[i][aDst] = ((p >> 12) ) * as; + } + } + break; + case GL_UNSIGNED_SHORT_5_5_5_1: + if (!intFormat) { + rs = gs = bs = 1.0F / 31.0F; + } + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p >> 11) ) * rs; + rgba[i][gDst] = ((p >> 6) & 0x1f) * gs; + rgba[i][bDst] = ((p >> 1) & 0x1f) * bs; + rgba[i][aDst] = ((p ) & 0x1) * as; + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p >> 11) ) * rs; + rgba[i][gDst] = ((p >> 6) & 0x1f) * gs; + rgba[i][bDst] = ((p >> 1) & 0x1f) * bs; + rgba[i][aDst] = ((p ) & 0x1) * as; + } + } + break; + case GL_UNSIGNED_SHORT_1_5_5_5_REV: + if (!intFormat) { + rs = gs = bs = 1.0F / 31.0F; + } + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p ) & 0x1f) * rs; + rgba[i][gDst] = ((p >> 5) & 0x1f) * gs; + rgba[i][bDst] = ((p >> 10) & 0x1f) * bs; + rgba[i][aDst] = ((p >> 15) ) * as; + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p ) & 0x1f) * rs; + rgba[i][gDst] = ((p >> 5) & 0x1f) * gs; + rgba[i][bDst] = ((p >> 10) & 0x1f) * bs; + rgba[i][aDst] = ((p >> 15) ) * as; + } + } + break; + case GL_UNSIGNED_INT_8_8_8_8: + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + if (intFormat) { + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = (GLfloat) ((p ) & 0xff); + rgba[i][gDst] = (GLfloat) ((p >> 8) & 0xff); + rgba[i][bDst] = (GLfloat) ((p >> 16) & 0xff); + rgba[i][aDst] = (GLfloat) ((p >> 24) ); + } + } + else { + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = UBYTE_TO_FLOAT((p ) & 0xff); + rgba[i][gDst] = UBYTE_TO_FLOAT((p >> 8) & 0xff); + rgba[i][bDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff); + rgba[i][aDst] = UBYTE_TO_FLOAT((p >> 24) ); + } + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + if (intFormat) { + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = (GLfloat) ((p >> 24) ); + rgba[i][gDst] = (GLfloat) ((p >> 16) & 0xff); + rgba[i][bDst] = (GLfloat) ((p >> 8) & 0xff); + rgba[i][aDst] = (GLfloat) ((p ) & 0xff); + } + } + else { + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = UBYTE_TO_FLOAT((p >> 24) ); + rgba[i][gDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff); + rgba[i][bDst] = UBYTE_TO_FLOAT((p >> 8) & 0xff); + rgba[i][aDst] = UBYTE_TO_FLOAT((p ) & 0xff); + } + } + } + break; + case GL_UNSIGNED_INT_8_8_8_8_REV: + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + if (intFormat) { + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = (GLfloat) ((p >> 24) ); + rgba[i][gDst] = (GLfloat) ((p >> 16) & 0xff); + rgba[i][bDst] = (GLfloat) ((p >> 8) & 0xff); + rgba[i][aDst] = (GLfloat) ((p ) & 0xff); + } + } + else { + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = UBYTE_TO_FLOAT((p >> 24) ); + rgba[i][gDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff); + rgba[i][bDst] = UBYTE_TO_FLOAT((p >> 8) & 0xff); + rgba[i][aDst] = UBYTE_TO_FLOAT((p ) & 0xff); + } + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + if (intFormat) { + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = (GLfloat) ((p ) & 0xff); + rgba[i][gDst] = (GLfloat) ((p >> 8) & 0xff); + rgba[i][bDst] = (GLfloat) ((p >> 16) & 0xff); + rgba[i][aDst] = (GLfloat) ((p >> 24) ); + } + } + else { + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = UBYTE_TO_FLOAT((p ) & 0xff); + rgba[i][gDst] = UBYTE_TO_FLOAT((p >> 8) & 0xff); + rgba[i][bDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff); + rgba[i][aDst] = UBYTE_TO_FLOAT((p >> 24) ); + } + } + } + break; + case GL_UNSIGNED_INT_10_10_10_2: + if (!intFormat) { + rs = 1.0F / 1023.0F; + gs = 1.0F / 1023.0F; + bs = 1.0F / 1023.0F; + as = 1.0F / 3.0F; + } + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + SWAP4BYTE(p); + rgba[i][rDst] = ((p >> 22) ) * rs; + rgba[i][gDst] = ((p >> 12) & 0x3ff) * gs; + rgba[i][bDst] = ((p >> 2) & 0x3ff) * bs; + rgba[i][aDst] = ((p ) & 0x3 ) * as; + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = ((p >> 22) ) * rs; + rgba[i][gDst] = ((p >> 12) & 0x3ff) * gs; + rgba[i][bDst] = ((p >> 2) & 0x3ff) * bs; + rgba[i][aDst] = ((p ) & 0x3 ) * as; + } + } + break; + case GL_UNSIGNED_INT_2_10_10_10_REV: + if (!intFormat) { + rs = 1.0F / 1023.0F; + gs = 1.0F / 1023.0F; + bs = 1.0F / 1023.0F; + as = 1.0F / 3.0F; + } + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + SWAP4BYTE(p); + rgba[i][rDst] = ((p ) & 0x3ff) * rs; + rgba[i][gDst] = ((p >> 10) & 0x3ff) * gs; + rgba[i][bDst] = ((p >> 20) & 0x3ff) * bs; + rgba[i][aDst] = ((p >> 30) ) * as; + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = ((p ) & 0x3ff) * rs; + rgba[i][gDst] = ((p >> 10) & 0x3ff) * gs; + rgba[i][bDst] = ((p >> 20) & 0x3ff) * bs; + rgba[i][aDst] = ((p >> 30) ) * as; + } + } + break; + default: + _mesa_problem(NULL, "bad srcType in extract float data"); + break; + } +#undef PROCESS +} + + +static INLINE GLuint +clamp_byte_to_uint(GLbyte b) +{ + return b < 0 ? 0 : b; +} + + +static INLINE GLuint +clamp_short_to_uint(GLshort s) +{ + return s < 0 ? 0 : s; +} + + +static INLINE GLuint +clamp_int_to_uint(GLint i) +{ + return i < 0 ? 0 : i; +} + + +static INLINE GLuint +clamp_float_to_uint(GLfloat f) +{ + return f < 0.0F ? 0 : IROUND(f); +} + + +static INLINE GLuint +clamp_half_to_uint(GLhalfARB h) +{ + GLfloat f = _mesa_half_to_float(h); + return f < 0.0F ? 0 : IROUND(f); +} + + +/** + * \sa extract_float_rgba() + */ +static void +extract_uint_rgba(GLuint n, GLuint rgba[][4], + GLenum srcFormat, GLenum srcType, const GLvoid *src, + GLboolean swapBytes) +{ + GLint rSrc, gSrc, bSrc, aSrc; + GLint stride; + GLint rDst, bDst, gDst, aDst; + GLboolean intFormat; + + ASSERT(srcFormat == GL_RED || + srcFormat == GL_GREEN || + srcFormat == GL_BLUE || + srcFormat == GL_ALPHA || + srcFormat == GL_LUMINANCE || + srcFormat == GL_LUMINANCE_ALPHA || + srcFormat == GL_INTENSITY || + srcFormat == GL_RG || + srcFormat == GL_RGB || + srcFormat == GL_BGR || + srcFormat == GL_RGBA || + srcFormat == GL_BGRA || + srcFormat == GL_ABGR_EXT || + srcFormat == GL_DU8DV8_ATI || + srcFormat == GL_DUDV_ATI || + srcFormat == GL_RED_INTEGER_EXT || + srcFormat == GL_GREEN_INTEGER_EXT || + srcFormat == GL_BLUE_INTEGER_EXT || + srcFormat == GL_ALPHA_INTEGER_EXT || + srcFormat == GL_RGB_INTEGER_EXT || + srcFormat == GL_RGBA_INTEGER_EXT || + srcFormat == GL_BGR_INTEGER_EXT || + srcFormat == GL_BGRA_INTEGER_EXT || + srcFormat == GL_LUMINANCE_INTEGER_EXT || + srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT); + + ASSERT(srcType == GL_UNSIGNED_BYTE || + srcType == GL_BYTE || + srcType == GL_UNSIGNED_SHORT || + srcType == GL_SHORT || + srcType == GL_UNSIGNED_INT || + srcType == GL_INT || + srcType == GL_HALF_FLOAT_ARB || + srcType == GL_FLOAT || + srcType == GL_UNSIGNED_BYTE_3_3_2 || + srcType == GL_UNSIGNED_BYTE_2_3_3_REV || + srcType == GL_UNSIGNED_SHORT_5_6_5 || + srcType == GL_UNSIGNED_SHORT_5_6_5_REV || + srcType == GL_UNSIGNED_SHORT_4_4_4_4 || + srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV || + srcType == GL_UNSIGNED_SHORT_5_5_5_1 || + srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV || + srcType == GL_UNSIGNED_INT_8_8_8_8 || + srcType == GL_UNSIGNED_INT_8_8_8_8_REV || + srcType == GL_UNSIGNED_INT_10_10_10_2 || + srcType == GL_UNSIGNED_INT_2_10_10_10_REV); + + get_component_mapping(srcFormat, + &rSrc, &gSrc, &bSrc, &aSrc, + &rDst, &gDst, &bDst, &aDst); + + stride = _mesa_components_in_format(srcFormat); + + intFormat = _mesa_is_integer_format(srcFormat); + +#define PROCESS(SRC_INDEX, DST_INDEX, DEFAULT, TYPE, CONVERSION) \ + if ((SRC_INDEX) < 0) { \ + GLuint i; \ + for (i = 0; i < n; i++) { \ + rgba[i][DST_INDEX] = DEFAULT; \ + } \ + } \ + else if (swapBytes) { \ + const TYPE *s = (const TYPE *) src; \ + GLuint i; \ + for (i = 0; i < n; i++) { \ + TYPE value = s[SRC_INDEX]; \ + if (sizeof(TYPE) == 2) { \ + SWAP2BYTE(value); \ + } \ + else if (sizeof(TYPE) == 4) { \ + SWAP4BYTE(value); \ + } \ + rgba[i][DST_INDEX] = CONVERSION(value); \ + s += stride; \ + } \ + } \ + else { \ + const TYPE *s = (const TYPE *) src; \ + GLuint i; \ + for (i = 0; i < n; i++) { \ + rgba[i][DST_INDEX] = CONVERSION(s[SRC_INDEX]); \ + s += stride; \ + } \ + } + + switch (srcType) { + case GL_UNSIGNED_BYTE: + PROCESS(rSrc, RCOMP, 0, GLubyte, (GLuint)); + PROCESS(gSrc, GCOMP, 0, GLubyte, (GLuint)); + PROCESS(bSrc, BCOMP, 0, GLubyte, (GLuint)); + PROCESS(aSrc, ACOMP, 1, GLubyte, (GLuint)); + break; + case GL_BYTE: + PROCESS(rSrc, RCOMP, 0, GLbyte, clamp_byte_to_uint); + PROCESS(gSrc, GCOMP, 0, GLbyte, clamp_byte_to_uint); + PROCESS(bSrc, BCOMP, 0, GLbyte, clamp_byte_to_uint); + PROCESS(aSrc, ACOMP, 1, GLbyte, clamp_byte_to_uint); + break; + case GL_UNSIGNED_SHORT: + PROCESS(rSrc, RCOMP, 0, GLushort, (GLuint)); + PROCESS(gSrc, GCOMP, 0, GLushort, (GLuint)); + PROCESS(bSrc, BCOMP, 0, GLushort, (GLuint)); + PROCESS(aSrc, ACOMP, 1, GLushort, (GLuint)); + break; + case GL_SHORT: + PROCESS(rSrc, RCOMP, 0, GLshort, clamp_short_to_uint); + PROCESS(gSrc, GCOMP, 0, GLshort, clamp_short_to_uint); + PROCESS(bSrc, BCOMP, 0, GLshort, clamp_short_to_uint); + PROCESS(aSrc, ACOMP, 1, GLshort, clamp_short_to_uint); + break; + case GL_UNSIGNED_INT: + PROCESS(rSrc, RCOMP, 0, GLuint, (GLuint)); + PROCESS(gSrc, GCOMP, 0, GLuint, (GLuint)); + PROCESS(bSrc, BCOMP, 0, GLuint, (GLuint)); + PROCESS(aSrc, ACOMP, 1, GLuint, (GLuint)); + break; + case GL_INT: + PROCESS(rSrc, RCOMP, 0, GLint, clamp_int_to_uint); + PROCESS(gSrc, GCOMP, 0, GLint, clamp_int_to_uint); + PROCESS(bSrc, BCOMP, 0, GLint, clamp_int_to_uint); + PROCESS(aSrc, ACOMP, 1, GLint, clamp_int_to_uint); + break; + case GL_FLOAT: + PROCESS(rSrc, RCOMP, 0, GLfloat, clamp_float_to_uint); + PROCESS(gSrc, GCOMP, 0, GLfloat, clamp_float_to_uint); + PROCESS(bSrc, BCOMP, 0, GLfloat, clamp_float_to_uint); + PROCESS(aSrc, ACOMP, 1, GLfloat, clamp_float_to_uint); + break; + case GL_HALF_FLOAT_ARB: + PROCESS(rSrc, RCOMP, 0, GLhalfARB, clamp_half_to_uint); + PROCESS(gSrc, GCOMP, 0, GLhalfARB, clamp_half_to_uint); + PROCESS(bSrc, BCOMP, 0, GLhalfARB, clamp_half_to_uint); + PROCESS(aSrc, ACOMP, 1, GLhalfARB, clamp_half_to_uint); + break; + case GL_UNSIGNED_BYTE_3_3_2: + { + const GLubyte *ubsrc = (const GLubyte *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLubyte p = ubsrc[i]; + rgba[i][rDst] = ((p >> 5) ); + rgba[i][gDst] = ((p >> 2) & 0x7); + rgba[i][bDst] = ((p ) & 0x3); + rgba[i][aDst] = 1; + } + } + break; + case GL_UNSIGNED_BYTE_2_3_3_REV: + { + const GLubyte *ubsrc = (const GLubyte *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLubyte p = ubsrc[i]; + rgba[i][rDst] = ((p ) & 0x7); + rgba[i][gDst] = ((p >> 3) & 0x7); + rgba[i][bDst] = ((p >> 6) ); + rgba[i][aDst] = 1; + } + } + break; + case GL_UNSIGNED_SHORT_5_6_5: + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p >> 11) ); + rgba[i][gDst] = ((p >> 5) & 0x3f); + rgba[i][bDst] = ((p ) & 0x1f); + rgba[i][aDst] = 1; + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p >> 11) ); + rgba[i][gDst] = ((p >> 5) & 0x3f); + rgba[i][bDst] = ((p ) & 0x1f); + rgba[i][aDst] = 1; + } + } + break; + case GL_UNSIGNED_SHORT_5_6_5_REV: + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p ) & 0x1f); + rgba[i][gDst] = ((p >> 5) & 0x3f); + rgba[i][bDst] = ((p >> 11) ); + rgba[i][aDst] = 1; + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p ) & 0x1f); + rgba[i][gDst] = ((p >> 5) & 0x3f); + rgba[i][bDst] = ((p >> 11) ); + rgba[i][aDst] = 1; + } + } + break; + case GL_UNSIGNED_SHORT_4_4_4_4: + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p >> 12) ); + rgba[i][gDst] = ((p >> 8) & 0xf); + rgba[i][bDst] = ((p >> 4) & 0xf); + rgba[i][aDst] = ((p ) & 0xf); + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p >> 12) ); + rgba[i][gDst] = ((p >> 8) & 0xf); + rgba[i][bDst] = ((p >> 4) & 0xf); + rgba[i][aDst] = ((p ) & 0xf); + } + } + break; + case GL_UNSIGNED_SHORT_4_4_4_4_REV: + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p ) & 0xf); + rgba[i][gDst] = ((p >> 4) & 0xf); + rgba[i][bDst] = ((p >> 8) & 0xf); + rgba[i][aDst] = ((p >> 12) ); + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p ) & 0xf); + rgba[i][gDst] = ((p >> 4) & 0xf); + rgba[i][bDst] = ((p >> 8) & 0xf); + rgba[i][aDst] = ((p >> 12) ); + } + } + break; + case GL_UNSIGNED_SHORT_5_5_5_1: + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p >> 11) ); + rgba[i][gDst] = ((p >> 6) & 0x1f); + rgba[i][bDst] = ((p >> 1) & 0x1f); + rgba[i][aDst] = ((p ) & 0x1 ); + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p >> 11) ); + rgba[i][gDst] = ((p >> 6) & 0x1f); + rgba[i][bDst] = ((p >> 1) & 0x1f); + rgba[i][aDst] = ((p ) & 0x1 ); + } + } + break; + case GL_UNSIGNED_SHORT_1_5_5_5_REV: + if (swapBytes) { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + SWAP2BYTE(p); + rgba[i][rDst] = ((p ) & 0x1f); + rgba[i][gDst] = ((p >> 5) & 0x1f); + rgba[i][bDst] = ((p >> 10) & 0x1f); + rgba[i][aDst] = ((p >> 15) ); + } + } + else { + const GLushort *ussrc = (const GLushort *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLushort p = ussrc[i]; + rgba[i][rDst] = ((p ) & 0x1f); + rgba[i][gDst] = ((p >> 5) & 0x1f); + rgba[i][bDst] = ((p >> 10) & 0x1f); + rgba[i][aDst] = ((p >> 15) ); + } + } + break; + case GL_UNSIGNED_INT_8_8_8_8: + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = ((p ) & 0xff); + rgba[i][gDst] = ((p >> 8) & 0xff); + rgba[i][bDst] = ((p >> 16) & 0xff); + rgba[i][aDst] = ((p >> 24) ); + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = ((p >> 24) ); + rgba[i][gDst] = ((p >> 16) & 0xff); + rgba[i][bDst] = ((p >> 8) & 0xff); + rgba[i][aDst] = ((p ) & 0xff); + } + } + break; + case GL_UNSIGNED_INT_8_8_8_8_REV: + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = ((p >> 24) ); + rgba[i][gDst] = ((p >> 16) & 0xff); + rgba[i][bDst] = ((p >> 8) & 0xff); + rgba[i][aDst] = ((p ) & 0xff); + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = ((p ) & 0xff); + rgba[i][gDst] = ((p >> 8) & 0xff); + rgba[i][bDst] = ((p >> 16) & 0xff); + rgba[i][aDst] = ((p >> 24) ); + } + } + break; + case GL_UNSIGNED_INT_10_10_10_2: + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + SWAP4BYTE(p); + rgba[i][rDst] = ((p >> 22) ); + rgba[i][gDst] = ((p >> 12) & 0x3ff); + rgba[i][bDst] = ((p >> 2) & 0x3ff); + rgba[i][aDst] = ((p ) & 0x3 ); + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = ((p >> 22) ); + rgba[i][gDst] = ((p >> 12) & 0x3ff); + rgba[i][bDst] = ((p >> 2) & 0x3ff); + rgba[i][aDst] = ((p ) & 0x3 ); + } + } + break; + case GL_UNSIGNED_INT_2_10_10_10_REV: + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + SWAP4BYTE(p); + rgba[i][rDst] = ((p ) & 0x3ff); + rgba[i][gDst] = ((p >> 10) & 0x3ff); + rgba[i][bDst] = ((p >> 20) & 0x3ff); + rgba[i][aDst] = ((p >> 30) ); + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgba[i][rDst] = ((p ) & 0x3ff); + rgba[i][gDst] = ((p >> 10) & 0x3ff); + rgba[i][bDst] = ((p >> 20) & 0x3ff); + rgba[i][aDst] = ((p >> 30) ); + } + } + break; + default: + _mesa_problem(NULL, "bad srcType in extract uint data"); + break; + } +#undef PROCESS +} + + + +/* + * Unpack a row of color image data from a client buffer according to + * the pixel unpacking parameters. + * Return GLchan values in the specified dest image format. + * This is used by glDrawPixels and glTexImage?D(). + * \param ctx - the context + * n - number of pixels in the span + * dstFormat - format of destination color array + * dest - the destination color array + * srcFormat - source image format + * srcType - source image data type + * source - source image pointer + * srcPacking - pixel unpacking parameters + * transferOps - bitmask of IMAGE_*_BIT values of operations to apply + * + * XXX perhaps expand this to process whole images someday. + */ +void +_mesa_unpack_color_span_chan( struct gl_context *ctx, + GLuint n, GLenum dstFormat, GLchan dest[], + GLenum srcFormat, GLenum srcType, + const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps ) +{ + ASSERT(dstFormat == GL_ALPHA || + dstFormat == GL_LUMINANCE || + dstFormat == GL_LUMINANCE_ALPHA || + dstFormat == GL_INTENSITY || + dstFormat == GL_RED || + dstFormat == GL_RG || + dstFormat == GL_RGB || + dstFormat == GL_RGBA || + dstFormat == GL_COLOR_INDEX); + + ASSERT(srcFormat == GL_RED || + srcFormat == GL_GREEN || + srcFormat == GL_BLUE || + srcFormat == GL_ALPHA || + srcFormat == GL_LUMINANCE || + srcFormat == GL_LUMINANCE_ALPHA || + srcFormat == GL_INTENSITY || + srcFormat == GL_RG || + srcFormat == GL_RGB || + srcFormat == GL_BGR || + srcFormat == GL_RGBA || + srcFormat == GL_BGRA || + srcFormat == GL_ABGR_EXT || + srcFormat == GL_COLOR_INDEX); + + ASSERT(srcType == GL_BITMAP || + srcType == GL_UNSIGNED_BYTE || + srcType == GL_BYTE || + srcType == GL_UNSIGNED_SHORT || + srcType == GL_SHORT || + srcType == GL_UNSIGNED_INT || + srcType == GL_INT || + srcType == GL_HALF_FLOAT_ARB || + srcType == GL_FLOAT || + srcType == GL_UNSIGNED_BYTE_3_3_2 || + srcType == GL_UNSIGNED_BYTE_2_3_3_REV || + srcType == GL_UNSIGNED_SHORT_5_6_5 || + srcType == GL_UNSIGNED_SHORT_5_6_5_REV || + srcType == GL_UNSIGNED_SHORT_4_4_4_4 || + srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV || + srcType == GL_UNSIGNED_SHORT_5_5_5_1 || + srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV || + srcType == GL_UNSIGNED_INT_8_8_8_8 || + srcType == GL_UNSIGNED_INT_8_8_8_8_REV || + srcType == GL_UNSIGNED_INT_10_10_10_2 || + srcType == GL_UNSIGNED_INT_2_10_10_10_REV); + + /* Try simple cases first */ + if (transferOps == 0) { + if (srcType == CHAN_TYPE) { + if (dstFormat == GL_RGBA) { + if (srcFormat == GL_RGBA) { + memcpy( dest, source, n * 4 * sizeof(GLchan) ); + return; + } + else if (srcFormat == GL_RGB) { + GLuint i; + const GLchan *src = (const GLchan *) source; + GLchan *dst = dest; + for (i = 0; i < n; i++) { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + dst[3] = CHAN_MAX; + src += 3; + dst += 4; + } + return; + } + } + else if (dstFormat == GL_RGB) { + if (srcFormat == GL_RGB) { + memcpy( dest, source, n * 3 * sizeof(GLchan) ); + return; + } + else if (srcFormat == GL_RGBA) { + GLuint i; + const GLchan *src = (const GLchan *) source; + GLchan *dst = dest; + for (i = 0; i < n; i++) { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + src += 4; + dst += 3; + } + return; + } + } + else if (dstFormat == srcFormat) { + GLint comps = _mesa_components_in_format(srcFormat); + assert(comps > 0); + memcpy( dest, source, n * comps * sizeof(GLchan) ); + return; + } + } + /* + * Common situation, loading 8bit RGBA/RGB source images + * into 16/32 bit destination. (OSMesa16/32) + */ + else if (srcType == GL_UNSIGNED_BYTE) { + if (dstFormat == GL_RGBA) { + if (srcFormat == GL_RGB) { + GLuint i; + const GLubyte *src = (const GLubyte *) source; + GLchan *dst = dest; + for (i = 0; i < n; i++) { + dst[0] = UBYTE_TO_CHAN(src[0]); + dst[1] = UBYTE_TO_CHAN(src[1]); + dst[2] = UBYTE_TO_CHAN(src[2]); + dst[3] = CHAN_MAX; + src += 3; + dst += 4; + } + return; + } + else if (srcFormat == GL_RGBA) { + GLuint i; + const GLubyte *src = (const GLubyte *) source; + GLchan *dst = dest; + for (i = 0; i < n; i++) { + dst[0] = UBYTE_TO_CHAN(src[0]); + dst[1] = UBYTE_TO_CHAN(src[1]); + dst[2] = UBYTE_TO_CHAN(src[2]); + dst[3] = UBYTE_TO_CHAN(src[3]); + src += 4; + dst += 4; + } + return; + } + } + else if (dstFormat == GL_RGB) { + if (srcFormat == GL_RGB) { + GLuint i; + const GLubyte *src = (const GLubyte *) source; + GLchan *dst = dest; + for (i = 0; i < n; i++) { + dst[0] = UBYTE_TO_CHAN(src[0]); + dst[1] = UBYTE_TO_CHAN(src[1]); + dst[2] = UBYTE_TO_CHAN(src[2]); + src += 3; + dst += 3; + } + return; + } + else if (srcFormat == GL_RGBA) { + GLuint i; + const GLubyte *src = (const GLubyte *) source; + GLchan *dst = dest; + for (i = 0; i < n; i++) { + dst[0] = UBYTE_TO_CHAN(src[0]); + dst[1] = UBYTE_TO_CHAN(src[1]); + dst[2] = UBYTE_TO_CHAN(src[2]); + src += 4; + dst += 3; + } + return; + } + } + } + } + + + /* general solution begins here */ + { + GLint dstComponents; + GLint rDst, gDst, bDst, aDst, lDst, iDst; + GLfloat rgba[MAX_WIDTH][4]; + + dstComponents = _mesa_components_in_format( dstFormat ); + /* source & dest image formats should have been error checked by now */ + assert(dstComponents > 0); + + /* + * Extract image data and convert to RGBA floats + */ + assert(n <= MAX_WIDTH); + if (srcFormat == GL_COLOR_INDEX) { + GLuint indexes[MAX_WIDTH]; + extract_uint_indexes(n, indexes, srcFormat, srcType, source, + srcPacking); + + if (dstFormat == GL_COLOR_INDEX) { + GLuint i; + _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes); + /* convert to GLchan and return */ + for (i = 0; i < n; i++) { + dest[i] = (GLchan) (indexes[i] & 0xff); + } + return; + } + else { + /* Convert indexes to RGBA */ + if (transferOps & IMAGE_SHIFT_OFFSET_BIT) { + _mesa_shift_and_offset_ci(ctx, n, indexes); + } + _mesa_map_ci_to_rgba(ctx, n, indexes, rgba); + } + + /* Don't do RGBA scale/bias or RGBA->RGBA mapping if starting + * with color indexes. + */ + transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT); + } + else { + /* non-color index data */ + extract_float_rgba(n, rgba, srcFormat, srcType, source, + srcPacking->SwapBytes); + } + + /* Need to clamp if returning GLubytes or GLushorts */ +#if CHAN_TYPE != GL_FLOAT + transferOps |= IMAGE_CLAMP_BIT; +#endif + + if (transferOps) { + _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba); + } + + get_component_indexes(dstFormat, + &rDst, &gDst, &bDst, &aDst, &lDst, &iDst); + + /* Now return the GLchan data in the requested dstFormat */ + if (rDst >= 0) { + GLchan *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + CLAMPED_FLOAT_TO_CHAN(dst[rDst], rgba[i][RCOMP]); + dst += dstComponents; + } + } + + if (gDst >= 0) { + GLchan *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + CLAMPED_FLOAT_TO_CHAN(dst[gDst], rgba[i][GCOMP]); + dst += dstComponents; + } + } + + if (bDst >= 0) { + GLchan *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + CLAMPED_FLOAT_TO_CHAN(dst[bDst], rgba[i][BCOMP]); + dst += dstComponents; + } + } + + if (aDst >= 0) { + GLchan *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + CLAMPED_FLOAT_TO_CHAN(dst[aDst], rgba[i][ACOMP]); + dst += dstComponents; + } + } + + if (iDst >= 0) { + GLchan *dst = dest; + GLuint i; + assert(iDst == 0); + assert(dstComponents == 1); + for (i = 0; i < n; i++) { + /* Intensity comes from red channel */ + CLAMPED_FLOAT_TO_CHAN(dst[i], rgba[i][RCOMP]); + } + } + + if (lDst >= 0) { + GLchan *dst = dest; + GLuint i; + assert(lDst == 0); + for (i = 0; i < n; i++) { + /* Luminance comes from red channel */ + CLAMPED_FLOAT_TO_CHAN(dst[0], rgba[i][RCOMP]); + dst += dstComponents; + } + } + } +} + + +/** + * Same as _mesa_unpack_color_span_chan(), but return GLfloat data + * instead of GLchan. + */ +void +_mesa_unpack_color_span_float( struct gl_context *ctx, + GLuint n, GLenum dstFormat, GLfloat dest[], + GLenum srcFormat, GLenum srcType, + const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps ) +{ + ASSERT(dstFormat == GL_ALPHA || + dstFormat == GL_LUMINANCE || + dstFormat == GL_LUMINANCE_ALPHA || + dstFormat == GL_INTENSITY || + dstFormat == GL_RED || + dstFormat == GL_RG || + dstFormat == GL_RGB || + dstFormat == GL_RGBA || + dstFormat == GL_COLOR_INDEX); + + ASSERT(srcFormat == GL_RED || + srcFormat == GL_GREEN || + srcFormat == GL_BLUE || + srcFormat == GL_ALPHA || + srcFormat == GL_LUMINANCE || + srcFormat == GL_LUMINANCE_ALPHA || + srcFormat == GL_INTENSITY || + srcFormat == GL_RG || + srcFormat == GL_RGB || + srcFormat == GL_BGR || + srcFormat == GL_RGBA || + srcFormat == GL_BGRA || + srcFormat == GL_ABGR_EXT || + srcFormat == GL_RED_INTEGER_EXT || + srcFormat == GL_GREEN_INTEGER_EXT || + srcFormat == GL_BLUE_INTEGER_EXT || + srcFormat == GL_ALPHA_INTEGER_EXT || + srcFormat == GL_RGB_INTEGER_EXT || + srcFormat == GL_RGBA_INTEGER_EXT || + srcFormat == GL_BGR_INTEGER_EXT || + srcFormat == GL_BGRA_INTEGER_EXT || + srcFormat == GL_LUMINANCE_INTEGER_EXT || + srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT || + srcFormat == GL_COLOR_INDEX); + + ASSERT(srcType == GL_BITMAP || + srcType == GL_UNSIGNED_BYTE || + srcType == GL_BYTE || + srcType == GL_UNSIGNED_SHORT || + srcType == GL_SHORT || + srcType == GL_UNSIGNED_INT || + srcType == GL_INT || + srcType == GL_HALF_FLOAT_ARB || + srcType == GL_FLOAT || + srcType == GL_UNSIGNED_BYTE_3_3_2 || + srcType == GL_UNSIGNED_BYTE_2_3_3_REV || + srcType == GL_UNSIGNED_SHORT_5_6_5 || + srcType == GL_UNSIGNED_SHORT_5_6_5_REV || + srcType == GL_UNSIGNED_SHORT_4_4_4_4 || + srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV || + srcType == GL_UNSIGNED_SHORT_5_5_5_1 || + srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV || + srcType == GL_UNSIGNED_INT_8_8_8_8 || + srcType == GL_UNSIGNED_INT_8_8_8_8_REV || + srcType == GL_UNSIGNED_INT_10_10_10_2 || + srcType == GL_UNSIGNED_INT_2_10_10_10_REV); + + /* general solution, no special cases, yet */ + { + GLint dstComponents; + GLint rDst, gDst, bDst, aDst, lDst, iDst; + GLfloat rgba[MAX_WIDTH][4]; + + dstComponents = _mesa_components_in_format( dstFormat ); + /* source & dest image formats should have been error checked by now */ + assert(dstComponents > 0); + + /* + * Extract image data and convert to RGBA floats + */ + assert(n <= MAX_WIDTH); + if (srcFormat == GL_COLOR_INDEX) { + GLuint indexes[MAX_WIDTH]; + extract_uint_indexes(n, indexes, srcFormat, srcType, source, + srcPacking); + + if (dstFormat == GL_COLOR_INDEX) { + GLuint i; + _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes); + /* convert to GLchan and return */ + for (i = 0; i < n; i++) { + dest[i] = (GLchan) (indexes[i] & 0xff); + } + return; + } + else { + /* Convert indexes to RGBA */ + if (transferOps & IMAGE_SHIFT_OFFSET_BIT) { + _mesa_shift_and_offset_ci(ctx, n, indexes); + } + _mesa_map_ci_to_rgba(ctx, n, indexes, rgba); + } + + /* Don't do RGBA scale/bias or RGBA->RGBA mapping if starting + * with color indexes. + */ + transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT); + } + else { + /* non-color index data */ + extract_float_rgba(n, rgba, srcFormat, srcType, source, + srcPacking->SwapBytes); + } + + if (transferOps) { + _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba); + } + + get_component_indexes(dstFormat, + &rDst, &gDst, &bDst, &aDst, &lDst, &iDst); + + /* Now pack results in the requested dstFormat */ + if (rDst >= 0) { + GLfloat *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[rDst] = rgba[i][RCOMP]; + dst += dstComponents; + } + } + + if (gDst >= 0) { + GLfloat *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[gDst] = rgba[i][GCOMP]; + dst += dstComponents; + } + } + + if (bDst >= 0) { + GLfloat *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[bDst] = rgba[i][BCOMP]; + dst += dstComponents; + } + } + + if (aDst >= 0) { + GLfloat *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[aDst] = rgba[i][ACOMP]; + dst += dstComponents; + } + } + + if (iDst >= 0) { + GLfloat *dst = dest; + GLuint i; + assert(iDst == 0); + assert(dstComponents == 1); + for (i = 0; i < n; i++) { + /* Intensity comes from red channel */ + dst[i] = rgba[i][RCOMP]; + } + } + + if (lDst >= 0) { + GLfloat *dst = dest; + GLuint i; + assert(lDst == 0); + for (i = 0; i < n; i++) { + /* Luminance comes from red channel */ + dst[0] = rgba[i][RCOMP]; + dst += dstComponents; + } + } + } +} + + +/** + * Same as _mesa_unpack_color_span_chan(), but return GLuint data + * instead of GLchan. + * No pixel transfer ops are applied. + */ +void +_mesa_unpack_color_span_uint(struct gl_context *ctx, + GLuint n, GLenum dstFormat, GLuint *dest, + GLenum srcFormat, GLenum srcType, + const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking) +{ + GLuint rgba[MAX_WIDTH][4]; + + ASSERT(n <= MAX_WIDTH); + + ASSERT(dstFormat == GL_ALPHA || + dstFormat == GL_LUMINANCE || + dstFormat == GL_LUMINANCE_ALPHA || + dstFormat == GL_INTENSITY || + dstFormat == GL_RED || + dstFormat == GL_RG || + dstFormat == GL_RGB || + dstFormat == GL_RGBA); + + ASSERT(srcFormat == GL_RED || + srcFormat == GL_GREEN || + srcFormat == GL_BLUE || + srcFormat == GL_ALPHA || + srcFormat == GL_LUMINANCE || + srcFormat == GL_LUMINANCE_ALPHA || + srcFormat == GL_INTENSITY || + srcFormat == GL_RG || + srcFormat == GL_RGB || + srcFormat == GL_BGR || + srcFormat == GL_RGBA || + srcFormat == GL_BGRA || + srcFormat == GL_ABGR_EXT || + srcFormat == GL_RED_INTEGER_EXT || + srcFormat == GL_GREEN_INTEGER_EXT || + srcFormat == GL_BLUE_INTEGER_EXT || + srcFormat == GL_ALPHA_INTEGER_EXT || + srcFormat == GL_RGB_INTEGER_EXT || + srcFormat == GL_RGBA_INTEGER_EXT || + srcFormat == GL_BGR_INTEGER_EXT || + srcFormat == GL_BGRA_INTEGER_EXT || + srcFormat == GL_LUMINANCE_INTEGER_EXT || + srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT); + + ASSERT(srcType == GL_UNSIGNED_BYTE || + srcType == GL_BYTE || + srcType == GL_UNSIGNED_SHORT || + srcType == GL_SHORT || + srcType == GL_UNSIGNED_INT || + srcType == GL_INT || + srcType == GL_HALF_FLOAT_ARB || + srcType == GL_FLOAT || + srcType == GL_UNSIGNED_BYTE_3_3_2 || + srcType == GL_UNSIGNED_BYTE_2_3_3_REV || + srcType == GL_UNSIGNED_SHORT_5_6_5 || + srcType == GL_UNSIGNED_SHORT_5_6_5_REV || + srcType == GL_UNSIGNED_SHORT_4_4_4_4 || + srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV || + srcType == GL_UNSIGNED_SHORT_5_5_5_1 || + srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV || + srcType == GL_UNSIGNED_INT_8_8_8_8 || + srcType == GL_UNSIGNED_INT_8_8_8_8_REV || + srcType == GL_UNSIGNED_INT_10_10_10_2 || + srcType == GL_UNSIGNED_INT_2_10_10_10_REV); + + + /* Extract image data as uint[4] pixels */ + extract_uint_rgba(n, rgba, srcFormat, srcType, source, + srcPacking->SwapBytes); + + if (dstFormat == GL_RGBA) { + /* simple case */ + memcpy(dest, rgba, 4 * sizeof(GLuint) * n); + } + else { + /* general case */ + GLint rDst, gDst, bDst, aDst, lDst, iDst; + GLint dstComponents = _mesa_components_in_format( dstFormat ); + + assert(dstComponents > 0); + + get_component_indexes(dstFormat, + &rDst, &gDst, &bDst, &aDst, &lDst, &iDst); + + /* Now pack values in the requested dest format */ + if (rDst >= 0) { + GLuint *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[rDst] = rgba[i][RCOMP]; + dst += dstComponents; + } + } + + if (gDst >= 0) { + GLuint *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[gDst] = rgba[i][GCOMP]; + dst += dstComponents; + } + } + + if (bDst >= 0) { + GLuint *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[bDst] = rgba[i][BCOMP]; + dst += dstComponents; + } + } + + if (aDst >= 0) { + GLuint *dst = dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[aDst] = rgba[i][ACOMP]; + dst += dstComponents; + } + } + + if (iDst >= 0) { + GLuint *dst = dest; + GLuint i; + assert(iDst == 0); + assert(dstComponents == 1); + for (i = 0; i < n; i++) { + /* Intensity comes from red channel */ + dst[i] = rgba[i][RCOMP]; + } + } + + if (lDst >= 0) { + GLuint *dst = dest; + GLuint i; + assert(lDst == 0); + for (i = 0; i < n; i++) { + /* Luminance comes from red channel */ + dst[0] = rgba[i][RCOMP]; + dst += dstComponents; + } + } + } +} + + + +/** + * Similar to _mesa_unpack_color_span_float(), but for dudv data instead of rgba, + * directly return GLbyte data, no transfer ops apply. + */ +void +_mesa_unpack_dudv_span_byte( struct gl_context *ctx, + GLuint n, GLenum dstFormat, GLbyte dest[], + GLenum srcFormat, GLenum srcType, + const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps ) +{ + ASSERT(dstFormat == GL_DUDV_ATI); + ASSERT(srcFormat == GL_DUDV_ATI); + + ASSERT(srcType == GL_UNSIGNED_BYTE || + srcType == GL_BYTE || + srcType == GL_UNSIGNED_SHORT || + srcType == GL_SHORT || + srcType == GL_UNSIGNED_INT || + srcType == GL_INT || + srcType == GL_HALF_FLOAT_ARB || + srcType == GL_FLOAT); + + /* general solution */ + { + GLint dstComponents; + GLfloat rgba[MAX_WIDTH][4]; + GLbyte *dst = dest; + GLuint i; + + dstComponents = _mesa_components_in_format( dstFormat ); + /* source & dest image formats should have been error checked by now */ + assert(dstComponents > 0); + + /* + * Extract image data and convert to RGBA floats + */ + assert(n <= MAX_WIDTH); + extract_float_rgba(n, rgba, srcFormat, srcType, source, + srcPacking->SwapBytes); + + + /* Now determine which color channels we need to produce. + * And determine the dest index (offset) within each color tuple. + */ + + /* Now pack results in the requested dstFormat */ + for (i = 0; i < n; i++) { + /* not sure - need clamp[-1,1] here? */ + dst[0] = FLOAT_TO_BYTE(rgba[i][RCOMP]); + dst[1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); + dst += dstComponents; + } + } +} + +/* + * Unpack a row of color index data from a client buffer according to + * the pixel unpacking parameters. + * This is (or will be) used by glDrawPixels, glTexImage[123]D, etc. + * + * Args: ctx - the context + * n - number of pixels + * dstType - destination data type + * dest - destination array + * srcType - source pixel type + * source - source data pointer + * srcPacking - pixel unpacking parameters + * transferOps - the pixel transfer operations to apply + */ +void +_mesa_unpack_index_span( const struct gl_context *ctx, GLuint n, + GLenum dstType, GLvoid *dest, + GLenum srcType, const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps ) +{ + ASSERT(srcType == GL_BITMAP || + srcType == GL_UNSIGNED_BYTE || + srcType == GL_BYTE || + srcType == GL_UNSIGNED_SHORT || + srcType == GL_SHORT || + srcType == GL_UNSIGNED_INT || + srcType == GL_INT || + srcType == GL_HALF_FLOAT_ARB || + srcType == GL_FLOAT); + + ASSERT(dstType == GL_UNSIGNED_BYTE || + dstType == GL_UNSIGNED_SHORT || + dstType == GL_UNSIGNED_INT); + + + transferOps &= (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT); + + /* + * Try simple cases first + */ + if (transferOps == 0 && srcType == GL_UNSIGNED_BYTE + && dstType == GL_UNSIGNED_BYTE) { + memcpy(dest, source, n * sizeof(GLubyte)); + } + else if (transferOps == 0 && srcType == GL_UNSIGNED_INT + && dstType == GL_UNSIGNED_INT && !srcPacking->SwapBytes) { + memcpy(dest, source, n * sizeof(GLuint)); + } + else { + /* + * general solution + */ + GLuint indexes[MAX_WIDTH]; + assert(n <= MAX_WIDTH); + + extract_uint_indexes(n, indexes, GL_COLOR_INDEX, srcType, source, + srcPacking); + + if (transferOps) + _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes); + + /* convert to dest type */ + switch (dstType) { + case GL_UNSIGNED_BYTE: + { + GLubyte *dst = (GLubyte *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = (GLubyte) (indexes[i] & 0xff); + } + } + break; + case GL_UNSIGNED_SHORT: + { + GLuint *dst = (GLuint *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = (GLushort) (indexes[i] & 0xffff); + } + } + break; + case GL_UNSIGNED_INT: + memcpy(dest, indexes, n * sizeof(GLuint)); + break; + default: + _mesa_problem(ctx, "bad dstType in _mesa_unpack_index_span"); + } + } +} + + +void +_mesa_pack_index_span( const struct gl_context *ctx, GLuint n, + GLenum dstType, GLvoid *dest, const GLuint *source, + const struct gl_pixelstore_attrib *dstPacking, + GLbitfield transferOps ) +{ + GLuint indexes[MAX_WIDTH]; + + ASSERT(n <= MAX_WIDTH); + + transferOps &= (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT); + + if (transferOps & (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT)) { + /* make a copy of input */ + memcpy(indexes, source, n * sizeof(GLuint)); + _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes); + source = indexes; + } + + switch (dstType) { + case GL_UNSIGNED_BYTE: + { + GLubyte *dst = (GLubyte *) dest; + GLuint i; + for (i = 0; i < n; i++) { + *dst++ = (GLubyte) source[i]; + } + } + break; + case GL_BYTE: + { + GLbyte *dst = (GLbyte *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = (GLbyte) source[i]; + } + } + break; + case GL_UNSIGNED_SHORT: + { + GLushort *dst = (GLushort *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = (GLushort) source[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap2( (GLushort *) dst, n ); + } + } + break; + case GL_SHORT: + { + GLshort *dst = (GLshort *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = (GLshort) source[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap2( (GLushort *) dst, n ); + } + } + break; + case GL_UNSIGNED_INT: + { + GLuint *dst = (GLuint *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = (GLuint) source[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap4( (GLuint *) dst, n ); + } + } + break; + case GL_INT: + { + GLint *dst = (GLint *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = (GLint) source[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap4( (GLuint *) dst, n ); + } + } + break; + case GL_FLOAT: + { + GLfloat *dst = (GLfloat *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = (GLfloat) source[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap4( (GLuint *) dst, n ); + } + } + break; + case GL_HALF_FLOAT_ARB: + { + GLhalfARB *dst = (GLhalfARB *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = _mesa_float_to_half((GLfloat) source[i]); + } + if (dstPacking->SwapBytes) { + _mesa_swap2( (GLushort *) dst, n ); + } + } + break; + default: + _mesa_problem(ctx, "bad type in _mesa_pack_index_span"); + } +} + + +/* + * Unpack a row of stencil data from a client buffer according to + * the pixel unpacking parameters. + * This is (or will be) used by glDrawPixels + * + * Args: ctx - the context + * n - number of pixels + * dstType - destination data type + * dest - destination array + * srcType - source pixel type + * source - source data pointer + * srcPacking - pixel unpacking parameters + * transferOps - apply offset/bias/lookup ops? + */ +void +_mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n, + GLenum dstType, GLvoid *dest, + GLenum srcType, const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps ) +{ + ASSERT(srcType == GL_BITMAP || + srcType == GL_UNSIGNED_BYTE || + srcType == GL_BYTE || + srcType == GL_UNSIGNED_SHORT || + srcType == GL_SHORT || + srcType == GL_UNSIGNED_INT || + srcType == GL_INT || + srcType == GL_UNSIGNED_INT_24_8_EXT || + srcType == GL_HALF_FLOAT_ARB || + srcType == GL_FLOAT); + + ASSERT(dstType == GL_UNSIGNED_BYTE || + dstType == GL_UNSIGNED_SHORT || + dstType == GL_UNSIGNED_INT); + + /* only shift and offset apply to stencil */ + transferOps &= IMAGE_SHIFT_OFFSET_BIT; + + /* + * Try simple cases first + */ + if (transferOps == 0 && + !ctx->Pixel.MapStencilFlag && + srcType == GL_UNSIGNED_BYTE && + dstType == GL_UNSIGNED_BYTE) { + memcpy(dest, source, n * sizeof(GLubyte)); + } + else if (transferOps == 0 && + !ctx->Pixel.MapStencilFlag && + srcType == GL_UNSIGNED_INT && + dstType == GL_UNSIGNED_INT && + !srcPacking->SwapBytes) { + memcpy(dest, source, n * sizeof(GLuint)); + } + else { + /* + * general solution + */ + GLuint indexes[MAX_WIDTH]; + assert(n <= MAX_WIDTH); + + extract_uint_indexes(n, indexes, GL_STENCIL_INDEX, srcType, source, + srcPacking); + + if (transferOps & IMAGE_SHIFT_OFFSET_BIT) { + /* shift and offset indexes */ + _mesa_shift_and_offset_ci(ctx, n, indexes); + } + + if (ctx->Pixel.MapStencilFlag) { + /* Apply stencil lookup table */ + const GLuint mask = ctx->PixelMaps.StoS.Size - 1; + GLuint i; + for (i = 0; i < n; i++) { + indexes[i] = (GLuint)ctx->PixelMaps.StoS.Map[ indexes[i] & mask ]; + } + } + + /* convert to dest type */ + switch (dstType) { + case GL_UNSIGNED_BYTE: + { + GLubyte *dst = (GLubyte *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = (GLubyte) (indexes[i] & 0xff); + } + } + break; + case GL_UNSIGNED_SHORT: + { + GLuint *dst = (GLuint *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = (GLushort) (indexes[i] & 0xffff); + } + } + break; + case GL_UNSIGNED_INT: + memcpy(dest, indexes, n * sizeof(GLuint)); + break; + default: + _mesa_problem(ctx, "bad dstType in _mesa_unpack_stencil_span"); + } + } +} + + +void +_mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n, + GLenum dstType, GLvoid *dest, const GLstencil *source, + const struct gl_pixelstore_attrib *dstPacking ) +{ + GLstencil stencil[MAX_WIDTH]; + + ASSERT(n <= MAX_WIDTH); + + if (ctx->Pixel.IndexShift || ctx->Pixel.IndexOffset || + ctx->Pixel.MapStencilFlag) { + /* make a copy of input */ + memcpy(stencil, source, n * sizeof(GLstencil)); + _mesa_apply_stencil_transfer_ops(ctx, n, stencil); + source = stencil; + } + + switch (dstType) { + case GL_UNSIGNED_BYTE: + if (sizeof(GLstencil) == 1) { + memcpy( dest, source, n ); + } + else { + GLubyte *dst = (GLubyte *) dest; + GLuint i; + for (i=0;i<n;i++) { + dst[i] = (GLubyte) source[i]; + } + } + break; + case GL_BYTE: + { + GLbyte *dst = (GLbyte *) dest; + GLuint i; + for (i=0;i<n;i++) { + dst[i] = (GLbyte) (source[i] & 0x7f); + } + } + break; + case GL_UNSIGNED_SHORT: + { + GLushort *dst = (GLushort *) dest; + GLuint i; + for (i=0;i<n;i++) { + dst[i] = (GLushort) source[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap2( (GLushort *) dst, n ); + } + } + break; + case GL_SHORT: + { + GLshort *dst = (GLshort *) dest; + GLuint i; + for (i=0;i<n;i++) { + dst[i] = (GLshort) source[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap2( (GLushort *) dst, n ); + } + } + break; + case GL_UNSIGNED_INT: + { + GLuint *dst = (GLuint *) dest; + GLuint i; + for (i=0;i<n;i++) { + dst[i] = (GLuint) source[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap4( (GLuint *) dst, n ); + } + } + break; + case GL_INT: + { + GLint *dst = (GLint *) dest; + GLuint i; + for (i=0;i<n;i++) { + dst[i] = (GLint) source[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap4( (GLuint *) dst, n ); + } + } + break; + case GL_FLOAT: + { + GLfloat *dst = (GLfloat *) dest; + GLuint i; + for (i=0;i<n;i++) { + dst[i] = (GLfloat) source[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap4( (GLuint *) dst, n ); + } + } + break; + case GL_HALF_FLOAT_ARB: + { + GLhalfARB *dst = (GLhalfARB *) dest; + GLuint i; + for (i=0;i<n;i++) { + dst[i] = _mesa_float_to_half( (float) source[i] ); + } + if (dstPacking->SwapBytes) { + _mesa_swap2( (GLushort *) dst, n ); + } + } + break; + case GL_BITMAP: + if (dstPacking->LsbFirst) { + GLubyte *dst = (GLubyte *) dest; + GLint shift = 0; + GLuint i; + for (i = 0; i < n; i++) { + if (shift == 0) + *dst = 0; + *dst |= ((source[i] != 0) << shift); + shift++; + if (shift == 8) { + shift = 0; + dst++; + } + } + } + else { + GLubyte *dst = (GLubyte *) dest; + GLint shift = 7; + GLuint i; + for (i = 0; i < n; i++) { + if (shift == 7) + *dst = 0; + *dst |= ((source[i] != 0) << shift); + shift--; + if (shift < 0) { + shift = 7; + dst++; + } + } + } + break; + default: + _mesa_problem(ctx, "bad type in _mesa_pack_index_span"); + } +} + +#define DEPTH_VALUES(GLTYPE, GLTYPE2FLOAT) \ + do { \ + GLuint i; \ + const GLTYPE *src = (const GLTYPE *)source; \ + for (i = 0; i < n; i++) { \ + GLTYPE value = src[i]; \ + if (srcPacking->SwapBytes) { \ + if (sizeof(GLTYPE) == 2) { \ + SWAP2BYTE(value); \ + } else if (sizeof(GLTYPE) == 4) { \ + SWAP4BYTE(value); \ + } \ + } \ + depthValues[i] = GLTYPE2FLOAT(value); \ + } \ + } while (0) + + +/** + * Unpack a row of depth/z values from memory, returning GLushort, GLuint + * or GLfloat values. + * The glPixelTransfer (scale/bias) params will be applied. + * + * \param dstType one of GL_UNSIGNED_SHORT, GL_UNSIGNED_INT, GL_FLOAT + * \param depthMax max value for returned GLushort or GLuint values + * (ignored for GLfloat). + */ +void +_mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n, + GLenum dstType, GLvoid *dest, GLuint depthMax, + GLenum srcType, const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking ) +{ + GLfloat depthTemp[MAX_WIDTH], *depthValues; + GLboolean needClamp = GL_FALSE; + + /* Look for special cases first. + * Not only are these faster, they're less prone to numeric conversion + * problems. Otherwise, converting from an int type to a float then + * back to an int type can introduce errors that will show up as + * artifacts in things like depth peeling which uses glCopyTexImage. + */ + if (ctx->Pixel.DepthScale == 1.0 && ctx->Pixel.DepthBias == 0.0) { + if (srcType == GL_UNSIGNED_INT && dstType == GL_UNSIGNED_SHORT) { + const GLuint *src = (const GLuint *) source; + GLushort *dst = (GLushort *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = src[i] >> 16; + } + return; + } + if (srcType == GL_UNSIGNED_SHORT + && dstType == GL_UNSIGNED_INT + && depthMax == 0xffffffff) { + const GLushort *src = (const GLushort *) source; + GLuint *dst = (GLuint *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = src[i] | (src[i] << 16); + } + return; + } + if (srcType == GL_UNSIGNED_INT_24_8 + && dstType == GL_UNSIGNED_INT + && depthMax == 0xffffff) { + const GLuint *src = (const GLuint *) source; + GLuint *dst = (GLuint *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = src[i] >> 8; + } + return; + } + /* XXX may want to add additional cases here someday */ + } + + /* general case path follows */ + + if (dstType == GL_FLOAT) { + depthValues = (GLfloat *) dest; + } + else { + depthValues = depthTemp; + } + + /* Convert incoming values to GLfloat. Some conversions will require + * clamping, below. + */ + switch (srcType) { + case GL_BYTE: + DEPTH_VALUES(GLbyte, BYTE_TO_FLOAT); + needClamp = GL_TRUE; + break; + case GL_UNSIGNED_BYTE: + DEPTH_VALUES(GLubyte, UBYTE_TO_FLOAT); + break; + case GL_SHORT: + DEPTH_VALUES(GLshort, SHORT_TO_FLOAT); + needClamp = GL_TRUE; + break; + case GL_UNSIGNED_SHORT: + DEPTH_VALUES(GLushort, USHORT_TO_FLOAT); + break; + case GL_INT: + DEPTH_VALUES(GLint, INT_TO_FLOAT); + needClamp = GL_TRUE; + break; + case GL_UNSIGNED_INT: + DEPTH_VALUES(GLuint, UINT_TO_FLOAT); + break; + case GL_UNSIGNED_INT_24_8_EXT: /* GL_EXT_packed_depth_stencil */ + if (dstType == GL_UNSIGNED_INT_24_8_EXT && + depthMax == 0xffffff && + ctx->Pixel.DepthScale == 1.0 && + ctx->Pixel.DepthBias == 0.0) { + const GLuint *src = (const GLuint *) source; + GLuint *zValues = (GLuint *) dest; + GLuint i; + for (i = 0; i < n; i++) { + GLuint value = src[i]; + if (srcPacking->SwapBytes) { + SWAP4BYTE(value); + } + zValues[i] = value & 0xffffff00; + } + return; + } + else { + const GLuint *src = (const GLuint *) source; + const GLfloat scale = 1.0f / 0xffffff; + GLuint i; + for (i = 0; i < n; i++) { + GLuint value = src[i]; + if (srcPacking->SwapBytes) { + SWAP4BYTE(value); + } + depthValues[i] = (value >> 8) * scale; + } + } + break; + case GL_FLOAT: + DEPTH_VALUES(GLfloat, 1*); + needClamp = GL_TRUE; + break; + case GL_HALF_FLOAT_ARB: + { + GLuint i; + const GLhalfARB *src = (const GLhalfARB *) source; + for (i = 0; i < n; i++) { + GLhalfARB value = src[i]; + if (srcPacking->SwapBytes) { + SWAP2BYTE(value); + } + depthValues[i] = _mesa_half_to_float(value); + } + needClamp = GL_TRUE; + } + break; + default: + _mesa_problem(NULL, "bad type in _mesa_unpack_depth_span()"); + return; + } + + /* apply depth scale and bias */ + { + const GLfloat scale = ctx->Pixel.DepthScale; + const GLfloat bias = ctx->Pixel.DepthBias; + if (scale != 1.0 || bias != 0.0) { + GLuint i; + for (i = 0; i < n; i++) { + depthValues[i] = depthValues[i] * scale + bias; + } + needClamp = GL_TRUE; + } + } + + /* clamp to [0, 1] */ + if (needClamp) { + GLuint i; + for (i = 0; i < n; i++) { + depthValues[i] = (GLfloat)CLAMP(depthValues[i], 0.0, 1.0); + } + } + + /* + * Convert values to dstType + */ + if (dstType == GL_UNSIGNED_INT) { + GLuint *zValues = (GLuint *) dest; + GLuint i; + if (depthMax <= 0xffffff) { + /* no overflow worries */ + for (i = 0; i < n; i++) { + zValues[i] = (GLuint) (depthValues[i] * (GLfloat) depthMax); + } + } + else { + /* need to use double precision to prevent overflow problems */ + for (i = 0; i < n; i++) { + GLdouble z = depthValues[i] * (GLfloat) depthMax; + if (z >= (GLdouble) 0xffffffff) + zValues[i] = 0xffffffff; + else + zValues[i] = (GLuint) z; + } + } + } + else if (dstType == GL_UNSIGNED_SHORT) { + GLushort *zValues = (GLushort *) dest; + GLuint i; + ASSERT(depthMax <= 0xffff); + for (i = 0; i < n; i++) { + zValues[i] = (GLushort) (depthValues[i] * (GLfloat) depthMax); + } + } + else { + ASSERT(dstType == GL_FLOAT); + /*ASSERT(depthMax == 1.0F);*/ + } +} + + +/* + * Pack an array of depth values. The values are floats in [0,1]. + */ +void +_mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest, + GLenum dstType, const GLfloat *depthSpan, + const struct gl_pixelstore_attrib *dstPacking ) +{ + GLfloat depthCopy[MAX_WIDTH]; + + ASSERT(n <= MAX_WIDTH); + + if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) { + memcpy(depthCopy, depthSpan, n * sizeof(GLfloat)); + _mesa_scale_and_bias_depth(ctx, n, depthCopy); + depthSpan = depthCopy; + } + + switch (dstType) { + case GL_UNSIGNED_BYTE: + { + GLubyte *dst = (GLubyte *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = FLOAT_TO_UBYTE( depthSpan[i] ); + } + } + break; + case GL_BYTE: + { + GLbyte *dst = (GLbyte *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = FLOAT_TO_BYTE( depthSpan[i] ); + } + } + break; + case GL_UNSIGNED_SHORT: + { + GLushort *dst = (GLushort *) dest; + GLuint i; + for (i = 0; i < n; i++) { + CLAMPED_FLOAT_TO_USHORT(dst[i], depthSpan[i]); + } + if (dstPacking->SwapBytes) { + _mesa_swap2( (GLushort *) dst, n ); + } + } + break; + case GL_SHORT: + { + GLshort *dst = (GLshort *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = FLOAT_TO_SHORT( depthSpan[i] ); + } + if (dstPacking->SwapBytes) { + _mesa_swap2( (GLushort *) dst, n ); + } + } + break; + case GL_UNSIGNED_INT: + { + GLuint *dst = (GLuint *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = FLOAT_TO_UINT( depthSpan[i] ); + } + if (dstPacking->SwapBytes) { + _mesa_swap4( (GLuint *) dst, n ); + } + } + break; + case GL_INT: + { + GLint *dst = (GLint *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = FLOAT_TO_INT( depthSpan[i] ); + } + if (dstPacking->SwapBytes) { + _mesa_swap4( (GLuint *) dst, n ); + } + } + break; + case GL_FLOAT: + { + GLfloat *dst = (GLfloat *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = depthSpan[i]; + } + if (dstPacking->SwapBytes) { + _mesa_swap4( (GLuint *) dst, n ); + } + } + break; + case GL_HALF_FLOAT_ARB: + { + GLhalfARB *dst = (GLhalfARB *) dest; + GLuint i; + for (i = 0; i < n; i++) { + dst[i] = _mesa_float_to_half(depthSpan[i]); + } + if (dstPacking->SwapBytes) { + _mesa_swap2( (GLushort *) dst, n ); + } + } + break; + default: + _mesa_problem(ctx, "bad type in _mesa_pack_depth_span"); + } +} + + + +/** + * Pack depth and stencil values as GL_DEPTH_STENCIL/GL_UNSIGNED_INT_24_8. + */ +void +_mesa_pack_depth_stencil_span(const struct gl_context *ctx, GLuint n, GLuint *dest, + const GLfloat *depthVals, + const GLstencil *stencilVals, + const struct gl_pixelstore_attrib *dstPacking) +{ + GLfloat depthCopy[MAX_WIDTH]; + GLstencil stencilCopy[MAX_WIDTH]; + GLuint i; + + ASSERT(n <= MAX_WIDTH); + + if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) { + memcpy(depthCopy, depthVals, n * sizeof(GLfloat)); + _mesa_scale_and_bias_depth(ctx, n, depthCopy); + depthVals = depthCopy; + } + + if (ctx->Pixel.IndexShift || + ctx->Pixel.IndexOffset || + ctx->Pixel.MapStencilFlag) { + memcpy(stencilCopy, stencilVals, n * sizeof(GLstencil)); + _mesa_apply_stencil_transfer_ops(ctx, n, stencilCopy); + stencilVals = stencilCopy; + } + + for (i = 0; i < n; i++) { + GLuint z = (GLuint) (depthVals[i] * 0xffffff); + dest[i] = (z << 8) | (stencilVals[i] & 0xff); + } + + if (dstPacking->SwapBytes) { + _mesa_swap4(dest, n); + } +} + + + + +/** + * Unpack image data. Apply byte swapping, byte flipping (bitmap). + * Return all image data in a contiguous block. This is used when we + * compile glDrawPixels, glTexImage, etc into a display list. We + * need a copy of the data in a standard format. + */ +void * +_mesa_unpack_image( GLuint dimensions, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLenum type, const GLvoid *pixels, + const struct gl_pixelstore_attrib *unpack ) +{ + GLint bytesPerRow, compsPerRow; + GLboolean flipBytes, swap2, swap4; + + if (!pixels) + return NULL; /* not necessarily an error */ + + if (width <= 0 || height <= 0 || depth <= 0) + return NULL; /* generate error later */ + + if (type == GL_BITMAP) { + bytesPerRow = (width + 7) >> 3; + flipBytes = unpack->LsbFirst; + swap2 = swap4 = GL_FALSE; + compsPerRow = 0; + } + else { + const GLint bytesPerPixel = _mesa_bytes_per_pixel(format, type); + GLint components = _mesa_components_in_format(format); + GLint bytesPerComp; + + if (_mesa_type_is_packed(type)) + components = 1; + + if (bytesPerPixel <= 0 || components <= 0) + return NULL; /* bad format or type. generate error later */ + bytesPerRow = bytesPerPixel * width; + bytesPerComp = bytesPerPixel / components; + flipBytes = GL_FALSE; + swap2 = (bytesPerComp == 2) && unpack->SwapBytes; + swap4 = (bytesPerComp == 4) && unpack->SwapBytes; + compsPerRow = components * width; + assert(compsPerRow >= width); + } + + { + GLubyte *destBuffer + = (GLubyte *) malloc(bytesPerRow * height * depth); + GLubyte *dst; + GLint img, row; + if (!destBuffer) + return NULL; /* generate GL_OUT_OF_MEMORY later */ + + dst = destBuffer; + for (img = 0; img < depth; img++) { + for (row = 0; row < height; row++) { + const GLvoid *src = _mesa_image_address(dimensions, unpack, pixels, + width, height, format, type, img, row, 0); + + if ((type == GL_BITMAP) && (unpack->SkipPixels & 0x7)) { + GLint i; + flipBytes = GL_FALSE; + if (unpack->LsbFirst) { + GLubyte srcMask = 1 << (unpack->SkipPixels & 0x7); + GLubyte dstMask = 128; + const GLubyte *s = src; + GLubyte *d = dst; + *d = 0; + for (i = 0; i < width; i++) { + if (*s & srcMask) { + *d |= dstMask; + } + if (srcMask == 128) { + srcMask = 1; + s++; + } + else { + srcMask = srcMask << 1; + } + if (dstMask == 1) { + dstMask = 128; + d++; + *d = 0; + } + else { + dstMask = dstMask >> 1; + } + } + } + else { + GLubyte srcMask = 128 >> (unpack->SkipPixels & 0x7); + GLubyte dstMask = 128; + const GLubyte *s = src; + GLubyte *d = dst; + *d = 0; + for (i = 0; i < width; i++) { + if (*s & srcMask) { + *d |= dstMask; + } + if (srcMask == 1) { + srcMask = 128; + s++; + } + else { + srcMask = srcMask >> 1; + } + if (dstMask == 1) { + dstMask = 128; + d++; + *d = 0; + } + else { + dstMask = dstMask >> 1; + } + } + } + } + else { + memcpy(dst, src, bytesPerRow); + } + + /* byte flipping/swapping */ + if (flipBytes) { + flip_bytes((GLubyte *) dst, bytesPerRow); + } + else if (swap2) { + _mesa_swap2((GLushort*) dst, compsPerRow); + } + else if (swap4) { + _mesa_swap4((GLuint*) dst, compsPerRow); + } + dst += bytesPerRow; + } + } + return destBuffer; + } +} + diff --git a/src/mesa/main/pack.h b/src/mesa/main/pack.h new file mode 100644 index 0000000000..65d3f7a0fb --- /dev/null +++ b/src/mesa/main/pack.h @@ -0,0 +1,147 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2010 VMware, Inc. 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 + * THE AUTHORS 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. + */ + + +#ifndef PACK_H +#define PACK_H + + +#include "mtypes.h" + + +extern void +_mesa_unpack_polygon_stipple(const GLubyte *pattern, GLuint dest[32], + const struct gl_pixelstore_attrib *unpacking); + + +extern void +_mesa_pack_polygon_stipple(const GLuint pattern[32], GLubyte *dest, + const struct gl_pixelstore_attrib *packing); + + +extern GLvoid * +_mesa_unpack_bitmap(GLint width, GLint height, const GLubyte *pixels, + const struct gl_pixelstore_attrib *packing); + +extern void +_mesa_pack_bitmap(GLint width, GLint height, const GLubyte *source, + GLubyte *dest, const struct gl_pixelstore_attrib *packing); + + +extern void +_mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, + GLfloat rgba[][4], + GLenum dstFormat, GLenum dstType, GLvoid *dstAddr, + const struct gl_pixelstore_attrib *dstPacking, + GLbitfield transferOps); + + +extern void +_mesa_unpack_color_span_chan(struct gl_context *ctx, + GLuint n, GLenum dstFormat, GLchan dest[], + GLenum srcFormat, GLenum srcType, + const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps); + + +extern void +_mesa_unpack_color_span_float(struct gl_context *ctx, + GLuint n, GLenum dstFormat, GLfloat dest[], + GLenum srcFormat, GLenum srcType, + const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps); + +extern void +_mesa_unpack_color_span_uint(struct gl_context *ctx, + GLuint n, GLenum dstFormat, GLuint *dest, + GLenum srcFormat, GLenum srcType, + const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking); + +extern void +_mesa_unpack_dudv_span_byte(struct gl_context *ctx, + GLuint n, GLenum dstFormat, GLbyte dest[], + GLenum srcFormat, GLenum srcType, + const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps); + +extern void +_mesa_unpack_index_span(const struct gl_context *ctx, GLuint n, + GLenum dstType, GLvoid *dest, + GLenum srcType, const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps); + + +extern void +_mesa_pack_index_span(const struct gl_context *ctx, GLuint n, + GLenum dstType, GLvoid *dest, const GLuint *source, + const struct gl_pixelstore_attrib *dstPacking, + GLbitfield transferOps); + + +extern void +_mesa_unpack_stencil_span(const struct gl_context *ctx, GLuint n, + GLenum dstType, GLvoid *dest, + GLenum srcType, const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps); + +extern void +_mesa_pack_stencil_span(const struct gl_context *ctx, GLuint n, + GLenum dstType, GLvoid *dest, const GLstencil *source, + const struct gl_pixelstore_attrib *dstPacking); + + +extern void +_mesa_unpack_depth_span(const struct gl_context *ctx, GLuint n, + GLenum dstType, GLvoid *dest, GLuint depthMax, + GLenum srcType, const GLvoid *source, + const struct gl_pixelstore_attrib *srcPacking); + +extern void +_mesa_pack_depth_span(const struct gl_context *ctx, GLuint n, GLvoid *dest, + GLenum dstType, const GLfloat *depthSpan, + const struct gl_pixelstore_attrib *dstPacking); + + +extern void +_mesa_pack_depth_stencil_span(const struct gl_context *ctx, + GLuint n, GLuint *dest, + const GLfloat *depthVals, + const GLstencil *stencilVals, + const struct gl_pixelstore_attrib *dstPacking); + + +extern void * +_mesa_unpack_image(GLuint dimensions, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLenum type, const GLvoid *pixels, + const struct gl_pixelstore_attrib *unpack); + + +#endif diff --git a/src/mesa/main/pixel.h b/src/mesa/main/pixel.h index 03560835a8..6f04eb6272 100644 --- a/src/mesa/main/pixel.h +++ b/src/mesa/main/pixel.h @@ -33,7 +33,12 @@ #define PIXEL_H -#include "main/mtypes.h" +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" + +struct _glapi_table; +struct gl_context; #if FEATURE_pixel_transfer diff --git a/src/mesa/main/pixelstore.h b/src/mesa/main/pixelstore.h index cdef7de261..eb50819749 100644 --- a/src/mesa/main/pixelstore.h +++ b/src/mesa/main/pixelstore.h @@ -33,7 +33,8 @@ #include "glheader.h" -#include "mtypes.h" + +struct gl_context; extern void GLAPIENTRY diff --git a/src/mesa/main/pixeltransfer.c b/src/mesa/main/pixeltransfer.c new file mode 100644 index 0000000000..711181fd89 --- /dev/null +++ b/src/mesa/main/pixeltransfer.c @@ -0,0 +1,566 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * Copyright (C) 2009-2010 VMware, Inc. 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 + * THE AUTHORS 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. + */ + + +/** + * \file pixeltransfer.c + * Pixel transfer operations (scale, bias, table lookups, etc) + */ + + +#include "glheader.h" +#include "colormac.h" +#include "pixeltransfer.h" +#include "imports.h" + + +/* + * Apply scale and bias factors to an array of RGBA pixels. + */ +void +_mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4], + GLfloat rScale, GLfloat gScale, + GLfloat bScale, GLfloat aScale, + GLfloat rBias, GLfloat gBias, + GLfloat bBias, GLfloat aBias) +{ + if (rScale != 1.0 || rBias != 0.0) { + GLuint i; + for (i = 0; i < n; i++) { + rgba[i][RCOMP] = rgba[i][RCOMP] * rScale + rBias; + } + } + if (gScale != 1.0 || gBias != 0.0) { + GLuint i; + for (i = 0; i < n; i++) { + rgba[i][GCOMP] = rgba[i][GCOMP] * gScale + gBias; + } + } + if (bScale != 1.0 || bBias != 0.0) { + GLuint i; + for (i = 0; i < n; i++) { + rgba[i][BCOMP] = rgba[i][BCOMP] * bScale + bBias; + } + } + if (aScale != 1.0 || aBias != 0.0) { + GLuint i; + for (i = 0; i < n; i++) { + rgba[i][ACOMP] = rgba[i][ACOMP] * aScale + aBias; + } + } +} + + +/* + * Apply pixel mapping to an array of floating point RGBA pixels. + */ +void +_mesa_map_rgba( const struct gl_context *ctx, GLuint n, GLfloat rgba[][4] ) +{ + const GLfloat rscale = (GLfloat) (ctx->PixelMaps.RtoR.Size - 1); + const GLfloat gscale = (GLfloat) (ctx->PixelMaps.GtoG.Size - 1); + const GLfloat bscale = (GLfloat) (ctx->PixelMaps.BtoB.Size - 1); + const GLfloat ascale = (GLfloat) (ctx->PixelMaps.AtoA.Size - 1); + const GLfloat *rMap = ctx->PixelMaps.RtoR.Map; + const GLfloat *gMap = ctx->PixelMaps.GtoG.Map; + const GLfloat *bMap = ctx->PixelMaps.BtoB.Map; + const GLfloat *aMap = ctx->PixelMaps.AtoA.Map; + GLuint i; + for (i=0;i<n;i++) { + GLfloat r = CLAMP(rgba[i][RCOMP], 0.0F, 1.0F); + GLfloat g = CLAMP(rgba[i][GCOMP], 0.0F, 1.0F); + GLfloat b = CLAMP(rgba[i][BCOMP], 0.0F, 1.0F); + GLfloat a = CLAMP(rgba[i][ACOMP], 0.0F, 1.0F); + rgba[i][RCOMP] = rMap[IROUND(r * rscale)]; + rgba[i][GCOMP] = gMap[IROUND(g * gscale)]; + rgba[i][BCOMP] = bMap[IROUND(b * bscale)]; + rgba[i][ACOMP] = aMap[IROUND(a * ascale)]; + } +} + +/** + * Apply a color table lookup to an array of floating point RGBA colors. + */ +void +_mesa_lookup_rgba_float(const struct gl_color_table *table, + GLuint n, GLfloat rgba[][4]) +{ + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; + const GLfloat *lut = table->TableF; + GLuint i; + + if (!table->TableF || table->Size == 0) + return; + + switch (table->_BaseFormat) { + case GL_INTENSITY: + /* replace RGBA with I */ + for (i = 0; i < n; i++) { + GLint j = IROUND(rgba[i][RCOMP] * scale); + GLfloat c = lut[CLAMP(j, 0, max)]; + rgba[i][RCOMP] = + rgba[i][GCOMP] = + rgba[i][BCOMP] = + rgba[i][ACOMP] = c; + } + break; + case GL_LUMINANCE: + /* replace RGB with L */ + for (i = 0; i < n; i++) { + GLint j = IROUND(rgba[i][RCOMP] * scale); + GLfloat c = lut[CLAMP(j, 0, max)]; + rgba[i][RCOMP] = + rgba[i][GCOMP] = + rgba[i][BCOMP] = c; + } + break; + case GL_ALPHA: + /* replace A with A */ + for (i = 0; i < n; i++) { + GLint j = IROUND(rgba[i][ACOMP] * scale); + rgba[i][ACOMP] = lut[CLAMP(j, 0, max)]; + } + break; + case GL_LUMINANCE_ALPHA: + /* replace RGBA with LLLA */ + for (i = 0; i < n; i++) { + GLint jL = IROUND(rgba[i][RCOMP] * scale); + GLint jA = IROUND(rgba[i][ACOMP] * scale); + GLfloat luminance, alpha; + jL = CLAMP(jL, 0, max); + jA = CLAMP(jA, 0, max); + luminance = lut[jL * 2 + 0]; + alpha = lut[jA * 2 + 1]; + rgba[i][RCOMP] = + rgba[i][GCOMP] = + rgba[i][BCOMP] = luminance; + rgba[i][ACOMP] = alpha;; + } + break; + case GL_RED: + /* replace RGB with RGB */ + for (i = 0; i < n; i++) { + GLint jR = IROUND(rgba[i][RCOMP] * scale); + jR = CLAMP(jR, 0, max); + rgba[i][RCOMP] = lut[jR * 3 + 0]; + } + break; + case GL_RG: + /* replace RG with RG */ + for (i = 0; i < n; i++) { + GLint jR = IROUND(rgba[i][RCOMP] * scale); + GLint jG = IROUND(rgba[i][GCOMP] * scale); + jR = CLAMP(jR, 0, max); + jG = CLAMP(jG, 0, max); + rgba[i][RCOMP] = lut[jR * 3 + 0]; + rgba[i][GCOMP] = lut[jG * 3 + 1]; + } + break; + case GL_RGB: + /* replace RGB with RGB */ + for (i = 0; i < n; i++) { + GLint jR = IROUND(rgba[i][RCOMP] * scale); + GLint jG = IROUND(rgba[i][GCOMP] * scale); + GLint jB = IROUND(rgba[i][BCOMP] * scale); + jR = CLAMP(jR, 0, max); + jG = CLAMP(jG, 0, max); + jB = CLAMP(jB, 0, max); + rgba[i][RCOMP] = lut[jR * 3 + 0]; + rgba[i][GCOMP] = lut[jG * 3 + 1]; + rgba[i][BCOMP] = lut[jB * 3 + 2]; + } + break; + case GL_RGBA: + /* replace RGBA with RGBA */ + for (i = 0; i < n; i++) { + GLint jR = IROUND(rgba[i][RCOMP] * scale); + GLint jG = IROUND(rgba[i][GCOMP] * scale); + GLint jB = IROUND(rgba[i][BCOMP] * scale); + GLint jA = IROUND(rgba[i][ACOMP] * scale); + jR = CLAMP(jR, 0, max); + jG = CLAMP(jG, 0, max); + jB = CLAMP(jB, 0, max); + jA = CLAMP(jA, 0, max); + rgba[i][RCOMP] = lut[jR * 4 + 0]; + rgba[i][GCOMP] = lut[jG * 4 + 1]; + rgba[i][BCOMP] = lut[jB * 4 + 2]; + rgba[i][ACOMP] = lut[jA * 4 + 3]; + } + break; + default: + _mesa_problem(NULL, "Bad format in _mesa_lookup_rgba_float"); + return; + } +} + + + +/** + * Apply a color table lookup to an array of ubyte/RGBA colors. + */ +void +_mesa_lookup_rgba_ubyte(const struct gl_color_table *table, + GLuint n, GLubyte rgba[][4]) +{ + const GLubyte *lut = table->TableUB; + const GLfloat scale = (GLfloat) (table->Size - 1) / (GLfloat)255.0; + GLuint i; + + if (!table->TableUB || table->Size == 0) + return; + + switch (table->_BaseFormat) { + case GL_INTENSITY: + /* replace RGBA with I */ + if (table->Size == 256) { + for (i = 0; i < n; i++) { + const GLubyte c = lut[rgba[i][RCOMP]]; + rgba[i][RCOMP] = + rgba[i][GCOMP] = + rgba[i][BCOMP] = + rgba[i][ACOMP] = c; + } + } + else { + for (i = 0; i < n; i++) { + GLint j = IROUND((GLfloat) rgba[i][RCOMP] * scale); + rgba[i][RCOMP] = + rgba[i][GCOMP] = + rgba[i][BCOMP] = + rgba[i][ACOMP] = lut[j]; + } + } + break; + case GL_LUMINANCE: + /* replace RGB with L */ + if (table->Size == 256) { + for (i = 0; i < n; i++) { + const GLubyte c = lut[rgba[i][RCOMP]]; + rgba[i][RCOMP] = + rgba[i][GCOMP] = + rgba[i][BCOMP] = c; + } + } + else { + for (i = 0; i < n; i++) { + GLint j = IROUND((GLfloat) rgba[i][RCOMP] * scale); + rgba[i][RCOMP] = + rgba[i][GCOMP] = + rgba[i][BCOMP] = lut[j]; + } + } + break; + case GL_ALPHA: + /* replace A with A */ + if (table->Size == 256) { + for (i = 0; i < n; i++) { + rgba[i][ACOMP] = lut[rgba[i][ACOMP]]; + } + } + else { + for (i = 0; i < n; i++) { + GLint j = IROUND((GLfloat) rgba[i][ACOMP] * scale); + rgba[i][ACOMP] = lut[j]; + } + } + break; + case GL_LUMINANCE_ALPHA: + /* replace RGBA with LLLA */ + if (table->Size == 256) { + for (i = 0; i < n; i++) { + GLubyte l = lut[rgba[i][RCOMP] * 2 + 0]; + GLubyte a = lut[rgba[i][ACOMP] * 2 + 1];; + rgba[i][RCOMP] = + rgba[i][GCOMP] = + rgba[i][BCOMP] = l; + rgba[i][ACOMP] = a; + } + } + else { + for (i = 0; i < n; i++) { + GLint jL = IROUND((GLfloat) rgba[i][RCOMP] * scale); + GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale); + GLubyte luminance = lut[jL * 2 + 0]; + GLubyte alpha = lut[jA * 2 + 1]; + rgba[i][RCOMP] = + rgba[i][GCOMP] = + rgba[i][BCOMP] = luminance; + rgba[i][ACOMP] = alpha; + } + } + break; + case GL_RGB: + if (table->Size == 256) { + for (i = 0; i < n; i++) { + rgba[i][RCOMP] = lut[rgba[i][RCOMP] * 3 + 0]; + rgba[i][GCOMP] = lut[rgba[i][GCOMP] * 3 + 1]; + rgba[i][BCOMP] = lut[rgba[i][BCOMP] * 3 + 2]; + } + } + else { + for (i = 0; i < n; i++) { + GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale); + GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale); + GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale); + rgba[i][RCOMP] = lut[jR * 3 + 0]; + rgba[i][GCOMP] = lut[jG * 3 + 1]; + rgba[i][BCOMP] = lut[jB * 3 + 2]; + } + } + break; + case GL_RGBA: + if (table->Size == 256) { + for (i = 0; i < n; i++) { + rgba[i][RCOMP] = lut[rgba[i][RCOMP] * 4 + 0]; + rgba[i][GCOMP] = lut[rgba[i][GCOMP] * 4 + 1]; + rgba[i][BCOMP] = lut[rgba[i][BCOMP] * 4 + 2]; + rgba[i][ACOMP] = lut[rgba[i][ACOMP] * 4 + 3]; + } + } + else { + for (i = 0; i < n; i++) { + GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale); + GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale); + GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale); + GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale); + CLAMPED_FLOAT_TO_CHAN(rgba[i][RCOMP], lut[jR * 4 + 0]); + CLAMPED_FLOAT_TO_CHAN(rgba[i][GCOMP], lut[jG * 4 + 1]); + CLAMPED_FLOAT_TO_CHAN(rgba[i][BCOMP], lut[jB * 4 + 2]); + CLAMPED_FLOAT_TO_CHAN(rgba[i][ACOMP], lut[jA * 4 + 3]); + } + } + break; + default: + _mesa_problem(NULL, "Bad format in _mesa_lookup_rgba_chan"); + return; + } +} + + + +/* + * Map color indexes to float rgba values. + */ +void +_mesa_map_ci_to_rgba( const struct gl_context *ctx, GLuint n, + const GLuint index[], GLfloat rgba[][4] ) +{ + GLuint rmask = ctx->PixelMaps.ItoR.Size - 1; + GLuint gmask = ctx->PixelMaps.ItoG.Size - 1; + GLuint bmask = ctx->PixelMaps.ItoB.Size - 1; + GLuint amask = ctx->PixelMaps.ItoA.Size - 1; + const GLfloat *rMap = ctx->PixelMaps.ItoR.Map; + const GLfloat *gMap = ctx->PixelMaps.ItoG.Map; + const GLfloat *bMap = ctx->PixelMaps.ItoB.Map; + const GLfloat *aMap = ctx->PixelMaps.ItoA.Map; + GLuint i; + for (i=0;i<n;i++) { + rgba[i][RCOMP] = rMap[index[i] & rmask]; + rgba[i][GCOMP] = gMap[index[i] & gmask]; + rgba[i][BCOMP] = bMap[index[i] & bmask]; + rgba[i][ACOMP] = aMap[index[i] & amask]; + } +} + + +/** + * Map ubyte color indexes to ubyte/RGBA values. + */ +void +_mesa_map_ci8_to_rgba8(const struct gl_context *ctx, + GLuint n, const GLubyte index[], + GLubyte rgba[][4]) +{ + GLuint rmask = ctx->PixelMaps.ItoR.Size - 1; + GLuint gmask = ctx->PixelMaps.ItoG.Size - 1; + GLuint bmask = ctx->PixelMaps.ItoB.Size - 1; + GLuint amask = ctx->PixelMaps.ItoA.Size - 1; + const GLubyte *rMap = ctx->PixelMaps.ItoR.Map8; + const GLubyte *gMap = ctx->PixelMaps.ItoG.Map8; + const GLubyte *bMap = ctx->PixelMaps.ItoB.Map8; + const GLubyte *aMap = ctx->PixelMaps.ItoA.Map8; + GLuint i; + for (i=0;i<n;i++) { + rgba[i][RCOMP] = rMap[index[i] & rmask]; + rgba[i][GCOMP] = gMap[index[i] & gmask]; + rgba[i][BCOMP] = bMap[index[i] & bmask]; + rgba[i][ACOMP] = aMap[index[i] & amask]; + } +} + + +void +_mesa_scale_and_bias_depth(const struct gl_context *ctx, GLuint n, + GLfloat depthValues[]) +{ + const GLfloat scale = ctx->Pixel.DepthScale; + const GLfloat bias = ctx->Pixel.DepthBias; + GLuint i; + for (i = 0; i < n; i++) { + GLfloat d = depthValues[i] * scale + bias; + depthValues[i] = CLAMP(d, 0.0F, 1.0F); + } +} + + +void +_mesa_scale_and_bias_depth_uint(const struct gl_context *ctx, GLuint n, + GLuint depthValues[]) +{ + const GLdouble max = (double) 0xffffffff; + const GLdouble scale = ctx->Pixel.DepthScale; + const GLdouble bias = ctx->Pixel.DepthBias * max; + GLuint i; + for (i = 0; i < n; i++) { + GLdouble d = (GLdouble) depthValues[i] * scale + bias; + d = CLAMP(d, 0.0, max); + depthValues[i] = (GLuint) d; + } +} + +/** + * Apply various pixel transfer operations to an array of RGBA pixels + * as indicated by the transferOps bitmask + */ +void +_mesa_apply_rgba_transfer_ops(struct gl_context *ctx, GLbitfield transferOps, + GLuint n, GLfloat rgba[][4]) +{ + /* scale & bias */ + if (transferOps & IMAGE_SCALE_BIAS_BIT) { + _mesa_scale_and_bias_rgba(n, rgba, + ctx->Pixel.RedScale, ctx->Pixel.GreenScale, + ctx->Pixel.BlueScale, ctx->Pixel.AlphaScale, + ctx->Pixel.RedBias, ctx->Pixel.GreenBias, + ctx->Pixel.BlueBias, ctx->Pixel.AlphaBias); + } + /* color map lookup */ + if (transferOps & IMAGE_MAP_COLOR_BIT) { + _mesa_map_rgba( ctx, n, rgba ); + } + + /* clamping to [0,1] */ + if (transferOps & IMAGE_CLAMP_BIT) { + GLuint i; + for (i = 0; i < n; i++) { + rgba[i][RCOMP] = CLAMP(rgba[i][RCOMP], 0.0F, 1.0F); + rgba[i][GCOMP] = CLAMP(rgba[i][GCOMP], 0.0F, 1.0F); + rgba[i][BCOMP] = CLAMP(rgba[i][BCOMP], 0.0F, 1.0F); + rgba[i][ACOMP] = CLAMP(rgba[i][ACOMP], 0.0F, 1.0F); + } + } +} + + +/* + * Apply color index shift and offset to an array of pixels. + */ +void +_mesa_shift_and_offset_ci(const struct gl_context *ctx, + GLuint n, GLuint indexes[]) +{ + GLint shift = ctx->Pixel.IndexShift; + GLint offset = ctx->Pixel.IndexOffset; + GLuint i; + if (shift > 0) { + for (i=0;i<n;i++) { + indexes[i] = (indexes[i] << shift) + offset; + } + } + else if (shift < 0) { + shift = -shift; + for (i=0;i<n;i++) { + indexes[i] = (indexes[i] >> shift) + offset; + } + } + else { + for (i=0;i<n;i++) { + indexes[i] = indexes[i] + offset; + } + } +} + + + +/** + * Apply color index shift, offset and table lookup to an array + * of color indexes; + */ +void +_mesa_apply_ci_transfer_ops(const struct gl_context *ctx, + GLbitfield transferOps, + GLuint n, GLuint indexes[]) +{ + if (transferOps & IMAGE_SHIFT_OFFSET_BIT) { + _mesa_shift_and_offset_ci(ctx, n, indexes); + } + if (transferOps & IMAGE_MAP_COLOR_BIT) { + const GLuint mask = ctx->PixelMaps.ItoI.Size - 1; + GLuint i; + for (i = 0; i < n; i++) { + const GLuint j = indexes[i] & mask; + indexes[i] = IROUND(ctx->PixelMaps.ItoI.Map[j]); + } + } +} + + +/** + * Apply stencil index shift, offset and table lookup to an array + * of stencil values. + */ +void +_mesa_apply_stencil_transfer_ops(const struct gl_context *ctx, GLuint n, + GLstencil stencil[]) +{ + if (ctx->Pixel.IndexShift != 0 || ctx->Pixel.IndexOffset != 0) { + const GLint offset = ctx->Pixel.IndexOffset; + GLint shift = ctx->Pixel.IndexShift; + GLuint i; + if (shift > 0) { + for (i = 0; i < n; i++) { + stencil[i] = (stencil[i] << shift) + offset; + } + } + else if (shift < 0) { + shift = -shift; + for (i = 0; i < n; i++) { + stencil[i] = (stencil[i] >> shift) + offset; + } + } + else { + for (i = 0; i < n; i++) { + stencil[i] = stencil[i] + offset; + } + } + } + if (ctx->Pixel.MapStencilFlag) { + GLuint mask = ctx->PixelMaps.StoS.Size - 1; + GLuint i; + for (i = 0; i < n; i++) { + stencil[i] = (GLstencil)ctx->PixelMaps.StoS.Map[ stencil[i] & mask ]; + } + } +} diff --git a/src/mesa/main/pixeltransfer.h b/src/mesa/main/pixeltransfer.h new file mode 100644 index 0000000000..34f3e49ba7 --- /dev/null +++ b/src/mesa/main/pixeltransfer.h @@ -0,0 +1,90 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * Copyright (C) 2009-2010 VMware, Inc. 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 + * THE AUTHORS 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. + */ + + +#ifndef PIXELTRANSFER_H +#define PIXELTRANSFER_H + + +#include "mtypes.h" + + +extern void +_mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4], + GLfloat rScale, GLfloat gScale, + GLfloat bScale, GLfloat aScale, + GLfloat rBias, GLfloat gBias, + GLfloat bBias, GLfloat aBias); + +extern void +_mesa_map_rgba(const struct gl_context *ctx, GLuint n, GLfloat rgba[][4]); + +extern void +_mesa_lookup_rgba_float(const struct gl_color_table *table, + GLuint n, GLfloat rgba[][4]); + +extern void +_mesa_lookup_rgba_ubyte(const struct gl_color_table *table, + GLuint n, GLubyte rgba[][4]); + + +extern void +_mesa_map_ci_to_rgba(const struct gl_context *ctx, + GLuint n, const GLuint index[], GLfloat rgba[][4]); + + +extern void +_mesa_map_ci8_to_rgba8(const struct gl_context *ctx, + GLuint n, const GLubyte index[], + GLubyte rgba[][4]); + + +extern void +_mesa_scale_and_bias_depth(const struct gl_context *ctx, GLuint n, + GLfloat depthValues[]); + +extern void +_mesa_scale_and_bias_depth_uint(const struct gl_context *ctx, GLuint n, + GLuint depthValues[]); + +extern void +_mesa_apply_rgba_transfer_ops(struct gl_context *ctx, GLbitfield transferOps, + GLuint n, GLfloat rgba[][4]); + +extern void +_mesa_shift_and_offset_ci(const struct gl_context *ctx, + GLuint n, GLuint indexes[]); + +extern void +_mesa_apply_ci_transfer_ops(const struct gl_context *ctx, + GLbitfield transferOps, + GLuint n, GLuint indexes[]); + + +extern void +_mesa_apply_stencil_transfer_ops(const struct gl_context *ctx, GLuint n, + GLstencil stencil[]); + + +#endif diff --git a/src/mesa/main/points.h b/src/mesa/main/points.h index b222379b1b..306a8a572f 100644 --- a/src/mesa/main/points.h +++ b/src/mesa/main/points.h @@ -32,7 +32,9 @@ #define POINTS_H -#include "mtypes.h" +#include "glheader.h" + +struct gl_context; extern void GLAPIENTRY diff --git a/src/mesa/main/polygon.c b/src/mesa/main/polygon.c index 970020048d..9c213b9b4c 100644 --- a/src/mesa/main/polygon.c +++ b/src/mesa/main/polygon.c @@ -34,6 +34,7 @@ #include "context.h" #include "image.h" #include "enums.h" +#include "pack.h" #include "polygon.h" #include "mtypes.h" diff --git a/src/mesa/main/polygon.h b/src/mesa/main/polygon.h index ad0ac4cc3a..13f7c91ed0 100644 --- a/src/mesa/main/polygon.h +++ b/src/mesa/main/polygon.h @@ -32,8 +32,9 @@ #define POLYGON_H -#include "mtypes.h" +#include "glheader.h" +struct gl_context; extern void _mesa_polygon_stipple(struct gl_context *ctx, const GLubyte *pattern); diff --git a/src/mesa/main/rastpos.h b/src/mesa/main/rastpos.h index 9b508eaedf..d113906f41 100644 --- a/src/mesa/main/rastpos.h +++ b/src/mesa/main/rastpos.h @@ -32,8 +32,11 @@ #define RASTPOS_H -#include "main/mtypes.h" +#include "compiler.h" +#include "mfeatures.h" +struct _glapi_table; +struct gl_context; #if FEATURE_rastpos diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c index 0043c8adc4..a5612e34ec 100644 --- a/src/mesa/main/readpix.c +++ b/src/mesa/main/readpix.c @@ -28,6 +28,7 @@ #include "context.h" #include "readpix.h" #include "framebuffer.h" +#include "formats.h" #include "image.h" #include "state.h" @@ -78,6 +79,16 @@ _mesa_error_check_format_type(struct gl_context *ctx, GLenum format, GLenum type case GL_RGBA: case GL_BGRA: case GL_ABGR_EXT: + case GL_RED_INTEGER_EXT: + case GL_GREEN_INTEGER_EXT: + case GL_BLUE_INTEGER_EXT: + case GL_ALPHA_INTEGER_EXT: + case GL_RGB_INTEGER_EXT: + case GL_RGBA_INTEGER_EXT: + case GL_BGR_INTEGER_EXT: + case GL_BGRA_INTEGER_EXT: + case GL_LUMINANCE_INTEGER_EXT: + case GL_LUMINANCE_ALPHA_INTEGER_EXT: if (!drawing) { /* reading */ if (!_mesa_source_buffer_exists(ctx, GL_COLOR)) { @@ -175,6 +186,20 @@ _mesa_ReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, return; } + /* Check that the destination format and source buffer are both + * integer-valued or both non-integer-valued. + */ + if (ctx->Extensions.EXT_texture_integer && _mesa_is_color_format(format)) { + const struct gl_renderbuffer *rb = ctx->ReadBuffer->_ColorReadBuffer; + const GLboolean srcInteger = _mesa_is_format_integer_color(rb->Format); + const GLboolean dstInteger = _mesa_is_integer_format(format); + if (dstInteger != srcInteger) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glReadPixels(integer / non-integer format mismatch"); + return; + } + } + if (ctx->ReadBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) { _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION_EXT, "glReadPixels(incomplete framebuffer)" ); diff --git a/src/mesa/main/readpix.h b/src/mesa/main/readpix.h index 0753e619fe..fd25e703e0 100644 --- a/src/mesa/main/readpix.h +++ b/src/mesa/main/readpix.h @@ -27,8 +27,9 @@ #define READPIXELS_H -#include "main/mtypes.h" +#include "glheader.h" +struct gl_context; extern GLboolean _mesa_error_check_format_type(struct gl_context *ctx, GLenum format, GLenum type, diff --git a/src/mesa/main/remap.c b/src/mesa/main/remap.c index 2341f8488d..c89fba4530 100644 --- a/src/mesa/main/remap.c +++ b/src/mesa/main/remap.c @@ -44,10 +44,15 @@ #include "imports.h" #include "glapi/glapi.h" -#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) #define MAX_ENTRY_POINTS 16 -static const char *_mesa_function_pool; +#define need_MESA_remap_table +#include "main/remap_helper.h" + + +/* this is global for quick access */ +int driDispatchRemapTable[driDispatchRemapTable_size]; + /** * Return the spec string associated with the given function index. @@ -60,7 +65,10 @@ static const char *_mesa_function_pool; const char * _mesa_get_function_spec(GLint func_index) { - return _mesa_function_pool + func_index; + if (func_index < Elements(_mesa_function_pool)) + return _mesa_function_pool + func_index; + else + return NULL; } @@ -152,11 +160,31 @@ _mesa_map_function_array(const struct gl_function_remap *func_array) /** + * Map the functions which are already static. + * + * When a extension function are incorporated into the ABI, the + * extension suffix is usually stripped. Mapping such functions + * makes sure the alternative names are available. + * + * Note that functions mapped by _mesa_init_remap_table() are + * excluded. + */ +void +_mesa_map_static_functions(void) +{ + /* Remap static functions which have alternative names and are in the ABI. + * This is to be on the safe side. glapi should have defined those names. + */ + _mesa_map_function_array(MESA_alt_functions); +} + + +/** * Initialize the remap table. This is called in one_time_init(). * The remap table needs to be initialized before calling the * CALL/GET/SET macros defined in main/dispatch.h. */ -void +static void _mesa_do_init_remap_table(const char *pool, int size, const struct gl_function_pool_remap *remap) @@ -167,7 +195,6 @@ _mesa_do_init_remap_table(const char *pool, if (initialized) return; initialized = GL_TRUE; - _mesa_function_pool = pool; /* initialize the remap table */ for (i = 0; i < size; i++) { @@ -187,4 +214,13 @@ _mesa_do_init_remap_table(const char *pool, } +void +_mesa_init_remap_table(void) +{ + _mesa_do_init_remap_table(_mesa_function_pool, + driDispatchRemapTable_size, + MESA_remap_table_functions); +} + + #endif /* FEATURE_remap_table */ diff --git a/src/mesa/main/remap.h b/src/mesa/main/remap.h index a2a55f615d..5fee300529 100644 --- a/src/mesa/main/remap.h +++ b/src/mesa/main/remap.h @@ -60,25 +60,8 @@ extern void _mesa_map_static_functions(void); extern void -_mesa_map_static_functions_es1(void); - -extern void -_mesa_map_static_functions_es2(void); - -extern void -_mesa_do_init_remap_table(const char *pool, - int size, - const struct gl_function_pool_remap *remap); - -extern void _mesa_init_remap_table(void); -extern void -_mesa_init_remap_table_es1(void); - -extern void -_mesa_init_remap_table_es2(void); - #else /* FEATURE_remap_table */ static INLINE const char * @@ -105,37 +88,10 @@ _mesa_map_static_functions(void) static INLINE void -_mesa_map_static_functions_es1(void) -{ -} - -static INLINE void -_mesa_map_static_functions_es2(void) -{ -} - -static INLINE void -_mesa_do_init_remap_table(const char *pool, - int size, - const struct gl_function_pool_remap *remap) -{ -} - -static INLINE void _mesa_init_remap_table(void) { } -static INLINE void -_mesa_init_remap_table_es1(void) -{ -} - -static INLINE void -_mesa_init_remap_table_es2(void) -{ -} - #endif /* FEATURE_remap_table */ diff --git a/src/mesa/main/remap_helper.h b/src/mesa/main/remap_helper.h index 010c03459e..7368c76e7e 100644 --- a/src/mesa/main/remap_helper.h +++ b/src/mesa/main/remap_helper.h @@ -45,4428 +45,4691 @@ static const char _mesa_function_pool[] = "iff\0" "glMapGrid1f\0" "\0" - /* _mesa_function_pool[81]: RasterPos4i (offset 82) */ + /* _mesa_function_pool[81]: VertexAttribI2iEXT (will be remapped) */ + "iii\0" + "glVertexAttribI2iEXT\0" + "glVertexAttribI2i\0" + "\0" + /* _mesa_function_pool[125]: RasterPos4i (offset 82) */ "iiii\0" "glRasterPos4i\0" "\0" - /* _mesa_function_pool[101]: RasterPos4d (offset 78) */ + /* _mesa_function_pool[145]: RasterPos4d (offset 78) */ "dddd\0" "glRasterPos4d\0" "\0" - /* _mesa_function_pool[121]: NewList (dynamic) */ + /* _mesa_function_pool[165]: NewList (dynamic) */ "ii\0" "glNewList\0" "\0" - /* _mesa_function_pool[135]: RasterPos4f (offset 80) */ + /* _mesa_function_pool[179]: RasterPos4f (offset 80) */ "ffff\0" "glRasterPos4f\0" "\0" - /* _mesa_function_pool[155]: LoadIdentity (offset 290) */ + /* _mesa_function_pool[199]: LoadIdentity (offset 290) */ "\0" "glLoadIdentity\0" "\0" - /* _mesa_function_pool[172]: SampleCoverageARB (will be remapped) */ + /* _mesa_function_pool[216]: SampleCoverageARB (will be remapped) */ "fi\0" "glSampleCoverage\0" "glSampleCoverageARB\0" "\0" - /* _mesa_function_pool[213]: ConvolutionFilter1D (offset 348) */ + /* _mesa_function_pool[257]: ConvolutionFilter1D (offset 348) */ "iiiiip\0" "glConvolutionFilter1D\0" "glConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[268]: BeginQueryARB (will be remapped) */ + /* _mesa_function_pool[312]: BeginQueryARB (will be remapped) */ "ii\0" "glBeginQuery\0" "glBeginQueryARB\0" "\0" - /* _mesa_function_pool[301]: RasterPos3dv (offset 71) */ + /* _mesa_function_pool[345]: RasterPos3dv (offset 71) */ "p\0" "glRasterPos3dv\0" "\0" - /* _mesa_function_pool[319]: PointParameteriNV (will be remapped) */ + /* _mesa_function_pool[363]: PointParameteriNV (will be remapped) */ "ii\0" "glPointParameteri\0" "glPointParameteriNV\0" "\0" - /* _mesa_function_pool[361]: GetProgramiv (will be remapped) */ + /* _mesa_function_pool[405]: GetProgramiv (will be remapped) */ "iip\0" "glGetProgramiv\0" "\0" - /* _mesa_function_pool[381]: MultiTexCoord3sARB (offset 398) */ + /* _mesa_function_pool[425]: MultiTexCoord3sARB (offset 398) */ "iiii\0" "glMultiTexCoord3s\0" "glMultiTexCoord3sARB\0" "\0" - /* _mesa_function_pool[426]: SecondaryColor3iEXT (will be remapped) */ + /* _mesa_function_pool[470]: SecondaryColor3iEXT (will be remapped) */ "iii\0" "glSecondaryColor3i\0" "glSecondaryColor3iEXT\0" "\0" - /* _mesa_function_pool[472]: WindowPos3fMESA (will be remapped) */ + /* _mesa_function_pool[516]: WindowPos3fMESA (will be remapped) */ "fff\0" "glWindowPos3f\0" "glWindowPos3fARB\0" "glWindowPos3fMESA\0" "\0" - /* _mesa_function_pool[526]: TexCoord1iv (offset 99) */ + /* _mesa_function_pool[570]: TexCoord1iv (offset 99) */ "p\0" "glTexCoord1iv\0" "\0" - /* _mesa_function_pool[543]: TexCoord4sv (offset 125) */ + /* _mesa_function_pool[587]: TexCoord4sv (offset 125) */ "p\0" "glTexCoord4sv\0" "\0" - /* _mesa_function_pool[560]: RasterPos4s (offset 84) */ + /* _mesa_function_pool[604]: RasterPos4s (offset 84) */ "iiii\0" "glRasterPos4s\0" "\0" - /* _mesa_function_pool[580]: PixelTexGenParameterfvSGIS (will be remapped) */ + /* _mesa_function_pool[624]: PixelTexGenParameterfvSGIS (will be remapped) */ "ip\0" "glPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[613]: ActiveTextureARB (offset 374) */ + /* _mesa_function_pool[657]: ActiveTextureARB (offset 374) */ "i\0" "glActiveTexture\0" "glActiveTextureARB\0" "\0" - /* _mesa_function_pool[651]: BlitFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[695]: BlitFramebufferEXT (will be remapped) */ "iiiiiiiiii\0" "glBlitFramebuffer\0" "glBlitFramebufferEXT\0" "\0" - /* _mesa_function_pool[702]: TexCoord1f (offset 96) */ + /* _mesa_function_pool[746]: TexCoord1f (offset 96) */ "f\0" "glTexCoord1f\0" "\0" - /* _mesa_function_pool[718]: TexCoord1d (offset 94) */ + /* _mesa_function_pool[762]: TexCoord1d (offset 94) */ "d\0" "glTexCoord1d\0" "\0" - /* _mesa_function_pool[734]: VertexAttrib4ubvNV (will be remapped) */ + /* _mesa_function_pool[778]: VertexAttrib4ubvNV (will be remapped) */ "ip\0" "glVertexAttrib4ubvNV\0" "\0" - /* _mesa_function_pool[759]: TexCoord1i (offset 98) */ + /* _mesa_function_pool[803]: TexCoord1i (offset 98) */ "i\0" "glTexCoord1i\0" "\0" - /* _mesa_function_pool[775]: GetProgramNamedParameterdvNV (will be remapped) */ + /* _mesa_function_pool[819]: GetProgramNamedParameterdvNV (will be remapped) */ "iipp\0" "glGetProgramNamedParameterdvNV\0" "\0" - /* _mesa_function_pool[812]: Histogram (offset 367) */ + /* _mesa_function_pool[856]: Histogram (offset 367) */ "iiii\0" "glHistogram\0" "glHistogramEXT\0" "\0" - /* _mesa_function_pool[845]: TexCoord1s (offset 100) */ + /* _mesa_function_pool[889]: TexCoord1s (offset 100) */ "i\0" "glTexCoord1s\0" "\0" - /* _mesa_function_pool[861]: GetMapfv (offset 267) */ + /* _mesa_function_pool[905]: GetMapfv (offset 267) */ "iip\0" "glGetMapfv\0" "\0" - /* _mesa_function_pool[877]: EvalCoord1f (offset 230) */ + /* _mesa_function_pool[921]: EvalCoord1f (offset 230) */ "f\0" "glEvalCoord1f\0" "\0" - /* _mesa_function_pool[894]: TexImage4DSGIS (dynamic) */ + /* _mesa_function_pool[938]: FramebufferTexture (will be remapped) */ + "iiii\0" + "glFramebufferTexture\0" + "\0" + /* _mesa_function_pool[965]: VertexAttribI1ivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI1ivEXT\0" + "glVertexAttribI1iv\0" + "\0" + /* _mesa_function_pool[1010]: TexImage4DSGIS (dynamic) */ "iiiiiiiiiip\0" "glTexImage4DSGIS\0" "\0" - /* _mesa_function_pool[924]: PolygonStipple (offset 175) */ + /* _mesa_function_pool[1040]: PolygonStipple (offset 175) */ "p\0" "glPolygonStipple\0" "\0" - /* _mesa_function_pool[944]: WindowPos2dvMESA (will be remapped) */ + /* _mesa_function_pool[1060]: WindowPos2dvMESA (will be remapped) */ "p\0" "glWindowPos2dv\0" "glWindowPos2dvARB\0" "glWindowPos2dvMESA\0" "\0" - /* _mesa_function_pool[999]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1115]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1043]: BlendEquationSeparateEXT (will be remapped) */ + /* _mesa_function_pool[1159]: BlendEquationSeparateEXT (will be remapped) */ "ii\0" "glBlendEquationSeparate\0" "glBlendEquationSeparateEXT\0" "glBlendEquationSeparateATI\0" "\0" - /* _mesa_function_pool[1125]: ListParameterfSGIX (dynamic) */ + /* _mesa_function_pool[1241]: ListParameterfSGIX (dynamic) */ "iif\0" "glListParameterfSGIX\0" "\0" - /* _mesa_function_pool[1151]: SecondaryColor3bEXT (will be remapped) */ + /* _mesa_function_pool[1267]: SecondaryColor3bEXT (will be remapped) */ "iii\0" "glSecondaryColor3b\0" "glSecondaryColor3bEXT\0" "\0" - /* _mesa_function_pool[1197]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ + /* _mesa_function_pool[1313]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ "pppp\0" "glTexCoord4fColor4fNormal3fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[1243]: GetPixelMapfv (offset 271) */ + /* _mesa_function_pool[1359]: GetPixelMapfv (offset 271) */ "ip\0" "glGetPixelMapfv\0" "\0" - /* _mesa_function_pool[1263]: Color3uiv (offset 22) */ + /* _mesa_function_pool[1379]: Color3uiv (offset 22) */ "p\0" "glColor3uiv\0" "\0" - /* _mesa_function_pool[1278]: IsEnabled (offset 286) */ + /* _mesa_function_pool[1394]: IsEnabled (offset 286) */ "i\0" "glIsEnabled\0" "\0" - /* _mesa_function_pool[1293]: VertexAttrib4svNV (will be remapped) */ + /* _mesa_function_pool[1409]: VertexAttrib4svNV (will be remapped) */ "ip\0" "glVertexAttrib4svNV\0" "\0" - /* _mesa_function_pool[1317]: EvalCoord2fv (offset 235) */ + /* _mesa_function_pool[1433]: EvalCoord2fv (offset 235) */ "p\0" "glEvalCoord2fv\0" "\0" - /* _mesa_function_pool[1335]: GetBufferSubDataARB (will be remapped) */ + /* _mesa_function_pool[1451]: GetBufferSubDataARB (will be remapped) */ "iiip\0" "glGetBufferSubData\0" "glGetBufferSubDataARB\0" "\0" - /* _mesa_function_pool[1382]: BufferSubDataARB (will be remapped) */ + /* _mesa_function_pool[1498]: BufferSubDataARB (will be remapped) */ "iiip\0" "glBufferSubData\0" "glBufferSubDataARB\0" "\0" - /* _mesa_function_pool[1423]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1539]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1461]: AttachShader (will be remapped) */ + /* _mesa_function_pool[1577]: AttachShader (will be remapped) */ "ii\0" "glAttachShader\0" "\0" - /* _mesa_function_pool[1480]: VertexAttrib2fARB (will be remapped) */ + /* _mesa_function_pool[1596]: VertexAttrib2fARB (will be remapped) */ "iff\0" "glVertexAttrib2f\0" "glVertexAttrib2fARB\0" "\0" - /* _mesa_function_pool[1522]: GetDebugLogLengthMESA (dynamic) */ + /* _mesa_function_pool[1638]: GetDebugLogLengthMESA (dynamic) */ "iii\0" "glGetDebugLogLengthMESA\0" "\0" - /* _mesa_function_pool[1551]: GetMapiv (offset 268) */ + /* _mesa_function_pool[1667]: GetMapiv (offset 268) */ "iip\0" "glGetMapiv\0" "\0" - /* _mesa_function_pool[1567]: VertexAttrib3fARB (will be remapped) */ + /* _mesa_function_pool[1683]: VertexAttrib3fARB (will be remapped) */ "ifff\0" "glVertexAttrib3f\0" "glVertexAttrib3fARB\0" "\0" - /* _mesa_function_pool[1610]: Indexubv (offset 316) */ + /* _mesa_function_pool[1726]: Indexubv (offset 316) */ "p\0" "glIndexubv\0" "\0" - /* _mesa_function_pool[1624]: GetQueryivARB (will be remapped) */ + /* _mesa_function_pool[1740]: GetQueryivARB (will be remapped) */ "iip\0" "glGetQueryiv\0" "glGetQueryivARB\0" "\0" - /* _mesa_function_pool[1658]: TexImage3D (offset 371) */ + /* _mesa_function_pool[1774]: TexImage3D (offset 371) */ "iiiiiiiiip\0" "glTexImage3D\0" "glTexImage3DEXT\0" "\0" - /* _mesa_function_pool[1699]: ReplacementCodeuiVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1815]: BindFragDataLocationEXT (will be remapped) */ + "iip\0" + "glBindFragDataLocationEXT\0" + "glBindFragDataLocation\0" + "\0" + /* _mesa_function_pool[1869]: ReplacementCodeuiVertex3fvSUN (dynamic) */ "pp\0" "glReplacementCodeuiVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1735]: EdgeFlagPointer (offset 312) */ + /* _mesa_function_pool[1905]: EdgeFlagPointer (offset 312) */ "ip\0" "glEdgeFlagPointer\0" "\0" - /* _mesa_function_pool[1757]: Color3ubv (offset 20) */ + /* _mesa_function_pool[1927]: Color3ubv (offset 20) */ "p\0" "glColor3ubv\0" "\0" - /* _mesa_function_pool[1772]: GetQueryObjectivARB (will be remapped) */ + /* _mesa_function_pool[1942]: GetQueryObjectivARB (will be remapped) */ "iip\0" "glGetQueryObjectiv\0" "glGetQueryObjectivARB\0" "\0" - /* _mesa_function_pool[1818]: Vertex3dv (offset 135) */ + /* _mesa_function_pool[1988]: Vertex3dv (offset 135) */ "p\0" "glVertex3dv\0" "\0" - /* _mesa_function_pool[1833]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[2003]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1880]: CompressedTexSubImage2DARB (will be remapped) */ + /* _mesa_function_pool[2050]: CompressedTexSubImage2DARB (will be remapped) */ "iiiiiiiip\0" "glCompressedTexSubImage2D\0" "glCompressedTexSubImage2DARB\0" "\0" - /* _mesa_function_pool[1946]: CombinerOutputNV (will be remapped) */ + /* _mesa_function_pool[2116]: CombinerOutputNV (will be remapped) */ "iiiiiiiiii\0" "glCombinerOutputNV\0" "\0" - /* _mesa_function_pool[1977]: VertexAttribs3fvNV (will be remapped) */ + /* _mesa_function_pool[2147]: VertexAttribs3fvNV (will be remapped) */ "iip\0" "glVertexAttribs3fvNV\0" "\0" - /* _mesa_function_pool[2003]: Uniform2fARB (will be remapped) */ + /* _mesa_function_pool[2173]: Uniform2fARB (will be remapped) */ "iff\0" "glUniform2f\0" "glUniform2fARB\0" "\0" - /* _mesa_function_pool[2035]: LightModeliv (offset 166) */ + /* _mesa_function_pool[2205]: LightModeliv (offset 166) */ "ip\0" "glLightModeliv\0" "\0" - /* _mesa_function_pool[2054]: VertexAttrib1svARB (will be remapped) */ + /* _mesa_function_pool[2224]: VertexAttrib1svARB (will be remapped) */ "ip\0" "glVertexAttrib1sv\0" "glVertexAttrib1svARB\0" "\0" - /* _mesa_function_pool[2097]: VertexAttribs1dvNV (will be remapped) */ + /* _mesa_function_pool[2267]: VertexAttribs1dvNV (will be remapped) */ "iip\0" "glVertexAttribs1dvNV\0" "\0" - /* _mesa_function_pool[2123]: Uniform2ivARB (will be remapped) */ + /* _mesa_function_pool[2293]: Uniform2ivARB (will be remapped) */ "iip\0" "glUniform2iv\0" "glUniform2ivARB\0" "\0" - /* _mesa_function_pool[2157]: GetImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[2327]: GetImageTransformParameterfvHP (dynamic) */ "iip\0" "glGetImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[2195]: Normal3bv (offset 53) */ + /* _mesa_function_pool[2365]: Normal3bv (offset 53) */ "p\0" "glNormal3bv\0" "\0" - /* _mesa_function_pool[2210]: TexGeniv (offset 193) */ + /* _mesa_function_pool[2380]: TexGeniv (offset 193) */ "iip\0" "glTexGeniv\0" "\0" - /* _mesa_function_pool[2226]: WeightubvARB (dynamic) */ + /* _mesa_function_pool[2396]: WeightubvARB (dynamic) */ "ip\0" "glWeightubvARB\0" "\0" - /* _mesa_function_pool[2245]: VertexAttrib1fvNV (will be remapped) */ + /* _mesa_function_pool[2415]: VertexAttrib1fvNV (will be remapped) */ "ip\0" "glVertexAttrib1fvNV\0" "\0" - /* _mesa_function_pool[2269]: Vertex3iv (offset 139) */ + /* _mesa_function_pool[2439]: Vertex3iv (offset 139) */ "p\0" "glVertex3iv\0" "\0" - /* _mesa_function_pool[2284]: CopyConvolutionFilter1D (offset 354) */ + /* _mesa_function_pool[2454]: CopyConvolutionFilter1D (offset 354) */ "iiiii\0" "glCopyConvolutionFilter1D\0" "glCopyConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[2346]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[2516]: VertexAttribI1uiEXT (will be remapped) */ + "ii\0" + "glVertexAttribI1uiEXT\0" + "glVertexAttribI1ui\0" + "\0" + /* _mesa_function_pool[2561]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ "iffffff\0" "glReplacementCodeuiNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[2394]: DeleteSync (will be remapped) */ + /* _mesa_function_pool[2609]: DeleteSync (will be remapped) */ "i\0" "glDeleteSync\0" "\0" - /* _mesa_function_pool[2410]: FragmentMaterialfvSGIX (dynamic) */ + /* _mesa_function_pool[2625]: FragmentMaterialfvSGIX (dynamic) */ "iip\0" "glFragmentMaterialfvSGIX\0" "\0" - /* _mesa_function_pool[2440]: BlendColor (offset 336) */ + /* _mesa_function_pool[2655]: BlendColor (offset 336) */ "ffff\0" "glBlendColor\0" "glBlendColorEXT\0" "\0" - /* _mesa_function_pool[2475]: UniformMatrix4fvARB (will be remapped) */ + /* _mesa_function_pool[2690]: UniformMatrix4fvARB (will be remapped) */ "iiip\0" "glUniformMatrix4fv\0" "glUniformMatrix4fvARB\0" "\0" - /* _mesa_function_pool[2522]: DeleteVertexArraysAPPLE (will be remapped) */ + /* _mesa_function_pool[2737]: DeleteVertexArraysAPPLE (will be remapped) */ "ip\0" "glDeleteVertexArrays\0" "glDeleteVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[2573]: ReadInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[2788]: TexBuffer (will be remapped) */ + "iii\0" + "glTexBuffer\0" + "\0" + /* _mesa_function_pool[2805]: ReadInstrumentsSGIX (dynamic) */ "i\0" "glReadInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[2598]: CallLists (offset 3) */ + /* _mesa_function_pool[2830]: CallLists (offset 3) */ "iip\0" "glCallLists\0" "\0" - /* _mesa_function_pool[2615]: UniformMatrix2x4fv (will be remapped) */ + /* _mesa_function_pool[2847]: UniformMatrix2x4fv (will be remapped) */ "iiip\0" "glUniformMatrix2x4fv\0" "\0" - /* _mesa_function_pool[2642]: Color4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[2874]: Color4ubVertex3fvSUN (dynamic) */ "pp\0" "glColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[2669]: Normal3iv (offset 59) */ + /* _mesa_function_pool[2901]: Normal3iv (offset 59) */ "p\0" "glNormal3iv\0" "\0" - /* _mesa_function_pool[2684]: PassThrough (offset 199) */ + /* _mesa_function_pool[2916]: PassThrough (offset 199) */ "f\0" "glPassThrough\0" "\0" - /* _mesa_function_pool[2701]: FramebufferTextureLayerEXT (will be remapped) */ + /* _mesa_function_pool[2933]: GetVertexAttribIivEXT (will be remapped) */ + "iip\0" + "glGetVertexAttribIivEXT\0" + "glGetVertexAttribIiv\0" + "\0" + /* _mesa_function_pool[2983]: TexParameterIivEXT (will be remapped) */ + "iip\0" + "glTexParameterIivEXT\0" + "glTexParameterIiv\0" + "\0" + /* _mesa_function_pool[3027]: FramebufferTextureLayerEXT (will be remapped) */ "iiiii\0" "glFramebufferTextureLayer\0" "glFramebufferTextureLayerEXT\0" "\0" - /* _mesa_function_pool[2763]: GetListParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[3089]: GetListParameterfvSGIX (dynamic) */ "iip\0" "glGetListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[2793]: Viewport (offset 305) */ + /* _mesa_function_pool[3119]: Viewport (offset 305) */ "iiii\0" "glViewport\0" "\0" - /* _mesa_function_pool[2810]: VertexAttrib4NusvARB (will be remapped) */ + /* _mesa_function_pool[3136]: VertexAttrib4NusvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nusv\0" "glVertexAttrib4NusvARB\0" "\0" - /* _mesa_function_pool[2857]: WindowPos4svMESA (will be remapped) */ + /* _mesa_function_pool[3183]: WindowPos4svMESA (will be remapped) */ "p\0" "glWindowPos4svMESA\0" "\0" - /* _mesa_function_pool[2879]: CreateProgramObjectARB (will be remapped) */ + /* _mesa_function_pool[3205]: CreateProgramObjectARB (will be remapped) */ "\0" "glCreateProgramObjectARB\0" "\0" - /* _mesa_function_pool[2906]: DeleteTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[3232]: DeleteTransformFeedbacks (will be remapped) */ "ip\0" "glDeleteTransformFeedbacks\0" "\0" - /* _mesa_function_pool[2937]: UniformMatrix4x3fv (will be remapped) */ + /* _mesa_function_pool[3263]: UniformMatrix4x3fv (will be remapped) */ "iiip\0" "glUniformMatrix4x3fv\0" "\0" - /* _mesa_function_pool[2964]: PrioritizeTextures (offset 331) */ + /* _mesa_function_pool[3290]: PrioritizeTextures (offset 331) */ "ipp\0" "glPrioritizeTextures\0" "glPrioritizeTexturesEXT\0" "\0" - /* _mesa_function_pool[3014]: AsyncMarkerSGIX (dynamic) */ + /* _mesa_function_pool[3340]: VertexAttribI3uiEXT (will be remapped) */ + "iiii\0" + "glVertexAttribI3uiEXT\0" + "glVertexAttribI3ui\0" + "\0" + /* _mesa_function_pool[3387]: AsyncMarkerSGIX (dynamic) */ "i\0" "glAsyncMarkerSGIX\0" "\0" - /* _mesa_function_pool[3035]: GlobalAlphaFactorubSUN (dynamic) */ + /* _mesa_function_pool[3408]: GlobalAlphaFactorubSUN (dynamic) */ "i\0" "glGlobalAlphaFactorubSUN\0" "\0" - /* _mesa_function_pool[3063]: ClearDebugLogMESA (dynamic) */ + /* _mesa_function_pool[3436]: ClearColorIuiEXT (will be remapped) */ + "iiii\0" + "glClearColorIuiEXT\0" + "\0" + /* _mesa_function_pool[3461]: ClearDebugLogMESA (dynamic) */ "iii\0" "glClearDebugLogMESA\0" "\0" - /* _mesa_function_pool[3088]: ResetHistogram (offset 369) */ + /* _mesa_function_pool[3486]: Uniform4uiEXT (will be remapped) */ + "iiiii\0" + "glUniform4uiEXT\0" + "glUniform4ui\0" + "\0" + /* _mesa_function_pool[3522]: ResetHistogram (offset 369) */ "i\0" "glResetHistogram\0" "glResetHistogramEXT\0" "\0" - /* _mesa_function_pool[3128]: GetProgramNamedParameterfvNV (will be remapped) */ + /* _mesa_function_pool[3562]: GetProgramNamedParameterfvNV (will be remapped) */ "iipp\0" "glGetProgramNamedParameterfvNV\0" "\0" - /* _mesa_function_pool[3165]: PointParameterfEXT (will be remapped) */ + /* _mesa_function_pool[3599]: PointParameterfEXT (will be remapped) */ "if\0" "glPointParameterf\0" "glPointParameterfARB\0" "glPointParameterfEXT\0" "glPointParameterfSGIS\0" "\0" - /* _mesa_function_pool[3251]: LoadIdentityDeformationMapSGIX (dynamic) */ + /* _mesa_function_pool[3685]: LoadIdentityDeformationMapSGIX (dynamic) */ "i\0" "glLoadIdentityDeformationMapSGIX\0" "\0" - /* _mesa_function_pool[3287]: GenFencesNV (will be remapped) */ + /* _mesa_function_pool[3721]: GenFencesNV (will be remapped) */ "ip\0" "glGenFencesNV\0" "\0" - /* _mesa_function_pool[3305]: ImageTransformParameterfHP (dynamic) */ + /* _mesa_function_pool[3739]: ImageTransformParameterfHP (dynamic) */ "iif\0" "glImageTransformParameterfHP\0" "\0" - /* _mesa_function_pool[3339]: MatrixIndexusvARB (dynamic) */ + /* _mesa_function_pool[3773]: MatrixIndexusvARB (dynamic) */ "ip\0" "glMatrixIndexusvARB\0" "\0" - /* _mesa_function_pool[3363]: DrawElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[3797]: DrawElementsBaseVertex (will be remapped) */ "iiipi\0" "glDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[3395]: DisableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[3829]: DisableVertexAttribArrayARB (will be remapped) */ "i\0" "glDisableVertexAttribArray\0" "glDisableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[3455]: TexCoord2sv (offset 109) */ + /* _mesa_function_pool[3889]: TexCoord2sv (offset 109) */ "p\0" "glTexCoord2sv\0" "\0" - /* _mesa_function_pool[3472]: Vertex4dv (offset 143) */ + /* _mesa_function_pool[3906]: Vertex4dv (offset 143) */ "p\0" "glVertex4dv\0" "\0" - /* _mesa_function_pool[3487]: StencilMaskSeparate (will be remapped) */ + /* _mesa_function_pool[3921]: StencilMaskSeparate (will be remapped) */ "ii\0" "glStencilMaskSeparate\0" "\0" - /* _mesa_function_pool[3513]: ProgramLocalParameter4dARB (will be remapped) */ + /* _mesa_function_pool[3947]: ProgramLocalParameter4dARB (will be remapped) */ "iidddd\0" "glProgramLocalParameter4dARB\0" "\0" - /* _mesa_function_pool[3550]: CompressedTexImage3DARB (will be remapped) */ + /* _mesa_function_pool[3984]: CompressedTexImage3DARB (will be remapped) */ "iiiiiiiip\0" "glCompressedTexImage3D\0" "glCompressedTexImage3DARB\0" "\0" - /* _mesa_function_pool[3610]: Color3sv (offset 18) */ + /* _mesa_function_pool[4044]: Color3sv (offset 18) */ "p\0" "glColor3sv\0" "\0" - /* _mesa_function_pool[3624]: GetConvolutionParameteriv (offset 358) */ + /* _mesa_function_pool[4058]: GetConvolutionParameteriv (offset 358) */ "iip\0" "glGetConvolutionParameteriv\0" "glGetConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[3688]: VertexAttrib1fARB (will be remapped) */ + /* _mesa_function_pool[4122]: VertexAttrib1fARB (will be remapped) */ "if\0" "glVertexAttrib1f\0" "glVertexAttrib1fARB\0" "\0" - /* _mesa_function_pool[3729]: Vertex2dv (offset 127) */ + /* _mesa_function_pool[4163]: Vertex2dv (offset 127) */ "p\0" "glVertex2dv\0" "\0" - /* _mesa_function_pool[3744]: TestFenceNV (will be remapped) */ + /* _mesa_function_pool[4178]: TestFenceNV (will be remapped) */ "i\0" "glTestFenceNV\0" "\0" - /* _mesa_function_pool[3761]: MultiTexCoord1fvARB (offset 379) */ + /* _mesa_function_pool[4195]: GetVertexAttribIuivEXT (will be remapped) */ + "iip\0" + "glGetVertexAttribIuivEXT\0" + "glGetVertexAttribIuiv\0" + "\0" + /* _mesa_function_pool[4247]: MultiTexCoord1fvARB (offset 379) */ "ip\0" "glMultiTexCoord1fv\0" "glMultiTexCoord1fvARB\0" "\0" - /* _mesa_function_pool[3806]: TexCoord3iv (offset 115) */ + /* _mesa_function_pool[4292]: TexCoord3iv (offset 115) */ "p\0" "glTexCoord3iv\0" "\0" - /* _mesa_function_pool[3823]: ColorFragmentOp2ATI (will be remapped) */ + /* _mesa_function_pool[4309]: Uniform2uivEXT (will be remapped) */ + "iip\0" + "glUniform2uivEXT\0" + "glUniform2uiv\0" + "\0" + /* _mesa_function_pool[4345]: ColorFragmentOp2ATI (will be remapped) */ "iiiiiiiiii\0" "glColorFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[3857]: SecondaryColorPointerListIBM (dynamic) */ + /* _mesa_function_pool[4379]: SecondaryColorPointerListIBM (dynamic) */ "iiipi\0" "glSecondaryColorPointerListIBM\0" "\0" - /* _mesa_function_pool[3895]: GetPixelTexGenParameterivSGIS (will be remapped) */ + /* _mesa_function_pool[4417]: GetPixelTexGenParameterivSGIS (will be remapped) */ "ip\0" "glGetPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[3931]: Color3fv (offset 14) */ + /* _mesa_function_pool[4453]: Color3fv (offset 14) */ "p\0" "glColor3fv\0" "\0" - /* _mesa_function_pool[3945]: VertexAttrib4fNV (will be remapped) */ + /* _mesa_function_pool[4467]: VertexAttrib4fNV (will be remapped) */ "iffff\0" "glVertexAttrib4fNV\0" "\0" - /* _mesa_function_pool[3971]: ReplacementCodeubSUN (dynamic) */ + /* _mesa_function_pool[4493]: ReplacementCodeubSUN (dynamic) */ "i\0" "glReplacementCodeubSUN\0" "\0" - /* _mesa_function_pool[3997]: FinishAsyncSGIX (dynamic) */ + /* _mesa_function_pool[4519]: FinishAsyncSGIX (dynamic) */ "p\0" "glFinishAsyncSGIX\0" "\0" - /* _mesa_function_pool[4018]: GetDebugLogMESA (dynamic) */ + /* _mesa_function_pool[4540]: GetDebugLogMESA (dynamic) */ "iiiipp\0" "glGetDebugLogMESA\0" "\0" - /* _mesa_function_pool[4044]: FogCoorddEXT (will be remapped) */ + /* _mesa_function_pool[4566]: FogCoorddEXT (will be remapped) */ "d\0" "glFogCoordd\0" "glFogCoorddEXT\0" "\0" - /* _mesa_function_pool[4074]: BeginConditionalRenderNV (will be remapped) */ + /* _mesa_function_pool[4596]: BeginConditionalRenderNV (will be remapped) */ "ii\0" "glBeginConditionalRenderNV\0" + "glBeginConditionalRender\0" "\0" - /* _mesa_function_pool[4105]: Color4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[4652]: Color4ubVertex3fSUN (dynamic) */ "iiiifff\0" "glColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[4136]: FogCoordfEXT (will be remapped) */ + /* _mesa_function_pool[4683]: FogCoordfEXT (will be remapped) */ "f\0" "glFogCoordf\0" "glFogCoordfEXT\0" "\0" - /* _mesa_function_pool[4166]: PointSize (offset 173) */ + /* _mesa_function_pool[4713]: PointSize (offset 173) */ "f\0" "glPointSize\0" "\0" - /* _mesa_function_pool[4181]: TexCoord2fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[4728]: VertexAttribI2uivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI2uivEXT\0" + "glVertexAttribI2uiv\0" + "\0" + /* _mesa_function_pool[4775]: TexCoord2fVertex3fSUN (dynamic) */ "fffff\0" "glTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[4212]: PopName (offset 200) */ + /* _mesa_function_pool[4806]: PopName (offset 200) */ "\0" "glPopName\0" "\0" - /* _mesa_function_pool[4224]: GlobalAlphaFactoriSUN (dynamic) */ + /* _mesa_function_pool[4818]: GlobalAlphaFactoriSUN (dynamic) */ "i\0" "glGlobalAlphaFactoriSUN\0" "\0" - /* _mesa_function_pool[4251]: VertexAttrib2dNV (will be remapped) */ + /* _mesa_function_pool[4845]: VertexAttrib2dNV (will be remapped) */ "idd\0" "glVertexAttrib2dNV\0" "\0" - /* _mesa_function_pool[4275]: GetProgramInfoLog (will be remapped) */ + /* _mesa_function_pool[4869]: GetProgramInfoLog (will be remapped) */ "iipp\0" "glGetProgramInfoLog\0" "\0" - /* _mesa_function_pool[4301]: VertexAttrib4NbvARB (will be remapped) */ + /* _mesa_function_pool[4895]: VertexAttrib4NbvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nbv\0" "glVertexAttrib4NbvARB\0" "\0" - /* _mesa_function_pool[4346]: GetActiveAttribARB (will be remapped) */ + /* _mesa_function_pool[4940]: GetActiveAttribARB (will be remapped) */ "iiipppp\0" "glGetActiveAttrib\0" "glGetActiveAttribARB\0" "\0" - /* _mesa_function_pool[4394]: Vertex4sv (offset 149) */ + /* _mesa_function_pool[4988]: Vertex4sv (offset 149) */ "p\0" "glVertex4sv\0" "\0" - /* _mesa_function_pool[4409]: VertexAttrib4ubNV (will be remapped) */ + /* _mesa_function_pool[5003]: VertexAttrib4ubNV (will be remapped) */ "iiiii\0" "glVertexAttrib4ubNV\0" "\0" - /* _mesa_function_pool[4436]: TextureRangeAPPLE (will be remapped) */ + /* _mesa_function_pool[5030]: ClampColor (will be remapped) */ + "ii\0" + "glClampColor\0" + "\0" + /* _mesa_function_pool[5047]: TextureRangeAPPLE (will be remapped) */ "iip\0" "glTextureRangeAPPLE\0" "\0" - /* _mesa_function_pool[4461]: GetTexEnvfv (offset 276) */ + /* _mesa_function_pool[5072]: GetTexEnvfv (offset 276) */ "iip\0" "glGetTexEnvfv\0" "\0" - /* _mesa_function_pool[4480]: BindTransformFeedback (will be remapped) */ + /* _mesa_function_pool[5091]: BindTransformFeedback (will be remapped) */ "ii\0" "glBindTransformFeedback\0" "\0" - /* _mesa_function_pool[4508]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[5119]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ "ffffffffffff\0" "glTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[4561]: Indexub (offset 315) */ + /* _mesa_function_pool[5172]: Indexub (offset 315) */ "i\0" "glIndexub\0" "\0" - /* _mesa_function_pool[4574]: TexEnvi (offset 186) */ + /* _mesa_function_pool[5185]: TexEnvi (offset 186) */ "iii\0" "glTexEnvi\0" "\0" - /* _mesa_function_pool[4589]: GetClipPlane (offset 259) */ + /* _mesa_function_pool[5200]: GetClipPlane (offset 259) */ "ip\0" "glGetClipPlane\0" "\0" - /* _mesa_function_pool[4608]: CombinerParameterfvNV (will be remapped) */ + /* _mesa_function_pool[5219]: CombinerParameterfvNV (will be remapped) */ "ip\0" "glCombinerParameterfvNV\0" "\0" - /* _mesa_function_pool[4636]: VertexAttribs3dvNV (will be remapped) */ + /* _mesa_function_pool[5247]: VertexAttribs3dvNV (will be remapped) */ "iip\0" "glVertexAttribs3dvNV\0" "\0" - /* _mesa_function_pool[4662]: VertexAttribs4fvNV (will be remapped) */ + /* _mesa_function_pool[5273]: VertexAttribI2uiEXT (will be remapped) */ + "iii\0" + "glVertexAttribI2uiEXT\0" + "glVertexAttribI2ui\0" + "\0" + /* _mesa_function_pool[5319]: VertexAttribs4fvNV (will be remapped) */ "iip\0" "glVertexAttribs4fvNV\0" "\0" - /* _mesa_function_pool[4688]: VertexArrayRangeNV (will be remapped) */ + /* _mesa_function_pool[5345]: VertexArrayRangeNV (will be remapped) */ "ip\0" "glVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[4713]: FragmentLightiSGIX (dynamic) */ + /* _mesa_function_pool[5370]: FragmentLightiSGIX (dynamic) */ "iii\0" "glFragmentLightiSGIX\0" "\0" - /* _mesa_function_pool[4739]: PolygonOffsetEXT (will be remapped) */ + /* _mesa_function_pool[5396]: PolygonOffsetEXT (will be remapped) */ "ff\0" "glPolygonOffsetEXT\0" "\0" - /* _mesa_function_pool[4762]: PollAsyncSGIX (dynamic) */ + /* _mesa_function_pool[5419]: VertexAttribI4uivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI4uivEXT\0" + "glVertexAttribI4uiv\0" + "\0" + /* _mesa_function_pool[5466]: PollAsyncSGIX (dynamic) */ "p\0" "glPollAsyncSGIX\0" "\0" - /* _mesa_function_pool[4781]: DeleteFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[5485]: DeleteFragmentShaderATI (will be remapped) */ "i\0" "glDeleteFragmentShaderATI\0" "\0" - /* _mesa_function_pool[4810]: Scaled (offset 301) */ + /* _mesa_function_pool[5514]: Scaled (offset 301) */ "ddd\0" "glScaled\0" "\0" - /* _mesa_function_pool[4824]: ResumeTransformFeedback (will be remapped) */ + /* _mesa_function_pool[5528]: ResumeTransformFeedback (will be remapped) */ "\0" "glResumeTransformFeedback\0" "\0" - /* _mesa_function_pool[4852]: Scalef (offset 302) */ + /* _mesa_function_pool[5556]: Scalef (offset 302) */ "fff\0" "glScalef\0" "\0" - /* _mesa_function_pool[4866]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[5570]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[4904]: MultTransposeMatrixdARB (will be remapped) */ + /* _mesa_function_pool[5608]: MultTransposeMatrixdARB (will be remapped) */ "p\0" "glMultTransposeMatrixd\0" "glMultTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[4956]: ColorMaskIndexedEXT (will be remapped) */ + /* _mesa_function_pool[5660]: ColorMaskIndexedEXT (will be remapped) */ "iiiii\0" "glColorMaskIndexedEXT\0" + "glColorMaski\0" "\0" - /* _mesa_function_pool[4985]: ObjectUnpurgeableAPPLE (will be remapped) */ + /* _mesa_function_pool[5702]: ObjectUnpurgeableAPPLE (will be remapped) */ "iii\0" "glObjectUnpurgeableAPPLE\0" "\0" - /* _mesa_function_pool[5015]: AlphaFunc (offset 240) */ + /* _mesa_function_pool[5732]: AlphaFunc (offset 240) */ "if\0" "glAlphaFunc\0" "\0" - /* _mesa_function_pool[5031]: WindowPos2svMESA (will be remapped) */ + /* _mesa_function_pool[5748]: WindowPos2svMESA (will be remapped) */ "p\0" "glWindowPos2sv\0" "glWindowPos2svARB\0" "glWindowPos2svMESA\0" "\0" - /* _mesa_function_pool[5086]: EdgeFlag (offset 41) */ + /* _mesa_function_pool[5803]: EdgeFlag (offset 41) */ "i\0" "glEdgeFlag\0" "\0" - /* _mesa_function_pool[5100]: TexCoord2iv (offset 107) */ + /* _mesa_function_pool[5817]: TexCoord2iv (offset 107) */ "p\0" "glTexCoord2iv\0" "\0" - /* _mesa_function_pool[5117]: CompressedTexImage1DARB (will be remapped) */ + /* _mesa_function_pool[5834]: CompressedTexImage1DARB (will be remapped) */ "iiiiiip\0" "glCompressedTexImage1D\0" "glCompressedTexImage1DARB\0" "\0" - /* _mesa_function_pool[5175]: Rotated (offset 299) */ + /* _mesa_function_pool[5892]: Rotated (offset 299) */ "dddd\0" "glRotated\0" "\0" - /* _mesa_function_pool[5191]: VertexAttrib2sNV (will be remapped) */ + /* _mesa_function_pool[5908]: GetTexParameterIuivEXT (will be remapped) */ + "iip\0" + "glGetTexParameterIuivEXT\0" + "glGetTexParameterIuiv\0" + "\0" + /* _mesa_function_pool[5960]: VertexAttrib2sNV (will be remapped) */ "iii\0" "glVertexAttrib2sNV\0" "\0" - /* _mesa_function_pool[5215]: ReadPixels (offset 256) */ + /* _mesa_function_pool[5984]: ReadPixels (offset 256) */ "iiiiiip\0" "glReadPixels\0" "\0" - /* _mesa_function_pool[5237]: EdgeFlagv (offset 42) */ + /* _mesa_function_pool[6006]: EdgeFlagv (offset 42) */ "p\0" "glEdgeFlagv\0" "\0" - /* _mesa_function_pool[5252]: NormalPointerListIBM (dynamic) */ + /* _mesa_function_pool[6021]: NormalPointerListIBM (dynamic) */ "iipi\0" "glNormalPointerListIBM\0" "\0" - /* _mesa_function_pool[5281]: IndexPointerEXT (will be remapped) */ + /* _mesa_function_pool[6050]: IndexPointerEXT (will be remapped) */ "iiip\0" "glIndexPointerEXT\0" "\0" - /* _mesa_function_pool[5305]: Color4iv (offset 32) */ + /* _mesa_function_pool[6074]: Color4iv (offset 32) */ "p\0" "glColor4iv\0" "\0" - /* _mesa_function_pool[5319]: TexParameterf (offset 178) */ + /* _mesa_function_pool[6088]: TexParameterf (offset 178) */ "iif\0" "glTexParameterf\0" "\0" - /* _mesa_function_pool[5340]: TexParameteri (offset 180) */ + /* _mesa_function_pool[6109]: TexParameteri (offset 180) */ "iii\0" "glTexParameteri\0" "\0" - /* _mesa_function_pool[5361]: NormalPointerEXT (will be remapped) */ + /* _mesa_function_pool[6130]: NormalPointerEXT (will be remapped) */ "iiip\0" "glNormalPointerEXT\0" "\0" - /* _mesa_function_pool[5386]: MultiTexCoord3dARB (offset 392) */ + /* _mesa_function_pool[6155]: MultiTexCoord3dARB (offset 392) */ "iddd\0" "glMultiTexCoord3d\0" "glMultiTexCoord3dARB\0" "\0" - /* _mesa_function_pool[5431]: MultiTexCoord2iARB (offset 388) */ + /* _mesa_function_pool[6200]: MultiTexCoord2iARB (offset 388) */ "iii\0" "glMultiTexCoord2i\0" "glMultiTexCoord2iARB\0" "\0" - /* _mesa_function_pool[5475]: DrawPixels (offset 257) */ + /* _mesa_function_pool[6244]: DrawPixels (offset 257) */ "iiiip\0" "glDrawPixels\0" "\0" - /* _mesa_function_pool[5495]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[6264]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ "iffffffff\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[5555]: MultiTexCoord2svARB (offset 391) */ + /* _mesa_function_pool[6324]: MultiTexCoord2svARB (offset 391) */ "ip\0" "glMultiTexCoord2sv\0" "glMultiTexCoord2svARB\0" "\0" - /* _mesa_function_pool[5600]: ReplacementCodeubvSUN (dynamic) */ + /* _mesa_function_pool[6369]: ReplacementCodeubvSUN (dynamic) */ "p\0" "glReplacementCodeubvSUN\0" "\0" - /* _mesa_function_pool[5627]: Uniform3iARB (will be remapped) */ + /* _mesa_function_pool[6396]: Uniform3iARB (will be remapped) */ "iiii\0" "glUniform3i\0" "glUniform3iARB\0" "\0" - /* _mesa_function_pool[5660]: DrawTransformFeedback (will be remapped) */ + /* _mesa_function_pool[6429]: DrawTransformFeedback (will be remapped) */ "ii\0" "glDrawTransformFeedback\0" "\0" - /* _mesa_function_pool[5688]: GetFragmentMaterialfvSGIX (dynamic) */ - "iip\0" - "glGetFragmentMaterialfvSGIX\0" + /* _mesa_function_pool[6457]: DrawElementsInstancedARB (will be remapped) */ + "iiipi\0" + "glDrawElementsInstancedARB\0" + "glDrawElementsInstancedEXT\0" + "glDrawElementsInstanced\0" "\0" - /* _mesa_function_pool[5721]: GetShaderInfoLog (will be remapped) */ + /* _mesa_function_pool[6542]: GetShaderInfoLog (will be remapped) */ "iipp\0" "glGetShaderInfoLog\0" "\0" - /* _mesa_function_pool[5746]: WeightivARB (dynamic) */ + /* _mesa_function_pool[6567]: WeightivARB (dynamic) */ "ip\0" "glWeightivARB\0" "\0" - /* _mesa_function_pool[5764]: PollInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[6585]: PollInstrumentsSGIX (dynamic) */ "p\0" "glPollInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[5789]: GlobalAlphaFactordSUN (dynamic) */ + /* _mesa_function_pool[6610]: GlobalAlphaFactordSUN (dynamic) */ "d\0" "glGlobalAlphaFactordSUN\0" "\0" - /* _mesa_function_pool[5816]: GetFinalCombinerInputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[6637]: GetFinalCombinerInputParameterfvNV (will be remapped) */ "iip\0" "glGetFinalCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[5858]: GenerateMipmapEXT (will be remapped) */ + /* _mesa_function_pool[6679]: GenerateMipmapEXT (will be remapped) */ "i\0" "glGenerateMipmap\0" "glGenerateMipmapEXT\0" "\0" - /* _mesa_function_pool[5898]: GenLists (offset 5) */ + /* _mesa_function_pool[6719]: GenLists (offset 5) */ "i\0" "glGenLists\0" "\0" - /* _mesa_function_pool[5912]: SetFragmentShaderConstantATI (will be remapped) */ + /* _mesa_function_pool[6733]: SetFragmentShaderConstantATI (will be remapped) */ "ip\0" "glSetFragmentShaderConstantATI\0" "\0" - /* _mesa_function_pool[5947]: GetMapAttribParameterivNV (dynamic) */ + /* _mesa_function_pool[6768]: GetMapAttribParameterivNV (dynamic) */ "iiip\0" "glGetMapAttribParameterivNV\0" "\0" - /* _mesa_function_pool[5981]: CreateShaderObjectARB (will be remapped) */ + /* _mesa_function_pool[6802]: CreateShaderObjectARB (will be remapped) */ "i\0" "glCreateShaderObjectARB\0" "\0" - /* _mesa_function_pool[6008]: GetSharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[6829]: GetSharpenTexFuncSGIS (dynamic) */ "ip\0" "glGetSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[6036]: BufferDataARB (will be remapped) */ + /* _mesa_function_pool[6857]: BufferDataARB (will be remapped) */ "iipi\0" "glBufferData\0" "glBufferDataARB\0" "\0" - /* _mesa_function_pool[6071]: FlushVertexArrayRangeNV (will be remapped) */ + /* _mesa_function_pool[6892]: FlushVertexArrayRangeNV (will be remapped) */ "\0" "glFlushVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[6099]: MapGrid2d (offset 226) */ + /* _mesa_function_pool[6920]: MapGrid2d (offset 226) */ "iddidd\0" "glMapGrid2d\0" "\0" - /* _mesa_function_pool[6119]: MapGrid2f (offset 227) */ + /* _mesa_function_pool[6940]: MapGrid2f (offset 227) */ "iffiff\0" "glMapGrid2f\0" "\0" - /* _mesa_function_pool[6139]: SampleMapATI (will be remapped) */ + /* _mesa_function_pool[6960]: SampleMapATI (will be remapped) */ "iii\0" "glSampleMapATI\0" "\0" - /* _mesa_function_pool[6159]: VertexPointerEXT (will be remapped) */ + /* _mesa_function_pool[6980]: VertexPointerEXT (will be remapped) */ "iiiip\0" "glVertexPointerEXT\0" "\0" - /* _mesa_function_pool[6185]: GetTexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[7006]: GetTexFilterFuncSGIS (dynamic) */ "iip\0" "glGetTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[6213]: Scissor (offset 176) */ + /* _mesa_function_pool[7034]: Scissor (offset 176) */ "iiii\0" "glScissor\0" "\0" - /* _mesa_function_pool[6229]: Fogf (offset 153) */ + /* _mesa_function_pool[7050]: Fogf (offset 153) */ "if\0" "glFogf\0" "\0" - /* _mesa_function_pool[6240]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[7061]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[6285]: TexSubImage1D (offset 332) */ + /* _mesa_function_pool[7106]: TexSubImage1D (offset 332) */ "iiiiiip\0" "glTexSubImage1D\0" "glTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[6329]: VertexAttrib1sARB (will be remapped) */ + /* _mesa_function_pool[7150]: VertexAttrib1sARB (will be remapped) */ "ii\0" "glVertexAttrib1s\0" "glVertexAttrib1sARB\0" "\0" - /* _mesa_function_pool[6370]: FenceSync (will be remapped) */ + /* _mesa_function_pool[7191]: FenceSync (will be remapped) */ "ii\0" "glFenceSync\0" "\0" - /* _mesa_function_pool[6386]: Color4usv (offset 40) */ + /* _mesa_function_pool[7207]: Color4usv (offset 40) */ "p\0" "glColor4usv\0" "\0" - /* _mesa_function_pool[6401]: Fogi (offset 155) */ + /* _mesa_function_pool[7222]: Fogi (offset 155) */ "ii\0" "glFogi\0" "\0" - /* _mesa_function_pool[6412]: DepthRange (offset 288) */ + /* _mesa_function_pool[7233]: DepthRange (offset 288) */ "dd\0" "glDepthRange\0" "\0" - /* _mesa_function_pool[6429]: RasterPos3iv (offset 75) */ + /* _mesa_function_pool[7250]: RasterPos3iv (offset 75) */ "p\0" "glRasterPos3iv\0" "\0" - /* _mesa_function_pool[6447]: FinalCombinerInputNV (will be remapped) */ + /* _mesa_function_pool[7268]: FinalCombinerInputNV (will be remapped) */ "iiii\0" "glFinalCombinerInputNV\0" "\0" - /* _mesa_function_pool[6476]: TexCoord2i (offset 106) */ + /* _mesa_function_pool[7297]: TexCoord2i (offset 106) */ "ii\0" "glTexCoord2i\0" "\0" - /* _mesa_function_pool[6493]: PixelMapfv (offset 251) */ + /* _mesa_function_pool[7314]: PixelMapfv (offset 251) */ "iip\0" "glPixelMapfv\0" "\0" - /* _mesa_function_pool[6511]: Color4ui (offset 37) */ + /* _mesa_function_pool[7332]: Color4ui (offset 37) */ "iiii\0" "glColor4ui\0" "\0" - /* _mesa_function_pool[6528]: RasterPos3s (offset 76) */ + /* _mesa_function_pool[7349]: RasterPos3s (offset 76) */ "iii\0" "glRasterPos3s\0" "\0" - /* _mesa_function_pool[6547]: Color3usv (offset 24) */ + /* _mesa_function_pool[7368]: Color3usv (offset 24) */ "p\0" "glColor3usv\0" "\0" - /* _mesa_function_pool[6562]: FlushRasterSGIX (dynamic) */ + /* _mesa_function_pool[7383]: FlushRasterSGIX (dynamic) */ "\0" "glFlushRasterSGIX\0" "\0" - /* _mesa_function_pool[6582]: TexCoord2f (offset 104) */ + /* _mesa_function_pool[7403]: TexCoord2f (offset 104) */ "ff\0" "glTexCoord2f\0" "\0" - /* _mesa_function_pool[6599]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[7420]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ "ifffff\0" "glReplacementCodeuiTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[6648]: TexCoord2d (offset 102) */ + /* _mesa_function_pool[7469]: TexCoord2d (offset 102) */ "dd\0" "glTexCoord2d\0" "\0" - /* _mesa_function_pool[6665]: RasterPos3d (offset 70) */ + /* _mesa_function_pool[7486]: RasterPos3d (offset 70) */ "ddd\0" "glRasterPos3d\0" "\0" - /* _mesa_function_pool[6684]: RasterPos3f (offset 72) */ + /* _mesa_function_pool[7505]: RasterPos3f (offset 72) */ "fff\0" "glRasterPos3f\0" "\0" - /* _mesa_function_pool[6703]: Uniform1fARB (will be remapped) */ + /* _mesa_function_pool[7524]: Uniform1fARB (will be remapped) */ "if\0" "glUniform1f\0" "glUniform1fARB\0" "\0" - /* _mesa_function_pool[6734]: AreTexturesResident (offset 322) */ + /* _mesa_function_pool[7555]: AreTexturesResident (offset 322) */ "ipp\0" "glAreTexturesResident\0" "glAreTexturesResidentEXT\0" "\0" - /* _mesa_function_pool[6786]: TexCoord2s (offset 108) */ + /* _mesa_function_pool[7607]: TexCoord2s (offset 108) */ "ii\0" "glTexCoord2s\0" "\0" - /* _mesa_function_pool[6803]: StencilOpSeparate (will be remapped) */ + /* _mesa_function_pool[7624]: StencilOpSeparate (will be remapped) */ "iiii\0" "glStencilOpSeparate\0" "glStencilOpSeparateATI\0" "\0" - /* _mesa_function_pool[6852]: ColorTableParameteriv (offset 341) */ + /* _mesa_function_pool[7673]: ColorTableParameteriv (offset 341) */ "iip\0" "glColorTableParameteriv\0" "glColorTableParameterivSGI\0" "\0" - /* _mesa_function_pool[6908]: FogCoordPointerListIBM (dynamic) */ + /* _mesa_function_pool[7729]: FogCoordPointerListIBM (dynamic) */ "iipi\0" "glFogCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[6939]: WindowPos3dMESA (will be remapped) */ + /* _mesa_function_pool[7760]: WindowPos3dMESA (will be remapped) */ "ddd\0" "glWindowPos3d\0" "glWindowPos3dARB\0" "glWindowPos3dMESA\0" "\0" - /* _mesa_function_pool[6993]: Color4us (offset 39) */ + /* _mesa_function_pool[7814]: Color4us (offset 39) */ "iiii\0" "glColor4us\0" "\0" - /* _mesa_function_pool[7010]: PointParameterfvEXT (will be remapped) */ + /* _mesa_function_pool[7831]: PointParameterfvEXT (will be remapped) */ "ip\0" "glPointParameterfv\0" "glPointParameterfvARB\0" "glPointParameterfvEXT\0" "glPointParameterfvSGIS\0" "\0" - /* _mesa_function_pool[7100]: Color3bv (offset 10) */ + /* _mesa_function_pool[7921]: Color3bv (offset 10) */ "p\0" "glColor3bv\0" "\0" - /* _mesa_function_pool[7114]: WindowPos2fvMESA (will be remapped) */ + /* _mesa_function_pool[7935]: WindowPos2fvMESA (will be remapped) */ "p\0" "glWindowPos2fv\0" "glWindowPos2fvARB\0" "glWindowPos2fvMESA\0" "\0" - /* _mesa_function_pool[7169]: SecondaryColor3bvEXT (will be remapped) */ + /* _mesa_function_pool[7990]: SecondaryColor3bvEXT (will be remapped) */ "p\0" "glSecondaryColor3bv\0" "glSecondaryColor3bvEXT\0" "\0" - /* _mesa_function_pool[7215]: VertexPointerListIBM (dynamic) */ + /* _mesa_function_pool[8036]: VertexPointerListIBM (dynamic) */ "iiipi\0" "glVertexPointerListIBM\0" "\0" - /* _mesa_function_pool[7245]: GetProgramLocalParameterfvARB (will be remapped) */ + /* _mesa_function_pool[8066]: GetProgramLocalParameterfvARB (will be remapped) */ "iip\0" "glGetProgramLocalParameterfvARB\0" "\0" - /* _mesa_function_pool[7282]: FragmentMaterialfSGIX (dynamic) */ + /* _mesa_function_pool[8103]: FragmentMaterialfSGIX (dynamic) */ "iif\0" "glFragmentMaterialfSGIX\0" "\0" - /* _mesa_function_pool[7311]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[8132]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ "ffffffff\0" "glTexCoord2fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[7353]: RenderbufferStorageEXT (will be remapped) */ + /* _mesa_function_pool[8174]: RenderbufferStorageEXT (will be remapped) */ "iiii\0" "glRenderbufferStorage\0" "glRenderbufferStorageEXT\0" "\0" - /* _mesa_function_pool[7406]: IsFenceNV (will be remapped) */ + /* _mesa_function_pool[8227]: IsFenceNV (will be remapped) */ "i\0" "glIsFenceNV\0" "\0" - /* _mesa_function_pool[7421]: AttachObjectARB (will be remapped) */ + /* _mesa_function_pool[8242]: AttachObjectARB (will be remapped) */ "ii\0" "glAttachObjectARB\0" "\0" - /* _mesa_function_pool[7443]: GetFragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[8264]: GetFragmentLightivSGIX (dynamic) */ "iip\0" "glGetFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[7473]: UniformMatrix2fvARB (will be remapped) */ + /* _mesa_function_pool[8294]: UniformMatrix2fvARB (will be remapped) */ "iiip\0" "glUniformMatrix2fv\0" "glUniformMatrix2fvARB\0" "\0" - /* _mesa_function_pool[7520]: MultiTexCoord2fARB (offset 386) */ + /* _mesa_function_pool[8341]: MultiTexCoord2fARB (offset 386) */ "iff\0" "glMultiTexCoord2f\0" "glMultiTexCoord2fARB\0" "\0" - /* _mesa_function_pool[7564]: ColorTable (offset 339) */ + /* _mesa_function_pool[8385]: ColorTable (offset 339) */ "iiiiip\0" "glColorTable\0" "glColorTableSGI\0" "glColorTableEXT\0" "\0" - /* _mesa_function_pool[7617]: IndexPointer (offset 314) */ + /* _mesa_function_pool[8438]: IndexPointer (offset 314) */ "iip\0" "glIndexPointer\0" "\0" - /* _mesa_function_pool[7637]: Accum (offset 213) */ + /* _mesa_function_pool[8458]: Accum (offset 213) */ "if\0" "glAccum\0" "\0" - /* _mesa_function_pool[7649]: GetTexImage (offset 281) */ + /* _mesa_function_pool[8470]: GetTexImage (offset 281) */ "iiiip\0" "glGetTexImage\0" "\0" - /* _mesa_function_pool[7670]: MapControlPointsNV (dynamic) */ + /* _mesa_function_pool[8491]: MapControlPointsNV (dynamic) */ "iiiiiiiip\0" "glMapControlPointsNV\0" "\0" - /* _mesa_function_pool[7702]: ConvolutionFilter2D (offset 349) */ + /* _mesa_function_pool[8523]: ConvolutionFilter2D (offset 349) */ "iiiiiip\0" "glConvolutionFilter2D\0" "glConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[7758]: Finish (offset 216) */ + /* _mesa_function_pool[8579]: Finish (offset 216) */ "\0" "glFinish\0" "\0" - /* _mesa_function_pool[7769]: MapParameterfvNV (dynamic) */ + /* _mesa_function_pool[8590]: MapParameterfvNV (dynamic) */ "iip\0" "glMapParameterfvNV\0" "\0" - /* _mesa_function_pool[7793]: ClearStencil (offset 207) */ + /* _mesa_function_pool[8614]: ClearStencil (offset 207) */ "i\0" "glClearStencil\0" "\0" - /* _mesa_function_pool[7811]: VertexAttrib3dvARB (will be remapped) */ + /* _mesa_function_pool[8632]: VertexAttrib3dvARB (will be remapped) */ "ip\0" "glVertexAttrib3dv\0" "glVertexAttrib3dvARB\0" "\0" - /* _mesa_function_pool[7854]: HintPGI (dynamic) */ + /* _mesa_function_pool[8675]: Uniform4uivEXT (will be remapped) */ + "iip\0" + "glUniform4uivEXT\0" + "glUniform4uiv\0" + "\0" + /* _mesa_function_pool[8711]: HintPGI (dynamic) */ "ii\0" "glHintPGI\0" "\0" - /* _mesa_function_pool[7868]: ConvolutionParameteriv (offset 353) */ + /* _mesa_function_pool[8725]: ConvolutionParameteriv (offset 353) */ "iip\0" "glConvolutionParameteriv\0" "glConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[7926]: Color4s (offset 33) */ + /* _mesa_function_pool[8783]: Color4s (offset 33) */ "iiii\0" "glColor4s\0" "\0" - /* _mesa_function_pool[7942]: InterleavedArrays (offset 317) */ + /* _mesa_function_pool[8799]: InterleavedArrays (offset 317) */ "iip\0" "glInterleavedArrays\0" "\0" - /* _mesa_function_pool[7967]: RasterPos2fv (offset 65) */ + /* _mesa_function_pool[8824]: RasterPos2fv (offset 65) */ "p\0" "glRasterPos2fv\0" "\0" - /* _mesa_function_pool[7985]: TexCoord1fv (offset 97) */ + /* _mesa_function_pool[8842]: TexCoord1fv (offset 97) */ "p\0" "glTexCoord1fv\0" "\0" - /* _mesa_function_pool[8002]: Vertex2d (offset 126) */ + /* _mesa_function_pool[8859]: Vertex2d (offset 126) */ "dd\0" "glVertex2d\0" "\0" - /* _mesa_function_pool[8017]: CullParameterdvEXT (dynamic) */ + /* _mesa_function_pool[8874]: CullParameterdvEXT (dynamic) */ "ip\0" "glCullParameterdvEXT\0" "\0" - /* _mesa_function_pool[8042]: ProgramNamedParameter4fNV (will be remapped) */ + /* _mesa_function_pool[8899]: ProgramNamedParameter4fNV (will be remapped) */ "iipffff\0" "glProgramNamedParameter4fNV\0" "\0" - /* _mesa_function_pool[8079]: Color3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[8936]: Color3fVertex3fSUN (dynamic) */ "ffffff\0" "glColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[8108]: ProgramEnvParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[8965]: ProgramEnvParameter4fvARB (will be remapped) */ "iip\0" "glProgramEnvParameter4fvARB\0" "glProgramParameter4fvNV\0" "\0" - /* _mesa_function_pool[8165]: Color4i (offset 31) */ + /* _mesa_function_pool[9022]: Color4i (offset 31) */ "iiii\0" "glColor4i\0" "\0" - /* _mesa_function_pool[8181]: Color4f (offset 29) */ + /* _mesa_function_pool[9038]: Color4f (offset 29) */ "ffff\0" "glColor4f\0" "\0" - /* _mesa_function_pool[8197]: RasterPos4fv (offset 81) */ + /* _mesa_function_pool[9054]: RasterPos4fv (offset 81) */ "p\0" "glRasterPos4fv\0" "\0" - /* _mesa_function_pool[8215]: Color4d (offset 27) */ + /* _mesa_function_pool[9072]: Color4d (offset 27) */ "dddd\0" "glColor4d\0" "\0" - /* _mesa_function_pool[8231]: ClearIndex (offset 205) */ + /* _mesa_function_pool[9088]: ClearIndex (offset 205) */ "f\0" "glClearIndex\0" "\0" - /* _mesa_function_pool[8247]: Color4b (offset 25) */ + /* _mesa_function_pool[9104]: Color4b (offset 25) */ "iiii\0" "glColor4b\0" "\0" - /* _mesa_function_pool[8263]: LoadMatrixd (offset 292) */ + /* _mesa_function_pool[9120]: LoadMatrixd (offset 292) */ "p\0" "glLoadMatrixd\0" "\0" - /* _mesa_function_pool[8280]: FragmentLightModeliSGIX (dynamic) */ + /* _mesa_function_pool[9137]: FragmentLightModeliSGIX (dynamic) */ "ii\0" "glFragmentLightModeliSGIX\0" "\0" - /* _mesa_function_pool[8310]: RasterPos2dv (offset 63) */ + /* _mesa_function_pool[9167]: RasterPos2dv (offset 63) */ "p\0" "glRasterPos2dv\0" "\0" - /* _mesa_function_pool[8328]: ConvolutionParameterfv (offset 351) */ + /* _mesa_function_pool[9185]: ConvolutionParameterfv (offset 351) */ "iip\0" "glConvolutionParameterfv\0" "glConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[8386]: TbufferMask3DFX (dynamic) */ + /* _mesa_function_pool[9243]: TbufferMask3DFX (dynamic) */ "i\0" "glTbufferMask3DFX\0" "\0" - /* _mesa_function_pool[8407]: GetTexGendv (offset 278) */ + /* _mesa_function_pool[9264]: GetTexGendv (offset 278) */ "iip\0" "glGetTexGendv\0" "\0" - /* _mesa_function_pool[8426]: GetVertexAttribfvNV (will be remapped) */ + /* _mesa_function_pool[9283]: GetVertexAttribfvNV (will be remapped) */ "iip\0" "glGetVertexAttribfvNV\0" "\0" - /* _mesa_function_pool[8453]: BeginTransformFeedbackEXT (will be remapped) */ + /* _mesa_function_pool[9310]: BeginTransformFeedbackEXT (will be remapped) */ "i\0" "glBeginTransformFeedbackEXT\0" "glBeginTransformFeedback\0" "\0" - /* _mesa_function_pool[8509]: LoadProgramNV (will be remapped) */ + /* _mesa_function_pool[9366]: LoadProgramNV (will be remapped) */ "iiip\0" "glLoadProgramNV\0" "\0" - /* _mesa_function_pool[8531]: WaitSync (will be remapped) */ + /* _mesa_function_pool[9388]: WaitSync (will be remapped) */ "iii\0" "glWaitSync\0" "\0" - /* _mesa_function_pool[8547]: EndList (offset 1) */ + /* _mesa_function_pool[9404]: EndList (offset 1) */ "\0" "glEndList\0" "\0" - /* _mesa_function_pool[8559]: VertexAttrib4fvNV (will be remapped) */ + /* _mesa_function_pool[9416]: VertexAttrib4fvNV (will be remapped) */ "ip\0" "glVertexAttrib4fvNV\0" "\0" - /* _mesa_function_pool[8583]: GetAttachedObjectsARB (will be remapped) */ + /* _mesa_function_pool[9440]: GetAttachedObjectsARB (will be remapped) */ "iipp\0" "glGetAttachedObjectsARB\0" "\0" - /* _mesa_function_pool[8613]: Uniform3fvARB (will be remapped) */ + /* _mesa_function_pool[9470]: Uniform3fvARB (will be remapped) */ "iip\0" "glUniform3fv\0" "glUniform3fvARB\0" "\0" - /* _mesa_function_pool[8647]: EvalCoord1fv (offset 231) */ + /* _mesa_function_pool[9504]: EvalCoord1fv (offset 231) */ "p\0" "glEvalCoord1fv\0" "\0" - /* _mesa_function_pool[8665]: DrawRangeElements (offset 338) */ + /* _mesa_function_pool[9522]: DrawRangeElements (offset 338) */ "iiiiip\0" "glDrawRangeElements\0" "glDrawRangeElementsEXT\0" "\0" - /* _mesa_function_pool[8716]: EvalMesh2 (offset 238) */ + /* _mesa_function_pool[9573]: EvalMesh2 (offset 238) */ "iiiii\0" "glEvalMesh2\0" "\0" - /* _mesa_function_pool[8735]: Vertex4fv (offset 145) */ + /* _mesa_function_pool[9592]: Vertex4fv (offset 145) */ "p\0" "glVertex4fv\0" "\0" - /* _mesa_function_pool[8750]: GenTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[9607]: GenTransformFeedbacks (will be remapped) */ "ip\0" "glGenTransformFeedbacks\0" "\0" - /* _mesa_function_pool[8778]: SpriteParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[9635]: SpriteParameterfvSGIX (dynamic) */ "ip\0" "glSpriteParameterfvSGIX\0" "\0" - /* _mesa_function_pool[8806]: CheckFramebufferStatusEXT (will be remapped) */ + /* _mesa_function_pool[9663]: CheckFramebufferStatusEXT (will be remapped) */ "i\0" "glCheckFramebufferStatus\0" "glCheckFramebufferStatusEXT\0" "\0" - /* _mesa_function_pool[8862]: GlobalAlphaFactoruiSUN (dynamic) */ + /* _mesa_function_pool[9719]: GlobalAlphaFactoruiSUN (dynamic) */ "i\0" "glGlobalAlphaFactoruiSUN\0" "\0" - /* _mesa_function_pool[8890]: GetHandleARB (will be remapped) */ + /* _mesa_function_pool[9747]: GetHandleARB (will be remapped) */ "i\0" "glGetHandleARB\0" "\0" - /* _mesa_function_pool[8908]: GetVertexAttribivARB (will be remapped) */ + /* _mesa_function_pool[9765]: GetVertexAttribivARB (will be remapped) */ "iip\0" "glGetVertexAttribiv\0" "glGetVertexAttribivARB\0" "\0" - /* _mesa_function_pool[8956]: GetCombinerInputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[9813]: GetCombinerInputParameterfvNV (will be remapped) */ "iiiip\0" "glGetCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[8995]: CreateProgram (will be remapped) */ + /* _mesa_function_pool[9852]: GetTexParameterIivEXT (will be remapped) */ + "iip\0" + "glGetTexParameterIivEXT\0" + "glGetTexParameterIiv\0" + "\0" + /* _mesa_function_pool[9902]: CreateProgram (will be remapped) */ "\0" "glCreateProgram\0" "\0" - /* _mesa_function_pool[9013]: LoadTransposeMatrixdARB (will be remapped) */ + /* _mesa_function_pool[9920]: LoadTransposeMatrixdARB (will be remapped) */ "p\0" "glLoadTransposeMatrixd\0" "glLoadTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[9065]: GetMinmax (offset 364) */ + /* _mesa_function_pool[9972]: GetMinmax (offset 364) */ "iiiip\0" "glGetMinmax\0" "glGetMinmaxEXT\0" "\0" - /* _mesa_function_pool[9099]: StencilFuncSeparate (will be remapped) */ + /* _mesa_function_pool[10006]: StencilFuncSeparate (will be remapped) */ "iiii\0" "glStencilFuncSeparate\0" "\0" - /* _mesa_function_pool[9127]: SecondaryColor3sEXT (will be remapped) */ + /* _mesa_function_pool[10034]: SecondaryColor3sEXT (will be remapped) */ "iii\0" "glSecondaryColor3s\0" "glSecondaryColor3sEXT\0" "\0" - /* _mesa_function_pool[9173]: Color3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[10080]: Color3fVertex3fvSUN (dynamic) */ "pp\0" "glColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[9199]: Normal3fv (offset 57) */ + /* _mesa_function_pool[10106]: GetInteger64i_v (will be remapped) */ + "iip\0" + "glGetInteger64i_v\0" + "\0" + /* _mesa_function_pool[10129]: Normal3fv (offset 57) */ "p\0" "glNormal3fv\0" "\0" - /* _mesa_function_pool[9214]: GlobalAlphaFactorbSUN (dynamic) */ + /* _mesa_function_pool[10144]: GlobalAlphaFactorbSUN (dynamic) */ "i\0" "glGlobalAlphaFactorbSUN\0" "\0" - /* _mesa_function_pool[9241]: Color3us (offset 23) */ + /* _mesa_function_pool[10171]: Color3us (offset 23) */ "iii\0" "glColor3us\0" "\0" - /* _mesa_function_pool[9257]: ImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[10187]: ImageTransformParameterfvHP (dynamic) */ "iip\0" "glImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[9292]: VertexAttrib4ivARB (will be remapped) */ + /* _mesa_function_pool[10222]: VertexAttrib4ivARB (will be remapped) */ "ip\0" "glVertexAttrib4iv\0" "glVertexAttrib4ivARB\0" "\0" - /* _mesa_function_pool[9335]: End (offset 43) */ + /* _mesa_function_pool[10265]: End (offset 43) */ "\0" "glEnd\0" "\0" - /* _mesa_function_pool[9343]: VertexAttrib3fNV (will be remapped) */ + /* _mesa_function_pool[10273]: VertexAttrib3fNV (will be remapped) */ "ifff\0" "glVertexAttrib3fNV\0" "\0" - /* _mesa_function_pool[9368]: VertexAttribs2dvNV (will be remapped) */ + /* _mesa_function_pool[10298]: VertexAttribs2dvNV (will be remapped) */ "iip\0" "glVertexAttribs2dvNV\0" "\0" - /* _mesa_function_pool[9394]: GetQueryObjectui64vEXT (will be remapped) */ + /* _mesa_function_pool[10324]: GetQueryObjectui64vEXT (will be remapped) */ "iip\0" "glGetQueryObjectui64vEXT\0" "\0" - /* _mesa_function_pool[9424]: MultiTexCoord3fvARB (offset 395) */ + /* _mesa_function_pool[10354]: MultiTexCoord3fvARB (offset 395) */ "ip\0" "glMultiTexCoord3fv\0" "glMultiTexCoord3fvARB\0" "\0" - /* _mesa_function_pool[9469]: SecondaryColor3dEXT (will be remapped) */ + /* _mesa_function_pool[10399]: SecondaryColor3dEXT (will be remapped) */ "ddd\0" "glSecondaryColor3d\0" "glSecondaryColor3dEXT\0" "\0" - /* _mesa_function_pool[9515]: Color3ub (offset 19) */ + /* _mesa_function_pool[10445]: Color3ub (offset 19) */ "iii\0" "glColor3ub\0" "\0" - /* _mesa_function_pool[9531]: GetProgramParameterfvNV (will be remapped) */ + /* _mesa_function_pool[10461]: GetProgramParameterfvNV (will be remapped) */ "iiip\0" "glGetProgramParameterfvNV\0" "\0" - /* _mesa_function_pool[9563]: TangentPointerEXT (dynamic) */ + /* _mesa_function_pool[10493]: TangentPointerEXT (dynamic) */ "iip\0" "glTangentPointerEXT\0" "\0" - /* _mesa_function_pool[9588]: Color4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[10518]: Color4fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[9623]: GetInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[10553]: GetInstrumentsSGIX (dynamic) */ "\0" "glGetInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[9646]: Color3ui (offset 21) */ + /* _mesa_function_pool[10576]: GetUniformuivEXT (will be remapped) */ + "iip\0" + "glGetUniformuivEXT\0" + "glGetUniformuiv\0" + "\0" + /* _mesa_function_pool[10616]: Color3ui (offset 21) */ "iii\0" "glColor3ui\0" "\0" - /* _mesa_function_pool[9662]: EvalMapsNV (dynamic) */ + /* _mesa_function_pool[10632]: EvalMapsNV (dynamic) */ "ii\0" "glEvalMapsNV\0" "\0" - /* _mesa_function_pool[9679]: TexSubImage2D (offset 333) */ + /* _mesa_function_pool[10649]: TexSubImage2D (offset 333) */ "iiiiiiiip\0" "glTexSubImage2D\0" "glTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[9725]: FragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[10695]: FragmentLightivSGIX (dynamic) */ "iip\0" "glFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[9752]: GetTexParameterPointervAPPLE (will be remapped) */ + /* _mesa_function_pool[10722]: GetTexParameterPointervAPPLE (will be remapped) */ "iip\0" "glGetTexParameterPointervAPPLE\0" "\0" - /* _mesa_function_pool[9788]: TexGenfv (offset 191) */ + /* _mesa_function_pool[10758]: TexGenfv (offset 191) */ "iip\0" "glTexGenfv\0" "\0" - /* _mesa_function_pool[9804]: GetTransformFeedbackVaryingEXT (will be remapped) */ + /* _mesa_function_pool[10774]: GetTransformFeedbackVaryingEXT (will be remapped) */ "iiipppp\0" "glGetTransformFeedbackVaryingEXT\0" "glGetTransformFeedbackVarying\0" "\0" - /* _mesa_function_pool[9876]: VertexAttrib4bvARB (will be remapped) */ + /* _mesa_function_pool[10846]: VertexAttrib4bvARB (will be remapped) */ "ip\0" "glVertexAttrib4bv\0" "glVertexAttrib4bvARB\0" "\0" - /* _mesa_function_pool[9919]: AlphaFragmentOp2ATI (will be remapped) */ + /* _mesa_function_pool[10889]: AlphaFragmentOp2ATI (will be remapped) */ "iiiiiiiii\0" "glAlphaFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[9952]: GetIntegerIndexedvEXT (will be remapped) */ + /* _mesa_function_pool[10922]: GetIntegerIndexedvEXT (will be remapped) */ "iip\0" "glGetIntegerIndexedvEXT\0" + "glGetIntegeri_v\0" "\0" - /* _mesa_function_pool[9981]: MultiTexCoord4sARB (offset 406) */ + /* _mesa_function_pool[10967]: MultiTexCoord4sARB (offset 406) */ "iiiii\0" "glMultiTexCoord4s\0" "glMultiTexCoord4sARB\0" "\0" - /* _mesa_function_pool[10027]: GetFragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[11013]: GetFragmentMaterialivSGIX (dynamic) */ "iip\0" "glGetFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[10060]: WindowPos4dMESA (will be remapped) */ + /* _mesa_function_pool[11046]: WindowPos4dMESA (will be remapped) */ "dddd\0" "glWindowPos4dMESA\0" "\0" - /* _mesa_function_pool[10084]: WeightPointerARB (dynamic) */ + /* _mesa_function_pool[11070]: WeightPointerARB (dynamic) */ "iiip\0" "glWeightPointerARB\0" "\0" - /* _mesa_function_pool[10109]: WindowPos2dMESA (will be remapped) */ + /* _mesa_function_pool[11095]: WindowPos2dMESA (will be remapped) */ "dd\0" "glWindowPos2d\0" "glWindowPos2dARB\0" "glWindowPos2dMESA\0" "\0" - /* _mesa_function_pool[10162]: FramebufferTexture3DEXT (will be remapped) */ + /* _mesa_function_pool[11148]: FramebufferTexture3DEXT (will be remapped) */ "iiiiii\0" "glFramebufferTexture3D\0" "glFramebufferTexture3DEXT\0" "\0" - /* _mesa_function_pool[10219]: BlendEquation (offset 337) */ + /* _mesa_function_pool[11205]: BlendEquation (offset 337) */ "i\0" "glBlendEquation\0" "glBlendEquationEXT\0" "\0" - /* _mesa_function_pool[10257]: VertexAttrib3dNV (will be remapped) */ + /* _mesa_function_pool[11243]: VertexAttrib3dNV (will be remapped) */ "iddd\0" "glVertexAttrib3dNV\0" "\0" - /* _mesa_function_pool[10282]: VertexAttrib3dARB (will be remapped) */ + /* _mesa_function_pool[11268]: VertexAttrib3dARB (will be remapped) */ "iddd\0" "glVertexAttrib3d\0" "glVertexAttrib3dARB\0" "\0" - /* _mesa_function_pool[10325]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[11311]: VertexAttribI4usvEXT (will be remapped) */ + "ip\0" + "glVertexAttribI4usvEXT\0" + "glVertexAttribI4usv\0" + "\0" + /* _mesa_function_pool[11358]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ "ppppp\0" "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[10389]: VertexAttrib4fARB (will be remapped) */ + /* _mesa_function_pool[11422]: VertexAttrib4fARB (will be remapped) */ "iffff\0" "glVertexAttrib4f\0" "glVertexAttrib4fARB\0" "\0" - /* _mesa_function_pool[10433]: GetError (offset 261) */ + /* _mesa_function_pool[11466]: GetError (offset 261) */ "\0" "glGetError\0" "\0" - /* _mesa_function_pool[10446]: IndexFuncEXT (dynamic) */ + /* _mesa_function_pool[11479]: IndexFuncEXT (dynamic) */ "if\0" "glIndexFuncEXT\0" "\0" - /* _mesa_function_pool[10465]: TexCoord3dv (offset 111) */ + /* _mesa_function_pool[11498]: TexCoord3dv (offset 111) */ "p\0" "glTexCoord3dv\0" "\0" - /* _mesa_function_pool[10482]: Indexdv (offset 45) */ + /* _mesa_function_pool[11515]: Indexdv (offset 45) */ "p\0" "glIndexdv\0" "\0" - /* _mesa_function_pool[10495]: FramebufferTexture2DEXT (will be remapped) */ + /* _mesa_function_pool[11528]: FramebufferTexture2DEXT (will be remapped) */ "iiiii\0" "glFramebufferTexture2D\0" "glFramebufferTexture2DEXT\0" "\0" - /* _mesa_function_pool[10551]: Normal3s (offset 60) */ + /* _mesa_function_pool[11584]: Normal3s (offset 60) */ "iii\0" "glNormal3s\0" "\0" - /* _mesa_function_pool[10567]: GetObjectParameterivAPPLE (will be remapped) */ + /* _mesa_function_pool[11600]: GetObjectParameterivAPPLE (will be remapped) */ "iiip\0" "glGetObjectParameterivAPPLE\0" "\0" - /* _mesa_function_pool[10601]: PushName (offset 201) */ + /* _mesa_function_pool[11634]: PushName (offset 201) */ "i\0" "glPushName\0" "\0" - /* _mesa_function_pool[10615]: MultiTexCoord2dvARB (offset 385) */ + /* _mesa_function_pool[11648]: MultiTexCoord2dvARB (offset 385) */ "ip\0" "glMultiTexCoord2dv\0" "glMultiTexCoord2dvARB\0" "\0" - /* _mesa_function_pool[10660]: CullParameterfvEXT (dynamic) */ + /* _mesa_function_pool[11693]: CullParameterfvEXT (dynamic) */ "ip\0" "glCullParameterfvEXT\0" "\0" - /* _mesa_function_pool[10685]: Normal3i (offset 58) */ + /* _mesa_function_pool[11718]: Normal3i (offset 58) */ "iii\0" "glNormal3i\0" "\0" - /* _mesa_function_pool[10701]: ProgramNamedParameter4fvNV (will be remapped) */ + /* _mesa_function_pool[11734]: ProgramNamedParameter4fvNV (will be remapped) */ "iipp\0" "glProgramNamedParameter4fvNV\0" "\0" - /* _mesa_function_pool[10736]: SecondaryColorPointerEXT (will be remapped) */ + /* _mesa_function_pool[11769]: SecondaryColorPointerEXT (will be remapped) */ "iiip\0" "glSecondaryColorPointer\0" "glSecondaryColorPointerEXT\0" "\0" - /* _mesa_function_pool[10793]: VertexAttrib4fvARB (will be remapped) */ + /* _mesa_function_pool[11826]: VertexAttrib4fvARB (will be remapped) */ "ip\0" "glVertexAttrib4fv\0" "glVertexAttrib4fvARB\0" "\0" - /* _mesa_function_pool[10836]: ColorPointerListIBM (dynamic) */ + /* _mesa_function_pool[11869]: ColorPointerListIBM (dynamic) */ "iiipi\0" "glColorPointerListIBM\0" "\0" - /* _mesa_function_pool[10865]: GetActiveUniformARB (will be remapped) */ + /* _mesa_function_pool[11898]: GetActiveUniformARB (will be remapped) */ "iiipppp\0" "glGetActiveUniform\0" "glGetActiveUniformARB\0" "\0" - /* _mesa_function_pool[10915]: ImageTransformParameteriHP (dynamic) */ + /* _mesa_function_pool[11948]: ImageTransformParameteriHP (dynamic) */ "iii\0" "glImageTransformParameteriHP\0" "\0" - /* _mesa_function_pool[10949]: Normal3b (offset 52) */ + /* _mesa_function_pool[11982]: Normal3b (offset 52) */ "iii\0" "glNormal3b\0" "\0" - /* _mesa_function_pool[10965]: Normal3d (offset 54) */ + /* _mesa_function_pool[11998]: Normal3d (offset 54) */ "ddd\0" "glNormal3d\0" "\0" - /* _mesa_function_pool[10981]: Normal3f (offset 56) */ + /* _mesa_function_pool[12014]: Uniform1uiEXT (will be remapped) */ + "ii\0" + "glUniform1uiEXT\0" + "glUniform1ui\0" + "\0" + /* _mesa_function_pool[12047]: Normal3f (offset 56) */ "fff\0" "glNormal3f\0" "\0" - /* _mesa_function_pool[10997]: MultiTexCoord1svARB (offset 383) */ + /* _mesa_function_pool[12063]: MultiTexCoord1svARB (offset 383) */ "ip\0" "glMultiTexCoord1sv\0" "glMultiTexCoord1svARB\0" "\0" - /* _mesa_function_pool[11042]: Indexi (offset 48) */ + /* _mesa_function_pool[12108]: Indexi (offset 48) */ "i\0" "glIndexi\0" "\0" - /* _mesa_function_pool[11054]: EGLImageTargetTexture2DOES (will be remapped) */ + /* _mesa_function_pool[12120]: EGLImageTargetTexture2DOES (will be remapped) */ "ip\0" "glEGLImageTargetTexture2DOES\0" "\0" - /* _mesa_function_pool[11087]: EndQueryARB (will be remapped) */ + /* _mesa_function_pool[12153]: EndQueryARB (will be remapped) */ "i\0" "glEndQuery\0" "glEndQueryARB\0" "\0" - /* _mesa_function_pool[11115]: DeleteFencesNV (will be remapped) */ + /* _mesa_function_pool[12181]: DeleteFencesNV (will be remapped) */ "ip\0" "glDeleteFencesNV\0" "\0" - /* _mesa_function_pool[11136]: BindBufferRangeEXT (will be remapped) */ + /* _mesa_function_pool[12202]: BindBufferRangeEXT (will be remapped) */ "iiiii\0" "glBindBufferRangeEXT\0" "glBindBufferRange\0" "\0" - /* _mesa_function_pool[11182]: DepthMask (offset 211) */ + /* _mesa_function_pool[12248]: DepthMask (offset 211) */ "i\0" "glDepthMask\0" "\0" - /* _mesa_function_pool[11197]: IsShader (will be remapped) */ + /* _mesa_function_pool[12263]: IsShader (will be remapped) */ "i\0" "glIsShader\0" "\0" - /* _mesa_function_pool[11211]: Indexf (offset 46) */ + /* _mesa_function_pool[12277]: Indexf (offset 46) */ "f\0" "glIndexf\0" "\0" - /* _mesa_function_pool[11223]: GetImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[12289]: GetImageTransformParameterivHP (dynamic) */ "iip\0" "glGetImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[11261]: Indexd (offset 44) */ + /* _mesa_function_pool[12327]: Indexd (offset 44) */ "d\0" "glIndexd\0" "\0" - /* _mesa_function_pool[11273]: GetMaterialiv (offset 270) */ + /* _mesa_function_pool[12339]: GetMaterialiv (offset 270) */ "iip\0" "glGetMaterialiv\0" "\0" - /* _mesa_function_pool[11294]: StencilOp (offset 244) */ + /* _mesa_function_pool[12360]: StencilOp (offset 244) */ "iii\0" "glStencilOp\0" "\0" - /* _mesa_function_pool[11311]: WindowPos4ivMESA (will be remapped) */ + /* _mesa_function_pool[12377]: WindowPos4ivMESA (will be remapped) */ "p\0" "glWindowPos4ivMESA\0" "\0" - /* _mesa_function_pool[11333]: FramebufferTextureLayer (dynamic) */ + /* _mesa_function_pool[12399]: FramebufferTextureLayer (dynamic) */ "iiiii\0" "glFramebufferTextureLayerARB\0" "\0" - /* _mesa_function_pool[11369]: MultiTexCoord3svARB (offset 399) */ + /* _mesa_function_pool[12435]: MultiTexCoord3svARB (offset 399) */ "ip\0" "glMultiTexCoord3sv\0" "glMultiTexCoord3svARB\0" "\0" - /* _mesa_function_pool[11414]: TexEnvfv (offset 185) */ + /* _mesa_function_pool[12480]: TexEnvfv (offset 185) */ "iip\0" "glTexEnvfv\0" "\0" - /* _mesa_function_pool[11430]: MultiTexCoord4iARB (offset 404) */ + /* _mesa_function_pool[12496]: MultiTexCoord4iARB (offset 404) */ "iiiii\0" "glMultiTexCoord4i\0" "glMultiTexCoord4iARB\0" "\0" - /* _mesa_function_pool[11476]: Indexs (offset 50) */ + /* _mesa_function_pool[12542]: Indexs (offset 50) */ "i\0" "glIndexs\0" "\0" - /* _mesa_function_pool[11488]: Binormal3ivEXT (dynamic) */ + /* _mesa_function_pool[12554]: Binormal3ivEXT (dynamic) */ "p\0" "glBinormal3ivEXT\0" "\0" - /* _mesa_function_pool[11508]: ResizeBuffersMESA (will be remapped) */ + /* _mesa_function_pool[12574]: ResizeBuffersMESA (will be remapped) */ "\0" "glResizeBuffersMESA\0" "\0" - /* _mesa_function_pool[11530]: GetUniformivARB (will be remapped) */ + /* _mesa_function_pool[12596]: GetUniformivARB (will be remapped) */ "iip\0" "glGetUniformiv\0" "glGetUniformivARB\0" "\0" - /* _mesa_function_pool[11568]: PixelTexGenParameteriSGIS (will be remapped) */ + /* _mesa_function_pool[12634]: PixelTexGenParameteriSGIS (will be remapped) */ "ii\0" "glPixelTexGenParameteriSGIS\0" "\0" - /* _mesa_function_pool[11600]: VertexPointervINTEL (dynamic) */ + /* _mesa_function_pool[12666]: VertexPointervINTEL (dynamic) */ "iip\0" "glVertexPointervINTEL\0" "\0" - /* _mesa_function_pool[11627]: Vertex2i (offset 130) */ + /* _mesa_function_pool[12693]: Vertex2i (offset 130) */ "ii\0" "glVertex2i\0" "\0" - /* _mesa_function_pool[11642]: LoadMatrixf (offset 291) */ + /* _mesa_function_pool[12708]: LoadMatrixf (offset 291) */ "p\0" "glLoadMatrixf\0" "\0" - /* _mesa_function_pool[11659]: Vertex2f (offset 128) */ + /* _mesa_function_pool[12725]: VertexAttribI1uivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI1uivEXT\0" + "glVertexAttribI1uiv\0" + "\0" + /* _mesa_function_pool[12772]: Vertex2f (offset 128) */ "ff\0" "glVertex2f\0" "\0" - /* _mesa_function_pool[11674]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[12787]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[11727]: Color4bv (offset 26) */ + /* _mesa_function_pool[12840]: Color4bv (offset 26) */ "p\0" "glColor4bv\0" "\0" - /* _mesa_function_pool[11741]: VertexPointer (offset 321) */ + /* _mesa_function_pool[12854]: VertexPointer (offset 321) */ "iiip\0" "glVertexPointer\0" "\0" - /* _mesa_function_pool[11763]: SecondaryColor3uiEXT (will be remapped) */ + /* _mesa_function_pool[12876]: SecondaryColor3uiEXT (will be remapped) */ "iii\0" "glSecondaryColor3ui\0" "glSecondaryColor3uiEXT\0" "\0" - /* _mesa_function_pool[11811]: StartInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[12924]: StartInstrumentsSGIX (dynamic) */ "\0" "glStartInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[11836]: SecondaryColor3usvEXT (will be remapped) */ + /* _mesa_function_pool[12949]: SecondaryColor3usvEXT (will be remapped) */ "p\0" "glSecondaryColor3usv\0" "glSecondaryColor3usvEXT\0" "\0" - /* _mesa_function_pool[11884]: VertexAttrib2fvNV (will be remapped) */ + /* _mesa_function_pool[12997]: VertexAttrib2fvNV (will be remapped) */ "ip\0" "glVertexAttrib2fvNV\0" "\0" - /* _mesa_function_pool[11908]: ProgramLocalParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[13021]: ProgramLocalParameter4dvARB (will be remapped) */ "iip\0" "glProgramLocalParameter4dvARB\0" "\0" - /* _mesa_function_pool[11943]: DeleteLists (offset 4) */ + /* _mesa_function_pool[13056]: DeleteLists (offset 4) */ "ii\0" "glDeleteLists\0" "\0" - /* _mesa_function_pool[11961]: LogicOp (offset 242) */ + /* _mesa_function_pool[13074]: LogicOp (offset 242) */ "i\0" "glLogicOp\0" "\0" - /* _mesa_function_pool[11974]: MatrixIndexuivARB (dynamic) */ + /* _mesa_function_pool[13087]: MatrixIndexuivARB (dynamic) */ "ip\0" "glMatrixIndexuivARB\0" "\0" - /* _mesa_function_pool[11998]: Vertex2s (offset 132) */ + /* _mesa_function_pool[13111]: Vertex2s (offset 132) */ "ii\0" "glVertex2s\0" "\0" - /* _mesa_function_pool[12013]: RenderbufferStorageMultisample (will be remapped) */ + /* _mesa_function_pool[13126]: RenderbufferStorageMultisample (will be remapped) */ "iiiii\0" "glRenderbufferStorageMultisample\0" "glRenderbufferStorageMultisampleEXT\0" "\0" - /* _mesa_function_pool[12089]: TexCoord4fv (offset 121) */ + /* _mesa_function_pool[13202]: TexCoord4fv (offset 121) */ "p\0" "glTexCoord4fv\0" "\0" - /* _mesa_function_pool[12106]: Tangent3sEXT (dynamic) */ + /* _mesa_function_pool[13219]: Tangent3sEXT (dynamic) */ "iii\0" "glTangent3sEXT\0" "\0" - /* _mesa_function_pool[12126]: GlobalAlphaFactorfSUN (dynamic) */ + /* _mesa_function_pool[13239]: GlobalAlphaFactorfSUN (dynamic) */ "f\0" "glGlobalAlphaFactorfSUN\0" "\0" - /* _mesa_function_pool[12153]: MultiTexCoord3iARB (offset 396) */ + /* _mesa_function_pool[13266]: MultiTexCoord3iARB (offset 396) */ "iiii\0" "glMultiTexCoord3i\0" "glMultiTexCoord3iARB\0" "\0" - /* _mesa_function_pool[12198]: IsProgram (will be remapped) */ + /* _mesa_function_pool[13311]: IsProgram (will be remapped) */ "i\0" "glIsProgram\0" "\0" - /* _mesa_function_pool[12213]: TexCoordPointerListIBM (dynamic) */ + /* _mesa_function_pool[13326]: TexCoordPointerListIBM (dynamic) */ "iiipi\0" "glTexCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[12245]: GlobalAlphaFactorusSUN (dynamic) */ + /* _mesa_function_pool[13358]: VertexAttribI4svEXT (will be remapped) */ + "ip\0" + "glVertexAttribI4svEXT\0" + "glVertexAttribI4sv\0" + "\0" + /* _mesa_function_pool[13403]: GlobalAlphaFactorusSUN (dynamic) */ "i\0" "glGlobalAlphaFactorusSUN\0" "\0" - /* _mesa_function_pool[12273]: VertexAttrib2dvNV (will be remapped) */ + /* _mesa_function_pool[13431]: VertexAttrib2dvNV (will be remapped) */ "ip\0" "glVertexAttrib2dvNV\0" "\0" - /* _mesa_function_pool[12297]: FramebufferRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[13455]: FramebufferRenderbufferEXT (will be remapped) */ "iiii\0" "glFramebufferRenderbuffer\0" "glFramebufferRenderbufferEXT\0" "\0" - /* _mesa_function_pool[12358]: VertexAttrib1dvNV (will be remapped) */ + /* _mesa_function_pool[13516]: ClearBufferuiv (will be remapped) */ + "iip\0" + "glClearBufferuiv\0" + "\0" + /* _mesa_function_pool[13538]: VertexAttrib1dvNV (will be remapped) */ "ip\0" "glVertexAttrib1dvNV\0" "\0" - /* _mesa_function_pool[12382]: GenTextures (offset 328) */ + /* _mesa_function_pool[13562]: GenTextures (offset 328) */ "ip\0" "glGenTextures\0" "glGenTexturesEXT\0" "\0" - /* _mesa_function_pool[12417]: FramebufferTextureARB (will be remapped) */ + /* _mesa_function_pool[13597]: FramebufferTextureARB (will be remapped) */ "iiii\0" "glFramebufferTextureARB\0" "\0" - /* _mesa_function_pool[12447]: SetFenceNV (will be remapped) */ + /* _mesa_function_pool[13627]: SetFenceNV (will be remapped) */ "ii\0" "glSetFenceNV\0" "\0" - /* _mesa_function_pool[12464]: FramebufferTexture1DEXT (will be remapped) */ + /* _mesa_function_pool[13644]: FramebufferTexture1DEXT (will be remapped) */ "iiiii\0" "glFramebufferTexture1D\0" "glFramebufferTexture1DEXT\0" "\0" - /* _mesa_function_pool[12520]: GetCombinerOutputParameterivNV (will be remapped) */ + /* _mesa_function_pool[13700]: GetCombinerOutputParameterivNV (will be remapped) */ "iiip\0" "glGetCombinerOutputParameterivNV\0" "\0" - /* _mesa_function_pool[12559]: MultiModeDrawArraysIBM (will be remapped) */ + /* _mesa_function_pool[13739]: MultiModeDrawArraysIBM (will be remapped) */ "pppii\0" "glMultiModeDrawArraysIBM\0" "\0" - /* _mesa_function_pool[12591]: PixelTexGenParameterivSGIS (will be remapped) */ + /* _mesa_function_pool[13771]: PixelTexGenParameterivSGIS (will be remapped) */ "ip\0" "glPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[12624]: TextureNormalEXT (dynamic) */ + /* _mesa_function_pool[13804]: TextureNormalEXT (dynamic) */ "i\0" "glTextureNormalEXT\0" "\0" - /* _mesa_function_pool[12646]: IndexPointerListIBM (dynamic) */ + /* _mesa_function_pool[13826]: IndexPointerListIBM (dynamic) */ "iipi\0" "glIndexPointerListIBM\0" "\0" - /* _mesa_function_pool[12674]: WeightfvARB (dynamic) */ + /* _mesa_function_pool[13854]: WeightfvARB (dynamic) */ "ip\0" "glWeightfvARB\0" "\0" - /* _mesa_function_pool[12692]: GetCombinerOutputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[13872]: GetCombinerOutputParameterfvNV (will be remapped) */ "iiip\0" "glGetCombinerOutputParameterfvNV\0" "\0" - /* _mesa_function_pool[12731]: RasterPos2sv (offset 69) */ + /* _mesa_function_pool[13911]: RasterPos2sv (offset 69) */ "p\0" "glRasterPos2sv\0" "\0" - /* _mesa_function_pool[12749]: Color4ubv (offset 36) */ + /* _mesa_function_pool[13929]: Color4ubv (offset 36) */ "p\0" "glColor4ubv\0" "\0" - /* _mesa_function_pool[12764]: DrawBuffer (offset 202) */ + /* _mesa_function_pool[13944]: DrawBuffer (offset 202) */ "i\0" "glDrawBuffer\0" "\0" - /* _mesa_function_pool[12780]: TexCoord2fv (offset 105) */ + /* _mesa_function_pool[13960]: TexCoord2fv (offset 105) */ "p\0" "glTexCoord2fv\0" "\0" - /* _mesa_function_pool[12797]: WindowPos4fMESA (will be remapped) */ + /* _mesa_function_pool[13977]: WindowPos4fMESA (will be remapped) */ "ffff\0" "glWindowPos4fMESA\0" "\0" - /* _mesa_function_pool[12821]: TexCoord1sv (offset 101) */ + /* _mesa_function_pool[14001]: TexCoord1sv (offset 101) */ "p\0" "glTexCoord1sv\0" "\0" - /* _mesa_function_pool[12838]: WindowPos3dvMESA (will be remapped) */ + /* _mesa_function_pool[14018]: WindowPos3dvMESA (will be remapped) */ "p\0" "glWindowPos3dv\0" "glWindowPos3dvARB\0" "glWindowPos3dvMESA\0" "\0" - /* _mesa_function_pool[12893]: DepthFunc (offset 245) */ + /* _mesa_function_pool[14073]: DepthFunc (offset 245) */ "i\0" "glDepthFunc\0" "\0" - /* _mesa_function_pool[12908]: PixelMapusv (offset 253) */ + /* _mesa_function_pool[14088]: PixelMapusv (offset 253) */ "iip\0" "glPixelMapusv\0" "\0" - /* _mesa_function_pool[12927]: GetQueryObjecti64vEXT (will be remapped) */ + /* _mesa_function_pool[14107]: GetQueryObjecti64vEXT (will be remapped) */ "iip\0" "glGetQueryObjecti64vEXT\0" "\0" - /* _mesa_function_pool[12956]: MultiTexCoord1dARB (offset 376) */ + /* _mesa_function_pool[14136]: MultiTexCoord1dARB (offset 376) */ "id\0" "glMultiTexCoord1d\0" "glMultiTexCoord1dARB\0" "\0" - /* _mesa_function_pool[12999]: PointParameterivNV (will be remapped) */ + /* _mesa_function_pool[14179]: PointParameterivNV (will be remapped) */ "ip\0" "glPointParameteriv\0" "glPointParameterivNV\0" "\0" - /* _mesa_function_pool[13043]: BlendFunc (offset 241) */ + /* _mesa_function_pool[14223]: BlendFunc (offset 241) */ "ii\0" "glBlendFunc\0" "\0" - /* _mesa_function_pool[13059]: EndTransformFeedbackEXT (will be remapped) */ + /* _mesa_function_pool[14239]: EndTransformFeedbackEXT (will be remapped) */ "\0" "glEndTransformFeedbackEXT\0" "glEndTransformFeedback\0" "\0" - /* _mesa_function_pool[13110]: Uniform2fvARB (will be remapped) */ + /* _mesa_function_pool[14290]: Uniform2fvARB (will be remapped) */ "iip\0" "glUniform2fv\0" "glUniform2fvARB\0" "\0" - /* _mesa_function_pool[13144]: BufferParameteriAPPLE (will be remapped) */ + /* _mesa_function_pool[14324]: BufferParameteriAPPLE (will be remapped) */ "iii\0" "glBufferParameteriAPPLE\0" "\0" - /* _mesa_function_pool[13173]: MultiTexCoord3dvARB (offset 393) */ + /* _mesa_function_pool[14353]: MultiTexCoord3dvARB (offset 393) */ "ip\0" "glMultiTexCoord3dv\0" "glMultiTexCoord3dvARB\0" "\0" - /* _mesa_function_pool[13218]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[14398]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[13274]: DeleteObjectARB (will be remapped) */ + /* _mesa_function_pool[14454]: DeleteObjectARB (will be remapped) */ "i\0" "glDeleteObjectARB\0" "\0" - /* _mesa_function_pool[13295]: MatrixIndexPointerARB (dynamic) */ + /* _mesa_function_pool[14475]: MatrixIndexPointerARB (dynamic) */ "iiip\0" "glMatrixIndexPointerARB\0" "\0" - /* _mesa_function_pool[13325]: ProgramNamedParameter4dvNV (will be remapped) */ + /* _mesa_function_pool[14505]: ProgramNamedParameter4dvNV (will be remapped) */ "iipp\0" "glProgramNamedParameter4dvNV\0" "\0" - /* _mesa_function_pool[13360]: Tangent3fvEXT (dynamic) */ + /* _mesa_function_pool[14540]: Tangent3fvEXT (dynamic) */ "p\0" "glTangent3fvEXT\0" "\0" - /* _mesa_function_pool[13379]: Flush (offset 217) */ + /* _mesa_function_pool[14559]: Flush (offset 217) */ "\0" "glFlush\0" "\0" - /* _mesa_function_pool[13389]: Color4uiv (offset 38) */ + /* _mesa_function_pool[14569]: Color4uiv (offset 38) */ "p\0" "glColor4uiv\0" "\0" - /* _mesa_function_pool[13404]: GenVertexArrays (will be remapped) */ + /* _mesa_function_pool[14584]: VertexAttribI4iEXT (will be remapped) */ + "iiiii\0" + "glVertexAttribI4iEXT\0" + "glVertexAttribI4i\0" + "\0" + /* _mesa_function_pool[14630]: GenVertexArrays (will be remapped) */ "ip\0" "glGenVertexArrays\0" "\0" - /* _mesa_function_pool[13426]: RasterPos3sv (offset 77) */ + /* _mesa_function_pool[14652]: Uniform3uivEXT (will be remapped) */ + "iip\0" + "glUniform3uivEXT\0" + "glUniform3uiv\0" + "\0" + /* _mesa_function_pool[14688]: RasterPos3sv (offset 77) */ "p\0" "glRasterPos3sv\0" "\0" - /* _mesa_function_pool[13444]: BindFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[14706]: BindFramebufferEXT (will be remapped) */ "ii\0" "glBindFramebuffer\0" "glBindFramebufferEXT\0" "\0" - /* _mesa_function_pool[13487]: ReferencePlaneSGIX (dynamic) */ + /* _mesa_function_pool[14749]: ReferencePlaneSGIX (dynamic) */ "p\0" "glReferencePlaneSGIX\0" "\0" - /* _mesa_function_pool[13511]: PushAttrib (offset 219) */ + /* _mesa_function_pool[14773]: PushAttrib (offset 219) */ "i\0" "glPushAttrib\0" "\0" - /* _mesa_function_pool[13527]: RasterPos2i (offset 66) */ + /* _mesa_function_pool[14789]: RasterPos2i (offset 66) */ "ii\0" "glRasterPos2i\0" "\0" - /* _mesa_function_pool[13545]: ValidateProgramARB (will be remapped) */ + /* _mesa_function_pool[14807]: ValidateProgramARB (will be remapped) */ "i\0" "glValidateProgram\0" "glValidateProgramARB\0" "\0" - /* _mesa_function_pool[13587]: TexParameteriv (offset 181) */ + /* _mesa_function_pool[14849]: TexParameteriv (offset 181) */ "iip\0" "glTexParameteriv\0" "\0" - /* _mesa_function_pool[13609]: UnlockArraysEXT (will be remapped) */ + /* _mesa_function_pool[14871]: UnlockArraysEXT (will be remapped) */ "\0" "glUnlockArraysEXT\0" "\0" - /* _mesa_function_pool[13629]: TexCoord2fColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[14891]: TexCoord2fColor3fVertex3fSUN (dynamic) */ "ffffffff\0" "glTexCoord2fColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[13670]: WindowPos3fvMESA (will be remapped) */ + /* _mesa_function_pool[14932]: WindowPos3fvMESA (will be remapped) */ "p\0" "glWindowPos3fv\0" "glWindowPos3fvARB\0" "glWindowPos3fvMESA\0" "\0" - /* _mesa_function_pool[13725]: RasterPos2f (offset 64) */ + /* _mesa_function_pool[14987]: RasterPos2f (offset 64) */ "ff\0" "glRasterPos2f\0" "\0" - /* _mesa_function_pool[13743]: VertexAttrib1svNV (will be remapped) */ + /* _mesa_function_pool[15005]: VertexAttrib1svNV (will be remapped) */ "ip\0" "glVertexAttrib1svNV\0" "\0" - /* _mesa_function_pool[13767]: RasterPos2d (offset 62) */ + /* _mesa_function_pool[15029]: RasterPos2d (offset 62) */ "dd\0" "glRasterPos2d\0" "\0" - /* _mesa_function_pool[13785]: RasterPos3fv (offset 73) */ + /* _mesa_function_pool[15047]: RasterPos3fv (offset 73) */ "p\0" "glRasterPos3fv\0" "\0" - /* _mesa_function_pool[13803]: CopyTexSubImage3D (offset 373) */ + /* _mesa_function_pool[15065]: CopyTexSubImage3D (offset 373) */ "iiiiiiiii\0" "glCopyTexSubImage3D\0" "glCopyTexSubImage3DEXT\0" "\0" - /* _mesa_function_pool[13857]: VertexAttrib2dARB (will be remapped) */ + /* _mesa_function_pool[15119]: VertexAttrib2dARB (will be remapped) */ "idd\0" "glVertexAttrib2d\0" "glVertexAttrib2dARB\0" "\0" - /* _mesa_function_pool[13899]: Color4ub (offset 35) */ + /* _mesa_function_pool[15161]: Color4ub (offset 35) */ "iiii\0" "glColor4ub\0" "\0" - /* _mesa_function_pool[13916]: GetInteger64v (will be remapped) */ + /* _mesa_function_pool[15178]: GetInteger64v (will be remapped) */ "ip\0" "glGetInteger64v\0" "\0" - /* _mesa_function_pool[13936]: TextureColorMaskSGIS (dynamic) */ + /* _mesa_function_pool[15198]: TextureColorMaskSGIS (dynamic) */ "iiii\0" "glTextureColorMaskSGIS\0" "\0" - /* _mesa_function_pool[13965]: RasterPos2s (offset 68) */ + /* _mesa_function_pool[15227]: RasterPos2s (offset 68) */ "ii\0" "glRasterPos2s\0" "\0" - /* _mesa_function_pool[13983]: GetColorTable (offset 343) */ + /* _mesa_function_pool[15245]: GetColorTable (offset 343) */ "iiip\0" "glGetColorTable\0" "glGetColorTableSGI\0" "glGetColorTableEXT\0" "\0" - /* _mesa_function_pool[14043]: SelectBuffer (offset 195) */ + /* _mesa_function_pool[15305]: SelectBuffer (offset 195) */ "ip\0" "glSelectBuffer\0" "\0" - /* _mesa_function_pool[14062]: Indexiv (offset 49) */ + /* _mesa_function_pool[15324]: Indexiv (offset 49) */ "p\0" "glIndexiv\0" "\0" - /* _mesa_function_pool[14075]: TexCoord3i (offset 114) */ + /* _mesa_function_pool[15337]: TexCoord3i (offset 114) */ "iii\0" "glTexCoord3i\0" "\0" - /* _mesa_function_pool[14093]: CopyColorTable (offset 342) */ + /* _mesa_function_pool[15355]: CopyColorTable (offset 342) */ "iiiii\0" "glCopyColorTable\0" "glCopyColorTableSGI\0" "\0" - /* _mesa_function_pool[14137]: GetHistogramParameterfv (offset 362) */ + /* _mesa_function_pool[15399]: GetHistogramParameterfv (offset 362) */ "iip\0" "glGetHistogramParameterfv\0" "glGetHistogramParameterfvEXT\0" "\0" - /* _mesa_function_pool[14197]: Frustum (offset 289) */ + /* _mesa_function_pool[15459]: Frustum (offset 289) */ "dddddd\0" "glFrustum\0" "\0" - /* _mesa_function_pool[14215]: GetString (offset 275) */ + /* _mesa_function_pool[15477]: GetString (offset 275) */ "i\0" "glGetString\0" "\0" - /* _mesa_function_pool[14230]: ColorPointervINTEL (dynamic) */ + /* _mesa_function_pool[15492]: ColorPointervINTEL (dynamic) */ "iip\0" "glColorPointervINTEL\0" "\0" - /* _mesa_function_pool[14256]: TexEnvf (offset 184) */ + /* _mesa_function_pool[15518]: TexEnvf (offset 184) */ "iif\0" "glTexEnvf\0" "\0" - /* _mesa_function_pool[14271]: TexCoord3d (offset 110) */ + /* _mesa_function_pool[15533]: TexCoord3d (offset 110) */ "ddd\0" "glTexCoord3d\0" "\0" - /* _mesa_function_pool[14289]: AlphaFragmentOp1ATI (will be remapped) */ + /* _mesa_function_pool[15551]: AlphaFragmentOp1ATI (will be remapped) */ "iiiiii\0" "glAlphaFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[14319]: TexCoord3f (offset 112) */ + /* _mesa_function_pool[15581]: TexCoord3f (offset 112) */ "fff\0" "glTexCoord3f\0" "\0" - /* _mesa_function_pool[14337]: MultiTexCoord3ivARB (offset 397) */ + /* _mesa_function_pool[15599]: MultiTexCoord3ivARB (offset 397) */ "ip\0" "glMultiTexCoord3iv\0" "glMultiTexCoord3ivARB\0" "\0" - /* _mesa_function_pool[14382]: MultiTexCoord2sARB (offset 390) */ + /* _mesa_function_pool[15644]: MultiTexCoord2sARB (offset 390) */ "iii\0" "glMultiTexCoord2s\0" "glMultiTexCoord2sARB\0" "\0" - /* _mesa_function_pool[14426]: VertexAttrib1dvARB (will be remapped) */ + /* _mesa_function_pool[15688]: VertexAttrib1dvARB (will be remapped) */ "ip\0" "glVertexAttrib1dv\0" "glVertexAttrib1dvARB\0" "\0" - /* _mesa_function_pool[14469]: DeleteTextures (offset 327) */ + /* _mesa_function_pool[15731]: DeleteTextures (offset 327) */ "ip\0" "glDeleteTextures\0" "glDeleteTexturesEXT\0" "\0" - /* _mesa_function_pool[14510]: TexCoordPointerEXT (will be remapped) */ + /* _mesa_function_pool[15772]: TexCoordPointerEXT (will be remapped) */ "iiiip\0" "glTexCoordPointerEXT\0" "\0" - /* _mesa_function_pool[14538]: TexSubImage4DSGIS (dynamic) */ + /* _mesa_function_pool[15800]: TexSubImage4DSGIS (dynamic) */ "iiiiiiiiiiiip\0" "glTexSubImage4DSGIS\0" "\0" - /* _mesa_function_pool[14573]: TexCoord3s (offset 116) */ + /* _mesa_function_pool[15835]: TexCoord3s (offset 116) */ "iii\0" "glTexCoord3s\0" "\0" - /* _mesa_function_pool[14591]: GetTexLevelParameteriv (offset 285) */ + /* _mesa_function_pool[15853]: GetTexLevelParameteriv (offset 285) */ "iiip\0" "glGetTexLevelParameteriv\0" "\0" - /* _mesa_function_pool[14622]: DrawArraysInstanced (will be remapped) */ - "iiii\0" - "glDrawArraysInstanced\0" - "glDrawArraysInstancedARB\0" - "glDrawArraysInstancedEXT\0" - "\0" - /* _mesa_function_pool[14700]: CombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[15884]: CombinerStageParameterfvNV (dynamic) */ "iip\0" "glCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[14734]: StopInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[15918]: StopInstrumentsSGIX (dynamic) */ "i\0" "glStopInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[14759]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ + /* _mesa_function_pool[15943]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ "fffffffffffffff\0" "glTexCoord4fColor4fNormal3fVertex4fSUN\0" "\0" - /* _mesa_function_pool[14815]: ClearAccum (offset 204) */ + /* _mesa_function_pool[15999]: ClearAccum (offset 204) */ "ffff\0" "glClearAccum\0" "\0" - /* _mesa_function_pool[14834]: DeformSGIX (dynamic) */ + /* _mesa_function_pool[16018]: DeformSGIX (dynamic) */ "i\0" "glDeformSGIX\0" "\0" - /* _mesa_function_pool[14850]: GetVertexAttribfvARB (will be remapped) */ + /* _mesa_function_pool[16034]: GetVertexAttribfvARB (will be remapped) */ "iip\0" "glGetVertexAttribfv\0" "glGetVertexAttribfvARB\0" "\0" - /* _mesa_function_pool[14898]: SecondaryColor3ivEXT (will be remapped) */ + /* _mesa_function_pool[16082]: SecondaryColor3ivEXT (will be remapped) */ "p\0" "glSecondaryColor3iv\0" "glSecondaryColor3ivEXT\0" "\0" - /* _mesa_function_pool[14944]: TexCoord4iv (offset 123) */ + /* _mesa_function_pool[16128]: TexCoord4iv (offset 123) */ "p\0" "glTexCoord4iv\0" "\0" - /* _mesa_function_pool[14961]: UniformMatrix4x2fv (will be remapped) */ + /* _mesa_function_pool[16145]: VertexAttribI4uiEXT (will be remapped) */ + "iiiii\0" + "glVertexAttribI4uiEXT\0" + "glVertexAttribI4ui\0" + "\0" + /* _mesa_function_pool[16193]: GetFragmentMaterialfvSGIX (dynamic) */ + "iip\0" + "glGetFragmentMaterialfvSGIX\0" + "\0" + /* _mesa_function_pool[16226]: UniformMatrix4x2fv (will be remapped) */ "iiip\0" "glUniformMatrix4x2fv\0" "\0" - /* _mesa_function_pool[14988]: GetDetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[16253]: GetDetailTexFuncSGIS (dynamic) */ "ip\0" "glGetDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[15015]: GetCombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[16280]: GetCombinerStageParameterfvNV (dynamic) */ "iip\0" "glGetCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[15052]: PolygonOffset (offset 319) */ + /* _mesa_function_pool[16317]: PolygonOffset (offset 319) */ "ff\0" "glPolygonOffset\0" "\0" - /* _mesa_function_pool[15072]: BindVertexArray (will be remapped) */ + /* _mesa_function_pool[16337]: BindVertexArray (will be remapped) */ "i\0" "glBindVertexArray\0" "\0" - /* _mesa_function_pool[15093]: Color4ubVertex2fvSUN (dynamic) */ + /* _mesa_function_pool[16358]: Color4ubVertex2fvSUN (dynamic) */ "pp\0" "glColor4ubVertex2fvSUN\0" "\0" - /* _mesa_function_pool[15120]: Rectd (offset 86) */ + /* _mesa_function_pool[16385]: Rectd (offset 86) */ "dddd\0" "glRectd\0" "\0" - /* _mesa_function_pool[15134]: TexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[16399]: TexFilterFuncSGIS (dynamic) */ "iiip\0" "glTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[15160]: SampleMaskSGIS (will be remapped) */ + /* _mesa_function_pool[16425]: SampleMaskSGIS (will be remapped) */ "fi\0" "glSampleMaskSGIS\0" "glSampleMaskEXT\0" "\0" - /* _mesa_function_pool[15197]: GetAttribLocationARB (will be remapped) */ + /* _mesa_function_pool[16462]: VertexAttribI4ubvEXT (will be remapped) */ + "ip\0" + "glVertexAttribI4ubvEXT\0" + "glVertexAttribI4ubv\0" + "\0" + /* _mesa_function_pool[16509]: GetAttribLocationARB (will be remapped) */ "ip\0" "glGetAttribLocation\0" "glGetAttribLocationARB\0" "\0" - /* _mesa_function_pool[15244]: RasterPos3i (offset 74) */ + /* _mesa_function_pool[16556]: RasterPos3i (offset 74) */ "iii\0" "glRasterPos3i\0" "\0" - /* _mesa_function_pool[15263]: VertexAttrib4ubvARB (will be remapped) */ + /* _mesa_function_pool[16575]: VertexAttrib4ubvARB (will be remapped) */ "ip\0" "glVertexAttrib4ubv\0" "glVertexAttrib4ubvARB\0" "\0" - /* _mesa_function_pool[15308]: DetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[16620]: DetailTexFuncSGIS (dynamic) */ "iip\0" "glDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[15333]: Normal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[16645]: Normal3fVertex3fSUN (dynamic) */ "ffffff\0" "glNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[15363]: CopyTexImage2D (offset 324) */ + /* _mesa_function_pool[16675]: CopyTexImage2D (offset 324) */ "iiiiiiii\0" "glCopyTexImage2D\0" "glCopyTexImage2DEXT\0" "\0" - /* _mesa_function_pool[15410]: GetBufferPointervARB (will be remapped) */ + /* _mesa_function_pool[16722]: GetBufferPointervARB (will be remapped) */ "iip\0" "glGetBufferPointerv\0" "glGetBufferPointervARB\0" "\0" - /* _mesa_function_pool[15458]: ProgramEnvParameter4fARB (will be remapped) */ + /* _mesa_function_pool[16770]: ProgramEnvParameter4fARB (will be remapped) */ "iiffff\0" "glProgramEnvParameter4fARB\0" "glProgramParameter4fNV\0" "\0" - /* _mesa_function_pool[15516]: Uniform3ivARB (will be remapped) */ + /* _mesa_function_pool[16828]: Uniform3ivARB (will be remapped) */ "iip\0" "glUniform3iv\0" "glUniform3ivARB\0" "\0" - /* _mesa_function_pool[15550]: Lightfv (offset 160) */ + /* _mesa_function_pool[16862]: Lightfv (offset 160) */ "iip\0" "glLightfv\0" "\0" - /* _mesa_function_pool[15565]: PrimitiveRestartIndexNV (will be remapped) */ + /* _mesa_function_pool[16877]: PrimitiveRestartIndexNV (will be remapped) */ "i\0" "glPrimitiveRestartIndexNV\0" + "glPrimitiveRestartIndex\0" "\0" - /* _mesa_function_pool[15594]: ClearDepth (offset 208) */ + /* _mesa_function_pool[16930]: ClearDepth (offset 208) */ "d\0" "glClearDepth\0" "\0" - /* _mesa_function_pool[15610]: GetFenceivNV (will be remapped) */ + /* _mesa_function_pool[16946]: GetFenceivNV (will be remapped) */ "iip\0" "glGetFenceivNV\0" "\0" - /* _mesa_function_pool[15630]: WindowPos4dvMESA (will be remapped) */ + /* _mesa_function_pool[16966]: WindowPos4dvMESA (will be remapped) */ "p\0" "glWindowPos4dvMESA\0" "\0" - /* _mesa_function_pool[15652]: ColorSubTable (offset 346) */ + /* _mesa_function_pool[16988]: ColorSubTable (offset 346) */ "iiiiip\0" "glColorSubTable\0" "glColorSubTableEXT\0" "\0" - /* _mesa_function_pool[15695]: Color4fv (offset 30) */ + /* _mesa_function_pool[17031]: Color4fv (offset 30) */ "p\0" "glColor4fv\0" "\0" - /* _mesa_function_pool[15709]: MultiTexCoord4ivARB (offset 405) */ + /* _mesa_function_pool[17045]: MultiTexCoord4ivARB (offset 405) */ "ip\0" "glMultiTexCoord4iv\0" "glMultiTexCoord4ivARB\0" "\0" - /* _mesa_function_pool[15754]: DrawElementsInstanced (will be remapped) */ - "iiipi\0" - "glDrawElementsInstanced\0" - "glDrawElementsInstancedARB\0" - "glDrawElementsInstancedEXT\0" + /* _mesa_function_pool[17090]: ProgramLocalParameters4fvEXT (will be remapped) */ + "iiip\0" + "glProgramLocalParameters4fvEXT\0" "\0" - /* _mesa_function_pool[15839]: ColorPointer (offset 308) */ + /* _mesa_function_pool[17127]: ColorPointer (offset 308) */ "iiip\0" "glColorPointer\0" "\0" - /* _mesa_function_pool[15860]: Rects (offset 92) */ + /* _mesa_function_pool[17148]: Rects (offset 92) */ "iiii\0" "glRects\0" "\0" - /* _mesa_function_pool[15874]: GetMapAttribParameterfvNV (dynamic) */ + /* _mesa_function_pool[17162]: GetMapAttribParameterfvNV (dynamic) */ "iiip\0" "glGetMapAttribParameterfvNV\0" "\0" - /* _mesa_function_pool[15908]: Lightiv (offset 162) */ + /* _mesa_function_pool[17196]: CreateShaderProgramEXT (will be remapped) */ + "ip\0" + "glCreateShaderProgramEXT\0" + "\0" + /* _mesa_function_pool[17225]: ActiveProgramEXT (will be remapped) */ + "i\0" + "glActiveProgramEXT\0" + "\0" + /* _mesa_function_pool[17247]: Lightiv (offset 162) */ "iip\0" "glLightiv\0" "\0" - /* _mesa_function_pool[15923]: VertexAttrib4sARB (will be remapped) */ + /* _mesa_function_pool[17262]: VertexAttrib4sARB (will be remapped) */ "iiiii\0" "glVertexAttrib4s\0" "glVertexAttrib4sARB\0" "\0" - /* _mesa_function_pool[15967]: GetQueryObjectuivARB (will be remapped) */ + /* _mesa_function_pool[17306]: GetQueryObjectuivARB (will be remapped) */ "iip\0" "glGetQueryObjectuiv\0" "glGetQueryObjectuivARB\0" "\0" - /* _mesa_function_pool[16015]: GetTexParameteriv (offset 283) */ + /* _mesa_function_pool[17354]: GetTexParameteriv (offset 283) */ "iip\0" "glGetTexParameteriv\0" "\0" - /* _mesa_function_pool[16040]: MapParameterivNV (dynamic) */ + /* _mesa_function_pool[17379]: MapParameterivNV (dynamic) */ "iip\0" "glMapParameterivNV\0" "\0" - /* _mesa_function_pool[16064]: GenRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[17403]: GenRenderbuffersEXT (will be remapped) */ "ip\0" "glGenRenderbuffers\0" "glGenRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[16109]: VertexAttrib2dvARB (will be remapped) */ + /* _mesa_function_pool[17448]: ClearBufferfv (will be remapped) */ + "iip\0" + "glClearBufferfv\0" + "\0" + /* _mesa_function_pool[17469]: VertexAttrib2dvARB (will be remapped) */ "ip\0" "glVertexAttrib2dv\0" "glVertexAttrib2dvARB\0" "\0" - /* _mesa_function_pool[16152]: EdgeFlagPointerEXT (will be remapped) */ + /* _mesa_function_pool[17512]: EdgeFlagPointerEXT (will be remapped) */ "iip\0" "glEdgeFlagPointerEXT\0" "\0" - /* _mesa_function_pool[16178]: VertexAttribs2svNV (will be remapped) */ + /* _mesa_function_pool[17538]: VertexAttribs2svNV (will be remapped) */ "iip\0" "glVertexAttribs2svNV\0" "\0" - /* _mesa_function_pool[16204]: WeightbvARB (dynamic) */ + /* _mesa_function_pool[17564]: WeightbvARB (dynamic) */ "ip\0" "glWeightbvARB\0" "\0" - /* _mesa_function_pool[16222]: VertexAttrib2fvARB (will be remapped) */ + /* _mesa_function_pool[17582]: VertexAttrib2fvARB (will be remapped) */ "ip\0" "glVertexAttrib2fv\0" "glVertexAttrib2fvARB\0" "\0" - /* _mesa_function_pool[16265]: GetBufferParameterivARB (will be remapped) */ + /* _mesa_function_pool[17625]: GetBufferParameterivARB (will be remapped) */ "iip\0" "glGetBufferParameteriv\0" "glGetBufferParameterivARB\0" "\0" - /* _mesa_function_pool[16319]: Rectdv (offset 87) */ + /* _mesa_function_pool[17679]: Rectdv (offset 87) */ "pp\0" "glRectdv\0" "\0" - /* _mesa_function_pool[16332]: ListParameteriSGIX (dynamic) */ + /* _mesa_function_pool[17692]: ListParameteriSGIX (dynamic) */ "iii\0" "glListParameteriSGIX\0" "\0" - /* _mesa_function_pool[16358]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[17718]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ "iffffffffff\0" "glReplacementCodeuiColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[16417]: InstrumentsBufferSGIX (dynamic) */ + /* _mesa_function_pool[17777]: InstrumentsBufferSGIX (dynamic) */ "ip\0" "glInstrumentsBufferSGIX\0" "\0" - /* _mesa_function_pool[16445]: VertexAttrib4NivARB (will be remapped) */ + /* _mesa_function_pool[17805]: VertexAttrib4NivARB (will be remapped) */ "ip\0" "glVertexAttrib4Niv\0" "glVertexAttrib4NivARB\0" "\0" - /* _mesa_function_pool[16490]: GetAttachedShaders (will be remapped) */ + /* _mesa_function_pool[17850]: DrawArraysInstancedARB (will be remapped) */ + "iiii\0" + "glDrawArraysInstancedARB\0" + "glDrawArraysInstancedEXT\0" + "glDrawArraysInstanced\0" + "\0" + /* _mesa_function_pool[17928]: GetAttachedShaders (will be remapped) */ "iipp\0" "glGetAttachedShaders\0" "\0" - /* _mesa_function_pool[16517]: GenVertexArraysAPPLE (will be remapped) */ + /* _mesa_function_pool[17955]: GenVertexArraysAPPLE (will be remapped) */ "ip\0" "glGenVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[16544]: Materialiv (offset 172) */ + /* _mesa_function_pool[17982]: ClearBufferfi (will be remapped) */ + "iifi\0" + "glClearBufferfi\0" + "\0" + /* _mesa_function_pool[18004]: Materialiv (offset 172) */ "iip\0" "glMaterialiv\0" "\0" - /* _mesa_function_pool[16562]: PushClientAttrib (offset 335) */ + /* _mesa_function_pool[18022]: PushClientAttrib (offset 335) */ "i\0" "glPushClientAttrib\0" "\0" - /* _mesa_function_pool[16584]: ProgramEnvParameters4fvEXT (will be remapped) */ + /* _mesa_function_pool[18044]: ProgramEnvParameters4fvEXT (will be remapped) */ "iiip\0" "glProgramEnvParameters4fvEXT\0" "\0" - /* _mesa_function_pool[16619]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[18079]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[16665]: WindowPos2iMESA (will be remapped) */ + /* _mesa_function_pool[18125]: WindowPos2iMESA (will be remapped) */ "ii\0" "glWindowPos2i\0" "glWindowPos2iARB\0" "glWindowPos2iMESA\0" "\0" - /* _mesa_function_pool[16718]: SecondaryColor3fvEXT (will be remapped) */ + /* _mesa_function_pool[18178]: SecondaryColor3fvEXT (will be remapped) */ "p\0" "glSecondaryColor3fv\0" "glSecondaryColor3fvEXT\0" "\0" - /* _mesa_function_pool[16764]: PolygonMode (offset 174) */ + /* _mesa_function_pool[18224]: PolygonMode (offset 174) */ "ii\0" "glPolygonMode\0" "\0" - /* _mesa_function_pool[16782]: CompressedTexSubImage1DARB (will be remapped) */ + /* _mesa_function_pool[18242]: CompressedTexSubImage1DARB (will be remapped) */ "iiiiiip\0" "glCompressedTexSubImage1D\0" "glCompressedTexSubImage1DARB\0" "\0" - /* _mesa_function_pool[16846]: GetVertexAttribivNV (will be remapped) */ + /* _mesa_function_pool[18306]: VertexAttribI1iEXT (will be remapped) */ + "ii\0" + "glVertexAttribI1iEXT\0" + "glVertexAttribI1i\0" + "\0" + /* _mesa_function_pool[18349]: GetVertexAttribivNV (will be remapped) */ "iip\0" "glGetVertexAttribivNV\0" "\0" - /* _mesa_function_pool[16873]: GetProgramStringARB (will be remapped) */ + /* _mesa_function_pool[18376]: GetProgramStringARB (will be remapped) */ "iip\0" "glGetProgramStringARB\0" "\0" - /* _mesa_function_pool[16900]: TexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[18403]: VertexAttribIPointerEXT (will be remapped) */ + "iiiip\0" + "glVertexAttribIPointerEXT\0" + "glVertexAttribIPointer\0" + "\0" + /* _mesa_function_pool[18459]: TexBumpParameterfvATI (will be remapped) */ "ip\0" "glTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[16928]: CompileShaderARB (will be remapped) */ + /* _mesa_function_pool[18487]: CompileShaderARB (will be remapped) */ "i\0" "glCompileShader\0" "glCompileShaderARB\0" "\0" - /* _mesa_function_pool[16966]: DeleteShader (will be remapped) */ + /* _mesa_function_pool[18525]: DeleteShader (will be remapped) */ "i\0" "glDeleteShader\0" "\0" - /* _mesa_function_pool[16984]: DisableClientState (offset 309) */ + /* _mesa_function_pool[18543]: DisableClientState (offset 309) */ "i\0" "glDisableClientState\0" "\0" - /* _mesa_function_pool[17008]: TexGeni (offset 192) */ + /* _mesa_function_pool[18567]: TexGeni (offset 192) */ "iii\0" "glTexGeni\0" "\0" - /* _mesa_function_pool[17023]: TexGenf (offset 190) */ + /* _mesa_function_pool[18582]: TexGenf (offset 190) */ "iif\0" "glTexGenf\0" "\0" - /* _mesa_function_pool[17038]: Uniform3fARB (will be remapped) */ + /* _mesa_function_pool[18597]: Uniform3fARB (will be remapped) */ "ifff\0" "glUniform3f\0" "glUniform3fARB\0" "\0" - /* _mesa_function_pool[17071]: TexGend (offset 188) */ + /* _mesa_function_pool[18630]: TexGend (offset 188) */ "iid\0" "glTexGend\0" "\0" - /* _mesa_function_pool[17086]: ListParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[18645]: ListParameterfvSGIX (dynamic) */ "iip\0" "glListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[17113]: GetPolygonStipple (offset 274) */ + /* _mesa_function_pool[18672]: GetPolygonStipple (offset 274) */ "p\0" "glGetPolygonStipple\0" "\0" - /* _mesa_function_pool[17136]: Tangent3dvEXT (dynamic) */ + /* _mesa_function_pool[18695]: Tangent3dvEXT (dynamic) */ "p\0" "glTangent3dvEXT\0" "\0" - /* _mesa_function_pool[17155]: BindBufferOffsetEXT (will be remapped) */ + /* _mesa_function_pool[18714]: BindBufferOffsetEXT (will be remapped) */ "iiii\0" "glBindBufferOffsetEXT\0" "\0" - /* _mesa_function_pool[17183]: WindowPos3sMESA (will be remapped) */ + /* _mesa_function_pool[18742]: WindowPos3sMESA (will be remapped) */ "iii\0" "glWindowPos3s\0" "glWindowPos3sARB\0" "glWindowPos3sMESA\0" "\0" - /* _mesa_function_pool[17237]: VertexAttrib2svNV (will be remapped) */ + /* _mesa_function_pool[18796]: VertexAttrib2svNV (will be remapped) */ "ip\0" "glVertexAttrib2svNV\0" "\0" - /* _mesa_function_pool[17261]: DisableIndexedEXT (will be remapped) */ + /* _mesa_function_pool[18820]: DisableIndexedEXT (will be remapped) */ "ii\0" "glDisableIndexedEXT\0" + "glDisablei\0" "\0" - /* _mesa_function_pool[17285]: BindBufferBaseEXT (will be remapped) */ + /* _mesa_function_pool[18855]: BindBufferBaseEXT (will be remapped) */ "iii\0" "glBindBufferBaseEXT\0" "glBindBufferBase\0" "\0" - /* _mesa_function_pool[17327]: TexCoord2fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[18897]: TexCoord2fVertex3fvSUN (dynamic) */ "pp\0" "glTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[17356]: WindowPos4sMESA (will be remapped) */ + /* _mesa_function_pool[18926]: WindowPos4sMESA (will be remapped) */ "iiii\0" "glWindowPos4sMESA\0" "\0" - /* _mesa_function_pool[17380]: VertexAttrib4NuivARB (will be remapped) */ + /* _mesa_function_pool[18950]: VertexAttrib4NuivARB (will be remapped) */ "ip\0" "glVertexAttrib4Nuiv\0" "glVertexAttrib4NuivARB\0" "\0" - /* _mesa_function_pool[17427]: ClientActiveTextureARB (offset 375) */ + /* _mesa_function_pool[18997]: ClientActiveTextureARB (offset 375) */ "i\0" "glClientActiveTexture\0" "glClientActiveTextureARB\0" "\0" - /* _mesa_function_pool[17477]: PixelTexGenSGIX (will be remapped) */ + /* _mesa_function_pool[19047]: PixelTexGenSGIX (will be remapped) */ "i\0" "glPixelTexGenSGIX\0" "\0" - /* _mesa_function_pool[17498]: ReplacementCodeusvSUN (dynamic) */ + /* _mesa_function_pool[19068]: ReplacementCodeusvSUN (dynamic) */ "p\0" "glReplacementCodeusvSUN\0" "\0" - /* _mesa_function_pool[17525]: Uniform4fARB (will be remapped) */ + /* _mesa_function_pool[19095]: Uniform4fARB (will be remapped) */ "iffff\0" "glUniform4f\0" "glUniform4fARB\0" "\0" - /* _mesa_function_pool[17559]: Color4sv (offset 34) */ + /* _mesa_function_pool[19129]: Color4sv (offset 34) */ "p\0" "glColor4sv\0" "\0" - /* _mesa_function_pool[17573]: FlushMappedBufferRange (will be remapped) */ + /* _mesa_function_pool[19143]: FlushMappedBufferRange (will be remapped) */ "iii\0" "glFlushMappedBufferRange\0" "\0" - /* _mesa_function_pool[17603]: IsProgramNV (will be remapped) */ + /* _mesa_function_pool[19173]: IsProgramNV (will be remapped) */ "i\0" "glIsProgramARB\0" "glIsProgramNV\0" "\0" - /* _mesa_function_pool[17635]: FlushMappedBufferRangeAPPLE (will be remapped) */ + /* _mesa_function_pool[19205]: FlushMappedBufferRangeAPPLE (will be remapped) */ "iii\0" "glFlushMappedBufferRangeAPPLE\0" "\0" - /* _mesa_function_pool[17670]: PixelZoom (offset 246) */ + /* _mesa_function_pool[19240]: PixelZoom (offset 246) */ "ff\0" "glPixelZoom\0" "\0" - /* _mesa_function_pool[17686]: ReplacementCodePointerSUN (dynamic) */ + /* _mesa_function_pool[19256]: ReplacementCodePointerSUN (dynamic) */ "iip\0" "glReplacementCodePointerSUN\0" "\0" - /* _mesa_function_pool[17719]: ProgramEnvParameter4dARB (will be remapped) */ + /* _mesa_function_pool[19289]: ProgramEnvParameter4dARB (will be remapped) */ "iidddd\0" "glProgramEnvParameter4dARB\0" "glProgramParameter4dNV\0" "\0" - /* _mesa_function_pool[17777]: ColorTableParameterfv (offset 340) */ + /* _mesa_function_pool[19347]: ColorTableParameterfv (offset 340) */ "iip\0" "glColorTableParameterfv\0" "glColorTableParameterfvSGI\0" "\0" - /* _mesa_function_pool[17833]: FragmentLightModelfSGIX (dynamic) */ + /* _mesa_function_pool[19403]: FragmentLightModelfSGIX (dynamic) */ "if\0" "glFragmentLightModelfSGIX\0" "\0" - /* _mesa_function_pool[17863]: Binormal3bvEXT (dynamic) */ + /* _mesa_function_pool[19433]: Binormal3bvEXT (dynamic) */ "p\0" "glBinormal3bvEXT\0" "\0" - /* _mesa_function_pool[17883]: PixelMapuiv (offset 252) */ + /* _mesa_function_pool[19453]: PixelMapuiv (offset 252) */ "iip\0" "glPixelMapuiv\0" "\0" - /* _mesa_function_pool[17902]: Color3dv (offset 12) */ + /* _mesa_function_pool[19472]: Color3dv (offset 12) */ "p\0" "glColor3dv\0" "\0" - /* _mesa_function_pool[17916]: IsTexture (offset 330) */ + /* _mesa_function_pool[19486]: IsTexture (offset 330) */ "i\0" "glIsTexture\0" "glIsTextureEXT\0" "\0" - /* _mesa_function_pool[17946]: VertexWeightfvEXT (dynamic) */ + /* _mesa_function_pool[19516]: VertexWeightfvEXT (dynamic) */ "p\0" "glVertexWeightfvEXT\0" "\0" - /* _mesa_function_pool[17969]: VertexAttrib1dARB (will be remapped) */ + /* _mesa_function_pool[19539]: VertexAttrib1dARB (will be remapped) */ "id\0" "glVertexAttrib1d\0" "glVertexAttrib1dARB\0" "\0" - /* _mesa_function_pool[18010]: ImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[19580]: ImageTransformParameterivHP (dynamic) */ "iip\0" "glImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[18045]: TexCoord4i (offset 122) */ + /* _mesa_function_pool[19615]: TexCoord4i (offset 122) */ "iiii\0" "glTexCoord4i\0" "\0" - /* _mesa_function_pool[18064]: DeleteQueriesARB (will be remapped) */ + /* _mesa_function_pool[19634]: DeleteQueriesARB (will be remapped) */ "ip\0" "glDeleteQueries\0" "glDeleteQueriesARB\0" "\0" - /* _mesa_function_pool[18103]: Color4ubVertex2fSUN (dynamic) */ + /* _mesa_function_pool[19673]: Color4ubVertex2fSUN (dynamic) */ "iiiiff\0" "glColor4ubVertex2fSUN\0" "\0" - /* _mesa_function_pool[18133]: FragmentColorMaterialSGIX (dynamic) */ + /* _mesa_function_pool[19703]: FragmentColorMaterialSGIX (dynamic) */ "ii\0" "glFragmentColorMaterialSGIX\0" "\0" - /* _mesa_function_pool[18165]: CurrentPaletteMatrixARB (dynamic) */ + /* _mesa_function_pool[19735]: CurrentPaletteMatrixARB (dynamic) */ "i\0" "glCurrentPaletteMatrixARB\0" "\0" - /* _mesa_function_pool[18194]: GetMapdv (offset 266) */ + /* _mesa_function_pool[19764]: GetMapdv (offset 266) */ "iip\0" "glGetMapdv\0" "\0" - /* _mesa_function_pool[18210]: ObjectPurgeableAPPLE (will be remapped) */ + /* _mesa_function_pool[19780]: ObjectPurgeableAPPLE (will be remapped) */ "iii\0" "glObjectPurgeableAPPLE\0" "\0" - /* _mesa_function_pool[18238]: SamplePatternSGIS (will be remapped) */ + /* _mesa_function_pool[19808]: GetStringi (will be remapped) */ + "ii\0" + "glGetStringi\0" + "\0" + /* _mesa_function_pool[19825]: SamplePatternSGIS (will be remapped) */ "i\0" "glSamplePatternSGIS\0" "glSamplePatternEXT\0" "\0" - /* _mesa_function_pool[18280]: PixelStoref (offset 249) */ + /* _mesa_function_pool[19867]: PixelStoref (offset 249) */ "if\0" "glPixelStoref\0" "\0" - /* _mesa_function_pool[18298]: IsQueryARB (will be remapped) */ + /* _mesa_function_pool[19885]: IsQueryARB (will be remapped) */ "i\0" "glIsQuery\0" "glIsQueryARB\0" "\0" - /* _mesa_function_pool[18324]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[19911]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ "iiiiifff\0" "glReplacementCodeuiColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[18373]: PixelStorei (offset 250) */ + /* _mesa_function_pool[19960]: PixelStorei (offset 250) */ "ii\0" "glPixelStorei\0" "\0" - /* _mesa_function_pool[18391]: VertexAttrib4usvARB (will be remapped) */ + /* _mesa_function_pool[19978]: VertexAttrib4usvARB (will be remapped) */ "ip\0" "glVertexAttrib4usv\0" "glVertexAttrib4usvARB\0" "\0" - /* _mesa_function_pool[18436]: LinkProgramARB (will be remapped) */ + /* _mesa_function_pool[20023]: LinkProgramARB (will be remapped) */ "i\0" "glLinkProgram\0" "glLinkProgramARB\0" "\0" - /* _mesa_function_pool[18470]: VertexAttrib2fNV (will be remapped) */ + /* _mesa_function_pool[20057]: VertexAttrib2fNV (will be remapped) */ "iff\0" "glVertexAttrib2fNV\0" "\0" - /* _mesa_function_pool[18494]: ShaderSourceARB (will be remapped) */ + /* _mesa_function_pool[20081]: ShaderSourceARB (will be remapped) */ "iipp\0" "glShaderSource\0" "glShaderSourceARB\0" "\0" - /* _mesa_function_pool[18533]: FragmentMaterialiSGIX (dynamic) */ + /* _mesa_function_pool[20120]: FragmentMaterialiSGIX (dynamic) */ "iii\0" "glFragmentMaterialiSGIX\0" "\0" - /* _mesa_function_pool[18562]: EvalCoord2dv (offset 233) */ + /* _mesa_function_pool[20149]: EvalCoord2dv (offset 233) */ "p\0" "glEvalCoord2dv\0" "\0" - /* _mesa_function_pool[18580]: VertexAttrib3svARB (will be remapped) */ + /* _mesa_function_pool[20167]: VertexAttrib3svARB (will be remapped) */ "ip\0" "glVertexAttrib3sv\0" "glVertexAttrib3svARB\0" "\0" - /* _mesa_function_pool[18623]: ColorMaterial (offset 151) */ + /* _mesa_function_pool[20210]: ColorMaterial (offset 151) */ "ii\0" "glColorMaterial\0" "\0" - /* _mesa_function_pool[18643]: CompressedTexSubImage3DARB (will be remapped) */ + /* _mesa_function_pool[20230]: CompressedTexSubImage3DARB (will be remapped) */ "iiiiiiiiiip\0" "glCompressedTexSubImage3D\0" "glCompressedTexSubImage3DARB\0" "\0" - /* _mesa_function_pool[18711]: WindowPos2ivMESA (will be remapped) */ + /* _mesa_function_pool[20298]: WindowPos2ivMESA (will be remapped) */ "p\0" "glWindowPos2iv\0" "glWindowPos2ivARB\0" "glWindowPos2ivMESA\0" "\0" - /* _mesa_function_pool[18766]: IsFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[20353]: IsFramebufferEXT (will be remapped) */ "i\0" "glIsFramebuffer\0" "glIsFramebufferEXT\0" "\0" - /* _mesa_function_pool[18804]: Uniform4ivARB (will be remapped) */ + /* _mesa_function_pool[20391]: Uniform4ivARB (will be remapped) */ "iip\0" "glUniform4iv\0" "glUniform4ivARB\0" "\0" - /* _mesa_function_pool[18838]: GetVertexAttribdvARB (will be remapped) */ + /* _mesa_function_pool[20425]: GetVertexAttribdvARB (will be remapped) */ "iip\0" "glGetVertexAttribdv\0" "glGetVertexAttribdvARB\0" "\0" - /* _mesa_function_pool[18886]: TexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[20473]: TexBumpParameterivATI (will be remapped) */ "ip\0" "glTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[18914]: GetSeparableFilter (offset 359) */ + /* _mesa_function_pool[20501]: GetSeparableFilter (offset 359) */ "iiippp\0" "glGetSeparableFilter\0" "glGetSeparableFilterEXT\0" "\0" - /* _mesa_function_pool[18967]: Binormal3dEXT (dynamic) */ + /* _mesa_function_pool[20554]: Binormal3dEXT (dynamic) */ "ddd\0" "glBinormal3dEXT\0" "\0" - /* _mesa_function_pool[18988]: SpriteParameteriSGIX (dynamic) */ + /* _mesa_function_pool[20575]: SpriteParameteriSGIX (dynamic) */ "ii\0" "glSpriteParameteriSGIX\0" "\0" - /* _mesa_function_pool[19015]: RequestResidentProgramsNV (will be remapped) */ + /* _mesa_function_pool[20602]: RequestResidentProgramsNV (will be remapped) */ "ip\0" "glRequestResidentProgramsNV\0" "\0" - /* _mesa_function_pool[19047]: TagSampleBufferSGIX (dynamic) */ + /* _mesa_function_pool[20634]: TagSampleBufferSGIX (dynamic) */ "\0" "glTagSampleBufferSGIX\0" "\0" - /* _mesa_function_pool[19071]: TransformFeedbackVaryingsEXT (will be remapped) */ + /* _mesa_function_pool[20658]: TransformFeedbackVaryingsEXT (will be remapped) */ "iipi\0" "glTransformFeedbackVaryingsEXT\0" "glTransformFeedbackVaryings\0" "\0" - /* _mesa_function_pool[19136]: FeedbackBuffer (offset 194) */ + /* _mesa_function_pool[20723]: FeedbackBuffer (offset 194) */ "iip\0" "glFeedbackBuffer\0" "\0" - /* _mesa_function_pool[19158]: RasterPos2iv (offset 67) */ + /* _mesa_function_pool[20745]: RasterPos2iv (offset 67) */ "p\0" "glRasterPos2iv\0" "\0" - /* _mesa_function_pool[19176]: TexImage1D (offset 182) */ + /* _mesa_function_pool[20763]: TexImage1D (offset 182) */ "iiiiiiip\0" "glTexImage1D\0" "\0" - /* _mesa_function_pool[19199]: ListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[20786]: ListParameterivSGIX (dynamic) */ "iip\0" "glListParameterivSGIX\0" "\0" - /* _mesa_function_pool[19226]: MultiDrawElementsEXT (will be remapped) */ + /* _mesa_function_pool[20813]: MultiDrawElementsEXT (will be remapped) */ "ipipi\0" "glMultiDrawElements\0" "glMultiDrawElementsEXT\0" "\0" - /* _mesa_function_pool[19276]: Color3s (offset 17) */ + /* _mesa_function_pool[20863]: Color3s (offset 17) */ "iii\0" "glColor3s\0" "\0" - /* _mesa_function_pool[19291]: Uniform1ivARB (will be remapped) */ + /* _mesa_function_pool[20878]: Uniform1ivARB (will be remapped) */ "iip\0" "glUniform1iv\0" "glUniform1ivARB\0" "\0" - /* _mesa_function_pool[19325]: WindowPos2sMESA (will be remapped) */ + /* _mesa_function_pool[20912]: WindowPos2sMESA (will be remapped) */ "ii\0" "glWindowPos2s\0" "glWindowPos2sARB\0" "glWindowPos2sMESA\0" "\0" - /* _mesa_function_pool[19378]: WeightusvARB (dynamic) */ + /* _mesa_function_pool[20965]: WeightusvARB (dynamic) */ "ip\0" "glWeightusvARB\0" "\0" - /* _mesa_function_pool[19397]: TexCoordPointer (offset 320) */ + /* _mesa_function_pool[20984]: TexCoordPointer (offset 320) */ "iiip\0" "glTexCoordPointer\0" "\0" - /* _mesa_function_pool[19421]: FogCoordPointerEXT (will be remapped) */ + /* _mesa_function_pool[21008]: FogCoordPointerEXT (will be remapped) */ "iip\0" "glFogCoordPointer\0" "glFogCoordPointerEXT\0" "\0" - /* _mesa_function_pool[19465]: IndexMaterialEXT (dynamic) */ + /* _mesa_function_pool[21052]: IndexMaterialEXT (dynamic) */ "ii\0" "glIndexMaterialEXT\0" "\0" - /* _mesa_function_pool[19488]: Color3i (offset 15) */ + /* _mesa_function_pool[21075]: Color3i (offset 15) */ "iii\0" "glColor3i\0" "\0" - /* _mesa_function_pool[19503]: FrontFace (offset 157) */ + /* _mesa_function_pool[21090]: FrontFace (offset 157) */ "i\0" "glFrontFace\0" "\0" - /* _mesa_function_pool[19518]: EvalCoord2d (offset 232) */ + /* _mesa_function_pool[21105]: EvalCoord2d (offset 232) */ "dd\0" "glEvalCoord2d\0" "\0" - /* _mesa_function_pool[19536]: SecondaryColor3ubvEXT (will be remapped) */ + /* _mesa_function_pool[21123]: SecondaryColor3ubvEXT (will be remapped) */ "p\0" "glSecondaryColor3ubv\0" "glSecondaryColor3ubvEXT\0" "\0" - /* _mesa_function_pool[19584]: EvalCoord2f (offset 234) */ + /* _mesa_function_pool[21171]: EvalCoord2f (offset 234) */ "ff\0" "glEvalCoord2f\0" "\0" - /* _mesa_function_pool[19602]: VertexAttrib4dvARB (will be remapped) */ + /* _mesa_function_pool[21189]: VertexAttrib4dvARB (will be remapped) */ "ip\0" "glVertexAttrib4dv\0" "glVertexAttrib4dvARB\0" "\0" - /* _mesa_function_pool[19645]: BindAttribLocationARB (will be remapped) */ + /* _mesa_function_pool[21232]: BindAttribLocationARB (will be remapped) */ "iip\0" "glBindAttribLocation\0" "glBindAttribLocationARB\0" "\0" - /* _mesa_function_pool[19695]: Color3b (offset 9) */ + /* _mesa_function_pool[21282]: Color3b (offset 9) */ "iii\0" "glColor3b\0" "\0" - /* _mesa_function_pool[19710]: MultiTexCoord2dARB (offset 384) */ + /* _mesa_function_pool[21297]: MultiTexCoord2dARB (offset 384) */ "idd\0" "glMultiTexCoord2d\0" "glMultiTexCoord2dARB\0" "\0" - /* _mesa_function_pool[19754]: ExecuteProgramNV (will be remapped) */ + /* _mesa_function_pool[21341]: ExecuteProgramNV (will be remapped) */ "iip\0" "glExecuteProgramNV\0" "\0" - /* _mesa_function_pool[19778]: Color3f (offset 13) */ + /* _mesa_function_pool[21365]: Color3f (offset 13) */ "fff\0" "glColor3f\0" "\0" - /* _mesa_function_pool[19793]: LightEnviSGIX (dynamic) */ + /* _mesa_function_pool[21380]: LightEnviSGIX (dynamic) */ "ii\0" "glLightEnviSGIX\0" "\0" - /* _mesa_function_pool[19813]: Color3d (offset 11) */ + /* _mesa_function_pool[21400]: Color3d (offset 11) */ "ddd\0" "glColor3d\0" "\0" - /* _mesa_function_pool[19828]: Normal3dv (offset 55) */ + /* _mesa_function_pool[21415]: Normal3dv (offset 55) */ "p\0" "glNormal3dv\0" "\0" - /* _mesa_function_pool[19843]: Lightf (offset 159) */ + /* _mesa_function_pool[21430]: Lightf (offset 159) */ "iif\0" "glLightf\0" "\0" - /* _mesa_function_pool[19857]: ReplacementCodeuiSUN (dynamic) */ + /* _mesa_function_pool[21444]: ReplacementCodeuiSUN (dynamic) */ "i\0" "glReplacementCodeuiSUN\0" "\0" - /* _mesa_function_pool[19883]: MatrixMode (offset 293) */ + /* _mesa_function_pool[21470]: MatrixMode (offset 293) */ "i\0" "glMatrixMode\0" "\0" - /* _mesa_function_pool[19899]: GetPixelMapusv (offset 273) */ + /* _mesa_function_pool[21486]: GetPixelMapusv (offset 273) */ "ip\0" "glGetPixelMapusv\0" "\0" - /* _mesa_function_pool[19920]: Lighti (offset 161) */ + /* _mesa_function_pool[21507]: Lighti (offset 161) */ "iii\0" "glLighti\0" "\0" - /* _mesa_function_pool[19934]: VertexAttribPointerNV (will be remapped) */ + /* _mesa_function_pool[21521]: VertexAttribPointerNV (will be remapped) */ "iiiip\0" "glVertexAttribPointerNV\0" "\0" - /* _mesa_function_pool[19965]: ProgramLocalParameters4fvEXT (will be remapped) */ - "iiip\0" - "glProgramLocalParameters4fvEXT\0" - "\0" - /* _mesa_function_pool[20002]: GetBooleanIndexedvEXT (will be remapped) */ + /* _mesa_function_pool[21552]: GetBooleanIndexedvEXT (will be remapped) */ "iip\0" "glGetBooleanIndexedvEXT\0" + "glGetBooleani_v\0" "\0" - /* _mesa_function_pool[20031]: GetFramebufferAttachmentParameterivEXT (will be remapped) */ + /* _mesa_function_pool[21597]: GetFramebufferAttachmentParameterivEXT (will be remapped) */ "iiip\0" "glGetFramebufferAttachmentParameteriv\0" "glGetFramebufferAttachmentParameterivEXT\0" "\0" - /* _mesa_function_pool[20116]: PixelTransformParameterfEXT (dynamic) */ + /* _mesa_function_pool[21682]: PixelTransformParameterfEXT (dynamic) */ "iif\0" "glPixelTransformParameterfEXT\0" "\0" - /* _mesa_function_pool[20151]: MultiTexCoord4dvARB (offset 401) */ + /* _mesa_function_pool[21717]: MultiTexCoord4dvARB (offset 401) */ "ip\0" "glMultiTexCoord4dv\0" "glMultiTexCoord4dvARB\0" "\0" - /* _mesa_function_pool[20196]: PixelTransformParameteriEXT (dynamic) */ + /* _mesa_function_pool[21762]: PixelTransformParameteriEXT (dynamic) */ "iii\0" "glPixelTransformParameteriEXT\0" "\0" - /* _mesa_function_pool[20231]: GetDoublev (offset 260) */ + /* _mesa_function_pool[21797]: GetDoublev (offset 260) */ "ip\0" "glGetDoublev\0" "\0" - /* _mesa_function_pool[20248]: MultMatrixd (offset 295) */ + /* _mesa_function_pool[21814]: MultMatrixd (offset 295) */ "p\0" "glMultMatrixd\0" "\0" - /* _mesa_function_pool[20265]: MultMatrixf (offset 294) */ + /* _mesa_function_pool[21831]: MultMatrixf (offset 294) */ "p\0" "glMultMatrixf\0" "\0" - /* _mesa_function_pool[20282]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[21848]: VertexAttribI4bvEXT (will be remapped) */ + "ip\0" + "glVertexAttribI4bvEXT\0" + "glVertexAttribI4bv\0" + "\0" + /* _mesa_function_pool[21893]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ "ffiiiifff\0" "glTexCoord2fColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[20325]: Uniform1iARB (will be remapped) */ + /* _mesa_function_pool[21936]: Uniform1iARB (will be remapped) */ "ii\0" "glUniform1i\0" "glUniform1iARB\0" "\0" - /* _mesa_function_pool[20356]: VertexAttribPointerARB (will be remapped) */ + /* _mesa_function_pool[21967]: VertexAttribPointerARB (will be remapped) */ "iiiiip\0" "glVertexAttribPointer\0" "glVertexAttribPointerARB\0" "\0" - /* _mesa_function_pool[20411]: VertexAttrib3sNV (will be remapped) */ + /* _mesa_function_pool[22022]: VertexAttrib3sNV (will be remapped) */ "iiii\0" "glVertexAttrib3sNV\0" "\0" - /* _mesa_function_pool[20436]: SharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[22047]: SharpenTexFuncSGIS (dynamic) */ "iip\0" "glSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[20462]: MultiTexCoord4fvARB (offset 403) */ + /* _mesa_function_pool[22073]: MultiTexCoord4fvARB (offset 403) */ "ip\0" "glMultiTexCoord4fv\0" "glMultiTexCoord4fvARB\0" "\0" - /* _mesa_function_pool[20507]: UniformMatrix2x3fv (will be remapped) */ + /* _mesa_function_pool[22118]: Uniform2uiEXT (will be remapped) */ + "iii\0" + "glUniform2uiEXT\0" + "glUniform2ui\0" + "\0" + /* _mesa_function_pool[22152]: UniformMatrix2x3fv (will be remapped) */ "iiip\0" "glUniformMatrix2x3fv\0" "\0" - /* _mesa_function_pool[20534]: TrackMatrixNV (will be remapped) */ + /* _mesa_function_pool[22179]: TrackMatrixNV (will be remapped) */ "iiii\0" "glTrackMatrixNV\0" "\0" - /* _mesa_function_pool[20556]: CombinerParameteriNV (will be remapped) */ + /* _mesa_function_pool[22201]: CombinerParameteriNV (will be remapped) */ "ii\0" "glCombinerParameteriNV\0" "\0" - /* _mesa_function_pool[20583]: DeleteAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[22228]: DeleteAsyncMarkersSGIX (dynamic) */ "ii\0" "glDeleteAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[20612]: ReplacementCodeusSUN (dynamic) */ + /* _mesa_function_pool[22257]: ReplacementCodeusSUN (dynamic) */ "i\0" "glReplacementCodeusSUN\0" "\0" - /* _mesa_function_pool[20638]: IsAsyncMarkerSGIX (dynamic) */ + /* _mesa_function_pool[22283]: IsAsyncMarkerSGIX (dynamic) */ "i\0" "glIsAsyncMarkerSGIX\0" "\0" - /* _mesa_function_pool[20661]: FrameZoomSGIX (dynamic) */ + /* _mesa_function_pool[22306]: FrameZoomSGIX (dynamic) */ "i\0" "glFrameZoomSGIX\0" "\0" - /* _mesa_function_pool[20680]: Normal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[22325]: Normal3fVertex3fvSUN (dynamic) */ "pp\0" "glNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[20707]: RasterPos4sv (offset 85) */ + /* _mesa_function_pool[22352]: RasterPos4sv (offset 85) */ "p\0" "glRasterPos4sv\0" "\0" - /* _mesa_function_pool[20725]: VertexAttrib4NsvARB (will be remapped) */ + /* _mesa_function_pool[22370]: VertexAttrib4NsvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nsv\0" "glVertexAttrib4NsvARB\0" "\0" - /* _mesa_function_pool[20770]: VertexAttrib3fvARB (will be remapped) */ + /* _mesa_function_pool[22415]: VertexAttrib3fvARB (will be remapped) */ "ip\0" "glVertexAttrib3fv\0" "glVertexAttrib3fvARB\0" "\0" - /* _mesa_function_pool[20813]: ClearColor (offset 206) */ + /* _mesa_function_pool[22458]: ClearColor (offset 206) */ "ffff\0" "glClearColor\0" "\0" - /* _mesa_function_pool[20832]: GetSynciv (will be remapped) */ + /* _mesa_function_pool[22477]: GetSynciv (will be remapped) */ "iiipp\0" "glGetSynciv\0" "\0" - /* _mesa_function_pool[20851]: DeleteFramebuffersEXT (will be remapped) */ + /* _mesa_function_pool[22496]: ClearColorIiEXT (will be remapped) */ + "iiii\0" + "glClearColorIiEXT\0" + "\0" + /* _mesa_function_pool[22520]: DeleteFramebuffersEXT (will be remapped) */ "ip\0" "glDeleteFramebuffers\0" "glDeleteFramebuffersEXT\0" "\0" - /* _mesa_function_pool[20900]: GlobalAlphaFactorsSUN (dynamic) */ + /* _mesa_function_pool[22569]: GlobalAlphaFactorsSUN (dynamic) */ "i\0" "glGlobalAlphaFactorsSUN\0" "\0" - /* _mesa_function_pool[20927]: IsEnabledIndexedEXT (will be remapped) */ + /* _mesa_function_pool[22596]: IsEnabledIndexedEXT (will be remapped) */ "ii\0" "glIsEnabledIndexedEXT\0" + "glIsEnabledi\0" "\0" - /* _mesa_function_pool[20953]: TexEnviv (offset 187) */ + /* _mesa_function_pool[22635]: TexEnviv (offset 187) */ "iip\0" "glTexEnviv\0" "\0" - /* _mesa_function_pool[20969]: TexSubImage3D (offset 372) */ + /* _mesa_function_pool[22651]: TexSubImage3D (offset 372) */ "iiiiiiiiiip\0" "glTexSubImage3D\0" "glTexSubImage3DEXT\0" "\0" - /* _mesa_function_pool[21017]: Tangent3fEXT (dynamic) */ + /* _mesa_function_pool[22699]: Tangent3fEXT (dynamic) */ "fff\0" "glTangent3fEXT\0" "\0" - /* _mesa_function_pool[21037]: SecondaryColor3uivEXT (will be remapped) */ + /* _mesa_function_pool[22719]: SecondaryColor3uivEXT (will be remapped) */ "p\0" "glSecondaryColor3uiv\0" "glSecondaryColor3uivEXT\0" "\0" - /* _mesa_function_pool[21085]: MatrixIndexubvARB (dynamic) */ + /* _mesa_function_pool[22767]: MatrixIndexubvARB (dynamic) */ "ip\0" "glMatrixIndexubvARB\0" "\0" - /* _mesa_function_pool[21109]: Color4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[22791]: Color4fNormal3fVertex3fSUN (dynamic) */ "ffffffffff\0" "glColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[21150]: PixelTexGenParameterfSGIS (will be remapped) */ + /* _mesa_function_pool[22832]: PixelTexGenParameterfSGIS (will be remapped) */ "if\0" "glPixelTexGenParameterfSGIS\0" "\0" - /* _mesa_function_pool[21182]: CreateShader (will be remapped) */ + /* _mesa_function_pool[22864]: CreateShader (will be remapped) */ "i\0" "glCreateShader\0" "\0" - /* _mesa_function_pool[21200]: GetColorTableParameterfv (offset 344) */ + /* _mesa_function_pool[22882]: GetColorTableParameterfv (offset 344) */ "iip\0" "glGetColorTableParameterfv\0" "glGetColorTableParameterfvSGI\0" "glGetColorTableParameterfvEXT\0" "\0" - /* _mesa_function_pool[21292]: FragmentLightModelfvSGIX (dynamic) */ + /* _mesa_function_pool[22974]: FragmentLightModelfvSGIX (dynamic) */ "ip\0" "glFragmentLightModelfvSGIX\0" "\0" - /* _mesa_function_pool[21323]: Bitmap (offset 8) */ + /* _mesa_function_pool[23005]: Bitmap (offset 8) */ "iiffffp\0" "glBitmap\0" "\0" - /* _mesa_function_pool[21341]: MultiTexCoord3fARB (offset 394) */ + /* _mesa_function_pool[23023]: MultiTexCoord3fARB (offset 394) */ "ifff\0" "glMultiTexCoord3f\0" "glMultiTexCoord3fARB\0" "\0" - /* _mesa_function_pool[21386]: GetTexLevelParameterfv (offset 284) */ + /* _mesa_function_pool[23068]: GetTexLevelParameterfv (offset 284) */ "iiip\0" "glGetTexLevelParameterfv\0" "\0" - /* _mesa_function_pool[21417]: GetPixelTexGenParameterfvSGIS (will be remapped) */ + /* _mesa_function_pool[23099]: GetPixelTexGenParameterfvSGIS (will be remapped) */ "ip\0" "glGetPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[21453]: GenFramebuffersEXT (will be remapped) */ + /* _mesa_function_pool[23135]: GenFramebuffersEXT (will be remapped) */ "ip\0" "glGenFramebuffers\0" "glGenFramebuffersEXT\0" "\0" - /* _mesa_function_pool[21496]: GetProgramParameterdvNV (will be remapped) */ + /* _mesa_function_pool[23178]: VertexAttribDivisor (will be remapped) */ + "ii\0" + "glVertexAttribDivisor\0" + "\0" + /* _mesa_function_pool[23204]: GetProgramParameterdvNV (will be remapped) */ "iiip\0" "glGetProgramParameterdvNV\0" "\0" - /* _mesa_function_pool[21528]: Vertex2sv (offset 133) */ + /* _mesa_function_pool[23236]: Vertex2sv (offset 133) */ "p\0" "glVertex2sv\0" "\0" - /* _mesa_function_pool[21543]: GetIntegerv (offset 263) */ + /* _mesa_function_pool[23251]: GetIntegerv (offset 263) */ "ip\0" "glGetIntegerv\0" "\0" - /* _mesa_function_pool[21561]: IsVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[23269]: IsVertexArrayAPPLE (will be remapped) */ "i\0" "glIsVertexArray\0" "glIsVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[21601]: FragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[23309]: FragmentLightfvSGIX (dynamic) */ "iip\0" "glFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[21628]: DetachShader (will be remapped) */ + /* _mesa_function_pool[23336]: DetachShader (will be remapped) */ "ii\0" "glDetachShader\0" "\0" - /* _mesa_function_pool[21647]: VertexAttrib4NubARB (will be remapped) */ + /* _mesa_function_pool[23355]: VertexAttrib4NubARB (will be remapped) */ "iiiii\0" "glVertexAttrib4Nub\0" "glVertexAttrib4NubARB\0" "\0" - /* _mesa_function_pool[21695]: GetProgramEnvParameterfvARB (will be remapped) */ + /* _mesa_function_pool[23403]: GetProgramEnvParameterfvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterfvARB\0" "\0" - /* _mesa_function_pool[21730]: GetTrackMatrixivNV (will be remapped) */ + /* _mesa_function_pool[23438]: GetTrackMatrixivNV (will be remapped) */ "iiip\0" "glGetTrackMatrixivNV\0" "\0" - /* _mesa_function_pool[21757]: VertexAttrib3svNV (will be remapped) */ + /* _mesa_function_pool[23465]: VertexAttrib3svNV (will be remapped) */ "ip\0" "glVertexAttrib3svNV\0" "\0" - /* _mesa_function_pool[21781]: Uniform4fvARB (will be remapped) */ + /* _mesa_function_pool[23489]: Uniform4fvARB (will be remapped) */ "iip\0" "glUniform4fv\0" "glUniform4fvARB\0" "\0" - /* _mesa_function_pool[21815]: MultTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[23523]: MultTransposeMatrixfARB (will be remapped) */ "p\0" "glMultTransposeMatrixf\0" "glMultTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[21867]: GetTexEnviv (offset 277) */ + /* _mesa_function_pool[23575]: GetTexEnviv (offset 277) */ "iip\0" "glGetTexEnviv\0" "\0" - /* _mesa_function_pool[21886]: ColorFragmentOp1ATI (will be remapped) */ + /* _mesa_function_pool[23594]: ColorFragmentOp1ATI (will be remapped) */ "iiiiiii\0" "glColorFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[21917]: GetUniformfvARB (will be remapped) */ + /* _mesa_function_pool[23625]: GetUniformfvARB (will be remapped) */ "iip\0" "glGetUniformfv\0" "glGetUniformfvARB\0" "\0" - /* _mesa_function_pool[21955]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ + /* _mesa_function_pool[23663]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ "ip\0" "glEGLImageTargetRenderbufferStorageOES\0" "\0" - /* _mesa_function_pool[21998]: PopClientAttrib (offset 334) */ + /* _mesa_function_pool[23706]: VertexAttribI2ivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI2ivEXT\0" + "glVertexAttribI2iv\0" + "\0" + /* _mesa_function_pool[23751]: PopClientAttrib (offset 334) */ "\0" "glPopClientAttrib\0" "\0" - /* _mesa_function_pool[22018]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[23771]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ "iffffffffffff\0" "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[22089]: DetachObjectARB (will be remapped) */ + /* _mesa_function_pool[23842]: DetachObjectARB (will be remapped) */ "ii\0" "glDetachObjectARB\0" "\0" - /* _mesa_function_pool[22111]: VertexBlendARB (dynamic) */ + /* _mesa_function_pool[23864]: VertexBlendARB (dynamic) */ "i\0" "glVertexBlendARB\0" "\0" - /* _mesa_function_pool[22131]: WindowPos3iMESA (will be remapped) */ + /* _mesa_function_pool[23884]: WindowPos3iMESA (will be remapped) */ "iii\0" "glWindowPos3i\0" "glWindowPos3iARB\0" "glWindowPos3iMESA\0" "\0" - /* _mesa_function_pool[22185]: SeparableFilter2D (offset 360) */ + /* _mesa_function_pool[23938]: SeparableFilter2D (offset 360) */ "iiiiiipp\0" "glSeparableFilter2D\0" "glSeparableFilter2DEXT\0" "\0" - /* _mesa_function_pool[22238]: ProgramParameteriARB (will be remapped) */ + /* _mesa_function_pool[23991]: ProgramParameteriARB (will be remapped) */ "iii\0" "glProgramParameteriARB\0" "\0" - /* _mesa_function_pool[22266]: Map1d (offset 220) */ + /* _mesa_function_pool[24019]: Map1d (offset 220) */ "iddiip\0" "glMap1d\0" "\0" - /* _mesa_function_pool[22282]: Map1f (offset 221) */ + /* _mesa_function_pool[24035]: Map1f (offset 221) */ "iffiip\0" "glMap1f\0" "\0" - /* _mesa_function_pool[22298]: CompressedTexImage2DARB (will be remapped) */ + /* _mesa_function_pool[24051]: CompressedTexImage2DARB (will be remapped) */ "iiiiiiip\0" "glCompressedTexImage2D\0" "glCompressedTexImage2DARB\0" "\0" - /* _mesa_function_pool[22357]: ArrayElement (offset 306) */ + /* _mesa_function_pool[24110]: ArrayElement (offset 306) */ "i\0" "glArrayElement\0" "glArrayElementEXT\0" "\0" - /* _mesa_function_pool[22393]: TexImage2D (offset 183) */ + /* _mesa_function_pool[24146]: TexImage2D (offset 183) */ "iiiiiiiip\0" "glTexImage2D\0" "\0" - /* _mesa_function_pool[22417]: DepthBoundsEXT (will be remapped) */ + /* _mesa_function_pool[24170]: DepthBoundsEXT (will be remapped) */ "dd\0" "glDepthBoundsEXT\0" "\0" - /* _mesa_function_pool[22438]: ProgramParameters4fvNV (will be remapped) */ + /* _mesa_function_pool[24191]: ProgramParameters4fvNV (will be remapped) */ "iiip\0" "glProgramParameters4fvNV\0" "\0" - /* _mesa_function_pool[22469]: DeformationMap3fSGIX (dynamic) */ + /* _mesa_function_pool[24222]: DeformationMap3fSGIX (dynamic) */ "iffiiffiiffiip\0" "glDeformationMap3fSGIX\0" "\0" - /* _mesa_function_pool[22508]: GetProgramivNV (will be remapped) */ + /* _mesa_function_pool[24261]: GetProgramivNV (will be remapped) */ "iip\0" "glGetProgramivNV\0" "\0" - /* _mesa_function_pool[22530]: GetMinmaxParameteriv (offset 366) */ + /* _mesa_function_pool[24283]: GetFragDataLocationEXT (will be remapped) */ + "ip\0" + "glGetFragDataLocationEXT\0" + "glGetFragDataLocation\0" + "\0" + /* _mesa_function_pool[24334]: GetMinmaxParameteriv (offset 366) */ "iip\0" "glGetMinmaxParameteriv\0" "glGetMinmaxParameterivEXT\0" "\0" - /* _mesa_function_pool[22584]: PixelTransferf (offset 247) */ + /* _mesa_function_pool[24388]: PixelTransferf (offset 247) */ "if\0" "glPixelTransferf\0" "\0" - /* _mesa_function_pool[22605]: CopyTexImage1D (offset 323) */ + /* _mesa_function_pool[24409]: CopyTexImage1D (offset 323) */ "iiiiiii\0" "glCopyTexImage1D\0" "glCopyTexImage1DEXT\0" "\0" - /* _mesa_function_pool[22651]: PushMatrix (offset 298) */ + /* _mesa_function_pool[24455]: PushMatrix (offset 298) */ "\0" "glPushMatrix\0" "\0" - /* _mesa_function_pool[22666]: Fogiv (offset 156) */ + /* _mesa_function_pool[24470]: Fogiv (offset 156) */ "ip\0" "glFogiv\0" "\0" - /* _mesa_function_pool[22678]: TexCoord1dv (offset 95) */ + /* _mesa_function_pool[24482]: TexCoord1dv (offset 95) */ "p\0" "glTexCoord1dv\0" "\0" - /* _mesa_function_pool[22695]: AlphaFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[24499]: AlphaFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiii\0" "glAlphaFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[22731]: PixelTransferi (offset 248) */ + /* _mesa_function_pool[24535]: PixelTransferi (offset 248) */ "ii\0" "glPixelTransferi\0" "\0" - /* _mesa_function_pool[22752]: GetVertexAttribdvNV (will be remapped) */ + /* _mesa_function_pool[24556]: GetVertexAttribdvNV (will be remapped) */ "iip\0" "glGetVertexAttribdvNV\0" "\0" - /* _mesa_function_pool[22779]: VertexAttrib3fvNV (will be remapped) */ + /* _mesa_function_pool[24583]: VertexAttrib3fvNV (will be remapped) */ "ip\0" "glVertexAttrib3fvNV\0" "\0" - /* _mesa_function_pool[22803]: Rotatef (offset 300) */ + /* _mesa_function_pool[24607]: Rotatef (offset 300) */ "ffff\0" "glRotatef\0" "\0" - /* _mesa_function_pool[22819]: GetFinalCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[24623]: GetFinalCombinerInputParameterivNV (will be remapped) */ "iip\0" "glGetFinalCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[22861]: Vertex3i (offset 138) */ + /* _mesa_function_pool[24665]: Vertex3i (offset 138) */ "iii\0" "glVertex3i\0" "\0" - /* _mesa_function_pool[22877]: Vertex3f (offset 136) */ + /* _mesa_function_pool[24681]: Vertex3f (offset 136) */ "fff\0" "glVertex3f\0" "\0" - /* _mesa_function_pool[22893]: Clear (offset 203) */ + /* _mesa_function_pool[24697]: Clear (offset 203) */ "i\0" "glClear\0" "\0" - /* _mesa_function_pool[22904]: Vertex3d (offset 134) */ + /* _mesa_function_pool[24708]: Vertex3d (offset 134) */ "ddd\0" "glVertex3d\0" "\0" - /* _mesa_function_pool[22920]: GetMapParameterivNV (dynamic) */ + /* _mesa_function_pool[24724]: GetMapParameterivNV (dynamic) */ "iip\0" "glGetMapParameterivNV\0" "\0" - /* _mesa_function_pool[22947]: Uniform4iARB (will be remapped) */ + /* _mesa_function_pool[24751]: Uniform4iARB (will be remapped) */ "iiiii\0" "glUniform4i\0" "glUniform4iARB\0" "\0" - /* _mesa_function_pool[22981]: ReadBuffer (offset 254) */ + /* _mesa_function_pool[24785]: ReadBuffer (offset 254) */ "i\0" "glReadBuffer\0" "\0" - /* _mesa_function_pool[22997]: ConvolutionParameteri (offset 352) */ + /* _mesa_function_pool[24801]: ConvolutionParameteri (offset 352) */ "iii\0" "glConvolutionParameteri\0" "glConvolutionParameteriEXT\0" "\0" - /* _mesa_function_pool[23053]: Ortho (offset 296) */ + /* _mesa_function_pool[24857]: Ortho (offset 296) */ "dddddd\0" "glOrtho\0" "\0" - /* _mesa_function_pool[23069]: Binormal3sEXT (dynamic) */ + /* _mesa_function_pool[24873]: Binormal3sEXT (dynamic) */ "iii\0" "glBinormal3sEXT\0" "\0" - /* _mesa_function_pool[23090]: ListBase (offset 6) */ + /* _mesa_function_pool[24894]: ListBase (offset 6) */ "i\0" "glListBase\0" "\0" - /* _mesa_function_pool[23104]: Vertex3s (offset 140) */ + /* _mesa_function_pool[24908]: Vertex3s (offset 140) */ "iii\0" "glVertex3s\0" "\0" - /* _mesa_function_pool[23120]: ConvolutionParameterf (offset 350) */ + /* _mesa_function_pool[24924]: ConvolutionParameterf (offset 350) */ "iif\0" "glConvolutionParameterf\0" "glConvolutionParameterfEXT\0" "\0" - /* _mesa_function_pool[23176]: GetColorTableParameteriv (offset 345) */ + /* _mesa_function_pool[24980]: GetColorTableParameteriv (offset 345) */ "iip\0" "glGetColorTableParameteriv\0" "glGetColorTableParameterivSGI\0" "glGetColorTableParameterivEXT\0" "\0" - /* _mesa_function_pool[23268]: ProgramEnvParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[25072]: ProgramEnvParameter4dvARB (will be remapped) */ "iip\0" "glProgramEnvParameter4dvARB\0" "glProgramParameter4dvNV\0" "\0" - /* _mesa_function_pool[23325]: ShadeModel (offset 177) */ + /* _mesa_function_pool[25129]: ShadeModel (offset 177) */ "i\0" "glShadeModel\0" "\0" - /* _mesa_function_pool[23341]: VertexAttribs2fvNV (will be remapped) */ + /* _mesa_function_pool[25145]: VertexAttribs2fvNV (will be remapped) */ "iip\0" "glVertexAttribs2fvNV\0" "\0" - /* _mesa_function_pool[23367]: Rectiv (offset 91) */ + /* _mesa_function_pool[25171]: Rectiv (offset 91) */ "pp\0" "glRectiv\0" "\0" - /* _mesa_function_pool[23380]: UseProgramObjectARB (will be remapped) */ + /* _mesa_function_pool[25184]: UseProgramObjectARB (will be remapped) */ "i\0" "glUseProgram\0" "glUseProgramObjectARB\0" "\0" - /* _mesa_function_pool[23418]: GetMapParameterfvNV (dynamic) */ + /* _mesa_function_pool[25222]: GetMapParameterfvNV (dynamic) */ "iip\0" "glGetMapParameterfvNV\0" "\0" - /* _mesa_function_pool[23445]: EndConditionalRenderNV (will be remapped) */ + /* _mesa_function_pool[25249]: EndConditionalRenderNV (will be remapped) */ "\0" "glEndConditionalRenderNV\0" + "glEndConditionalRender\0" "\0" - /* _mesa_function_pool[23472]: PassTexCoordATI (will be remapped) */ + /* _mesa_function_pool[25299]: PassTexCoordATI (will be remapped) */ "iii\0" "glPassTexCoordATI\0" "\0" - /* _mesa_function_pool[23495]: DeleteProgram (will be remapped) */ + /* _mesa_function_pool[25322]: DeleteProgram (will be remapped) */ "i\0" "glDeleteProgram\0" "\0" - /* _mesa_function_pool[23514]: Tangent3ivEXT (dynamic) */ + /* _mesa_function_pool[25341]: Tangent3ivEXT (dynamic) */ "p\0" "glTangent3ivEXT\0" "\0" - /* _mesa_function_pool[23533]: Tangent3dEXT (dynamic) */ + /* _mesa_function_pool[25360]: Tangent3dEXT (dynamic) */ "ddd\0" "glTangent3dEXT\0" "\0" - /* _mesa_function_pool[23553]: SecondaryColor3dvEXT (will be remapped) */ + /* _mesa_function_pool[25380]: SecondaryColor3dvEXT (will be remapped) */ "p\0" "glSecondaryColor3dv\0" "glSecondaryColor3dvEXT\0" "\0" - /* _mesa_function_pool[23599]: Vertex2fv (offset 129) */ + /* _mesa_function_pool[25426]: Vertex2fv (offset 129) */ "p\0" "glVertex2fv\0" "\0" - /* _mesa_function_pool[23614]: MultiDrawArraysEXT (will be remapped) */ + /* _mesa_function_pool[25441]: MultiDrawArraysEXT (will be remapped) */ "ippi\0" "glMultiDrawArrays\0" "glMultiDrawArraysEXT\0" "\0" - /* _mesa_function_pool[23659]: BindRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[25486]: BindRenderbufferEXT (will be remapped) */ "ii\0" "glBindRenderbuffer\0" "glBindRenderbufferEXT\0" "\0" - /* _mesa_function_pool[23704]: MultiTexCoord4dARB (offset 400) */ + /* _mesa_function_pool[25531]: MultiTexCoord4dARB (offset 400) */ "idddd\0" "glMultiTexCoord4d\0" "glMultiTexCoord4dARB\0" "\0" - /* _mesa_function_pool[23750]: FramebufferTextureFaceARB (will be remapped) */ + /* _mesa_function_pool[25577]: FramebufferTextureFaceARB (will be remapped) */ "iiiii\0" "glFramebufferTextureFaceARB\0" "\0" - /* _mesa_function_pool[23785]: Vertex3sv (offset 141) */ + /* _mesa_function_pool[25612]: Vertex3sv (offset 141) */ "p\0" "glVertex3sv\0" "\0" - /* _mesa_function_pool[23800]: SecondaryColor3usEXT (will be remapped) */ + /* _mesa_function_pool[25627]: SecondaryColor3usEXT (will be remapped) */ "iii\0" "glSecondaryColor3us\0" "glSecondaryColor3usEXT\0" "\0" - /* _mesa_function_pool[23848]: ProgramLocalParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[25675]: ProgramLocalParameter4fvARB (will be remapped) */ "iip\0" "glProgramLocalParameter4fvARB\0" "\0" - /* _mesa_function_pool[23883]: DeleteProgramsNV (will be remapped) */ + /* _mesa_function_pool[25710]: DeleteProgramsNV (will be remapped) */ "ip\0" "glDeleteProgramsARB\0" "glDeleteProgramsNV\0" "\0" - /* _mesa_function_pool[23926]: EvalMesh1 (offset 236) */ + /* _mesa_function_pool[25753]: EvalMesh1 (offset 236) */ "iii\0" "glEvalMesh1\0" "\0" - /* _mesa_function_pool[23943]: PauseTransformFeedback (will be remapped) */ + /* _mesa_function_pool[25770]: PauseTransformFeedback (will be remapped) */ "\0" "glPauseTransformFeedback\0" "\0" - /* _mesa_function_pool[23970]: MultiTexCoord1sARB (offset 382) */ + /* _mesa_function_pool[25797]: MultiTexCoord1sARB (offset 382) */ "ii\0" "glMultiTexCoord1s\0" "glMultiTexCoord1sARB\0" "\0" - /* _mesa_function_pool[24013]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[25840]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ "iffffff\0" "glReplacementCodeuiColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[24060]: GetVertexAttribPointervNV (will be remapped) */ + /* _mesa_function_pool[25887]: GetVertexAttribPointervNV (will be remapped) */ "iip\0" "glGetVertexAttribPointerv\0" "glGetVertexAttribPointervARB\0" "glGetVertexAttribPointervNV\0" "\0" - /* _mesa_function_pool[24148]: VertexAttribs1fvNV (will be remapped) */ + /* _mesa_function_pool[25975]: VertexAttribs1fvNV (will be remapped) */ "iip\0" "glVertexAttribs1fvNV\0" "\0" - /* _mesa_function_pool[24174]: MultiTexCoord1dvARB (offset 377) */ + /* _mesa_function_pool[26001]: MultiTexCoord1dvARB (offset 377) */ "ip\0" "glMultiTexCoord1dv\0" "glMultiTexCoord1dvARB\0" "\0" - /* _mesa_function_pool[24219]: Uniform2iARB (will be remapped) */ + /* _mesa_function_pool[26046]: Uniform2iARB (will be remapped) */ "iii\0" "glUniform2i\0" "glUniform2iARB\0" "\0" - /* _mesa_function_pool[24251]: Vertex2iv (offset 131) */ + /* _mesa_function_pool[26078]: Vertex2iv (offset 131) */ "p\0" "glVertex2iv\0" "\0" - /* _mesa_function_pool[24266]: GetProgramStringNV (will be remapped) */ + /* _mesa_function_pool[26093]: GetProgramStringNV (will be remapped) */ "iip\0" "glGetProgramStringNV\0" "\0" - /* _mesa_function_pool[24292]: ColorPointerEXT (will be remapped) */ + /* _mesa_function_pool[26119]: ColorPointerEXT (will be remapped) */ "iiiip\0" "glColorPointerEXT\0" "\0" - /* _mesa_function_pool[24317]: LineWidth (offset 168) */ + /* _mesa_function_pool[26144]: LineWidth (offset 168) */ "f\0" "glLineWidth\0" "\0" - /* _mesa_function_pool[24332]: MapBufferARB (will be remapped) */ + /* _mesa_function_pool[26159]: MapBufferARB (will be remapped) */ "ii\0" "glMapBuffer\0" "glMapBufferARB\0" "\0" - /* _mesa_function_pool[24363]: MultiDrawElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[26190]: MultiDrawElementsBaseVertex (will be remapped) */ "ipipip\0" "glMultiDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[24401]: Binormal3svEXT (dynamic) */ + /* _mesa_function_pool[26228]: TexParameterIuivEXT (will be remapped) */ + "iip\0" + "glTexParameterIuivEXT\0" + "glTexParameterIuiv\0" + "\0" + /* _mesa_function_pool[26274]: Binormal3svEXT (dynamic) */ "p\0" "glBinormal3svEXT\0" "\0" - /* _mesa_function_pool[24421]: ApplyTextureEXT (dynamic) */ + /* _mesa_function_pool[26294]: ApplyTextureEXT (dynamic) */ "i\0" "glApplyTextureEXT\0" "\0" - /* _mesa_function_pool[24442]: TexGendv (offset 189) */ + /* _mesa_function_pool[26315]: GetBufferParameteri64v (will be remapped) */ + "iip\0" + "glGetBufferParameteri64v\0" + "\0" + /* _mesa_function_pool[26345]: TexGendv (offset 189) */ "iip\0" "glTexGendv\0" "\0" - /* _mesa_function_pool[24458]: EnableIndexedEXT (will be remapped) */ + /* _mesa_function_pool[26361]: VertexAttribI3iEXT (will be remapped) */ + "iiii\0" + "glVertexAttribI3iEXT\0" + "glVertexAttribI3i\0" + "\0" + /* _mesa_function_pool[26406]: EnableIndexedEXT (will be remapped) */ "ii\0" "glEnableIndexedEXT\0" + "glEnablei\0" "\0" - /* _mesa_function_pool[24481]: TextureMaterialEXT (dynamic) */ + /* _mesa_function_pool[26439]: TextureMaterialEXT (dynamic) */ "ii\0" "glTextureMaterialEXT\0" "\0" - /* _mesa_function_pool[24506]: TextureLightEXT (dynamic) */ + /* _mesa_function_pool[26464]: TextureLightEXT (dynamic) */ "i\0" "glTextureLightEXT\0" "\0" - /* _mesa_function_pool[24527]: ResetMinmax (offset 370) */ + /* _mesa_function_pool[26485]: ResetMinmax (offset 370) */ "i\0" "glResetMinmax\0" "glResetMinmaxEXT\0" "\0" - /* _mesa_function_pool[24561]: SpriteParameterfSGIX (dynamic) */ + /* _mesa_function_pool[26519]: SpriteParameterfSGIX (dynamic) */ "if\0" "glSpriteParameterfSGIX\0" "\0" - /* _mesa_function_pool[24588]: EnableClientState (offset 313) */ + /* _mesa_function_pool[26546]: EnableClientState (offset 313) */ "i\0" "glEnableClientState\0" "\0" - /* _mesa_function_pool[24611]: VertexAttrib4sNV (will be remapped) */ + /* _mesa_function_pool[26569]: VertexAttrib4sNV (will be remapped) */ "iiiii\0" "glVertexAttrib4sNV\0" "\0" - /* _mesa_function_pool[24637]: GetConvolutionParameterfv (offset 357) */ + /* _mesa_function_pool[26595]: GetConvolutionParameterfv (offset 357) */ "iip\0" "glGetConvolutionParameterfv\0" "glGetConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[24701]: VertexAttribs4dvNV (will be remapped) */ + /* _mesa_function_pool[26659]: VertexAttribs4dvNV (will be remapped) */ "iip\0" "glVertexAttribs4dvNV\0" "\0" - /* _mesa_function_pool[24727]: VertexAttrib4dARB (will be remapped) */ + /* _mesa_function_pool[26685]: VertexAttrib4dARB (will be remapped) */ "idddd\0" "glVertexAttrib4d\0" "glVertexAttrib4dARB\0" "\0" - /* _mesa_function_pool[24771]: GetTexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[26729]: GetTexBumpParameterfvATI (will be remapped) */ "ip\0" "glGetTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[24802]: ProgramNamedParameter4dNV (will be remapped) */ + /* _mesa_function_pool[26760]: ProgramNamedParameter4dNV (will be remapped) */ "iipdddd\0" "glProgramNamedParameter4dNV\0" "\0" - /* _mesa_function_pool[24839]: GetMaterialfv (offset 269) */ + /* _mesa_function_pool[26797]: GetMaterialfv (offset 269) */ "iip\0" "glGetMaterialfv\0" "\0" - /* _mesa_function_pool[24860]: VertexWeightfEXT (dynamic) */ + /* _mesa_function_pool[26818]: VertexWeightfEXT (dynamic) */ "f\0" "glVertexWeightfEXT\0" "\0" - /* _mesa_function_pool[24882]: Binormal3fEXT (dynamic) */ + /* _mesa_function_pool[26840]: Binormal3fEXT (dynamic) */ "fff\0" "glBinormal3fEXT\0" "\0" - /* _mesa_function_pool[24903]: CallList (offset 2) */ + /* _mesa_function_pool[26861]: CallList (offset 2) */ "i\0" "glCallList\0" "\0" - /* _mesa_function_pool[24917]: Materialfv (offset 170) */ + /* _mesa_function_pool[26875]: Materialfv (offset 170) */ "iip\0" "glMaterialfv\0" "\0" - /* _mesa_function_pool[24935]: TexCoord3fv (offset 113) */ + /* _mesa_function_pool[26893]: TexCoord3fv (offset 113) */ "p\0" "glTexCoord3fv\0" "\0" - /* _mesa_function_pool[24952]: FogCoordfvEXT (will be remapped) */ + /* _mesa_function_pool[26910]: FogCoordfvEXT (will be remapped) */ "p\0" "glFogCoordfv\0" "glFogCoordfvEXT\0" "\0" - /* _mesa_function_pool[24984]: MultiTexCoord1ivARB (offset 381) */ + /* _mesa_function_pool[26942]: MultiTexCoord1ivARB (offset 381) */ "ip\0" "glMultiTexCoord1iv\0" "glMultiTexCoord1ivARB\0" "\0" - /* _mesa_function_pool[25029]: SecondaryColor3ubEXT (will be remapped) */ + /* _mesa_function_pool[26987]: SecondaryColor3ubEXT (will be remapped) */ "iii\0" "glSecondaryColor3ub\0" "glSecondaryColor3ubEXT\0" "\0" - /* _mesa_function_pool[25077]: MultiTexCoord2ivARB (offset 389) */ + /* _mesa_function_pool[27035]: MultiTexCoord2ivARB (offset 389) */ "ip\0" "glMultiTexCoord2iv\0" "glMultiTexCoord2ivARB\0" "\0" - /* _mesa_function_pool[25122]: FogFuncSGIS (dynamic) */ + /* _mesa_function_pool[27080]: FogFuncSGIS (dynamic) */ "ip\0" "glFogFuncSGIS\0" "\0" - /* _mesa_function_pool[25140]: CopyTexSubImage2D (offset 326) */ + /* _mesa_function_pool[27098]: CopyTexSubImage2D (offset 326) */ "iiiiiiii\0" "glCopyTexSubImage2D\0" "glCopyTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[25193]: GetObjectParameterivARB (will be remapped) */ + /* _mesa_function_pool[27151]: GetObjectParameterivARB (will be remapped) */ "iip\0" "glGetObjectParameterivARB\0" "\0" - /* _mesa_function_pool[25224]: Color3iv (offset 16) */ + /* _mesa_function_pool[27182]: Color3iv (offset 16) */ "p\0" "glColor3iv\0" "\0" - /* _mesa_function_pool[25238]: TexCoord4fVertex4fSUN (dynamic) */ + /* _mesa_function_pool[27196]: TexCoord4fVertex4fSUN (dynamic) */ "ffffffff\0" "glTexCoord4fVertex4fSUN\0" "\0" - /* _mesa_function_pool[25272]: DrawElements (offset 311) */ + /* _mesa_function_pool[27230]: DrawElements (offset 311) */ "iiip\0" "glDrawElements\0" "\0" - /* _mesa_function_pool[25293]: BindVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[27251]: BindVertexArrayAPPLE (will be remapped) */ "i\0" "glBindVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[25319]: GetProgramLocalParameterdvARB (will be remapped) */ + /* _mesa_function_pool[27277]: GetProgramLocalParameterdvARB (will be remapped) */ "iip\0" "glGetProgramLocalParameterdvARB\0" "\0" - /* _mesa_function_pool[25356]: GetHistogramParameteriv (offset 363) */ + /* _mesa_function_pool[27314]: GetHistogramParameteriv (offset 363) */ "iip\0" "glGetHistogramParameteriv\0" "glGetHistogramParameterivEXT\0" "\0" - /* _mesa_function_pool[25416]: MultiTexCoord1iARB (offset 380) */ + /* _mesa_function_pool[27374]: MultiTexCoord1iARB (offset 380) */ "ii\0" "glMultiTexCoord1i\0" "glMultiTexCoord1iARB\0" "\0" - /* _mesa_function_pool[25459]: GetConvolutionFilter (offset 356) */ + /* _mesa_function_pool[27417]: GetConvolutionFilter (offset 356) */ "iiip\0" "glGetConvolutionFilter\0" "glGetConvolutionFilterEXT\0" "\0" - /* _mesa_function_pool[25514]: GetProgramivARB (will be remapped) */ + /* _mesa_function_pool[27472]: GetProgramivARB (will be remapped) */ "iip\0" "glGetProgramivARB\0" "\0" - /* _mesa_function_pool[25537]: BlendFuncSeparateEXT (will be remapped) */ + /* _mesa_function_pool[27495]: BlendFuncSeparateEXT (will be remapped) */ "iiii\0" "glBlendFuncSeparate\0" "glBlendFuncSeparateEXT\0" "glBlendFuncSeparateINGR\0" "\0" - /* _mesa_function_pool[25610]: MapBufferRange (will be remapped) */ + /* _mesa_function_pool[27568]: MapBufferRange (will be remapped) */ "iiii\0" "glMapBufferRange\0" "\0" - /* _mesa_function_pool[25633]: ProgramParameters4dvNV (will be remapped) */ + /* _mesa_function_pool[27591]: ProgramParameters4dvNV (will be remapped) */ "iiip\0" "glProgramParameters4dvNV\0" "\0" - /* _mesa_function_pool[25664]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[27622]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[25701]: EvalPoint2 (offset 239) */ + /* _mesa_function_pool[27659]: EvalPoint2 (offset 239) */ "ii\0" "glEvalPoint2\0" "\0" - /* _mesa_function_pool[25718]: EvalPoint1 (offset 237) */ + /* _mesa_function_pool[27676]: Uniform1uivEXT (will be remapped) */ + "iip\0" + "glUniform1uivEXT\0" + "glUniform1uiv\0" + "\0" + /* _mesa_function_pool[27712]: EvalPoint1 (offset 237) */ "i\0" "glEvalPoint1\0" "\0" - /* _mesa_function_pool[25734]: Binormal3dvEXT (dynamic) */ + /* _mesa_function_pool[27728]: Binormal3dvEXT (dynamic) */ "p\0" "glBinormal3dvEXT\0" "\0" - /* _mesa_function_pool[25754]: PopMatrix (offset 297) */ + /* _mesa_function_pool[27748]: PopMatrix (offset 297) */ "\0" "glPopMatrix\0" "\0" - /* _mesa_function_pool[25768]: FinishFenceNV (will be remapped) */ + /* _mesa_function_pool[27762]: FinishFenceNV (will be remapped) */ "i\0" "glFinishFenceNV\0" "\0" - /* _mesa_function_pool[25787]: GetFogFuncSGIS (dynamic) */ + /* _mesa_function_pool[27781]: GetFogFuncSGIS (dynamic) */ "p\0" "glGetFogFuncSGIS\0" "\0" - /* _mesa_function_pool[25807]: GetUniformLocationARB (will be remapped) */ + /* _mesa_function_pool[27801]: GetUniformLocationARB (will be remapped) */ "ip\0" "glGetUniformLocation\0" "glGetUniformLocationARB\0" "\0" - /* _mesa_function_pool[25856]: SecondaryColor3fEXT (will be remapped) */ + /* _mesa_function_pool[27850]: SecondaryColor3fEXT (will be remapped) */ "fff\0" "glSecondaryColor3f\0" "glSecondaryColor3fEXT\0" "\0" - /* _mesa_function_pool[25902]: GetTexGeniv (offset 280) */ + /* _mesa_function_pool[27896]: GetTexGeniv (offset 280) */ "iip\0" "glGetTexGeniv\0" "\0" - /* _mesa_function_pool[25921]: CombinerInputNV (will be remapped) */ + /* _mesa_function_pool[27915]: CombinerInputNV (will be remapped) */ "iiiiii\0" "glCombinerInputNV\0" "\0" - /* _mesa_function_pool[25947]: VertexAttrib3sARB (will be remapped) */ + /* _mesa_function_pool[27941]: VertexAttrib3sARB (will be remapped) */ "iiii\0" "glVertexAttrib3s\0" "glVertexAttrib3sARB\0" "\0" - /* _mesa_function_pool[25990]: IsTransformFeedback (will be remapped) */ + /* _mesa_function_pool[27984]: IsTransformFeedback (will be remapped) */ "i\0" "glIsTransformFeedback\0" "\0" - /* _mesa_function_pool[26015]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[28009]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[26060]: Map2d (offset 222) */ + /* _mesa_function_pool[28054]: Map2d (offset 222) */ "iddiiddiip\0" "glMap2d\0" "\0" - /* _mesa_function_pool[26080]: Map2f (offset 223) */ + /* _mesa_function_pool[28074]: Map2f (offset 223) */ "iffiiffiip\0" "glMap2f\0" "\0" - /* _mesa_function_pool[26100]: ProgramStringARB (will be remapped) */ + /* _mesa_function_pool[28094]: ProgramStringARB (will be remapped) */ "iiip\0" "glProgramStringARB\0" "\0" - /* _mesa_function_pool[26125]: Vertex4s (offset 148) */ + /* _mesa_function_pool[28119]: Vertex4s (offset 148) */ "iiii\0" "glVertex4s\0" "\0" - /* _mesa_function_pool[26142]: TexCoord4fVertex4fvSUN (dynamic) */ + /* _mesa_function_pool[28136]: TexCoord4fVertex4fvSUN (dynamic) */ "pp\0" "glTexCoord4fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[26171]: FragmentLightModelivSGIX (dynamic) */ + /* _mesa_function_pool[28165]: FragmentLightModelivSGIX (dynamic) */ "ip\0" "glFragmentLightModelivSGIX\0" "\0" - /* _mesa_function_pool[26202]: VertexAttrib1fNV (will be remapped) */ + /* _mesa_function_pool[28196]: VertexAttrib1fNV (will be remapped) */ "if\0" "glVertexAttrib1fNV\0" "\0" - /* _mesa_function_pool[26225]: Vertex4f (offset 144) */ + /* _mesa_function_pool[28219]: Vertex4f (offset 144) */ "ffff\0" "glVertex4f\0" "\0" - /* _mesa_function_pool[26242]: EvalCoord1d (offset 228) */ + /* _mesa_function_pool[28236]: EvalCoord1d (offset 228) */ "d\0" "glEvalCoord1d\0" "\0" - /* _mesa_function_pool[26259]: Vertex4d (offset 142) */ + /* _mesa_function_pool[28253]: Vertex4d (offset 142) */ "dddd\0" "glVertex4d\0" "\0" - /* _mesa_function_pool[26276]: RasterPos4dv (offset 79) */ + /* _mesa_function_pool[28270]: RasterPos4dv (offset 79) */ "p\0" "glRasterPos4dv\0" "\0" - /* _mesa_function_pool[26294]: FragmentLightfSGIX (dynamic) */ + /* _mesa_function_pool[28288]: UseShaderProgramEXT (will be remapped) */ + "ii\0" + "glUseShaderProgramEXT\0" + "\0" + /* _mesa_function_pool[28314]: FragmentLightfSGIX (dynamic) */ "iif\0" "glFragmentLightfSGIX\0" "\0" - /* _mesa_function_pool[26320]: GetCompressedTexImageARB (will be remapped) */ + /* _mesa_function_pool[28340]: GetCompressedTexImageARB (will be remapped) */ "iip\0" "glGetCompressedTexImage\0" "glGetCompressedTexImageARB\0" "\0" - /* _mesa_function_pool[26376]: GetTexGenfv (offset 279) */ + /* _mesa_function_pool[28396]: GetTexGenfv (offset 279) */ "iip\0" "glGetTexGenfv\0" "\0" - /* _mesa_function_pool[26395]: Vertex4i (offset 146) */ + /* _mesa_function_pool[28415]: Vertex4i (offset 146) */ "iiii\0" "glVertex4i\0" "\0" - /* _mesa_function_pool[26412]: VertexWeightPointerEXT (dynamic) */ + /* _mesa_function_pool[28432]: VertexWeightPointerEXT (dynamic) */ "iiip\0" "glVertexWeightPointerEXT\0" "\0" - /* _mesa_function_pool[26443]: GetHistogram (offset 361) */ + /* _mesa_function_pool[28463]: GetHistogram (offset 361) */ "iiiip\0" "glGetHistogram\0" "glGetHistogramEXT\0" "\0" - /* _mesa_function_pool[26483]: ActiveStencilFaceEXT (will be remapped) */ + /* _mesa_function_pool[28503]: ActiveStencilFaceEXT (will be remapped) */ "i\0" "glActiveStencilFaceEXT\0" "\0" - /* _mesa_function_pool[26509]: StencilFuncSeparateATI (will be remapped) */ + /* _mesa_function_pool[28529]: StencilFuncSeparateATI (will be remapped) */ "iiii\0" "glStencilFuncSeparateATI\0" "\0" - /* _mesa_function_pool[26540]: Materialf (offset 169) */ + /* _mesa_function_pool[28560]: Materialf (offset 169) */ "iif\0" "glMaterialf\0" "\0" - /* _mesa_function_pool[26557]: GetShaderSourceARB (will be remapped) */ + /* _mesa_function_pool[28577]: GetShaderSourceARB (will be remapped) */ "iipp\0" "glGetShaderSource\0" "glGetShaderSourceARB\0" "\0" - /* _mesa_function_pool[26602]: IglooInterfaceSGIX (dynamic) */ + /* _mesa_function_pool[28622]: IglooInterfaceSGIX (dynamic) */ "ip\0" "glIglooInterfaceSGIX\0" "\0" - /* _mesa_function_pool[26627]: Materiali (offset 171) */ + /* _mesa_function_pool[28647]: Materiali (offset 171) */ "iii\0" "glMateriali\0" "\0" - /* _mesa_function_pool[26644]: VertexAttrib4dNV (will be remapped) */ + /* _mesa_function_pool[28664]: VertexAttrib4dNV (will be remapped) */ "idddd\0" "glVertexAttrib4dNV\0" "\0" - /* _mesa_function_pool[26670]: MultiModeDrawElementsIBM (will be remapped) */ + /* _mesa_function_pool[28690]: MultiModeDrawElementsIBM (will be remapped) */ "ppipii\0" "glMultiModeDrawElementsIBM\0" "\0" - /* _mesa_function_pool[26705]: Indexsv (offset 51) */ + /* _mesa_function_pool[28725]: Indexsv (offset 51) */ "p\0" "glIndexsv\0" "\0" - /* _mesa_function_pool[26718]: MultiTexCoord4svARB (offset 407) */ + /* _mesa_function_pool[28738]: MultiTexCoord4svARB (offset 407) */ "ip\0" "glMultiTexCoord4sv\0" "glMultiTexCoord4svARB\0" "\0" - /* _mesa_function_pool[26763]: LightModelfv (offset 164) */ + /* _mesa_function_pool[28783]: LightModelfv (offset 164) */ "ip\0" "glLightModelfv\0" "\0" - /* _mesa_function_pool[26782]: TexCoord2dv (offset 103) */ + /* _mesa_function_pool[28802]: TexCoord2dv (offset 103) */ "p\0" "glTexCoord2dv\0" "\0" - /* _mesa_function_pool[26799]: GenQueriesARB (will be remapped) */ + /* _mesa_function_pool[28819]: GenQueriesARB (will be remapped) */ "ip\0" "glGenQueries\0" "glGenQueriesARB\0" "\0" - /* _mesa_function_pool[26832]: EvalCoord1dv (offset 229) */ + /* _mesa_function_pool[28852]: EvalCoord1dv (offset 229) */ "p\0" "glEvalCoord1dv\0" "\0" - /* _mesa_function_pool[26850]: ReplacementCodeuiVertex3fSUN (dynamic) */ + /* _mesa_function_pool[28870]: ReplacementCodeuiVertex3fSUN (dynamic) */ "ifff\0" "glReplacementCodeuiVertex3fSUN\0" "\0" - /* _mesa_function_pool[26887]: Translated (offset 303) */ + /* _mesa_function_pool[28907]: Translated (offset 303) */ "ddd\0" "glTranslated\0" "\0" - /* _mesa_function_pool[26905]: Translatef (offset 304) */ + /* _mesa_function_pool[28925]: Translatef (offset 304) */ "fff\0" "glTranslatef\0" "\0" - /* _mesa_function_pool[26923]: StencilMask (offset 209) */ + /* _mesa_function_pool[28943]: Uniform3uiEXT (will be remapped) */ + "iiii\0" + "glUniform3uiEXT\0" + "glUniform3ui\0" + "\0" + /* _mesa_function_pool[28978]: StencilMask (offset 209) */ "i\0" "glStencilMask\0" "\0" - /* _mesa_function_pool[26940]: Tangent3iEXT (dynamic) */ + /* _mesa_function_pool[28995]: Tangent3iEXT (dynamic) */ "iii\0" "glTangent3iEXT\0" "\0" - /* _mesa_function_pool[26960]: GetLightiv (offset 265) */ + /* _mesa_function_pool[29015]: GetLightiv (offset 265) */ "iip\0" "glGetLightiv\0" "\0" - /* _mesa_function_pool[26978]: DrawMeshArraysSUN (dynamic) */ + /* _mesa_function_pool[29033]: DrawMeshArraysSUN (dynamic) */ "iiii\0" "glDrawMeshArraysSUN\0" "\0" - /* _mesa_function_pool[27004]: IsList (offset 287) */ + /* _mesa_function_pool[29059]: IsList (offset 287) */ "i\0" "glIsList\0" "\0" - /* _mesa_function_pool[27016]: IsSync (will be remapped) */ + /* _mesa_function_pool[29071]: IsSync (will be remapped) */ "i\0" "glIsSync\0" "\0" - /* _mesa_function_pool[27028]: RenderMode (offset 196) */ + /* _mesa_function_pool[29083]: RenderMode (offset 196) */ "i\0" "glRenderMode\0" "\0" - /* _mesa_function_pool[27044]: GetMapControlPointsNV (dynamic) */ + /* _mesa_function_pool[29099]: GetMapControlPointsNV (dynamic) */ "iiiiiip\0" "glGetMapControlPointsNV\0" "\0" - /* _mesa_function_pool[27077]: DrawBuffersARB (will be remapped) */ + /* _mesa_function_pool[29132]: DrawBuffersARB (will be remapped) */ "ip\0" "glDrawBuffers\0" "glDrawBuffersARB\0" "glDrawBuffersATI\0" "\0" - /* _mesa_function_pool[27129]: ProgramLocalParameter4fARB (will be remapped) */ + /* _mesa_function_pool[29184]: ClearBufferiv (will be remapped) */ + "iip\0" + "glClearBufferiv\0" + "\0" + /* _mesa_function_pool[29205]: ProgramLocalParameter4fARB (will be remapped) */ "iiffff\0" "glProgramLocalParameter4fARB\0" "\0" - /* _mesa_function_pool[27166]: SpriteParameterivSGIX (dynamic) */ + /* _mesa_function_pool[29242]: SpriteParameterivSGIX (dynamic) */ "ip\0" "glSpriteParameterivSGIX\0" "\0" - /* _mesa_function_pool[27194]: ProvokingVertexEXT (will be remapped) */ + /* _mesa_function_pool[29270]: ProvokingVertexEXT (will be remapped) */ "i\0" "glProvokingVertexEXT\0" "glProvokingVertex\0" "\0" - /* _mesa_function_pool[27236]: MultiTexCoord1fARB (offset 378) */ + /* _mesa_function_pool[29312]: MultiTexCoord1fARB (offset 378) */ "if\0" "glMultiTexCoord1f\0" "glMultiTexCoord1fARB\0" "\0" - /* _mesa_function_pool[27279]: LoadName (offset 198) */ + /* _mesa_function_pool[29355]: LoadName (offset 198) */ "i\0" "glLoadName\0" "\0" - /* _mesa_function_pool[27293]: VertexAttribs4ubvNV (will be remapped) */ + /* _mesa_function_pool[29369]: VertexAttribs4ubvNV (will be remapped) */ "iip\0" "glVertexAttribs4ubvNV\0" "\0" - /* _mesa_function_pool[27320]: WeightsvARB (dynamic) */ + /* _mesa_function_pool[29396]: WeightsvARB (dynamic) */ "ip\0" "glWeightsvARB\0" "\0" - /* _mesa_function_pool[27338]: Uniform1fvARB (will be remapped) */ + /* _mesa_function_pool[29414]: Uniform1fvARB (will be remapped) */ "iip\0" "glUniform1fv\0" "glUniform1fvARB\0" "\0" - /* _mesa_function_pool[27372]: CopyTexSubImage1D (offset 325) */ + /* _mesa_function_pool[29448]: CopyTexSubImage1D (offset 325) */ "iiiiii\0" "glCopyTexSubImage1D\0" "glCopyTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[27423]: CullFace (offset 152) */ + /* _mesa_function_pool[29499]: CullFace (offset 152) */ "i\0" "glCullFace\0" "\0" - /* _mesa_function_pool[27437]: BindTexture (offset 307) */ + /* _mesa_function_pool[29513]: BindTexture (offset 307) */ "ii\0" "glBindTexture\0" "glBindTextureEXT\0" "\0" - /* _mesa_function_pool[27472]: BeginFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[29548]: BeginFragmentShaderATI (will be remapped) */ "\0" "glBeginFragmentShaderATI\0" "\0" - /* _mesa_function_pool[27499]: MultiTexCoord4fARB (offset 402) */ + /* _mesa_function_pool[29575]: MultiTexCoord4fARB (offset 402) */ "iffff\0" "glMultiTexCoord4f\0" "glMultiTexCoord4fARB\0" "\0" - /* _mesa_function_pool[27545]: VertexAttribs3svNV (will be remapped) */ + /* _mesa_function_pool[29621]: VertexAttribs3svNV (will be remapped) */ "iip\0" "glVertexAttribs3svNV\0" "\0" - /* _mesa_function_pool[27571]: StencilFunc (offset 243) */ + /* _mesa_function_pool[29647]: StencilFunc (offset 243) */ "iii\0" "glStencilFunc\0" "\0" - /* _mesa_function_pool[27590]: CopyPixels (offset 255) */ + /* _mesa_function_pool[29666]: CopyPixels (offset 255) */ "iiiii\0" "glCopyPixels\0" "\0" - /* _mesa_function_pool[27610]: Rectsv (offset 93) */ + /* _mesa_function_pool[29686]: Rectsv (offset 93) */ "pp\0" "glRectsv\0" "\0" - /* _mesa_function_pool[27623]: ReplacementCodeuivSUN (dynamic) */ + /* _mesa_function_pool[29699]: ReplacementCodeuivSUN (dynamic) */ "p\0" "glReplacementCodeuivSUN\0" "\0" - /* _mesa_function_pool[27650]: EnableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[29726]: EnableVertexAttribArrayARB (will be remapped) */ "i\0" "glEnableVertexAttribArray\0" "glEnableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[27708]: NormalPointervINTEL (dynamic) */ + /* _mesa_function_pool[29784]: NormalPointervINTEL (dynamic) */ "ip\0" "glNormalPointervINTEL\0" "\0" - /* _mesa_function_pool[27734]: CopyConvolutionFilter2D (offset 355) */ + /* _mesa_function_pool[29810]: CopyConvolutionFilter2D (offset 355) */ "iiiiii\0" "glCopyConvolutionFilter2D\0" "glCopyConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[27797]: WindowPos3ivMESA (will be remapped) */ + /* _mesa_function_pool[29873]: WindowPos3ivMESA (will be remapped) */ "p\0" "glWindowPos3iv\0" "glWindowPos3ivARB\0" "glWindowPos3ivMESA\0" "\0" - /* _mesa_function_pool[27852]: CopyBufferSubData (will be remapped) */ + /* _mesa_function_pool[29928]: CopyBufferSubData (will be remapped) */ "iiiii\0" "glCopyBufferSubData\0" "\0" - /* _mesa_function_pool[27879]: NormalPointer (offset 318) */ + /* _mesa_function_pool[29955]: NormalPointer (offset 318) */ "iip\0" "glNormalPointer\0" "\0" - /* _mesa_function_pool[27900]: TexParameterfv (offset 179) */ + /* _mesa_function_pool[29976]: TexParameterfv (offset 179) */ "iip\0" "glTexParameterfv\0" "\0" - /* _mesa_function_pool[27922]: IsBufferARB (will be remapped) */ + /* _mesa_function_pool[29998]: IsBufferARB (will be remapped) */ "i\0" "glIsBuffer\0" "glIsBufferARB\0" "\0" - /* _mesa_function_pool[27950]: WindowPos4iMESA (will be remapped) */ + /* _mesa_function_pool[30026]: WindowPos4iMESA (will be remapped) */ "iiii\0" "glWindowPos4iMESA\0" "\0" - /* _mesa_function_pool[27974]: VertexAttrib4uivARB (will be remapped) */ + /* _mesa_function_pool[30050]: VertexAttrib4uivARB (will be remapped) */ "ip\0" "glVertexAttrib4uiv\0" "glVertexAttrib4uivARB\0" "\0" - /* _mesa_function_pool[28019]: Tangent3bvEXT (dynamic) */ + /* _mesa_function_pool[30095]: Tangent3bvEXT (dynamic) */ "p\0" "glTangent3bvEXT\0" "\0" - /* _mesa_function_pool[28038]: UniformMatrix3x4fv (will be remapped) */ + /* _mesa_function_pool[30114]: VertexAttribI3uivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI3uivEXT\0" + "glVertexAttribI3uiv\0" + "\0" + /* _mesa_function_pool[30161]: UniformMatrix3x4fv (will be remapped) */ "iiip\0" "glUniformMatrix3x4fv\0" "\0" - /* _mesa_function_pool[28065]: ClipPlane (offset 150) */ + /* _mesa_function_pool[30188]: ClipPlane (offset 150) */ "ip\0" "glClipPlane\0" "\0" - /* _mesa_function_pool[28081]: Recti (offset 90) */ + /* _mesa_function_pool[30204]: Recti (offset 90) */ "iiii\0" "glRecti\0" "\0" - /* _mesa_function_pool[28095]: DrawRangeElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[30218]: VertexAttribI3ivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI3ivEXT\0" + "glVertexAttribI3iv\0" + "\0" + /* _mesa_function_pool[30263]: DrawRangeElementsBaseVertex (will be remapped) */ "iiiiipi\0" "glDrawRangeElementsBaseVertex\0" "\0" - /* _mesa_function_pool[28134]: TexCoordPointervINTEL (dynamic) */ + /* _mesa_function_pool[30302]: TexCoordPointervINTEL (dynamic) */ "iip\0" "glTexCoordPointervINTEL\0" "\0" - /* _mesa_function_pool[28163]: DeleteBuffersARB (will be remapped) */ + /* _mesa_function_pool[30331]: DeleteBuffersARB (will be remapped) */ "ip\0" "glDeleteBuffers\0" "glDeleteBuffersARB\0" "\0" - /* _mesa_function_pool[28202]: PixelTransformParameterfvEXT (dynamic) */ + /* _mesa_function_pool[30370]: PixelTransformParameterfvEXT (dynamic) */ "iip\0" "glPixelTransformParameterfvEXT\0" "\0" - /* _mesa_function_pool[28238]: PrimitiveRestartNV (will be remapped) */ + /* _mesa_function_pool[30406]: PrimitiveRestartNV (will be remapped) */ "\0" "glPrimitiveRestartNV\0" "\0" - /* _mesa_function_pool[28261]: WindowPos4fvMESA (will be remapped) */ + /* _mesa_function_pool[30429]: WindowPos4fvMESA (will be remapped) */ "p\0" "glWindowPos4fvMESA\0" "\0" - /* _mesa_function_pool[28283]: GetPixelMapuiv (offset 272) */ + /* _mesa_function_pool[30451]: GetPixelMapuiv (offset 272) */ "ip\0" "glGetPixelMapuiv\0" "\0" - /* _mesa_function_pool[28304]: Rectf (offset 88) */ + /* _mesa_function_pool[30472]: Rectf (offset 88) */ "ffff\0" "glRectf\0" "\0" - /* _mesa_function_pool[28318]: VertexAttrib1sNV (will be remapped) */ + /* _mesa_function_pool[30486]: VertexAttrib1sNV (will be remapped) */ "ii\0" "glVertexAttrib1sNV\0" "\0" - /* _mesa_function_pool[28341]: Indexfv (offset 47) */ + /* _mesa_function_pool[30509]: Indexfv (offset 47) */ "p\0" "glIndexfv\0" "\0" - /* _mesa_function_pool[28354]: SecondaryColor3svEXT (will be remapped) */ + /* _mesa_function_pool[30522]: SecondaryColor3svEXT (will be remapped) */ "p\0" "glSecondaryColor3sv\0" "glSecondaryColor3svEXT\0" "\0" - /* _mesa_function_pool[28400]: LoadTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[30568]: LoadTransposeMatrixfARB (will be remapped) */ "p\0" "glLoadTransposeMatrixf\0" "glLoadTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[28452]: GetPointerv (offset 329) */ + /* _mesa_function_pool[30620]: GetPointerv (offset 329) */ "ip\0" "glGetPointerv\0" "glGetPointervEXT\0" "\0" - /* _mesa_function_pool[28487]: Tangent3bEXT (dynamic) */ + /* _mesa_function_pool[30655]: Tangent3bEXT (dynamic) */ "iii\0" "glTangent3bEXT\0" "\0" - /* _mesa_function_pool[28507]: CombinerParameterfNV (will be remapped) */ + /* _mesa_function_pool[30675]: CombinerParameterfNV (will be remapped) */ "if\0" "glCombinerParameterfNV\0" "\0" - /* _mesa_function_pool[28534]: IndexMask (offset 212) */ + /* _mesa_function_pool[30702]: IndexMask (offset 212) */ "i\0" "glIndexMask\0" "\0" - /* _mesa_function_pool[28549]: BindProgramNV (will be remapped) */ + /* _mesa_function_pool[30717]: BindProgramNV (will be remapped) */ "ii\0" "glBindProgramARB\0" "glBindProgramNV\0" "\0" - /* _mesa_function_pool[28586]: VertexAttrib4svARB (will be remapped) */ + /* _mesa_function_pool[30754]: VertexAttrib4svARB (will be remapped) */ "ip\0" "glVertexAttrib4sv\0" "glVertexAttrib4svARB\0" "\0" - /* _mesa_function_pool[28629]: GetFloatv (offset 262) */ + /* _mesa_function_pool[30797]: GetFloatv (offset 262) */ "ip\0" "glGetFloatv\0" "\0" - /* _mesa_function_pool[28645]: CreateDebugObjectMESA (dynamic) */ + /* _mesa_function_pool[30813]: CreateDebugObjectMESA (dynamic) */ "\0" "glCreateDebugObjectMESA\0" "\0" - /* _mesa_function_pool[28671]: GetShaderiv (will be remapped) */ + /* _mesa_function_pool[30839]: GetShaderiv (will be remapped) */ "iip\0" "glGetShaderiv\0" "\0" - /* _mesa_function_pool[28690]: ClientWaitSync (will be remapped) */ + /* _mesa_function_pool[30858]: ClientWaitSync (will be remapped) */ "iii\0" "glClientWaitSync\0" "\0" - /* _mesa_function_pool[28712]: TexCoord4s (offset 124) */ + /* _mesa_function_pool[30880]: TexCoord4s (offset 124) */ "iiii\0" "glTexCoord4s\0" "\0" - /* _mesa_function_pool[28731]: TexCoord3sv (offset 117) */ + /* _mesa_function_pool[30899]: TexCoord3sv (offset 117) */ "p\0" "glTexCoord3sv\0" "\0" - /* _mesa_function_pool[28748]: BindFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[30916]: BindFragmentShaderATI (will be remapped) */ "i\0" "glBindFragmentShaderATI\0" "\0" - /* _mesa_function_pool[28775]: PopAttrib (offset 218) */ + /* _mesa_function_pool[30943]: PopAttrib (offset 218) */ "\0" "glPopAttrib\0" "\0" - /* _mesa_function_pool[28789]: Fogfv (offset 154) */ + /* _mesa_function_pool[30957]: Fogfv (offset 154) */ "ip\0" "glFogfv\0" "\0" - /* _mesa_function_pool[28801]: UnmapBufferARB (will be remapped) */ + /* _mesa_function_pool[30969]: UnmapBufferARB (will be remapped) */ "i\0" "glUnmapBuffer\0" "glUnmapBufferARB\0" "\0" - /* _mesa_function_pool[28835]: InitNames (offset 197) */ + /* _mesa_function_pool[31003]: InitNames (offset 197) */ "\0" "glInitNames\0" "\0" - /* _mesa_function_pool[28849]: Normal3sv (offset 61) */ + /* _mesa_function_pool[31017]: Normal3sv (offset 61) */ "p\0" "glNormal3sv\0" "\0" - /* _mesa_function_pool[28864]: Minmax (offset 368) */ + /* _mesa_function_pool[31032]: Minmax (offset 368) */ "iii\0" "glMinmax\0" "glMinmaxEXT\0" "\0" - /* _mesa_function_pool[28890]: TexCoord4d (offset 118) */ + /* _mesa_function_pool[31058]: TexCoord4d (offset 118) */ "dddd\0" "glTexCoord4d\0" "\0" - /* _mesa_function_pool[28909]: DeformationMap3dSGIX (dynamic) */ + /* _mesa_function_pool[31077]: DeformationMap3dSGIX (dynamic) */ "iddiiddiiddiip\0" "glDeformationMap3dSGIX\0" "\0" - /* _mesa_function_pool[28948]: TexCoord4f (offset 120) */ + /* _mesa_function_pool[31116]: TexCoord4f (offset 120) */ "ffff\0" "glTexCoord4f\0" "\0" - /* _mesa_function_pool[28967]: FogCoorddvEXT (will be remapped) */ + /* _mesa_function_pool[31135]: FogCoorddvEXT (will be remapped) */ "p\0" "glFogCoorddv\0" "glFogCoorddvEXT\0" "\0" - /* _mesa_function_pool[28999]: FinishTextureSUNX (dynamic) */ + /* _mesa_function_pool[31167]: FinishTextureSUNX (dynamic) */ "\0" "glFinishTextureSUNX\0" "\0" - /* _mesa_function_pool[29021]: GetFragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[31189]: GetFragmentLightfvSGIX (dynamic) */ "iip\0" "glGetFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[29051]: Binormal3fvEXT (dynamic) */ + /* _mesa_function_pool[31219]: Binormal3fvEXT (dynamic) */ "p\0" "glBinormal3fvEXT\0" "\0" - /* _mesa_function_pool[29071]: GetBooleanv (offset 258) */ + /* _mesa_function_pool[31239]: GetBooleanv (offset 258) */ "ip\0" "glGetBooleanv\0" "\0" - /* _mesa_function_pool[29089]: ColorFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[31257]: ColorFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiiii\0" "glColorFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[29126]: Hint (offset 158) */ + /* _mesa_function_pool[31294]: Hint (offset 158) */ "ii\0" "glHint\0" "\0" - /* _mesa_function_pool[29137]: Color4dv (offset 28) */ + /* _mesa_function_pool[31305]: Color4dv (offset 28) */ "p\0" "glColor4dv\0" "\0" - /* _mesa_function_pool[29151]: VertexAttrib2svARB (will be remapped) */ + /* _mesa_function_pool[31319]: VertexAttrib2svARB (will be remapped) */ "ip\0" "glVertexAttrib2sv\0" "glVertexAttrib2svARB\0" "\0" - /* _mesa_function_pool[29194]: AreProgramsResidentNV (will be remapped) */ + /* _mesa_function_pool[31362]: AreProgramsResidentNV (will be remapped) */ "ipp\0" "glAreProgramsResidentNV\0" "\0" - /* _mesa_function_pool[29223]: WindowPos3svMESA (will be remapped) */ + /* _mesa_function_pool[31391]: WindowPos3svMESA (will be remapped) */ "p\0" "glWindowPos3sv\0" "glWindowPos3svARB\0" "glWindowPos3svMESA\0" "\0" - /* _mesa_function_pool[29278]: CopyColorSubTable (offset 347) */ + /* _mesa_function_pool[31446]: CopyColorSubTable (offset 347) */ "iiiii\0" "glCopyColorSubTable\0" "glCopyColorSubTableEXT\0" "\0" - /* _mesa_function_pool[29328]: WeightdvARB (dynamic) */ + /* _mesa_function_pool[31496]: WeightdvARB (dynamic) */ "ip\0" "glWeightdvARB\0" "\0" - /* _mesa_function_pool[29346]: DeleteRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[31514]: DeleteRenderbuffersEXT (will be remapped) */ "ip\0" "glDeleteRenderbuffers\0" "glDeleteRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[29397]: VertexAttrib4NubvARB (will be remapped) */ + /* _mesa_function_pool[31565]: VertexAttrib4NubvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nubv\0" "glVertexAttrib4NubvARB\0" "\0" - /* _mesa_function_pool[29444]: VertexAttrib3dvNV (will be remapped) */ + /* _mesa_function_pool[31612]: VertexAttrib3dvNV (will be remapped) */ "ip\0" "glVertexAttrib3dvNV\0" "\0" - /* _mesa_function_pool[29468]: GetObjectParameterfvARB (will be remapped) */ + /* _mesa_function_pool[31636]: GetObjectParameterfvARB (will be remapped) */ "iip\0" "glGetObjectParameterfvARB\0" "\0" - /* _mesa_function_pool[29499]: Vertex4iv (offset 147) */ + /* _mesa_function_pool[31667]: Vertex4iv (offset 147) */ "p\0" "glVertex4iv\0" "\0" - /* _mesa_function_pool[29514]: GetProgramEnvParameterdvARB (will be remapped) */ + /* _mesa_function_pool[31682]: GetProgramEnvParameterdvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterdvARB\0" "\0" - /* _mesa_function_pool[29549]: TexCoord4dv (offset 119) */ + /* _mesa_function_pool[31717]: TexCoord4dv (offset 119) */ "p\0" "glTexCoord4dv\0" "\0" - /* _mesa_function_pool[29566]: LockArraysEXT (will be remapped) */ + /* _mesa_function_pool[31734]: LockArraysEXT (will be remapped) */ "ii\0" "glLockArraysEXT\0" "\0" - /* _mesa_function_pool[29586]: Begin (offset 7) */ + /* _mesa_function_pool[31754]: Begin (offset 7) */ "i\0" "glBegin\0" "\0" - /* _mesa_function_pool[29597]: LightModeli (offset 165) */ + /* _mesa_function_pool[31765]: LightModeli (offset 165) */ "ii\0" "glLightModeli\0" "\0" - /* _mesa_function_pool[29615]: Rectfv (offset 89) */ + /* _mesa_function_pool[31783]: VertexAttribI4ivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI4ivEXT\0" + "glVertexAttribI4iv\0" + "\0" + /* _mesa_function_pool[31828]: Rectfv (offset 89) */ "pp\0" "glRectfv\0" "\0" - /* _mesa_function_pool[29628]: LightModelf (offset 163) */ + /* _mesa_function_pool[31841]: LightModelf (offset 163) */ "if\0" "glLightModelf\0" "\0" - /* _mesa_function_pool[29646]: GetTexParameterfv (offset 282) */ + /* _mesa_function_pool[31859]: GetTexParameterfv (offset 282) */ "iip\0" "glGetTexParameterfv\0" "\0" - /* _mesa_function_pool[29671]: GetLightfv (offset 264) */ + /* _mesa_function_pool[31884]: GetLightfv (offset 264) */ "iip\0" "glGetLightfv\0" "\0" - /* _mesa_function_pool[29689]: PixelTransformParameterivEXT (dynamic) */ + /* _mesa_function_pool[31902]: PixelTransformParameterivEXT (dynamic) */ "iip\0" "glPixelTransformParameterivEXT\0" "\0" - /* _mesa_function_pool[29725]: BinormalPointerEXT (dynamic) */ + /* _mesa_function_pool[31938]: BinormalPointerEXT (dynamic) */ "iip\0" "glBinormalPointerEXT\0" "\0" - /* _mesa_function_pool[29751]: VertexAttrib1dNV (will be remapped) */ + /* _mesa_function_pool[31964]: VertexAttrib1dNV (will be remapped) */ "id\0" "glVertexAttrib1dNV\0" "\0" - /* _mesa_function_pool[29774]: GetCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[31987]: GetCombinerInputParameterivNV (will be remapped) */ "iiiip\0" "glGetCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[29813]: Disable (offset 214) */ + /* _mesa_function_pool[32026]: Disable (offset 214) */ "i\0" "glDisable\0" "\0" - /* _mesa_function_pool[29826]: MultiTexCoord2fvARB (offset 387) */ + /* _mesa_function_pool[32039]: MultiTexCoord2fvARB (offset 387) */ "ip\0" "glMultiTexCoord2fv\0" "glMultiTexCoord2fvARB\0" "\0" - /* _mesa_function_pool[29871]: GetRenderbufferParameterivEXT (will be remapped) */ + /* _mesa_function_pool[32084]: GetRenderbufferParameterivEXT (will be remapped) */ "iip\0" "glGetRenderbufferParameteriv\0" "glGetRenderbufferParameterivEXT\0" "\0" - /* _mesa_function_pool[29937]: CombinerParameterivNV (will be remapped) */ + /* _mesa_function_pool[32150]: CombinerParameterivNV (will be remapped) */ "ip\0" "glCombinerParameterivNV\0" "\0" - /* _mesa_function_pool[29965]: GenFragmentShadersATI (will be remapped) */ + /* _mesa_function_pool[32178]: GenFragmentShadersATI (will be remapped) */ "i\0" "glGenFragmentShadersATI\0" "\0" - /* _mesa_function_pool[29992]: DrawArrays (offset 310) */ + /* _mesa_function_pool[32205]: DrawArrays (offset 310) */ "iii\0" "glDrawArrays\0" "glDrawArraysEXT\0" "\0" - /* _mesa_function_pool[30026]: WeightuivARB (dynamic) */ + /* _mesa_function_pool[32239]: WeightuivARB (dynamic) */ "ip\0" "glWeightuivARB\0" "\0" - /* _mesa_function_pool[30045]: VertexAttrib2sARB (will be remapped) */ + /* _mesa_function_pool[32258]: VertexAttrib2sARB (will be remapped) */ "iii\0" "glVertexAttrib2s\0" "glVertexAttrib2sARB\0" "\0" - /* _mesa_function_pool[30087]: ColorMask (offset 210) */ + /* _mesa_function_pool[32300]: ColorMask (offset 210) */ "iiii\0" "glColorMask\0" "\0" - /* _mesa_function_pool[30105]: GenAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[32318]: GenAsyncMarkersSGIX (dynamic) */ "i\0" "glGenAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[30130]: Tangent3svEXT (dynamic) */ + /* _mesa_function_pool[32343]: Tangent3svEXT (dynamic) */ "p\0" "glTangent3svEXT\0" "\0" - /* _mesa_function_pool[30149]: GetListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[32362]: GetListParameterivSGIX (dynamic) */ "iip\0" "glGetListParameterivSGIX\0" "\0" - /* _mesa_function_pool[30179]: BindBufferARB (will be remapped) */ + /* _mesa_function_pool[32392]: BindBufferARB (will be remapped) */ "ii\0" "glBindBuffer\0" "glBindBufferARB\0" "\0" - /* _mesa_function_pool[30212]: GetInfoLogARB (will be remapped) */ + /* _mesa_function_pool[32425]: GetInfoLogARB (will be remapped) */ "iipp\0" "glGetInfoLogARB\0" "\0" - /* _mesa_function_pool[30234]: RasterPos4iv (offset 83) */ + /* _mesa_function_pool[32447]: RasterPos4iv (offset 83) */ "p\0" "glRasterPos4iv\0" "\0" - /* _mesa_function_pool[30252]: Enable (offset 215) */ + /* _mesa_function_pool[32465]: Enable (offset 215) */ "i\0" "glEnable\0" "\0" - /* _mesa_function_pool[30264]: LineStipple (offset 167) */ + /* _mesa_function_pool[32477]: LineStipple (offset 167) */ "ii\0" "glLineStipple\0" "\0" - /* _mesa_function_pool[30282]: VertexAttribs4svNV (will be remapped) */ + /* _mesa_function_pool[32495]: VertexAttribs4svNV (will be remapped) */ "iip\0" "glVertexAttribs4svNV\0" "\0" - /* _mesa_function_pool[30308]: EdgeFlagPointerListIBM (dynamic) */ + /* _mesa_function_pool[32521]: EdgeFlagPointerListIBM (dynamic) */ "ipi\0" "glEdgeFlagPointerListIBM\0" "\0" - /* _mesa_function_pool[30338]: UniformMatrix3x2fv (will be remapped) */ + /* _mesa_function_pool[32551]: UniformMatrix3x2fv (will be remapped) */ "iiip\0" "glUniformMatrix3x2fv\0" "\0" - /* _mesa_function_pool[30365]: GetMinmaxParameterfv (offset 365) */ + /* _mesa_function_pool[32578]: GetMinmaxParameterfv (offset 365) */ "iip\0" "glGetMinmaxParameterfv\0" "glGetMinmaxParameterfvEXT\0" "\0" - /* _mesa_function_pool[30419]: VertexAttrib1fvARB (will be remapped) */ + /* _mesa_function_pool[32632]: VertexAttrib1fvARB (will be remapped) */ "ip\0" "glVertexAttrib1fv\0" "glVertexAttrib1fvARB\0" "\0" - /* _mesa_function_pool[30462]: GenBuffersARB (will be remapped) */ + /* _mesa_function_pool[32675]: GenBuffersARB (will be remapped) */ "ip\0" "glGenBuffers\0" "glGenBuffersARB\0" "\0" - /* _mesa_function_pool[30495]: VertexAttribs1svNV (will be remapped) */ + /* _mesa_function_pool[32708]: VertexAttribs1svNV (will be remapped) */ "iip\0" "glVertexAttribs1svNV\0" "\0" - /* _mesa_function_pool[30521]: Vertex3fv (offset 137) */ + /* _mesa_function_pool[32734]: Vertex3fv (offset 137) */ "p\0" "glVertex3fv\0" "\0" - /* _mesa_function_pool[30536]: GetTexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[32749]: GetTexBumpParameterivATI (will be remapped) */ "ip\0" "glGetTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[30567]: Binormal3bEXT (dynamic) */ + /* _mesa_function_pool[32780]: Binormal3bEXT (dynamic) */ "iii\0" "glBinormal3bEXT\0" "\0" - /* _mesa_function_pool[30588]: FragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[32801]: FragmentMaterialivSGIX (dynamic) */ "iip\0" "glFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[30618]: IsRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[32831]: IsRenderbufferEXT (will be remapped) */ "i\0" "glIsRenderbuffer\0" "glIsRenderbufferEXT\0" "\0" - /* _mesa_function_pool[30658]: GenProgramsNV (will be remapped) */ + /* _mesa_function_pool[32871]: GenProgramsNV (will be remapped) */ "ip\0" "glGenProgramsARB\0" "glGenProgramsNV\0" "\0" - /* _mesa_function_pool[30695]: VertexAttrib4dvNV (will be remapped) */ + /* _mesa_function_pool[32908]: VertexAttrib4dvNV (will be remapped) */ "ip\0" "glVertexAttrib4dvNV\0" "\0" - /* _mesa_function_pool[30719]: EndFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[32932]: EndFragmentShaderATI (will be remapped) */ "\0" "glEndFragmentShaderATI\0" "\0" - /* _mesa_function_pool[30744]: Binormal3iEXT (dynamic) */ + /* _mesa_function_pool[32957]: Binormal3iEXT (dynamic) */ "iii\0" "glBinormal3iEXT\0" "\0" - /* _mesa_function_pool[30765]: WindowPos2fMESA (will be remapped) */ + /* _mesa_function_pool[32978]: WindowPos2fMESA (will be remapped) */ "ff\0" "glWindowPos2f\0" "glWindowPos2fARB\0" @@ -4476,535 +4739,589 @@ static const char _mesa_function_pool[] = /* these functions need to be remapped */ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { - { 1461, AttachShader_remap_index }, - { 8995, CreateProgram_remap_index }, - { 21182, CreateShader_remap_index }, - { 23495, DeleteProgram_remap_index }, - { 16966, DeleteShader_remap_index }, - { 21628, DetachShader_remap_index }, - { 16490, GetAttachedShaders_remap_index }, - { 4275, GetProgramInfoLog_remap_index }, - { 361, GetProgramiv_remap_index }, - { 5721, GetShaderInfoLog_remap_index }, - { 28671, GetShaderiv_remap_index }, - { 12198, IsProgram_remap_index }, - { 11197, IsShader_remap_index }, - { 9099, StencilFuncSeparate_remap_index }, - { 3487, StencilMaskSeparate_remap_index }, - { 6803, StencilOpSeparate_remap_index }, - { 20507, UniformMatrix2x3fv_remap_index }, - { 2615, UniformMatrix2x4fv_remap_index }, - { 30338, UniformMatrix3x2fv_remap_index }, - { 28038, UniformMatrix3x4fv_remap_index }, - { 14961, UniformMatrix4x2fv_remap_index }, - { 2937, UniformMatrix4x3fv_remap_index }, - { 14622, DrawArraysInstanced_remap_index }, - { 15754, DrawElementsInstanced_remap_index }, - { 9013, LoadTransposeMatrixdARB_remap_index }, - { 28400, LoadTransposeMatrixfARB_remap_index }, - { 4904, MultTransposeMatrixdARB_remap_index }, - { 21815, MultTransposeMatrixfARB_remap_index }, - { 172, SampleCoverageARB_remap_index }, - { 5117, CompressedTexImage1DARB_remap_index }, - { 22298, CompressedTexImage2DARB_remap_index }, - { 3550, CompressedTexImage3DARB_remap_index }, - { 16782, CompressedTexSubImage1DARB_remap_index }, - { 1880, CompressedTexSubImage2DARB_remap_index }, - { 18643, CompressedTexSubImage3DARB_remap_index }, - { 26320, GetCompressedTexImageARB_remap_index }, - { 3395, DisableVertexAttribArrayARB_remap_index }, - { 27650, EnableVertexAttribArrayARB_remap_index }, - { 29514, GetProgramEnvParameterdvARB_remap_index }, - { 21695, GetProgramEnvParameterfvARB_remap_index }, - { 25319, GetProgramLocalParameterdvARB_remap_index }, - { 7245, GetProgramLocalParameterfvARB_remap_index }, - { 16873, GetProgramStringARB_remap_index }, - { 25514, GetProgramivARB_remap_index }, - { 18838, GetVertexAttribdvARB_remap_index }, - { 14850, GetVertexAttribfvARB_remap_index }, - { 8908, GetVertexAttribivARB_remap_index }, - { 17719, ProgramEnvParameter4dARB_remap_index }, - { 23268, ProgramEnvParameter4dvARB_remap_index }, - { 15458, ProgramEnvParameter4fARB_remap_index }, - { 8108, ProgramEnvParameter4fvARB_remap_index }, - { 3513, ProgramLocalParameter4dARB_remap_index }, - { 11908, ProgramLocalParameter4dvARB_remap_index }, - { 27129, ProgramLocalParameter4fARB_remap_index }, - { 23848, ProgramLocalParameter4fvARB_remap_index }, - { 26100, ProgramStringARB_remap_index }, - { 17969, VertexAttrib1dARB_remap_index }, - { 14426, VertexAttrib1dvARB_remap_index }, - { 3688, VertexAttrib1fARB_remap_index }, - { 30419, VertexAttrib1fvARB_remap_index }, - { 6329, VertexAttrib1sARB_remap_index }, - { 2054, VertexAttrib1svARB_remap_index }, - { 13857, VertexAttrib2dARB_remap_index }, - { 16109, VertexAttrib2dvARB_remap_index }, - { 1480, VertexAttrib2fARB_remap_index }, - { 16222, VertexAttrib2fvARB_remap_index }, - { 30045, VertexAttrib2sARB_remap_index }, - { 29151, VertexAttrib2svARB_remap_index }, - { 10282, VertexAttrib3dARB_remap_index }, - { 7811, VertexAttrib3dvARB_remap_index }, - { 1567, VertexAttrib3fARB_remap_index }, - { 20770, VertexAttrib3fvARB_remap_index }, - { 25947, VertexAttrib3sARB_remap_index }, - { 18580, VertexAttrib3svARB_remap_index }, - { 4301, VertexAttrib4NbvARB_remap_index }, - { 16445, VertexAttrib4NivARB_remap_index }, - { 20725, VertexAttrib4NsvARB_remap_index }, - { 21647, VertexAttrib4NubARB_remap_index }, - { 29397, VertexAttrib4NubvARB_remap_index }, - { 17380, VertexAttrib4NuivARB_remap_index }, - { 2810, VertexAttrib4NusvARB_remap_index }, - { 9876, VertexAttrib4bvARB_remap_index }, - { 24727, VertexAttrib4dARB_remap_index }, - { 19602, VertexAttrib4dvARB_remap_index }, - { 10389, VertexAttrib4fARB_remap_index }, - { 10793, VertexAttrib4fvARB_remap_index }, - { 9292, VertexAttrib4ivARB_remap_index }, - { 15923, VertexAttrib4sARB_remap_index }, - { 28586, VertexAttrib4svARB_remap_index }, - { 15263, VertexAttrib4ubvARB_remap_index }, - { 27974, VertexAttrib4uivARB_remap_index }, - { 18391, VertexAttrib4usvARB_remap_index }, - { 20356, VertexAttribPointerARB_remap_index }, - { 30179, BindBufferARB_remap_index }, - { 6036, BufferDataARB_remap_index }, - { 1382, BufferSubDataARB_remap_index }, - { 28163, DeleteBuffersARB_remap_index }, - { 30462, GenBuffersARB_remap_index }, - { 16265, GetBufferParameterivARB_remap_index }, - { 15410, GetBufferPointervARB_remap_index }, - { 1335, GetBufferSubDataARB_remap_index }, - { 27922, IsBufferARB_remap_index }, - { 24332, MapBufferARB_remap_index }, - { 28801, UnmapBufferARB_remap_index }, - { 268, BeginQueryARB_remap_index }, - { 18064, DeleteQueriesARB_remap_index }, - { 11087, EndQueryARB_remap_index }, - { 26799, GenQueriesARB_remap_index }, - { 1772, GetQueryObjectivARB_remap_index }, - { 15967, GetQueryObjectuivARB_remap_index }, - { 1624, GetQueryivARB_remap_index }, - { 18298, IsQueryARB_remap_index }, - { 7421, AttachObjectARB_remap_index }, - { 16928, CompileShaderARB_remap_index }, - { 2879, CreateProgramObjectARB_remap_index }, - { 5981, CreateShaderObjectARB_remap_index }, - { 13274, DeleteObjectARB_remap_index }, - { 22089, DetachObjectARB_remap_index }, - { 10865, GetActiveUniformARB_remap_index }, - { 8583, GetAttachedObjectsARB_remap_index }, - { 8890, GetHandleARB_remap_index }, - { 30212, GetInfoLogARB_remap_index }, - { 29468, GetObjectParameterfvARB_remap_index }, - { 25193, GetObjectParameterivARB_remap_index }, - { 26557, GetShaderSourceARB_remap_index }, - { 25807, GetUniformLocationARB_remap_index }, - { 21917, GetUniformfvARB_remap_index }, - { 11530, GetUniformivARB_remap_index }, - { 18436, LinkProgramARB_remap_index }, - { 18494, ShaderSourceARB_remap_index }, - { 6703, Uniform1fARB_remap_index }, - { 27338, Uniform1fvARB_remap_index }, - { 20325, Uniform1iARB_remap_index }, - { 19291, Uniform1ivARB_remap_index }, - { 2003, Uniform2fARB_remap_index }, - { 13110, Uniform2fvARB_remap_index }, - { 24219, Uniform2iARB_remap_index }, - { 2123, Uniform2ivARB_remap_index }, - { 17038, Uniform3fARB_remap_index }, - { 8613, Uniform3fvARB_remap_index }, - { 5627, Uniform3iARB_remap_index }, - { 15516, Uniform3ivARB_remap_index }, - { 17525, Uniform4fARB_remap_index }, - { 21781, Uniform4fvARB_remap_index }, - { 22947, Uniform4iARB_remap_index }, - { 18804, Uniform4ivARB_remap_index }, - { 7473, UniformMatrix2fvARB_remap_index }, + { 1577, AttachShader_remap_index }, + { 9902, CreateProgram_remap_index }, + { 22864, CreateShader_remap_index }, + { 25322, DeleteProgram_remap_index }, + { 18525, DeleteShader_remap_index }, + { 23336, DetachShader_remap_index }, + { 17928, GetAttachedShaders_remap_index }, + { 4869, GetProgramInfoLog_remap_index }, + { 405, GetProgramiv_remap_index }, + { 6542, GetShaderInfoLog_remap_index }, + { 30839, GetShaderiv_remap_index }, + { 13311, IsProgram_remap_index }, + { 12263, IsShader_remap_index }, + { 10006, StencilFuncSeparate_remap_index }, + { 3921, StencilMaskSeparate_remap_index }, + { 7624, StencilOpSeparate_remap_index }, + { 22152, UniformMatrix2x3fv_remap_index }, + { 2847, UniformMatrix2x4fv_remap_index }, + { 32551, UniformMatrix3x2fv_remap_index }, + { 30161, UniformMatrix3x4fv_remap_index }, + { 16226, UniformMatrix4x2fv_remap_index }, + { 3263, UniformMatrix4x3fv_remap_index }, + { 5030, ClampColor_remap_index }, + { 17982, ClearBufferfi_remap_index }, + { 17448, ClearBufferfv_remap_index }, + { 29184, ClearBufferiv_remap_index }, + { 13516, ClearBufferuiv_remap_index }, + { 19808, GetStringi_remap_index }, + { 2788, TexBuffer_remap_index }, + { 938, FramebufferTexture_remap_index }, + { 26315, GetBufferParameteri64v_remap_index }, + { 10106, GetInteger64i_v_remap_index }, + { 23178, VertexAttribDivisor_remap_index }, + { 9920, LoadTransposeMatrixdARB_remap_index }, + { 30568, LoadTransposeMatrixfARB_remap_index }, + { 5608, MultTransposeMatrixdARB_remap_index }, + { 23523, MultTransposeMatrixfARB_remap_index }, + { 216, SampleCoverageARB_remap_index }, + { 5834, CompressedTexImage1DARB_remap_index }, + { 24051, CompressedTexImage2DARB_remap_index }, + { 3984, CompressedTexImage3DARB_remap_index }, + { 18242, CompressedTexSubImage1DARB_remap_index }, + { 2050, CompressedTexSubImage2DARB_remap_index }, + { 20230, CompressedTexSubImage3DARB_remap_index }, + { 28340, GetCompressedTexImageARB_remap_index }, + { 3829, DisableVertexAttribArrayARB_remap_index }, + { 29726, EnableVertexAttribArrayARB_remap_index }, + { 31682, GetProgramEnvParameterdvARB_remap_index }, + { 23403, GetProgramEnvParameterfvARB_remap_index }, + { 27277, GetProgramLocalParameterdvARB_remap_index }, + { 8066, GetProgramLocalParameterfvARB_remap_index }, + { 18376, GetProgramStringARB_remap_index }, + { 27472, GetProgramivARB_remap_index }, + { 20425, GetVertexAttribdvARB_remap_index }, + { 16034, GetVertexAttribfvARB_remap_index }, + { 9765, GetVertexAttribivARB_remap_index }, + { 19289, ProgramEnvParameter4dARB_remap_index }, + { 25072, ProgramEnvParameter4dvARB_remap_index }, + { 16770, ProgramEnvParameter4fARB_remap_index }, + { 8965, ProgramEnvParameter4fvARB_remap_index }, + { 3947, ProgramLocalParameter4dARB_remap_index }, + { 13021, ProgramLocalParameter4dvARB_remap_index }, + { 29205, ProgramLocalParameter4fARB_remap_index }, + { 25675, ProgramLocalParameter4fvARB_remap_index }, + { 28094, ProgramStringARB_remap_index }, + { 19539, VertexAttrib1dARB_remap_index }, + { 15688, VertexAttrib1dvARB_remap_index }, + { 4122, VertexAttrib1fARB_remap_index }, + { 32632, VertexAttrib1fvARB_remap_index }, + { 7150, VertexAttrib1sARB_remap_index }, + { 2224, VertexAttrib1svARB_remap_index }, + { 15119, VertexAttrib2dARB_remap_index }, + { 17469, VertexAttrib2dvARB_remap_index }, + { 1596, VertexAttrib2fARB_remap_index }, + { 17582, VertexAttrib2fvARB_remap_index }, + { 32258, VertexAttrib2sARB_remap_index }, + { 31319, VertexAttrib2svARB_remap_index }, + { 11268, VertexAttrib3dARB_remap_index }, + { 8632, VertexAttrib3dvARB_remap_index }, + { 1683, VertexAttrib3fARB_remap_index }, + { 22415, VertexAttrib3fvARB_remap_index }, + { 27941, VertexAttrib3sARB_remap_index }, + { 20167, VertexAttrib3svARB_remap_index }, + { 4895, VertexAttrib4NbvARB_remap_index }, + { 17805, VertexAttrib4NivARB_remap_index }, + { 22370, VertexAttrib4NsvARB_remap_index }, + { 23355, VertexAttrib4NubARB_remap_index }, + { 31565, VertexAttrib4NubvARB_remap_index }, + { 18950, VertexAttrib4NuivARB_remap_index }, + { 3136, VertexAttrib4NusvARB_remap_index }, + { 10846, VertexAttrib4bvARB_remap_index }, + { 26685, VertexAttrib4dARB_remap_index }, + { 21189, VertexAttrib4dvARB_remap_index }, + { 11422, VertexAttrib4fARB_remap_index }, + { 11826, VertexAttrib4fvARB_remap_index }, + { 10222, VertexAttrib4ivARB_remap_index }, + { 17262, VertexAttrib4sARB_remap_index }, + { 30754, VertexAttrib4svARB_remap_index }, + { 16575, VertexAttrib4ubvARB_remap_index }, + { 30050, VertexAttrib4uivARB_remap_index }, + { 19978, VertexAttrib4usvARB_remap_index }, + { 21967, VertexAttribPointerARB_remap_index }, + { 32392, BindBufferARB_remap_index }, + { 6857, BufferDataARB_remap_index }, + { 1498, BufferSubDataARB_remap_index }, + { 30331, DeleteBuffersARB_remap_index }, + { 32675, GenBuffersARB_remap_index }, + { 17625, GetBufferParameterivARB_remap_index }, + { 16722, GetBufferPointervARB_remap_index }, + { 1451, GetBufferSubDataARB_remap_index }, + { 29998, IsBufferARB_remap_index }, + { 26159, MapBufferARB_remap_index }, + { 30969, UnmapBufferARB_remap_index }, + { 312, BeginQueryARB_remap_index }, + { 19634, DeleteQueriesARB_remap_index }, + { 12153, EndQueryARB_remap_index }, + { 28819, GenQueriesARB_remap_index }, + { 1942, GetQueryObjectivARB_remap_index }, + { 17306, GetQueryObjectuivARB_remap_index }, + { 1740, GetQueryivARB_remap_index }, + { 19885, IsQueryARB_remap_index }, + { 8242, AttachObjectARB_remap_index }, + { 18487, CompileShaderARB_remap_index }, + { 3205, CreateProgramObjectARB_remap_index }, + { 6802, CreateShaderObjectARB_remap_index }, + { 14454, DeleteObjectARB_remap_index }, + { 23842, DetachObjectARB_remap_index }, + { 11898, GetActiveUniformARB_remap_index }, + { 9440, GetAttachedObjectsARB_remap_index }, + { 9747, GetHandleARB_remap_index }, + { 32425, GetInfoLogARB_remap_index }, + { 31636, GetObjectParameterfvARB_remap_index }, + { 27151, GetObjectParameterivARB_remap_index }, + { 28577, GetShaderSourceARB_remap_index }, + { 27801, GetUniformLocationARB_remap_index }, + { 23625, GetUniformfvARB_remap_index }, + { 12596, GetUniformivARB_remap_index }, + { 20023, LinkProgramARB_remap_index }, + { 20081, ShaderSourceARB_remap_index }, + { 7524, Uniform1fARB_remap_index }, + { 29414, Uniform1fvARB_remap_index }, + { 21936, Uniform1iARB_remap_index }, + { 20878, Uniform1ivARB_remap_index }, + { 2173, Uniform2fARB_remap_index }, + { 14290, Uniform2fvARB_remap_index }, + { 26046, Uniform2iARB_remap_index }, + { 2293, Uniform2ivARB_remap_index }, + { 18597, Uniform3fARB_remap_index }, + { 9470, Uniform3fvARB_remap_index }, + { 6396, Uniform3iARB_remap_index }, + { 16828, Uniform3ivARB_remap_index }, + { 19095, Uniform4fARB_remap_index }, + { 23489, Uniform4fvARB_remap_index }, + { 24751, Uniform4iARB_remap_index }, + { 20391, Uniform4ivARB_remap_index }, + { 8294, UniformMatrix2fvARB_remap_index }, { 17, UniformMatrix3fvARB_remap_index }, - { 2475, UniformMatrix4fvARB_remap_index }, - { 23380, UseProgramObjectARB_remap_index }, - { 13545, ValidateProgramARB_remap_index }, - { 19645, BindAttribLocationARB_remap_index }, - { 4346, GetActiveAttribARB_remap_index }, - { 15197, GetAttribLocationARB_remap_index }, - { 27077, DrawBuffersARB_remap_index }, - { 12013, RenderbufferStorageMultisample_remap_index }, - { 12417, FramebufferTextureARB_remap_index }, - { 23750, FramebufferTextureFaceARB_remap_index }, - { 22238, ProgramParameteriARB_remap_index }, - { 17573, FlushMappedBufferRange_remap_index }, - { 25610, MapBufferRange_remap_index }, - { 15072, BindVertexArray_remap_index }, - { 13404, GenVertexArrays_remap_index }, - { 27852, CopyBufferSubData_remap_index }, - { 28690, ClientWaitSync_remap_index }, - { 2394, DeleteSync_remap_index }, - { 6370, FenceSync_remap_index }, - { 13916, GetInteger64v_remap_index }, - { 20832, GetSynciv_remap_index }, - { 27016, IsSync_remap_index }, - { 8531, WaitSync_remap_index }, - { 3363, DrawElementsBaseVertex_remap_index }, - { 28095, DrawRangeElementsBaseVertex_remap_index }, - { 24363, MultiDrawElementsBaseVertex_remap_index }, - { 4480, BindTransformFeedback_remap_index }, - { 2906, DeleteTransformFeedbacks_remap_index }, - { 5660, DrawTransformFeedback_remap_index }, - { 8750, GenTransformFeedbacks_remap_index }, - { 25990, IsTransformFeedback_remap_index }, - { 23943, PauseTransformFeedback_remap_index }, - { 4824, ResumeTransformFeedback_remap_index }, - { 4739, PolygonOffsetEXT_remap_index }, - { 21417, GetPixelTexGenParameterfvSGIS_remap_index }, - { 3895, GetPixelTexGenParameterivSGIS_remap_index }, - { 21150, PixelTexGenParameterfSGIS_remap_index }, - { 580, PixelTexGenParameterfvSGIS_remap_index }, - { 11568, PixelTexGenParameteriSGIS_remap_index }, - { 12591, PixelTexGenParameterivSGIS_remap_index }, - { 15160, SampleMaskSGIS_remap_index }, - { 18238, SamplePatternSGIS_remap_index }, - { 24292, ColorPointerEXT_remap_index }, - { 16152, EdgeFlagPointerEXT_remap_index }, - { 5281, IndexPointerEXT_remap_index }, - { 5361, NormalPointerEXT_remap_index }, - { 14510, TexCoordPointerEXT_remap_index }, - { 6159, VertexPointerEXT_remap_index }, - { 3165, PointParameterfEXT_remap_index }, - { 7010, PointParameterfvEXT_remap_index }, - { 29566, LockArraysEXT_remap_index }, - { 13609, UnlockArraysEXT_remap_index }, - { 1151, SecondaryColor3bEXT_remap_index }, - { 7169, SecondaryColor3bvEXT_remap_index }, - { 9469, SecondaryColor3dEXT_remap_index }, - { 23553, SecondaryColor3dvEXT_remap_index }, - { 25856, SecondaryColor3fEXT_remap_index }, - { 16718, SecondaryColor3fvEXT_remap_index }, - { 426, SecondaryColor3iEXT_remap_index }, - { 14898, SecondaryColor3ivEXT_remap_index }, - { 9127, SecondaryColor3sEXT_remap_index }, - { 28354, SecondaryColor3svEXT_remap_index }, - { 25029, SecondaryColor3ubEXT_remap_index }, - { 19536, SecondaryColor3ubvEXT_remap_index }, - { 11763, SecondaryColor3uiEXT_remap_index }, - { 21037, SecondaryColor3uivEXT_remap_index }, - { 23800, SecondaryColor3usEXT_remap_index }, - { 11836, SecondaryColor3usvEXT_remap_index }, - { 10736, SecondaryColorPointerEXT_remap_index }, - { 23614, MultiDrawArraysEXT_remap_index }, - { 19226, MultiDrawElementsEXT_remap_index }, - { 19421, FogCoordPointerEXT_remap_index }, - { 4044, FogCoorddEXT_remap_index }, - { 28967, FogCoorddvEXT_remap_index }, - { 4136, FogCoordfEXT_remap_index }, - { 24952, FogCoordfvEXT_remap_index }, - { 17477, PixelTexGenSGIX_remap_index }, - { 25537, BlendFuncSeparateEXT_remap_index }, - { 6071, FlushVertexArrayRangeNV_remap_index }, - { 4688, VertexArrayRangeNV_remap_index }, - { 25921, CombinerInputNV_remap_index }, - { 1946, CombinerOutputNV_remap_index }, - { 28507, CombinerParameterfNV_remap_index }, - { 4608, CombinerParameterfvNV_remap_index }, - { 20556, CombinerParameteriNV_remap_index }, - { 29937, CombinerParameterivNV_remap_index }, - { 6447, FinalCombinerInputNV_remap_index }, - { 8956, GetCombinerInputParameterfvNV_remap_index }, - { 29774, GetCombinerInputParameterivNV_remap_index }, - { 12692, GetCombinerOutputParameterfvNV_remap_index }, - { 12520, GetCombinerOutputParameterivNV_remap_index }, - { 5816, GetFinalCombinerInputParameterfvNV_remap_index }, - { 22819, GetFinalCombinerInputParameterivNV_remap_index }, - { 11508, ResizeBuffersMESA_remap_index }, - { 10109, WindowPos2dMESA_remap_index }, - { 944, WindowPos2dvMESA_remap_index }, - { 30765, WindowPos2fMESA_remap_index }, - { 7114, WindowPos2fvMESA_remap_index }, - { 16665, WindowPos2iMESA_remap_index }, - { 18711, WindowPos2ivMESA_remap_index }, - { 19325, WindowPos2sMESA_remap_index }, - { 5031, WindowPos2svMESA_remap_index }, - { 6939, WindowPos3dMESA_remap_index }, - { 12838, WindowPos3dvMESA_remap_index }, - { 472, WindowPos3fMESA_remap_index }, - { 13670, WindowPos3fvMESA_remap_index }, - { 22131, WindowPos3iMESA_remap_index }, - { 27797, WindowPos3ivMESA_remap_index }, - { 17183, WindowPos3sMESA_remap_index }, - { 29223, WindowPos3svMESA_remap_index }, - { 10060, WindowPos4dMESA_remap_index }, - { 15630, WindowPos4dvMESA_remap_index }, - { 12797, WindowPos4fMESA_remap_index }, - { 28261, WindowPos4fvMESA_remap_index }, - { 27950, WindowPos4iMESA_remap_index }, - { 11311, WindowPos4ivMESA_remap_index }, - { 17356, WindowPos4sMESA_remap_index }, - { 2857, WindowPos4svMESA_remap_index }, - { 12559, MultiModeDrawArraysIBM_remap_index }, - { 26670, MultiModeDrawElementsIBM_remap_index }, - { 11115, DeleteFencesNV_remap_index }, - { 25768, FinishFenceNV_remap_index }, - { 3287, GenFencesNV_remap_index }, - { 15610, GetFenceivNV_remap_index }, - { 7406, IsFenceNV_remap_index }, - { 12447, SetFenceNV_remap_index }, - { 3744, TestFenceNV_remap_index }, - { 29194, AreProgramsResidentNV_remap_index }, - { 28549, BindProgramNV_remap_index }, - { 23883, DeleteProgramsNV_remap_index }, - { 19754, ExecuteProgramNV_remap_index }, - { 30658, GenProgramsNV_remap_index }, - { 21496, GetProgramParameterdvNV_remap_index }, - { 9531, GetProgramParameterfvNV_remap_index }, - { 24266, GetProgramStringNV_remap_index }, - { 22508, GetProgramivNV_remap_index }, - { 21730, GetTrackMatrixivNV_remap_index }, - { 24060, GetVertexAttribPointervNV_remap_index }, - { 22752, GetVertexAttribdvNV_remap_index }, - { 8426, GetVertexAttribfvNV_remap_index }, - { 16846, GetVertexAttribivNV_remap_index }, - { 17603, IsProgramNV_remap_index }, - { 8509, LoadProgramNV_remap_index }, - { 25633, ProgramParameters4dvNV_remap_index }, - { 22438, ProgramParameters4fvNV_remap_index }, - { 19015, RequestResidentProgramsNV_remap_index }, - { 20534, TrackMatrixNV_remap_index }, - { 29751, VertexAttrib1dNV_remap_index }, - { 12358, VertexAttrib1dvNV_remap_index }, - { 26202, VertexAttrib1fNV_remap_index }, - { 2245, VertexAttrib1fvNV_remap_index }, - { 28318, VertexAttrib1sNV_remap_index }, - { 13743, VertexAttrib1svNV_remap_index }, - { 4251, VertexAttrib2dNV_remap_index }, - { 12273, VertexAttrib2dvNV_remap_index }, - { 18470, VertexAttrib2fNV_remap_index }, - { 11884, VertexAttrib2fvNV_remap_index }, - { 5191, VertexAttrib2sNV_remap_index }, - { 17237, VertexAttrib2svNV_remap_index }, - { 10257, VertexAttrib3dNV_remap_index }, - { 29444, VertexAttrib3dvNV_remap_index }, - { 9343, VertexAttrib3fNV_remap_index }, - { 22779, VertexAttrib3fvNV_remap_index }, - { 20411, VertexAttrib3sNV_remap_index }, - { 21757, VertexAttrib3svNV_remap_index }, - { 26644, VertexAttrib4dNV_remap_index }, - { 30695, VertexAttrib4dvNV_remap_index }, - { 3945, VertexAttrib4fNV_remap_index }, - { 8559, VertexAttrib4fvNV_remap_index }, - { 24611, VertexAttrib4sNV_remap_index }, - { 1293, VertexAttrib4svNV_remap_index }, - { 4409, VertexAttrib4ubNV_remap_index }, - { 734, VertexAttrib4ubvNV_remap_index }, - { 19934, VertexAttribPointerNV_remap_index }, - { 2097, VertexAttribs1dvNV_remap_index }, - { 24148, VertexAttribs1fvNV_remap_index }, - { 30495, VertexAttribs1svNV_remap_index }, - { 9368, VertexAttribs2dvNV_remap_index }, - { 23341, VertexAttribs2fvNV_remap_index }, - { 16178, VertexAttribs2svNV_remap_index }, - { 4636, VertexAttribs3dvNV_remap_index }, - { 1977, VertexAttribs3fvNV_remap_index }, - { 27545, VertexAttribs3svNV_remap_index }, - { 24701, VertexAttribs4dvNV_remap_index }, - { 4662, VertexAttribs4fvNV_remap_index }, - { 30282, VertexAttribs4svNV_remap_index }, - { 27293, VertexAttribs4ubvNV_remap_index }, - { 24771, GetTexBumpParameterfvATI_remap_index }, - { 30536, GetTexBumpParameterivATI_remap_index }, - { 16900, TexBumpParameterfvATI_remap_index }, - { 18886, TexBumpParameterivATI_remap_index }, - { 14289, AlphaFragmentOp1ATI_remap_index }, - { 9919, AlphaFragmentOp2ATI_remap_index }, - { 22695, AlphaFragmentOp3ATI_remap_index }, - { 27472, BeginFragmentShaderATI_remap_index }, - { 28748, BindFragmentShaderATI_remap_index }, - { 21886, ColorFragmentOp1ATI_remap_index }, - { 3823, ColorFragmentOp2ATI_remap_index }, - { 29089, ColorFragmentOp3ATI_remap_index }, - { 4781, DeleteFragmentShaderATI_remap_index }, - { 30719, EndFragmentShaderATI_remap_index }, - { 29965, GenFragmentShadersATI_remap_index }, - { 23472, PassTexCoordATI_remap_index }, - { 6139, SampleMapATI_remap_index }, - { 5912, SetFragmentShaderConstantATI_remap_index }, - { 319, PointParameteriNV_remap_index }, - { 12999, PointParameterivNV_remap_index }, - { 26483, ActiveStencilFaceEXT_remap_index }, - { 25293, BindVertexArrayAPPLE_remap_index }, - { 2522, DeleteVertexArraysAPPLE_remap_index }, - { 16517, GenVertexArraysAPPLE_remap_index }, - { 21561, IsVertexArrayAPPLE_remap_index }, - { 775, GetProgramNamedParameterdvNV_remap_index }, - { 3128, GetProgramNamedParameterfvNV_remap_index }, - { 24802, ProgramNamedParameter4dNV_remap_index }, - { 13325, ProgramNamedParameter4dvNV_remap_index }, - { 8042, ProgramNamedParameter4fNV_remap_index }, - { 10701, ProgramNamedParameter4fvNV_remap_index }, - { 15565, PrimitiveRestartIndexNV_remap_index }, - { 28238, PrimitiveRestartNV_remap_index }, - { 22417, DepthBoundsEXT_remap_index }, - { 1043, BlendEquationSeparateEXT_remap_index }, - { 13444, BindFramebufferEXT_remap_index }, - { 23659, BindRenderbufferEXT_remap_index }, - { 8806, CheckFramebufferStatusEXT_remap_index }, - { 20851, DeleteFramebuffersEXT_remap_index }, - { 29346, DeleteRenderbuffersEXT_remap_index }, - { 12297, FramebufferRenderbufferEXT_remap_index }, - { 12464, FramebufferTexture1DEXT_remap_index }, - { 10495, FramebufferTexture2DEXT_remap_index }, - { 10162, FramebufferTexture3DEXT_remap_index }, - { 21453, GenFramebuffersEXT_remap_index }, - { 16064, GenRenderbuffersEXT_remap_index }, - { 5858, GenerateMipmapEXT_remap_index }, - { 20031, GetFramebufferAttachmentParameterivEXT_remap_index }, - { 29871, GetRenderbufferParameterivEXT_remap_index }, - { 18766, IsFramebufferEXT_remap_index }, - { 30618, IsRenderbufferEXT_remap_index }, - { 7353, RenderbufferStorageEXT_remap_index }, - { 651, BlitFramebufferEXT_remap_index }, - { 13144, BufferParameteriAPPLE_remap_index }, - { 17635, FlushMappedBufferRangeAPPLE_remap_index }, - { 2701, FramebufferTextureLayerEXT_remap_index }, - { 4956, ColorMaskIndexedEXT_remap_index }, - { 17261, DisableIndexedEXT_remap_index }, - { 24458, EnableIndexedEXT_remap_index }, - { 20002, GetBooleanIndexedvEXT_remap_index }, - { 9952, GetIntegerIndexedvEXT_remap_index }, - { 20927, IsEnabledIndexedEXT_remap_index }, - { 4074, BeginConditionalRenderNV_remap_index }, - { 23445, EndConditionalRenderNV_remap_index }, - { 8453, BeginTransformFeedbackEXT_remap_index }, - { 17285, BindBufferBaseEXT_remap_index }, - { 17155, BindBufferOffsetEXT_remap_index }, - { 11136, BindBufferRangeEXT_remap_index }, - { 13059, EndTransformFeedbackEXT_remap_index }, - { 9804, GetTransformFeedbackVaryingEXT_remap_index }, - { 19071, TransformFeedbackVaryingsEXT_remap_index }, - { 27194, ProvokingVertexEXT_remap_index }, - { 9752, GetTexParameterPointervAPPLE_remap_index }, - { 4436, TextureRangeAPPLE_remap_index }, - { 10567, GetObjectParameterivAPPLE_remap_index }, - { 18210, ObjectPurgeableAPPLE_remap_index }, - { 4985, ObjectUnpurgeableAPPLE_remap_index }, - { 26509, StencilFuncSeparateATI_remap_index }, - { 16584, ProgramEnvParameters4fvEXT_remap_index }, - { 19965, ProgramLocalParameters4fvEXT_remap_index }, - { 12927, GetQueryObjecti64vEXT_remap_index }, - { 9394, GetQueryObjectui64vEXT_remap_index }, - { 21955, EGLImageTargetRenderbufferStorageOES_remap_index }, - { 11054, EGLImageTargetTexture2DOES_remap_index }, + { 2690, UniformMatrix4fvARB_remap_index }, + { 25184, UseProgramObjectARB_remap_index }, + { 14807, ValidateProgramARB_remap_index }, + { 21232, BindAttribLocationARB_remap_index }, + { 4940, GetActiveAttribARB_remap_index }, + { 16509, GetAttribLocationARB_remap_index }, + { 29132, DrawBuffersARB_remap_index }, + { 17850, DrawArraysInstancedARB_remap_index }, + { 6457, DrawElementsInstancedARB_remap_index }, + { 13126, RenderbufferStorageMultisample_remap_index }, + { 13597, FramebufferTextureARB_remap_index }, + { 25577, FramebufferTextureFaceARB_remap_index }, + { 23991, ProgramParameteriARB_remap_index }, + { 19143, FlushMappedBufferRange_remap_index }, + { 27568, MapBufferRange_remap_index }, + { 16337, BindVertexArray_remap_index }, + { 14630, GenVertexArrays_remap_index }, + { 29928, CopyBufferSubData_remap_index }, + { 30858, ClientWaitSync_remap_index }, + { 2609, DeleteSync_remap_index }, + { 7191, FenceSync_remap_index }, + { 15178, GetInteger64v_remap_index }, + { 22477, GetSynciv_remap_index }, + { 29071, IsSync_remap_index }, + { 9388, WaitSync_remap_index }, + { 3797, DrawElementsBaseVertex_remap_index }, + { 30263, DrawRangeElementsBaseVertex_remap_index }, + { 26190, MultiDrawElementsBaseVertex_remap_index }, + { 5091, BindTransformFeedback_remap_index }, + { 3232, DeleteTransformFeedbacks_remap_index }, + { 6429, DrawTransformFeedback_remap_index }, + { 9607, GenTransformFeedbacks_remap_index }, + { 27984, IsTransformFeedback_remap_index }, + { 25770, PauseTransformFeedback_remap_index }, + { 5528, ResumeTransformFeedback_remap_index }, + { 5396, PolygonOffsetEXT_remap_index }, + { 23099, GetPixelTexGenParameterfvSGIS_remap_index }, + { 4417, GetPixelTexGenParameterivSGIS_remap_index }, + { 22832, PixelTexGenParameterfSGIS_remap_index }, + { 624, PixelTexGenParameterfvSGIS_remap_index }, + { 12634, PixelTexGenParameteriSGIS_remap_index }, + { 13771, PixelTexGenParameterivSGIS_remap_index }, + { 16425, SampleMaskSGIS_remap_index }, + { 19825, SamplePatternSGIS_remap_index }, + { 26119, ColorPointerEXT_remap_index }, + { 17512, EdgeFlagPointerEXT_remap_index }, + { 6050, IndexPointerEXT_remap_index }, + { 6130, NormalPointerEXT_remap_index }, + { 15772, TexCoordPointerEXT_remap_index }, + { 6980, VertexPointerEXT_remap_index }, + { 3599, PointParameterfEXT_remap_index }, + { 7831, PointParameterfvEXT_remap_index }, + { 31734, LockArraysEXT_remap_index }, + { 14871, UnlockArraysEXT_remap_index }, + { 1267, SecondaryColor3bEXT_remap_index }, + { 7990, SecondaryColor3bvEXT_remap_index }, + { 10399, SecondaryColor3dEXT_remap_index }, + { 25380, SecondaryColor3dvEXT_remap_index }, + { 27850, SecondaryColor3fEXT_remap_index }, + { 18178, SecondaryColor3fvEXT_remap_index }, + { 470, SecondaryColor3iEXT_remap_index }, + { 16082, SecondaryColor3ivEXT_remap_index }, + { 10034, SecondaryColor3sEXT_remap_index }, + { 30522, SecondaryColor3svEXT_remap_index }, + { 26987, SecondaryColor3ubEXT_remap_index }, + { 21123, SecondaryColor3ubvEXT_remap_index }, + { 12876, SecondaryColor3uiEXT_remap_index }, + { 22719, SecondaryColor3uivEXT_remap_index }, + { 25627, SecondaryColor3usEXT_remap_index }, + { 12949, SecondaryColor3usvEXT_remap_index }, + { 11769, SecondaryColorPointerEXT_remap_index }, + { 25441, MultiDrawArraysEXT_remap_index }, + { 20813, MultiDrawElementsEXT_remap_index }, + { 21008, FogCoordPointerEXT_remap_index }, + { 4566, FogCoorddEXT_remap_index }, + { 31135, FogCoorddvEXT_remap_index }, + { 4683, FogCoordfEXT_remap_index }, + { 26910, FogCoordfvEXT_remap_index }, + { 19047, PixelTexGenSGIX_remap_index }, + { 27495, BlendFuncSeparateEXT_remap_index }, + { 6892, FlushVertexArrayRangeNV_remap_index }, + { 5345, VertexArrayRangeNV_remap_index }, + { 27915, CombinerInputNV_remap_index }, + { 2116, CombinerOutputNV_remap_index }, + { 30675, CombinerParameterfNV_remap_index }, + { 5219, CombinerParameterfvNV_remap_index }, + { 22201, CombinerParameteriNV_remap_index }, + { 32150, CombinerParameterivNV_remap_index }, + { 7268, FinalCombinerInputNV_remap_index }, + { 9813, GetCombinerInputParameterfvNV_remap_index }, + { 31987, GetCombinerInputParameterivNV_remap_index }, + { 13872, GetCombinerOutputParameterfvNV_remap_index }, + { 13700, GetCombinerOutputParameterivNV_remap_index }, + { 6637, GetFinalCombinerInputParameterfvNV_remap_index }, + { 24623, GetFinalCombinerInputParameterivNV_remap_index }, + { 12574, ResizeBuffersMESA_remap_index }, + { 11095, WindowPos2dMESA_remap_index }, + { 1060, WindowPos2dvMESA_remap_index }, + { 32978, WindowPos2fMESA_remap_index }, + { 7935, WindowPos2fvMESA_remap_index }, + { 18125, WindowPos2iMESA_remap_index }, + { 20298, WindowPos2ivMESA_remap_index }, + { 20912, WindowPos2sMESA_remap_index }, + { 5748, WindowPos2svMESA_remap_index }, + { 7760, WindowPos3dMESA_remap_index }, + { 14018, WindowPos3dvMESA_remap_index }, + { 516, WindowPos3fMESA_remap_index }, + { 14932, WindowPos3fvMESA_remap_index }, + { 23884, WindowPos3iMESA_remap_index }, + { 29873, WindowPos3ivMESA_remap_index }, + { 18742, WindowPos3sMESA_remap_index }, + { 31391, WindowPos3svMESA_remap_index }, + { 11046, WindowPos4dMESA_remap_index }, + { 16966, WindowPos4dvMESA_remap_index }, + { 13977, WindowPos4fMESA_remap_index }, + { 30429, WindowPos4fvMESA_remap_index }, + { 30026, WindowPos4iMESA_remap_index }, + { 12377, WindowPos4ivMESA_remap_index }, + { 18926, WindowPos4sMESA_remap_index }, + { 3183, WindowPos4svMESA_remap_index }, + { 13739, MultiModeDrawArraysIBM_remap_index }, + { 28690, MultiModeDrawElementsIBM_remap_index }, + { 12181, DeleteFencesNV_remap_index }, + { 27762, FinishFenceNV_remap_index }, + { 3721, GenFencesNV_remap_index }, + { 16946, GetFenceivNV_remap_index }, + { 8227, IsFenceNV_remap_index }, + { 13627, SetFenceNV_remap_index }, + { 4178, TestFenceNV_remap_index }, + { 31362, AreProgramsResidentNV_remap_index }, + { 30717, BindProgramNV_remap_index }, + { 25710, DeleteProgramsNV_remap_index }, + { 21341, ExecuteProgramNV_remap_index }, + { 32871, GenProgramsNV_remap_index }, + { 23204, GetProgramParameterdvNV_remap_index }, + { 10461, GetProgramParameterfvNV_remap_index }, + { 26093, GetProgramStringNV_remap_index }, + { 24261, GetProgramivNV_remap_index }, + { 23438, GetTrackMatrixivNV_remap_index }, + { 25887, GetVertexAttribPointervNV_remap_index }, + { 24556, GetVertexAttribdvNV_remap_index }, + { 9283, GetVertexAttribfvNV_remap_index }, + { 18349, GetVertexAttribivNV_remap_index }, + { 19173, IsProgramNV_remap_index }, + { 9366, LoadProgramNV_remap_index }, + { 27591, ProgramParameters4dvNV_remap_index }, + { 24191, ProgramParameters4fvNV_remap_index }, + { 20602, RequestResidentProgramsNV_remap_index }, + { 22179, TrackMatrixNV_remap_index }, + { 31964, VertexAttrib1dNV_remap_index }, + { 13538, VertexAttrib1dvNV_remap_index }, + { 28196, VertexAttrib1fNV_remap_index }, + { 2415, VertexAttrib1fvNV_remap_index }, + { 30486, VertexAttrib1sNV_remap_index }, + { 15005, VertexAttrib1svNV_remap_index }, + { 4845, VertexAttrib2dNV_remap_index }, + { 13431, VertexAttrib2dvNV_remap_index }, + { 20057, VertexAttrib2fNV_remap_index }, + { 12997, VertexAttrib2fvNV_remap_index }, + { 5960, VertexAttrib2sNV_remap_index }, + { 18796, VertexAttrib2svNV_remap_index }, + { 11243, VertexAttrib3dNV_remap_index }, + { 31612, VertexAttrib3dvNV_remap_index }, + { 10273, VertexAttrib3fNV_remap_index }, + { 24583, VertexAttrib3fvNV_remap_index }, + { 22022, VertexAttrib3sNV_remap_index }, + { 23465, VertexAttrib3svNV_remap_index }, + { 28664, VertexAttrib4dNV_remap_index }, + { 32908, VertexAttrib4dvNV_remap_index }, + { 4467, VertexAttrib4fNV_remap_index }, + { 9416, VertexAttrib4fvNV_remap_index }, + { 26569, VertexAttrib4sNV_remap_index }, + { 1409, VertexAttrib4svNV_remap_index }, + { 5003, VertexAttrib4ubNV_remap_index }, + { 778, VertexAttrib4ubvNV_remap_index }, + { 21521, VertexAttribPointerNV_remap_index }, + { 2267, VertexAttribs1dvNV_remap_index }, + { 25975, VertexAttribs1fvNV_remap_index }, + { 32708, VertexAttribs1svNV_remap_index }, + { 10298, VertexAttribs2dvNV_remap_index }, + { 25145, VertexAttribs2fvNV_remap_index }, + { 17538, VertexAttribs2svNV_remap_index }, + { 5247, VertexAttribs3dvNV_remap_index }, + { 2147, VertexAttribs3fvNV_remap_index }, + { 29621, VertexAttribs3svNV_remap_index }, + { 26659, VertexAttribs4dvNV_remap_index }, + { 5319, VertexAttribs4fvNV_remap_index }, + { 32495, VertexAttribs4svNV_remap_index }, + { 29369, VertexAttribs4ubvNV_remap_index }, + { 26729, GetTexBumpParameterfvATI_remap_index }, + { 32749, GetTexBumpParameterivATI_remap_index }, + { 18459, TexBumpParameterfvATI_remap_index }, + { 20473, TexBumpParameterivATI_remap_index }, + { 15551, AlphaFragmentOp1ATI_remap_index }, + { 10889, AlphaFragmentOp2ATI_remap_index }, + { 24499, AlphaFragmentOp3ATI_remap_index }, + { 29548, BeginFragmentShaderATI_remap_index }, + { 30916, BindFragmentShaderATI_remap_index }, + { 23594, ColorFragmentOp1ATI_remap_index }, + { 4345, ColorFragmentOp2ATI_remap_index }, + { 31257, ColorFragmentOp3ATI_remap_index }, + { 5485, DeleteFragmentShaderATI_remap_index }, + { 32932, EndFragmentShaderATI_remap_index }, + { 32178, GenFragmentShadersATI_remap_index }, + { 25299, PassTexCoordATI_remap_index }, + { 6960, SampleMapATI_remap_index }, + { 6733, SetFragmentShaderConstantATI_remap_index }, + { 363, PointParameteriNV_remap_index }, + { 14179, PointParameterivNV_remap_index }, + { 28503, ActiveStencilFaceEXT_remap_index }, + { 27251, BindVertexArrayAPPLE_remap_index }, + { 2737, DeleteVertexArraysAPPLE_remap_index }, + { 17955, GenVertexArraysAPPLE_remap_index }, + { 23269, IsVertexArrayAPPLE_remap_index }, + { 819, GetProgramNamedParameterdvNV_remap_index }, + { 3562, GetProgramNamedParameterfvNV_remap_index }, + { 26760, ProgramNamedParameter4dNV_remap_index }, + { 14505, ProgramNamedParameter4dvNV_remap_index }, + { 8899, ProgramNamedParameter4fNV_remap_index }, + { 11734, ProgramNamedParameter4fvNV_remap_index }, + { 16877, PrimitiveRestartIndexNV_remap_index }, + { 30406, PrimitiveRestartNV_remap_index }, + { 24170, DepthBoundsEXT_remap_index }, + { 1159, BlendEquationSeparateEXT_remap_index }, + { 14706, BindFramebufferEXT_remap_index }, + { 25486, BindRenderbufferEXT_remap_index }, + { 9663, CheckFramebufferStatusEXT_remap_index }, + { 22520, DeleteFramebuffersEXT_remap_index }, + { 31514, DeleteRenderbuffersEXT_remap_index }, + { 13455, FramebufferRenderbufferEXT_remap_index }, + { 13644, FramebufferTexture1DEXT_remap_index }, + { 11528, FramebufferTexture2DEXT_remap_index }, + { 11148, FramebufferTexture3DEXT_remap_index }, + { 23135, GenFramebuffersEXT_remap_index }, + { 17403, GenRenderbuffersEXT_remap_index }, + { 6679, GenerateMipmapEXT_remap_index }, + { 21597, GetFramebufferAttachmentParameterivEXT_remap_index }, + { 32084, GetRenderbufferParameterivEXT_remap_index }, + { 20353, IsFramebufferEXT_remap_index }, + { 32831, IsRenderbufferEXT_remap_index }, + { 8174, RenderbufferStorageEXT_remap_index }, + { 695, BlitFramebufferEXT_remap_index }, + { 14324, BufferParameteriAPPLE_remap_index }, + { 19205, FlushMappedBufferRangeAPPLE_remap_index }, + { 1815, BindFragDataLocationEXT_remap_index }, + { 24283, GetFragDataLocationEXT_remap_index }, + { 10576, GetUniformuivEXT_remap_index }, + { 2933, GetVertexAttribIivEXT_remap_index }, + { 4195, GetVertexAttribIuivEXT_remap_index }, + { 12014, Uniform1uiEXT_remap_index }, + { 27676, Uniform1uivEXT_remap_index }, + { 22118, Uniform2uiEXT_remap_index }, + { 4309, Uniform2uivEXT_remap_index }, + { 28943, Uniform3uiEXT_remap_index }, + { 14652, Uniform3uivEXT_remap_index }, + { 3486, Uniform4uiEXT_remap_index }, + { 8675, Uniform4uivEXT_remap_index }, + { 18306, VertexAttribI1iEXT_remap_index }, + { 965, VertexAttribI1ivEXT_remap_index }, + { 2516, VertexAttribI1uiEXT_remap_index }, + { 12725, VertexAttribI1uivEXT_remap_index }, + { 81, VertexAttribI2iEXT_remap_index }, + { 23706, VertexAttribI2ivEXT_remap_index }, + { 5273, VertexAttribI2uiEXT_remap_index }, + { 4728, VertexAttribI2uivEXT_remap_index }, + { 26361, VertexAttribI3iEXT_remap_index }, + { 30218, VertexAttribI3ivEXT_remap_index }, + { 3340, VertexAttribI3uiEXT_remap_index }, + { 30114, VertexAttribI3uivEXT_remap_index }, + { 21848, VertexAttribI4bvEXT_remap_index }, + { 14584, VertexAttribI4iEXT_remap_index }, + { 31783, VertexAttribI4ivEXT_remap_index }, + { 13358, VertexAttribI4svEXT_remap_index }, + { 16462, VertexAttribI4ubvEXT_remap_index }, + { 16145, VertexAttribI4uiEXT_remap_index }, + { 5419, VertexAttribI4uivEXT_remap_index }, + { 11311, VertexAttribI4usvEXT_remap_index }, + { 18403, VertexAttribIPointerEXT_remap_index }, + { 3027, FramebufferTextureLayerEXT_remap_index }, + { 5660, ColorMaskIndexedEXT_remap_index }, + { 18820, DisableIndexedEXT_remap_index }, + { 26406, EnableIndexedEXT_remap_index }, + { 21552, GetBooleanIndexedvEXT_remap_index }, + { 10922, GetIntegerIndexedvEXT_remap_index }, + { 22596, IsEnabledIndexedEXT_remap_index }, + { 22496, ClearColorIiEXT_remap_index }, + { 3436, ClearColorIuiEXT_remap_index }, + { 9852, GetTexParameterIivEXT_remap_index }, + { 5908, GetTexParameterIuivEXT_remap_index }, + { 2983, TexParameterIivEXT_remap_index }, + { 26228, TexParameterIuivEXT_remap_index }, + { 4596, BeginConditionalRenderNV_remap_index }, + { 25249, EndConditionalRenderNV_remap_index }, + { 9310, BeginTransformFeedbackEXT_remap_index }, + { 18855, BindBufferBaseEXT_remap_index }, + { 18714, BindBufferOffsetEXT_remap_index }, + { 12202, BindBufferRangeEXT_remap_index }, + { 14239, EndTransformFeedbackEXT_remap_index }, + { 10774, GetTransformFeedbackVaryingEXT_remap_index }, + { 20658, TransformFeedbackVaryingsEXT_remap_index }, + { 29270, ProvokingVertexEXT_remap_index }, + { 10722, GetTexParameterPointervAPPLE_remap_index }, + { 5047, TextureRangeAPPLE_remap_index }, + { 11600, GetObjectParameterivAPPLE_remap_index }, + { 19780, ObjectPurgeableAPPLE_remap_index }, + { 5702, ObjectUnpurgeableAPPLE_remap_index }, + { 17225, ActiveProgramEXT_remap_index }, + { 17196, CreateShaderProgramEXT_remap_index }, + { 28288, UseShaderProgramEXT_remap_index }, + { 28529, StencilFuncSeparateATI_remap_index }, + { 18044, ProgramEnvParameters4fvEXT_remap_index }, + { 17090, ProgramLocalParameters4fvEXT_remap_index }, + { 14107, GetQueryObjecti64vEXT_remap_index }, + { 10324, GetQueryObjectui64vEXT_remap_index }, + { 23663, EGLImageTargetRenderbufferStorageOES_remap_index }, + { 12120, EGLImageTargetTexture2DOES_remap_index }, { -1, -1 } }; /* these functions are in the ABI, but have alternative names */ static const struct gl_function_remap MESA_alt_functions[] = { /* from GL_EXT_blend_color */ - { 2440, _gloffset_BlendColor }, + { 2655, _gloffset_BlendColor }, /* from GL_EXT_blend_minmax */ - { 10219, _gloffset_BlendEquation }, + { 11205, _gloffset_BlendEquation }, /* from GL_EXT_color_subtable */ - { 15652, _gloffset_ColorSubTable }, - { 29278, _gloffset_CopyColorSubTable }, + { 16988, _gloffset_ColorSubTable }, + { 31446, _gloffset_CopyColorSubTable }, /* from GL_EXT_convolution */ - { 213, _gloffset_ConvolutionFilter1D }, - { 2284, _gloffset_CopyConvolutionFilter1D }, - { 3624, _gloffset_GetConvolutionParameteriv }, - { 7702, _gloffset_ConvolutionFilter2D }, - { 7868, _gloffset_ConvolutionParameteriv }, - { 8328, _gloffset_ConvolutionParameterfv }, - { 18914, _gloffset_GetSeparableFilter }, - { 22185, _gloffset_SeparableFilter2D }, - { 22997, _gloffset_ConvolutionParameteri }, - { 23120, _gloffset_ConvolutionParameterf }, - { 24637, _gloffset_GetConvolutionParameterfv }, - { 25459, _gloffset_GetConvolutionFilter }, - { 27734, _gloffset_CopyConvolutionFilter2D }, + { 257, _gloffset_ConvolutionFilter1D }, + { 2454, _gloffset_CopyConvolutionFilter1D }, + { 4058, _gloffset_GetConvolutionParameteriv }, + { 8523, _gloffset_ConvolutionFilter2D }, + { 8725, _gloffset_ConvolutionParameteriv }, + { 9185, _gloffset_ConvolutionParameterfv }, + { 20501, _gloffset_GetSeparableFilter }, + { 23938, _gloffset_SeparableFilter2D }, + { 24801, _gloffset_ConvolutionParameteri }, + { 24924, _gloffset_ConvolutionParameterf }, + { 26595, _gloffset_GetConvolutionParameterfv }, + { 27417, _gloffset_GetConvolutionFilter }, + { 29810, _gloffset_CopyConvolutionFilter2D }, /* from GL_EXT_copy_texture */ - { 13803, _gloffset_CopyTexSubImage3D }, - { 15363, _gloffset_CopyTexImage2D }, - { 22605, _gloffset_CopyTexImage1D }, - { 25140, _gloffset_CopyTexSubImage2D }, - { 27372, _gloffset_CopyTexSubImage1D }, + { 15065, _gloffset_CopyTexSubImage3D }, + { 16675, _gloffset_CopyTexImage2D }, + { 24409, _gloffset_CopyTexImage1D }, + { 27098, _gloffset_CopyTexSubImage2D }, + { 29448, _gloffset_CopyTexSubImage1D }, /* from GL_EXT_draw_range_elements */ - { 8665, _gloffset_DrawRangeElements }, + { 9522, _gloffset_DrawRangeElements }, /* from GL_EXT_histogram */ - { 812, _gloffset_Histogram }, - { 3088, _gloffset_ResetHistogram }, - { 9065, _gloffset_GetMinmax }, - { 14137, _gloffset_GetHistogramParameterfv }, - { 22530, _gloffset_GetMinmaxParameteriv }, - { 24527, _gloffset_ResetMinmax }, - { 25356, _gloffset_GetHistogramParameteriv }, - { 26443, _gloffset_GetHistogram }, - { 28864, _gloffset_Minmax }, - { 30365, _gloffset_GetMinmaxParameterfv }, + { 856, _gloffset_Histogram }, + { 3522, _gloffset_ResetHistogram }, + { 9972, _gloffset_GetMinmax }, + { 15399, _gloffset_GetHistogramParameterfv }, + { 24334, _gloffset_GetMinmaxParameteriv }, + { 26485, _gloffset_ResetMinmax }, + { 27314, _gloffset_GetHistogramParameteriv }, + { 28463, _gloffset_GetHistogram }, + { 31032, _gloffset_Minmax }, + { 32578, _gloffset_GetMinmaxParameterfv }, /* from GL_EXT_paletted_texture */ - { 7564, _gloffset_ColorTable }, - { 13983, _gloffset_GetColorTable }, - { 21200, _gloffset_GetColorTableParameterfv }, - { 23176, _gloffset_GetColorTableParameteriv }, + { 8385, _gloffset_ColorTable }, + { 15245, _gloffset_GetColorTable }, + { 22882, _gloffset_GetColorTableParameterfv }, + { 24980, _gloffset_GetColorTableParameteriv }, /* from GL_EXT_subtexture */ - { 6285, _gloffset_TexSubImage1D }, - { 9679, _gloffset_TexSubImage2D }, + { 7106, _gloffset_TexSubImage1D }, + { 10649, _gloffset_TexSubImage2D }, /* from GL_EXT_texture3D */ - { 1658, _gloffset_TexImage3D }, - { 20969, _gloffset_TexSubImage3D }, + { 1774, _gloffset_TexImage3D }, + { 22651, _gloffset_TexSubImage3D }, /* from GL_EXT_texture_object */ - { 2964, _gloffset_PrioritizeTextures }, - { 6734, _gloffset_AreTexturesResident }, - { 12382, _gloffset_GenTextures }, - { 14469, _gloffset_DeleteTextures }, - { 17916, _gloffset_IsTexture }, - { 27437, _gloffset_BindTexture }, + { 3290, _gloffset_PrioritizeTextures }, + { 7555, _gloffset_AreTexturesResident }, + { 13562, _gloffset_GenTextures }, + { 15731, _gloffset_DeleteTextures }, + { 19486, _gloffset_IsTexture }, + { 29513, _gloffset_BindTexture }, /* from GL_EXT_vertex_array */ - { 22357, _gloffset_ArrayElement }, - { 28452, _gloffset_GetPointerv }, - { 29992, _gloffset_DrawArrays }, + { 24110, _gloffset_ArrayElement }, + { 30620, _gloffset_GetPointerv }, + { 32205, _gloffset_DrawArrays }, /* from GL_SGI_color_table */ - { 6852, _gloffset_ColorTableParameteriv }, - { 7564, _gloffset_ColorTable }, - { 13983, _gloffset_GetColorTable }, - { 14093, _gloffset_CopyColorTable }, - { 17777, _gloffset_ColorTableParameterfv }, - { 21200, _gloffset_GetColorTableParameterfv }, - { 23176, _gloffset_GetColorTableParameteriv }, + { 7673, _gloffset_ColorTableParameteriv }, + { 8385, _gloffset_ColorTable }, + { 15245, _gloffset_GetColorTable }, + { 15355, _gloffset_CopyColorTable }, + { 19347, _gloffset_ColorTableParameterfv }, + { 22882, _gloffset_GetColorTableParameterfv }, + { 24980, _gloffset_GetColorTableParameteriv }, /* from GL_VERSION_1_3 */ - { 381, _gloffset_MultiTexCoord3sARB }, - { 613, _gloffset_ActiveTextureARB }, - { 3761, _gloffset_MultiTexCoord1fvARB }, - { 5386, _gloffset_MultiTexCoord3dARB }, - { 5431, _gloffset_MultiTexCoord2iARB }, - { 5555, _gloffset_MultiTexCoord2svARB }, - { 7520, _gloffset_MultiTexCoord2fARB }, - { 9424, _gloffset_MultiTexCoord3fvARB }, - { 9981, _gloffset_MultiTexCoord4sARB }, - { 10615, _gloffset_MultiTexCoord2dvARB }, - { 10997, _gloffset_MultiTexCoord1svARB }, - { 11369, _gloffset_MultiTexCoord3svARB }, - { 11430, _gloffset_MultiTexCoord4iARB }, - { 12153, _gloffset_MultiTexCoord3iARB }, - { 12956, _gloffset_MultiTexCoord1dARB }, - { 13173, _gloffset_MultiTexCoord3dvARB }, - { 14337, _gloffset_MultiTexCoord3ivARB }, - { 14382, _gloffset_MultiTexCoord2sARB }, - { 15709, _gloffset_MultiTexCoord4ivARB }, - { 17427, _gloffset_ClientActiveTextureARB }, - { 19710, _gloffset_MultiTexCoord2dARB }, - { 20151, _gloffset_MultiTexCoord4dvARB }, - { 20462, _gloffset_MultiTexCoord4fvARB }, - { 21341, _gloffset_MultiTexCoord3fARB }, - { 23704, _gloffset_MultiTexCoord4dARB }, - { 23970, _gloffset_MultiTexCoord1sARB }, - { 24174, _gloffset_MultiTexCoord1dvARB }, - { 24984, _gloffset_MultiTexCoord1ivARB }, - { 25077, _gloffset_MultiTexCoord2ivARB }, - { 25416, _gloffset_MultiTexCoord1iARB }, - { 26718, _gloffset_MultiTexCoord4svARB }, - { 27236, _gloffset_MultiTexCoord1fARB }, - { 27499, _gloffset_MultiTexCoord4fARB }, - { 29826, _gloffset_MultiTexCoord2fvARB }, + { 425, _gloffset_MultiTexCoord3sARB }, + { 657, _gloffset_ActiveTextureARB }, + { 4247, _gloffset_MultiTexCoord1fvARB }, + { 6155, _gloffset_MultiTexCoord3dARB }, + { 6200, _gloffset_MultiTexCoord2iARB }, + { 6324, _gloffset_MultiTexCoord2svARB }, + { 8341, _gloffset_MultiTexCoord2fARB }, + { 10354, _gloffset_MultiTexCoord3fvARB }, + { 10967, _gloffset_MultiTexCoord4sARB }, + { 11648, _gloffset_MultiTexCoord2dvARB }, + { 12063, _gloffset_MultiTexCoord1svARB }, + { 12435, _gloffset_MultiTexCoord3svARB }, + { 12496, _gloffset_MultiTexCoord4iARB }, + { 13266, _gloffset_MultiTexCoord3iARB }, + { 14136, _gloffset_MultiTexCoord1dARB }, + { 14353, _gloffset_MultiTexCoord3dvARB }, + { 15599, _gloffset_MultiTexCoord3ivARB }, + { 15644, _gloffset_MultiTexCoord2sARB }, + { 17045, _gloffset_MultiTexCoord4ivARB }, + { 18997, _gloffset_ClientActiveTextureARB }, + { 21297, _gloffset_MultiTexCoord2dARB }, + { 21717, _gloffset_MultiTexCoord4dvARB }, + { 22073, _gloffset_MultiTexCoord4fvARB }, + { 23023, _gloffset_MultiTexCoord3fARB }, + { 25531, _gloffset_MultiTexCoord4dARB }, + { 25797, _gloffset_MultiTexCoord1sARB }, + { 26001, _gloffset_MultiTexCoord1dvARB }, + { 26942, _gloffset_MultiTexCoord1ivARB }, + { 27035, _gloffset_MultiTexCoord2ivARB }, + { 27374, _gloffset_MultiTexCoord1iARB }, + { 28738, _gloffset_MultiTexCoord4svARB }, + { 29312, _gloffset_MultiTexCoord1fARB }, + { 29575, _gloffset_MultiTexCoord4fARB }, + { 32039, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; @@ -5012,7 +5329,7 @@ static const struct gl_function_remap MESA_alt_functions[] = { #if defined(need_GL_3DFX_tbuffer) static const struct gl_function_remap GL_3DFX_tbuffer_functions[] = { - { 8386, -1 }, /* TbufferMask3DFX */ + { 9243, -1 }, /* TbufferMask3DFX */ { -1, -1 } }; #endif @@ -5083,7 +5400,7 @@ static const struct gl_function_remap GL_ARB_framebuffer_object_functions[] = { #if defined(need_GL_ARB_geometry_shader4) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_ARB_geometry_shader4_functions[] = { - { 11333, -1 }, /* FramebufferTextureLayer */ + { 12399, -1 }, /* FramebufferTextureLayer */ { -1, -1 } }; #endif @@ -5097,11 +5414,11 @@ static const struct gl_function_remap GL_ARB_map_buffer_range_functions[] = { #if defined(need_GL_ARB_matrix_palette) static const struct gl_function_remap GL_ARB_matrix_palette_functions[] = { - { 3339, -1 }, /* MatrixIndexusvARB */ - { 11974, -1 }, /* MatrixIndexuivARB */ - { 13295, -1 }, /* MatrixIndexPointerARB */ - { 18165, -1 }, /* CurrentPaletteMatrixARB */ - { 21085, -1 }, /* MatrixIndexubvARB */ + { 3773, -1 }, /* MatrixIndexusvARB */ + { 13087, -1 }, /* MatrixIndexuivARB */ + { 14475, -1 }, /* MatrixIndexPointerARB */ + { 19735, -1 }, /* CurrentPaletteMatrixARB */ + { 22767, -1 }, /* MatrixIndexubvARB */ { -1, -1 } }; #endif @@ -5178,16 +5495,16 @@ static const struct gl_function_remap GL_ARB_vertex_array_object_functions[] = { #if defined(need_GL_ARB_vertex_blend) static const struct gl_function_remap GL_ARB_vertex_blend_functions[] = { - { 2226, -1 }, /* WeightubvARB */ - { 5746, -1 }, /* WeightivARB */ - { 10084, -1 }, /* WeightPointerARB */ - { 12674, -1 }, /* WeightfvARB */ - { 16204, -1 }, /* WeightbvARB */ - { 19378, -1 }, /* WeightusvARB */ - { 22111, -1 }, /* VertexBlendARB */ - { 27320, -1 }, /* WeightsvARB */ - { 29328, -1 }, /* WeightdvARB */ - { 30026, -1 }, /* WeightuivARB */ + { 2396, -1 }, /* WeightubvARB */ + { 6567, -1 }, /* WeightivARB */ + { 11070, -1 }, /* WeightPointerARB */ + { 13854, -1 }, /* WeightfvARB */ + { 17564, -1 }, /* WeightbvARB */ + { 20965, -1 }, /* WeightusvARB */ + { 23864, -1 }, /* VertexBlendARB */ + { 29396, -1 }, /* WeightsvARB */ + { 31496, -1 }, /* WeightdvARB */ + { 32239, -1 }, /* WeightuivARB */ { -1, -1 } }; #endif @@ -5257,7 +5574,7 @@ static const struct gl_function_remap GL_ATI_separate_stencil_functions[] = { #if defined(need_GL_EXT_blend_color) static const struct gl_function_remap GL_EXT_blend_color_functions[] = { - { 2440, _gloffset_BlendColor }, + { 2655, _gloffset_BlendColor }, { -1, -1 } }; #endif @@ -5278,15 +5595,15 @@ static const struct gl_function_remap GL_EXT_blend_func_separate_functions[] = { #if defined(need_GL_EXT_blend_minmax) static const struct gl_function_remap GL_EXT_blend_minmax_functions[] = { - { 10219, _gloffset_BlendEquation }, + { 11205, _gloffset_BlendEquation }, { -1, -1 } }; #endif #if defined(need_GL_EXT_color_subtable) static const struct gl_function_remap GL_EXT_color_subtable_functions[] = { - { 15652, _gloffset_ColorSubTable }, - { 29278, _gloffset_CopyColorSubTable }, + { 16988, _gloffset_ColorSubTable }, + { 31446, _gloffset_CopyColorSubTable }, { -1, -1 } }; #endif @@ -5300,66 +5617,66 @@ static const struct gl_function_remap GL_EXT_compiled_vertex_array_functions[] = #if defined(need_GL_EXT_convolution) static const struct gl_function_remap GL_EXT_convolution_functions[] = { - { 213, _gloffset_ConvolutionFilter1D }, - { 2284, _gloffset_CopyConvolutionFilter1D }, - { 3624, _gloffset_GetConvolutionParameteriv }, - { 7702, _gloffset_ConvolutionFilter2D }, - { 7868, _gloffset_ConvolutionParameteriv }, - { 8328, _gloffset_ConvolutionParameterfv }, - { 18914, _gloffset_GetSeparableFilter }, - { 22185, _gloffset_SeparableFilter2D }, - { 22997, _gloffset_ConvolutionParameteri }, - { 23120, _gloffset_ConvolutionParameterf }, - { 24637, _gloffset_GetConvolutionParameterfv }, - { 25459, _gloffset_GetConvolutionFilter }, - { 27734, _gloffset_CopyConvolutionFilter2D }, + { 257, _gloffset_ConvolutionFilter1D }, + { 2454, _gloffset_CopyConvolutionFilter1D }, + { 4058, _gloffset_GetConvolutionParameteriv }, + { 8523, _gloffset_ConvolutionFilter2D }, + { 8725, _gloffset_ConvolutionParameteriv }, + { 9185, _gloffset_ConvolutionParameterfv }, + { 20501, _gloffset_GetSeparableFilter }, + { 23938, _gloffset_SeparableFilter2D }, + { 24801, _gloffset_ConvolutionParameteri }, + { 24924, _gloffset_ConvolutionParameterf }, + { 26595, _gloffset_GetConvolutionParameterfv }, + { 27417, _gloffset_GetConvolutionFilter }, + { 29810, _gloffset_CopyConvolutionFilter2D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_coordinate_frame) static const struct gl_function_remap GL_EXT_coordinate_frame_functions[] = { - { 9563, -1 }, /* TangentPointerEXT */ - { 11488, -1 }, /* Binormal3ivEXT */ - { 12106, -1 }, /* Tangent3sEXT */ - { 13360, -1 }, /* Tangent3fvEXT */ - { 17136, -1 }, /* Tangent3dvEXT */ - { 17863, -1 }, /* Binormal3bvEXT */ - { 18967, -1 }, /* Binormal3dEXT */ - { 21017, -1 }, /* Tangent3fEXT */ - { 23069, -1 }, /* Binormal3sEXT */ - { 23514, -1 }, /* Tangent3ivEXT */ - { 23533, -1 }, /* Tangent3dEXT */ - { 24401, -1 }, /* Binormal3svEXT */ - { 24882, -1 }, /* Binormal3fEXT */ - { 25734, -1 }, /* Binormal3dvEXT */ - { 26940, -1 }, /* Tangent3iEXT */ - { 28019, -1 }, /* Tangent3bvEXT */ - { 28487, -1 }, /* Tangent3bEXT */ - { 29051, -1 }, /* Binormal3fvEXT */ - { 29725, -1 }, /* BinormalPointerEXT */ - { 30130, -1 }, /* Tangent3svEXT */ - { 30567, -1 }, /* Binormal3bEXT */ - { 30744, -1 }, /* Binormal3iEXT */ + { 10493, -1 }, /* TangentPointerEXT */ + { 12554, -1 }, /* Binormal3ivEXT */ + { 13219, -1 }, /* Tangent3sEXT */ + { 14540, -1 }, /* Tangent3fvEXT */ + { 18695, -1 }, /* Tangent3dvEXT */ + { 19433, -1 }, /* Binormal3bvEXT */ + { 20554, -1 }, /* Binormal3dEXT */ + { 22699, -1 }, /* Tangent3fEXT */ + { 24873, -1 }, /* Binormal3sEXT */ + { 25341, -1 }, /* Tangent3ivEXT */ + { 25360, -1 }, /* Tangent3dEXT */ + { 26274, -1 }, /* Binormal3svEXT */ + { 26840, -1 }, /* Binormal3fEXT */ + { 27728, -1 }, /* Binormal3dvEXT */ + { 28995, -1 }, /* Tangent3iEXT */ + { 30095, -1 }, /* Tangent3bvEXT */ + { 30655, -1 }, /* Tangent3bEXT */ + { 31219, -1 }, /* Binormal3fvEXT */ + { 31938, -1 }, /* BinormalPointerEXT */ + { 32343, -1 }, /* Tangent3svEXT */ + { 32780, -1 }, /* Binormal3bEXT */ + { 32957, -1 }, /* Binormal3iEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_copy_texture) static const struct gl_function_remap GL_EXT_copy_texture_functions[] = { - { 13803, _gloffset_CopyTexSubImage3D }, - { 15363, _gloffset_CopyTexImage2D }, - { 22605, _gloffset_CopyTexImage1D }, - { 25140, _gloffset_CopyTexSubImage2D }, - { 27372, _gloffset_CopyTexSubImage1D }, + { 15065, _gloffset_CopyTexSubImage3D }, + { 16675, _gloffset_CopyTexImage2D }, + { 24409, _gloffset_CopyTexImage1D }, + { 27098, _gloffset_CopyTexSubImage2D }, + { 29448, _gloffset_CopyTexSubImage1D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_cull_vertex) static const struct gl_function_remap GL_EXT_cull_vertex_functions[] = { - { 8017, -1 }, /* CullParameterdvEXT */ - { 10660, -1 }, /* CullParameterfvEXT */ + { 8874, -1 }, /* CullParameterdvEXT */ + { 11693, -1 }, /* CullParameterfvEXT */ { -1, -1 } }; #endif @@ -5387,7 +5704,7 @@ static const struct gl_function_remap GL_EXT_draw_instanced_functions[] = { #if defined(need_GL_EXT_draw_range_elements) static const struct gl_function_remap GL_EXT_draw_range_elements_functions[] = { - { 8665, _gloffset_DrawRangeElements }, + { 9522, _gloffset_DrawRangeElements }, { -1, -1 } }; #endif @@ -5427,41 +5744,48 @@ static const struct gl_function_remap GL_EXT_gpu_program_parameters_functions[] }; #endif +#if defined(need_GL_EXT_gpu_shader4) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_EXT_gpu_shader4_functions[] = { + { -1, -1 } +}; +#endif + #if defined(need_GL_EXT_histogram) static const struct gl_function_remap GL_EXT_histogram_functions[] = { - { 812, _gloffset_Histogram }, - { 3088, _gloffset_ResetHistogram }, - { 9065, _gloffset_GetMinmax }, - { 14137, _gloffset_GetHistogramParameterfv }, - { 22530, _gloffset_GetMinmaxParameteriv }, - { 24527, _gloffset_ResetMinmax }, - { 25356, _gloffset_GetHistogramParameteriv }, - { 26443, _gloffset_GetHistogram }, - { 28864, _gloffset_Minmax }, - { 30365, _gloffset_GetMinmaxParameterfv }, + { 856, _gloffset_Histogram }, + { 3522, _gloffset_ResetHistogram }, + { 9972, _gloffset_GetMinmax }, + { 15399, _gloffset_GetHistogramParameterfv }, + { 24334, _gloffset_GetMinmaxParameteriv }, + { 26485, _gloffset_ResetMinmax }, + { 27314, _gloffset_GetHistogramParameteriv }, + { 28463, _gloffset_GetHistogram }, + { 31032, _gloffset_Minmax }, + { 32578, _gloffset_GetMinmaxParameterfv }, { -1, -1 } }; #endif #if defined(need_GL_EXT_index_func) static const struct gl_function_remap GL_EXT_index_func_functions[] = { - { 10446, -1 }, /* IndexFuncEXT */ + { 11479, -1 }, /* IndexFuncEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_index_material) static const struct gl_function_remap GL_EXT_index_material_functions[] = { - { 19465, -1 }, /* IndexMaterialEXT */ + { 21052, -1 }, /* IndexMaterialEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_light_texture) static const struct gl_function_remap GL_EXT_light_texture_functions[] = { - { 24421, -1 }, /* ApplyTextureEXT */ - { 24481, -1 }, /* TextureMaterialEXT */ - { 24506, -1 }, /* TextureLightEXT */ + { 26294, -1 }, /* ApplyTextureEXT */ + { 26439, -1 }, /* TextureMaterialEXT */ + { 26464, -1 }, /* TextureLightEXT */ { -1, -1 } }; #endif @@ -5482,20 +5806,20 @@ static const struct gl_function_remap GL_EXT_multisample_functions[] = { #if defined(need_GL_EXT_paletted_texture) static const struct gl_function_remap GL_EXT_paletted_texture_functions[] = { - { 7564, _gloffset_ColorTable }, - { 13983, _gloffset_GetColorTable }, - { 21200, _gloffset_GetColorTableParameterfv }, - { 23176, _gloffset_GetColorTableParameteriv }, + { 8385, _gloffset_ColorTable }, + { 15245, _gloffset_GetColorTable }, + { 22882, _gloffset_GetColorTableParameterfv }, + { 24980, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; #endif #if defined(need_GL_EXT_pixel_transform) static const struct gl_function_remap GL_EXT_pixel_transform_functions[] = { - { 20116, -1 }, /* PixelTransformParameterfEXT */ - { 20196, -1 }, /* PixelTransformParameteriEXT */ - { 28202, -1 }, /* PixelTransformParameterfvEXT */ - { 29689, -1 }, /* PixelTransformParameterivEXT */ + { 21682, -1 }, /* PixelTransformParameterfEXT */ + { 21762, -1 }, /* PixelTransformParameteriEXT */ + { 30370, -1 }, /* PixelTransformParameterfvEXT */ + { 31902, -1 }, /* PixelTransformParameterivEXT */ { -1, -1 } }; #endif @@ -5528,6 +5852,13 @@ static const struct gl_function_remap GL_EXT_secondary_color_functions[] = { }; #endif +#if defined(need_GL_EXT_separate_shader_objects) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_EXT_separate_shader_objects_functions[] = { + { -1, -1 } +}; +#endif + #if defined(need_GL_EXT_stencil_two_side) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_EXT_stencil_two_side_functions[] = { @@ -5537,16 +5868,16 @@ static const struct gl_function_remap GL_EXT_stencil_two_side_functions[] = { #if defined(need_GL_EXT_subtexture) static const struct gl_function_remap GL_EXT_subtexture_functions[] = { - { 6285, _gloffset_TexSubImage1D }, - { 9679, _gloffset_TexSubImage2D }, + { 7106, _gloffset_TexSubImage1D }, + { 10649, _gloffset_TexSubImage2D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_texture3D) static const struct gl_function_remap GL_EXT_texture3D_functions[] = { - { 1658, _gloffset_TexImage3D }, - { 20969, _gloffset_TexSubImage3D }, + { 1774, _gloffset_TexImage3D }, + { 22651, _gloffset_TexSubImage3D }, { -1, -1 } }; #endif @@ -5558,21 +5889,28 @@ static const struct gl_function_remap GL_EXT_texture_array_functions[] = { }; #endif +#if defined(need_GL_EXT_texture_integer) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_EXT_texture_integer_functions[] = { + { -1, -1 } +}; +#endif + #if defined(need_GL_EXT_texture_object) static const struct gl_function_remap GL_EXT_texture_object_functions[] = { - { 2964, _gloffset_PrioritizeTextures }, - { 6734, _gloffset_AreTexturesResident }, - { 12382, _gloffset_GenTextures }, - { 14469, _gloffset_DeleteTextures }, - { 17916, _gloffset_IsTexture }, - { 27437, _gloffset_BindTexture }, + { 3290, _gloffset_PrioritizeTextures }, + { 7555, _gloffset_AreTexturesResident }, + { 13562, _gloffset_GenTextures }, + { 15731, _gloffset_DeleteTextures }, + { 19486, _gloffset_IsTexture }, + { 29513, _gloffset_BindTexture }, { -1, -1 } }; #endif #if defined(need_GL_EXT_texture_perturb_normal) static const struct gl_function_remap GL_EXT_texture_perturb_normal_functions[] = { - { 12624, -1 }, /* TextureNormalEXT */ + { 13804, -1 }, /* TextureNormalEXT */ { -1, -1 } }; #endif @@ -5594,30 +5932,30 @@ static const struct gl_function_remap GL_EXT_transform_feedback_functions[] = { #if defined(need_GL_EXT_vertex_array) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_EXT_vertex_array_functions[] = { - { 22357, _gloffset_ArrayElement }, - { 28452, _gloffset_GetPointerv }, - { 29992, _gloffset_DrawArrays }, + { 24110, _gloffset_ArrayElement }, + { 30620, _gloffset_GetPointerv }, + { 32205, _gloffset_DrawArrays }, { -1, -1 } }; #endif #if defined(need_GL_EXT_vertex_weighting) static const struct gl_function_remap GL_EXT_vertex_weighting_functions[] = { - { 17946, -1 }, /* VertexWeightfvEXT */ - { 24860, -1 }, /* VertexWeightfEXT */ - { 26412, -1 }, /* VertexWeightPointerEXT */ + { 19516, -1 }, /* VertexWeightfvEXT */ + { 26818, -1 }, /* VertexWeightfEXT */ + { 28432, -1 }, /* VertexWeightPointerEXT */ { -1, -1 } }; #endif #if defined(need_GL_HP_image_transform) static const struct gl_function_remap GL_HP_image_transform_functions[] = { - { 2157, -1 }, /* GetImageTransformParameterfvHP */ - { 3305, -1 }, /* ImageTransformParameterfHP */ - { 9257, -1 }, /* ImageTransformParameterfvHP */ - { 10915, -1 }, /* ImageTransformParameteriHP */ - { 11223, -1 }, /* GetImageTransformParameterivHP */ - { 18010, -1 }, /* ImageTransformParameterivHP */ + { 2327, -1 }, /* GetImageTransformParameterfvHP */ + { 3739, -1 }, /* ImageTransformParameterfHP */ + { 10187, -1 }, /* ImageTransformParameterfvHP */ + { 11948, -1 }, /* ImageTransformParameteriHP */ + { 12289, -1 }, /* GetImageTransformParameterivHP */ + { 19580, -1 }, /* ImageTransformParameterivHP */ { -1, -1 } }; #endif @@ -5631,14 +5969,14 @@ static const struct gl_function_remap GL_IBM_multimode_draw_arrays_functions[] = #if defined(need_GL_IBM_vertex_array_lists) static const struct gl_function_remap GL_IBM_vertex_array_lists_functions[] = { - { 3857, -1 }, /* SecondaryColorPointerListIBM */ - { 5252, -1 }, /* NormalPointerListIBM */ - { 6908, -1 }, /* FogCoordPointerListIBM */ - { 7215, -1 }, /* VertexPointerListIBM */ - { 10836, -1 }, /* ColorPointerListIBM */ - { 12213, -1 }, /* TexCoordPointerListIBM */ - { 12646, -1 }, /* IndexPointerListIBM */ - { 30308, -1 }, /* EdgeFlagPointerListIBM */ + { 4379, -1 }, /* SecondaryColorPointerListIBM */ + { 6021, -1 }, /* NormalPointerListIBM */ + { 7729, -1 }, /* FogCoordPointerListIBM */ + { 8036, -1 }, /* VertexPointerListIBM */ + { 11869, -1 }, /* ColorPointerListIBM */ + { 13326, -1 }, /* TexCoordPointerListIBM */ + { 13826, -1 }, /* IndexPointerListIBM */ + { 32521, -1 }, /* EdgeFlagPointerListIBM */ { -1, -1 } }; #endif @@ -5652,10 +5990,10 @@ static const struct gl_function_remap GL_INGR_blend_func_separate_functions[] = #if defined(need_GL_INTEL_parallel_arrays) static const struct gl_function_remap GL_INTEL_parallel_arrays_functions[] = { - { 11600, -1 }, /* VertexPointervINTEL */ - { 14230, -1 }, /* ColorPointervINTEL */ - { 27708, -1 }, /* NormalPointervINTEL */ - { 28134, -1 }, /* TexCoordPointervINTEL */ + { 12666, -1 }, /* VertexPointervINTEL */ + { 15492, -1 }, /* ColorPointervINTEL */ + { 29784, -1 }, /* NormalPointervINTEL */ + { 30302, -1 }, /* TexCoordPointervINTEL */ { -1, -1 } }; #endif @@ -5669,10 +6007,10 @@ static const struct gl_function_remap GL_MESA_resize_buffers_functions[] = { #if defined(need_GL_MESA_shader_debug) static const struct gl_function_remap GL_MESA_shader_debug_functions[] = { - { 1522, -1 }, /* GetDebugLogLengthMESA */ - { 3063, -1 }, /* ClearDebugLogMESA */ - { 4018, -1 }, /* GetDebugLogMESA */ - { 28645, -1 }, /* CreateDebugObjectMESA */ + { 1638, -1 }, /* GetDebugLogLengthMESA */ + { 3461, -1 }, /* ClearDebugLogMESA */ + { 4540, -1 }, /* GetDebugLogMESA */ + { 30813, -1 }, /* CreateDebugObjectMESA */ { -1, -1 } }; #endif @@ -5693,15 +6031,15 @@ static const struct gl_function_remap GL_NV_condtitional_render_functions[] = { #if defined(need_GL_NV_evaluators) static const struct gl_function_remap GL_NV_evaluators_functions[] = { - { 5947, -1 }, /* GetMapAttribParameterivNV */ - { 7670, -1 }, /* MapControlPointsNV */ - { 7769, -1 }, /* MapParameterfvNV */ - { 9662, -1 }, /* EvalMapsNV */ - { 15874, -1 }, /* GetMapAttribParameterfvNV */ - { 16040, -1 }, /* MapParameterivNV */ - { 22920, -1 }, /* GetMapParameterivNV */ - { 23418, -1 }, /* GetMapParameterfvNV */ - { 27044, -1 }, /* GetMapControlPointsNV */ + { 6768, -1 }, /* GetMapAttribParameterivNV */ + { 8491, -1 }, /* MapControlPointsNV */ + { 8590, -1 }, /* MapParameterfvNV */ + { 10632, -1 }, /* EvalMapsNV */ + { 17162, -1 }, /* GetMapAttribParameterfvNV */ + { 17379, -1 }, /* MapParameterivNV */ + { 24724, -1 }, /* GetMapParameterivNV */ + { 25222, -1 }, /* GetMapParameterfvNV */ + { 29099, -1 }, /* GetMapControlPointsNV */ { -1, -1 } }; #endif @@ -5743,8 +6081,8 @@ static const struct gl_function_remap GL_NV_register_combiners_functions[] = { #if defined(need_GL_NV_register_combiners2) static const struct gl_function_remap GL_NV_register_combiners2_functions[] = { - { 14700, -1 }, /* CombinerStageParameterfvNV */ - { 15015, -1 }, /* GetCombinerStageParameterfvNV */ + { 15884, -1 }, /* CombinerStageParameterfvNV */ + { 16280, -1 }, /* GetCombinerStageParameterfvNV */ { -1, -1 } }; #endif @@ -5772,23 +6110,23 @@ static const struct gl_function_remap GL_OES_EGL_image_functions[] = { #if defined(need_GL_PGI_misc_hints) static const struct gl_function_remap GL_PGI_misc_hints_functions[] = { - { 7854, -1 }, /* HintPGI */ + { 8711, -1 }, /* HintPGI */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_detail_texture) static const struct gl_function_remap GL_SGIS_detail_texture_functions[] = { - { 14988, -1 }, /* GetDetailTexFuncSGIS */ - { 15308, -1 }, /* DetailTexFuncSGIS */ + { 16253, -1 }, /* GetDetailTexFuncSGIS */ + { 16620, -1 }, /* DetailTexFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_fog_function) static const struct gl_function_remap GL_SGIS_fog_function_functions[] = { - { 25122, -1 }, /* FogFuncSGIS */ - { 25787, -1 }, /* GetFogFuncSGIS */ + { 27080, -1 }, /* FogFuncSGIS */ + { 27781, -1 }, /* GetFogFuncSGIS */ { -1, -1 } }; #endif @@ -5816,112 +6154,112 @@ static const struct gl_function_remap GL_SGIS_point_parameters_functions[] = { #if defined(need_GL_SGIS_sharpen_texture) static const struct gl_function_remap GL_SGIS_sharpen_texture_functions[] = { - { 6008, -1 }, /* GetSharpenTexFuncSGIS */ - { 20436, -1 }, /* SharpenTexFuncSGIS */ + { 6829, -1 }, /* GetSharpenTexFuncSGIS */ + { 22047, -1 }, /* SharpenTexFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture4D) static const struct gl_function_remap GL_SGIS_texture4D_functions[] = { - { 894, -1 }, /* TexImage4DSGIS */ - { 14538, -1 }, /* TexSubImage4DSGIS */ + { 1010, -1 }, /* TexImage4DSGIS */ + { 15800, -1 }, /* TexSubImage4DSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture_color_mask) static const struct gl_function_remap GL_SGIS_texture_color_mask_functions[] = { - { 13936, -1 }, /* TextureColorMaskSGIS */ + { 15198, -1 }, /* TextureColorMaskSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture_filter4) static const struct gl_function_remap GL_SGIS_texture_filter4_functions[] = { - { 6185, -1 }, /* GetTexFilterFuncSGIS */ - { 15134, -1 }, /* TexFilterFuncSGIS */ + { 7006, -1 }, /* GetTexFilterFuncSGIS */ + { 16399, -1 }, /* TexFilterFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_async) static const struct gl_function_remap GL_SGIX_async_functions[] = { - { 3014, -1 }, /* AsyncMarkerSGIX */ - { 3997, -1 }, /* FinishAsyncSGIX */ - { 4762, -1 }, /* PollAsyncSGIX */ - { 20583, -1 }, /* DeleteAsyncMarkersSGIX */ - { 20638, -1 }, /* IsAsyncMarkerSGIX */ - { 30105, -1 }, /* GenAsyncMarkersSGIX */ + { 3387, -1 }, /* AsyncMarkerSGIX */ + { 4519, -1 }, /* FinishAsyncSGIX */ + { 5466, -1 }, /* PollAsyncSGIX */ + { 22228, -1 }, /* DeleteAsyncMarkersSGIX */ + { 22283, -1 }, /* IsAsyncMarkerSGIX */ + { 32318, -1 }, /* GenAsyncMarkersSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_flush_raster) static const struct gl_function_remap GL_SGIX_flush_raster_functions[] = { - { 6562, -1 }, /* FlushRasterSGIX */ + { 7383, -1 }, /* FlushRasterSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_fragment_lighting) static const struct gl_function_remap GL_SGIX_fragment_lighting_functions[] = { - { 2410, -1 }, /* FragmentMaterialfvSGIX */ - { 4713, -1 }, /* FragmentLightiSGIX */ - { 5688, -1 }, /* GetFragmentMaterialfvSGIX */ - { 7282, -1 }, /* FragmentMaterialfSGIX */ - { 7443, -1 }, /* GetFragmentLightivSGIX */ - { 8280, -1 }, /* FragmentLightModeliSGIX */ - { 9725, -1 }, /* FragmentLightivSGIX */ - { 10027, -1 }, /* GetFragmentMaterialivSGIX */ - { 17833, -1 }, /* FragmentLightModelfSGIX */ - { 18133, -1 }, /* FragmentColorMaterialSGIX */ - { 18533, -1 }, /* FragmentMaterialiSGIX */ - { 19793, -1 }, /* LightEnviSGIX */ - { 21292, -1 }, /* FragmentLightModelfvSGIX */ - { 21601, -1 }, /* FragmentLightfvSGIX */ - { 26171, -1 }, /* FragmentLightModelivSGIX */ - { 26294, -1 }, /* FragmentLightfSGIX */ - { 29021, -1 }, /* GetFragmentLightfvSGIX */ - { 30588, -1 }, /* FragmentMaterialivSGIX */ + { 2625, -1 }, /* FragmentMaterialfvSGIX */ + { 5370, -1 }, /* FragmentLightiSGIX */ + { 8103, -1 }, /* FragmentMaterialfSGIX */ + { 8264, -1 }, /* GetFragmentLightivSGIX */ + { 9137, -1 }, /* FragmentLightModeliSGIX */ + { 10695, -1 }, /* FragmentLightivSGIX */ + { 11013, -1 }, /* GetFragmentMaterialivSGIX */ + { 16193, -1 }, /* GetFragmentMaterialfvSGIX */ + { 19403, -1 }, /* FragmentLightModelfSGIX */ + { 19703, -1 }, /* FragmentColorMaterialSGIX */ + { 20120, -1 }, /* FragmentMaterialiSGIX */ + { 21380, -1 }, /* LightEnviSGIX */ + { 22974, -1 }, /* FragmentLightModelfvSGIX */ + { 23309, -1 }, /* FragmentLightfvSGIX */ + { 28165, -1 }, /* FragmentLightModelivSGIX */ + { 28314, -1 }, /* FragmentLightfSGIX */ + { 31189, -1 }, /* GetFragmentLightfvSGIX */ + { 32801, -1 }, /* FragmentMaterialivSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_framezoom) static const struct gl_function_remap GL_SGIX_framezoom_functions[] = { - { 20661, -1 }, /* FrameZoomSGIX */ + { 22306, -1 }, /* FrameZoomSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_igloo_interface) static const struct gl_function_remap GL_SGIX_igloo_interface_functions[] = { - { 26602, -1 }, /* IglooInterfaceSGIX */ + { 28622, -1 }, /* IglooInterfaceSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_instruments) static const struct gl_function_remap GL_SGIX_instruments_functions[] = { - { 2573, -1 }, /* ReadInstrumentsSGIX */ - { 5764, -1 }, /* PollInstrumentsSGIX */ - { 9623, -1 }, /* GetInstrumentsSGIX */ - { 11811, -1 }, /* StartInstrumentsSGIX */ - { 14734, -1 }, /* StopInstrumentsSGIX */ - { 16417, -1 }, /* InstrumentsBufferSGIX */ + { 2805, -1 }, /* ReadInstrumentsSGIX */ + { 6585, -1 }, /* PollInstrumentsSGIX */ + { 10553, -1 }, /* GetInstrumentsSGIX */ + { 12924, -1 }, /* StartInstrumentsSGIX */ + { 15918, -1 }, /* StopInstrumentsSGIX */ + { 17777, -1 }, /* InstrumentsBufferSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_list_priority) static const struct gl_function_remap GL_SGIX_list_priority_functions[] = { - { 1125, -1 }, /* ListParameterfSGIX */ - { 2763, -1 }, /* GetListParameterfvSGIX */ - { 16332, -1 }, /* ListParameteriSGIX */ - { 17086, -1 }, /* ListParameterfvSGIX */ - { 19199, -1 }, /* ListParameterivSGIX */ - { 30149, -1 }, /* GetListParameterivSGIX */ + { 1241, -1 }, /* ListParameterfSGIX */ + { 3089, -1 }, /* GetListParameterfvSGIX */ + { 17692, -1 }, /* ListParameteriSGIX */ + { 18645, -1 }, /* ListParameterfvSGIX */ + { 20786, -1 }, /* ListParameterivSGIX */ + { 32362, -1 }, /* GetListParameterivSGIX */ { -1, -1 } }; #endif @@ -5935,134 +6273,134 @@ static const struct gl_function_remap GL_SGIX_pixel_texture_functions[] = { #if defined(need_GL_SGIX_polynomial_ffd) static const struct gl_function_remap GL_SGIX_polynomial_ffd_functions[] = { - { 3251, -1 }, /* LoadIdentityDeformationMapSGIX */ - { 14834, -1 }, /* DeformSGIX */ - { 22469, -1 }, /* DeformationMap3fSGIX */ - { 28909, -1 }, /* DeformationMap3dSGIX */ + { 3685, -1 }, /* LoadIdentityDeformationMapSGIX */ + { 16018, -1 }, /* DeformSGIX */ + { 24222, -1 }, /* DeformationMap3fSGIX */ + { 31077, -1 }, /* DeformationMap3dSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_reference_plane) static const struct gl_function_remap GL_SGIX_reference_plane_functions[] = { - { 13487, -1 }, /* ReferencePlaneSGIX */ + { 14749, -1 }, /* ReferencePlaneSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_sprite) static const struct gl_function_remap GL_SGIX_sprite_functions[] = { - { 8778, -1 }, /* SpriteParameterfvSGIX */ - { 18988, -1 }, /* SpriteParameteriSGIX */ - { 24561, -1 }, /* SpriteParameterfSGIX */ - { 27166, -1 }, /* SpriteParameterivSGIX */ + { 9635, -1 }, /* SpriteParameterfvSGIX */ + { 20575, -1 }, /* SpriteParameteriSGIX */ + { 26519, -1 }, /* SpriteParameterfSGIX */ + { 29242, -1 }, /* SpriteParameterivSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_tag_sample_buffer) static const struct gl_function_remap GL_SGIX_tag_sample_buffer_functions[] = { - { 19047, -1 }, /* TagSampleBufferSGIX */ + { 20634, -1 }, /* TagSampleBufferSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGI_color_table) static const struct gl_function_remap GL_SGI_color_table_functions[] = { - { 6852, _gloffset_ColorTableParameteriv }, - { 7564, _gloffset_ColorTable }, - { 13983, _gloffset_GetColorTable }, - { 14093, _gloffset_CopyColorTable }, - { 17777, _gloffset_ColorTableParameterfv }, - { 21200, _gloffset_GetColorTableParameterfv }, - { 23176, _gloffset_GetColorTableParameteriv }, + { 7673, _gloffset_ColorTableParameteriv }, + { 8385, _gloffset_ColorTable }, + { 15245, _gloffset_GetColorTable }, + { 15355, _gloffset_CopyColorTable }, + { 19347, _gloffset_ColorTableParameterfv }, + { 22882, _gloffset_GetColorTableParameterfv }, + { 24980, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; #endif #if defined(need_GL_SUNX_constant_data) static const struct gl_function_remap GL_SUNX_constant_data_functions[] = { - { 28999, -1 }, /* FinishTextureSUNX */ + { 31167, -1 }, /* FinishTextureSUNX */ { -1, -1 } }; #endif #if defined(need_GL_SUN_global_alpha) static const struct gl_function_remap GL_SUN_global_alpha_functions[] = { - { 3035, -1 }, /* GlobalAlphaFactorubSUN */ - { 4224, -1 }, /* GlobalAlphaFactoriSUN */ - { 5789, -1 }, /* GlobalAlphaFactordSUN */ - { 8862, -1 }, /* GlobalAlphaFactoruiSUN */ - { 9214, -1 }, /* GlobalAlphaFactorbSUN */ - { 12126, -1 }, /* GlobalAlphaFactorfSUN */ - { 12245, -1 }, /* GlobalAlphaFactorusSUN */ - { 20900, -1 }, /* GlobalAlphaFactorsSUN */ + { 3408, -1 }, /* GlobalAlphaFactorubSUN */ + { 4818, -1 }, /* GlobalAlphaFactoriSUN */ + { 6610, -1 }, /* GlobalAlphaFactordSUN */ + { 9719, -1 }, /* GlobalAlphaFactoruiSUN */ + { 10144, -1 }, /* GlobalAlphaFactorbSUN */ + { 13239, -1 }, /* GlobalAlphaFactorfSUN */ + { 13403, -1 }, /* GlobalAlphaFactorusSUN */ + { 22569, -1 }, /* GlobalAlphaFactorsSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_mesh_array) static const struct gl_function_remap GL_SUN_mesh_array_functions[] = { - { 26978, -1 }, /* DrawMeshArraysSUN */ + { 29033, -1 }, /* DrawMeshArraysSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_triangle_list) static const struct gl_function_remap GL_SUN_triangle_list_functions[] = { - { 3971, -1 }, /* ReplacementCodeubSUN */ - { 5600, -1 }, /* ReplacementCodeubvSUN */ - { 17498, -1 }, /* ReplacementCodeusvSUN */ - { 17686, -1 }, /* ReplacementCodePointerSUN */ - { 19857, -1 }, /* ReplacementCodeuiSUN */ - { 20612, -1 }, /* ReplacementCodeusSUN */ - { 27623, -1 }, /* ReplacementCodeuivSUN */ + { 4493, -1 }, /* ReplacementCodeubSUN */ + { 6369, -1 }, /* ReplacementCodeubvSUN */ + { 19068, -1 }, /* ReplacementCodeusvSUN */ + { 19256, -1 }, /* ReplacementCodePointerSUN */ + { 21444, -1 }, /* ReplacementCodeuiSUN */ + { 22257, -1 }, /* ReplacementCodeusSUN */ + { 29699, -1 }, /* ReplacementCodeuivSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_vertex) static const struct gl_function_remap GL_SUN_vertex_functions[] = { - { 999, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */ - { 1197, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */ - { 1423, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */ - { 1699, -1 }, /* ReplacementCodeuiVertex3fvSUN */ - { 1833, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */ - { 2346, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */ - { 2642, -1 }, /* Color4ubVertex3fvSUN */ - { 4105, -1 }, /* Color4ubVertex3fSUN */ - { 4181, -1 }, /* TexCoord2fVertex3fSUN */ - { 4508, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */ - { 4866, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */ - { 5495, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */ - { 6240, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */ - { 6599, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */ - { 7311, -1 }, /* TexCoord2fNormal3fVertex3fSUN */ - { 8079, -1 }, /* Color3fVertex3fSUN */ - { 9173, -1 }, /* Color3fVertex3fvSUN */ - { 9588, -1 }, /* Color4fNormal3fVertex3fvSUN */ - { 10325, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */ - { 11674, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */ - { 13218, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */ - { 13629, -1 }, /* TexCoord2fColor3fVertex3fSUN */ - { 14759, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */ - { 15093, -1 }, /* Color4ubVertex2fvSUN */ - { 15333, -1 }, /* Normal3fVertex3fSUN */ - { 16358, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */ - { 16619, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */ - { 17327, -1 }, /* TexCoord2fVertex3fvSUN */ - { 18103, -1 }, /* Color4ubVertex2fSUN */ - { 18324, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */ - { 20282, -1 }, /* TexCoord2fColor4ubVertex3fSUN */ - { 20680, -1 }, /* Normal3fVertex3fvSUN */ - { 21109, -1 }, /* Color4fNormal3fVertex3fSUN */ - { 22018, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */ - { 24013, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */ - { 25238, -1 }, /* TexCoord4fVertex4fSUN */ - { 25664, -1 }, /* TexCoord2fColor3fVertex3fvSUN */ - { 26015, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */ - { 26142, -1 }, /* TexCoord4fVertex4fvSUN */ - { 26850, -1 }, /* ReplacementCodeuiVertex3fSUN */ + { 1115, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */ + { 1313, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */ + { 1539, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */ + { 1869, -1 }, /* ReplacementCodeuiVertex3fvSUN */ + { 2003, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */ + { 2561, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */ + { 2874, -1 }, /* Color4ubVertex3fvSUN */ + { 4652, -1 }, /* Color4ubVertex3fSUN */ + { 4775, -1 }, /* TexCoord2fVertex3fSUN */ + { 5119, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */ + { 5570, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */ + { 6264, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */ + { 7061, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */ + { 7420, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */ + { 8132, -1 }, /* TexCoord2fNormal3fVertex3fSUN */ + { 8936, -1 }, /* Color3fVertex3fSUN */ + { 10080, -1 }, /* Color3fVertex3fvSUN */ + { 10518, -1 }, /* Color4fNormal3fVertex3fvSUN */ + { 11358, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */ + { 12787, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */ + { 14398, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */ + { 14891, -1 }, /* TexCoord2fColor3fVertex3fSUN */ + { 15943, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */ + { 16358, -1 }, /* Color4ubVertex2fvSUN */ + { 16645, -1 }, /* Normal3fVertex3fSUN */ + { 17718, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */ + { 18079, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */ + { 18897, -1 }, /* TexCoord2fVertex3fvSUN */ + { 19673, -1 }, /* Color4ubVertex2fSUN */ + { 19911, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */ + { 21893, -1 }, /* TexCoord2fColor4ubVertex3fSUN */ + { 22325, -1 }, /* Normal3fVertex3fvSUN */ + { 22791, -1 }, /* Color4fNormal3fVertex3fSUN */ + { 23771, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */ + { 25840, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */ + { 27196, -1 }, /* TexCoord4fVertex4fSUN */ + { 27622, -1 }, /* TexCoord2fColor3fVertex3fvSUN */ + { 28009, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */ + { 28136, -1 }, /* TexCoord4fVertex4fvSUN */ + { 28870, -1 }, /* ReplacementCodeuiVertex3fSUN */ { -1, -1 } }; #endif @@ -6070,40 +6408,40 @@ static const struct gl_function_remap GL_SUN_vertex_functions[] = { #if defined(need_GL_VERSION_1_3) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_VERSION_1_3_functions[] = { - { 381, _gloffset_MultiTexCoord3sARB }, - { 613, _gloffset_ActiveTextureARB }, - { 3761, _gloffset_MultiTexCoord1fvARB }, - { 5386, _gloffset_MultiTexCoord3dARB }, - { 5431, _gloffset_MultiTexCoord2iARB }, - { 5555, _gloffset_MultiTexCoord2svARB }, - { 7520, _gloffset_MultiTexCoord2fARB }, - { 9424, _gloffset_MultiTexCoord3fvARB }, - { 9981, _gloffset_MultiTexCoord4sARB }, - { 10615, _gloffset_MultiTexCoord2dvARB }, - { 10997, _gloffset_MultiTexCoord1svARB }, - { 11369, _gloffset_MultiTexCoord3svARB }, - { 11430, _gloffset_MultiTexCoord4iARB }, - { 12153, _gloffset_MultiTexCoord3iARB }, - { 12956, _gloffset_MultiTexCoord1dARB }, - { 13173, _gloffset_MultiTexCoord3dvARB }, - { 14337, _gloffset_MultiTexCoord3ivARB }, - { 14382, _gloffset_MultiTexCoord2sARB }, - { 15709, _gloffset_MultiTexCoord4ivARB }, - { 17427, _gloffset_ClientActiveTextureARB }, - { 19710, _gloffset_MultiTexCoord2dARB }, - { 20151, _gloffset_MultiTexCoord4dvARB }, - { 20462, _gloffset_MultiTexCoord4fvARB }, - { 21341, _gloffset_MultiTexCoord3fARB }, - { 23704, _gloffset_MultiTexCoord4dARB }, - { 23970, _gloffset_MultiTexCoord1sARB }, - { 24174, _gloffset_MultiTexCoord1dvARB }, - { 24984, _gloffset_MultiTexCoord1ivARB }, - { 25077, _gloffset_MultiTexCoord2ivARB }, - { 25416, _gloffset_MultiTexCoord1iARB }, - { 26718, _gloffset_MultiTexCoord4svARB }, - { 27236, _gloffset_MultiTexCoord1fARB }, - { 27499, _gloffset_MultiTexCoord4fARB }, - { 29826, _gloffset_MultiTexCoord2fvARB }, + { 425, _gloffset_MultiTexCoord3sARB }, + { 657, _gloffset_ActiveTextureARB }, + { 4247, _gloffset_MultiTexCoord1fvARB }, + { 6155, _gloffset_MultiTexCoord3dARB }, + { 6200, _gloffset_MultiTexCoord2iARB }, + { 6324, _gloffset_MultiTexCoord2svARB }, + { 8341, _gloffset_MultiTexCoord2fARB }, + { 10354, _gloffset_MultiTexCoord3fvARB }, + { 10967, _gloffset_MultiTexCoord4sARB }, + { 11648, _gloffset_MultiTexCoord2dvARB }, + { 12063, _gloffset_MultiTexCoord1svARB }, + { 12435, _gloffset_MultiTexCoord3svARB }, + { 12496, _gloffset_MultiTexCoord4iARB }, + { 13266, _gloffset_MultiTexCoord3iARB }, + { 14136, _gloffset_MultiTexCoord1dARB }, + { 14353, _gloffset_MultiTexCoord3dvARB }, + { 15599, _gloffset_MultiTexCoord3ivARB }, + { 15644, _gloffset_MultiTexCoord2sARB }, + { 17045, _gloffset_MultiTexCoord4ivARB }, + { 18997, _gloffset_ClientActiveTextureARB }, + { 21297, _gloffset_MultiTexCoord2dARB }, + { 21717, _gloffset_MultiTexCoord4dvARB }, + { 22073, _gloffset_MultiTexCoord4fvARB }, + { 23023, _gloffset_MultiTexCoord3fARB }, + { 25531, _gloffset_MultiTexCoord4dARB }, + { 25797, _gloffset_MultiTexCoord1sARB }, + { 26001, _gloffset_MultiTexCoord1dvARB }, + { 26942, _gloffset_MultiTexCoord1ivARB }, + { 27035, _gloffset_MultiTexCoord2ivARB }, + { 27374, _gloffset_MultiTexCoord1iARB }, + { 28738, _gloffset_MultiTexCoord4svARB }, + { 29312, _gloffset_MultiTexCoord1fARB }, + { 29575, _gloffset_MultiTexCoord4fARB }, + { 32039, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; #endif @@ -6150,3 +6488,17 @@ static const struct gl_function_remap GL_VERSION_3_1_functions[] = { }; #endif +#if defined(need_GL_VERSION_3_2) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_VERSION_3_2_functions[] = { + { -1, -1 } +}; +#endif + +#if defined(need_GL_VERSION_3_3) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_VERSION_3_3_functions[] = { + { -1, -1 } +}; +#endif + diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c index dc8bc74787..3d1a8f8592 100644 --- a/src/mesa/main/renderbuffer.c +++ b/src/mesa/main/renderbuffer.c @@ -1766,7 +1766,7 @@ _mesa_add_accum_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, /** - * Add a software-based accumulation renderbuffer to the given framebuffer. + * Add a software-based aux renderbuffer to the given framebuffer. * This is a helper routine for device drivers when creating a * window system framebuffer (not a user-created render/framebuffer). * Once this function is called, you can basically forget about this @@ -1795,7 +1795,7 @@ _mesa_add_aux_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb, assert(fb->Attachment[BUFFER_AUX0 + i].Renderbuffer == NULL); if (!rb) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "Allocating accum buffer"); + _mesa_error(ctx, GL_OUT_OF_MEMORY, "Allocating aux buffer"); return GL_FALSE; } diff --git a/src/mesa/main/renderbuffer.h b/src/mesa/main/renderbuffer.h index 8791369dbe..62e812f93a 100644 --- a/src/mesa/main/renderbuffer.h +++ b/src/mesa/main/renderbuffer.h @@ -27,8 +27,8 @@ #define RENDERBUFFER_H #include "glheader.h" -#include "mtypes.h" +struct gl_context; struct gl_framebuffer; struct gl_renderbuffer; diff --git a/src/mesa/main/scissor.h b/src/mesa/main/scissor.h index bd909019db..da9385e2b9 100644 --- a/src/mesa/main/scissor.h +++ b/src/mesa/main/scissor.h @@ -27,8 +27,9 @@ #define SCISSOR_H -#include "main/mtypes.h" +#include "glheader.h" +struct gl_context; extern void GLAPIENTRY _mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height ); diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 8ecda71928..030236e735 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -116,7 +116,12 @@ _mesa_init_shader_state(struct gl_context *ctx) void _mesa_free_shader_state(struct gl_context *ctx) { - _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentProgram, NULL); + _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentVertexProgram, NULL); + _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentGeometryProgram, + NULL); + _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentFragmentProgram, + NULL); + _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, NULL); } @@ -399,6 +404,14 @@ bind_attrib_location(struct gl_context *ctx, GLuint program, GLuint index, } +static void +bind_frag_data_location(struct gl_context *ctx, GLuint program, + GLuint colorNumber, const GLchar *name) +{ + _mesa_problem(ctx, "bind_frag_data_location() not implemented yet"); +} + + static GLuint create_shader(struct gl_context *ctx, GLenum type) { @@ -600,6 +613,16 @@ get_attached_shaders(struct gl_context *ctx, GLuint program, GLsizei maxCount, } +static GLint +get_frag_data_location(struct gl_context *ctx, GLuint program, + const GLchar *name) +{ + _mesa_problem(ctx, "get_frag_data_location() not implemented yet"); + return -1; +} + + + /** * glGetHandleARB() - return ID/name of currently bound shader program. */ @@ -607,8 +630,8 @@ static GLuint get_handle(struct gl_context *ctx, GLenum pname) { if (pname == GL_PROGRAM_OBJECT_ARB) { - if (ctx->Shader.CurrentProgram) - return ctx->Shader.CurrentProgram->Name; + if (ctx->Shader.ActiveProgram) + return ctx->Shader.ActiveProgram->Name; else return 0; } @@ -845,7 +868,10 @@ link_program(struct gl_context *ctx, GLuint program) if (!shProg) return; - if (obj->Active && shProg == ctx->Shader.CurrentProgram) { + if (obj->Active + && (shProg == ctx->Shader.CurrentVertexProgram + || shProg == ctx->Shader.CurrentGeometryProgram + || shProg == ctx->Shader.CurrentFragmentProgram)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glLinkProgram(transform feedback active"); return; @@ -908,52 +934,83 @@ print_shader_info(const struct gl_shader_program *shProg) /** - * Use the named shader program for subsequent rendering. + * Use the named shader program for subsequent glUniform calls */ void -_mesa_use_program(struct gl_context *ctx, GLuint program) +_mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg, + const char *caller) { - struct gl_shader_program *shProg; - struct gl_transform_feedback_object *obj = - ctx->TransformFeedback.CurrentObject; - - if (obj->Active) { + if ((shProg != NULL) && !shProg->LinkStatus) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glUseProgram(transform feedback active)"); + "%s(program %u not linked)", caller, shProg->Name); return; } - if (ctx->Shader.CurrentProgram && - ctx->Shader.CurrentProgram->Name == program) { - /* no-op */ - return; + if (ctx->Shader.ActiveProgram != shProg) { + _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, shProg); } +} - if (program) { - shProg = _mesa_lookup_shader_program_err(ctx, program, "glUseProgram"); - if (!shProg) { - return; +/** + */ +static bool +use_shader_program(struct gl_context *ctx, GLenum type, + struct gl_shader_program *shProg) +{ + struct gl_shader_program **target; + + switch (type) { +#if FEATURE_ARB_vertex_shader + case GL_VERTEX_SHADER: + target = &ctx->Shader.CurrentVertexProgram; + if ((shProg == NULL) + || (shProg->_LinkedShaders[MESA_SHADER_VERTEX] == NULL)) { + shProg = NULL; } - if (!shProg->LinkStatus) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glUseProgram(program %u not linked)", program); - return; + break; +#endif +#if FEATURE_ARB_geometry_shader4 + case GL_GEOMETRY_SHADER_ARB: + target = &ctx->Shader.CurrentGeometryProgram; + if ((shProg == NULL) + || (shProg->_LinkedShaders[MESA_SHADER_GEOMETRY] == NULL)) { + shProg = NULL; } - - /* debug code */ - if (ctx->Shader.Flags & GLSL_USE_PROG) { - print_shader_info(shProg); + break; +#endif +#if FEATURE_ARB_fragment_shader + case GL_FRAGMENT_SHADER: + target = &ctx->Shader.CurrentFragmentProgram; + if ((shProg == NULL) + || (shProg->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL)) { + shProg = NULL; } - } - else { - shProg = NULL; + break; +#endif + default: + return false; } - if (ctx->Shader.CurrentProgram != shProg) { + if (*target != shProg) { FLUSH_VERTICES(ctx, _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS); - _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentProgram, shProg); + _mesa_reference_shader_program(ctx, target, shProg); + return true; } + return false; +} + +/** + * Use the named shader program for subsequent rendering. + */ +void +_mesa_use_program(struct gl_context *ctx, struct gl_shader_program *shProg) +{ + use_shader_program(ctx, GL_VERTEX_SHADER, shProg); + use_shader_program(ctx, GL_GEOMETRY_SHADER_ARB, shProg); + use_shader_program(ctx, GL_FRAGMENT_SHADER, shProg); + _mesa_active_program(ctx, shProg, "glUseProgram"); + if (ctx->Driver.UseProgram) ctx->Driver.UseProgram(ctx, shProg); } @@ -1110,6 +1167,16 @@ _mesa_BindAttribLocationARB(GLhandleARB program, GLuint index, } +/* GL_EXT_gpu_shader4, GL3 */ +void GLAPIENTRY +_mesa_BindFragDataLocation(GLuint program, GLuint colorNumber, + const GLchar *name) +{ + GET_CURRENT_CONTEXT(ctx); + bind_frag_data_location(ctx, program, colorNumber, name); +} + + void GLAPIENTRY _mesa_CompileShaderARB(GLhandleARB shaderObj) { @@ -1240,6 +1307,16 @@ _mesa_GetAttribLocationARB(GLhandleARB program, const GLcharARB * name) } +/* GL_EXT_gpu_shader4, GL3 */ +GLint GLAPIENTRY +_mesa_GetFragDataLocation(GLuint program, const GLchar *name) +{ + GET_CURRENT_CONTEXT(ctx); + return get_frag_data_location(ctx, program, name); +} + + + void GLAPIENTRY _mesa_GetInfoLogARB(GLhandleARB object, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog) @@ -1501,8 +1578,37 @@ void GLAPIENTRY _mesa_UseProgramObjectARB(GLhandleARB program) { GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, _NEW_PROGRAM); - _mesa_use_program(ctx, program); + struct gl_shader_program *shProg; + struct gl_transform_feedback_object *obj = + ctx->TransformFeedback.CurrentObject; + + if (obj->Active) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glUseProgram(transform feedback active)"); + return; + } + + if (program) { + shProg = _mesa_lookup_shader_program_err(ctx, program, "glUseProgram"); + if (!shProg) { + return; + } + if (!shProg->LinkStatus) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glUseProgram(program %u not linked)", program); + return; + } + + /* debug code */ + if (ctx->Shader.Flags & GLSL_USE_PROG) { + print_shader_info(shProg); + } + } + else { + shProg = NULL; + } + + _mesa_use_program(ctx, shProg); } @@ -1618,6 +1724,104 @@ _mesa_ProgramParameteriARB(GLuint program, GLenum pname, #endif +void +_mesa_use_shader_program(struct gl_context *ctx, GLenum type, + struct gl_shader_program *shProg) +{ + use_shader_program(ctx, type, shProg); + + if (ctx->Driver.UseProgram) + ctx->Driver.UseProgram(ctx, shProg); +} + +void GLAPIENTRY +_mesa_UseShaderProgramEXT(GLenum type, GLuint program) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = NULL; + + if (!validate_shader_target(ctx, type)) { + _mesa_error(ctx, GL_INVALID_ENUM, "glUseShaderProgramEXT(type)"); + return; + } + + if (ctx->TransformFeedback.CurrentObject->Active) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glUseShaderProgramEXT(transform feedback is active)"); + return; + } + + if (program) { + shProg = _mesa_lookup_shader_program_err(ctx, program, + "glUseShaderProgramEXT"); + if (shProg == NULL) + return; + + if (!shProg->LinkStatus) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glUseShaderProgramEXT(program not linked)"); + return; + } + } + + _mesa_use_shader_program(ctx, type, shProg); +} + +void GLAPIENTRY +_mesa_ActiveProgramEXT(GLuint program) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = (program != 0) + ? _mesa_lookup_shader_program_err(ctx, program, "glActiveProgramEXT") + : NULL; + + _mesa_active_program(ctx, shProg, "glActiveProgramEXT"); + return; +} + +GLuint GLAPIENTRY +_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string) +{ + GET_CURRENT_CONTEXT(ctx); + const GLuint shader = create_shader(ctx, type); + GLuint program = 0; + + if (shader) { + shader_source(ctx, shader, _mesa_strdup(string)); + compile_shader(ctx, shader); + + program = create_shader_program(ctx); + if (program) { + struct gl_shader_program *shProg; + struct gl_shader *sh; + GLint compiled = GL_FALSE; + + shProg = _mesa_lookup_shader_program(ctx, program); + sh = _mesa_lookup_shader(ctx, shader); + + get_shaderiv(ctx, shader, GL_COMPILE_STATUS, &compiled); + if (compiled) { + attach_shader(ctx, program, shader); + link_program(ctx, program); + detach_shader(ctx, program, shader); + +#if 0 + /* Possibly... */ + if (active-user-defined-varyings-in-linked-program) { + append-error-to-info-log; + shProg->LinkStatus = GL_FALSE; + } +#endif + } + + shProg->InfoLog = talloc_strdup_append(shProg->InfoLog, sh->InfoLog); + } + + delete_shader(ctx, shader); + } + + return program; +} /** * Plug in shader-related functions into API dispatch table. @@ -1668,6 +1872,15 @@ _mesa_init_shader_dispatch(struct _glapi_table *exec) #if FEATURE_ARB_geometry_shader4 SET_ProgramParameteriARB(exec, _mesa_ProgramParameteriARB); #endif + + SET_UseShaderProgramEXT(exec, _mesa_UseShaderProgramEXT); + SET_ActiveProgramEXT(exec, _mesa_ActiveProgramEXT); + SET_CreateShaderProgramEXT(exec, _mesa_CreateShaderProgramEXT); + + /* GL_EXT_gpu_shader4 / GL 3.0 */ + SET_BindFragDataLocationEXT(exec, _mesa_BindFragDataLocation); + SET_GetFragDataLocationEXT(exec, _mesa_GetFragDataLocation); + #endif /* FEATURE_GL */ } diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h index b55d7ca8b2..e4b477660d 100644 --- a/src/mesa/main/shaderapi.h +++ b/src/mesa/main/shaderapi.h @@ -28,8 +28,10 @@ #include "glheader.h" -#include "mtypes.h" +struct _glapi_table; +struct gl_context; +struct gl_shader_program; extern GLint _mesa_sizeof_glsl_type(GLenum type); @@ -39,8 +41,11 @@ _mesa_copy_string(GLchar *dst, GLsizei maxLength, GLsizei *length, const GLchar *src); extern void -_mesa_use_program(struct gl_context *ctx, GLuint program); +_mesa_use_program(struct gl_context *ctx, struct gl_shader_program *shProg); +extern void +_mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg, + const char *caller); extern void _mesa_init_shader_dispatch(struct _glapi_table *exec); @@ -68,6 +73,9 @@ _mesa_DetachObjectARB(GLhandleARB, GLhandleARB); extern void GLAPIENTRY _mesa_GetAttachedObjectsARB(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *); +extern GLint GLAPIENTRY +_mesa_GetFragDataLocation(GLuint program, const GLchar *name); + extern GLhandleARB GLAPIENTRY _mesa_GetHandleARB(GLenum pname); @@ -106,6 +114,10 @@ extern void GLAPIENTRY _mesa_BindAttribLocationARB(GLhandleARB, GLuint, const GLcharARB *); extern void GLAPIENTRY +_mesa_BindFragDataLocation(GLuint program, GLuint colorNumber, + const GLchar *name); + +extern void GLAPIENTRY _mesa_GetActiveAttribARB(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); @@ -165,5 +177,17 @@ _mesa_ShaderBinary(GLint n, const GLuint *shaders, GLenum binaryformat, extern void GLAPIENTRY _mesa_ProgramParameteriARB(GLuint program, GLenum pname, GLint value); +void +_mesa_use_shader_program(struct gl_context *ctx, GLenum type, + struct gl_shader_program *shProg); + +extern void GLAPIENTRY +_mesa_UseShaderProgramEXT(GLenum type, GLuint program); + +extern void GLAPIENTRY +_mesa_ActiveProgramEXT(GLuint program); + +extern GLuint GLAPIENTRY +_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string); #endif /* SHADERAPI_H */ diff --git a/src/mesa/main/shaderobj.h b/src/mesa/main/shaderobj.h index 5ea8ddc88d..346a5b7517 100644 --- a/src/mesa/main/shaderobj.h +++ b/src/mesa/main/shaderobj.h @@ -97,11 +97,11 @@ _mesa_init_shader_state(struct gl_context *ctx); extern void _mesa_free_shader_state(struct gl_context *ctx); + static INLINE GLuint _mesa_shader_type_to_index(GLenum v) { - switch(v) - { + switch (v) { case GL_VERTEX_SHADER: return MESA_SHADER_VERTEX; case GL_FRAGMENT_SHADER: @@ -109,25 +109,27 @@ _mesa_shader_type_to_index(GLenum v) case GL_GEOMETRY_SHADER: return MESA_SHADER_GEOMETRY; default: - ASSERT(0); + ASSERT(0 && "bad value in _mesa_shader_type_to_index()"); return ~0; } } + static INLINE GLenum _mesa_shader_index_to_type(GLuint i) { - GLenum enums[MESA_SHADER_TYPES] = { - GL_VERTEX_SHADER, - GL_FRAGMENT_SHADER, - GL_GEOMETRY_SHADER , + static const GLenum enums[MESA_SHADER_TYPES] = { + GL_VERTEX_SHADER, + GL_FRAGMENT_SHADER, + GL_GEOMETRY_SHADER , }; - if(i >= MESA_SHADER_TYPES) + if (i >= MESA_SHADER_TYPES) return 0; else return enums[i]; } + #ifdef __cplusplus } #endif diff --git a/src/mesa/main/shared.h b/src/mesa/main/shared.h index 43f8a388e6..768d69f694 100644 --- a/src/mesa/main/shared.h +++ b/src/mesa/main/shared.h @@ -25,7 +25,7 @@ #ifndef SHARED_H #define SHARED_H -#include "mtypes.h" +struct gl_context; struct gl_shared_state * _mesa_alloc_shared_state(struct gl_context *ctx); diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 5529732de0..cce1b464f0 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -247,7 +247,9 @@ update_program_enables(struct gl_context *ctx) static GLbitfield update_program(struct gl_context *ctx) { - const struct gl_shader_program *shProg = ctx->Shader.CurrentProgram; + const struct gl_shader_program *vsProg = ctx->Shader.CurrentVertexProgram; + const struct gl_shader_program *gsProg = ctx->Shader.CurrentGeometryProgram; + const struct gl_shader_program *fsProg = ctx->Shader.CurrentFragmentProgram; const struct gl_vertex_program *prevVP = ctx->VertexProgram._Current; const struct gl_fragment_program *prevFP = ctx->FragmentProgram._Current; const struct gl_geometry_program *prevGP = ctx->GeometryProgram._Current; @@ -269,10 +271,10 @@ update_program(struct gl_context *ctx) * come up, or matter. */ - if (shProg && shProg->LinkStatus && shProg->FragmentProgram) { + if (fsProg && fsProg->LinkStatus && fsProg->FragmentProgram) { /* Use shader programs */ _mesa_reference_fragprog(ctx, &ctx->FragmentProgram._Current, - shProg->FragmentProgram); + fsProg->FragmentProgram); } else if (ctx->FragmentProgram._Enabled) { /* use user-defined vertex program */ @@ -292,10 +294,10 @@ update_program(struct gl_context *ctx) _mesa_reference_fragprog(ctx, &ctx->FragmentProgram._Current, NULL); } - if (shProg && shProg->LinkStatus && shProg->GeometryProgram) { + if (gsProg && gsProg->LinkStatus && gsProg->GeometryProgram) { /* Use shader programs */ _mesa_reference_geomprog(ctx, &ctx->GeometryProgram._Current, - shProg->GeometryProgram); + gsProg->GeometryProgram); } else { /* no fragment program */ _mesa_reference_geomprog(ctx, &ctx->GeometryProgram._Current, NULL); @@ -305,10 +307,10 @@ update_program(struct gl_context *ctx) * _mesa_get_fixed_func_vertex_program() needs to know active * fragprog inputs. */ - if (shProg && shProg->LinkStatus && shProg->VertexProgram) { + if (vsProg && vsProg->LinkStatus && vsProg->VertexProgram) { /* Use shader programs */ _mesa_reference_vertprog(ctx, &ctx->VertexProgram._Current, - shProg->VertexProgram); + vsProg->VertexProgram); } else if (ctx->VertexProgram._Enabled) { /* use user-defined vertex program */ @@ -481,8 +483,6 @@ update_tricaps(struct gl_context *ctx, GLbitfield new_state) if (1/*new_state & _NEW_POINT*/) { if (ctx->Point.SmoothFlag) ctx->_TriangleCaps |= DD_POINT_SMOOTH; - if (ctx->Point.Size != 1.0F) - ctx->_TriangleCaps |= DD_POINT_SIZE; if (ctx->Point._Attenuated) ctx->_TriangleCaps |= DD_POINT_ATTEN; } @@ -495,8 +495,6 @@ update_tricaps(struct gl_context *ctx, GLbitfield new_state) ctx->_TriangleCaps |= DD_LINE_SMOOTH; if (ctx->Line.StippleFlag) ctx->_TriangleCaps |= DD_LINE_STIPPLE; - if (ctx->Line.Width != 1.0) - ctx->_TriangleCaps |= DD_LINE_WIDTH; } /* diff --git a/src/mesa/main/stencil.h b/src/mesa/main/stencil.h index 38a7183a81..b772bfd6e6 100644 --- a/src/mesa/main/stencil.h +++ b/src/mesa/main/stencil.h @@ -32,8 +32,9 @@ #define STENCIL_H -#include "mtypes.h" +#include "glheader.h" +struct gl_context; extern void GLAPIENTRY _mesa_ClearStencil( GLint s ); diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c index 4647a9c440..a8bffe416d 100644 --- a/src/mesa/main/texenvprogram.c +++ b/src/mesa/main/texenvprogram.c @@ -310,9 +310,10 @@ static GLuint translate_tex_src_bit( GLbitfield bit ) static GLbitfield get_fp_input_mask( struct gl_context *ctx ) { /* _NEW_PROGRAM */ - const GLboolean vertexShader = (ctx->Shader.CurrentProgram && - ctx->Shader.CurrentProgram->LinkStatus && - ctx->Shader.CurrentProgram->VertexProgram); + const GLboolean vertexShader = + (ctx->Shader.CurrentVertexProgram && + ctx->Shader.CurrentVertexProgram->LinkStatus && + ctx->Shader.CurrentVertexProgram->VertexProgram); const GLboolean vertexProgram = ctx->VertexProgram._Enabled; GLbitfield fp_inputs = 0x0; @@ -377,7 +378,7 @@ static GLbitfield get_fp_input_mask( struct gl_context *ctx ) * validation (see additional comments in state.c). */ if (vertexShader) - vprog = ctx->Shader.CurrentProgram->VertexProgram; + vprog = ctx->Shader.CurrentVertexProgram->VertexProgram; else vprog = ctx->VertexProgram.Current; diff --git a/src/mesa/main/texfetch.c b/src/mesa/main/texfetch.c index aa3a6961b6..372ef2654a 100644 --- a/src/mesa/main/texfetch.c +++ b/src/mesa/main/texfetch.c @@ -823,17 +823,11 @@ void _mesa_set_fetch_functions(struct gl_texture_image *texImage, GLuint dims) { ASSERT(dims == 1 || dims == 2 || dims == 3); - ASSERT(texImage->TexFormat); - if (!texImage->FetchTexelf) { - texImage->FetchTexelf = - _mesa_get_texel_fetch_func(texImage->TexFormat, dims); - } + texImage->FetchTexelf = + _mesa_get_texel_fetch_func(texImage->TexFormat, dims); - /* now check if we need to use a float/chan adaptor */ - if (!texImage->FetchTexelc) { - texImage->FetchTexelc = fetch_texel_float_to_chan; - } + texImage->FetchTexelc = fetch_texel_float_to_chan; ASSERT(texImage->FetchTexelc); ASSERT(texImage->FetchTexelf); diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 30d1062a41..879ac529a0 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -35,6 +35,7 @@ #include "context.h" #include "formats.h" #include "image.h" +#include "pack.h" #include "texgetimage.h" #include "teximage.h" diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index bc66e5d76e..060f34b7f9 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -596,7 +596,8 @@ _mesa_free_texture_image_data(struct gl_context *ctx, * Free the texture image structure and the associated image data. */ void -_mesa_delete_texture_image( struct gl_context *ctx, struct gl_texture_image *texImage ) +_mesa_delete_texture_image(struct gl_context *ctx, + struct gl_texture_image *texImage) { /* Free texImage->Data and/or any other driver-specific texture * image storage. @@ -635,7 +636,8 @@ _mesa_is_proxy_texture(GLenum target) /** - * Get the texture object that corresponds to the target of the given texture unit. + * Get the texture object that corresponds to the target of the given + * texture unit. * * \param ctx GL context. * \param texUnit texture unit. @@ -646,7 +648,8 @@ _mesa_is_proxy_texture(GLenum target) * \sa gl_texture_unit. */ struct gl_texture_object * -_mesa_select_tex_object(struct gl_context *ctx, const struct gl_texture_unit *texUnit, +_mesa_select_tex_object(struct gl_context *ctx, + const struct gl_texture_unit *texUnit, GLenum target) { switch (target) { @@ -723,7 +726,8 @@ _mesa_get_current_tex_object(struct gl_context *ctx, GLenum target) * \return pointer to the texture image structure, or NULL on failure. */ struct gl_texture_image * -_mesa_select_tex_image(struct gl_context *ctx, const struct gl_texture_object *texObj, +_mesa_select_tex_image(struct gl_context *ctx, + const struct gl_texture_object *texObj, GLenum target, GLint level) { const GLuint face = _mesa_tex_target_to_face(target); @@ -883,6 +887,45 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target) } +/** + * Return number of dimensions per mipmap level for the given texture target. + */ +static GLint +get_texture_dimensions(GLenum target) +{ + switch (target) { + case GL_TEXTURE_1D: + case GL_PROXY_TEXTURE_1D: + return 1; + case GL_TEXTURE_2D: + case GL_TEXTURE_RECTANGLE: + case GL_TEXTURE_CUBE_MAP: + case GL_PROXY_TEXTURE_2D: + case GL_PROXY_TEXTURE_RECTANGLE: + case GL_PROXY_TEXTURE_CUBE_MAP: + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + case GL_TEXTURE_1D_ARRAY: + case GL_PROXY_TEXTURE_1D_ARRAY: + return 2; + case GL_TEXTURE_3D: + case GL_PROXY_TEXTURE_3D: + case GL_TEXTURE_2D_ARRAY: + case GL_PROXY_TEXTURE_2D_ARRAY: + return 3; + default: + _mesa_problem(NULL, "invalid target 0x%x in get_texture_dimensions()", + target); + return 2; + } +} + + + #if 000 /* not used anymore */ /* @@ -988,6 +1031,7 @@ clear_teximage_fields(struct gl_texture_image *img) * \param depth image depth. * \param border image border. * \param internalFormat internal format. + * \param format the actual hardware format (one of MESA_FORMAT_*) * * Fills in the fields of \p img with the given information. * Note: width, height and depth include the border. @@ -996,9 +1040,10 @@ void _mesa_init_teximage_fields(struct gl_context *ctx, GLenum target, struct gl_texture_image *img, GLsizei width, GLsizei height, GLsizei depth, - GLint border, GLenum internalFormat) + GLint border, GLenum internalFormat, + gl_format format) { - GLint i; + GLint i, dims; ASSERT(img); ASSERT(width >= 0); @@ -1069,8 +1114,11 @@ _mesa_init_teximage_fields(struct gl_context *ctx, GLenum target, img->DepthScale = (GLfloat) img->Depth; } - img->FetchTexelc = NULL; - img->FetchTexelf = NULL; + img->TexFormat = format; + + dims = get_texture_dimensions(target); + + _mesa_set_fetch_functions(img, dims); } @@ -1084,7 +1132,8 @@ _mesa_init_teximage_fields(struct gl_context *ctx, GLenum target, * fields are cleared so that its parent object will test incomplete. */ void -_mesa_clear_texture_image(struct gl_context *ctx, struct gl_texture_image *texImage) +_mesa_clear_texture_image(struct gl_context *ctx, + struct gl_texture_image *texImage) { ctx->Driver.FreeTexImageData(ctx, texImage); clear_teximage_fields(texImage); @@ -1230,14 +1279,24 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, static GLboolean target_can_be_compressed(struct gl_context *ctx, GLenum target) { - return (((target == GL_TEXTURE_2D || target == GL_PROXY_TEXTURE_2D)) - || ((ctx->Extensions.ARB_texture_cube_map && - (target == GL_PROXY_TEXTURE_CUBE_MAP || - (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z)))) - || ((ctx->Extensions.MESA_texture_array && - ((target == GL_PROXY_TEXTURE_2D_ARRAY_EXT) || - (target == GL_TEXTURE_2D_ARRAY_EXT))))); + switch (target) { + case GL_TEXTURE_2D: + case GL_PROXY_TEXTURE_2D: + return GL_TRUE; + case GL_PROXY_TEXTURE_CUBE_MAP: + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + return ctx->Extensions.ARB_texture_cube_map; + case GL_PROXY_TEXTURE_2D_ARRAY_EXT: + case GL_TEXTURE_2D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array; + default: + return GL_FALSE; + } } @@ -1245,12 +1304,12 @@ target_can_be_compressed(struct gl_context *ctx, GLenum target) * Test the glTexImage[123]D() parameters for errors. * * \param ctx GL context. + * \param dimensions texture image dimensions (must be 1, 2 or 3). * \param target texture target given by the user. * \param level image level given by the user. * \param internalFormat internal format given by the user. * \param format pixel data format given by the user. * \param type pixel data type given by the user. - * \param dimensions texture image dimensions (must be 1, 2 or 3). * \param width image width given by the user. * \param height image height given by the user. * \param depth image depth given by the user. @@ -1259,14 +1318,14 @@ target_can_be_compressed(struct gl_context *ctx, GLenum target) * \return GL_TRUE if an error was detected, or GL_FALSE if no errors. * * Verifies each of the parameters against the constants specified in - * __struct gl_contextRec::Const and the supported extensions, and according to the - * OpenGL specification. + * __struct gl_contextRec::Const and the supported extensions, and according + * to the OpenGL specification. */ static GLboolean -texture_error_check( struct gl_context *ctx, GLenum target, +texture_error_check( struct gl_context *ctx, + GLuint dimensions, GLenum target, GLint level, GLint internalFormat, GLenum format, GLenum type, - GLuint dimensions, GLint width, GLint height, GLint depth, GLint border ) { @@ -1392,11 +1451,15 @@ texture_error_check( struct gl_context *ctx, GLenum target, /* Check incoming image format and type */ if (!_mesa_is_legal_format_and_type(ctx, format, type)) { - /* Yes, generate GL_INVALID_OPERATION, not GL_INVALID_ENUM, if there - * is a type/format mismatch. See 1.2 spec page 94, sec 3.6.4. + /* Normally, GL_INVALID_OPERATION is generated by a format/type + * mismatch (see the 1.2 spec page 94, sec 3.6.4.). But with the + * GL_EXT_texture_integer extension, some combinations should generate + * GL_INVALID_ENUM instead (grr!). */ if (!isProxy) { - _mesa_error(ctx, GL_INVALID_OPERATION, + GLenum error = _mesa_is_integer_format(format) + ? GL_INVALID_ENUM : GL_INVALID_OPERATION; + _mesa_error(ctx, error, "glTexImage%dD(incompatible format 0x%x, type 0x%x)", dimensions, format, type); } @@ -1482,6 +1545,18 @@ texture_error_check( struct gl_context *ctx, GLenum target, } } + /* additional checks for integer textures */ + if (ctx->Extensions.EXT_texture_integer && + (_mesa_is_integer_format(format) != + _mesa_is_integer_format(internalFormat))) { + if (!isProxy) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glTexImage%dD(integer/non-integer format mismatch)", + dimensions); + } + return GL_TRUE; + } + /* if we get here, the parameters are OK */ return GL_FALSE; } @@ -1506,8 +1581,8 @@ texture_error_check( struct gl_context *ctx, GLenum target, * \return GL_TRUE if an error was detected, or GL_FALSE if no errors. * * Verifies each of the parameters against the constants specified in - * __struct gl_contextRec::Const and the supported extensions, and according to the - * OpenGL specification. + * __struct gl_contextRec::Const and the supported extensions, and according + * to the OpenGL specification. */ static GLboolean subtexture_error_check( struct gl_context *ctx, GLuint dimensions, @@ -1588,7 +1663,12 @@ subtexture_error_check( struct gl_context *ctx, GLuint dimensions, } if (!_mesa_is_legal_format_and_type(ctx, format, type)) { - _mesa_error(ctx, GL_INVALID_ENUM, + /* As with the glTexImage2D check above, the error code here + * depends on texture integer. + */ + GLenum error = _mesa_is_integer_format(format) + ? GL_INVALID_OPERATION : GL_INVALID_ENUM; + _mesa_error(ctx, error, "glTexSubImage%dD(incompatible format 0x%x, type 0x%x)", dimensions, format, type); return GL_TRUE; @@ -1701,8 +1781,8 @@ subtexture_error_check2( struct gl_context *ctx, GLuint dimensions, * \return GL_TRUE if an error was detected, or GL_FALSE if no errors. * * Verifies each of the parameters against the constants specified in - * __struct gl_contextRec::Const and the supported extensions, and according to the - * OpenGL specification. + * __struct gl_contextRec::Const and the supported extensions, and according + * to the OpenGL specification. */ static GLboolean copytexture_error_check( struct gl_context *ctx, GLuint dimensions, @@ -2073,6 +2153,19 @@ copytexsubimage_error_check2( struct gl_context *ctx, GLuint dimensions, } } + /* If copying into an integer texture, the source buffer must also be + * integer-valued. + */ + if (_mesa_is_format_integer_color(teximage->TexFormat)) { + struct gl_renderbuffer *rb = ctx->ReadBuffer->_ColorReadBuffer; + if (!_mesa_is_format_integer_color(rb->Format)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glCopyTexSubImage%dD(source buffer is not integer format)", + dimensions); + return GL_TRUE; + } + } + /* if we get here, the parameters are OK */ return GL_FALSE; } @@ -2213,13 +2306,14 @@ override_internal_format(GLenum internalFormat, GLint width, GLint height) * for efficient texture memory layout/allocation. In particular, this * comes up during automatic mipmap generation. */ -void +gl_format _mesa_choose_texture_format(struct gl_context *ctx, struct gl_texture_object *texObj, - struct gl_texture_image *texImage, GLenum target, GLint level, GLenum internalFormat, GLenum format, GLenum type) { + gl_format f; + /* see if we've already chosen a format for the previous level */ if (level > 0) { struct gl_texture_image *prevImage = @@ -2231,15 +2325,15 @@ _mesa_choose_texture_format(struct gl_context *ctx, prevImage->Width > 0 && prevImage->InternalFormat == internalFormat) { /* use the same format */ - texImage->TexFormat = prevImage->TexFormat; - return; + ASSERT(prevImage->TexFormat != MESA_FORMAT_NONE); + return prevImage->TexFormat; } } /* choose format from scratch */ - texImage->TexFormat = ctx->Driver.ChooseTextureFormat(ctx, internalFormat, - format, type); - ASSERT(texImage->TexFormat != MESA_FORMAT_NONE); + f = ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type); + ASSERT(f != MESA_FORMAT_NONE); + return f; } @@ -2270,8 +2364,8 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat, struct gl_texture_image *texImage; const GLuint face = _mesa_tex_target_to_face(target); - if (texture_error_check(ctx, target, level, internalFormat, - format, type, 1, width, 1, 1, border)) { + if (texture_error_check(ctx, 1, target, level, internalFormat, + format, type, width, 1, 1, border)) { return; /* error was recorded */ } @@ -2286,19 +2380,22 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat, _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D"); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); - clear_teximage_fields(texImage); /* not really needed, but helpful */ + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, format, + type); + _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); + border, internalFormat, + texFormat); /* Give the texture to the driver. <pixels> may be null. */ ASSERT(ctx->Driver.TexImage1D); @@ -2306,10 +2403,6 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat, width, border, format, type, pixels, &ctx->Unpack, texObj, texImage); - ASSERT(texImage->TexFormat); - - _mesa_set_fetch_functions(texImage, 1); - check_gen_mipmap(ctx, target, texObj, level); update_fbo_texture(ctx, texObj, face, level); @@ -2325,8 +2418,8 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat, /* Proxy texture: check for errors and update proxy state */ struct gl_texture_image *texImage; texImage = _mesa_get_proxy_tex_image(ctx, target, level); - if (texture_error_check(ctx, target, level, internalFormat, - format, type, 1, width, 1, 1, border)) { + if (texture_error_check(ctx, 1, target, level, internalFormat, + format, type, width, 1, 1, border)) { /* when error, clear all proxy texture image parameters */ if (texImage) clear_teximage_fields(texImage); @@ -2335,12 +2428,12 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat, /* no error, set the tex image parameters */ struct gl_texture_object *texObj = _mesa_get_current_tex_object(ctx, target); - ASSERT(texImage); - _mesa_init_teximage_fields(ctx, target, texImage, - width, 1, 1, - border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); + gl_format texFormat = _mesa_choose_texture_format(ctx, texObj, target, + level, + internalFormat, + format, type); + _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, + border, internalFormat, texFormat); } } else { @@ -2381,8 +2474,8 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, struct gl_texture_image *texImage; const GLuint face = _mesa_tex_target_to_face(target); - if (texture_error_check(ctx, target, level, internalFormat, - format, type, 2, width, height, 1, border)) { + if (texture_error_check(ctx, 2, target, level, internalFormat, + format, type, width, height, 1, border)) { return; /* error was recorded */ } @@ -2397,18 +2490,20 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D"); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); - clear_teximage_fields(texImage); /* not really needed, but helpful */ - _mesa_init_teximage_fields(ctx, target, texImage, - width, height, 1, - border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, format, + type); + + _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1, + border, internalFormat, texFormat); /* Give the texture to the driver. <pixels> may be null. */ ASSERT(ctx->Driver.TexImage2D); @@ -2416,10 +2511,6 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, width, height, border, format, type, pixels, &ctx->Unpack, texObj, texImage); - ASSERT(texImage->TexFormat); - - _mesa_set_fetch_functions(texImage, 2); - check_gen_mipmap(ctx, target, texObj, level); update_fbo_texture(ctx, texObj, face, level); @@ -2441,8 +2532,8 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, /* Proxy texture: check for errors and update proxy state */ struct gl_texture_image *texImage; texImage = _mesa_get_proxy_tex_image(ctx, target, level); - if (texture_error_check(ctx, target, level, internalFormat, - format, type, 2, width, height, 1, border)) { + if (texture_error_check(ctx, 2, target, level, internalFormat, + format, type, width, height, 1, border)) { /* when error, clear all proxy texture image parameters */ if (texImage) clear_teximage_fields(texImage); @@ -2451,11 +2542,12 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, /* no error, set the tex image parameters */ struct gl_texture_object *texObj = _mesa_get_current_tex_object(ctx, target); - _mesa_init_teximage_fields(ctx, target, texImage, - width, height, 1, - border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); + gl_format texFormat = _mesa_choose_texture_format(ctx, texObj, + target, level, + internalFormat, + format, type); + _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1, + border, internalFormat, texFormat); } } else { @@ -2495,8 +2587,8 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat, struct gl_texture_image *texImage; const GLuint face = _mesa_tex_target_to_face(target); - if (texture_error_check(ctx, target, level, (GLint) internalFormat, - format, type, 3, width, height, depth, border)) { + if (texture_error_check(ctx, 3, target, level, (GLint) internalFormat, + format, type, width, height, depth, border)) { return; /* error was recorded */ } @@ -2511,18 +2603,19 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat, _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D"); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); - clear_teximage_fields(texImage); /* not really needed, but helpful */ + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, format, + type); _mesa_init_teximage_fields(ctx, target, texImage, width, height, depth, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); + border, internalFormat, texFormat); /* Give the texture to the driver. <pixels> may be null. */ ASSERT(ctx->Driver.TexImage3D); @@ -2530,10 +2623,6 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat, width, height, depth, border, format, type, pixels, &ctx->Unpack, texObj, texImage); - ASSERT(texImage->TexFormat); - - _mesa_set_fetch_functions(texImage, 3); - check_gen_mipmap(ctx, target, texObj, level); update_fbo_texture(ctx, texObj, face, level); @@ -2551,8 +2640,8 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat, /* Proxy texture: check for errors and update proxy state */ struct gl_texture_image *texImage; texImage = _mesa_get_proxy_tex_image(ctx, target, level); - if (texture_error_check(ctx, target, level, internalFormat, - format, type, 3, width, height, depth, border)) { + if (texture_error_check(ctx, 3, target, level, internalFormat, + format, type, width, height, depth, border)) { /* when error, clear all proxy texture image parameters */ if (texImage) clear_teximage_fields(texImage); @@ -2561,10 +2650,12 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat, /* no error, set the tex image parameters */ struct gl_texture_object *texObj = _mesa_get_current_tex_object(ctx, target); + gl_format texFormat = _mesa_choose_texture_format(ctx, texObj, + target, level, + internalFormat, + format, type); _mesa_init_teximage_fields(ctx, target, texImage, width, height, - depth, border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); + depth, border, internalFormat, texFormat); } } else { @@ -2841,27 +2932,25 @@ _mesa_CopyTexImage1D( GLenum target, GLint level, _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage1D"); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); - clear_teximage_fields(texImage); /* not really needed, but helpful */ - _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, - border, internalFormat); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, + GL_NONE); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, + border, internalFormat, texFormat); ASSERT(ctx->Driver.CopyTexImage1D); ctx->Driver.CopyTexImage1D(ctx, target, level, internalFormat, x, y, width, border); - ASSERT(texImage->TexFormat); - - _mesa_set_fetch_functions(texImage, 1); - check_gen_mipmap(ctx, target, texObj, level); update_fbo_texture(ctx, texObj, face, level); @@ -2910,28 +2999,25 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat, _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage2D"); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); - clear_teximage_fields(texImage); /* not really needed, but helpful */ - _mesa_init_teximage_fields(ctx, target, texImage, - width, height, 1, - border, internalFormat); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, + GL_NONE); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1, + border, internalFormat, texFormat); ASSERT(ctx->Driver.CopyTexImage2D); ctx->Driver.CopyTexImage2D(ctx, target, level, internalFormat, x, y, width, height, border); - ASSERT(texImage->TexFormat); - - _mesa_set_fetch_functions(texImage, 2); - check_gen_mipmap(ctx, target, texObj, level); update_fbo_texture(ctx, texObj, face, level); @@ -3413,16 +3499,19 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level, _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage1D"); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); - _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, - border, internalFormat); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, + GL_NONE); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, + border, internalFormat, texFormat); ASSERT(ctx->Driver.CompressedTexImage1D); ctx->Driver.CompressedTexImage1D(ctx, target, level, @@ -3430,8 +3519,6 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level, imageSize, data, texObj, texImage); - _mesa_set_fetch_functions(texImage, 1); - check_gen_mipmap(ctx, target, texObj, level); /* state update */ @@ -3462,16 +3549,18 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level, /* store the teximage parameters */ struct gl_texture_object *texObj; struct gl_texture_image *texImage; + gl_format texFormat; texObj = _mesa_get_current_tex_object(ctx, target); _mesa_lock_texture(ctx, texObj); { texImage = _mesa_select_tex_image(ctx, texObj, target, level); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, + GL_NONE); _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, - border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + border, internalFormat, texFormat); } _mesa_unlock_texture(ctx, texObj); } @@ -3539,16 +3628,19 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level, _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage2D"); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); - _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1, - border, internalFormat); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, + GL_NONE); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1, + border, internalFormat, texFormat); ASSERT(ctx->Driver.CompressedTexImage2D); ctx->Driver.CompressedTexImage2D(ctx, target, level, @@ -3556,8 +3648,6 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level, border, imageSize, data, texObj, texImage); - _mesa_set_fetch_functions(texImage, 2); - check_gen_mipmap(ctx, target, texObj, level); /* state update */ @@ -3590,16 +3680,18 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level, /* store the teximage parameters */ struct gl_texture_object *texObj; struct gl_texture_image *texImage; + gl_format texFormat; texObj = _mesa_get_current_tex_object(ctx, target); _mesa_lock_texture(ctx, texObj); { texImage = _mesa_select_tex_image(ctx, texObj, target, level); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, + GL_NONE); _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1, - border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + border, internalFormat, texFormat); } _mesa_unlock_texture(ctx, texObj); } @@ -3646,18 +3738,20 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level, _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage3D"); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, + GL_NONE); + _mesa_init_teximage_fields(ctx, target, texImage, width, height, depth, - border, internalFormat); - - /* Choose actual texture format */ - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + border, internalFormat, texFormat); ASSERT(ctx->Driver.CompressedTexImage3D); ctx->Driver.CompressedTexImage3D(ctx, target, level, @@ -3666,8 +3760,6 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level, border, imageSize, data, texObj, texImage); - _mesa_set_fetch_functions(texImage, 3); - check_gen_mipmap(ctx, target, texObj, level); /* state update */ @@ -3698,16 +3790,19 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level, /* store the teximage parameters */ struct gl_texture_object *texObj; struct gl_texture_image *texImage; + gl_format texFormat; texObj = _mesa_get_current_tex_object(ctx, target); _mesa_lock_texture(ctx, texObj); { texImage = _mesa_select_tex_image(ctx, texObj, target, level); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, + GL_NONE); _mesa_init_teximage_fields(ctx, target, texImage, width, height, - depth, border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + depth, border, internalFormat, + texFormat); } _mesa_unlock_texture(ctx, texObj); } @@ -3825,5 +3920,3 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, compressed_tex_sub_image(3, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); } - - diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h index d4317c301b..5bb9d492e9 100644 --- a/src/mesa/main/teximage.h +++ b/src/mesa/main/teximage.h @@ -33,6 +33,7 @@ #include "mtypes.h" +#include "formats.h" extern void * @@ -69,13 +70,13 @@ extern void _mesa_init_teximage_fields(struct gl_context *ctx, GLenum target, struct gl_texture_image *img, GLsizei width, GLsizei height, GLsizei depth, - GLint border, GLenum internalFormat); + GLint border, GLenum internalFormat, + gl_format format); -extern void +extern gl_format _mesa_choose_texture_format(struct gl_context *ctx, struct gl_texture_object *texObj, - struct gl_texture_image *texImage, GLenum target, GLint level, GLenum internalFormat, GLenum format, GLenum type); diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index e08df0f7fe..72dbf10cc4 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -181,12 +181,11 @@ finish_texture_init(struct gl_context *ctx, GLenum target, * \param texObj the texture object to delete. */ void -_mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *texObj ) +_mesa_delete_texture_object(struct gl_context *ctx, + struct gl_texture_object *texObj) { GLuint i, face; - (void) ctx; - /* Set Target to an invalid value. With some assertions elsewhere * we can try to detect possible use of deleted textures. */ @@ -197,9 +196,9 @@ _mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *t /* free the texture images */ for (face = 0; face < 6; face++) { for (i = 0; i < MAX_TEXTURE_LEVELS; i++) { - if (texObj->Image[face][i]) { - _mesa_delete_texture_image( ctx, texObj->Image[face][i] ); - } + if (texObj->Image[face][i]) { + _mesa_delete_texture_image( ctx, texObj->Image[face][i] ); + } } } @@ -212,7 +211,6 @@ _mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *t - /** * Copy texture object state from one texture object to another. * Use for glPush/PopAttrib. @@ -257,7 +255,7 @@ _mesa_copy_texture_object( struct gl_texture_object *dest, /** - * Clear all texture images of the given texture object. + * Free all texture images of the given texture object. * * \param ctx GL context. * \param t texture object. @@ -265,7 +263,8 @@ _mesa_copy_texture_object( struct gl_texture_object *dest, * \sa _mesa_clear_texture_image(). */ void -_mesa_clear_texture_object(struct gl_context *ctx, struct gl_texture_object *texObj) +_mesa_clear_texture_object(struct gl_context *ctx, + struct gl_texture_object *texObj) { GLuint i, j; @@ -380,15 +379,20 @@ _mesa_reference_texobj(struct gl_texture_object **ptr, * * \note For debug purposes only. */ -#if 0 static void -incomplete(const struct gl_texture_object *t, const char *why) +incomplete(const struct gl_texture_object *t, const char *fmt, ...) { - printf("Texture Obj %d incomplete because: %s\n", t->Name, why); -} -#else -#define incomplete(t, why) +#if 0 + va_list args; + char s[100]; + + va_start(args, fmt); + vsnprintf(s, sizeof(s), fmt, args); + va_end(args); + + printf("Texture Obj %d incomplete because: %s\n", t->Name, s); #endif +} /** @@ -416,18 +420,14 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, * value. */ if ((baseLevel < 0) || (baseLevel >= MAX_TEXTURE_LEVELS)) { - char s[100]; - _mesa_snprintf(s, sizeof(s), "base level = %d is invalid", baseLevel); - incomplete(t, s); + incomplete(t, "base level = %d is invalid", baseLevel); t->_Complete = GL_FALSE; return; } /* Always need the base level image */ if (!t->Image[0][baseLevel]) { - char s[100]; - _mesa_snprintf(s, sizeof(s), "Image[baseLevel=%d] == NULL", baseLevel); - incomplete(t, s); + incomplete(t, "Image[baseLevel=%d] == NULL", baseLevel); t->_Complete = GL_FALSE; return; } @@ -448,7 +448,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, maxLevels = ctx->Const.MaxTextureLevels; } else if ((t->Target == GL_TEXTURE_2D) || - (t->Target == GL_TEXTURE_2D_ARRAY_EXT)) { + (t->Target == GL_TEXTURE_2D_ARRAY_EXT)) { maxLog2 = MAX2(t->Image[0][baseLevel]->WidthLog2, t->Image[0][baseLevel]->HeightLog2); maxLevels = ctx->Const.MaxTextureLevels; @@ -488,13 +488,13 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, const GLuint h = t->Image[0][baseLevel]->Height2; GLuint face; for (face = 1; face < 6; face++) { - if (t->Image[face][baseLevel] == NULL || - t->Image[face][baseLevel]->Width2 != w || - t->Image[face][baseLevel]->Height2 != h) { - t->_Complete = GL_FALSE; - incomplete(t, "Cube face missing or mismatched size"); - return; - } + if (t->Image[face][baseLevel] == NULL || + t->Image[face][baseLevel]->Width2 != w || + t->Image[face][baseLevel]->Height2 != h) { + t->_Complete = GL_FALSE; + incomplete(t, "Cube face missing or mismatched size"); + return; + } } } @@ -594,7 +594,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, GLuint width = t->Image[0][baseLevel]->Width2; GLuint height = t->Image[0][baseLevel]->Height2; GLuint depth = t->Image[0][baseLevel]->Depth2; - for (i = baseLevel + 1; i < maxLevels; i++) { + for (i = baseLevel + 1; i < maxLevels; i++) { if (width > 1) { width /= 2; } @@ -640,7 +640,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, /* make sure 6 cube faces are consistant */ GLuint width = t->Image[0][baseLevel]->Width2; GLuint height = t->Image[0][baseLevel]->Height2; - for (i = baseLevel + 1; i < maxLevels; i++) { + for (i = baseLevel + 1; i < maxLevels; i++) { if (width > 1) { width /= 2; } @@ -663,8 +663,8 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, return; } /* check that all six images have same size */ - if (t->Image[face][i]->Width2!=width || - t->Image[face][i]->Height2!=height) { + if (t->Image[face][i]->Width2 != width || + t->Image[face][i]->Height2 != height) { t->_Complete = GL_FALSE; incomplete(t, "CubeMap Image[n][i] bad size"); return; @@ -719,6 +719,7 @@ _mesa_get_fallback_texture(struct gl_context *ctx) static GLubyte texels[8 * 8][4]; struct gl_texture_object *texObj; struct gl_texture_image *texImage; + gl_format texFormat; GLuint i; for (i = 0; i < 8 * 8; i++) { @@ -737,12 +738,13 @@ _mesa_get_fallback_texture(struct gl_context *ctx) /* create level[0] texture image */ texImage = _mesa_get_tex_image(ctx, texObj, GL_TEXTURE_2D, 0); + texFormat = ctx->Driver.ChooseTextureFormat(ctx, GL_RGBA, GL_RGBA, + GL_UNSIGNED_BYTE); + /* init the image fields */ _mesa_init_teximage_fields(ctx, GL_TEXTURE_2D, texImage, - 8, 8, 1, 0, GL_RGBA); + 8, 8, 1, 0, GL_RGBA, texFormat); - texImage->TexFormat = - ctx->Driver.ChooseTextureFormat(ctx, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE); ASSERT(texImage->TexFormat != MESA_FORMAT_NONE); /* set image data */ @@ -830,7 +832,8 @@ _mesa_GenTextures( GLsizei n, GLuint *textures ) * read framebuffer. If so, Unbind it. */ static void -unbind_texobj_from_fbo(struct gl_context *ctx, struct gl_texture_object *texObj) +unbind_texobj_from_fbo(struct gl_context *ctx, + struct gl_texture_object *texObj) { const GLuint n = (ctx->DrawBuffer == ctx->ReadBuffer) ? 1 : 2; GLuint i; @@ -855,7 +858,8 @@ unbind_texobj_from_fbo(struct gl_context *ctx, struct gl_texture_object *texObj) * unbind it if so (revert to default textures). */ static void -unbind_texobj_from_texunits(struct gl_context *ctx, struct gl_texture_object *texObj) +unbind_texobj_from_texunits(struct gl_context *ctx, + struct gl_texture_object *texObj) { GLuint u, tex; @@ -903,7 +907,7 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *textures) = _mesa_lookup_texture(ctx, textures[i]); if (delObj) { - _mesa_lock_texture(ctx, delObj); + _mesa_lock_texture(ctx, delObj); /* Check if texture is bound to any framebuffer objects. * If so, unbind. @@ -916,7 +920,7 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *textures) */ unbind_texobj_from_texunits(ctx, delObj); - _mesa_unlock_texture(ctx, delObj); + _mesa_unlock_texture(ctx, delObj); ctx->NewState |= _NEW_TEXTURE; @@ -1028,7 +1032,7 @@ _mesa_BindTexture( GLenum target, GLuint texName ) } else { /* if this is a new texture id, allocate a texture object now */ - newTexObj = (*ctx->Driver.NewTextureObject)(ctx, texName, target); + newTexObj = (*ctx->Driver.NewTextureObject)(ctx, texName, target); if (!newTexObj) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindTexture"); return; @@ -1111,6 +1115,8 @@ _mesa_PrioritizeTextures( GLsizei n, const GLuint *texName, ctx->NewState |= _NEW_TEXTURE; } + + /** * See if textures are loaded in texture memory. * @@ -1156,23 +1162,24 @@ _mesa_AreTexturesResident(GLsizei n, const GLuint *texName, if (!ctx->Driver.IsTextureResident || ctx->Driver.IsTextureResident(ctx, t)) { /* The texture is resident */ - if (!allResident) - residences[i] = GL_TRUE; + if (!allResident) + residences[i] = GL_TRUE; } else { /* The texture is not resident */ if (allResident) { - allResident = GL_FALSE; - for (j = 0; j < i; j++) - residences[j] = GL_TRUE; - } - residences[i] = GL_FALSE; + allResident = GL_FALSE; + for (j = 0; j < i; j++) + residences[j] = GL_TRUE; + } + residences[i] = GL_FALSE; } } return allResident; } + /** * See if a name corresponds to a texture. * @@ -1233,5 +1240,3 @@ _mesa_unlock_context_textures( struct gl_context *ctx ) } /*@}*/ - - diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 1b0d760fae..f4d77189f2 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -496,23 +496,28 @@ update_texture_state( struct gl_context *ctx ) struct gl_vertex_program *vprog = NULL; GLbitfield enabledFragUnits = 0x0; - if (ctx->Shader.CurrentProgram && - ctx->Shader.CurrentProgram->LinkStatus) { - fprog = ctx->Shader.CurrentProgram->FragmentProgram; - vprog = ctx->Shader.CurrentProgram->VertexProgram; + if (ctx->Shader.CurrentVertexProgram && + ctx->Shader.CurrentVertexProgram->LinkStatus) { + vprog = ctx->Shader.CurrentVertexProgram->VertexProgram; + } else if (ctx->VertexProgram._Enabled) { + /* XXX enable this if/when non-shader vertex programs get + * texture fetches: + vprog = ctx->VertexProgram.Current; + */ } - else { - if (ctx->FragmentProgram._Enabled) { - fprog = ctx->FragmentProgram.Current; - } - if (ctx->VertexProgram._Enabled) { - /* XXX enable this if/when non-shader vertex programs get - * texture fetches: - vprog = ctx->VertexProgram.Current; - */ - } + + if (ctx->Shader.CurrentFragmentProgram && + ctx->Shader.CurrentFragmentProgram->LinkStatus) { + fprog = ctx->Shader.CurrentFragmentProgram->FragmentProgram; + } + else if (ctx->FragmentProgram._Enabled) { + fprog = ctx->FragmentProgram.Current; } + /* FINISHME: Geometry shader texture accesses should also be considered + * FINISHME: here. + */ + /* TODO: only set this if there are actual changes */ ctx->NewState |= _NEW_TEXTURE; diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index f5f94bbf1a..89677c519e 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -58,7 +58,9 @@ #include "image.h" #include "macros.h" #include "mipmap.h" +#include "pack.h" #include "imports.h" +#include "pack.h" #include "texcompress.h" #include "texcompress_fxt1.h" #include "texcompress_s3tc.h" @@ -313,9 +315,9 @@ make_temp_float_image(struct gl_context *ctx, GLuint dims, GLint srcWidth, GLint srcHeight, GLint srcDepth, GLenum srcFormat, GLenum srcType, const GLvoid *srcAddr, - const struct gl_pixelstore_attrib *srcPacking) + const struct gl_pixelstore_attrib *srcPacking, + GLbitfield transferOps) { - GLuint transferOps = ctx->_ImageTransferState; GLfloat *tempImage; const GLint components = _mesa_components_in_format(logicalBaseFormat); const GLint srcStride = @@ -417,6 +419,115 @@ make_temp_float_image(struct gl_context *ctx, GLuint dims, /** + * Make temporary image with uint pixel values. Used for unsigned + * integer-valued textures. + */ +static GLuint * +make_temp_uint_image(struct gl_context *ctx, GLuint dims, + GLenum logicalBaseFormat, + GLenum textureBaseFormat, + GLint srcWidth, GLint srcHeight, GLint srcDepth, + GLenum srcFormat, GLenum srcType, + const GLvoid *srcAddr, + const struct gl_pixelstore_attrib *srcPacking) +{ + GLuint *tempImage; + const GLint components = _mesa_components_in_format(logicalBaseFormat); + const GLint srcStride = + _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, srcType); + GLuint *dst; + GLint img, row; + + ASSERT(dims >= 1 && dims <= 3); + + ASSERT(logicalBaseFormat == GL_RGBA || + logicalBaseFormat == GL_RGB || + logicalBaseFormat == GL_RG || + logicalBaseFormat == GL_RED || + logicalBaseFormat == GL_LUMINANCE_ALPHA || + logicalBaseFormat == GL_LUMINANCE || + logicalBaseFormat == GL_INTENSITY || + logicalBaseFormat == GL_ALPHA); + + ASSERT(textureBaseFormat == GL_RGBA || + textureBaseFormat == GL_RGB || + textureBaseFormat == GL_RG || + textureBaseFormat == GL_RED || + textureBaseFormat == GL_LUMINANCE_ALPHA || + textureBaseFormat == GL_LUMINANCE || + textureBaseFormat == GL_ALPHA); + + tempImage = (GLuint *) malloc(srcWidth * srcHeight * srcDepth + * components * sizeof(GLuint)); + if (!tempImage) + return NULL; + + dst = tempImage; + for (img = 0; img < srcDepth; img++) { + const GLubyte *src + = (const GLubyte *) _mesa_image_address(dims, srcPacking, srcAddr, + srcWidth, srcHeight, + srcFormat, srcType, + img, 0, 0); + for (row = 0; row < srcHeight; row++) { + _mesa_unpack_color_span_uint(ctx, srcWidth, logicalBaseFormat, + dst, srcFormat, srcType, src, + srcPacking); + dst += srcWidth * components; + src += srcStride; + } + } + + if (logicalBaseFormat != textureBaseFormat) { + /* more work */ + GLint texComponents = _mesa_components_in_format(textureBaseFormat); + GLint logComponents = _mesa_components_in_format(logicalBaseFormat); + GLuint *newImage; + GLint i, n; + GLubyte map[6]; + + /* we only promote up to RGB, RGBA and LUMINANCE_ALPHA formats for now */ + ASSERT(textureBaseFormat == GL_RGB || textureBaseFormat == GL_RGBA || + textureBaseFormat == GL_LUMINANCE_ALPHA); + + /* The actual texture format should have at least as many components + * as the logical texture format. + */ + ASSERT(texComponents >= logComponents); + + newImage = (GLuint *) malloc(srcWidth * srcHeight * srcDepth + * texComponents * sizeof(GLuint)); + if (!newImage) { + free(tempImage); + return NULL; + } + + compute_component_mapping(logicalBaseFormat, textureBaseFormat, map); + + n = srcWidth * srcHeight * srcDepth; + for (i = 0; i < n; i++) { + GLint k; + for (k = 0; k < texComponents; k++) { + GLint j = map[k]; + if (j == ZERO) + newImage[i * texComponents + k] = 0.0F; + else if (j == ONE) + newImage[i * texComponents + k] = 1.0F; + else + newImage[i * texComponents + k] = tempImage[i * logComponents + j]; + } + } + + free(tempImage); + tempImage = newImage; + } + + return tempImage; +} + + + +/** * Make a temporary (color) texture image with GLchan components. * Apply all needed pixel unpacking and pixel transfer operations. * Note that there are both logicalBaseFormat and textureBaseFormat parameters. @@ -2083,7 +2194,8 @@ _mesa_texstore_unorm1616(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, + ctx->_ImageTransferState); const GLfloat *src = tempImage; GLint img, row, col; if (!tempImage) @@ -2157,7 +2269,8 @@ _mesa_texstore_r16(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, + ctx->_ImageTransferState); const GLfloat *src = tempImage; GLint img, row, col; if (!tempImage) @@ -2214,7 +2327,8 @@ _mesa_texstore_rgba_16(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, + ctx->_ImageTransferState); const GLfloat *src = tempImage; GLint img, row, col; if (!tempImage) @@ -2280,7 +2394,8 @@ _mesa_texstore_signed_rgba_16(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, + ctx->_ImageTransferState); const GLfloat *src = tempImage; const GLuint comps = _mesa_get_format_bytes(dstFormat) / 2; GLint img, row, col; @@ -2661,7 +2776,8 @@ _mesa_texstore_signed_r8(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, + ctx->_ImageTransferState); const GLfloat *srcRow = tempImage; GLint img, row, col; if (!tempImage) @@ -2705,7 +2821,8 @@ _mesa_texstore_signed_rg88(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, + ctx->_ImageTransferState); const GLfloat *srcRow = tempImage; GLint img, row, col; if (!tempImage) @@ -2749,7 +2866,8 @@ _mesa_texstore_signed_rgbx8888(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, + ctx->_ImageTransferState); const GLfloat *srcRow = tempImage; GLint img, row, col; if (!tempImage) @@ -2861,7 +2979,8 @@ _mesa_texstore_signed_rgba8888(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, + ctx->_ImageTransferState); const GLfloat *srcRow = tempImage; GLint img, row, col; if (!tempImage) @@ -3169,7 +3288,8 @@ _mesa_texstore_rgba_float32(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, + ctx->_ImageTransferState); const GLfloat *srcRow = tempImage; GLint bytesPerRow; GLint img, row; @@ -3238,7 +3358,8 @@ _mesa_texstore_rgba_float16(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, + ctx->_ImageTransferState); const GLfloat *src = tempImage; GLint img, row; if (!tempImage) @@ -3282,8 +3403,10 @@ _mesa_texstore_rgba_int8(TEXSTORE_PARAMS) baseInternalFormat == GL_INTENSITY); ASSERT(texelBytes == components * sizeof(GLbyte)); - if (!ctx->_ImageTransferState && - !srcPacking->SwapBytes && + /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply + * to integer formats. + */ + if (!srcPacking->SwapBytes && baseInternalFormat == srcFormat && srcType == GL_BYTE) { /* simple memcpy path */ @@ -3301,7 +3424,7 @@ _mesa_texstore_rgba_int8(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, 0x0); const GLfloat *src = tempImage; GLint img, row; if (!tempImage) @@ -3345,10 +3468,12 @@ _mesa_texstore_rgba_int16(TEXSTORE_PARAMS) baseInternalFormat == GL_INTENSITY); ASSERT(texelBytes == components * sizeof(GLshort)); - if (!ctx->_ImageTransferState && - !srcPacking->SwapBytes && + /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply + * to integer formats. + */ + if (!srcPacking->SwapBytes && baseInternalFormat == srcFormat && - srcType == GL_INT) { + srcType == GL_SHORT) { /* simple memcpy path */ memcpy_texture(ctx, dims, dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset, @@ -3364,7 +3489,7 @@ _mesa_texstore_rgba_int16(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, 0x0); const GLfloat *src = tempImage; GLint img, row; if (!tempImage) @@ -3408,8 +3533,10 @@ _mesa_texstore_rgba_int32(TEXSTORE_PARAMS) baseInternalFormat == GL_INTENSITY); ASSERT(texelBytes == components * sizeof(GLint)); - if (!ctx->_ImageTransferState && - !srcPacking->SwapBytes && + /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply + * to integer formats. + */ + if (!srcPacking->SwapBytes && baseInternalFormat == srcFormat && srcType == GL_INT) { /* simple memcpy path */ @@ -3427,7 +3554,7 @@ _mesa_texstore_rgba_int32(TEXSTORE_PARAMS) baseFormat, srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, - srcPacking); + srcPacking, 0x0); const GLfloat *src = tempImage; GLint img, row; if (!tempImage) @@ -3471,8 +3598,10 @@ _mesa_texstore_rgba_uint8(TEXSTORE_PARAMS) baseInternalFormat == GL_INTENSITY); ASSERT(texelBytes == components * sizeof(GLubyte)); - if (!ctx->_ImageTransferState && - !srcPacking->SwapBytes && + /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply + * to integer formats. + */ + if (!srcPacking->SwapBytes && baseInternalFormat == srcFormat && srcType == GL_UNSIGNED_BYTE) { /* simple memcpy path */ @@ -3485,13 +3614,11 @@ _mesa_texstore_rgba_uint8(TEXSTORE_PARAMS) } else { /* general path */ - const GLfloat *tempImage = make_temp_float_image(ctx, dims, - baseInternalFormat, - baseFormat, - srcWidth, srcHeight, srcDepth, - srcFormat, srcType, srcAddr, - srcPacking); - const GLfloat *src = tempImage; + const GLuint *tempImage = + make_temp_uint_image(ctx, dims, baseInternalFormat, baseFormat, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, srcPacking); + const GLuint *src = tempImage; GLint img, row; if (!tempImage) return GL_FALSE; @@ -3504,7 +3631,7 @@ _mesa_texstore_rgba_uint8(TEXSTORE_PARAMS) GLubyte *dstTexel = (GLubyte *) dstRow; GLint i; for (i = 0; i < srcWidth * components; i++) { - dstTexel[i] = (GLubyte) src[i]; + dstTexel[i] = (GLubyte) CLAMP(src[i], 0, 0xff); } dstRow += dstRowStride; src += srcWidth * components; @@ -3534,8 +3661,10 @@ _mesa_texstore_rgba_uint16(TEXSTORE_PARAMS) baseInternalFormat == GL_INTENSITY); ASSERT(texelBytes == components * sizeof(GLushort)); - if (!ctx->_ImageTransferState && - !srcPacking->SwapBytes && + /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply + * to integer formats. + */ + if (!srcPacking->SwapBytes && baseInternalFormat == srcFormat && srcType == GL_UNSIGNED_SHORT) { /* simple memcpy path */ @@ -3548,13 +3677,11 @@ _mesa_texstore_rgba_uint16(TEXSTORE_PARAMS) } else { /* general path */ - const GLfloat *tempImage = make_temp_float_image(ctx, dims, - baseInternalFormat, - baseFormat, - srcWidth, srcHeight, srcDepth, - srcFormat, srcType, srcAddr, - srcPacking); - const GLfloat *src = tempImage; + const GLuint *tempImage = + make_temp_uint_image(ctx, dims, baseInternalFormat, baseFormat, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, srcPacking); + const GLuint *src = tempImage; GLint img, row; if (!tempImage) return GL_FALSE; @@ -3567,7 +3694,7 @@ _mesa_texstore_rgba_uint16(TEXSTORE_PARAMS) GLushort *dstTexel = (GLushort *) dstRow; GLint i; for (i = 0; i < srcWidth * components; i++) { - dstTexel[i] = (GLushort) src[i]; + dstTexel[i] = (GLushort) CLAMP(src[i], 0, 0xffff); } dstRow += dstRowStride; src += srcWidth * components; @@ -3597,8 +3724,10 @@ _mesa_texstore_rgba_uint32(TEXSTORE_PARAMS) baseInternalFormat == GL_INTENSITY); ASSERT(texelBytes == components * sizeof(GLuint)); - if (!ctx->_ImageTransferState && - !srcPacking->SwapBytes && + /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply + * to integer formats. + */ + if (!srcPacking->SwapBytes && baseInternalFormat == srcFormat && srcType == GL_UNSIGNED_INT) { /* simple memcpy path */ @@ -3611,13 +3740,11 @@ _mesa_texstore_rgba_uint32(TEXSTORE_PARAMS) } else { /* general path */ - const GLfloat *tempImage = make_temp_float_image(ctx, dims, - baseInternalFormat, - baseFormat, - srcWidth, srcHeight, srcDepth, - srcFormat, srcType, srcAddr, - srcPacking); - const GLfloat *src = tempImage; + const GLuint *tempImage = + make_temp_uint_image(ctx, dims, baseInternalFormat, baseFormat, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, srcPacking); + const GLuint *src = tempImage; GLint img, row; if (!tempImage) return GL_FALSE; @@ -3630,7 +3757,7 @@ _mesa_texstore_rgba_uint32(TEXSTORE_PARAMS) GLuint *dstTexel = (GLuint *) dstRow; GLint i; for (i = 0; i < srcWidth * components; i++) { - dstTexel[i] = (GLuint) src[i]; + dstTexel[i] = src[i]; } dstRow += dstRowStride; src += srcWidth * components; @@ -3953,14 +4080,14 @@ _mesa_validate_pbo_teximage(struct gl_context *ctx, GLuint dimensions, } if (!_mesa_validate_pbo_access(dimensions, unpack, width, height, depth, format, type, pixels)) { - _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access"); + _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access)"); return NULL; } buf = (GLubyte *) ctx->Driver.MapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT, GL_READ_ONLY_ARB, unpack->BufferObj); if (!buf) { - _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(PBO is mapped"); + _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(PBO is mapped)"); return NULL; } @@ -3990,7 +4117,7 @@ _mesa_validate_pbo_compressed_teximage(struct gl_context *ctx, if ((const GLubyte *) pixels + imageSize > ((const GLubyte *) 0) + packing->BufferObj->Size) { /* out of bounds read! */ - _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access"); + _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access)"); return NULL; } @@ -4321,7 +4448,8 @@ _mesa_store_texsubimage3d(struct gl_context *ctx, GLenum target, GLint level, * Fallback for Driver.CompressedTexImage1D() */ void -_mesa_store_compressed_teximage1d(struct gl_context *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage1d(struct gl_context *ctx, + GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLsizei imageSize, const GLvoid *data, @@ -4344,7 +4472,8 @@ _mesa_store_compressed_teximage1d(struct gl_context *ctx, GLenum target, GLint l * Fallback for Driver.CompressedTexImage2D() */ void -_mesa_store_compressed_teximage2d(struct gl_context *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage2d(struct gl_context *ctx, + GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLsizei imageSize, const GLvoid *data, @@ -4388,7 +4517,8 @@ _mesa_store_compressed_teximage2d(struct gl_context *ctx, GLenum target, GLint l * Fallback for Driver.CompressedTexImage3D() */ void -_mesa_store_compressed_teximage3d(struct gl_context *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage3d(struct gl_context *ctx, + GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c index 9359db1892..d61856d0eb 100644 --- a/src/mesa/main/uniforms.c +++ b/src/mesa/main/uniforms.c @@ -682,6 +682,40 @@ _mesa_get_uniformiv(struct gl_context *ctx, GLuint program, GLint location, /** + * Called via glGetUniformuiv(). + * New in GL_EXT_gpu_shader4, OpenGL 3.0 + * \sa _mesa_get_uniformfv, only difference is a cast. + */ +static void +_mesa_get_uniformuiv(struct gl_context *ctx, GLuint program, GLint location, + GLuint *params) +{ + struct gl_program *prog; + GLint paramPos; + GLint offset; + + split_location_offset(&location, &offset); + + lookup_uniform_parameter(ctx, program, location, &prog, ¶mPos); + + if (prog) { + const struct gl_program_parameter *p = + &prog->Parameters->Parameters[paramPos]; + GLint rows, cols, i, j, k; + + get_uniform_rows_cols(p, &rows, &cols); + + k = 0; + for (i = 0; i < rows; i++) { + for (j = 0; j < cols; j++ ) { + params[k++] = (GLuint) prog->Parameters->ParameterValues[paramPos+i][j]; + } + } + } +} + + +/** * Called via glGetUniformLocation(). * * The return value will encode two values, the uniform location and an @@ -1227,7 +1261,7 @@ void GLAPIENTRY _mesa_Uniform1fARB(GLint location, GLfloat v0) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, &v0, GL_FLOAT); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, &v0, GL_FLOAT); } void GLAPIENTRY @@ -1237,7 +1271,7 @@ _mesa_Uniform2fARB(GLint location, GLfloat v0, GLfloat v1) GLfloat v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_FLOAT_VEC2); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_FLOAT_VEC2); } void GLAPIENTRY @@ -1248,7 +1282,7 @@ _mesa_Uniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_FLOAT_VEC3); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_FLOAT_VEC3); } void GLAPIENTRY @@ -1261,14 +1295,14 @@ _mesa_Uniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_FLOAT_VEC4); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_FLOAT_VEC4); } void GLAPIENTRY _mesa_Uniform1iARB(GLint location, GLint v0) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, &v0, GL_INT); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, &v0, GL_INT); } void GLAPIENTRY @@ -1278,7 +1312,7 @@ _mesa_Uniform2iARB(GLint location, GLint v0, GLint v1) GLint v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_INT_VEC2); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_INT_VEC2); } void GLAPIENTRY @@ -1289,7 +1323,7 @@ _mesa_Uniform3iARB(GLint location, GLint v0, GLint v1, GLint v2) v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_INT_VEC3); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_INT_VEC3); } void GLAPIENTRY @@ -1301,63 +1335,63 @@ _mesa_Uniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_INT_VEC4); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_INT_VEC4); } void GLAPIENTRY _mesa_Uniform1fvARB(GLint location, GLsizei count, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_FLOAT); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_FLOAT); } void GLAPIENTRY _mesa_Uniform2fvARB(GLint location, GLsizei count, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_FLOAT_VEC2); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_FLOAT_VEC2); } void GLAPIENTRY _mesa_Uniform3fvARB(GLint location, GLsizei count, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_FLOAT_VEC3); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_FLOAT_VEC3); } void GLAPIENTRY _mesa_Uniform4fvARB(GLint location, GLsizei count, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_FLOAT_VEC4); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_FLOAT_VEC4); } void GLAPIENTRY _mesa_Uniform1ivARB(GLint location, GLsizei count, const GLint * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_INT); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_INT); } void GLAPIENTRY _mesa_Uniform2ivARB(GLint location, GLsizei count, const GLint * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_INT_VEC2); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_INT_VEC2); } void GLAPIENTRY _mesa_Uniform3ivARB(GLint location, GLsizei count, const GLint * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_INT_VEC3); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_INT_VEC3); } void GLAPIENTRY _mesa_Uniform4ivARB(GLint location, GLsizei count, const GLint * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_INT_VEC4); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_INT_VEC4); } @@ -1366,7 +1400,7 @@ void GLAPIENTRY _mesa_Uniform1ui(GLint location, GLuint v0) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, &v0, GL_UNSIGNED_INT); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, &v0, GL_UNSIGNED_INT); } void GLAPIENTRY @@ -1376,7 +1410,7 @@ _mesa_Uniform2ui(GLint location, GLuint v0, GLuint v1) GLuint v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_UNSIGNED_INT_VEC2); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_UNSIGNED_INT_VEC2); } void GLAPIENTRY @@ -1387,7 +1421,7 @@ _mesa_Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_UNSIGNED_INT_VEC3); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_UNSIGNED_INT_VEC3); } void GLAPIENTRY @@ -1399,35 +1433,35 @@ _mesa_Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_UNSIGNED_INT_VEC4); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_UNSIGNED_INT_VEC4); } void GLAPIENTRY _mesa_Uniform1uiv(GLint location, GLsizei count, const GLuint *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_UNSIGNED_INT); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_UNSIGNED_INT); } void GLAPIENTRY _mesa_Uniform2uiv(GLint location, GLsizei count, const GLuint *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_UNSIGNED_INT_VEC2); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_UNSIGNED_INT_VEC2); } void GLAPIENTRY _mesa_Uniform3uiv(GLint location, GLsizei count, const GLuint *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_UNSIGNED_INT_VEC3); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_UNSIGNED_INT_VEC3); } void GLAPIENTRY _mesa_Uniform4uiv(GLint location, GLsizei count, const GLuint *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_UNSIGNED_INT_VEC4); + _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_UNSIGNED_INT_VEC4); } @@ -1437,7 +1471,7 @@ _mesa_UniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram, + _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram, 2, 2, location, count, transpose, value); } @@ -1446,7 +1480,7 @@ _mesa_UniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram, + _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram, 3, 3, location, count, transpose, value); } @@ -1455,7 +1489,7 @@ _mesa_UniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram, + _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram, 4, 4, location, count, transpose, value); } @@ -1468,7 +1502,7 @@ _mesa_UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram, + _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram, 2, 3, location, count, transpose, value); } @@ -1477,7 +1511,7 @@ _mesa_UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram, + _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram, 3, 2, location, count, transpose, value); } @@ -1486,7 +1520,7 @@ _mesa_UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram, + _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram, 2, 4, location, count, transpose, value); } @@ -1495,7 +1529,7 @@ _mesa_UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram, + _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram, 4, 2, location, count, transpose, value); } @@ -1504,7 +1538,7 @@ _mesa_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram, + _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram, 3, 4, location, count, transpose, value); } @@ -1513,7 +1547,7 @@ _mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram, + _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram, 4, 3, location, count, transpose, value); } @@ -1534,6 +1568,16 @@ _mesa_GetUniformivARB(GLhandleARB program, GLint location, GLint *params) } +/* GL3 */ +void GLAPIENTRY +_mesa_GetUniformuiv(GLhandleARB program, GLint location, GLuint *params) +{ + GET_CURRENT_CONTEXT(ctx); + _mesa_get_uniformuiv(ctx, program, location, params); +} + + + GLint GLAPIENTRY _mesa_GetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name) { @@ -1603,13 +1647,16 @@ _mesa_init_shader_uniform_dispatch(struct _glapi_table *exec) /* OpenGL 3.0 */ /* XXX finish dispatch */ - (void) _mesa_Uniform1ui; - (void) _mesa_Uniform2ui; - (void) _mesa_Uniform3ui; - (void) _mesa_Uniform4ui; - (void) _mesa_Uniform1uiv; - (void) _mesa_Uniform2uiv; - (void) _mesa_Uniform3uiv; - (void) _mesa_Uniform4uiv; + SET_Uniform1uiEXT(exec, _mesa_Uniform1ui); + SET_Uniform2uiEXT(exec, _mesa_Uniform2ui); + SET_Uniform3uiEXT(exec, _mesa_Uniform3ui); + SET_Uniform4uiEXT(exec, _mesa_Uniform4ui); + SET_Uniform1uivEXT(exec, _mesa_Uniform1uiv); + SET_Uniform2uivEXT(exec, _mesa_Uniform2uiv); + SET_Uniform3uivEXT(exec, _mesa_Uniform3uiv); + SET_Uniform4uivEXT(exec, _mesa_Uniform4uiv); + SET_GetUniformuivEXT(exec, _mesa_GetUniformuiv); + + #endif /* FEATURE_GL */ } diff --git a/src/mesa/main/uniforms.h b/src/mesa/main/uniforms.h index 6447436305..54abb08ba5 100644 --- a/src/mesa/main/uniforms.h +++ b/src/mesa/main/uniforms.h @@ -148,6 +148,9 @@ _mesa_GetUniformfvARB(GLhandleARB, GLint, GLfloat *); extern void GLAPIENTRY _mesa_GetUniformivARB(GLhandleARB, GLint, GLint *); +extern void GLAPIENTRY +_mesa_GetUniformuiv(GLhandleARB program, GLint location, GLuint *params); + extern GLint GLAPIENTRY _mesa_GetUniformLocationARB(GLhandleARB, const GLcharARB *); diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index 56749355cd..340c3fe1d3 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -31,6 +31,7 @@ #include "enable.h" #include "enums.h" #include "hash.h" +#include "image.h" #include "macros.h" #include "mtypes.h" #include "varray.h" @@ -38,39 +39,143 @@ #include "main/dispatch.h" +/** Used to do error checking for GL_EXT_vertex_array_bgra */ +#define BGRA_OR_4 5 + + +/** Used to indicate which GL datatypes are accepted by each of the + * glVertex/Color/Attrib/EtcPointer() functions. + */ +#define BOOL_BIT 0x1 +#define BYTE_BIT 0x2 +#define UNSIGNED_BYTE_BIT 0x4 +#define SHORT_BIT 0x8 +#define UNSIGNED_SHORT_BIT 0x10 +#define INT_BIT 0x20 +#define UNSIGNED_INT_BIT 0x40 +#define HALF_BIT 0x80 +#define FLOAT_BIT 0x100 +#define DOUBLE_BIT 0x200 +#define FIXED_BIT 0x400 + + + +/** Convert GL datatype enum into a <type>_BIT value seen above */ +static GLbitfield +type_to_bit(const struct gl_context *ctx, GLenum type) +{ + switch (type) { + case GL_BOOL: + return BOOL_BIT; + case GL_BYTE: + return BYTE_BIT; + case GL_UNSIGNED_BYTE: + return UNSIGNED_BYTE_BIT; + case GL_SHORT: + return SHORT_BIT; + case GL_UNSIGNED_SHORT: + return UNSIGNED_SHORT_BIT; + case GL_INT: + return INT_BIT; + case GL_UNSIGNED_INT: + return UNSIGNED_INT_BIT; + case GL_HALF_FLOAT: + if (ctx->Extensions.ARB_half_float_vertex) + return HALF_BIT; + else + return 0x0; + case GL_FLOAT: + return FLOAT_BIT; + case GL_DOUBLE: + return DOUBLE_BIT; + case GL_FIXED: + return FIXED_BIT; + default: + return 0; + } +} + + /** - * Set the fields of a vertex array. - * Also do an error check for GL_ARB_vertex_array_object: check that - * all arrays reside in VBOs when using a vertex array object. + * Do error checking and update state for glVertex/Color/TexCoord/...Pointer + * functions. * + * \param func name of calling function used for error reporting * \param array the array to update * \param dirtyBit which bit to set in ctx->Array.NewState for this array - * \param elementSize size of each array element, in bytes + * \param legalTypes bitmask of *_BIT above indicating legal datatypes + * \param sizeMin min allowable size value + * \param sizeMax max allowable size value (may also be BGRA_OR_4) * \param size components per element (1, 2, 3 or 4) * \param type datatype of each component (GL_FLOAT, GL_INT, etc) - * \param format either GL_RGBA or GL_BGRA * \param stride stride between elements, in elements * \param normalized are integer types converted to floats in [-1, 1]? + * \param integer integer-valued values (will not be normalized to [-1,1]) * \param ptr the address (or offset inside VBO) of the array data */ static void -update_array(struct gl_context *ctx, struct gl_client_array *array, - GLbitfield dirtyBit, GLsizei elementSize, - GLint size, GLenum type, GLenum format, - GLsizei stride, GLboolean normalized, const GLvoid *ptr) +update_array(struct gl_context *ctx, + const char *func, + struct gl_client_array *array, + GLbitfield dirtyBit, GLbitfield legalTypesMask, + GLint sizeMin, GLint sizeMax, + GLint size, GLenum type, GLsizei stride, + GLboolean normalized, GLboolean integer, + const GLvoid *ptr) { - ASSERT(format == GL_RGBA || format == GL_BGRA); + GLbitfield typeBit; + GLsizei elementSize; + GLenum format = GL_RGBA; + + if (ctx->API != API_OPENGLES) { + /* fixed point arrays / data is only allowed with OpenGL ES 1.x */ + legalTypesMask &= ~FIXED_BIT; + } + + typeBit = type_to_bit(ctx, type); + if (typeBit == 0x0 || (typeBit & legalTypesMask) == 0x0) { + _mesa_error(ctx, GL_INVALID_ENUM, "%s(type = %s)", + func, _mesa_lookup_enum_by_nr(type)); + return; + } + + /* Do size parameter checking. + * If sizeMax = BGRA_OR_4 it means that size = GL_BGRA is legal and + * must be handled specially. + */ + if (ctx->Extensions.EXT_vertex_array_bgra && + sizeMax == BGRA_OR_4 && + size == GL_BGRA) { + if (type != GL_UNSIGNED_BYTE) { + _mesa_error(ctx, GL_INVALID_VALUE, "%s(GL_BGRA/GLubyte)", func); + return; + } + format = GL_BGRA; + size = 4; + } + else if (size < sizeMin || size > sizeMax || size > 4) { + _mesa_error(ctx, GL_INVALID_VALUE, "%s(size=%d)", func, size); + return; + } + + ASSERT(size <= 4); + + if (stride < 0) { + _mesa_error( ctx, GL_INVALID_VALUE, "%s(stride=%d)", func, stride ); + return; + } if (ctx->Array.ArrayObj->VBOonly && ctx->Array.ArrayBufferObj->Name == 0) { /* GL_ARB_vertex_array_object requires that all arrays reside in VBOs. * Generate GL_INVALID_OPERATION if that's not true. */ - _mesa_error(ctx, GL_INVALID_OPERATION, - "glVertex/Normal/EtcPointer(non-VBO array)"); + _mesa_error(ctx, GL_INVALID_OPERATION, "%s(non-VBO array)", func); return; } + elementSize = _mesa_sizeof_type(type) * size; + array->Size = size; array->Type = type; array->Format = format; @@ -91,258 +196,81 @@ update_array(struct gl_context *ctx, struct gl_client_array *array, void GLAPIENTRY _mesa_VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) { - GLsizei elementSize; + GLbitfield legalTypes = (SHORT_BIT | INT_BIT | FLOAT_BIT | + DOUBLE_BIT | HALF_BIT | FIXED_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (size < 2 || size > 4) { - _mesa_error( ctx, GL_INVALID_VALUE, "glVertexPointer(size)" ); - return; - } - if (stride < 0) { - _mesa_error( ctx, GL_INVALID_VALUE, "glVertexPointer(stride)" ); - return; - } - - if (MESA_VERBOSE&(VERBOSE_VARRAY|VERBOSE_API)) - _mesa_debug(ctx, "glVertexPointer( sz %d type %s stride %d )\n", size, - _mesa_lookup_enum_by_nr( type ), stride); + if (ctx->API == API_OPENGLES) + legalTypes |= BYTE_BIT; - /* always need to check that <type> is legal */ - switch (type) { - case GL_SHORT: - elementSize = size * sizeof(GLshort); - break; - case GL_INT: - elementSize = size * sizeof(GLint); - break; - case GL_FLOAT: - elementSize = size * sizeof(GLfloat); - break; - case GL_DOUBLE: - elementSize = size * sizeof(GLdouble); - break; - case GL_HALF_FLOAT: - elementSize = size * sizeof(GLhalfARB); - break; -#if FEATURE_fixedpt - case GL_FIXED: - elementSize = size * sizeof(GLfixed); - break; -#endif -#if FEATURE_vertex_array_byte - case GL_BYTE: - elementSize = size * sizeof(GLbyte); - break; -#endif - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glVertexPointer(type=%s)", - _mesa_lookup_enum_by_nr(type)); - return; - } - - update_array(ctx, &ctx->Array.ArrayObj->Vertex, _NEW_ARRAY_VERTEX, - elementSize, size, type, GL_RGBA, stride, GL_FALSE, ptr); + update_array(ctx, "glVertexPointer", + &ctx->Array.ArrayObj->Vertex, _NEW_ARRAY_VERTEX, + legalTypes, 2, 4, + size, type, stride, GL_FALSE, GL_FALSE, ptr); } void GLAPIENTRY _mesa_NormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr ) { - GLsizei elementSize; + const GLbitfield legalTypes = (BYTE_BIT | SHORT_BIT | INT_BIT | + HALF_BIT | FLOAT_BIT | DOUBLE_BIT | + FIXED_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (stride < 0) { - _mesa_error( ctx, GL_INVALID_VALUE, "glNormalPointer(stride)" ); - return; - } - - if (MESA_VERBOSE&(VERBOSE_VARRAY|VERBOSE_API)) - _mesa_debug(ctx, "glNormalPointer( type %s stride %d )\n", - _mesa_lookup_enum_by_nr( type ), stride); - - switch (type) { - case GL_BYTE: - elementSize = 3 * sizeof(GLbyte); - break; - case GL_SHORT: - elementSize = 3 * sizeof(GLshort); - break; - case GL_INT: - elementSize = 3 * sizeof(GLint); - break; - case GL_FLOAT: - elementSize = 3 * sizeof(GLfloat); - break; - case GL_DOUBLE: - elementSize = 3 * sizeof(GLdouble); - break; - case GL_HALF_FLOAT: - elementSize = 3 * sizeof(GLhalfARB); - break; -#if FEATURE_fixedpt - case GL_FIXED: - elementSize = 3 * sizeof(GLfixed); - break; -#endif - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glNormalPointer(type=%s)", - _mesa_lookup_enum_by_nr(type)); - return; - } - - update_array(ctx, &ctx->Array.ArrayObj->Normal, _NEW_ARRAY_NORMAL, - elementSize, 3, type, GL_RGBA, stride, GL_TRUE, ptr); + update_array(ctx, "glNormalPointer", + &ctx->Array.ArrayObj->Normal, _NEW_ARRAY_NORMAL, + legalTypes, 3, 3, + 3, type, stride, GL_TRUE, GL_FALSE, ptr); } void GLAPIENTRY _mesa_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) { - GLsizei elementSize; - GLenum format; + const GLbitfield legalTypes = (BYTE_BIT | UNSIGNED_BYTE_BIT | + SHORT_BIT | UNSIGNED_SHORT_BIT | + INT_BIT | UNSIGNED_INT_BIT | + HALF_BIT | FLOAT_BIT | DOUBLE_BIT | + FIXED_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (size < 3 || size > 4) { - if (!ctx->Extensions.EXT_vertex_array_bgra || size != GL_BGRA) { - _mesa_error(ctx, GL_INVALID_VALUE, "glColorPointer(size)"); - return; - } - } - if (stride < 0) { - _mesa_error( ctx, GL_INVALID_VALUE, "glColorPointer(stride)" ); - return; - } - - if (MESA_VERBOSE&(VERBOSE_VARRAY|VERBOSE_API)) - _mesa_debug(ctx, "glColorPointer( sz %d type %s stride %d )\n", size, - _mesa_lookup_enum_by_nr( type ), stride); - - if (size == GL_BGRA) { - if (type != GL_UNSIGNED_BYTE) { - _mesa_error(ctx, GL_INVALID_VALUE, "glColorPointer(GL_BGRA/GLubyte)"); - return; - } - format = GL_BGRA; - size = 4; - } - else { - format = GL_RGBA; - } - - switch (type) { - case GL_BYTE: - elementSize = size * sizeof(GLbyte); - break; - case GL_UNSIGNED_BYTE: - elementSize = size * sizeof(GLubyte); - break; - case GL_SHORT: - elementSize = size * sizeof(GLshort); - break; - case GL_UNSIGNED_SHORT: - elementSize = size * sizeof(GLushort); - break; - case GL_INT: - elementSize = size * sizeof(GLint); - break; - case GL_UNSIGNED_INT: - elementSize = size * sizeof(GLuint); - break; - case GL_FLOAT: - elementSize = size * sizeof(GLfloat); - break; - case GL_DOUBLE: - elementSize = size * sizeof(GLdouble); - break; - case GL_HALF_FLOAT: - elementSize = size * sizeof(GLhalfARB); - break; -#if FEATURE_fixedpt - case GL_FIXED: - elementSize = size * sizeof(GLfixed); - break; -#endif - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glColorPointer(type=%s)", - _mesa_lookup_enum_by_nr(type)); - return; - } - - update_array(ctx, &ctx->Array.ArrayObj->Color, _NEW_ARRAY_COLOR0, - elementSize, size, type, format, stride, GL_TRUE, ptr); + update_array(ctx, "glColorPointer", + &ctx->Array.ArrayObj->Color, _NEW_ARRAY_COLOR0, + legalTypes, 3, BGRA_OR_4, + size, type, stride, GL_TRUE, GL_FALSE, ptr); } void GLAPIENTRY _mesa_FogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid *ptr) { - GLint elementSize; + const GLbitfield legalTypes = (HALF_BIT | FLOAT_BIT | DOUBLE_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (stride < 0) { - _mesa_error( ctx, GL_INVALID_VALUE, "glFogCoordPointer(stride)" ); - return; - } - - switch (type) { - case GL_FLOAT: - elementSize = sizeof(GLfloat); - break; - case GL_DOUBLE: - elementSize = sizeof(GLdouble); - break; - case GL_HALF_FLOAT: - elementSize = sizeof(GLhalfARB); - break; - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glFogCoordPointer(type)" ); - return; - } - - update_array(ctx, &ctx->Array.ArrayObj->FogCoord, _NEW_ARRAY_FOGCOORD, - elementSize, 1, type, GL_RGBA, stride, GL_FALSE, ptr); + update_array(ctx, "glFogCoordPointer", + &ctx->Array.ArrayObj->FogCoord, _NEW_ARRAY_FOGCOORD, + legalTypes, 1, 1, + 1, type, stride, GL_FALSE, GL_FALSE, ptr); } void GLAPIENTRY _mesa_IndexPointer(GLenum type, GLsizei stride, const GLvoid *ptr) { - GLsizei elementSize; + const GLbitfield legalTypes = (UNSIGNED_BYTE_BIT | SHORT_BIT | INT_BIT | + FLOAT_BIT | DOUBLE_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (stride < 0) { - _mesa_error( ctx, GL_INVALID_VALUE, "glIndexPointer(stride)" ); - return; - } - - switch (type) { - case GL_UNSIGNED_BYTE: - elementSize = sizeof(GLubyte); - break; - case GL_SHORT: - elementSize = sizeof(GLshort); - break; - case GL_INT: - elementSize = sizeof(GLint); - break; - case GL_FLOAT: - elementSize = sizeof(GLfloat); - break; - case GL_DOUBLE: - elementSize = sizeof(GLdouble); - break; - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glIndexPointer(type)" ); - return; - } - - update_array(ctx, &ctx->Array.ArrayObj->Index, _NEW_ARRAY_INDEX, - elementSize, 1, type, GL_RGBA, stride, GL_FALSE, ptr); + update_array(ctx, "glIndexPointer", + &ctx->Array.ArrayObj->Index, _NEW_ARRAY_INDEX, + legalTypes, 1, 1, + 1, type, stride, GL_FALSE, GL_FALSE, ptr); } @@ -350,74 +278,17 @@ void GLAPIENTRY _mesa_SecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) { - GLsizei elementSize; - GLenum format; + const GLbitfield legalTypes = (BYTE_BIT | UNSIGNED_BYTE_BIT | + SHORT_BIT | UNSIGNED_SHORT_BIT | + INT_BIT | UNSIGNED_INT_BIT | + HALF_BIT | FLOAT_BIT | DOUBLE_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (size != 3 && size != 4) { - if (!ctx->Extensions.EXT_vertex_array_bgra || size != GL_BGRA) { - _mesa_error(ctx, GL_INVALID_VALUE, "glSecondaryColorPointer(size)"); - return; - } - } - if (stride < 0) { - _mesa_error( ctx, GL_INVALID_VALUE, "glSecondaryColorPointer(stride)" ); - return; - } - - if (MESA_VERBOSE&(VERBOSE_VARRAY|VERBOSE_API)) - _mesa_debug(ctx, "glSecondaryColorPointer( sz %d type %s stride %d )\n", - size, _mesa_lookup_enum_by_nr( type ), stride); - - if (size == GL_BGRA) { - if (type != GL_UNSIGNED_BYTE) { - _mesa_error(ctx, GL_INVALID_VALUE, "glColorPointer(GL_BGRA/GLubyte)"); - return; - } - format = GL_BGRA; - size = 4; - } - else { - format = GL_RGBA; - } - - switch (type) { - case GL_BYTE: - elementSize = size * sizeof(GLbyte); - break; - case GL_UNSIGNED_BYTE: - elementSize = size * sizeof(GLubyte); - break; - case GL_SHORT: - elementSize = size * sizeof(GLshort); - break; - case GL_UNSIGNED_SHORT: - elementSize = size * sizeof(GLushort); - break; - case GL_INT: - elementSize = size * sizeof(GLint); - break; - case GL_UNSIGNED_INT: - elementSize = size * sizeof(GLuint); - break; - case GL_FLOAT: - elementSize = size * sizeof(GLfloat); - break; - case GL_DOUBLE: - elementSize = size * sizeof(GLdouble); - break; - case GL_HALF_FLOAT: - elementSize = size * sizeof(GLhalfARB); - break; - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glSecondaryColorPointer(type=%s)", - _mesa_lookup_enum_by_nr(type)); - return; - } - - update_array(ctx, &ctx->Array.ArrayObj->SecondaryColor, _NEW_ARRAY_COLOR1, - elementSize, size, type, format, stride, GL_TRUE, ptr); + update_array(ctx, "glSecondaryColorPointer", + &ctx->Array.ArrayObj->SecondaryColor, _NEW_ARRAY_COLOR1, + legalTypes, 3, BGRA_OR_4, + size, type, stride, GL_TRUE, GL_FALSE, ptr); } @@ -425,110 +296,59 @@ void GLAPIENTRY _mesa_TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) { - GLint elementSize; + GLbitfield legalTypes = (SHORT_BIT | INT_BIT | + HALF_BIT | FLOAT_BIT | DOUBLE_BIT); GET_CURRENT_CONTEXT(ctx); const GLuint unit = ctx->Array.ActiveTexture; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (size < 1 || size > 4) { - _mesa_error( ctx, GL_INVALID_VALUE, "glTexCoordPointer(size)" ); - return; - } - if (stride < 0) { - _mesa_error( ctx, GL_INVALID_VALUE, "glTexCoordPointer(stride)" ); - return; - } - - if (MESA_VERBOSE&(VERBOSE_VARRAY|VERBOSE_API)) - _mesa_debug(ctx, "glTexCoordPointer(unit %u sz %d type %s stride %d)\n", - unit, size, _mesa_lookup_enum_by_nr( type ), stride); - - /* always need to check that <type> is legal */ - switch (type) { - case GL_SHORT: - elementSize = size * sizeof(GLshort); - break; - case GL_INT: - elementSize = size * sizeof(GLint); - break; - case GL_FLOAT: - elementSize = size * sizeof(GLfloat); - break; - case GL_DOUBLE: - elementSize = size * sizeof(GLdouble); - break; - case GL_HALF_FLOAT: - elementSize = size * sizeof(GLhalfARB); - break; -#if FEATURE_fixedpt - case GL_FIXED: - elementSize = size * sizeof(GLfixed); - break; -#endif -#if FEATURE_vertex_array_byte - case GL_BYTE: - elementSize = size * sizeof(GLbyte); - break; -#endif - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glTexCoordPointer(type=%s)", - _mesa_lookup_enum_by_nr(type)); - return; - } + if (ctx->API == API_OPENGLES) + legalTypes |= BYTE_BIT; ASSERT(unit < Elements(ctx->Array.ArrayObj->TexCoord)); - update_array(ctx, &ctx->Array.ArrayObj->TexCoord[unit], + update_array(ctx, "glTexCoordPointer", + &ctx->Array.ArrayObj->TexCoord[unit], _NEW_ARRAY_TEXCOORD(unit), - elementSize, size, type, GL_RGBA, stride, GL_FALSE, ptr); + legalTypes, 1, 4, + size, type, stride, GL_FALSE, GL_FALSE, + ptr); } void GLAPIENTRY _mesa_EdgeFlagPointer(GLsizei stride, const GLvoid *ptr) { + const GLbitfield legalTypes = UNSIGNED_BYTE_BIT; + /* see table 2.4 edits in GL_EXT_gpu_shader4 spec: */ + const GLboolean integer = GL_TRUE; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (stride < 0) { - _mesa_error( ctx, GL_INVALID_VALUE, "glEdgeFlagPointer(stride)" ); - return; - } - - update_array(ctx, &ctx->Array.ArrayObj->EdgeFlag, _NEW_ARRAY_EDGEFLAG, - sizeof(GLboolean), 1, GL_UNSIGNED_BYTE, GL_RGBA, - stride, GL_FALSE, ptr); + update_array(ctx, "glEdgeFlagPointer", + &ctx->Array.ArrayObj->EdgeFlag, _NEW_ARRAY_EDGEFLAG, + legalTypes, 1, 1, + 1, GL_UNSIGNED_BYTE, stride, GL_FALSE, integer, ptr); } void GLAPIENTRY _mesa_PointSizePointer(GLenum type, GLsizei stride, const GLvoid *ptr) { - GLsizei elementSize; + const GLbitfield legalTypes = (FLOAT_BIT | FIXED_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (stride < 0) { - _mesa_error( ctx, GL_INVALID_VALUE, "glPointSizePointer(stride)" ); + if (ctx->API != API_OPENGLES) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glPointSizePointer(ES 1.x only)"); return; } - - switch (type) { - case GL_FLOAT: - elementSize = sizeof(GLfloat); - break; -#if FEATURE_fixedpt - case GL_FIXED: - elementSize = sizeof(GLfixed); - break; -#endif - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glPointSizePointer(type)" ); - return; - } - - update_array(ctx, &ctx->Array.ArrayObj->PointSize, _NEW_ARRAY_POINT_SIZE, - elementSize, 1, type, GL_RGBA, stride, GL_FALSE, ptr); + + update_array(ctx, "glPointSizePointer", + &ctx->Array.ArrayObj->PointSize, _NEW_ARRAY_POINT_SIZE, + legalTypes, 1, 1, + 1, type, stride, GL_FALSE, GL_FALSE, ptr); } @@ -543,9 +363,9 @@ void GLAPIENTRY _mesa_VertexAttribPointerNV(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) { + const GLbitfield legalTypes = (UNSIGNED_BYTE_BIT | SHORT_BIT | + FLOAT_BIT | DOUBLE_BIT); GLboolean normalized = GL_FALSE; - GLsizei elementSize; - GLenum format; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -554,60 +374,16 @@ _mesa_VertexAttribPointerNV(GLuint index, GLint size, GLenum type, return; } - if (size < 1 || size > 4) { - _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerNV(size)"); - return; - } - - if (stride < 0) { - _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerNV(stride)"); - return; - } - if (type == GL_UNSIGNED_BYTE && size != 4) { _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerNV(size!=4)"); return; } - if (size == GL_BGRA) { - if (type != GL_UNSIGNED_BYTE) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glVertexAttribPointerNV(GL_BGRA/type)"); - return; - } - - format = GL_BGRA; - size = 4; - normalized = GL_TRUE; - } - else { - format = GL_RGBA; - } - - /* check for valid 'type' and compute StrideB right away */ - switch (type) { - case GL_UNSIGNED_BYTE: - normalized = GL_TRUE; - elementSize = size * sizeof(GLubyte); - break; - case GL_SHORT: - elementSize = size * sizeof(GLshort); - break; - case GL_FLOAT: - elementSize = size * sizeof(GLfloat); - break; - case GL_DOUBLE: - elementSize = size * sizeof(GLdouble); - break; - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glVertexAttribPointerNV(type=%s)", - _mesa_lookup_enum_by_nr(type)); - return; - } - - update_array(ctx, &ctx->Array.ArrayObj->VertexAttrib[index], + update_array(ctx, "glVertexAttribPointerNV", + &ctx->Array.ArrayObj->VertexAttrib[index], _NEW_ARRAY_ATTRIB(index), - elementSize, size, type, format, stride, normalized, ptr); + legalTypes, 1, BGRA_OR_4, + size, type, stride, normalized, GL_FALSE, ptr); } #endif @@ -623,8 +399,11 @@ _mesa_VertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *ptr) { - GLsizei elementSize; - GLenum format; + const GLbitfield legalTypes = (BYTE_BIT | UNSIGNED_BYTE_BIT | + SHORT_BIT | UNSIGNED_SHORT_BIT | + INT_BIT | UNSIGNED_INT_BIT | + HALF_BIT | FLOAT_BIT | DOUBLE_BIT | + FIXED_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -633,99 +412,43 @@ _mesa_VertexAttribPointerARB(GLuint index, GLint size, GLenum type, return; } - if (size < 1 || size > 4) { - if (!ctx->Extensions.EXT_vertex_array_bgra || size != GL_BGRA) { - _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerARB(size)"); - return; - } - } - - if (stride < 0) { - _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerARB(stride)"); - return; - } - - if (size == GL_BGRA) { - if (type != GL_UNSIGNED_BYTE) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glVertexAttribPointerARB(GL_BGRA/type)"); - return; - } - if (normalized != GL_TRUE) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glVertexAttribPointerARB(GL_BGRA/normalized)"); - return; - } - - format = GL_BGRA; - size = 4; - } - else { - format = GL_RGBA; - } - - /* check for valid 'type' and compute StrideB right away */ - /* NOTE: more types are supported here than in the NV extension */ - switch (type) { - case GL_BYTE: - elementSize = size * sizeof(GLbyte); - break; - case GL_UNSIGNED_BYTE: - elementSize = size * sizeof(GLubyte); - break; - case GL_SHORT: - elementSize = size * sizeof(GLshort); - break; - case GL_UNSIGNED_SHORT: - elementSize = size * sizeof(GLushort); - break; - case GL_INT: - elementSize = size * sizeof(GLint); - break; - case GL_UNSIGNED_INT: - elementSize = size * sizeof(GLuint); - break; - case GL_FLOAT: - elementSize = size * sizeof(GLfloat); - break; - case GL_DOUBLE: - elementSize = size * sizeof(GLdouble); - break; - case GL_HALF_FLOAT: - elementSize = size * sizeof(GLhalfARB); - break; -#if FEATURE_fixedpt - case GL_FIXED: - elementSize = size * sizeof(GLfixed); - break; -#endif - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glVertexAttribPointerARB(type)" ); - return; - } - - update_array(ctx, &ctx->Array.ArrayObj->VertexAttrib[index], + update_array(ctx, "glVertexAttribPointer", + &ctx->Array.ArrayObj->VertexAttrib[index], _NEW_ARRAY_ATTRIB(index), - elementSize, size, type, format, stride, normalized, ptr); + legalTypes, 1, BGRA_OR_4, + size, type, stride, normalized, GL_FALSE, ptr); } #endif /** - * New in GL3: + * GL_EXT_gpu_shader4 / GL 3.0. * Set an integer-valued vertex attribute array. * Note that these arrays DO NOT alias the conventional GL vertex arrays * (position, normal, color, fog, texcoord, etc). */ void GLAPIENTRY _mesa_VertexAttribIPointer(GLuint index, GLint size, GLenum type, - GLboolean normalized, GLsizei stride, const GLvoid *ptr) { - /* NOTE: until we have integer-valued vertex attributes, just - * route this through the regular glVertexAttribPointer() function. - */ - _mesa_VertexAttribPointerARB(index, size, type, normalized, stride, ptr); + const GLbitfield legalTypes = (BYTE_BIT | UNSIGNED_BYTE_BIT | + SHORT_BIT | UNSIGNED_SHORT_BIT | + INT_BIT | UNSIGNED_INT_BIT); + const GLboolean normalized = GL_FALSE; + const GLboolean integer = GL_TRUE; + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END(ctx); + + if (index >= ctx->Const.VertexProgram.MaxAttribs) { + _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribIPointer(index)"); + return; + } + + update_array(ctx, "glVertexAttribIPointer", + &ctx->Array.ArrayObj->VertexAttrib[index], + _NEW_ARRAY_ATTRIB(index), + legalTypes, 1, 4, + size, type, stride, normalized, integer, ptr); } @@ -805,6 +528,11 @@ get_vertex_array_attrib(struct gl_context *ctx, GLuint index, GLenum pname, return array->Normalized; case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB: return array->BufferObj->Name; + case GL_VERTEX_ATTRIB_ARRAY_INTEGER: + if (ctx->Extensions.EXT_gpu_shader4) { + return array->Integer; + } + /* fall-through */ default: _mesa_error(ctx, GL_INVALID_ENUM, "%s(pname=0x%x)", caller, pname); return 0; @@ -1254,7 +982,6 @@ _mesa_UnlockArraysEXT( void ) /* GL_EXT_multi_draw_arrays */ -/* Somebody forgot to spec the first and count parameters as const! <sigh> */ void GLAPIENTRY _mesa_MultiDrawArraysEXT( GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount ) @@ -1352,6 +1079,7 @@ _mesa_copy_client_array(struct gl_context *ctx, dst->Ptr = src->Ptr; dst->Enabled = src->Enabled; dst->Normalized = src->Normalized; + dst->Integer = src->Integer; dst->_ElementSize = src->_ElementSize; _mesa_reference_buffer_object(ctx, &dst->BufferObj, src->BufferObj); dst->_MaxElement = src->_MaxElement; diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h index a5fa33fa00..fb96478cfc 100644 --- a/src/mesa/main/varray.h +++ b/src/mesa/main/varray.h @@ -118,7 +118,6 @@ _mesa_VertexAttribPointerARB(GLuint index, GLint size, GLenum type, void GLAPIENTRY _mesa_VertexAttribIPointer(GLuint index, GLint size, GLenum type, - GLboolean normalized, GLsizei stride, const GLvoid *ptr); diff --git a/src/mesa/main/version.h b/src/mesa/main/version.h index 6552a3a784..1b53508099 100644 --- a/src/mesa/main/version.h +++ b/src/mesa/main/version.h @@ -28,7 +28,7 @@ #define VERSION_H -#include "mtypes.h" +struct gl_context; /* Mesa version */ diff --git a/src/mesa/main/vtxfmt.c b/src/mesa/main/vtxfmt.c index 9236bf81a2..8a72641862 100644 --- a/src/mesa/main/vtxfmt.c +++ b/src/mesa/main/vtxfmt.c @@ -40,7 +40,7 @@ #if FEATURE_beginend /** - * Use the per-vertex functions found in <vfmt> to initialze the given + * Use the per-vertex functions found in <vfmt> to initialoze the given * API dispatch table. */ static void @@ -88,7 +88,7 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt ) SET_Vertex4f(tab, vfmt->Vertex4f); SET_Vertex4fv(tab, vfmt->Vertex4fv); - _mesa_install_dlist_vtxfmt(tab, vfmt); + _mesa_install_dlist_vtxfmt(tab, vfmt); /* glCallList / glCallLists */ SET_Begin(tab, vfmt->Begin); SET_End(tab, vfmt->End); @@ -103,8 +103,8 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt ) SET_DrawElementsBaseVertex(tab, vfmt->DrawElementsBaseVertex); SET_DrawRangeElementsBaseVertex(tab, vfmt->DrawRangeElementsBaseVertex); SET_MultiDrawElementsBaseVertex(tab, vfmt->MultiDrawElementsBaseVertex); - SET_DrawArraysInstanced(tab, vfmt->DrawArraysInstanced); - SET_DrawElementsInstanced(tab, vfmt->DrawElementsInstanced); + SET_DrawArraysInstancedARB(tab, vfmt->DrawArraysInstanced); + SET_DrawElementsInstancedARB(tab, vfmt->DrawElementsInstanced); /* GL_NV_vertex_program */ SET_VertexAttrib1fNV(tab, vfmt->VertexAttrib1fNV); @@ -125,17 +125,43 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt ) SET_VertexAttrib4fARB(tab, vfmt->VertexAttrib4fARB); SET_VertexAttrib4fvARB(tab, vfmt->VertexAttrib4fvARB); #endif + + /* GL_EXT_gpu_shader4 / OpenGL 3.0 */ + SET_VertexAttribI1iEXT(tab, vfmt->VertexAttribI1i); + SET_VertexAttribI2iEXT(tab, vfmt->VertexAttribI2i); + SET_VertexAttribI3iEXT(tab, vfmt->VertexAttribI3i); + SET_VertexAttribI4iEXT(tab, vfmt->VertexAttribI4i); + SET_VertexAttribI2ivEXT(tab, vfmt->VertexAttribI2iv); + SET_VertexAttribI3ivEXT(tab, vfmt->VertexAttribI3iv); + SET_VertexAttribI4ivEXT(tab, vfmt->VertexAttribI4iv); + + SET_VertexAttribI1uiEXT(tab, vfmt->VertexAttribI1ui); + SET_VertexAttribI2uiEXT(tab, vfmt->VertexAttribI2ui); + SET_VertexAttribI3uiEXT(tab, vfmt->VertexAttribI3ui); + SET_VertexAttribI4uiEXT(tab, vfmt->VertexAttribI4ui); + SET_VertexAttribI2uivEXT(tab, vfmt->VertexAttribI2uiv); + SET_VertexAttribI3uivEXT(tab, vfmt->VertexAttribI3uiv); + SET_VertexAttribI4uivEXT(tab, vfmt->VertexAttribI4uiv); } -void _mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ) +/** + * Install per-vertex functions into the API dispatch table for execution. + */ +void +_mesa_install_exec_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt) { if (ctx->API == API_OPENGL) install_vtxfmt( ctx->Exec, vfmt ); } -void _mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ) +/** + * Install per-vertex functions into the API dispatch table for display + * list compilation. + */ +void +_mesa_install_save_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt) { if (ctx->API == API_OPENGL) install_vtxfmt( ctx->Save, vfmt ); diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index bdd3fd92ff..98da90d359 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -123,6 +123,7 @@ public: /** Pointer to the ir source this tree came from for debugging */ ir_instruction *ir; GLboolean cond_update; + bool saturate; int sampler; /**< sampler index */ int tex_target; /**< One of TEXTURE_*_INDEX */ GLboolean tex_shadow; @@ -260,6 +261,17 @@ public: ir_to_mesa_src_reg src1, ir_to_mesa_src_reg src2); + /** + * Emit the correct dot-product instruction for the type of arguments + * + * \sa ir_to_mesa_emit_op2 + */ + void ir_to_mesa_emit_dp(ir_instruction *ir, + ir_to_mesa_dst_reg dst, + ir_to_mesa_src_reg src0, + ir_to_mesa_src_reg src1, + unsigned elements); + void ir_to_mesa_emit_scalar_op1(ir_instruction *ir, enum prog_opcode op, ir_to_mesa_dst_reg dst, @@ -271,8 +283,17 @@ public: ir_to_mesa_src_reg src0, ir_to_mesa_src_reg src1); + void emit_scs(ir_instruction *ir, enum prog_opcode op, + ir_to_mesa_dst_reg dst, + const ir_to_mesa_src_reg &src); + GLboolean try_emit_mad(ir_expression *ir, int mul_operand); + GLboolean try_emit_sat(ir_expression *ir); + + void emit_swz(ir_expression *ir); + + bool process_move_condition(ir_rvalue *ir); void *mem_ctx; }; @@ -393,6 +414,21 @@ ir_to_mesa_visitor::ir_to_mesa_emit_op0(ir_instruction *ir, ir_to_mesa_undef); } +void +ir_to_mesa_visitor::ir_to_mesa_emit_dp(ir_instruction *ir, + ir_to_mesa_dst_reg dst, + ir_to_mesa_src_reg src0, + ir_to_mesa_src_reg src1, + unsigned elements) +{ + static const gl_inst_opcode dot_opcodes[] = { + OPCODE_DP2, OPCODE_DP3, OPCODE_DP4 + }; + + ir_to_mesa_emit_op3(ir, dot_opcodes[elements - 2], + dst, src0, src1, ir_to_mesa_undef); +} + inline ir_to_mesa_dst_reg ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg reg) { @@ -447,6 +483,10 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir, GLuint src0_swiz = GET_SWZ(src0.swizzle, i); GLuint src1_swiz = GET_SWZ(src1.swizzle, i); for (j = i + 1; j < 4; j++) { + /* If there is another enabled component in the destination that is + * derived from the same inputs, generate its value on this pass as + * well. + */ if (!(done_mask & (1 << j)) && GET_SWZ(src0.swizzle, j) == src0_swiz && GET_SWZ(src1.swizzle, j) == src1_swiz) { @@ -480,6 +520,102 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir, ir_to_mesa_emit_scalar_op2(ir, op, dst, src0, undef); } +/** + * Emit an OPCODE_SCS instruction + * + * The \c SCS opcode functions a bit differently than the other Mesa (or + * ARB_fragment_program) opcodes. Instead of splatting its result across all + * four components of the destination, it writes one value to the \c x + * component and another value to the \c y component. + * + * \param ir IR instruction being processed + * \param op Either \c OPCODE_SIN or \c OPCODE_COS depending on which + * value is desired. + * \param dst Destination register + * \param src Source register + */ +void +ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op, + ir_to_mesa_dst_reg dst, + const ir_to_mesa_src_reg &src) +{ + /* Vertex programs cannot use the SCS opcode. + */ + if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) { + ir_to_mesa_emit_scalar_op1(ir, op, dst, src); + return; + } + + const unsigned component = (op == OPCODE_SIN) ? 0 : 1; + const unsigned scs_mask = (1U << component); + int done_mask = ~dst.writemask; + ir_to_mesa_src_reg tmp; + + assert(op == OPCODE_SIN || op == OPCODE_COS); + + /* If there are compnents in the destination that differ from the component + * that will be written by the SCS instrution, we'll need a temporary. + */ + if (scs_mask != unsigned(dst.writemask)) { + tmp = get_temp(glsl_type::vec4_type); + } + + for (unsigned i = 0; i < 4; i++) { + unsigned this_mask = (1U << i); + ir_to_mesa_src_reg src0 = src; + + if ((done_mask & this_mask) != 0) + continue; + + /* The source swizzle specified which component of the source generates + * sine / cosine for the current component in the destination. The SCS + * instruction requires that this value be swizzle to the X component. + * Replace the current swizzle with a swizzle that puts the source in + * the X component. + */ + unsigned src0_swiz = GET_SWZ(src.swizzle, i); + + src0.swizzle = MAKE_SWIZZLE4(src0_swiz, src0_swiz, + src0_swiz, src0_swiz); + for (unsigned j = i + 1; j < 4; j++) { + /* If there is another enabled component in the destination that is + * derived from the same inputs, generate its value on this pass as + * well. + */ + if (!(done_mask & (1 << j)) && + GET_SWZ(src0.swizzle, j) == src0_swiz) { + this_mask |= (1 << j); + } + } + + if (this_mask != scs_mask) { + ir_to_mesa_instruction *inst; + ir_to_mesa_dst_reg tmp_dst = ir_to_mesa_dst_reg_from_src(tmp); + + /* Emit the SCS instruction. + */ + inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, tmp_dst, src0); + inst->dst_reg.writemask = scs_mask; + + /* Move the result of the SCS instruction to the desired location in + * the destination. + */ + tmp.swizzle = MAKE_SWIZZLE4(component, component, + component, component); + inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, tmp); + inst->dst_reg.writemask = this_mask; + } else { + /* Emit the SCS instruction to write directly to the destination. + */ + ir_to_mesa_instruction *inst = + ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, src0); + inst->dst_reg.writemask = scs_mask; + } + + done_mask |= this_mask; + } +} + struct ir_to_mesa_src_reg ir_to_mesa_visitor::src_reg_for_float(float val) { @@ -805,6 +941,32 @@ ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand) return true; } +GLboolean +ir_to_mesa_visitor::try_emit_sat(ir_expression *ir) +{ + /* Saturates were only introduced to vertex programs in + * NV_vertex_program3, so don't give them to drivers in the VP. + */ + if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) + return false; + + ir_rvalue *sat_src = ir->as_rvalue_to_saturate(); + if (!sat_src) + return false; + + sat_src->accept(this); + ir_to_mesa_src_reg src = this->result; + + this->result = get_temp(ir->type); + ir_to_mesa_instruction *inst; + inst = ir_to_mesa_emit_op1(ir, OPCODE_MOV, + ir_to_mesa_dst_reg_from_src(this->result), + src); + inst->saturate = true; + + return true; +} + void ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir, ir_to_mesa_src_reg *reg, int *num_reladdr) @@ -826,15 +988,129 @@ ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir, } void +ir_to_mesa_visitor::emit_swz(ir_expression *ir) +{ + /* Assume that the vector operator is in a form compatible with OPCODE_SWZ. + * This means that each of the operands is either an immediate value of -1, + * 0, or 1, or is a component from one source register (possibly with + * negation). + */ + uint8_t components[4] = { 0 }; + bool negate[4] = { false }; + ir_variable *var = NULL; + + for (unsigned i = 0; i < ir->type->vector_elements; i++) { + ir_rvalue *op = ir->operands[i]; + + assert(op->type->is_scalar()); + + while (op != NULL) { + switch (op->ir_type) { + case ir_type_constant: { + + assert(op->type->is_scalar()); + + const ir_constant *const c = op->as_constant(); + if (c->is_one()) { + components[i] = SWIZZLE_ONE; + } else if (c->is_zero()) { + components[i] = SWIZZLE_ZERO; + } else if (c->is_negative_one()) { + components[i] = SWIZZLE_ONE; + negate[i] = true; + } else { + assert(!"SWZ constant must be 0.0 or 1.0."); + } + + op = NULL; + break; + } + + case ir_type_dereference_variable: { + ir_dereference_variable *const deref = + (ir_dereference_variable *) op; + + assert((var == NULL) || (deref->var == var)); + components[i] = SWIZZLE_X; + var = deref->var; + op = NULL; + break; + } + + case ir_type_expression: { + ir_expression *const expr = (ir_expression *) op; + + assert(expr->operation == ir_unop_neg); + negate[i] = true; + + op = expr->operands[0]; + break; + } + + case ir_type_swizzle: { + ir_swizzle *const swiz = (ir_swizzle *) op; + + components[i] = swiz->mask.x; + op = swiz->val; + break; + } + + default: + assert(!"Should not get here."); + return; + } + } + } + + assert(var != NULL); + + ir_dereference_variable *const deref = + new(mem_ctx) ir_dereference_variable(var); + + this->result.file = PROGRAM_UNDEFINED; + deref->accept(this); + if (this->result.file == PROGRAM_UNDEFINED) { + ir_print_visitor v; + printf("Failed to get tree for expression operand:\n"); + deref->accept(&v); + exit(1); + } + + ir_to_mesa_src_reg src; + + src = this->result; + src.swizzle = MAKE_SWIZZLE4(components[0], + components[1], + components[2], + components[3]); + src.negate = ((unsigned(negate[0]) << 0) + | (unsigned(negate[1]) << 1) + | (unsigned(negate[2]) << 2) + | (unsigned(negate[3]) << 3)); + + /* Storage for our result. Ideally for an assignment we'd be using the + * actual storage for the result here, instead. + */ + const ir_to_mesa_src_reg result_src = get_temp(ir->type); + ir_to_mesa_dst_reg result_dst = ir_to_mesa_dst_reg_from_src(result_src); + + /* Limit writes to the channels that will be used by result_src later. + * This does limit this temp's use as a temporary for multi-instruction + * sequences. + */ + result_dst.writemask = (1 << ir->type->vector_elements) - 1; + + ir_to_mesa_emit_op1(ir, OPCODE_SWZ, result_dst, src); + this->result = result_src; +} + +void ir_to_mesa_visitor::visit(ir_expression *ir) { unsigned int operand; - struct ir_to_mesa_src_reg op[2]; + struct ir_to_mesa_src_reg op[Elements(ir->operands)]; struct ir_to_mesa_src_reg result_src; struct ir_to_mesa_dst_reg result_dst; - const glsl_type *vec4_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, 4, 1); - const glsl_type *vec3_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, 3, 1); - const glsl_type *vec2_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, 2, 1); /* Quick peephole: Emit OPCODE_MAD(a, b, c) instead of ADD(MUL(a, b), c) */ @@ -844,6 +1120,13 @@ ir_to_mesa_visitor::visit(ir_expression *ir) if (try_emit_mad(ir, 0)) return; } + if (try_emit_sat(ir)) + return; + + if (ir->operation == ir_quadop_vector) { + this->emit_swz(ir); + return; + } for (operand = 0; operand < ir->get_num_operands(); operand++) { this->result.file = PROGRAM_UNDEFINED; @@ -917,6 +1200,12 @@ ir_to_mesa_visitor::visit(ir_expression *ir) case ir_unop_cos: ir_to_mesa_emit_scalar_op1(ir, OPCODE_COS, result_dst, op[0]); break; + case ir_unop_sin_reduced: + emit_scs(ir, OPCODE_SIN, result_dst, op[0]); + break; + case ir_unop_cos_reduced: + emit_scs(ir, OPCODE_COS, result_dst, op[0]); + break; case ir_unop_dFdx: ir_to_mesa_emit_op1(ir, OPCODE_DDX, result_dst, op[0]); @@ -976,12 +1265,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir) ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type); ir_to_mesa_emit_op2(ir, OPCODE_SNE, ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]); - if (vector_elements == 4) - ir_to_mesa_emit_op2(ir, OPCODE_DP4, result_dst, temp, temp); - else if (vector_elements == 3) - ir_to_mesa_emit_op2(ir, OPCODE_DP3, result_dst, temp, temp); - else - ir_to_mesa_emit_op2(ir, OPCODE_DP2, result_dst, temp, temp); + ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements); ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, result_src, src_reg_for_float(0.0)); } else { @@ -995,12 +1279,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir) ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type); ir_to_mesa_emit_op2(ir, OPCODE_SNE, ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]); - if (vector_elements == 4) - ir_to_mesa_emit_op2(ir, OPCODE_DP4, result_dst, temp, temp); - else if (vector_elements == 3) - ir_to_mesa_emit_op2(ir, OPCODE_DP3, result_dst, temp, temp); - else - ir_to_mesa_emit_op2(ir, OPCODE_DP2, result_dst, temp, temp); + ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements); ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0)); } else { @@ -1009,20 +1288,9 @@ ir_to_mesa_visitor::visit(ir_expression *ir) break; case ir_unop_any: - switch (ir->operands[0]->type->vector_elements) { - case 4: - ir_to_mesa_emit_op2(ir, OPCODE_DP4, result_dst, op[0], op[0]); - break; - case 3: - ir_to_mesa_emit_op2(ir, OPCODE_DP3, result_dst, op[0], op[0]); - break; - case 2: - ir_to_mesa_emit_op2(ir, OPCODE_DP2, result_dst, op[0], op[0]); - break; - default: - assert(!"unreached: ir_unop_any of non-bvec"); - break; - } + assert(ir->operands[0]->type->is_vector()); + ir_to_mesa_emit_dp(ir, result_dst, op[0], op[0], + ir->operands[0]->type->vector_elements); ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0)); break; @@ -1050,26 +1318,10 @@ ir_to_mesa_visitor::visit(ir_expression *ir) break; case ir_binop_dot: - if (ir->operands[0]->type == vec4_type) { - assert(ir->operands[1]->type == vec4_type); - ir_to_mesa_emit_op2(ir, OPCODE_DP4, - result_dst, - op[0], op[1]); - } else if (ir->operands[0]->type == vec3_type) { - assert(ir->operands[1]->type == vec3_type); - ir_to_mesa_emit_op2(ir, OPCODE_DP3, - result_dst, - op[0], op[1]); - } else if (ir->operands[0]->type == vec2_type) { - assert(ir->operands[1]->type == vec2_type); - ir_to_mesa_emit_op2(ir, OPCODE_DP2, - result_dst, - op[0], op[1]); - } - break; - - case ir_binop_cross: - ir_to_mesa_emit_op2(ir, OPCODE_XPD, result_dst, op[0], op[1]); + assert(ir->operands[0]->type->is_vector()); + assert(ir->operands[0]->type == ir->operands[1]->type); + ir_to_mesa_emit_dp(ir, result_dst, op[0], op[1], + ir->operands[0]->type->vector_elements); break; case ir_unop_sqrt: @@ -1133,6 +1385,12 @@ ir_to_mesa_visitor::visit(ir_expression *ir) case ir_unop_round_even: assert(!"GLSL 1.30 features unsupported"); break; + + case ir_quadop_vector: + /* This operation should have already been handled. + */ + assert(!"Should not get here."); + break; } this->result = result_src; @@ -1340,6 +1598,93 @@ get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v) return ir_to_mesa_dst_reg_from_src(v->result); } +/** + * Process the condition of a conditional assignment + * + * Examines the condition of a conditional assignment to generate the optimal + * first operand of a \c CMP instruction. If the condition is a relational + * operator with 0 (e.g., \c ir_binop_less), the value being compared will be + * used as the source for the \c CMP instruction. Otherwise the comparison + * is processed to a boolean result, and the boolean result is used as the + * operand to the CMP instruction. + */ +bool +ir_to_mesa_visitor::process_move_condition(ir_rvalue *ir) +{ + ir_rvalue *src_ir = ir; + bool negate = true; + bool switch_order = false; + + ir_expression *const expr = ir->as_expression(); + if ((expr != NULL) && (expr->get_num_operands() == 2)) { + bool zero_on_left = false; + + if (expr->operands[0]->is_zero()) { + src_ir = expr->operands[1]; + zero_on_left = true; + } else if (expr->operands[1]->is_zero()) { + src_ir = expr->operands[0]; + zero_on_left = false; + } + + /* a is - 0 + - 0 + + * (a < 0) T F F ( a < 0) T F F + * (0 < a) F F T (-a < 0) F F T + * (a <= 0) T T F (-a < 0) F F T (swap order of other operands) + * (0 <= a) F T T ( a < 0) T F F (swap order of other operands) + * (a > 0) F F T (-a < 0) F F T + * (0 > a) T F F ( a < 0) T F F + * (a >= 0) F T T ( a < 0) T F F (swap order of other operands) + * (0 >= a) T T F (-a < 0) F F T (swap order of other operands) + * + * Note that exchanging the order of 0 and 'a' in the comparison simply + * means that the value of 'a' should be negated. + */ + if (src_ir != ir) { + switch (expr->operation) { + case ir_binop_less: + switch_order = false; + negate = zero_on_left; + break; + + case ir_binop_greater: + switch_order = false; + negate = !zero_on_left; + break; + + case ir_binop_lequal: + switch_order = true; + negate = !zero_on_left; + break; + + case ir_binop_gequal: + switch_order = true; + negate = zero_on_left; + break; + + default: + /* This isn't the right kind of comparison afterall, so make sure + * the whole condition is visited. + */ + src_ir = ir; + break; + } + } + } + + src_ir->accept(this); + + /* We use the OPCODE_CMP (a < 0 ? b : c) for conditional moves, and the + * condition we produced is 0.0 or 1.0. By flipping the sign, we can + * choose which value OPCODE_CMP produces without an extra instruction + * computing the condition. + */ + if (negate) + this->result.negate = ~this->result.negate; + + return switch_order; +} + void ir_to_mesa_visitor::visit(ir_assignment *ir) { @@ -1399,20 +1744,18 @@ ir_to_mesa_visitor::visit(ir_assignment *ir) assert(r.file != PROGRAM_UNDEFINED); if (ir->condition) { - ir_to_mesa_src_reg condition; - - ir->condition->accept(this); - condition = this->result; + const bool switch_order = this->process_move_condition(ir->condition); + ir_to_mesa_src_reg condition = this->result; - /* We use the OPCODE_CMP (a < 0 ? b : c) for conditional moves, - * and the condition we produced is 0.0 or 1.0. By flipping the - * sign, we can choose which value OPCODE_CMP produces without - * an extra computing the condition. - */ - condition.negate = ~condition.negate; for (i = 0; i < type_size(ir->lhs->type); i++) { - ir_to_mesa_emit_op3(ir, OPCODE_CMP, l, - condition, r, ir_to_mesa_src_reg_from_dst(l)); + if (switch_order) { + ir_to_mesa_emit_op3(ir, OPCODE_CMP, l, + condition, ir_to_mesa_src_reg_from_dst(l), r); + } else { + ir_to_mesa_emit_op3(ir, OPCODE_CMP, l, + condition, r, ir_to_mesa_src_reg_from_dst(l)); + } + l.index++; r.index++; } @@ -2365,6 +2708,8 @@ get_mesa_program(struct gl_context *ctx, struct gl_shader_program *shader_progra mesa_inst->Opcode = inst->op; mesa_inst->CondUpdate = inst->cond_update; + if (inst->saturate) + mesa_inst->SaturateMode = SATURATE_ZERO_ONE; mesa_inst->DstReg.File = inst->dst_reg.file; mesa_inst->DstReg.Index = inst->dst_reg.index; mesa_inst->DstReg.CondMask = inst->dst_reg.cond_mask; @@ -2485,14 +2830,15 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) /* Lowering */ do_mat_op_to_vec(ir); - do_mod_to_fract(ir); - do_div_to_mul_rcp(ir); - do_explog_to_explog2(ir); + lower_instructions(ir, MOD_TO_FRACT | DIV_TO_MUL_RCP | EXP_TO_EXP2 + | LOG_TO_LOG2); progress = do_lower_jumps(ir, true, true, options->EmitNoMainReturn, options->EmitNoCont, options->EmitNoLoops) || progress; progress = do_common_optimization(ir, true, options->MaxUnrollIterations) || progress; + progress = lower_quadop_vector(ir, true) || progress; + if (options->EmitNoIfs) progress = do_if_to_cond_assign(ir) || progress; diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c index cdcf4ec265..4cacde9aed 100644 --- a/src/mesa/program/program.c +++ b/src/mesa/program/program.c @@ -796,7 +796,7 @@ _mesa_combine_programs(struct gl_context *ctx, if (p->Type == PROGRAM_STATE_VAR && p->StateIndexes[0] == STATE_INTERNAL && p->StateIndexes[1] == STATE_CURRENT_ATTRIB && - p->StateIndexes[2] == VERT_ATTRIB_COLOR0) { + (int) p->StateIndexes[2] == (int) VERT_ATTRIB_COLOR0) { progB_inputsRead |= FRAG_BIT_COL0; progB_colorFile = PROGRAM_STATE_VAR; progB_colorIndex = i; diff --git a/src/mesa/program/sampler.cpp b/src/mesa/program/sampler.cpp index 0e58aef9c9..9a813c8795 100644 --- a/src/mesa/program/sampler.cpp +++ b/src/mesa/program/sampler.cpp @@ -23,15 +23,15 @@ * DEALINGS IN THE SOFTWARE. */ -#include <stdio.h> +#include <cstdio> +#include "ir.h" +#include "glsl_types.h" +#include "ir_visitor.h" extern "C" { #include "main/compiler.h" #include "main/mtypes.h" #include "program/prog_parameter.h" -#include "ir.h" -#include "ir_visitor.h" -#include "glsl_types.h" } static void fail_link(struct gl_shader_program *prog, const char *fmt, ...) PRINTFLIKE(2, 3); diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak index 11a93d47f6..9a78a23aa7 100644 --- a/src/mesa/sources.mak +++ b/src/mesa/sources.mak @@ -58,8 +58,10 @@ MAIN_SOURCES = \ main/mm.c \ main/multisample.c \ main/nvprogram.c \ + main/pack.c \ main/pixel.c \ main/pixelstore.c \ + main/pixeltransfer.c \ main/points.c \ main/polygon.c \ main/queryobj.c \ diff --git a/src/mesa/state_tracker/st_atom_constbuf.c b/src/mesa/state_tracker/st_atom_constbuf.c index 6f9d71e845..8d1dc792bc 100644 --- a/src/mesa/state_tracker/st_atom_constbuf.c +++ b/src/mesa/state_tracker/st_atom_constbuf.c @@ -90,8 +90,11 @@ void st_upload_constants( struct st_context *st, st->pipe->set_constant_buffer(st->pipe, shader_type, 0, *cbuf); } - else { + else if (*cbuf) { st->constants.tracked_state[shader_type].dirty.mesa = 0x0; + + pipe_resource_reference(cbuf, NULL); + st->pipe->set_constant_buffer(st->pipe, shader_type, 0, NULL); } } diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c b/src/mesa/state_tracker/st_atom_rasterizer.c index 451299cef0..f92ca13d5e 100644 --- a/src/mesa/state_tracker/st_atom_rasterizer.c +++ b/src/mesa/state_tracker/st_atom_rasterizer.c @@ -96,9 +96,8 @@ static void update_raster_state( struct st_context *st ) */ if (ctx->VertexProgram._Current) { if (ctx->VertexProgram._Enabled || - (ctx->Shader.CurrentProgram && - ctx->Shader.CurrentProgram->VertexProgram && - ctx->Shader.CurrentProgram->LinkStatus)) { + (ctx->Shader.CurrentVertexProgram && + ctx->Shader.CurrentVertexProgram->LinkStatus)) { /* user-defined vertex program or shader */ raster->light_twoside = ctx->VertexProgram.TwoSideEnabled; } diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 94b80f69f2..d80c068ea8 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -34,6 +34,7 @@ #include "main/image.h" #include "main/bufferobj.h" #include "main/macros.h" +#include "main/pack.h" #include "main/texformat.h" #include "main/texstore.h" #include "program/program.h" @@ -298,8 +299,8 @@ make_passthrough_vertex_shader(struct st_context *st, /** - * Return a texture internalFormat for drawing/copying an image - * of the given type. + * Return a texture base format for drawing/copying an image + * of the given format. */ static GLenum base_format(GLenum format) @@ -318,6 +319,47 @@ base_format(GLenum format) /** + * Return a texture internalFormat for drawing/copying an image + * of the given format and type. + */ +static GLenum +internal_format(GLenum format, GLenum type) +{ + switch (format) { + case GL_DEPTH_COMPONENT: + return GL_DEPTH_COMPONENT; + case GL_DEPTH_STENCIL: + return GL_DEPTH_STENCIL; + case GL_STENCIL_INDEX: + return GL_STENCIL_INDEX; + default: + if (_mesa_is_integer_format(format)) { + switch (type) { + case GL_BYTE: + return GL_RGBA8I; + case GL_UNSIGNED_BYTE: + return GL_RGBA8UI; + case GL_SHORT: + return GL_RGBA16I; + case GL_UNSIGNED_SHORT: + return GL_RGBA16UI; + case GL_INT: + return GL_RGBA32I; + case GL_UNSIGNED_INT: + return GL_RGBA32UI; + default: + assert(0 && "Unexpected type in internal_format()"); + return GL_RGBA_INTEGER; + } + } + else { + return GL_RGBA; + } + } +} + + +/** * Create a temporary texture to hold an image of the given size. * If width, height are not POT and the driver only handles POT textures, * allocate the next larger size of texture that is POT. @@ -351,11 +393,12 @@ make_texture(struct st_context *st, struct pipe_resource *pt; enum pipe_format pipeFormat; GLuint cpp; - GLenum baseFormat; + GLenum baseFormat, intFormat; baseFormat = base_format(format); + intFormat = internal_format(format, type); - mformat = st_ChooseTextureFormat_renderable(ctx, baseFormat, + mformat = st_ChooseTextureFormat_renderable(ctx, intFormat, format, type, GL_FALSE); assert(mformat); @@ -548,7 +591,6 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, assert(width <= maxSize); assert(height <= maxSize); - cso_save_depth_stencil_alpha(cso); cso_save_rasterizer(cso); cso_save_viewport(cso); cso_save_samplers(cso); @@ -556,6 +598,10 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, cso_save_fragment_shader(cso); cso_save_vertex_shader(cso); cso_save_vertex_elements(cso); + if (write_stencil) { + cso_save_depth_stencil_alpha(cso); + cso_save_blend(cso); + } /* rasterizer state: just scissor */ { @@ -566,22 +612,30 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, cso_set_rasterizer(cso, &rasterizer); } - if (write_depth || write_stencil) - { + if (write_stencil) { + /* Stencil writing bypasses the normal fragment pipeline to + * disable color writing and set stencil test to always pass. + */ struct pipe_depth_stencil_alpha_state dsa; + struct pipe_blend_state blend; + + /* depth/stencil */ memset(&dsa, 0, sizeof(dsa)); + dsa.stencil[0].enabled = 1; + dsa.stencil[0].func = PIPE_FUNC_ALWAYS; + dsa.stencil[0].writemask = ctx->Stencil.WriteMask[0] & 0xff; + dsa.stencil[0].zpass_op = PIPE_STENCIL_OP_REPLACE; if (write_depth) { - dsa.depth.enabled = 1; - dsa.depth.func = PIPE_FUNC_ALWAYS; - dsa.depth.writemask = 1; - } - if (write_stencil) { - dsa.stencil[0].enabled = 1; - dsa.stencil[0].func = PIPE_FUNC_ALWAYS; - dsa.stencil[0].writemask = 0xff; - dsa.stencil[0].zpass_op = PIPE_STENCIL_OP_REPLACE; + /* writing depth+stencil: depth test always passes */ + dsa.depth.enabled = 1; + dsa.depth.writemask = ctx->Depth.Mask; + dsa.depth.func = PIPE_FUNC_ALWAYS; } cso_set_depth_stencil_alpha(cso, &dsa); + + /* blend (colormask) */ + memset(&blend, 0, sizeof(blend)); + cso_set_blend(cso, &blend); } /* fragment shader state: TEX lookup program */ @@ -653,7 +707,6 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, normalized ? ((GLfloat) height / sv[0]->texture->height0) : (GLfloat)height); /* restore state */ - cso_restore_depth_stencil_alpha(cso); cso_restore_rasterizer(cso); cso_restore_viewport(cso); cso_restore_samplers(cso); @@ -661,6 +714,10 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, cso_restore_fragment_shader(cso); cso_restore_vertex_shader(cso); cso_restore_vertex_elements(cso); + if (write_stencil) { + cso_restore_depth_stencil_alpha(cso); + cso_restore_blend(cso); + } } @@ -951,6 +1008,18 @@ copy_stencil_pixels(struct gl_context *ctx, GLint srcx, GLint srcy, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &ctx->DefaultPacking, buffer); + if (0) { + /* debug code: dump stencil values */ + GLint row, col; + for (row = 0; row < height; row++) { + printf("%3d: ", row); + for (col = 0; col < width; col++) { + printf("%02x ", buffer[col + row * width]); + } + printf("\n"); + } + } + if (util_format_get_component_bits(rbDraw->format, UTIL_FORMAT_COLORSPACE_ZS, 0) != 0) usage = PIPE_TRANSFER_READ_WRITE; diff --git a/src/mesa/state_tracker/st_cb_eglimage.c b/src/mesa/state_tracker/st_cb_eglimage.c index 298f8a5b12..c4b84de790 100644 --- a/src/mesa/state_tracker/st_cb_eglimage.c +++ b/src/mesa/state_tracker/st_cb_eglimage.c @@ -106,6 +106,7 @@ st_bind_surface(struct gl_context *ctx, GLenum target, struct st_texture_object *stObj; struct st_texture_image *stImage; GLenum internalFormat; + gl_format texFormat; /* map pipe format to base format */ if (util_format_get_component_bits(ps->format, UTIL_FORMAT_COLORSPACE_RGB, 3) > 0) @@ -122,13 +123,15 @@ st_bind_surface(struct gl_context *ctx, GLenum target, stObj->surface_based = GL_TRUE; } + texFormat = st_pipe_format_to_mesa_format(ps->format); + _mesa_init_teximage_fields(ctx, target, texImage, - ps->width, ps->height, 1, 0, internalFormat); - texImage->TexFormat = st_pipe_format_to_mesa_format(ps->format); - _mesa_set_fetch_functions(texImage, 2); + ps->width, ps->height, 1, 0, internalFormat, + texFormat); /* FIXME create a non-default sampler view from the pipe_surface? */ pipe_resource_reference(&stObj->pt, ps->texture); + pipe_sampler_view_reference(&stObj->sampler_view, NULL); pipe_resource_reference(&stImage->pt, stObj->pt); stObj->width0 = ps->width; diff --git a/src/mesa/state_tracker/st_cb_queryobj.c b/src/mesa/state_tracker/st_cb_queryobj.c index 724464a33f..aa31b3710b 100644 --- a/src/mesa/state_tracker/st_cb_queryobj.c +++ b/src/mesa/state_tracker/st_cb_queryobj.c @@ -35,7 +35,6 @@ #include "main/imports.h" #include "main/context.h" -#include "main/image.h" #include "pipe/p_context.h" #include "pipe/p_defines.h" diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c index 0aad733e34..bcd46ac9d5 100644 --- a/src/mesa/state_tracker/st_cb_readpixels.c +++ b/src/mesa/state_tracker/st_cb_readpixels.c @@ -37,6 +37,7 @@ #include "main/bufferobj.h" #include "main/context.h" #include "main/image.h" +#include "main/pack.h" #include "pipe/p_context.h" #include "pipe/p_defines.h" diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 062dd34865..15e69e1fa0 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -34,6 +34,8 @@ #include "main/imports.h" #include "main/macros.h" #include "main/mipmap.h" +#include "main/pack.h" +#include "main/pixeltransfer.h" #include "main/texcompress.h" #include "main/texfetch.h" #include "main/texgetimage.h" @@ -547,14 +549,18 @@ st_TexImage(struct gl_context * ctx, /* switch to "normal" */ if (stObj->surface_based) { + gl_format texFormat; + _mesa_clear_texture_object(ctx, texObj); pipe_resource_reference(&stObj->pt, NULL); /* oops, need to init this image again */ + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, format, type); + _mesa_init_teximage_fields(ctx, target, texImage, - width, height, depth, border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); + width, height, depth, border, + internalFormat, texFormat); stObj->surface_based = GL_FALSE; } @@ -1948,7 +1954,7 @@ st_get_default_texture(struct st_context *st) _mesa_init_teximage_fields(st->ctx, target, texImg, 16, 16, 1, 0, /* w, h, d, border */ - GL_RGBA); + GL_RGBA, MESA_FORMAT_RGBA8888); st_TexImage(st->ctx, 2, target, 0, GL_RGBA, /* level, intformat */ diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 75fd69540f..d0dcdd4e29 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -236,6 +236,13 @@ void st_destroy_context( struct st_context *st ) } pipe_surface_reference(&st->state.framebuffer.zsbuf, NULL); + pipe->set_index_buffer(pipe, NULL); + + for (i = 0; i < PIPE_SHADER_TYPES; i++) { + pipe->set_constant_buffer(pipe, PIPE_SHADER_VERTEX, 0, NULL); + pipe_resource_reference(&st->state.constants[PIPE_SHADER_VERTEX], NULL); + } + _mesa_delete_program_cache(st->ctx, st->pixel_xfer.cache); _vbo_DestroyContext(st->ctx); diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 5387499eb9..61a0e1b087 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -547,11 +547,21 @@ setup_index_buffer(struct gl_context *ctx, static void check_uniforms(struct gl_context *ctx) { - const struct gl_shader_program *shProg = ctx->Shader.CurrentProgram; - if (shProg && shProg->LinkStatus) { - GLuint i; - for (i = 0; i < shProg->Uniforms->NumUniforms; i++) { - const struct gl_uniform *u = &shProg->Uniforms->Uniforms[i]; + struct gl_shader_program *shProg[3] = { + ctx->Shader.CurrentVertexProgram, + ctx->Shader.CurrentGeometryProgram, + ctx->Shader.CurrentFragmentProgram, + }; + unsigned j; + + for (j = 0; j < 3; j++) { + unsigned i; + + if (shProg[j] == NULL || !shProg[j]->LinkStatus) + continue; + + for (i = 0; i < shProg[j]->Uniforms->NumUniforms; i++) { + const struct gl_uniform *u = &shProg[j]->Uniforms->Uniforms[i]; if (!u->Initialized) { _mesa_warning(ctx, "Using shader with uninitialized uniform: %s", diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 2720f44645..62f84ed6b4 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -175,6 +175,15 @@ void st_init_limits(struct st_context *st) options->EmitNoCont = !screen->get_shader_param(screen, i, PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED); + options->EmitNoIndirectInput = !screen->get_shader_param(screen, i, + PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR); + options->EmitNoIndirectOutput = !screen->get_shader_param(screen, i, + PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR); + options->EmitNoIndirectTemp = !screen->get_shader_param(screen, i, + PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR); + options->EmitNoIndirectUniform = !screen->get_shader_param(screen, i, + PIPE_SHADER_CAP_INDIRECT_CONST_ADDR); + if(options->EmitNoLoops) options->MaxUnrollIterations = MIN2(screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_INSTRUCTIONS), 65536); } @@ -289,6 +298,8 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ARB_vertex_shader = GL_TRUE; ctx->Extensions.ARB_shader_objects = GL_TRUE; ctx->Extensions.ARB_shading_language_100 = GL_TRUE; + ctx->Extensions.ARB_explicit_attrib_location = GL_TRUE; + ctx->Extensions.EXT_separate_shader_objects = GL_TRUE; } if (screen->get_param(screen, PIPE_CAP_TEXTURE_MIRROR_REPEAT) > 0) { diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index 7ad48ecea0..955d821a65 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -210,6 +210,25 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) return PIPE_FORMAT_R8G8_UNORM; case MESA_FORMAT_RG1616: return PIPE_FORMAT_R16G16_UNORM; + case MESA_FORMAT_RGBA_16: + return PIPE_FORMAT_R16G16B16A16_UNORM; + + /* signed int formats */ + case MESA_FORMAT_RGBA_INT8: + return PIPE_FORMAT_R8G8B8A8_SSCALED; + case MESA_FORMAT_RGBA_INT16: + return PIPE_FORMAT_R16G16B16A16_SSCALED; + case MESA_FORMAT_RGBA_INT32: + return PIPE_FORMAT_R32G32B32A32_SSCALED; + + /* unsigned int formats */ + case MESA_FORMAT_RGBA_UINT8: + return PIPE_FORMAT_R8G8B8A8_USCALED; + case MESA_FORMAT_RGBA_UINT16: + return PIPE_FORMAT_R16G16B16A16_USCALED; + case MESA_FORMAT_RGBA_UINT32: + return PIPE_FORMAT_R32G32B32A32_USCALED; + default: assert(0); return PIPE_FORMAT_NONE; @@ -253,6 +272,8 @@ st_pipe_format_to_mesa_format(enum pipe_format format) case PIPE_FORMAT_S8_USCALED: return MESA_FORMAT_S8; + case PIPE_FORMAT_R16G16B16A16_UNORM: + return MESA_FORMAT_RGBA_16; case PIPE_FORMAT_R16G16B16A16_SNORM: return MESA_FORMAT_SIGNED_RGBA_16; @@ -316,6 +337,23 @@ st_pipe_format_to_mesa_format(enum pipe_format format) return MESA_FORMAT_RG88; case PIPE_FORMAT_R16G16_UNORM: return MESA_FORMAT_RG1616; + + /* signed int formats */ + case PIPE_FORMAT_R8G8B8A8_SSCALED: + return MESA_FORMAT_RGBA_INT8; + case PIPE_FORMAT_R16G16B16A16_SSCALED: + return MESA_FORMAT_RGBA_INT16; + case PIPE_FORMAT_R32G32B32A32_SSCALED: + return MESA_FORMAT_RGBA_INT32; + + /* unsigned int formats */ + case PIPE_FORMAT_R8G8B8A8_USCALED: + return MESA_FORMAT_RGBA_UINT8; + case PIPE_FORMAT_R16G16B16A16_USCALED: + return MESA_FORMAT_RGBA_UINT16; + case PIPE_FORMAT_R32G32B32A32_USCALED: + return MESA_FORMAT_RGBA_UINT32; + default: assert(0); return MESA_FORMAT_NONE; @@ -435,14 +473,19 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, case GL_RGBA: case GL_RGBA8: case GL_RGB10_A2: - case GL_RGBA12: return default_rgba_format( screen, target, sample_count, bindings, geom_flags ); + case 3: case GL_RGB: return default_rgb_format( screen, target, sample_count, bindings, geom_flags ); + case GL_RGBA12: case GL_RGBA16: + if (screen->is_format_supported( screen, PIPE_FORMAT_R16G16B16A16_UNORM, + target, sample_count, bindings, + geom_flags )) + return PIPE_FORMAT_R16G16B16A16_UNORM; return default_rgba_format( screen, target, sample_count, bindings, geom_flags ); @@ -756,6 +799,92 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, return PIPE_FORMAT_RGTC2_SNORM; return PIPE_FORMAT_NONE; + /* signed/unsigned integer formats. + * XXX Mesa only has formats for RGBA signed/unsigned integer formats. + * If/when new formats are added this code should be updated. + */ + case GL_RED_INTEGER_EXT: + case GL_GREEN_INTEGER_EXT: + case GL_BLUE_INTEGER_EXT: + case GL_ALPHA_INTEGER_EXT: + case GL_RGB_INTEGER_EXT: + case GL_RGBA_INTEGER_EXT: + case GL_BGR_INTEGER_EXT: + case GL_BGRA_INTEGER_EXT: + case GL_LUMINANCE_INTEGER_EXT: + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + /* fall-through */ + case GL_RGBA8I_EXT: + case GL_RGB8I_EXT: + case GL_ALPHA8I_EXT: + case GL_INTENSITY8I_EXT: + case GL_LUMINANCE8I_EXT: + case GL_LUMINANCE_ALPHA8I_EXT: + if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SSCALED, + target, + sample_count, bindings, geom_flags)) + return PIPE_FORMAT_R8G8B8A8_SSCALED; + return PIPE_FORMAT_NONE; + case GL_RGBA16I_EXT: + case GL_RGB16I_EXT: + case GL_ALPHA16I_EXT: + case GL_INTENSITY16I_EXT: + case GL_LUMINANCE16I_EXT: + case GL_LUMINANCE_ALPHA16I_EXT: + if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SSCALED, + target, + sample_count, bindings, geom_flags)) + return PIPE_FORMAT_R16G16B16A16_SSCALED; + return PIPE_FORMAT_NONE; + case GL_RGBA32I_EXT: + case GL_RGB32I_EXT: + case GL_ALPHA32I_EXT: + case GL_INTENSITY32I_EXT: + case GL_LUMINANCE32I_EXT: + case GL_LUMINANCE_ALPHA32I_EXT: + /* xxx */ + if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_SSCALED, + target, + sample_count, bindings, geom_flags)) + return PIPE_FORMAT_R32G32B32A32_SSCALED; + return PIPE_FORMAT_NONE; + + case GL_RGBA8UI_EXT: + case GL_RGB8UI_EXT: + case GL_ALPHA8UI_EXT: + case GL_INTENSITY8UI_EXT: + case GL_LUMINANCE8UI_EXT: + case GL_LUMINANCE_ALPHA8UI_EXT: + if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_USCALED, + target, + sample_count, bindings, geom_flags)) + return PIPE_FORMAT_R8G8B8A8_USCALED; + return PIPE_FORMAT_NONE; + + case GL_RGBA16UI_EXT: + case GL_RGB16UI_EXT: + case GL_ALPHA16UI_EXT: + case GL_INTENSITY16UI_EXT: + case GL_LUMINANCE16UI_EXT: + case GL_LUMINANCE_ALPHA16UI_EXT: + if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_USCALED, + target, + sample_count, bindings, geom_flags)) + return PIPE_FORMAT_R16G16B16A16_USCALED; + return PIPE_FORMAT_NONE; + + case GL_RGBA32UI_EXT: + case GL_RGB32UI_EXT: + case GL_ALPHA32UI_EXT: + case GL_INTENSITY32UI_EXT: + case GL_LUMINANCE32UI_EXT: + case GL_LUMINANCE_ALPHA32UI_EXT: + if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_USCALED, + target, + sample_count, bindings, geom_flags)) + return PIPE_FORMAT_R32G32B32A32_USCALED; + return PIPE_FORMAT_NONE; + default: return PIPE_FORMAT_NONE; } diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c index fe31418ddd..1fc4f40488 100644 --- a/src/mesa/state_tracker/st_gen_mipmap.c +++ b/src/mesa/state_tracker/st_gen_mipmap.c @@ -29,7 +29,6 @@ #include "main/imports.h" #include "main/mipmap.h" #include "main/teximage.h" -#include "main/texformat.h" #include "pipe/p_context.h" #include "pipe/p_defines.h" @@ -400,9 +399,8 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target, /* initialize new image */ _mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight, - dstDepth, border, srcImage->InternalFormat); - - dstImage->TexFormat = srcImage->TexFormat; + dstDepth, border, srcImage->InternalFormat, + srcImage->TexFormat); stImage = st_texture_image(dstImage); stImage->level = dstLevel; diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index 183477a3f3..05733e818e 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -40,7 +40,6 @@ #include "main/texobj.h" #include "main/teximage.h" #include "main/texstate.h" -#include "main/texfetch.h" #include "main/framebuffer.h" #include "main/fbobject.h" #include "main/renderbuffer.h" @@ -556,6 +555,8 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target texImage = _mesa_get_tex_image(ctx, texObj, target, level); stImage = st_texture_image(texImage); if (tex) { + gl_format texFormat; + /* * XXX When internal_format and tex->format differ, st_finalize_texture * needs to allocate a new texture with internal_format and copy the @@ -573,11 +574,13 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target internalFormat = GL_RGBA; else internalFormat = GL_RGB; + + texFormat = st_ChooseTextureFormat(ctx, internalFormat, + GL_RGBA, GL_UNSIGNED_BYTE); + _mesa_init_teximage_fields(ctx, target, texImage, - tex->width0, tex->height0, 1, 0, internalFormat); - texImage->TexFormat = st_ChooseTextureFormat(ctx, internalFormat, - GL_RGBA, GL_UNSIGNED_BYTE); - _mesa_set_fetch_functions(texImage, 2); + tex->width0, tex->height0, 1, 0, + internalFormat, texFormat); width = tex->width0; height = tex->height0; @@ -611,6 +614,26 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target } static void +st_context_copy(struct st_context_iface *stctxi, + struct st_context_iface *stsrci, unsigned mask) +{ + struct st_context *st = (struct st_context *) stctxi; + struct st_context *src = (struct st_context *) stsrci; + + _mesa_copy_context(src->ctx, st->ctx, mask); +} + +static boolean +st_context_share(struct st_context_iface *stctxi, + struct st_context_iface *stsrci) +{ + struct st_context *st = (struct st_context *) stctxi; + struct st_context *src = (struct st_context *) stsrci; + + return _mesa_share_state(st->ctx, src->ctx); +} + +static void st_context_destroy(struct st_context_iface *stctxi) { struct st_context *st = (struct st_context *) stctxi; @@ -677,7 +700,8 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi, st_context_notify_invalid_framebuffer; st->iface.flush = st_context_flush; st->iface.teximage = st_context_teximage; - st->iface.copy = NULL; + st->iface.copy = st_context_copy; + st->iface.share = st_context_share; st->iface.st_context_private = (void *) smapi; return &st->iface; @@ -865,6 +889,7 @@ st_manager_add_color_renderbuffer(struct st_context *st, struct gl_framebuffer * } static const struct st_api st_gl_api = { + "Mesa " MESA_VERSION_STRING, ST_API_OPENGL, #if FEATURE_GL ST_PROFILE_DEFAULT_MASK | diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 95e6bd7dac..76799287fe 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -718,12 +718,42 @@ st_translate_geometry_program(struct st_context *st, void st_print_shaders(struct gl_context *ctx) { - struct gl_shader_program *shProg = ctx->Shader.CurrentProgram; - if (shProg) { - GLuint i; - for (i = 0; i < shProg->NumShaders; i++) { - printf("GLSL shader %u of %u:\n", i, shProg->NumShaders); - printf("%s\n", shProg->Shaders[i]->Source); + struct gl_shader_program *shProg[3] = { + ctx->Shader.CurrentVertexProgram, + ctx->Shader.CurrentGeometryProgram, + ctx->Shader.CurrentFragmentProgram, + }; + unsigned j; + + for (j = 0; j < 3; j++) { + unsigned i; + + if (shProg[j] == NULL) + continue; + + for (i = 0; i < shProg[j]->NumShaders; i++) { + struct gl_shader *sh; + + switch (shProg[j]->Shaders[i]->Type) { + case GL_VERTEX_SHADER: + sh = (i != 0) ? NULL : shProg[j]->Shaders[i]; + break; + case GL_GEOMETRY_SHADER_ARB: + sh = (i != 1) ? NULL : shProg[j]->Shaders[i]; + break; + case GL_FRAGMENT_SHADER: + sh = (i != 2) ? NULL : shProg[j]->Shaders[i]; + break; + default: + assert(0); + sh = NULL; + break; + } + + if (sh != NULL) { + printf("GLSL shader %u of %u:\n", i, shProg[j]->NumShaders); + printf("%s\n", sh->Source); + } } } } diff --git a/src/mesa/swrast/s_copypix.c b/src/mesa/swrast/s_copypix.c index 86fe3e0a89..46d6379282 100644 --- a/src/mesa/swrast/s_copypix.c +++ b/src/mesa/swrast/s_copypix.c @@ -27,8 +27,8 @@ #include "main/context.h" #include "main/colormac.h" #include "main/condrender.h" -#include "main/image.h" #include "main/macros.h" +#include "main/pixeltransfer.h" #include "main/imports.h" #include "s_context.h" diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c index 8fbb0a8d10..4e9b5307cc 100644 --- a/src/mesa/swrast/s_drawpix.c +++ b/src/mesa/swrast/s_drawpix.c @@ -28,8 +28,10 @@ #include "main/condrender.h" #include "main/context.h" #include "main/image.h" -#include "main/macros.h" #include "main/imports.h" +#include "main/macros.h" +#include "main/pack.h" +#include "main/pixeltransfer.h" #include "main/state.h" #include "s_context.h" diff --git a/src/mesa/swrast/s_fragprog.c b/src/mesa/swrast/s_fragprog.c index e421d218d7..e391043f4d 100644 --- a/src/mesa/swrast/s_fragprog.c +++ b/src/mesa/swrast/s_fragprog.c @@ -169,7 +169,7 @@ init_machine(struct gl_context *ctx, struct gl_program_machine *machine, machine->Samplers = program->Base.SamplerUnits; /* if running a GLSL program (not ARB_fragment_program) */ - if (ctx->Shader.CurrentProgram) { + if (ctx->Shader.CurrentFragmentProgram) { /* Store front/back facing value */ machine->Attribs[FRAG_ATTRIB_FACE][col][0] = 1.0F - span->facing; } diff --git a/src/mesa/swrast/s_readpix.c b/src/mesa/swrast/s_readpix.c index 55fa60749e..5e6356c0d5 100644 --- a/src/mesa/swrast/s_readpix.c +++ b/src/mesa/swrast/s_readpix.c @@ -29,8 +29,9 @@ #include "main/feedback.h" #include "main/formats.h" #include "main/image.h" -#include "main/macros.h" #include "main/imports.h" +#include "main/macros.h" +#include "main/pack.h" #include "main/state.h" #include "s_context.h" @@ -513,7 +514,7 @@ _swrast_ReadPixels( struct gl_context *ctx, type, pixels, &clippedPacking); break; default: - _mesa_problem(ctx, "unexpected format in _swrast_ReadPixels"); + _mesa_problem(ctx, "unexpected format 0x%x in _swrast_ReadPixels", format); /* don't return yet, clean-up */ } diff --git a/src/mesa/swrast/s_texcombine.c b/src/mesa/swrast/s_texcombine.c index 1775810eff..1836d074ae 100644 --- a/src/mesa/swrast/s_texcombine.c +++ b/src/mesa/swrast/s_texcombine.c @@ -27,8 +27,8 @@ #include "main/glheader.h" #include "main/context.h" #include "main/colormac.h" -#include "main/image.h" #include "main/imports.h" +#include "main/pixeltransfer.h" #include "program/prog_instruction.h" #include "s_context.h" diff --git a/src/mesa/vbo/vbo_attrib_tmp.h b/src/mesa/vbo/vbo_attrib_tmp.h index 7a889b8e2f..3c235accf3 100644 --- a/src/mesa/vbo/vbo_attrib_tmp.h +++ b/src/mesa/vbo/vbo_attrib_tmp.h @@ -25,6 +25,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ +/* float */ #define ATTR1FV( A, V ) ATTR( A, 1, (V)[0], 0, 0, 1 ) #define ATTR2FV( A, V ) ATTR( A, 2, (V)[0], (V)[1], 0, 1 ) #define ATTR3FV( A, V ) ATTR( A, 3, (V)[0], (V)[1], (V)[2], 1 ) @@ -35,235 +36,307 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #define ATTR3F( A, X, Y, Z ) ATTR( A, 3, X, Y, Z, 1 ) #define ATTR4F( A, X, Y, Z, W ) ATTR( A, 4, X, Y, Z, W ) +/* int */ +#define ATTR2IV( A, V ) ATTR( A, 2, (V)[0], (V)[1], 0, 1 ) +#define ATTR3IV( A, V ) ATTR( A, 3, (V)[0], (V)[1], (V)[2], 1 ) +#define ATTR4IV( A, V ) ATTR( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] ) + +#define ATTR1I( A, X ) ATTR( A, 1, X, 0, 0, 1 ) +#define ATTR2I( A, X, Y ) ATTR( A, 2, X, Y, 0, 1 ) +#define ATTR3I( A, X, Y, Z ) ATTR( A, 3, X, Y, Z, 1 ) +#define ATTR4I( A, X, Y, Z, W ) ATTR( A, 4, X, Y, Z, W ) + + +/* uint */ +#define ATTR2UIV( A, V ) ATTR( A, 2, (V)[0], (V)[1], 0, 1 ) +#define ATTR3UIV( A, V ) ATTR( A, 3, (V)[0], (V)[1], (V)[2], 1 ) +#define ATTR4UIV( A, V ) ATTR( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] ) + +#define ATTR1UI( A, X ) ATTR( A, 1, X, 0, 0, 1 ) +#define ATTR2UI( A, X, Y ) ATTR( A, 2, X, Y, 0, 1 ) +#define ATTR3UI( A, X, Y, Z ) ATTR( A, 3, X, Y, Z, 1 ) +#define ATTR4UI( A, X, Y, Z, W ) ATTR( A, 4, X, Y, Z, W ) + #define MAT_ATTR( A, N, V ) ATTR( A, N, (V)[0], (V)[1], (V)[2], (V)[3] ) -static void GLAPIENTRY TAG(Vertex2f)( GLfloat x, GLfloat y ) + + +static void GLAPIENTRY +TAG(Vertex2f)(GLfloat x, GLfloat y) { - GET_CURRENT_CONTEXT( ctx ); - ATTR2F( VBO_ATTRIB_POS, x, y ); + GET_CURRENT_CONTEXT(ctx); + ATTR2F(VBO_ATTRIB_POS, x, y); } -static void GLAPIENTRY TAG(Vertex2fv)( const GLfloat *v ) +static void GLAPIENTRY +TAG(Vertex2fv)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR2FV( VBO_ATTRIB_POS, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR2FV(VBO_ATTRIB_POS, v); } -static void GLAPIENTRY TAG(Vertex3f)( GLfloat x, GLfloat y, GLfloat z ) +static void GLAPIENTRY +TAG(Vertex3f)(GLfloat x, GLfloat y, GLfloat z) { - GET_CURRENT_CONTEXT( ctx ); - ATTR3F( VBO_ATTRIB_POS, x, y, z ); + GET_CURRENT_CONTEXT(ctx); + ATTR3F(VBO_ATTRIB_POS, x, y, z); } -static void GLAPIENTRY TAG(Vertex3fv)( const GLfloat *v ) +static void GLAPIENTRY +TAG(Vertex3fv)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR3FV( VBO_ATTRIB_POS, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR3FV(VBO_ATTRIB_POS, v); } -static void GLAPIENTRY TAG(Vertex4f)( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) +static void GLAPIENTRY +TAG(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - GET_CURRENT_CONTEXT( ctx ); - ATTR4F( VBO_ATTRIB_POS, x, y, z, w ); + GET_CURRENT_CONTEXT(ctx); + ATTR4F(VBO_ATTRIB_POS, x, y, z, w); } -static void GLAPIENTRY TAG(Vertex4fv)( const GLfloat *v ) +static void GLAPIENTRY +TAG(Vertex4fv)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR4FV( VBO_ATTRIB_POS, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR4FV(VBO_ATTRIB_POS, v); } -static void GLAPIENTRY TAG(TexCoord1f)( GLfloat x ) + + +static void GLAPIENTRY +TAG(TexCoord1f)(GLfloat x) { - GET_CURRENT_CONTEXT( ctx ); - ATTR1F( VBO_ATTRIB_TEX0, x ); + GET_CURRENT_CONTEXT(ctx); + ATTR1F(VBO_ATTRIB_TEX0, x); } -static void GLAPIENTRY TAG(TexCoord1fv)( const GLfloat *v ) +static void GLAPIENTRY +TAG(TexCoord1fv)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR1FV( VBO_ATTRIB_TEX0, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR1FV(VBO_ATTRIB_TEX0, v); } -static void GLAPIENTRY TAG(TexCoord2f)( GLfloat x, GLfloat y ) +static void GLAPIENTRY +TAG(TexCoord2f)(GLfloat x, GLfloat y) { - GET_CURRENT_CONTEXT( ctx ); - ATTR2F( VBO_ATTRIB_TEX0, x, y ); + GET_CURRENT_CONTEXT(ctx); + ATTR2F(VBO_ATTRIB_TEX0, x, y); } -static void GLAPIENTRY TAG(TexCoord2fv)( const GLfloat *v ) +static void GLAPIENTRY +TAG(TexCoord2fv)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR2FV( VBO_ATTRIB_TEX0, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR2FV(VBO_ATTRIB_TEX0, v); } -static void GLAPIENTRY TAG(TexCoord3f)( GLfloat x, GLfloat y, GLfloat z ) +static void GLAPIENTRY +TAG(TexCoord3f)(GLfloat x, GLfloat y, GLfloat z) { - GET_CURRENT_CONTEXT( ctx ); - ATTR3F( VBO_ATTRIB_TEX0, x, y, z ); + GET_CURRENT_CONTEXT(ctx); + ATTR3F(VBO_ATTRIB_TEX0, x, y, z); } -static void GLAPIENTRY TAG(TexCoord3fv)( const GLfloat *v ) +static void GLAPIENTRY +TAG(TexCoord3fv)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR3FV( VBO_ATTRIB_TEX0, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR3FV(VBO_ATTRIB_TEX0, v); } -static void GLAPIENTRY TAG(TexCoord4f)( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) +static void GLAPIENTRY +TAG(TexCoord4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - GET_CURRENT_CONTEXT( ctx ); - ATTR4F( VBO_ATTRIB_TEX0, x, y, z, w ); + GET_CURRENT_CONTEXT(ctx); + ATTR4F(VBO_ATTRIB_TEX0, x, y, z, w); } -static void GLAPIENTRY TAG(TexCoord4fv)( const GLfloat *v ) +static void GLAPIENTRY +TAG(TexCoord4fv)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR4FV( VBO_ATTRIB_TEX0, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR4FV(VBO_ATTRIB_TEX0, v); } -static void GLAPIENTRY TAG(Normal3f)( GLfloat x, GLfloat y, GLfloat z ) + + +static void GLAPIENTRY +TAG(Normal3f)(GLfloat x, GLfloat y, GLfloat z) { - GET_CURRENT_CONTEXT( ctx ); - ATTR3F( VBO_ATTRIB_NORMAL, x, y, z ); + GET_CURRENT_CONTEXT(ctx); + ATTR3F(VBO_ATTRIB_NORMAL, x, y, z); } -static void GLAPIENTRY TAG(Normal3fv)( const GLfloat *v ) +static void GLAPIENTRY +TAG(Normal3fv)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR3FV( VBO_ATTRIB_NORMAL, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR3FV(VBO_ATTRIB_NORMAL, v); } -static void GLAPIENTRY TAG(FogCoordfEXT)( GLfloat x ) + + +static void GLAPIENTRY +TAG(FogCoordfEXT)(GLfloat x) { - GET_CURRENT_CONTEXT( ctx ); - ATTR1F( VBO_ATTRIB_FOG, x ); + GET_CURRENT_CONTEXT(ctx); + ATTR1F(VBO_ATTRIB_FOG, x); } -static void GLAPIENTRY TAG(FogCoordfvEXT)( const GLfloat *v ) + + +static void GLAPIENTRY +TAG(FogCoordfvEXT)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR1FV( VBO_ATTRIB_FOG, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR1FV(VBO_ATTRIB_FOG, v); } -static void GLAPIENTRY TAG(Color3f)( GLfloat x, GLfloat y, GLfloat z ) +static void GLAPIENTRY +TAG(Color3f)(GLfloat x, GLfloat y, GLfloat z) { - GET_CURRENT_CONTEXT( ctx ); - ATTR3F( VBO_ATTRIB_COLOR0, x, y, z ); + GET_CURRENT_CONTEXT(ctx); + ATTR3F(VBO_ATTRIB_COLOR0, x, y, z); } -static void GLAPIENTRY TAG(Color3fv)( const GLfloat *v ) +static void GLAPIENTRY +TAG(Color3fv)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR3FV( VBO_ATTRIB_COLOR0, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR3FV(VBO_ATTRIB_COLOR0, v); } -static void GLAPIENTRY TAG(Color4f)( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) +static void GLAPIENTRY +TAG(Color4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - GET_CURRENT_CONTEXT( ctx ); - ATTR4F( VBO_ATTRIB_COLOR0, x, y, z, w ); + GET_CURRENT_CONTEXT(ctx); + ATTR4F(VBO_ATTRIB_COLOR0, x, y, z, w); } -static void GLAPIENTRY TAG(Color4fv)( const GLfloat *v ) +static void GLAPIENTRY +TAG(Color4fv)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR4FV( VBO_ATTRIB_COLOR0, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR4FV(VBO_ATTRIB_COLOR0, v); } -static void GLAPIENTRY TAG(SecondaryColor3fEXT)( GLfloat x, GLfloat y, GLfloat z ) + + +static void GLAPIENTRY +TAG(SecondaryColor3fEXT)(GLfloat x, GLfloat y, GLfloat z) { - GET_CURRENT_CONTEXT( ctx ); - ATTR3F( VBO_ATTRIB_COLOR1, x, y, z ); + GET_CURRENT_CONTEXT(ctx); + ATTR3F(VBO_ATTRIB_COLOR1, x, y, z); } -static void GLAPIENTRY TAG(SecondaryColor3fvEXT)( const GLfloat *v ) +static void GLAPIENTRY +TAG(SecondaryColor3fvEXT)(const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - ATTR3FV( VBO_ATTRIB_COLOR1, v ); + GET_CURRENT_CONTEXT(ctx); + ATTR3FV(VBO_ATTRIB_COLOR1, v); } -static void GLAPIENTRY TAG(EdgeFlag)( GLboolean b ) + +static void GLAPIENTRY +TAG(EdgeFlag)(GLboolean b) { - GET_CURRENT_CONTEXT( ctx ); - ATTR1F( VBO_ATTRIB_EDGEFLAG, (GLfloat)b ); + GET_CURRENT_CONTEXT(ctx); + ATTR1F(VBO_ATTRIB_EDGEFLAG, (GLfloat) b); } -static void GLAPIENTRY TAG(Indexf)( GLfloat f ) + + +static void GLAPIENTRY +TAG(Indexf)(GLfloat f) { - GET_CURRENT_CONTEXT( ctx ); - ATTR1F( VBO_ATTRIB_INDEX, f ); + GET_CURRENT_CONTEXT(ctx); + ATTR1F(VBO_ATTRIB_INDEX, f); } -static void GLAPIENTRY TAG(Indexfv)( const GLfloat *f ) +static void GLAPIENTRY +TAG(Indexfv)(const GLfloat * f) { - GET_CURRENT_CONTEXT( ctx ); - ATTR1FV( VBO_ATTRIB_INDEX, f ); + GET_CURRENT_CONTEXT(ctx); + ATTR1FV(VBO_ATTRIB_INDEX, f); } -static void GLAPIENTRY TAG(MultiTexCoord1f)( GLenum target, GLfloat x ) + +static void GLAPIENTRY +TAG(MultiTexCoord1f)(GLenum target, GLfloat x) { - GET_CURRENT_CONTEXT( ctx ); + GET_CURRENT_CONTEXT(ctx); GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; - ATTR1F( attr, x ); + ATTR1F(attr, x); } -static void GLAPIENTRY TAG(MultiTexCoord1fv)( GLenum target, const GLfloat *v ) +static void GLAPIENTRY +TAG(MultiTexCoord1fv)(GLenum target, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); + GET_CURRENT_CONTEXT(ctx); GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; - ATTR1FV( attr, v ); + ATTR1FV(attr, v); } -static void GLAPIENTRY TAG(MultiTexCoord2f)( GLenum target, GLfloat x, GLfloat y ) +static void GLAPIENTRY +TAG(MultiTexCoord2f)(GLenum target, GLfloat x, GLfloat y) { - GET_CURRENT_CONTEXT( ctx ); + GET_CURRENT_CONTEXT(ctx); GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; - ATTR2F( attr, x, y ); + ATTR2F(attr, x, y); } -static void GLAPIENTRY TAG(MultiTexCoord2fv)( GLenum target, const GLfloat *v ) +static void GLAPIENTRY +TAG(MultiTexCoord2fv)(GLenum target, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); + GET_CURRENT_CONTEXT(ctx); GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; - ATTR2FV( attr, v ); + ATTR2FV(attr, v); } -static void GLAPIENTRY TAG(MultiTexCoord3f)( GLenum target, GLfloat x, GLfloat y, - GLfloat z) +static void GLAPIENTRY +TAG(MultiTexCoord3f)(GLenum target, GLfloat x, GLfloat y, GLfloat z) { - GET_CURRENT_CONTEXT( ctx ); + GET_CURRENT_CONTEXT(ctx); GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; - ATTR3F( attr, x, y, z ); + ATTR3F(attr, x, y, z); } -static void GLAPIENTRY TAG(MultiTexCoord3fv)( GLenum target, const GLfloat *v ) +static void GLAPIENTRY +TAG(MultiTexCoord3fv)(GLenum target, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); + GET_CURRENT_CONTEXT(ctx); GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; - ATTR3FV( attr, v ); + ATTR3FV(attr, v); } -static void GLAPIENTRY TAG(MultiTexCoord4f)( GLenum target, GLfloat x, GLfloat y, - GLfloat z, GLfloat w ) +static void GLAPIENTRY +TAG(MultiTexCoord4f)(GLenum target, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - GET_CURRENT_CONTEXT( ctx ); + GET_CURRENT_CONTEXT(ctx); GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; - ATTR4F( attr, x, y, z, w ); + ATTR4F(attr, x, y, z, w); } -static void GLAPIENTRY TAG(MultiTexCoord4fv)( GLenum target, const GLfloat *v ) +static void GLAPIENTRY +TAG(MultiTexCoord4fv)(GLenum target, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); + GET_CURRENT_CONTEXT(ctx); GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; - ATTR4FV( attr, v ); + ATTR4FV(attr, v); } -static void GLAPIENTRY TAG(VertexAttrib1fARB)( GLuint index, GLfloat x ) + +static void GLAPIENTRY +TAG(VertexAttrib1fARB)(GLuint index, GLfloat x) { - GET_CURRENT_CONTEXT( ctx ); - if (index == 0) + GET_CURRENT_CONTEXT(ctx); + if (index == 0) ATTR1F(0, x); else if (index < MAX_VERTEX_GENERIC_ATTRIBS) ATTR1F(VBO_ATTRIB_GENERIC0 + index, x); @@ -271,11 +344,11 @@ static void GLAPIENTRY TAG(VertexAttrib1fARB)( GLuint index, GLfloat x ) ERROR(); } -static void GLAPIENTRY TAG(VertexAttrib1fvARB)( GLuint index, - const GLfloat *v ) +static void GLAPIENTRY +TAG(VertexAttrib1fvARB)(GLuint index, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - if (index == 0) + GET_CURRENT_CONTEXT(ctx); + if (index == 0) ATTR1FV(0, v); else if (index < MAX_VERTEX_GENERIC_ATTRIBS) ATTR1FV(VBO_ATTRIB_GENERIC0 + index, v); @@ -283,11 +356,11 @@ static void GLAPIENTRY TAG(VertexAttrib1fvARB)( GLuint index, ERROR(); } -static void GLAPIENTRY TAG(VertexAttrib2fARB)( GLuint index, GLfloat x, - GLfloat y ) +static void GLAPIENTRY +TAG(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y) { - GET_CURRENT_CONTEXT( ctx ); - if (index == 0) + GET_CURRENT_CONTEXT(ctx); + if (index == 0) ATTR2F(0, x, y); else if (index < MAX_VERTEX_GENERIC_ATTRIBS) ATTR2F(VBO_ATTRIB_GENERIC0 + index, x, y); @@ -295,11 +368,11 @@ static void GLAPIENTRY TAG(VertexAttrib2fARB)( GLuint index, GLfloat x, ERROR(); } -static void GLAPIENTRY TAG(VertexAttrib2fvARB)( GLuint index, - const GLfloat *v ) +static void GLAPIENTRY +TAG(VertexAttrib2fvARB)(GLuint index, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - if (index == 0) + GET_CURRENT_CONTEXT(ctx); + if (index == 0) ATTR2FV(0, v); else if (index < MAX_VERTEX_GENERIC_ATTRIBS) ATTR2FV(VBO_ATTRIB_GENERIC0 + index, v); @@ -307,11 +380,11 @@ static void GLAPIENTRY TAG(VertexAttrib2fvARB)( GLuint index, ERROR(); } -static void GLAPIENTRY TAG(VertexAttrib3fARB)( GLuint index, GLfloat x, - GLfloat y, GLfloat z ) +static void GLAPIENTRY +TAG(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z) { - GET_CURRENT_CONTEXT( ctx ); - if (index == 0) + GET_CURRENT_CONTEXT(ctx); + if (index == 0) ATTR3F(0, x, y, z); else if (index < MAX_VERTEX_GENERIC_ATTRIBS) ATTR3F(VBO_ATTRIB_GENERIC0 + index, x, y, z); @@ -319,11 +392,11 @@ static void GLAPIENTRY TAG(VertexAttrib3fARB)( GLuint index, GLfloat x, ERROR(); } -static void GLAPIENTRY TAG(VertexAttrib3fvARB)( GLuint index, - const GLfloat *v ) +static void GLAPIENTRY +TAG(VertexAttrib3fvARB)(GLuint index, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - if (index == 0) + GET_CURRENT_CONTEXT(ctx); + if (index == 0) ATTR3FV(0, v); else if (index < MAX_VERTEX_GENERIC_ATTRIBS) ATTR3FV(VBO_ATTRIB_GENERIC0 + index, v); @@ -331,12 +404,11 @@ static void GLAPIENTRY TAG(VertexAttrib3fvARB)( GLuint index, ERROR(); } -static void GLAPIENTRY TAG(VertexAttrib4fARB)( GLuint index, GLfloat x, - GLfloat y, GLfloat z, - GLfloat w ) +static void GLAPIENTRY +TAG(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - GET_CURRENT_CONTEXT( ctx ); - if (index == 0) + GET_CURRENT_CONTEXT(ctx); + if (index == 0) ATTR4F(0, x, y, z, w); else if (index < MAX_VERTEX_GENERIC_ATTRIBS) ATTR4F(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); @@ -344,11 +416,11 @@ static void GLAPIENTRY TAG(VertexAttrib4fARB)( GLuint index, GLfloat x, ERROR(); } -static void GLAPIENTRY TAG(VertexAttrib4fvARB)( GLuint index, - const GLfloat *v ) +static void GLAPIENTRY +TAG(VertexAttrib4fvARB)(GLuint index, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - if (index == 0) + GET_CURRENT_CONTEXT(ctx); + if (index == 0) ATTR4FV(0, v); else if (index < MAX_VERTEX_GENERIC_ATTRIBS) ATTR4FV(VBO_ATTRIB_GENERIC0 + index, v); @@ -357,76 +429,257 @@ static void GLAPIENTRY TAG(VertexAttrib4fvARB)( GLuint index, } + +/* Integer-valued generic attributes. + * XXX: the integers just get converted to floats at this time + */ +static void GLAPIENTRY +TAG(VertexAttribI1i)(GLuint index, GLint x) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR1I(0, x); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR1I(VBO_ATTRIB_GENERIC0 + index, x); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI2i)(GLuint index, GLint x, GLint y) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR2I(0, x, y); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR2I(VBO_ATTRIB_GENERIC0 + index, x, y); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR3I(0, x, y, z); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR3I(VBO_ATTRIB_GENERIC0 + index, x, y, z); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR4I(0, x, y, z, w); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR4I(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI2iv)(GLuint index, const GLint *v) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR2IV(0, v); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR2IV(VBO_ATTRIB_GENERIC0 + index, v); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI3iv)(GLuint index, const GLint *v) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR3IV(0, v); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR3IV(VBO_ATTRIB_GENERIC0 + index, v); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI4iv)(GLuint index, const GLint *v) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR4IV(0, v); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR4IV(VBO_ATTRIB_GENERIC0 + index, v); + else + ERROR(); +} + + + +/* Unsigned integer-valued generic attributes. + * XXX: the integers just get converted to floats at this time + */ +static void GLAPIENTRY +TAG(VertexAttribI1ui)(GLuint index, GLuint x) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR1UI(0, x); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR1UI(VBO_ATTRIB_GENERIC0 + index, x); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI2ui)(GLuint index, GLuint x, GLuint y) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR2UI(0, x, y); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR2UI(VBO_ATTRIB_GENERIC0 + index, x, y); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR3UI(0, x, y, z); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR3UI(VBO_ATTRIB_GENERIC0 + index, x, y, z); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR4UI(0, x, y, z, w); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR4UI(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI2uiv)(GLuint index, const GLuint *v) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR2UIV(0, v); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR2UIV(VBO_ATTRIB_GENERIC0 + index, v); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI3uiv)(GLuint index, const GLuint *v) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR3UIV(0, v); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR3UIV(VBO_ATTRIB_GENERIC0 + index, v); + else + ERROR(); +} + +static void GLAPIENTRY +TAG(VertexAttribI4uiv)(GLuint index, const GLuint *v) +{ + GET_CURRENT_CONTEXT(ctx); + if (index == 0) + ATTR4UIV(0, v); + else if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR4UIV(VBO_ATTRIB_GENERIC0 + index, v); + else + ERROR(); +} + + + /* In addition to supporting NV_vertex_program, these entrypoints are * used by the display list and other code specifically because of * their property of aliasing with other attributes. (See * vbo_save_loopback.c) */ -static void GLAPIENTRY TAG(VertexAttrib1fNV)( GLuint index, GLfloat x ) +static void GLAPIENTRY +TAG(VertexAttrib1fNV)(GLuint index, GLfloat x) { - GET_CURRENT_CONTEXT( ctx ); + GET_CURRENT_CONTEXT(ctx); if (index < VBO_ATTRIB_MAX) ATTR1F(index, x); } -static void GLAPIENTRY TAG(VertexAttrib1fvNV)( GLuint index, - const GLfloat *v ) +static void GLAPIENTRY +TAG(VertexAttrib1fvNV)(GLuint index, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - if (index < VBO_ATTRIB_MAX) + GET_CURRENT_CONTEXT(ctx); + if (index < VBO_ATTRIB_MAX) ATTR1FV(index, v); } -static void GLAPIENTRY TAG(VertexAttrib2fNV)( GLuint index, GLfloat x, - GLfloat y ) +static void GLAPIENTRY +TAG(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y) { - GET_CURRENT_CONTEXT( ctx ); - if (index < VBO_ATTRIB_MAX) + GET_CURRENT_CONTEXT(ctx); + if (index < VBO_ATTRIB_MAX) ATTR2F(index, x, y); } -static void GLAPIENTRY TAG(VertexAttrib2fvNV)( GLuint index, - const GLfloat *v ) +static void GLAPIENTRY +TAG(VertexAttrib2fvNV)(GLuint index, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - if (index < VBO_ATTRIB_MAX) + GET_CURRENT_CONTEXT(ctx); + if (index < VBO_ATTRIB_MAX) ATTR2FV(index, v); } -static void GLAPIENTRY TAG(VertexAttrib3fNV)( GLuint index, GLfloat x, - GLfloat y, GLfloat z ) +static void GLAPIENTRY +TAG(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z) { - GET_CURRENT_CONTEXT( ctx ); - if (index < VBO_ATTRIB_MAX) + GET_CURRENT_CONTEXT(ctx); + if (index < VBO_ATTRIB_MAX) ATTR3F(index, x, y, z); } -static void GLAPIENTRY TAG(VertexAttrib3fvNV)( GLuint index, - const GLfloat *v ) +static void GLAPIENTRY +TAG(VertexAttrib3fvNV)(GLuint index, + const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - if (index < VBO_ATTRIB_MAX) + GET_CURRENT_CONTEXT(ctx); + if (index < VBO_ATTRIB_MAX) ATTR3FV(index, v); } -static void GLAPIENTRY TAG(VertexAttrib4fNV)( GLuint index, GLfloat x, - GLfloat y, GLfloat z, - GLfloat w ) +static void GLAPIENTRY +TAG(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - GET_CURRENT_CONTEXT( ctx ); - if (index < VBO_ATTRIB_MAX) + GET_CURRENT_CONTEXT(ctx); + if (index < VBO_ATTRIB_MAX) ATTR4F(index, x, y, z, w); } -static void GLAPIENTRY TAG(VertexAttrib4fvNV)( GLuint index, - const GLfloat *v ) +static void GLAPIENTRY +TAG(VertexAttrib4fvNV)(GLuint index, const GLfloat * v) { - GET_CURRENT_CONTEXT( ctx ); - if (index < VBO_ATTRIB_MAX) + GET_CURRENT_CONTEXT(ctx); + if (index < VBO_ATTRIB_MAX) ATTR4FV(index, v); } + #define MAT( ATTR, N, face, params ) \ do { \ if (face != GL_BACK) \ @@ -438,32 +691,33 @@ do { \ /* Colormaterial conflicts are dealt with later. */ -static void GLAPIENTRY TAG(Materialfv)( GLenum face, GLenum pname, - const GLfloat *params ) +static void GLAPIENTRY +TAG(Materialfv)(GLenum face, GLenum pname, + const GLfloat * params) { - GET_CURRENT_CONTEXT( ctx ); + GET_CURRENT_CONTEXT(ctx); switch (pname) { case GL_EMISSION: - MAT( VBO_ATTRIB_MAT_FRONT_EMISSION, 4, face, params ); + MAT(VBO_ATTRIB_MAT_FRONT_EMISSION, 4, face, params); break; case GL_AMBIENT: - MAT( VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params ); + MAT(VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params); break; case GL_DIFFUSE: - MAT( VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params ); + MAT(VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params); break; case GL_SPECULAR: - MAT( VBO_ATTRIB_MAT_FRONT_SPECULAR, 4, face, params ); + MAT(VBO_ATTRIB_MAT_FRONT_SPECULAR, 4, face, params); break; case GL_SHININESS: - MAT( VBO_ATTRIB_MAT_FRONT_SHININESS, 1, face, params ); + MAT(VBO_ATTRIB_MAT_FRONT_SHININESS, 1, face, params); break; case GL_COLOR_INDEXES: - MAT( VBO_ATTRIB_MAT_FRONT_INDEXES, 3, face, params ); + MAT(VBO_ATTRIB_MAT_FRONT_INDEXES, 3, face, params); break; case GL_AMBIENT_AND_DIFFUSE: - MAT( VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params ); - MAT( VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params ); + MAT(VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params); + MAT(VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params); break; default: ERROR(); diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index 1ef4917419..9b2d59f9e4 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -220,8 +220,9 @@ static void vbo_exec_wrap_upgrade_vertex( struct vbo_exec_context *exec, struct gl_context *ctx = exec->ctx; struct vbo_context *vbo = vbo_context(ctx); GLint lastcount = exec->vtx.vert_count; - GLfloat *tmp; - GLuint oldsz; + GLfloat *old_attrptr[VBO_ATTRIB_MAX]; + GLuint old_vtx_size = exec->vtx.vertex_size; + GLuint oldsz = exec->vtx.attrsz[attr]; GLuint i; /* Run pipeline on current vertices, copy wrapped vertices @@ -229,86 +230,103 @@ static void vbo_exec_wrap_upgrade_vertex( struct vbo_exec_context *exec, */ vbo_exec_wrap_buffers( exec ); + if (unlikely(exec->vtx.copied.nr)) { + /* We're in the middle of a primitive, keep the old vertex + * format around to be able to translate the copied vertices to + * the new format. + */ + memcpy(old_attrptr, exec->vtx.attrptr, sizeof(old_attrptr)); + } - /* Do a COPY_TO_CURRENT to ensure back-copying works for the case - * when the attribute already exists in the vertex and is having - * its size increased. - */ - vbo_exec_copy_to_current( exec ); - + if (unlikely(oldsz)) { + /* Do a COPY_TO_CURRENT to ensure back-copying works for the + * case when the attribute already exists in the vertex and is + * having its size increased. + */ + vbo_exec_copy_to_current( exec ); + } /* Heuristic: Attempt to isolate attributes received outside * begin/end so that they don't bloat the vertices. */ if (ctx->Driver.CurrentExecPrimitive == PRIM_OUTSIDE_BEGIN_END && - exec->vtx.attrsz[attr] == 0 && - lastcount > 8 && - exec->vtx.vertex_size) { + !oldsz && lastcount > 8 && exec->vtx.vertex_size) { + vbo_exec_copy_to_current( exec ); reset_attrfv( exec ); } /* Fix up sizes: */ - oldsz = exec->vtx.attrsz[attr]; exec->vtx.attrsz[attr] = newsz; - exec->vtx.vertex_size += newsz - oldsz; exec->vtx.max_vert = ((VBO_VERT_BUFFER_SIZE - exec->vtx.buffer_used) / (exec->vtx.vertex_size * sizeof(GLfloat))); exec->vtx.vert_count = 0; exec->vtx.buffer_ptr = exec->vtx.buffer_map; - - /* Recalculate all the attrptr[] values - */ - for (i = 0, tmp = exec->vtx.vertex ; i < VBO_ATTRIB_MAX ; i++) { - if (exec->vtx.attrsz[i]) { - exec->vtx.attrptr[i] = tmp; - tmp += exec->vtx.attrsz[i]; + if (unlikely(oldsz)) { + /* Size changed, recalculate all the attrptr[] values + */ + GLfloat *tmp = exec->vtx.vertex; + + for (i = 0 ; i < VBO_ATTRIB_MAX ; i++) { + if (exec->vtx.attrsz[i]) { + exec->vtx.attrptr[i] = tmp; + tmp += exec->vtx.attrsz[i]; + } + else + exec->vtx.attrptr[i] = NULL; /* will not be dereferenced */ } - else - exec->vtx.attrptr[i] = NULL; /* will not be dereferenced */ - } - /* Copy from current to repopulate the vertex with correct values. - */ - vbo_exec_copy_from_current( exec ); + /* Copy from current to repopulate the vertex with correct + * values. + */ + vbo_exec_copy_from_current( exec ); + + } else { + /* Just have to append the new attribute at the end */ + exec->vtx.attrptr[attr] = exec->vtx.vertex + + exec->vtx.vertex_size - newsz; + } /* Replay stored vertices to translate them * to new format here. * * -- No need to replay - just copy piecewise */ - if (exec->vtx.copied.nr) - { + if (unlikely(exec->vtx.copied.nr)) { GLfloat *data = exec->vtx.copied.buffer; GLfloat *dest = exec->vtx.buffer_ptr; GLuint j; assert(exec->vtx.buffer_ptr == exec->vtx.buffer_map); - + for (i = 0 ; i < exec->vtx.copied.nr ; i++) { for (j = 0 ; j < VBO_ATTRIB_MAX ; j++) { - if (exec->vtx.attrsz[j]) { + GLuint sz = exec->vtx.attrsz[j]; + + if (sz) { + GLint old_offset = old_attrptr[j] - exec->vtx.vertex; + GLint new_offset = exec->vtx.attrptr[j] - exec->vtx.vertex; + if (j == attr) { if (oldsz) { - COPY_CLEAN_4V( dest, oldsz, data ); - data += oldsz; - dest += newsz; + GLfloat tmp[4]; + COPY_CLEAN_4V(tmp, oldsz, data + old_offset); + COPY_SZ_4V(dest + new_offset, newsz, tmp); } else { - const GLfloat *current = (const GLfloat *)vbo->currval[j].Ptr; - COPY_SZ_4V( dest, newsz, current ); - dest += newsz; + GLfloat *current = (GLfloat *)vbo->currval[j].Ptr; + COPY_SZ_4V(dest + new_offset, sz, current); } } else { - GLuint sz = exec->vtx.attrsz[j]; - COPY_SZ_4V( dest, sz, data ); - dest += sz; - data += sz; + COPY_SZ_4V(dest + new_offset, sz, data + old_offset); } } } + + data += old_vtx_size; + dest += exec->vtx.vertex_size; } exec->vtx.buffer_ptr = dest; @@ -658,6 +676,24 @@ static void vbo_exec_vtxfmt_init( struct vbo_exec_context *exec ) vfmt->VertexAttrib4fNV = vbo_VertexAttrib4fNV; vfmt->VertexAttrib4fvNV = vbo_VertexAttrib4fvNV; + /* integer-valued */ + vfmt->VertexAttribI1i = vbo_VertexAttribI1i; + vfmt->VertexAttribI2i = vbo_VertexAttribI2i; + vfmt->VertexAttribI3i = vbo_VertexAttribI3i; + vfmt->VertexAttribI4i = vbo_VertexAttribI4i; + vfmt->VertexAttribI2iv = vbo_VertexAttribI2iv; + vfmt->VertexAttribI3iv = vbo_VertexAttribI3iv; + vfmt->VertexAttribI4iv = vbo_VertexAttribI4iv; + + /* unsigned integer-valued */ + vfmt->VertexAttribI1ui = vbo_VertexAttribI1ui; + vfmt->VertexAttribI2ui = vbo_VertexAttribI2ui; + vfmt->VertexAttribI3ui = vbo_VertexAttribI3ui; + vfmt->VertexAttribI4ui = vbo_VertexAttribI4ui; + vfmt->VertexAttribI2uiv = vbo_VertexAttribI2uiv; + vfmt->VertexAttribI3uiv = vbo_VertexAttribI3uiv; + vfmt->VertexAttribI4uiv = vbo_VertexAttribI4uiv; + vfmt->Materialfv = vbo_Materialfv; vfmt->EdgeFlag = vbo_EdgeFlag; diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c index 71ac0066ca..94aa021ac9 100644 --- a/src/mesa/vbo/vbo_exec_draw.c +++ b/src/mesa/vbo/vbo_exec_draw.c @@ -160,7 +160,6 @@ vbo_exec_bind_arrays( struct gl_context *ctx ) struct vbo_exec_context *exec = &vbo->exec; struct gl_client_array *arrays = exec->vtx.arrays; const GLuint count = exec->vtx.vert_count; - const GLubyte *data = (GLubyte *) exec->vtx.buffer_map; const GLuint *map; GLuint attr; GLbitfield varying_inputs = 0x0; @@ -215,6 +214,9 @@ vbo_exec_bind_arrays( struct gl_context *ctx ) const GLuint src = map[attr]; if (exec->vtx.attrsz[src]) { + GLsizeiptr offset = (GLbyte *)exec->vtx.attrptr[src] - + (GLbyte *)exec->vtx.vertex; + /* override the default array set above */ ASSERT(attr < Elements(exec->vtx.inputs)); ASSERT(attr < Elements(exec->vtx.arrays)); /* arrays[] */ @@ -222,17 +224,13 @@ vbo_exec_bind_arrays( struct gl_context *ctx ) if (_mesa_is_bufferobj(exec->vtx.bufferobj)) { /* a real buffer obj: Ptr is an offset, not a pointer*/ - GLsizeiptr offset; assert(exec->vtx.bufferobj->Pointer); /* buf should be mapped */ - offset = (GLbyte *) data - - (GLbyte *) exec->vtx.bufferobj->Pointer + - exec->vtx.bufferobj->Offset; assert(offset >= 0); - arrays[attr].Ptr = (void *) offset; + arrays[attr].Ptr = (GLubyte *)exec->vtx.bufferobj->Offset + offset; } else { /* Ptr into ordinary app memory */ - arrays[attr].Ptr = (void *) data; + arrays[attr].Ptr = (GLubyte *)exec->vtx.buffer_map + offset; } arrays[attr].Size = exec->vtx.attrsz[src]; arrays[attr].StrideB = exec->vtx.vertex_size * sizeof(GLfloat); @@ -245,7 +243,6 @@ vbo_exec_bind_arrays( struct gl_context *ctx ) exec->vtx.bufferobj); arrays[attr]._MaxElement = count; /* ??? */ - data += exec->vtx.attrsz[src] * sizeof(GLfloat); varying_inputs |= 1 << attr; } } diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c index 19c4b15d5f..817d478e2a 100644 --- a/src/mesa/vbo/vbo_save_api.c +++ b/src/mesa/vbo/vbo_save_api.c @@ -705,56 +705,56 @@ static void GLAPIENTRY _save_EvalCoord1f( GLfloat u ) { GET_CURRENT_CONTEXT(ctx); DO_FALLBACK(ctx); - ctx->Save->EvalCoord1f( u ); + CALL_EvalCoord1f(ctx->Save, (u)); } static void GLAPIENTRY _save_EvalCoord1fv( const GLfloat *v ) { GET_CURRENT_CONTEXT(ctx); DO_FALLBACK(ctx); - ctx->Save->EvalCoord1fv( v ); + CALL_EvalCoord1fv(ctx->Save, (v)); } static void GLAPIENTRY _save_EvalCoord2f( GLfloat u, GLfloat v ) { GET_CURRENT_CONTEXT(ctx); DO_FALLBACK(ctx); - ctx->Save->EvalCoord2f( u, v ); + CALL_EvalCoord2f(ctx->Save, (u, v)); } static void GLAPIENTRY _save_EvalCoord2fv( const GLfloat *v ) { GET_CURRENT_CONTEXT(ctx); DO_FALLBACK(ctx); - ctx->Save->EvalCoord2fv( v ); + CALL_EvalCoord2fv(ctx->Save, (v)); } static void GLAPIENTRY _save_EvalPoint1( GLint i ) { GET_CURRENT_CONTEXT(ctx); DO_FALLBACK(ctx); - ctx->Save->EvalPoint1( i ); + CALL_EvalPoint1(ctx->Save, (i)); } static void GLAPIENTRY _save_EvalPoint2( GLint i, GLint j ) { GET_CURRENT_CONTEXT(ctx); DO_FALLBACK(ctx); - ctx->Save->EvalPoint2( i, j ); + CALL_EvalPoint2(ctx->Save, (i, j)); } static void GLAPIENTRY _save_CallList( GLuint l ) { GET_CURRENT_CONTEXT(ctx); DO_FALLBACK(ctx); - ctx->Save->CallList( l ); + CALL_CallList(ctx->Save, (l)); } static void GLAPIENTRY _save_CallLists( GLsizei n, GLenum type, const GLvoid *v ) { GET_CURRENT_CONTEXT(ctx); DO_FALLBACK(ctx); - ctx->Save->CallLists( n, type, v ); + CALL_CallLists(ctx->Save, (n, type, v)); } @@ -1065,6 +1065,24 @@ static void _save_vtxfmt_init( struct gl_context *ctx ) vfmt->VertexAttrib4fNV = _save_VertexAttrib4fNV; vfmt->VertexAttrib4fvNV = _save_VertexAttrib4fvNV; + /* integer-valued */ + vfmt->VertexAttribI1i = _save_VertexAttribI1i; + vfmt->VertexAttribI2i = _save_VertexAttribI2i; + vfmt->VertexAttribI3i = _save_VertexAttribI3i; + vfmt->VertexAttribI4i = _save_VertexAttribI4i; + vfmt->VertexAttribI2iv = _save_VertexAttribI2iv; + vfmt->VertexAttribI3iv = _save_VertexAttribI3iv; + vfmt->VertexAttribI4iv = _save_VertexAttribI4iv; + + /* unsigned integer-valued */ + vfmt->VertexAttribI1ui = _save_VertexAttribI1ui; + vfmt->VertexAttribI2ui = _save_VertexAttribI2ui; + vfmt->VertexAttribI3ui = _save_VertexAttribI3ui; + vfmt->VertexAttribI4ui = _save_VertexAttribI4ui; + vfmt->VertexAttribI2uiv = _save_VertexAttribI2uiv; + vfmt->VertexAttribI3uiv = _save_VertexAttribI3uiv; + vfmt->VertexAttribI4uiv = _save_VertexAttribI4uiv; + /* This will all require us to fallback to saving the list as opcodes: */ _MESA_INIT_DLIST_VTXFMT(vfmt, _save_); /* inside begin/end */ |
