Commit graph

588 commits

Author SHA1 Message Date
Kenneth Graunke
c186b3fbe0 Fix crash when running glsl on a signle fragment shader. 2010-06-19 01:29:17 -07:00
Kenneth Graunke
29e6087481 Rename prog to shader. Less confusing. 2010-06-19 01:29:17 -07:00
Kenneth Graunke
520aad2c3e Fix compile on 64-bit. 2010-06-19 01:29:17 -07:00
Ian Romanick
c96822cf31 Ensure that shader_in and shader_out are correctly set in declarations 2010-06-18 19:02:45 -07:00
Ian Romanick
93dad36844 glsl_lexer: centroid and invariant are not reserved words in GLSL 1.10 2010-06-18 19:02:45 -07:00
Ian Romanick
8655b7e78a glsl_lexer: Handle interpolation qualifiers 2010-06-18 19:02:45 -07:00
Ian Romanick
c93b8f1d2c linker: Add some function header comments 2010-06-17 20:37:38 -07:00
Ian Romanick
4230cfdb42 TODO: Add note about initializers for constants 2010-06-17 20:37:17 -07:00
Ian Romanick
ce03088406 Allow initializers for uniforms 2010-06-17 20:09:34 -07:00
Ian Romanick
c648a124b2 Don't link shaders by default
Add a command line option to trigger linking.  This "fixes" all the
failing test cases.  Oops.
2010-06-17 19:51:48 -07:00
Ian Romanick
832dfa58b2 linker: Initial bits of the linker
No linking is done yet, but some of the semantic checking is done.
2010-06-17 15:04:20 -07:00
Ian Romanick
705fb01b59 Use glsl_program instead of an open-coded vector of shaders 2010-06-17 12:59:45 -07:00
Ian Romanick
3f09c2508a Add glsl_program that is similar to Mesa's gl_shader_program 2010-06-17 12:59:27 -07:00
Ian Romanick
f8fe53ca2e Change glsl_program to glsl_shader 2010-06-17 12:54:24 -07:00
Ian Romanick
6fd9fb23de Compile multiple shaders listed on the command line 2010-06-17 12:22:16 -07:00
Ian Romanick
8ce55dbd92 Extract compilation to a separate routine
Pull all of the code that actually compiles shaders into a separate
function.  Use a glsl_program to track data about the compiled shader.
2010-06-17 12:01:18 -07:00
Ian Romanick
869b6f680f Add glsl_program that is similar to Mesa's gl_program
This will be used as the header for individual compilation units.
2010-06-17 12:00:25 -07:00
Ian Romanick
298586fd6c Add TODO list
Don't want to forget anything, no do we?
2010-06-15 17:42:16 -07:00
Ian Romanick
81e1747ac5 Printing LIR is optional 2010-06-15 12:51:38 -07:00
Ian Romanick
7babbdbd82 Printing the AST is optional 2010-06-15 12:50:53 -07:00
Ian Romanick
fc0ef6451c Minor bits of code rearranging 2010-06-15 12:20:49 -07:00
Ian Romanick
2b36895f0c Infer shader type from suffix on filename 2010-06-15 12:00:37 -07:00
Ian Romanick
54992c30b0 Remove ability to read "IR shaders" from stand-alone compiler 2010-06-14 14:47:26 -07:00
Ian Romanick
61d4aa041f Move stand-alone compiler main routine to main.cpp 2010-06-14 14:46:09 -07:00
Ian Romanick
824b659d91 ir_constant: Eliminate 'void *' constructor
All of the places that had been using the (glsl_type *, void *)
constructor were actually passing an ir_constant_data for the
'void *'.  The code can be greatly simplified by replacing this
constructor with a (glsl_type *, ir_constant_data *) constructor.
This should also help prevent one class of invalid uses of the old
constructor.
2010-06-11 17:12:40 -07:00
Ian Romanick
b74b43e4ba Use statically typed ir_constant constructors wherever possible 2010-06-11 17:12:23 -07:00
Ian Romanick
4976e57448 ir_reader: Use 'union ir_constant_data' in read_constant 2010-06-11 17:12:23 -07:00
Ian Romanick
f8b88bea0f ir_constant_visitor: Type of constant result is same as original expression
The type of the resulting constant must be the same as the type of the
original expression.  The changes to the code require that the case
where an unhandled expression is received, and there really shouldn't
be any of these, must be an exit point.
2010-06-11 17:12:12 -07:00
Ian Romanick
083d75a942 ir_constant_visitor: Types of ir_binop_{equal,nequal} must match
The types must match exactly, so there is no reason to check the types here.
2010-06-11 17:11:14 -07:00
Ian Romanick
4daaab6040 ir_constant_visitor: Use 'union ir_constant_data' in expression handler 2010-06-11 17:11:06 -07:00
Ian Romanick
0bb70a30d5 ir_constant_visitor: Use 'union ir_constant_data' instead of open-coded version 2010-06-11 15:49:49 -07:00
Ian Romanick
be1d2bfdea Matrix and vector constructors with a single constant scalar are constant 2010-06-11 15:48:26 -07:00
Ian Romanick
39d6dd3537 ir_constant_visitor: Handle bool-to-int and int-to-bool 2010-06-11 15:43:59 -07:00
Ian Romanick
7825d3d157 Treat ?: with all constant subexpressions as a constant expression 2010-06-11 15:43:59 -07:00
Ian Romanick
0ad76c6767 Rearrange code in HIR conversion of ?: operator
There are no functional changes.  Code is just moved arround.  This
prepares for the next set of changes that do change the functionality.
2010-06-11 15:43:59 -07:00
Ian Romanick
c2ba619092 ir_constant_visitor: Handle constant swizzles 2010-06-11 15:43:59 -07:00
Ian Romanick
9b92af9ebc ir_constant_visitor: Handle array access of constant vectors and matrices 2010-06-11 15:43:56 -07:00
Ian Romanick
2cf0969de5 Remove redundant type checks for constant constructors
All of the cases (e.g., arrays and structures) that were being
filtered by these tests were already filtered by the earlier
is_numeric and is_boolean tests.
2010-06-11 15:37:34 -07:00
Ian Romanick
1a872b1af3 Do simple constant folding while processing function call parameters 2010-06-11 15:37:34 -07:00
Ian Romanick
253dedeb6c ir_constant_visitor: Handle dereferences of constant records 2010-06-11 15:37:27 -07:00
Ian Romanick
b94c29a47b ir_constant: Add get_record_field query 2010-06-11 15:36:05 -07:00
Ian Romanick
eeedd355cf Add glsl_types::field_index to get the location of a record field 2010-06-11 13:51:42 -07:00
Ian Romanick
ab92d0e53e Detect and process constant record constructors 2010-06-11 13:51:42 -07:00
Ian Romanick
c077131c0f Move parameter processing out of match_function_by_name
Eventually code that processes constant structure constructors will
need to use the processed list of parameters.
2010-06-11 13:51:42 -07:00
Ian Romanick
d4b33edbd0 ir_constant_visitor: Use clone to create a constant from a variable reference 2010-06-11 13:51:42 -07:00
Ian Romanick
710919fd7c ir_constant: Support constant structures in clone 2010-06-11 13:51:42 -07:00
Ian Romanick
7f1ab834d7 ir_constant: Add storage for multiple constants for arrays and records 2010-06-11 13:51:42 -07:00
Ian Romanick
93073551f9 Add glsl_type::is_record query 2010-06-11 13:51:42 -07:00
Ian Romanick
7dc2b71a89 Add float/bool conversion to ir_constant_expression.cpp. 2010-06-11 13:51:42 -07:00
Ian Romanick
00eb466e38 Constant-fold constructor parameters after type conversion
This causes the following tests to pass:

         glslparsertest/shaders/CorrectMatComma2.frag

One of the incorrect errors in glslparsertest/shaders/CorrectComma.frag
is also eliminated.
2010-06-11 13:51:42 -07:00