Ian Romanick
0bf3810165
glsl_type array constructor generate a real name for the type
2010-03-31 14:37:42 -07:00
Eric Anholt
0ed6125725
Test that const declarations include initializers.
...
Fixes dataType6.frag, and also array2.frag for an unexpected but valid
reason.
2010-03-31 13:17:23 -07:00
Ian Romanick
e0800062da
Reject declarations with 'in' or 'out' qualifiers
...
'in' and 'out' can only be used in function parameter lists or at
global scope (1.30 and later). This change enforces this.
2010-03-31 13:15:23 -07:00
Ian Romanick
a705d65ccd
Add 'in' to some parameters of the function
...
This goes along with the qualifier-?? tests.
2010-03-31 13:14:37 -07:00
Ian Romanick
d8a2133887
Add some variable declaration qualifier tests
2010-03-31 13:13:12 -07:00
Ian Romanick
d8065d86e8
Fix comment bug and printf bug in previous commit
2010-03-31 13:03:56 -07:00
Ian Romanick
b168e53452
Require that 'uniform' and 'varying' variables be declared at global scope
...
This causes the following tests to pass:
glslparsertest/shaders/uniform.frag
glslparsertest/shaders/varying.frag
2010-03-31 12:31:18 -07:00
Ian Romanick
e1c1a3f3bd
Slightly refector checks for declarations that must be at global scope
2010-03-31 12:26:03 -07:00
Eric Anholt
b82c0c31ae
Implement logical operators.
...
Fixes parser9.frag.
2010-03-31 09:17:39 -10:00
Eric Anholt
b97ee2e260
Test that variable names don't use the reserved gl_ prefix.
...
Fixes identifier2.frag.
2010-03-31 09:17:35 -10:00
Eric Anholt
b980207707
Test that discard only appears in the fragment shader.
...
Fixes fragmentOnly4.vert.
2010-03-30 23:40:14 -10:00
Eric Anholt
174cc03edc
Test that main doesn't take any parameters.
...
Fixes main2.vert.
2010-03-30 23:37:51 -10:00
Eric Anholt
aad7c77937
Test that a non-void function returns a value.
2010-03-30 23:30:11 -10:00
Eric Anholt
ab79d4ec6e
Test that a void function doesn't return a value.
...
Fixes function1.frag.
2010-03-30 23:28:17 -10:00
Eric Anholt
794ea61006
Fix unused variable warning.
2010-03-30 18:31:32 -10:00
Ian Romanick
a80cbd6d82
Forbid array comparisons in GLSL 1.10
...
This causes the following tests to pass:
glslparsertest/shaders/array3.frag
2010-03-30 17:04:48 -07:00
Ian Romanick
28009cd75c
Begin handling array declarations
...
This causes the following tests to pass:
glslparsertest/shaders/array4.frag
glslparsertest/shaders/array5.frag
This causes the following tests to fail. These shaders were
previously failing to compile, but they were all failing for the wrong
reasons.
glslparsertest/shaders/array3.frag
2010-03-30 16:59:47 -07:00
Ian Romanick
548a1b5ab7
Implement array type handling
...
Since all glsl_type objects are flyweights, support is added to track all
known array types. This accounts for most of the changes.
2010-03-30 16:58:19 -07:00
Ian Romanick
066304679c
Add proper wrappers so that C++ code can use hash_table type
2010-03-30 16:57:29 -07:00
Ian Romanick
1cf43a4331
Initial bits of constant expression evaluator
...
Currently only works for constants. The rest will be added later.
2010-03-30 16:56:50 -07:00
Ian Romanick
84960f01cb
Add some array declaration tests
2010-03-30 16:56:22 -07:00
Ian Romanick
2d816204c8
Arrays are not allowed as vertex shader inputs in GLSL 1.30 either
2010-03-29 17:42:43 -07:00
Ian Romanick
8901eeefc9
Add several tests for vertex shader attributes
2010-03-29 17:19:13 -07:00
Ian Romanick
fb9f5b0675
Add some checking for vertex shader inputs / attributes
...
This causes the following tests to pass:
glslparsertest/shaders/attribute.vert
glslparsertest/shaders/attribute1.vert
glslparsertest/shaders/attribute2.vert
2010-03-29 17:16:35 -07:00
Ian Romanick
06e5308e29
Add parser support for texture rectangle types
2010-03-29 16:44:29 -07:00
Ian Romanick
bfb09c2a94
Use call-by-reference for apply_implicit_conversion
...
I'm not sure if this is a win or not. It makes the code in
apply_implicit_conversion more clear, but it obscures the fact that it
may change the pointers.
2010-03-29 16:32:55 -07:00
Ian Romanick
db9be2e7aa
Apply implicit conversions to ?: operator
2010-03-29 16:29:26 -07:00
Ian Romanick
212b0327b4
Apply implicit conversions to equality operators
2010-03-29 16:29:26 -07:00
Ian Romanick
0150f5f20e
Apply implicit conversions to relational operators
2010-03-29 16:29:26 -07:00
Ian Romanick
0104536568
Apply implicit conversions to arithmetic operators
2010-03-29 16:29:21 -07:00
Ian Romanick
70348543ac
Add glsl_type::is_array and glsl_type::is_float queries
2010-03-29 16:17:15 -07:00
Ian Romanick
8a24cd5cea
Allow single-component constructors
...
This causes the following tests to pass:
glslparsertest/shaders/CorrectVersion.V110.frag
shaders/glsl-vs-sqrt-zero.frag
shaders/glsl-vs-sqrt-zero.vert
This causes the following tests to fail. These shaders were
previously failing to compile, but they were all failing for the wrong
reasons.
glslparsertest/shaders/attribute1.vert
glslparsertest/shaders/attribute2.vert
glslparsertest/shaders/main2.vert
2010-03-29 16:07:34 -07:00
Ian Romanick
32a494586f
Add tests for :? operator
2010-03-29 15:34:21 -07:00
Ian Romanick
96f9cea116
Implement HIR conversion for ?: operator
2010-03-29 15:33:54 -07:00
Ian Romanick
5185a5f7d5
Add generate_temporary to generate an anonymous temporary
2010-03-29 15:20:42 -07:00
Ian Romanick
6e659caaa9
Implement HIR conversion for ast_nequal and ast_equal
...
The following tests now pass:
shaders/glsl-unused-varying.frag
shaders/glsl-fs-sqrt-branch.frag
2010-03-29 15:18:31 -07:00
Ian Romanick
251eb75318
Add missing break-statements in ast_expression::hir
...
The ast_conditional case was flowing right into ast_pre_inc.
2010-03-29 15:17:16 -07:00
Ian Romanick
3c6fea3048
Implement ir_if (for if-statments) and conversion from AST
...
The following tests now pass:
glslparsertest/shaders/if1.frag
glslparsertest/shaders/if2.frag
The following tests that used to pass now fail. It appears that most
of these fail because ast_nequal and ast_equal are not converted to HIR.
shaders/glsl-unused-varying.frag
shaders/glsl-fs-sqrt-branch.frag
2010-03-29 15:17:11 -07:00
Ian Romanick
721efc04da
Add several simple if-statement tests
2010-03-29 14:11:10 -07:00
Ian Romanick
17d86f4371
Add a variable to the symbol table after processing the initializer
2010-03-29 12:59:02 -07:00
Ian Romanick
521c2983b4
Trivial code cleanup in ir_dereference::is_lvalue
2010-03-29 12:52:00 -07:00
Eric Anholt
d1e31952ed
Add support for builtin radians() and degrees().
2010-03-29 12:48:45 -07:00
Eric Anholt
78fe3c9150
Add definitions for 1.10 built-in uniforms for ff state.
2010-03-29 12:48:45 -07:00
Eric Anholt
a9fafc6504
Don't let swizzles with duplicated components be considered as lvalues.
...
Fixes swizzle2.frag.
2010-03-29 12:48:45 -07:00
Eric Anholt
ab372dab2a
Reject main() declarations with a non-void return value.
...
Fixes main3.vert.
2010-03-29 12:48:45 -07:00
Eric Anholt
2e063f1adf
Reject variables marked with attribute in the fragment shader.
...
Fixes attribute.frag.
2010-03-29 12:48:45 -07:00
Eric Anholt
3cb4358f38
Add the instruction for the parameter variable declarations of builtin funcs.
...
Matches constructor setup, but I'm not really sure why we make the
variable twice.
2010-03-29 12:48:45 -07:00
Eric Anholt
76a91e1afb
Implement dot() builtin.
2010-03-29 12:48:45 -07:00
Eric Anholt
01665262e5
Implement exp2() and log2(), and make ir_unop_exp and ir_unop_log be base e.
...
Making the base e functions IR operations is not a clear win. i965
doesn't support it, it doesn't look like r600 supports it, but r500
does. It should be easily supportable as a lowering pass, though.
2010-03-29 12:48:45 -07:00
Eric Anholt
53afc3609d
Implement builtin length() function.
2010-03-29 12:48:45 -07:00