diff options
author | Kenneth Graunke <kenneth@whitecape.org> | 2010-06-08 16:01:41 -0700 |
---|---|---|
committer | Kenneth Graunke <kenneth@whitecape.org> | 2010-06-09 11:14:58 -0700 |
commit | cc249f79e7df5fa45b119e57cdc9a4887add712b (patch) | |
tree | 72d0f47618d5735171fff0ba7542503d1a2b99de /builtins/tools/generate_builtins.pl | |
parent | c34a624c9f50edc73d8ac65e7fd1e50c30d5929e (diff) |
generate_builtins.pl: Support stage-specific builtins even for extensions.
Diffstat (limited to 'builtins/tools/generate_builtins.pl')
-rwxr-xr-x | builtins/tools/generate_builtins.pl | 27 |
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" } |