diff options
Diffstat (limited to 'mesalib/src')
40 files changed, 1184 insertions, 455 deletions
diff --git a/mesalib/src/glsl/.gitignore b/mesalib/src/glsl/.gitignore index d26839a3e..afe68a0f1 100644 --- a/mesalib/src/glsl/.gitignore +++ b/mesalib/src/glsl/.gitignore @@ -1,8 +1,8 @@ -glsl_compiler -glsl_lexer.cpp -glsl_parser.cpp -glsl_parser.h -glsl_parser.output -builtin_function.cpp -builtin_compiler -glsl_test +glsl_compiler
+glsl_lexer.cpp
+glsl_parser.cpp
+glsl_parser.h
+glsl_parser.output
+builtin_function.cpp
+builtin_compiler
+glsl_test
diff --git a/mesalib/src/glsl/ast.h b/mesalib/src/glsl/ast.h index 4438b85bb..6d81afc99 100644 --- a/mesalib/src/glsl/ast.h +++ b/mesalib/src/glsl/ast.h @@ -63,6 +63,10 @@ public: /* If the user *does* call delete, that's OK, we will just * ralloc_free in that case. */ + static void operator delete(void *table, void *ctx) + { + ralloc_free(table); + } static void operator delete(void *table) { ralloc_free(table); diff --git a/mesalib/src/glsl/doflexbison.bat b/mesalib/src/glsl/doflexbison.bat new file mode 100644 index 000000000..8a5e4f0a6 --- /dev/null +++ b/mesalib/src/glsl/doflexbison.bat @@ -0,0 +1,21 @@ +@echo off
+setlocal
+
+cd "%~dp0"
+
+set M4=..\..\..\tools\mhmake\m4.exe
+set BISON_PKGDATADIR=../../../tools/mhmake/src/bisondata
+
+set path=..\..\..\tools\mhmake;%path%
+
+..\..\..\tools\mhmake\bison.exe -v -o glsl_parser.cpp -p "_mesa_glsl_" --defines=glsl_parser.h glsl_parser.yy
+
+..\..\..\tools\mhmake\bison.exe -v -o glcpp/glcpp-parse.c --defines=glcpp/glcpp-parse.h glcpp/glcpp-parse.y
+
+copy "..\..\..\tools\mhmake\flex++.exe" flex.exe
+flex.exe --nounistd -oglsl_lexer.cpp glsl_lexer.ll
+flex.exe --nounistd -oglcpp/glcpp-lex.c glcpp/glcpp-lex.l
+del flex.exe
+
+endlocal
+
diff --git a/mesalib/src/glsl/getopt.cpp b/mesalib/src/glsl/getopt.cpp new file mode 100644 index 000000000..ea5dd3927 --- /dev/null +++ b/mesalib/src/glsl/getopt.cpp @@ -0,0 +1,552 @@ +/* $OpenBSD: getopt_long.c,v 1.20 2005/10/25 15:49:37 jmc Exp $ */ +/* $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $ */ +// Adapted for Box Backup by Chris Wilson <chris+boxbackup@qwirx.com> + +/* + * Copyright (c) 2002 Todd C. Miller <Todd.Miller@courtesan.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Sponsored in part by the Defense Advanced Research Projects + * Agency (DARPA) and Air Force Research Laboratory, Air Force + * Materiel Command, USAF, under agreement number F39502-99-1-0512. + */ +/*- + * Copyright (c) 2000 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Dieter Baron and Thomas Klausner. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +// #include "Box.h" + +#include <errno.h> +#include <stdarg.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#define __STDC__ 1 + +#include "getopt.h" + +#if defined _MSC_VER || defined __MINGW32__ +#define REPLACE_GETOPT /* use this getopt as the system getopt(3) */ + +#ifdef REPLACE_GETOPT +int opterr = 1; /* if error message should be printed */ +int optind = 1; /* index into parent argv vector */ +int optopt = '?'; /* character checked for validity */ +int optreset; /* reset getopt */ +char *optarg; /* argument associated with option */ +#endif + +#define PRINT_ERROR ((opterr) && (*options != ':')) + +#define FLAG_PERMUTE 0x01 /* permute non-options to the end of argv */ +#define FLAG_ALLARGS 0x02 /* treat non-options as args to option "-1" */ +#define FLAG_LONGONLY 0x04 /* operate as getopt_long_only */ + +/* return values */ +#define BADCH (int)'?' +#define BADARG ((*options == ':') ? (int)':' : (int)'?') +#define INORDER (int)1 + +#define EMSG "" + +static void warnx(const char* fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fprintf(stderr, "\n"); + } + + static int getopt_internal(int, char * const *, const char *, + const struct option *, int *, int); + static int parse_long_options(char * const *, const char *, + const struct option *, int *, int); + static int gcd(int, int); + static void permute_args(int, int, int, char * const *); + + static char *place = EMSG; /* option letter processing */ + + /* XXX: set optreset to 1 rather than these two */ + static int nonopt_start = -1; /* first non option argument (for permute) */ + static int nonopt_end = -1; /* first option after non options (for permute) */ + + /* Error messages */ + static const char recargchar[] = "option requires an argument -- %c"; + static const char recargstring[] = "option requires an argument -- %s"; + static const char ambig[] = "ambiguous option -- %.*s"; + static const char noarg[] = "option doesn't take an argument -- %.*s"; + static const char illoptchar[] = "unknown option -- %c"; + static const char illoptstring[] = "unknown option -- %s"; + + /* + * Compute the greatest common divisor of a and b. + */ + static int + gcd(int a, int b) + { + int c; + + c = a % b; + while (c != 0) { + a = b; + b = c; + c = a % b; + } + + return (b); + } + + /* + * Exchange the block from nonopt_start to nonopt_end with the block + * from nonopt_end to opt_end (keeping the same order of arguments + * in each block). + */ + static void + permute_args(int panonopt_start, int panonopt_end, int opt_end, + char * const *nargv) + { + int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos; + char *swap; + + /* + * compute lengths of blocks and number and size of cycles + */ + nnonopts = panonopt_end - panonopt_start; + nopts = opt_end - panonopt_end; + ncycle = gcd(nnonopts, nopts); + cyclelen = (opt_end - panonopt_start) / ncycle; + + for (i = 0; i < ncycle; i++) { + cstart = panonopt_end+i; + pos = cstart; + for (j = 0; j < cyclelen; j++) { + if (pos >= panonopt_end) + pos -= nnonopts; + else + pos += nopts; + swap = nargv[pos]; + /* LINTED const cast */ + ((char **) nargv)[pos] = nargv[cstart]; + /* LINTED const cast */ + ((char **)nargv)[cstart] = swap; + } + } + } + + /* + * parse_long_options -- + * Parse long options in argc/argv argument vector. + * Returns -1 if short_too is set and the option does not match long_options. + */ + static int + parse_long_options(char * const *nargv, const char *options, + const struct option *long_options, int *idx, int short_too) + { + char *current_argv, *has_equal; + size_t current_argv_len; + int i, match; + + current_argv = place; + match = -1; + + optind++; + + if ((has_equal = strchr(current_argv, '=')) != NULL) { + /* argument found (--option=arg) */ + current_argv_len = has_equal - current_argv; + has_equal++; + } else + current_argv_len = strlen(current_argv); + + for (i = 0; long_options[i].name; i++) { + /* find matching long option */ + if (strncmp(current_argv, long_options[i].name, + current_argv_len)) + continue; + + if (strlen(long_options[i].name) == current_argv_len) { + /* exact match */ + match = i; + break; + } + /* + * If this is a known short option, don't allow + * a partial match of a single character. + */ + if (short_too && current_argv_len == 1) + continue; + + if (match == -1) /* partial match */ + match = i; + else { + /* ambiguous abbreviation */ + if (PRINT_ERROR) + warnx(ambig, (int)current_argv_len, + current_argv); + optopt = 0; + return (BADCH); + } + } + if (match != -1) { /* option found */ + if (long_options[match].has_arg == no_argument + && has_equal) { + if (PRINT_ERROR) + warnx(noarg, (int)current_argv_len, + current_argv); + /* + * XXX: GNU sets optopt to val regardless of flag + */ + if (long_options[match].flag == NULL) + optopt = long_options[match].val; + else + optopt = 0; + return (BADARG); + } + if (long_options[match].has_arg == required_argument || + long_options[match].has_arg == optional_argument) { + if (has_equal) + optarg = has_equal; + else if (long_options[match].has_arg == + required_argument) { + /* + * optional argument doesn't use next nargv + */ + optarg = nargv[optind++]; + } + } + if ((long_options[match].has_arg == required_argument) + && (optarg == NULL)) { + /* + * Missing argument; leading ':' indicates no error + * should be generated. + */ + if (PRINT_ERROR) + warnx(recargstring, + current_argv); + /* + * XXX: GNU sets optopt to val regardless of flag + */ + if (long_options[match].flag == NULL) + optopt = long_options[match].val; + else + optopt = 0; + --optind; + return (BADARG); + } + } else { /* unknown option */ + if (short_too) { + --optind; + return (-1); + } + if (PRINT_ERROR) + warnx(illoptstring, current_argv); + optopt = 0; + return (BADCH); + } + if (idx) + *idx = match; + if (long_options[match].flag) { + *long_options[match].flag = long_options[match].val; + return (0); + } else + return (long_options[match].val); + } + + /* + * getopt_internal -- + * Parse argc/argv argument vector. Called by user level routines. + */ + static int + getopt_internal(int nargc, char * const *nargv, const char *options, + const struct option *long_options, int *idx, int flags) + { + const char * oli; /* option letter list index */ + int optchar, short_too; + static int posixly_correct = -1; + + if (options == NULL) + return (-1); + + /* + * Disable GNU extensions if POSIXLY_CORRECT is set or options + * string begins with a '+'. + */ + if (posixly_correct == -1) + posixly_correct = (getenv("POSIXLY_CORRECT") != NULL); + if (posixly_correct || *options == '+') + flags &= ~FLAG_PERMUTE; + else if (*options == '-') + flags |= FLAG_ALLARGS; + if (*options == '+' || *options == '-') + options++; + + /* + * XXX Some GNU programs (like cvs) set optind to 0 instead of + * XXX using optreset. Work around this braindamage. + */ + if (optind == 0) + optind = optreset = 1; + + optarg = NULL; + if (optreset) + nonopt_start = nonopt_end = -1; + start: + if (optreset || !*place) { /* update scanning pointer */ + optreset = 0; + if (optind >= nargc) { /* end of argument vector */ + place = EMSG; + if (nonopt_end != -1) { + /* do permutation, if we have to */ + permute_args(nonopt_start, nonopt_end, + optind, nargv); + optind -= nonopt_end - nonopt_start; + } + else if (nonopt_start != -1) { + /* + * If we skipped non-options, set optind + * to the first of them. + */ + optind = nonopt_start; + } + nonopt_start = nonopt_end = -1; + return (-1); + } + if (*(place = nargv[optind]) != '-' || + (place[1] == '\0' && strchr(options, '-') == NULL)) { + place = EMSG; /* found non-option */ + if (flags & FLAG_ALLARGS) { + /* + * GNU extension: + * return non-option as argument to option 1 + */ + optarg = nargv[optind++]; + return (INORDER); + } + if (!(flags & FLAG_PERMUTE)) { + /* + * If no permutation wanted, stop parsing + * at first non-option. + */ + return (-1); + } + /* do permutation */ + if (nonopt_start == -1) + nonopt_start = optind; + else if (nonopt_end != -1) { + permute_args(nonopt_start, nonopt_end, + optind, nargv); + nonopt_start = optind - + (nonopt_end - nonopt_start); + nonopt_end = -1; + } + optind++; + /* process next argument */ + goto start; + } + if (nonopt_start != -1 && nonopt_end == -1) + nonopt_end = optind; + + /* + * If we have "-" do nothing, if "--" we are done. + */ + if (place[1] != '\0' && *++place == '-' && place[1] == '\0') { + optind++; + place = EMSG; + /* + * We found an option (--), so if we skipped + * non-options, we have to permute. + */ + if (nonopt_end != -1) { + permute_args(nonopt_start, nonopt_end, + optind, nargv); + optind -= nonopt_end - nonopt_start; + } + nonopt_start = nonopt_end = -1; + return (-1); + } + } + + /* + * Check long options if: + * 1) we were passed some + * 2) the arg is not just "-" + * 3) either the arg starts with -- we are getopt_long_only() + */ + if (long_options != NULL && place != nargv[optind] && + (*place == '-' || (flags & FLAG_LONGONLY))) { + short_too = 0; + if (*place == '-') + place++; /* --foo long option */ + else if (*place != ':' && strchr(options, *place) != NULL) + short_too = 1; /* could be short option too */ + + optchar = parse_long_options(nargv, options, long_options, + idx, short_too); + if (optchar != -1) { + place = EMSG; + return (optchar); + } + } + + if ((optchar = (int)*place++) == (int)':' || + optchar == (int)'-' && *place != '\0' || + (oli = strchr(options, optchar)) == NULL) { + /* + * If the user specified "-" and '-' isn't listed in + * options, return -1 (non-option) as per POSIX. + * Otherwise, it is an unknown option character (or ':'). + */ + if (optchar == (int)'-' && *place == '\0') + return (-1); + if (!*place) + ++optind; + if (PRINT_ERROR) + warnx(illoptchar, optchar); + optopt = optchar; + return (BADCH); + } + if (long_options != NULL && optchar == 'W' && oli[1] == ';') { + /* -W long-option */ + if (*place) /* no space */ + /* NOTHING */; + else if (++optind >= nargc) { /* no arg */ + place = EMSG; + if (PRINT_ERROR) + warnx(recargchar, optchar); + optopt = optchar; + return (BADARG); + } else /* white space */ + place = nargv[optind]; + optchar = parse_long_options(nargv, options, long_options, + idx, 0); + place = EMSG; + return (optchar); + } + if (*++oli != ':') { /* doesn't take argument */ + if (!*place) + ++optind; + } else { /* takes (optional) argument */ + optarg = NULL; + if (*place) /* no white space */ + optarg = place; + /* XXX: disable test for :: if PC? (GNU doesn't) */ + else if (oli[1] != ':') { /* arg not optional */ + if (++optind >= nargc) { /* no arg */ + place = EMSG; + if (PRINT_ERROR) + warnx(recargchar, optchar); + optopt = optchar; + return (BADARG); + } else + optarg = nargv[optind]; + } else if (!(flags & FLAG_PERMUTE)) { + /* + * If permutation is disabled, we can accept an + * optional arg separated by whitespace so long + * as it does not start with a dash (-). + */ + if (optind + 1 < nargc && *nargv[optind + 1] != '-') + optarg = nargv[++optind]; + } + place = EMSG; + ++optind; + } + /* dump back option letter */ + return (optchar); + } + + #ifdef REPLACE_GETOPT + /* + * getopt -- + * Parse argc/argv argument vector. + * + * [eventually this will replace the BSD getopt] + */ + int + getopt(int nargc, char * const *nargv, const char *options) + { + + /* + * We don't pass FLAG_PERMUTE to getopt_internal() since + * the BSD getopt(3) (unlike GNU) has never done this. + * + * Furthermore, since many privileged programs call getopt() + * before dropping privileges it makes sense to keep things + * as simple (and bug-free) as possible. + */ + return (getopt_internal(nargc, nargv, options, NULL, NULL, 0)); + } + #endif /* REPLACE_GETOPT */ + + /* + * getopt_long -- + * Parse argc/argv argument vector. + */ + int + getopt_long(int nargc, char * const *nargv, const char *options, + const struct option *long_options, int *idx) + { + + return (getopt_internal(nargc, nargv, options, long_options, idx, + FLAG_PERMUTE)); + } + + /* + * getopt_long_only -- + * Parse argc/argv argument vector. + */ + int + getopt_long_only(int nargc, char * const *nargv, const char *options, + const struct option *long_options, int *idx) + { + + return (getopt_internal(nargc, nargv, options, long_options, idx, + FLAG_PERMUTE|FLAG_LONGONLY)); + } + +#endif // defined _MSC_VER || defined __MINGW32__
\ No newline at end of file diff --git a/mesalib/src/glsl/glcpp/.gitignore b/mesalib/src/glsl/glcpp/.gitignore index 24a7119ca..9f7e0cc3e 100644 --- a/mesalib/src/glsl/glcpp/.gitignore +++ b/mesalib/src/glsl/glcpp/.gitignore @@ -1,6 +1,6 @@ -glcpp -glcpp-lex.c -glcpp-parse.output -glcpp-parse.c -glcpp-parse.h -tests/*.out +glcpp
+glcpp-lex.c
+glcpp-parse.output
+glcpp-parse.c
+glcpp-parse.h
+tests/*.out
diff --git a/mesalib/src/glsl/glcpp/glcpp.c b/mesalib/src/glsl/glcpp/glcpp.c index e461a6502..106c9916b 100644 --- a/mesalib/src/glsl/glcpp/glcpp.c +++ b/mesalib/src/glsl/glcpp/glcpp.c @@ -28,6 +28,14 @@ #include "main/mtypes.h" #include "main/shaderobj.h" +#ifdef _MSC_VER +#include <io.h> +#define STDIN_FILENO 0 +#define read _read +#define open _open +#define close _close +#endif + extern int yydebug; void diff --git a/mesalib/src/glsl/glsl_parser_extras.h b/mesalib/src/glsl/glsl_parser_extras.h index d97217ef9..2564e5856 100644 --- a/mesalib/src/glsl/glsl_parser_extras.h +++ b/mesalib/src/glsl/glsl_parser_extras.h @@ -72,6 +72,10 @@ struct _mesa_glsl_parse_state { /* If the user *does* call delete, that's OK, we will just * ralloc_free in that case. */ + static void operator delete(void *mem, void *ctx) + { + ralloc_free(mem); + } static void operator delete(void *mem) { ralloc_free(mem); diff --git a/mesalib/src/glsl/glsl_symbol_table.cpp b/mesalib/src/glsl/glsl_symbol_table.cpp index bcb65d301..27a669b65 100644 --- a/mesalib/src/glsl/glsl_symbol_table.cpp +++ b/mesalib/src/glsl/glsl_symbol_table.cpp @@ -36,6 +36,10 @@ public: } /* If the user *does* call delete, that's OK, we will just ralloc_free. */ + static void operator delete(void *entry, void *ctx) + { + ralloc_free(entry); + } static void operator delete(void *entry) { ralloc_free(entry); diff --git a/mesalib/src/glsl/glsl_symbol_table.h b/mesalib/src/glsl/glsl_symbol_table.h index 637bc033b..1afeddb33 100644 --- a/mesalib/src/glsl/glsl_symbol_table.h +++ b/mesalib/src/glsl/glsl_symbol_table.h @@ -68,6 +68,11 @@ public: /* If the user *does* call delete, that's OK, we will just * ralloc_free in that case. Here, C++ will have already called the * destructor so tell ralloc not to do that again. */ + static void operator delete(void *table, void *ctx) + { + ralloc_set_destructor(table, NULL); + ralloc_free(table); + } static void operator delete(void *table) { ralloc_set_destructor(table, NULL); diff --git a/mesalib/src/glsl/link_uniforms.cpp b/mesalib/src/glsl/link_uniforms.cpp index 92e2a1fa5..3cbc50510 100644 --- a/mesalib/src/glsl/link_uniforms.cpp +++ b/mesalib/src/glsl/link_uniforms.cpp @@ -426,7 +426,6 @@ link_assign_uniform_locations(struct gl_shader_program *prog) for (unsigned i = 0; i < num_user_uniforms; i++) { assert(uniforms[i].storage != NULL); } - assert(parcel.values == data_end); #endif diff --git a/mesalib/src/glsl/list.h b/mesalib/src/glsl/list.h index 1d46365fa..fb6f0fbba 100644 --- a/mesalib/src/glsl/list.h +++ b/mesalib/src/glsl/list.h @@ -90,6 +90,10 @@ struct exec_node { /* If the user *does* call delete, that's OK, we will just * ralloc_free in that case. */ + static void operator delete(void *node, void *ctx) + { + ralloc_free(node); + } static void operator delete(void *node) { ralloc_free(node); @@ -299,6 +303,10 @@ struct exec_list { /* If the user *does* call delete, that's OK, we will just * ralloc_free in that case. */ + static void operator delete(void *node, void *ctx) + { + ralloc_free(node); + } static void operator delete(void *node) { ralloc_free(node); diff --git a/mesalib/src/glsl/main.cpp b/mesalib/src/glsl/main.cpp index 64c2496eb..fbcc4aebb 100644 --- a/mesalib/src/glsl/main.cpp +++ b/mesalib/src/glsl/main.cpp @@ -20,7 +20,18 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ +#include <io.h> + +#ifdef _MSC_VER +#define __STDC__ 1 #include <getopt.h> +#define open _open +#define read _read +#define fstat _fstat +#define stat _stat +#define close _close +#define O_RDONLY _O_RDONLY +#endif /** @file main.cpp * diff --git a/mesalib/src/mapi/glapi/gen/.gitignore b/mesalib/src/mapi/glapi/gen/.gitignore index 5fc607b9e..906ce45d9 100644 --- a/mesalib/src/mapi/glapi/gen/.gitignore +++ b/mesalib/src/mapi/glapi/gen/.gitignore @@ -1 +1,23 @@ +enums.c +glapi_mapi_tmp.h +mapi_abi.py +remap_helper.h +dispatch.h +glapitable.h +glapitemp.h +glprocs.h +indirect.c +indirect.h +indirect_dispatch.c +indirect_dispatch.h +indirect_dispatch_swap.c +indirect_init.c +indirect_reqsize.c +indirect_reqsize.h +indirect_size.c +indirect_size.h +indirect_size_get.c +indirect_size_get.h +indirect_table.c +glapi_gentable.c /Makefile diff --git a/mesalib/src/mapi/glapi/gen/GL3x.xml b/mesalib/src/mapi/glapi/gen/GL3x.xml index d287ac2b0..ca63c5fc3 100644 --- a/mesalib/src/mapi/glapi/gen/GL3x.xml +++ b/mesalib/src/mapi/glapi/gen/GL3x.xml @@ -30,8 +30,12 @@ <enum name="RGB16F" value="0x881B"/> <enum name="VERTEX_ATTRIB_ARRAY_INTEGER" value="0x88FD"/> <enum name="MAX_ARRAY_TEXTURE_LAYERS" value="0x88FF"/> - <enum name="MIN_PROGRAM_TEXEL_OFFSET" value="0x8904"/> - <enum name="MAX_PROGRAM_TEXEL_OFFSET" value="0x8905"/> + <enum name="MIN_PROGRAM_TEXEL_OFFSET" value="0x8904"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_PROGRAM_TEXEL_OFFSET" value="0x8905"> + <size name="Get" mode="get"/> + </enum> <enum name="CLAMP_VERTEX_COLOR" value="0x891A"/> <enum name="CLAMP_FRAGMENT_COLOR" value="0x891B"/> <enum name="CLAMP_READ_COLOR" value="0x891C"/> diff --git a/mesalib/src/mapi/glapi/gen/gen.bat b/mesalib/src/mapi/glapi/gen/gen.bat new file mode 100644 index 000000000..3baeee0e2 --- /dev/null +++ b/mesalib/src/mapi/glapi/gen/gen.bat @@ -0,0 +1,26 @@ +echo on +glx_server_table.py -f gl_and_glX_API.xml > indirect_table.c +glx_proto_size.py -m size_h --only-set -h _INDIRECT_SIZE_H_ > indirect_size.h +glx_proto_size.py -m size_c --only-set > indirect_size.c +glx_proto_size.py -m size_h --only-get -h _INDIRECT_SIZE_GET_H_ > indirect_size_get.h +glx_proto_size.py -m size_c --only-get > indirect_size_get.c +glx_proto_size.py -m reqsize_c > indirect_reqsize.c +glx_proto_size.py -m reqsize_h --only-get -h _INDIRECT_SIZE_GET_H_ > indirect_reqsize.h +glx_proto_recv.py -m dispatch_c > indirect_dispatch.c +glx_proto_recv.py -m dispatch_c -s > indirect_dispatch_swap.c +glx_proto_recv.py -m dispatch_h -f gl_and_glX_API.xml -s > indirect_dispatch.h +gl_table.py > glapitable.h +gl_gentable.py > glapi_gentable.c +gl_table.py -m remap_table > dispatch.h +rem gl_offsets.py > glapioffsets.h +gl_apitemp.py > glapitemp.h +gl_procs.py > glprocs.h + +glX_proto_send.py -m proto > indirect.c +glX_proto_send.py -m init_h > indirect.h +glX_proto_send.py -m init_c > indirect_init.c + +gl_enums.py -f gl_and_es_API.xml > enums.c +remap_helper.py > remap_helper.h +copy ..\..\mapi\mapi_abi.py +mapi_abi.py --printer glapi --mode lib gl_and_es_API.xml > glapi_mapi_tmp.h
\ No newline at end of file diff --git a/mesalib/src/mapi/glapi/gen/glX_API.xml b/mesalib/src/mapi/glapi/gen/glX_API.xml index b7f4a7770..9e02aa498 100644 --- a/mesalib/src/mapi/glapi/gen/glX_API.xml +++ b/mesalib/src/mapi/glapi/gen/glX_API.xml @@ -217,18 +217,4 @@ </function> </category> -<category name="GLX_ARB_create_context" number="56"> - <function name="SetClientInfoARB"> - <glx sop="33"/> - </function> - - <function name="CreateContextAttribsARB"> - <glx sop="34"/> - </function> - - <function name="SetClientInfo2ARB"> - <glx sop="35"/> - </function> -</category> - </OpenGLAPI> diff --git a/mesalib/src/mapi/glapi/gen/glX_proto_recv.py b/mesalib/src/mapi/glapi/gen/glX_proto_recv.py index b577bb6bd..65674dab7 100644 --- a/mesalib/src/mapi/glapi/gen/glX_proto_recv.py +++ b/mesalib/src/mapi/glapi/gen/glX_proto_recv.py @@ -78,6 +78,14 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): def printRealHeader(self): + print '#ifdef HAVE_DIX_CONFIG_H' + print '#include <dix-config.h>' + print '#else' + print '' + print '#include "glheader.h"' + print '' + print '#endif' + print '' print '#include <X11/Xmd.h>' print '#include <GL/gl.h>' print '#include <GL/glxproto.h>' @@ -278,7 +286,10 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): if param.is_image(): offset = f.offset_of( param.name ) - print '%s %s const %s = (%s) (%s(pc + %s));' % (indent, type_string, param.name, type_string, cond, offset) + if cond: + print '%s %s const %s = (%s) (%s(pc + %s));' % (indent, type_string, param.name, type_string, cond, offset) + else: + print '%s %s const %s = (%s) (pc + %s);' % (indent, type_string, param.name, type_string, offset) if param.depth: print '%s __GLXpixel3DHeader * const hdr = (__GLXpixel3DHeader *)(pc);' % (indent) @@ -365,8 +376,9 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): else: for param in f.parameterIterateGlxSend(): if param.count_parameter_list: - print '%s %s = (%s) (pc + %s);' % (indent, param.name, param.type_string(), param.offset) - need_blank = 1 + if param.size() != 1 or self.do_swap: + print '%s %s = (%s) (pc + %s);' % (indent, param.name, param.type_string(), param.offset) + need_blank = 1 if need_blank: diff --git a/mesalib/src/mapi/glapi/gen/glX_proto_size.py b/mesalib/src/mapi/glapi/gen/glX_proto_size.py index b31d1c650..3b182daea 100644 --- a/mesalib/src/mapi/glapi/gen/glX_proto_size.py +++ b/mesalib/src/mapi/glapi/gen/glX_proto_size.py @@ -313,7 +313,14 @@ class PrintGlxSizeStubs_common(gl_XML.gl_print_base): class PrintGlxSizeStubs_c(PrintGlxSizeStubs_common): def printRealHeader(self): print '' - print '#include <X11/Xfuncproto.h>' + print '#ifdef HAVE_DIX_CONFIG_H' + print '#include <dix-config.h>' + print '#else' + print '' + print '#include "glheader.h"' + print '' + print '#endif' + print '' print '#include <GL/gl.h>' if self.emit_get: print '#include "indirect_size_get.h"' @@ -444,6 +451,14 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common): def printRealHeader(self): print '' + print '#ifdef HAVE_DIX_CONFIG_H' + print '#include <dix-config.h>' + print '#else' + print '' + print '#include "glheader.h"' + print '' + print '#endif' + print '' print '#include <GL/gl.h>' print '#include "glxserver.h"' print '#include "glxbyteorder.h"' diff --git a/mesalib/src/mapi/glapi/gen/glX_server_table.py b/mesalib/src/mapi/glapi/gen/glX_server_table.py index 15397533f..95ecc8ea3 100644 --- a/mesalib/src/mapi/glapi/gen/glX_server_table.py +++ b/mesalib/src/mapi/glapi/gen/glX_server_table.py @@ -357,6 +357,10 @@ class PrintGlxDispatchTables(glX_proto_common.glx_print_proto): def printRealHeader(self): + print '#ifndef HAVE_DIX_CONFIG_H' + print '#include "glheader.h"' + print '#endif' + print '' print '#include <inttypes.h>' print '#include "glxserver.h"' print '#include "glxext.h"' diff --git a/mesalib/src/mapi/glapi/gen/gl_API.xml b/mesalib/src/mapi/glapi/gen/gl_API.xml index c302ab94a..01460b49b 100644 --- a/mesalib/src/mapi/glapi/gen/gl_API.xml +++ b/mesalib/src/mapi/glapi/gen/gl_API.xml @@ -183,18 +183,18 @@ <size name="Get" mode="get"/> </enum> <enum name="LIGHT_MODEL_LOCAL_VIEWER" count="1" value="0x0B51"> - <size name="LightModelfv"/> - <size name="LightModeliv"/> + <size name="LightModelfv" mode="get"/> + <size name="LightModeliv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="LIGHT_MODEL_TWO_SIDE" count="1" value="0x0B52"> - <size name="LightModelfv"/> - <size name="LightModeliv"/> + <size name="LightModelfv" mode="get"/> + <size name="LightModeliv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="LIGHT_MODEL_AMBIENT" count="4" value="0x0B53"> - <size name="LightModelfv"/> - <size name="LightModeliv"/> + <size name="LightModelfv" mode="get"/> + <size name="LightModeliv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="SHADE_MODEL" count="1" value="0x0B54"> @@ -213,33 +213,33 @@ <size name="Get" mode="get"/> </enum> <enum name="FOG_INDEX" count="1" value="0x0B61"> - <size name="Fogfv"/> - <size name="Fogiv"/> + <size name="Fogfv" mode="get"/> + <size name="Fogiv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="FOG_DENSITY" count="1" value="0x0B62"> - <size name="Fogfv"/> - <size name="Fogiv"/> + <size name="Fogfv" mode="get"/> + <size name="Fogiv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="FOG_START" count="1" value="0x0B63"> - <size name="Fogfv"/> - <size name="Fogiv"/> + <size name="Fogfv" mode="get"/> + <size name="Fogiv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="FOG_END" count="1" value="0x0B64"> - <size name="Fogfv"/> - <size name="Fogiv"/> + <size name="Fogfv" mode="get"/> + <size name="Fogiv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="FOG_MODE" count="1" value="0x0B65"> - <size name="Fogfv"/> - <size name="Fogiv"/> + <size name="Fogfv" mode="get"/> + <size name="Fogiv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="FOG_COLOR" count="4" value="0x0B66"> - <size name="Fogfv"/> - <size name="Fogiv"/> + <size name="Fogfv" mode="get"/> + <size name="Fogiv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="DEPTH_RANGE" count="2" value="0x0B70"> @@ -531,8 +531,8 @@ <size name="Get" mode="get"/> </enum> <enum name="ALPHA_SCALE" count="1" value="0x0D1C"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> <size name="Get" mode="get"/> @@ -625,93 +625,93 @@ <size name="Get" mode="get"/> </enum> <enum name="MAP1_COLOR_4" count="4" value="0x0D90"> - <size name="Map1d"/> - <size name="Map1f"/> + <size name="Map1d" mode="get"/> + <size name="Map1f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP1_INDEX" count="1" value="0x0D91"> - <size name="Map1d"/> - <size name="Map1f"/> + <size name="Map1d" mode="get"/> + <size name="Map1f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP1_NORMAL" count="3" value="0x0D92"> - <size name="Map1d"/> - <size name="Map1f"/> + <size name="Map1d" mode="get"/> + <size name="Map1f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP1_TEXTURE_COORD_1" count="1" value="0x0D93"> - <size name="Map1d"/> - <size name="Map1f"/> + <size name="Map1d" mode="get"/> + <size name="Map1f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP1_TEXTURE_COORD_2" count="2" value="0x0D94"> - <size name="Map1d"/> - <size name="Map1f"/> + <size name="Map1d" mode="get"/> + <size name="Map1f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP1_TEXTURE_COORD_3" count="3" value="0x0D95"> - <size name="Map1d"/> - <size name="Map1f"/> + <size name="Map1d" mode="get"/> + <size name="Map1f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP1_TEXTURE_COORD_4" count="4" value="0x0D96"> - <size name="Map1d"/> - <size name="Map1f"/> + <size name="Map1d" mode="get"/> + <size name="Map1f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP1_VERTEX_3" count="3" value="0x0D97"> - <size name="Map1d"/> - <size name="Map1f"/> + <size name="Map1d" mode="get"/> + <size name="Map1f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP1_VERTEX_4" count="4" value="0x0D98"> - <size name="Map1d"/> - <size name="Map1f"/> + <size name="Map1d" mode="get"/> + <size name="Map1f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP2_COLOR_4" count="4" value="0x0DB0"> - <size name="Map2d"/> - <size name="Map2f"/> + <size name="Map2d" mode="get"/> + <size name="Map2f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP2_INDEX" count="1" value="0x0DB1"> - <size name="Map2d"/> - <size name="Map2f"/> + <size name="Map2d" mode="get"/> + <size name="Map2f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP2_NORMAL" count="3" value="0x0DB2"> - <size name="Map2d"/> - <size name="Map2f"/> + <size name="Map2d" mode="get"/> + <size name="Map2f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP2_TEXTURE_COORD_1" count="1" value="0x0DB3"> - <size name="Map2d"/> - <size name="Map2f"/> + <size name="Map2d" mode="get"/> + <size name="Map2f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP2_TEXTURE_COORD_2" count="2" value="0x0DB4"> - <size name="Map2d"/> - <size name="Map2f"/> + <size name="Map2d" mode="get"/> + <size name="Map2f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP2_TEXTURE_COORD_3" count="3" value="0x0DB5"> - <size name="Map2d"/> - <size name="Map2f"/> + <size name="Map2d" mode="get"/> + <size name="Map2f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP2_TEXTURE_COORD_4" count="4" value="0x0DB6"> - <size name="Map2d"/> - <size name="Map2f"/> + <size name="Map2d" mode="get"/> + <size name="Map2f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP2_VERTEX_3" count="3" value="0x0DB7"> - <size name="Map2d"/> - <size name="Map2f"/> + <size name="Map2d" mode="get"/> + <size name="Map2f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP2_VERTEX_4" count="4" value="0x0DB8"> - <size name="Map2d"/> - <size name="Map2f"/> + <size name="Map2d" mode="get"/> + <size name="Map2f" mode="get"/> <size name="Get" count="1" mode="get"/> </enum> <enum name="MAP1_GRID_DOMAIN" count="2" value="0x0DD0"> @@ -754,8 +754,8 @@ <size name="GetTexLevelParameteriv" mode="get"/> </enum> <enum name="TEXTURE_BORDER_COLOR" count="4" value="0x1004"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -763,111 +763,111 @@ <enum name="FASTEST" value="0x1101"/> <enum name="NICEST" value="0x1102"/> <enum name="AMBIENT" count="4" value="0x1200"> - <size name="Materialfv"/> - <size name="Materialiv"/> - <size name="Lightfv"/> - <size name="Lightiv"/> + <size name="Materialfv" mode="get"/> + <size name="Materialiv" mode="get"/> + <size name="Lightfv" mode="get"/> + <size name="Lightiv" mode="get"/> <size name="GetMaterialfv" mode="get"/> <size name="GetMaterialiv" mode="get"/> <size name="GetLightfv" mode="get"/> <size name="GetLightiv" mode="get"/> </enum> <enum name="DIFFUSE" count="4" value="0x1201"> - <size name="Materialfv"/> - <size name="Materialiv"/> - <size name="Lightfv"/> - <size name="Lightiv"/> + <size name="Materialfv" mode="get"/> + <size name="Materialiv" mode="get"/> + <size name="Lightfv" mode="get"/> + <size name="Lightiv" mode="get"/> <size name="GetMaterialfv" mode="get"/> <size name="GetMaterialiv" mode="get"/> <size name="GetLightfv" mode="get"/> <size name="GetLightiv" mode="get"/> </enum> <enum name="SPECULAR" count="4" value="0x1202"> - <size name="Materialfv"/> - <size name="Materialiv"/> - <size name="Lightfv"/> - <size name="Lightiv"/> + <size name="Materialfv" mode="get"/> + <size name="Materialiv" mode="get"/> + <size name="Lightfv" mode="get"/> + <size name="Lightiv" mode="get"/> <size name="GetMaterialfv" mode="get"/> <size name="GetMaterialiv" mode="get"/> <size name="GetLightfv" mode="get"/> <size name="GetLightiv" mode="get"/> </enum> <enum name="POSITION" count="4" value="0x1203"> - <size name="Lightfv"/> - <size name="Lightiv"/> + <size name="Lightfv" mode="get"/> + <size name="Lightiv" mode="get"/> <size name="GetLightfv" mode="get"/> <size name="GetLightiv" mode="get"/> </enum> <enum name="SPOT_DIRECTION" count="3" value="0x1204"> - <size name="Lightfv"/> - <size name="Lightiv"/> + <size name="Lightfv" mode="get"/> + <size name="Lightiv" mode="get"/> <size name="GetLightfv" mode="get"/> <size name="GetLightiv" mode="get"/> </enum> <enum name="SPOT_EXPONENT" count="1" value="0x1205"> - <size name="Lightfv"/> - <size name="Lightiv"/> + <size name="Lightfv" mode="get"/> + <size name="Lightiv" mode="get"/> <size name="GetLightfv" mode="get"/> <size name="GetLightiv" mode="get"/> </enum> <enum name="SPOT_CUTOFF" count="1" value="0x1206"> - <size name="Lightfv"/> - <size name="Lightiv"/> + <size name="Lightfv" mode="get"/> + <size name="Lightiv" mode="get"/> <size name="GetLightfv" mode="get"/> <size name="GetLightiv" mode="get"/> </enum> <enum name="CONSTANT_ATTENUATION" count="1" value="0x1207"> - <size name="Lightfv"/> - <size name="Lightiv"/> + <size name="Lightfv" mode="get"/> + <size name="Lightiv" mode="get"/> <size name="GetLightfv" mode="get"/> <size name="GetLightiv" mode="get"/> </enum> <enum name="LINEAR_ATTENUATION" count="1" value="0x1208"> - <size name="Lightfv"/> - <size name="Lightiv"/> + <size name="Lightfv" mode="get"/> + <size name="Lightiv" mode="get"/> <size name="GetLightfv" mode="get"/> <size name="GetLightiv" mode="get"/> </enum> <enum name="QUADRATIC_ATTENUATION" count="1" value="0x1209"> - <size name="Lightfv"/> - <size name="Lightiv"/> + <size name="Lightfv" mode="get"/> + <size name="Lightiv" mode="get"/> <size name="GetLightfv" mode="get"/> <size name="GetLightiv" mode="get"/> </enum> <enum name="COMPILE" value="0x1300"/> <enum name="COMPILE_AND_EXECUTE" value="0x1301"/> <enum name="BYTE" count="1" value="0x1400"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="UNSIGNED_BYTE" count="1" value="0x1401"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="SHORT" count="2" value="0x1402"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="UNSIGNED_SHORT" count="2" value="0x1403"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="INT" count="4" value="0x1404"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="UNSIGNED_INT" count="4" value="0x1405"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="FLOAT" count="4" value="0x1406"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="2_BYTES" count="2" value="0x1407"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="3_BYTES" count="3" value="0x1408"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="4_BYTES" count="4" value="0x1409"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="HALF_FLOAT" count="2" value="0x140B"> - <size name="CallLists"/> + <size name="CallLists" mode="get"/> </enum> <enum name="CLEAR" value="0x1500"/> <enum name="AND" value="0x1501"/> @@ -886,26 +886,26 @@ <enum name="NAND" value="0x150E"/> <enum name="SET" value="0x150F"/> <enum name="EMISSION" count="4" value="0x1600"> - <size name="Materialfv"/> - <size name="Materialiv"/> + <size name="Materialfv" mode="get"/> + <size name="Materialiv" mode="get"/> <size name="GetMaterialfv" mode="get"/> <size name="GetMaterialiv" mode="get"/> </enum> <enum name="SHININESS" count="1" value="0x1601"> - <size name="Materialfv"/> - <size name="Materialiv"/> + <size name="Materialfv" mode="get"/> + <size name="Materialiv" mode="get"/> <size name="GetMaterialfv" mode="get"/> <size name="GetMaterialiv" mode="get"/> </enum> <enum name="AMBIENT_AND_DIFFUSE" count="4" value="0x1602"> - <size name="Materialfv"/> - <size name="Materialiv"/> + <size name="Materialfv" mode="get"/> + <size name="Materialiv" mode="get"/> <size name="GetMaterialfv" mode="get"/> <size name="GetMaterialiv" mode="get"/> </enum> <enum name="COLOR_INDEXES" count="3" value="0x1603"> - <size name="Materialfv"/> - <size name="Materialiv"/> + <size name="Materialfv" mode="get"/> + <size name="Materialiv" mode="get"/> <size name="GetMaterialfv" mode="get"/> <size name="GetMaterialiv" mode="get"/> </enum> @@ -950,14 +950,14 @@ <enum name="MODULATE" value="0x2100"/> <enum name="DECAL" value="0x2101"/> <enum name="TEXTURE_ENV_MODE" count="1" value="0x2200"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="TEXTURE_ENV_COLOR" count="4" value="0x2201"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> @@ -966,25 +966,25 @@ <enum name="OBJECT_LINEAR" value="0x2401"/> <enum name="SPHERE_MAP" value="0x2402"/> <enum name="TEXTURE_GEN_MODE" count="1" value="0x2500"> - <size name="TexGendv"/> - <size name="TexGenfv"/> - <size name="TexGeniv"/> + <size name="TexGendv" mode="get"/> + <size name="TexGenfv" mode="get"/> + <size name="TexGeniv" mode="get"/> <size name="GetTexGendv" mode="get"/> <size name="GetTexGenfv" mode="get"/> <size name="GetTexGeniv" mode="get"/> </enum> <enum name="OBJECT_PLANE" count="4" value="0x2501"> - <size name="TexGendv"/> - <size name="TexGenfv"/> - <size name="TexGeniv"/> + <size name="TexGendv" mode="get"/> + <size name="TexGenfv" mode="get"/> + <size name="TexGeniv" mode="get"/> <size name="GetTexGendv" mode="get"/> <size name="GetTexGenfv" mode="get"/> <size name="GetTexGeniv" mode="get"/> </enum> <enum name="EYE_PLANE" count="4" value="0x2502"> - <size name="TexGendv"/> - <size name="TexGenfv"/> - <size name="TexGeniv"/> + <size name="TexGendv" mode="get"/> + <size name="TexGenfv" mode="get"/> + <size name="TexGeniv" mode="get"/> <size name="GetTexGendv" mode="get"/> <size name="GetTexGenfv" mode="get"/> <size name="GetTexGeniv" mode="get"/> @@ -996,26 +996,26 @@ <enum name="NEAREST_MIPMAP_LINEAR" value="0x2702"/> <enum name="LINEAR_MIPMAP_LINEAR" value="0x2703"/> <enum name="TEXTURE_MAG_FILTER" count="1" value="0x2800"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_MIN_FILTER" count="1" value="0x2801"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_WRAP_S" count="1" value="0x2802"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_WRAP_T" count="1" value="0x2803"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -3041,8 +3041,8 @@ <enum name="PROXY_TEXTURE_1D" value="0x8063"/> <enum name="PROXY_TEXTURE_2D" value="0x8064"/> <enum name="TEXTURE_PRIORITY" count="1" value="0x8066"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -3382,8 +3382,8 @@ <size name="GetTexLevelParameteriv" mode="get"/> </enum> <enum name="TEXTURE_WRAP_R" count="1" value="0x8072"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -3407,32 +3407,32 @@ </enum> <enum name="CLAMP_TO_EDGE" value="0x812F"/> <enum name="TEXTURE_MIN_LOD" count="1" value="0x813A"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_MAX_LOD" count="1" value="0x813B"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_BASE_LEVEL" count="1" value="0x813C"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_MAX_LEVEL" count="1" value="0x813D"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="LIGHT_MODEL_COLOR_CONTROL" count="1" value="0x81F8"> - <size name="LightModelfv"/> - <size name="LightModeliv"/> + <size name="LightModelfv" mode="get"/> + <size name="LightModeliv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="SINGLE_COLOR" value="0x81F9"/> @@ -3484,26 +3484,26 @@ </enum> <enum name="CONVOLUTION_BORDER_MODE" count="1" value="0x8013"> - <size name="ConvolutionParameterfv"/> - <size name="ConvolutionParameteriv"/> + <size name="ConvolutionParameterfv" mode="get"/> + <size name="ConvolutionParameteriv" mode="get"/> <size name="GetConvolutionParameterfv" mode="get"/> <size name="GetConvolutionParameteriv" mode="get"/> </enum> <enum name="CONVOLUTION_BORDER_COLOR" count="4" value="0x8154"> - <size name="ConvolutionParameterfv"/> - <size name="ConvolutionParameteriv"/> + <size name="ConvolutionParameterfv" mode="get"/> + <size name="ConvolutionParameteriv" mode="get"/> <size name="GetConvolutionParameterfv" mode="get"/> <size name="GetConvolutionParameteriv" mode="get"/> </enum> <enum name="CONVOLUTION_FILTER_SCALE" count="4" value="0x8014"> - <size name="ConvolutionParameterfv"/> - <size name="ConvolutionParameteriv"/> + <size name="ConvolutionParameterfv" mode="get"/> + <size name="ConvolutionParameteriv" mode="get"/> <size name="GetConvolutionParameterfv" mode="get"/> <size name="GetConvolutionParameteriv" mode="get"/> </enum> <enum name="CONVOLUTION_FILTER_BIAS" count="4" value="0x8015"> - <size name="ConvolutionParameterfv"/> - <size name="ConvolutionParameteriv"/> + <size name="ConvolutionParameterfv" mode="get"/> + <size name="ConvolutionParameteriv" mode="get"/> <size name="GetConvolutionParameterfv" mode="get"/> <size name="GetConvolutionParameteriv" mode="get"/> </enum> @@ -3651,14 +3651,14 @@ <enum name="PROXY_POST_COLOR_MATRIX_COLOR_TABLE" value="0x80D5"/> <enum name="COLOR_TABLE_SCALE" count="4" value="0x80D6"> - <size name="ColorTableParameterfv"/> - <size name="ColorTableParameteriv"/> + <size name="ColorTableParameterfv" mode="get"/> + <size name="ColorTableParameteriv" mode="get"/> <size name="GetColorTableParameterfv" mode="get"/> <size name="GetColorTableParameteriv" mode="get"/> </enum> <enum name="COLOR_TABLE_BIAS" count="4" value="0x80D7"> - <size name="ColorTableParameterfv"/> - <size name="ColorTableParameteriv"/> + <size name="ColorTableParameterfv" mode="get"/> + <size name="ColorTableParameteriv" mode="get"/> <size name="GetColorTableParameterfv" mode="get"/> <size name="GetColorTableParameteriv" mode="get"/> </enum> @@ -4135,92 +4135,92 @@ <enum name="CLAMP_TO_BORDER" value="0x812D"/> <enum name="COMBINE" value="0x8570"/> <enum name="COMBINE_RGB" count="1" value="0x8571"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="COMBINE_ALPHA" count="1" value="0x8572"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="SOURCE0_RGB" count="1" value="0x8580"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="SOURCE1_RGB" count="1" value="0x8581"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="SOURCE2_RGB" count="1" value="0x8582"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="SOURCE0_ALPHA" count="1" value="0x8588"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="SOURCE1_ALPHA" count="1" value="0x8589"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="SOURCE2_ALPHA" count="1" value="0x858A"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="OPERAND0_RGB" count="1" value="0x8590"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="OPERAND1_RGB" count="1" value="0x8591"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="OPERAND2_RGB" count="1" value="0x8592"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="OPERAND0_ALPHA" count="1" value="0x8598"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="OPERAND1_ALPHA" count="1" value="0x8599"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="OPERAND2_ALPHA" count="1" value="0x859A"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="RGB_SCALE" count="1" value="0x8573"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> @@ -4536,24 +4536,24 @@ <size name="Get" mode="get"/> </enum> <enum name="POINT_SIZE_MIN" count="1" value="0x8126"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="POINT_SIZE_MAX" count="1" value="0x8127"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="POINT_FADE_THRESHOLD_SIZE" count="1" value="0x8128"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="POINT_DISTANCE_ATTENUATION" count="3" value="0x8129"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="GENERATE_MIPMAP" count="1" value="0x8191"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -4602,10 +4602,10 @@ </enum> <enum name="TEXTURE_FILTER_CONTROL" value="0x8500"/> <enum name="TEXTURE_LOD_BIAS" count="1" value="0x8501"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> @@ -4618,20 +4618,20 @@ <size name="GetTexLevelParameteriv" mode="get"/> </enum> <enum name="DEPTH_TEXTURE_MODE" count="1" value="0x884B"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_COMPARE_MODE" count="1" value="0x884C"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_COMPARE_FUNC" count="1" value="0x884D"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -5123,8 +5123,8 @@ <enum name="SHADING_LANGUAGE_VERSION" value="0x8B8C"/> <enum name="CURRENT_PROGRAM" value="0x8B8D"/> <enum name="POINT_SPRITE_COORD_ORIGIN" count="1" value="0x8CA0"> - <size name="PointParameterfvEXT"/> - <size name="PointParameterivNV"/> + <size name="PointParameterfvEXT" mode="get"/> + <size name="PointParameterivNV" mode="get"/> </enum> <enum name="LOWER_LEFT" value="0x8CA1"/> <enum name="UPPER_LEFT" value="0x8CA2"/> @@ -6228,16 +6228,16 @@ <category name="GL_ARB_point_parameters" number="14"> <enum name="POINT_SIZE_MIN_ARB" count="1" value="0x8126"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <enum name="POINT_SIZE_MAX_ARB" count="1" value="0x8127"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <enum name="POINT_FADE_THRESHOLD_SIZE_ARB" count="1" value="0x8128"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <enum name="POINT_DISTANCE_ATTENUATION_ARB" count="3" value="0x8129"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <function name="PointParameterfARB" alias="PointParameterfEXT"> @@ -6543,8 +6543,8 @@ <size name="GetTexLevelParameteriv" mode="get"/> </enum> <enum name="DEPTH_TEXTURE_MODE_ARB" count="1" value="0x884B"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -6552,14 +6552,14 @@ <category name="GL_ARB_shadow" number="23"> <enum name="TEXTURE_COMPARE_MODE_ARB" count="1" value="0x884C"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_COMPARE_FUNC_ARB" count="1" value="0x884D"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -6568,8 +6568,8 @@ <category name="GL_ARB_shadow_ambient" number="24"> <enum name="TEXTURE_COMPARE_FAIL_VALUE_ARB" count="1" value="0x80BF"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -7867,8 +7867,8 @@ <size name="Get" mode="get"/> </enum> <enum name="COORD_REPLACE_ARB" count="1" value="0x8862"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> @@ -8360,20 +8360,20 @@ <category name="GL_EXT_convolution" number="12"> <enum name="CONVOLUTION_BORDER_MODE_EXT" count="1" value="0x8013"> - <size name="ConvolutionParameterfv"/> - <size name="ConvolutionParameteriv"/> + <size name="ConvolutionParameterfv" mode="get"/> + <size name="ConvolutionParameteriv" mode="get"/> <size name="GetConvolutionParameterfv" mode="get"/> <size name="GetConvolutionParameteriv" mode="get"/> </enum> <enum name="CONVOLUTION_FILTER_SCALE_EXT" count="4" value="0x8014"> - <size name="ConvolutionParameterfv"/> - <size name="ConvolutionParameteriv"/> + <size name="ConvolutionParameterfv" mode="get"/> + <size name="ConvolutionParameteriv" mode="get"/> <size name="GetConvolutionParameterfv" mode="get"/> <size name="GetConvolutionParameteriv" mode="get"/> </enum> <enum name="CONVOLUTION_FILTER_BIAS_EXT" count="4" value="0x8015"> - <size name="ConvolutionParameterfv"/> - <size name="ConvolutionParameteriv"/> + <size name="ConvolutionParameterfv" mode="get"/> + <size name="ConvolutionParameteriv" mode="get"/> <size name="GetConvolutionParameterfv" mode="get"/> <size name="GetConvolutionParameteriv" mode="get"/> </enum> @@ -8892,8 +8892,8 @@ <category name="GL_SGIS_generate_mipmap" number="32"> <enum name="GENERATE_MIPMAP_SGIS" count="1" value="0x8191"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -8903,26 +8903,26 @@ <category name="GL_SGIX_clipmap" number="33"> <enum name="LINEAR_CLIPMAP_LINEAR_SGIX" value="0x8170"/> <enum name="TEXTURE_CLIPMAP_CENTER_SGIX" count="2" value="0x8171"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_CLIPMAP_FRAME_SGIX" count="1" value="0x8172"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_CLIPMAP_OFFSET_SGIX" count="2" value="0x8173"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX" count="3" value="0x8174"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -8937,14 +8937,14 @@ <category name="GL_SGIX_shadow" number="34"> <enum name="TEXTURE_COMPARE_SGIX" count="1" value="0x819A"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_COMPARE_OPERATOR_SGIX" count="1" value="0x819B"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -9021,16 +9021,16 @@ <category name="GL_EXT_point_parameters" number="54"> <enum name="POINT_SIZE_MIN_EXT" count="1" value="0x8126"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <enum name="POINT_SIZE_MAX_EXT" count="1" value="0x8127"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <enum name="POINT_FADE_THRESHOLD_SIZE_EXT" count="1" value="0x8128"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <enum name="POINT_DISTANCE_ATTENUATION_EXT" count="3" value="0x8129"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <function name="PointParameterfEXT" offset="assign"> @@ -9081,14 +9081,14 @@ <category name="GL_SGIX_texture_scale_bias" number="56"> <enum name="POST_TEXTURE_FILTER_BIAS_SGIX" count="4" value="0x8179"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="POST_TEXTURE_FILTER_SCALE_SGIX" count="4" value="0x817A"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -9148,8 +9148,8 @@ <category name="GL_SGIX_fog_offset" number="65"> <enum name="FOG_OFFSET_SGIX" value="0x8198"/> <enum name="FOG_OFFSET_VALUE_SGIX" count="1" value="0x8199"> - <size name="Fogfv"/> - <size name="Fogiv"/> + <size name="Fogfv" mode="get"/> + <size name="Fogiv" mode="get"/> </enum> </category> @@ -9196,8 +9196,8 @@ <enum name="CONSTANT_BORDER_HP" value="0x8151"/> <enum name="REPLICATE_BORDER_HP" value="0x8153"/> <enum name="CONVOLUTION_BORDER_COLOR_HP" count="4" value="0x8154"> - <size name="ConvolutionParameterfv"/> - <size name="ConvolutionParameteriv"/> + <size name="ConvolutionParameterfv" mode="get"/> + <size name="ConvolutionParameteriv" mode="get"/> <size name="GetConvolutionParameterfv" mode="get"/> <size name="GetConvolutionParameteriv" mode="get"/> </enum> @@ -9363,20 +9363,20 @@ <category name="GL_SGIX_texture_lod_bias" number="84"> <enum name="TEXTURE_LOD_BIAS_S_SGIX" count="1" value="0x818E"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_LOD_BIAS_T_SGIX" count="1" value="0x818F"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_LOD_BIAS_R_SGIX" count="1" value="0x8190"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -9391,8 +9391,8 @@ <category name="GL_SGIX_shadow_ambient" number="90"> <enum name="SHADOW_AMBIENT_SGIX" count="1" value="0x80BF"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -9739,8 +9739,8 @@ <category name="GL_EXT_separate_specular_color" number="144"> <enum name="LIGHT_MODEL_COLOR_CONTROL_EXT" count="1" value="0x81F8"> - <size name="LightModelfv"/> - <size name="LightModeliv"/> + <size name="LightModelfv" mode="get"/> + <size name="LightModeliv" mode="get"/> </enum> <enum name="SINGLE_COLOR_EXT" value="0x81F9"/> <enum name="SEPARATE_SPECULAR_COLOR_EXT" value="0x81FA"/> @@ -10513,8 +10513,8 @@ <category name="GL_EXT_texture_lod_bias" number="186"> <enum name="TEXTURE_LOD_BIAS_EXT" count="1" value="0x8501"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -10522,8 +10522,8 @@ <category name="GL_EXT_texture_filter_anisotropic" number="187"> <enum name="TEXTURE_MAX_ANISOTROPY_EXT" count="1" value="0x84FE"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -10681,8 +10681,8 @@ <category name="GL_NV_fog_distance" number="192"> <enum name="FOG_DISTANCE_MODE_NV" count="1" value="0x855A"> - <size name="Fogfv"/> - <size name="Fogiv"/> + <size name="Fogfv" mode="get"/> + <size name="Fogiv" mode="get"/> <size name="Get" mode="get"/> </enum> <enum name="EYE_RADIAL_NV" value="0x855B"/> @@ -10696,26 +10696,26 @@ <category name="GL_NV_texture_env_combine4" number="195"> <enum name="COMBINE4_NV" value="0x8503"/> <enum name="SOURCE3_RGB_NV" count="1" value="0x8583"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="SOURCE3_ALPHA_NV" count="1" value="0x858B"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="OPERAND3_RGB_NV" count="1" value="0x8593"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="OPERAND3_ALPHA_NV" count="1" value="0x859B"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> @@ -11736,20 +11736,20 @@ <category name="GL_SGIX_texture_coordinate_clamp" number="235"> <enum name="TEXTURE_MAX_CLAMP_S_SGIX" count="1" value="0x8369"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_MAX_CLAMP_T_SGIX" count="1" value="0x836A"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> <enum name="TEXTURE_MAX_CLAMP_R_SGIX" count="1" value="0x836B"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -11788,8 +11788,8 @@ <enum name="DU8DV8_ATI" value="0x877A"/> <enum name="BUMP_ENVMAP_ATI" value="0x877B"/> <enum name="BUMP_TARGET_ATI" count="1" value="0x877C"> - <size name="TexEnviv"/> - <size name="TexEnvfv"/> + <size name="TexEnviv" mode="get"/> + <size name="TexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> </enum> @@ -12093,30 +12093,30 @@ added for this extension. --> <enum name="POINT_SIZE_MIN_EXT" count="1" value="0x8126"> - <size name="PointParameterivNV"/> + <size name="PointParameterivNV" mode="get"/> </enum> <enum name="POINT_SIZE_MAX_EXT" count="1" value="0x8127"> - <size name="PointParameterivNV"/> + <size name="PointParameterivNV" mode="get"/> </enum> <enum name="POINT_FADE_THRESHOLD_SIZE_EXT" count="1" value="0x8128"> - <size name="PointParameterivNV"/> + <size name="PointParameterivNV" mode="get"/> </enum> <enum name="POINT_DISTANCE_ATTENUATION_EXT" count="3" value="0x8129"> - <size name="PointParameterivNV"/> + <size name="PointParameterivNV" mode="get"/> </enum> <enum name="POINT_SPRITE_NV" count="1" value="0x8861"> <size name="Get" mode="get"/> </enum> <enum name="COORD_REPLACE_NV" count="1" value="0x8862"> - <size name="TexEnvfv"/> - <size name="TexEnviv"/> + <size name="TexEnvfv" mode="get"/> + <size name="TexEnviv" mode="get"/> <size name="GetTexEnvfv" mode="get"/> <size name="GetTexEnviv" mode="get"/> </enum> <enum name="POINT_SPRITE_R_MODE_NV" count="1" value="0x8863"> - <size name="PointParameterfvEXT"/> - <size name="PointParameterivNV"/> + <size name="PointParameterfvEXT" mode="get"/> + <size name="PointParameterivNV" mode="get"/> <size name="Get" mode="get"/> </enum> @@ -12243,8 +12243,8 @@ <category name="GL_NV_texture_expand_normal" number="286"> <enum name="TEXTURE_UNSIGNED_REMAP_MODE_NV" count="1" value="0x888F"> - <size name="TexParameterfv"/> - <size name="TexParameteriv"/> + <size name="TexParameterfv" mode="get"/> + <size name="TexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> @@ -12409,22 +12409,22 @@ <category name="GL_APPLE_texture_range" number="367"> <enum name="TEXTURE_STORAGE_HINT_APPLE" count="1" value="0x85BC"> - <size name="TexParameteriv"/> - <size name="TexParameterfv"/> + <size name="TexParameteriv" mode="get"/> + <size name="TexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> <size name="GetTexParameterfv" mode="get"/> </enum> <enum name="STORAGE_PRIVATE_APPLE" count="1" value="0x85BD"> - <size name="TexParameteriv"/> - <size name="TexParameterfv"/> + <size name="TexParameteriv" mode="get"/> + <size name="TexParameterfv" mode="get"/> </enum> <enum name="STORAGE_CACHED_APPLE" count="1" value="0x85BE"> - <size name="TexParameteriv"/> - <size name="TexParameterfv"/> + <size name="TexParameteriv" mode="get"/> + <size name="TexParameterfv" mode="get"/> </enum> <enum name="STORAGE_SHARED_APPLE" count="1" value="0x85BF"> - <size name="TexParameteriv"/> - <size name="TexParameterfv"/> + <size name="TexParameteriv" mode="get"/> + <size name="TexParameterfv" mode="get"/> </enum> <enum name="TEXTURE_RANGE_LENGTH_APPLE" count="1" value="0x85B7"> <size name="GetTexParameteriv" mode="get"/> @@ -12573,16 +12573,16 @@ <category name="GL_SGIS_point_parameters"> <enum name="POINT_SIZE_MIN_SGIS" count="1" value="0x8126"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <enum name="POINT_SIZE_MAX_SGIS" count="1" value="0x8127"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <enum name="POINT_FADE_THRESHOLD_SIZE_SGIS" count="1" value="0x8128"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <enum name="POINT_DISTANCE_ATTENUATION_SGIS" count="3" value="0x8129"> - <size name="PointParameterfvEXT"/> + <size name="PointParameterfvEXT" mode="get"/> </enum> <function name="PointParameterfSGIS" alias="PointParameterfEXT" static_dispatch="false"> diff --git a/mesalib/src/mapi/glapi/gen/gl_gentable.py b/mesalib/src/mapi/glapi/gen/gl_gentable.py index 5657e3277..5078485c0 100644 --- a/mesalib/src/mapi/glapi/gen/gl_gentable.py +++ b/mesalib/src/mapi/glapi/gen/gl_gentable.py @@ -111,7 +111,7 @@ __glapi_gentable_set_remaining_noop(struct _glapi_table *disp) { struct _glapi_table * _glapi_create_table_from_handle(void *handle, const char *symbol_prefix) { - struct _glapi_table *disp = calloc(1, sizeof(struct _glapi_table)); + struct _glapi_table *disp = calloc(_glapi_get_dispatch_table_size(), sizeof(void*)); char symboln[512]; if(!disp) diff --git a/mesalib/src/mapi/glapi/gen/gl_table.py b/mesalib/src/mapi/glapi/gen/gl_table.py index 7f3b91513..3cbf23f1d 100644 --- a/mesalib/src/mapi/glapi/gen/gl_table.py +++ b/mesalib/src/mapi/glapi/gen/gl_table.py @@ -81,6 +81,7 @@ class PrintRemapTable(gl_XML.gl_print_base): def printRealHeader(self): print """ +#include "glapitable.h" /** * \\file main/dispatch.h * Macros for handling GL dispatch tables. @@ -101,6 +102,11 @@ class PrintRemapTable(gl_XML.gl_print_base): return def printBody(self, api): + print '#ifdef _MSC_VER' + print '#ifndef INLINE' + print '#define INLINE __inline' + print '#endif' + print '#endif' print '#define CALL_by_offset(disp, cast, offset, parameters) \\' print ' (*(cast (GET_by_offset(disp, offset)))) parameters' print '#define GET_by_offset(disp, offset) \\' @@ -183,11 +189,11 @@ class PrintRemapTable(gl_XML.gl_print_base): print 'typedef %s (GLAPIENTRYP _glptr_%s)(%s);' % (f.return_type, f.name, arg_string) print '#define CALL_%s(disp, parameters) \\' % (f.name) print ' (* GET_%s(disp)) parameters' % (f.name) - print 'static inline _glptr_%s GET_%s(struct _glapi_table *disp) {' % (f.name, f.name) + print 'static INLINE _glptr_%s GET_%s(struct _glapi_table *disp) {' % (f.name, f.name) print ' return (_glptr_%s) (GET_by_offset(disp, _gloffset_%s));' % (f.name, f.name) print '}' print - print 'static inline void SET_%s(struct _glapi_table *disp, %s (GLAPIENTRYP fn)(%s)) {' % (f.name, f.return_type, arg_string) + print 'static INLINE void SET_%s(struct _glapi_table *disp, %s (GLAPIENTRYP fn)(%s)) {' % (f.name, f.return_type, arg_string) print ' SET_by_offset(disp, _gloffset_%s, fn);' % (f.name) print '}' print diff --git a/mesalib/src/mapi/glapi/glapi.h b/mesalib/src/mapi/glapi/glapi.h index f6854754b..5edec8ebd 100644 --- a/mesalib/src/mapi/glapi/glapi.h +++ b/mesalib/src/mapi/glapi/glapi.h @@ -44,14 +44,13 @@ #ifndef _GLAPI_H #define _GLAPI_H -#include "glapi/glthread.h" +#include "glthread.h" #ifdef __cplusplus extern "C" { #endif - #ifdef _GLAPI_NO_EXPORTS # define _GLAPI_EXPORT #else /* _GLAPI_NO_EXPORTS */ @@ -68,123 +67,124 @@ extern "C" { # endif #endif /* _GLAPI_NO_EXPORTS */ +#include "GL/gl.h" +#include "GL/glext.h" +#include "glthread.h" + + +struct _glapi_table; + +typedef void (*_glapi_proc)(void); /* generic function pointer */ + +typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...); -/* Is this needed? It is incomplete anyway. */ -#ifdef USE_MGL_NAMESPACE + +#if defined(USE_MGL_NAMESPACE) #define _glapi_set_dispatch _mglapi_set_dispatch #define _glapi_get_dispatch _mglapi_get_dispatch #define _glapi_set_context _mglapi_set_context #define _glapi_get_context _mglapi_get_context -#define _glapi_Dispatch _mglapi_Dispatch #define _glapi_Context _mglapi_Context +#define _glapi_Dispatch _mglapi_Dispatch #endif -typedef void (*_glapi_proc)(void); -struct _glapi_table; +/* + * Number of extension functions which we can dynamically add at runtime. + */ +#define MAX_EXTENSION_FUNCS 300 +/** + ** Define the GET_CURRENT_CONTEXT() macro. + ** \param C local variable which will hold the current context. + **/ #if defined (GLX_USE_TLS) -_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch - __attribute__((tls_model("initial-exec"))); - -_GLAPI_EXPORT extern __thread void * _glapi_tls_Context - __attribute__((tls_model("initial-exec"))); +_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch; -_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch; _GLAPI_EXPORT extern const void *_glapi_Context; +_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch; + +_GLAPI_EXPORT extern __thread void * _glapi_tls_Context; # define GET_DISPATCH() _glapi_tls_Dispatch # define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_tls_Context #else -_GLAPI_EXPORT extern struct _glapi_table *_glapi_Dispatch; -_GLAPI_EXPORT extern void *_glapi_Context; +#ifdef INSERVER +#define SERVEXTERN _declspec(dllimport) +#else +#define SERVEXTERN _declspec(dllexport) +#endif + +SERVEXTERN void *_glapi_Context; +SERVEXTERN struct _glapi_table *_glapi_Dispatch; # ifdef THREADS # define GET_DISPATCH() \ (likely(_glapi_Dispatch) ? _glapi_Dispatch : _glapi_get_dispatch()) + # define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) \ (likely(_glapi_Context) ? _glapi_Context : _glapi_get_context()) - # else - # define GET_DISPATCH() _glapi_Dispatch # define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_Context - # endif #endif /* defined (GLX_USE_TLS) */ -void -_glapi_destroy_multithread(void); - +/** + ** GL API public functions + **/ -_GLAPI_EXPORT void +SERVEXTERN void _glapi_check_multithread(void); -_GLAPI_EXPORT void +SERVEXTERN void _glapi_set_context(void *context); -_GLAPI_EXPORT void * +SERVEXTERN void * _glapi_get_context(void); -_GLAPI_EXPORT void +SERVEXTERN void _glapi_set_dispatch(struct _glapi_table *dispatch); -_GLAPI_EXPORT struct _glapi_table * +SERVEXTERN struct _glapi_table * _glapi_get_dispatch(void); +SERVEXTERN int +_glapi_begin_dispatch_override(struct _glapi_table *override); + +SERVEXTERN void +_glapi_end_dispatch_override(int layer); + +struct _glapi_table * +_glapi_get_override_dispatch(int layer); -_GLAPI_EXPORT unsigned int +SERVEXTERN GLuint _glapi_get_dispatch_table_size(void); -_GLAPI_EXPORT int +SERVEXTERN int _glapi_add_dispatch( const char * const * function_names, const char * parameter_signature ); -_GLAPI_EXPORT int -_glapi_get_proc_offset(const char *funcName); - - _GLAPI_EXPORT _glapi_proc _glapi_get_proc_address(const char *funcName); - -_GLAPI_EXPORT const char * -_glapi_get_proc_name(unsigned int offset); - - -_GLAPI_EXPORT struct _glapi_table * +extern struct _glapi_table * _glapi_create_table_from_handle(void *handle, const char *symbol_prefix); - -_GLAPI_EXPORT unsigned long -_glthread_GetID(void); - - -/* - * These stubs are kept so that the old DRI drivers still load. - */ -_GLAPI_EXPORT void -_glapi_noop_enable_warnings(unsigned char enable); - - -_GLAPI_EXPORT void -_glapi_set_warning_func(_glapi_proc func); - +#endif #ifdef __cplusplus } #endif - -#endif /* _GLAPI_H */ diff --git a/mesalib/src/mapi/glapi/glapi_getproc.c b/mesalib/src/mapi/glapi/glapi_getproc.c index 0a6ff7795..3dde59680 100644 --- a/mesalib/src/mapi/glapi/glapi_getproc.c +++ b/mesalib/src/mapi/glapi/glapi_getproc.c @@ -369,6 +369,7 @@ set_entry_info( struct _glapi_function * entry, const char * signature, unsigned * the parameter signature of a static function. */ +#ifndef INSERVER int _glapi_add_dispatch( const char * const * function_names, const char * parameter_signature ) @@ -478,12 +479,12 @@ _glapi_add_dispatch( const char * const * function_names, return offset; } - +#endif /** * Return offset of entrypoint for named function within dispatch table. */ -GLint +GLint _GLAPI_EXPORT _glapi_get_proc_offset(const char *funcName) { GLint offset; @@ -504,7 +505,7 @@ _glapi_get_proc_offset(const char *funcName) * in the name of static functions, try generating a new API entrypoint on * the fly with assembly language. */ -_glapi_proc +_glapi_proc _GLAPI_EXPORT _glapi_get_proc_address(const char *funcName) { _glapi_proc func; @@ -545,7 +546,7 @@ _glapi_get_proc_address(const char *funcName) * Return the name of the function at the given dispatch offset. * This is only intended for debugging. */ -const char * +const char * _GLAPI_EXPORT _glapi_get_proc_name(GLuint offset) { const char * n; @@ -571,7 +572,7 @@ _glapi_get_proc_name(GLuint offset) * Return size of dispatch table struct as number of functions (or * slots). */ -GLuint +GLuint _GLAPI_EXPORT _glapi_get_dispatch_table_size(void) { /* diff --git a/mesalib/src/mapi/glapi/glapi_nop.c b/mesalib/src/mapi/glapi/glapi_nop.c index 69b1ae6dd..f34075e70 100644 --- a/mesalib/src/mapi/glapi/glapi_nop.c +++ b/mesalib/src/mapi/glapi/glapi_nop.c @@ -41,12 +41,12 @@ #include "glapi/glapi_priv.h" -void +void _GLAPI_EXPORT _glapi_noop_enable_warnings(unsigned char enable) { } -void +void _GLAPI_EXPORT _glapi_set_warning_func(_glapi_proc func) { } diff --git a/mesalib/src/mapi/glapi/glthread.c b/mesalib/src/mapi/glapi/glthread.c index 00915380f..239090ecf 100644 --- a/mesalib/src/mapi/glapi/glthread.c +++ b/mesalib/src/mapi/glapi/glthread.c @@ -1,6 +1,6 @@ #include "glapi/glapi.h" -unsigned long +unsigned long _GLAPI_EXPORT _glthread_GetID(void) { return u_thread_self(); diff --git a/mesalib/src/mesa/drivers/dri/common/drisw_util.c b/mesalib/src/mesa/drivers/dri/common/drisw_util.c index 0ec124ae5..ed30e135f 100644 --- a/mesalib/src/mesa/drivers/dri/common/drisw_util.c +++ b/mesalib/src/mesa/drivers/dri/common/drisw_util.c @@ -109,6 +109,7 @@ driCreateContextAttribs(__DRIscreen *screen, int api, unsigned major_version = 1; unsigned minor_version = 0; uint32_t flags = 0; + unsigned i; /* Either num_attribs is zero and attribs is NULL, or num_attribs is not * zero and attribs is not NULL. @@ -130,7 +131,7 @@ driCreateContextAttribs(__DRIscreen *screen, int api, return NULL; } - for (unsigned i = 0; i < num_attribs; i++) { + for (i = 0; i < num_attribs; i++) { switch (attribs[i * 2]) { case __DRI_CTX_ATTRIB_MAJOR_VERSION: major_version = attribs[i * 2 + 1]; diff --git a/mesalib/src/mesa/drivers/dri/swrast/swrast.c b/mesalib/src/mesa/drivers/dri/swrast/swrast.c index 22d71bf10..bfac47c08 100644 --- a/mesalib/src/mesa/drivers/dri/swrast/swrast.c +++ b/mesalib/src/mesa/drivers/dri/swrast/swrast.c @@ -31,6 +31,11 @@ * The back-buffer is allocated by the driver and is private. */ +#ifdef _MSC_VER +#define WIN32_LEAN_AND_MEAN 1 +#include <windows.h> +#endif + #include "main/context.h" #include "main/extensions.h" #include "main/formats.h" @@ -178,7 +183,7 @@ swrastFillInModes(__DRIscreen *psp, fb_type = GL_UNSIGNED_INT_8_8_8_8_REV; break; default: - fprintf(stderr, "[%s:%u] bad depth %d\n", __func__, __LINE__, + fprintf(stderr, "[%s:%u] bad depth %d\n", __FUNCTION__, __LINE__, pixel_bits); return NULL; } @@ -189,7 +194,7 @@ swrastFillInModes(__DRIscreen *psp, back_buffer_factor, msaa_samples_array, 1, GL_TRUE); if (configs == NULL) { - fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__, + fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __FUNCTION__, __LINE__); return NULL; } @@ -882,15 +887,15 @@ dri_unbind_context(__DRIcontext * cPriv) const struct __DriverAPIRec driDriverAPI = { - .InitScreen = dri_init_screen, - .DestroyScreen = dri_destroy_screen, - .CreateContext = dri_create_context, - .DestroyContext = dri_destroy_context, - .CreateBuffer = dri_create_buffer, - .DestroyBuffer = dri_destroy_buffer, - .SwapBuffers = dri_swap_buffers, - .MakeCurrent = dri_make_current, - .UnbindContext = dri_unbind_context, + /*.InitScreen = */dri_init_screen, + /*.DestroyScreen = */dri_destroy_screen, + /*.CreateContext = */dri_create_context, + /*.DestroyContext = */dri_destroy_context, + /*.CreateBuffer = */dri_create_buffer, + /*.DestroyBuffer = */dri_destroy_buffer, + /*.SwapBuffers = */dri_swap_buffers, + /*.MakeCurrent = */dri_make_current, + /*.UnbindContext = */dri_unbind_context, }; /* This is the table of extensions that the loader will dlsym() for. */ diff --git a/mesalib/src/mesa/drivers/dri/swrast/swrast_priv.h b/mesalib/src/mesa/drivers/dri/swrast/swrast_priv.h index b25de931a..36ab02053 100644 --- a/mesalib/src/mesa/drivers/dri/swrast/swrast_priv.h +++ b/mesalib/src/mesa/drivers/dri/swrast/swrast_priv.h @@ -33,6 +33,13 @@ #include "dri_util.h" #include "swrast/s_context.h" +#ifdef _MSC_VER +#ifdef PUBLIC +#undef PUBLIC +#endif +#define PUBLIC __declspec(dllexport) +#endif + /** * Debugging diff --git a/mesalib/src/mesa/main/.gitignore b/mesalib/src/mesa/main/.gitignore index caed74f40..6204321dd 100644 --- a/mesalib/src/mesa/main/.gitignore +++ b/mesalib/src/mesa/main/.gitignore @@ -1,13 +1,14 @@ -api_exec_es1.c -api_exec_es2.c -dispatch.h -enums.c -get_es1.c -get_es2.c -git_sha1.h -git_sha1.h.tmp -api_exec_es1_dispatch.h -api_exec_es1_remap_helper.h -api_exec_es2_dispatch.h -api_exec_es2_remap_helper.h -remap_helper.h +api_exec_es1.c
+api_exec_es2.c
+dispatch.h
+enums.c
+get_es1.c
+get_es2.c
+git_sha1.h
+git_sha1.h.tmp
+api_exec_es1_dispatch.h
+api_exec_es1_remap_helper.h
+api_exec_es2_dispatch.h
+api_exec_es2_remap_helper.h
+remap_helper.h
+glapitable.h
diff --git a/mesalib/src/mesa/main/bufferobj.c b/mesalib/src/mesa/main/bufferobj.c index 7d72092a2..2cf1217d5 100644 --- a/mesalib/src/mesa/main/bufferobj.c +++ b/mesalib/src/mesa/main/bufferobj.c @@ -233,7 +233,7 @@ buffer_object_subdata_range_good( struct gl_context * ctx, GLenum target, * * Default callback for the \c dd_function_table::NewBufferObject() hook. */ -static struct gl_buffer_object * +struct gl_buffer_object * _mesa_new_buffer_object( struct gl_context *ctx, GLuint name, GLenum target ) { struct gl_buffer_object *obj; @@ -251,7 +251,7 @@ _mesa_new_buffer_object( struct gl_context *ctx, GLuint name, GLenum target ) * * Default callback for the \c dd_function_table::DeleteBuffer() hook. */ -static void +void _mesa_delete_buffer_object(struct gl_context *ctx, struct gl_buffer_object *bufObj) { @@ -403,7 +403,7 @@ _mesa_total_buffer_object_memory(struct gl_context *ctx) * \return GL_TRUE for success, GL_FALSE for failure * \sa glBufferDataARB, dd_function_table::BufferData. */ -static GLboolean +GLboolean _mesa_buffer_data( struct gl_context *ctx, GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage, struct gl_buffer_object * bufObj ) @@ -447,7 +447,7 @@ _mesa_buffer_data( struct gl_context *ctx, GLenum target, GLsizeiptrARB size, * * \sa glBufferSubDataARB, dd_function_table::BufferSubData. */ -static void +void _mesa_buffer_subdata( struct gl_context *ctx, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data, struct gl_buffer_object * bufObj ) @@ -480,7 +480,7 @@ _mesa_buffer_subdata( struct gl_context *ctx, GLintptrARB offset, * * \sa glBufferGetSubDataARB, dd_function_table::GetBufferSubData. */ -static void +void _mesa_buffer_get_subdata( struct gl_context *ctx, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data, struct gl_buffer_object * bufObj ) @@ -537,7 +537,7 @@ _mesa_buffer_flush_mapped_range( struct gl_context *ctx, * * \sa glUnmapBufferARB, dd_function_table::UnmapBuffer */ -static GLboolean +GLboolean _mesa_buffer_unmap( struct gl_context *ctx, struct gl_buffer_object *bufObj ) { (void) ctx; diff --git a/mesalib/src/mesa/main/dlopen.c b/mesalib/src/mesa/main/dlopen.c index 57a33292e..62d9023a9 100644 --- a/mesalib/src/mesa/main/dlopen.c +++ b/mesalib/src/mesa/main/dlopen.c @@ -51,7 +51,7 @@ _mesa_dlopen(const char *libname, int flags) #elif defined(_GNU_SOURCE) flags = RTLD_LAZY | RTLD_GLOBAL; /* Overriding flags at this time */ return dlopen(libname, flags); -#elif defined(__MINGW32__) +#elif defined(__MINGW32__) | defined(_MSC_VER) return LoadLibraryA(libname); #else return NULL; @@ -82,7 +82,7 @@ _mesa_dlsym(void *handle, const char *fname) u.v = dlsym(handle, fname2); #elif defined(_GNU_SOURCE) u.v = dlsym(handle, fname); -#elif defined(__MINGW32__) +#elif defined(__MINGW32__) | defined(_MSC_VER) u.v = (void *) GetProcAddress(handle, fname); #else u.v = NULL; @@ -101,7 +101,7 @@ _mesa_dlclose(void *handle) (void) handle; #elif defined(_GNU_SOURCE) dlclose(handle); -#elif defined(__MINGW32__) +#elif defined(__MINGW32__) | defined(_MSC_VER) FreeLibrary(handle); #else (void) handle; diff --git a/mesalib/src/mesa/main/queryobj.c b/mesalib/src/mesa/main/queryobj.c index cb5078411..805c031ae 100644 --- a/mesalib/src/mesa/main/queryobj.c +++ b/mesalib/src/mesa/main/queryobj.c @@ -44,7 +44,7 @@ * \param id - the new object's ID * \return pointer to new query_object object or NULL if out of memory. */ -static struct gl_query_object * +struct gl_query_object * _mesa_new_query_object(struct gl_context *ctx, GLuint id) { struct gl_query_object *q = MALLOC_STRUCT(gl_query_object); @@ -63,7 +63,7 @@ _mesa_new_query_object(struct gl_context *ctx, GLuint id) * Begin a query. Software driver fallback. * Called via ctx->Driver.BeginQuery(). */ -static void +void _mesa_begin_query(struct gl_context *ctx, struct gl_query_object *q) { /* no-op */ @@ -74,7 +74,7 @@ _mesa_begin_query(struct gl_context *ctx, struct gl_query_object *q) * End a query. Software driver fallback. * Called via ctx->Driver.EndQuery(). */ -static void +void _mesa_end_query(struct gl_context *ctx, struct gl_query_object *q) { q->Ready = GL_TRUE; @@ -85,7 +85,7 @@ _mesa_end_query(struct gl_context *ctx, struct gl_query_object *q) * Wait for query to complete. Software driver fallback. * Called via ctx->Driver.WaitQuery(). */ -static void +void _mesa_wait_query(struct gl_context *ctx, struct gl_query_object *q) { /* For software drivers, _mesa_end_query() should have completed the query. @@ -113,7 +113,7 @@ _mesa_check_query(struct gl_context *ctx, struct gl_query_object *q) * Delete a query object. Called via ctx->Driver.DeleteQuery(). * Not removed from hash table here. */ -static void +void _mesa_delete_query(struct gl_context *ctx, struct gl_query_object *q) { free(q); diff --git a/mesalib/src/mesa/main/syncobj.c b/mesalib/src/mesa/main/syncobj.c index e1a5c6c0f..85dd41aac 100644 --- a/mesalib/src/mesa/main/syncobj.c +++ b/mesalib/src/mesa/main/syncobj.c @@ -125,7 +125,7 @@ _mesa_wait_sync(struct gl_context *ctx, struct gl_sync_object *syncObj, } -void +void GLAPIENTRY _mesa_init_sync_object_functions(struct dd_function_table *driver) { driver->NewSyncObject = _mesa_new_sync_object; @@ -140,7 +140,7 @@ _mesa_init_sync_object_functions(struct dd_function_table *driver) } -void +void GLAPIENTRY _mesa_init_sync_dispatch(struct _glapi_table *disp) { SET_IsSync(disp, _mesa_IsSync); @@ -156,7 +156,7 @@ _mesa_init_sync_dispatch(struct _glapi_table *disp) /** * Allocate/init the context state related to sync objects. */ -void +void GLAPIENTRY _mesa_init_sync(struct gl_context *ctx) { (void) ctx; @@ -166,7 +166,7 @@ _mesa_init_sync(struct gl_context *ctx) /** * Free the context state related to sync objects. */ -void +void GLAPIENTRY _mesa_free_sync_data(struct gl_context *ctx) { (void) ctx; @@ -182,7 +182,7 @@ _mesa_validate_sync(struct gl_sync_object *syncObj) } -void +void GLAPIENTRY _mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) { _glthread_LOCK_MUTEX(ctx->Shared->Mutex); @@ -191,7 +191,7 @@ _mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) } -void +void GLAPIENTRY _mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) { _glthread_LOCK_MUTEX(ctx->Shared->Mutex); diff --git a/mesalib/src/mesa/main/syncobj.h b/mesalib/src/mesa/main/syncobj.h index 50a5d1123..e2e92b0ac 100644 --- a/mesalib/src/mesa/main/syncobj.h +++ b/mesalib/src/mesa/main/syncobj.h @@ -41,22 +41,22 @@ struct gl_sync_object; #if FEATURE_ARB_sync -extern void +extern void GLAPIENTRY _mesa_init_sync_object_functions(struct dd_function_table *driver); -extern void +extern void GLAPIENTRY _mesa_init_sync_dispatch(struct _glapi_table *disp); -extern void +extern void GLAPIENTRY _mesa_init_sync(struct gl_context *); -extern void +extern void GLAPIENTRY _mesa_free_sync_data(struct gl_context *); -extern void +extern void GLAPIENTRY _mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj); -extern void +extern void GLAPIENTRY _mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj); extern GLboolean GLAPIENTRY diff --git a/mesalib/src/mesa/main/texcompress_s3tc.c b/mesalib/src/mesa/main/texcompress_s3tc.c index e30890c8b..632c05873 100644 --- a/mesalib/src/mesa/main/texcompress_s3tc.c +++ b/mesalib/src/mesa/main/texcompress_s3tc.c @@ -51,7 +51,11 @@ #if defined(_WIN32) || defined(WIN32) +#ifdef _DEBUG +#define DXTN_LIBNAME "dxtn_dbg.dll" +#else #define DXTN_LIBNAME "dxtn.dll" +#endif #define RTLD_LAZY 0 #define RTLD_GLOBAL 0 #elif defined(__DJGPP__) diff --git a/mesalib/src/mesa/main/version.c b/mesalib/src/mesa/main/version.c index efaaf58de..38d2b3398 100644 --- a/mesalib/src/mesa/main/version.c +++ b/mesalib/src/mesa/main/version.c @@ -25,7 +25,7 @@ #include "imports.h" #include "mtypes.h" #include "version.h" -#include "git_sha1.h" +/*#include "git_sha1.h"*/ /** * Override the context's GL version if the environment variable diff --git a/mesalib/src/mesa/program/.gitignore b/mesalib/src/mesa/program/.gitignore index 4c20872e1..2f1601fcc 100644 --- a/mesalib/src/mesa/program/.gitignore +++ b/mesalib/src/mesa/program/.gitignore @@ -1,4 +1,4 @@ -program_parse.output -lex.yy.c -program_parse.tab.c -program_parse.tab.h +lex.yy.c
+program_parse.output
+program_parse.tab.c
+program_parse.tab.h
\ No newline at end of file diff --git a/mesalib/src/mesa/program/doflexbison.bat b/mesalib/src/mesa/program/doflexbison.bat new file mode 100644 index 000000000..d54e5ac65 --- /dev/null +++ b/mesalib/src/mesa/program/doflexbison.bat @@ -0,0 +1,18 @@ +@echo off
+setlocal
+
+cd "%~dp0"
+
+set M4=..\..\..\..\tools\mhmake\m4.exe
+set BISON_PKGDATADIR=../../../../tools/mhmake/src/bisondata
+
+set path=..\..\..\..\tools\mhmake;%path%
+
+..\..\..\..\tools\mhmake\bison.exe -v -d --output=program_parse.tab.c program_parse.y
+
+copy "..\..\..\..\tools\mhmake\flex++.exe" flex.exe
+flex.exe --never-interactive --outfile=lex.yy.c program_lexer.l
+del flex.exe
+
+endlocal
+
diff --git a/mesalib/src/mesa/program/hash_table.h b/mesalib/src/mesa/program/hash_table.h index e95fc4982..b814497a6 100644 --- a/mesalib/src/mesa/program/hash_table.h +++ b/mesalib/src/mesa/program/hash_table.h @@ -37,6 +37,7 @@ #include <stdint.h> #include <limits.h> #include <assert.h> +#include <unistd.h> struct string_to_uint_map; |