glsl_parser_extra: Add utility to copy symbols between symbol tables
authorEduardo Lima Mitev <elima@igalia.com>
Sun, 5 Mar 2017 19:28:41 +0000 (20:28 +0100)
committerNeil Roberts <nroberts@igalia.com>
Mon, 30 Oct 2017 17:10:39 +0000 (18:10 +0100)
commit4c62a270a99d443316e29020377465a90a6968c0
treee3d05ceebeb99fc1f55867d986c816e61644bce0
parentceaad79f8593007ca387ae06460a70ae606314eb
glsl_parser_extra: Add utility to copy symbols between symbol tables

Some symbols gathered in the symbols table during parsing are needed
later for the compile and link stages, so they are moved along the
process. Currently, only functions and non-temporary variables are
copied between symbol tables. However, the built-in gl_PerVertex
interface blocks are also needed during the linking stage (the last
step), to match re-declared blocks of inter-stage shaders.

This patch adds a new utility function that will factorize current code
that copies functions and variables between two symbol tables, and in
addition will copy explicitly declared gl_PerVertex blocks too.

The function will be used in a subsequent patch.

v2 (Neil Roberts):
Allow the src symbol table to be NULL and explicitly copy the
gl_PerVertex symbols in case they are not referenced in the exec_list.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Eduardo Lima Mitev <elima@igalia.com>
Signed-off-by: Neil Roberts <nroberts@igalia.com>
src/compiler/glsl/glsl_parser_extras.cpp
src/compiler/glsl/glsl_parser_extras.h