summaryrefslogtreecommitdiff
path: root/builtins/tools/generate_builtins.pl
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2010-06-08 16:01:41 -0700
committerKenneth Graunke <kenneth@whitecape.org>2010-06-09 11:14:58 -0700
commitcc249f79e7df5fa45b119e57cdc9a4887add712b (patch)
tree72d0f47618d5735171fff0ba7542503d1a2b99de /builtins/tools/generate_builtins.pl
parentc34a624c9f50edc73d8ac65e7fd1e50c30d5929e (diff)
generate_builtins.pl: Support stage-specific builtins even for extensions.
Diffstat (limited to 'builtins/tools/generate_builtins.pl')
-rwxr-xr-xbuiltins/tools/generate_builtins.pl27
1 files changed, 15 insertions, 12 deletions
diff --git a/builtins/tools/generate_builtins.pl b/builtins/tools/generate_builtins.pl
index 8fdef2d974..8b640ab8ff 100755
--- a/builtins/tools/generate_builtins.pl
+++ b/builtins/tools/generate_builtins.pl
@@ -97,23 +97,26 @@ _mesa_glsl_initialize_functions(exec_list *instructions,
{
EOF
-foreach $version (@versions) {
+foreach $version_xs (@versions) {
+ $check = "";
+ if ($version_xs =~ /_vs/) {
+ $check = "state->target == vertex_shader && ";
+ } elsif ($version_xs =~ /_fs/) {
+ $check = "state->target == fragment_shader && ";
+ }
+ $version = $version_xs;
+ $version =~ s/_[vf]s//g;
+
if ($version =~ /^[1-9][0-9][0-9]/) {
- $version_number = $version;
- $version_number =~ s/_[vf]s//g;
- $check = "state->language_version >= $version_number";
- if ($version =~ /_vs/) {
- $check = "$check && state->target == vertex_shader";
- } elsif ($version =~ /_fs/) {
- $check = "$check && state->target == fragment_shader";
- }
+ $check = "${check}state->language_version >= $version";
} else {
# Not a version...an extension name
- $check = "state->${version}_enable";
+ $check = "${check}state->${version}_enable";
}
print " if ($check)\n";
- print " read_builtins(state, instructions, functions_for_$version,\n";
- print " sizeof(functions_for_$version) / ";
+ print " read_builtins(state, instructions,\n";
+ print " functions_for_$version_xs,\n";
+ print " sizeof(functions_for_$version_xs) / ";
print "sizeof(const char *));\n\n"
}