glsl: add ast/parser support for subroutine parsing storage (v3.2)
authorDave Airlie <airlied@redhat.com>
Mon, 1 Jun 2015 00:55:47 +0000 (10:55 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 23 Jul 2015 07:25:35 +0000 (17:25 +1000)
commit65ac360823ee12ac2d1f3bb6758d352fcd0d9210
treede2edd21bf0689d01de91985add95b77663a1955
parent884df9ef834d6b77226d0dfd778c5317365a2394
glsl: add ast/parser support for subroutine parsing storage (v3.2)

This is the guts of the GLSL parser and AST support for
shader subroutines.

The code creates a subroutine type in the parser, and
uses that there to validate the identifiers. The parser
also distinguishes between subroutine types/function prototypes
/uniforms and subroutine defintions for functions.

Then in the AST conversion it recreates the types, and
stores the subroutine definition info or subroutine info
into the ir_function along with a side lookup table in
the parser state. It also converts subroutine calls into
the enhanced ir_call.

v2: move to handling method calls in
function handling not in field selection.
v3: merge Chris's previous parser patches in here, to
make it clearer what's changed in one place.
v3.1: add more documentation, drop unused include
v3.2: drop is_subroutine_def

Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/glsl/ast.h
src/glsl/ast_function.cpp
src/glsl/ast_to_hir.cpp
src/glsl/ast_type.cpp
src/glsl/glsl_lexer.ll
src/glsl/glsl_parser.yy
src/glsl/glsl_parser_extras.cpp
src/glsl/glsl_parser_extras.h
src/glsl/hir_field_selection.cpp