Kenneth Graunke
b78c9ddfbf
glcpp: Set locations on tokens.
2010-06-21 11:31:56 -07:00
Kenneth Graunke
db938103c7
glcpp: Set line locations in the lexer.
2010-06-21 11:31:56 -07:00
Kenneth Graunke
465e03ee07
glcpp: Add plumbing to support line locations.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
f70f60739a
glcpp: Add %error-verbose.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
77260fc0a0
glcpp: Actually support #ifdef and #ifndef.
...
Strangely, the lexer never created these tokens, even though the parser
already had code to handle them.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
e0e429fca3
glcpp: Build a reentrant parser.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
b673ff91ab
glcpp: Print errors on stdout instead of stderr (non-standalone version).
...
Otherwise, piglit marks tests as "warn" when the shader was (correctly)
failing.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
3370c5f90b
glcpp/tests: Add extra newline at the end of expected output.
...
This newline at EOF is harmless and generated by the previous commit.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
f82d673648
glcpp: Handle missing newline at EOF.
...
Fixes CorrectFuncOverload.vert.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
739ba06680
glcpp: Complain about unrecognized directives.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
3b73ea36c4
glcpp: Pass #version, #extension, and #pragma directives through unchanged.
...
Let the main compiler's lexer/parser handle them.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
04ba86a536
Make the main compiler call the preprocessor.
...
By using a single function, the main compiler doesn't need to include
glcpp.h, which currently has a lot of details about the preprocessor
internals. In particular, this prevents the two yacc grammars from
seeing each other, which would be rather messy to sort out.
2010-06-21 11:31:54 -07:00
Kenneth Graunke
2848c4c183
Complain and exit if the given shader file doesn't exist.
2010-06-21 11:27:33 -07:00
Kenneth Graunke
1b1f43e608
glcpp: Add support for lexing from a string.
...
The standalone binary still reads from stdin, however.
2010-06-21 11:25:50 -07:00
Kenneth Graunke
4c8a1af811
glcpp: Output to a buffer and error log rather than directly printing.
...
In the standalone case, simply print the buffers when done.
2010-06-21 11:25:50 -07:00
Kenneth Graunke
0656f6b875
glcpp: Fix a case of == where = probably ought to be.
...
Caught by a GCC warning.
2010-06-21 11:25:50 -07:00
Kenneth Graunke
cbaab7093c
Add glcpp to the build.
2010-06-21 11:25:48 -07:00
Kenneth Graunke
254a485c33
Specify %option prefix="glcpp_" in the source code, not the Makefile.
2010-06-21 11:25:30 -07:00
Kenneth Graunke
6f510a49d2
Merge Carl's preprocessor into the glcpp subdirectory.
2010-06-21 11:22:11 -07:00
Kenneth Graunke
f3eb42d200
Print out the info log if compilation fails.
2010-06-19 11:44:22 -07:00
Kenneth Graunke
b2ba6fac09
Change error/warning functions to print to the info log.
2010-06-19 11:44:21 -07:00
Ian Romanick
ca97bd395f
Initialize the shader info log
...
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
2010-06-19 11:36:15 -07:00
Kenneth Graunke
32cf482215
Make shader a talloc context.
2010-06-19 11:36:15 -07:00
Kenneth Graunke
57d0fc4139
Link against talloc. We're going to be using it.
2010-06-19 11:36:15 -07:00
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