mesa.git
14 years agoRename prog to shader. Less confusing.
Kenneth Graunke [Thu, 17 Jun 2010 22:28:34 +0000 (15:28 -0700)]
Rename prog to shader.  Less confusing.

14 years agoFix compile on 64-bit.
Kenneth Graunke [Thu, 17 Jun 2010 22:28:13 +0000 (15:28 -0700)]
Fix compile on 64-bit.

14 years agoEnsure that shader_in and shader_out are correctly set in declarations
Ian Romanick [Sat, 19 Jun 2010 01:57:31 +0000 (18:57 -0700)]
Ensure that shader_in and shader_out are correctly set in declarations

14 years agoglsl_lexer: centroid and invariant are not reserved words in GLSL 1.10
Ian Romanick [Sat, 19 Jun 2010 01:40:12 +0000 (18:40 -0700)]
glsl_lexer: centroid and invariant are not reserved words in GLSL 1.10

14 years agoglsl_lexer: Handle interpolation qualifiers
Ian Romanick [Sat, 19 Jun 2010 01:36:51 +0000 (18:36 -0700)]
glsl_lexer: Handle interpolation qualifiers

14 years agolinker: Add some function header comments
Ian Romanick [Thu, 17 Jun 2010 22:20:22 +0000 (15:20 -0700)]
linker: Add some function header comments

14 years agoTODO: Add note about initializers for constants
Ian Romanick [Fri, 18 Jun 2010 03:37:17 +0000 (20:37 -0700)]
TODO: Add note about initializers for constants

14 years agoAllow initializers for uniforms
Ian Romanick [Fri, 18 Jun 2010 03:09:34 +0000 (20:09 -0700)]
Allow initializers for uniforms

14 years agoDon't link shaders by default
Ian Romanick [Fri, 18 Jun 2010 02:51:48 +0000 (19:51 -0700)]
Don't link shaders by default

Add a command line option to trigger linking.  This "fixes" all the
failing test cases.  Oops.

14 years agolinker: Initial bits of the linker
Ian Romanick [Thu, 17 Jun 2010 22:04:20 +0000 (15:04 -0700)]
linker: Initial bits of the linker

No linking is done yet, but some of the semantic checking is done.

14 years agoUse glsl_program instead of an open-coded vector of shaders
Ian Romanick [Thu, 17 Jun 2010 19:59:45 +0000 (12:59 -0700)]
Use glsl_program instead of an open-coded vector of shaders

14 years agoAdd glsl_program that is similar to Mesa's gl_shader_program
Ian Romanick [Thu, 17 Jun 2010 19:59:27 +0000 (12:59 -0700)]
Add glsl_program that is similar to Mesa's gl_shader_program

14 years agoChange glsl_program to glsl_shader
Ian Romanick [Thu, 17 Jun 2010 19:54:24 +0000 (12:54 -0700)]
Change glsl_program to glsl_shader

14 years agoCompile multiple shaders listed on the command line
Ian Romanick [Thu, 17 Jun 2010 19:22:16 +0000 (12:22 -0700)]
Compile multiple shaders listed on the command line

14 years agoExtract compilation to a separate routine
Ian Romanick [Thu, 17 Jun 2010 19:01:18 +0000 (12:01 -0700)]
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.

14 years agoAdd glsl_program that is similar to Mesa's gl_program
Ian Romanick [Thu, 17 Jun 2010 19:00:25 +0000 (12:00 -0700)]
Add glsl_program that is similar to Mesa's gl_program

This will be used as the header for individual compilation units.

14 years agoAdd TODO list
Ian Romanick [Wed, 16 Jun 2010 00:42:16 +0000 (17:42 -0700)]
Add TODO list

Don't want to forget anything, no do we?

14 years agoPrinting LIR is optional
Ian Romanick [Tue, 15 Jun 2010 19:51:38 +0000 (12:51 -0700)]
Printing LIR is optional

14 years agoPrinting the AST is optional
Ian Romanick [Tue, 15 Jun 2010 19:47:07 +0000 (12:47 -0700)]
Printing the AST is optional

14 years agoMinor bits of code rearranging
Ian Romanick [Tue, 15 Jun 2010 19:03:10 +0000 (12:03 -0700)]
Minor bits of code rearranging

14 years agoInfer shader type from suffix on filename
Ian Romanick [Tue, 15 Jun 2010 19:00:37 +0000 (12:00 -0700)]
Infer shader type from suffix on filename

14 years agoRemove ability to read "IR shaders" from stand-alone compiler
Ian Romanick [Mon, 14 Jun 2010 21:47:26 +0000 (14:47 -0700)]
Remove ability to read "IR shaders" from stand-alone compiler

14 years agoMove stand-alone compiler main routine to main.cpp
Ian Romanick [Mon, 14 Jun 2010 21:46:09 +0000 (14:46 -0700)]
Move stand-alone compiler main routine to main.cpp

14 years agoir_constant: Eliminate 'void *' constructor
Ian Romanick [Fri, 11 Jun 2010 23:57:47 +0000 (16:57 -0700)]
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.

14 years agoUse statically typed ir_constant constructors wherever possible
Ian Romanick [Fri, 11 Jun 2010 23:52:09 +0000 (16:52 -0700)]
Use statically typed ir_constant constructors wherever possible

14 years agoir_reader: Use 'union ir_constant_data' in read_constant
Ian Romanick [Fri, 11 Jun 2010 23:43:42 +0000 (16:43 -0700)]
ir_reader: Use 'union ir_constant_data' in read_constant

14 years agoir_constant_visitor: Type of constant result is same as original expression
Ian Romanick [Fri, 11 Jun 2010 23:23:52 +0000 (16:23 -0700)]
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.

14 years agoir_constant_visitor: Types of ir_binop_{equal,nequal} must match
Ian Romanick [Fri, 11 Jun 2010 23:20:43 +0000 (16:20 -0700)]
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.

14 years agoir_constant_visitor: Use 'union ir_constant_data' in expression handler
Ian Romanick [Fri, 11 Jun 2010 23:08:47 +0000 (16:08 -0700)]
ir_constant_visitor: Use 'union ir_constant_data' in expression handler

14 years agoir_constant_visitor: Use 'union ir_constant_data' instead of open-coded version
Ian Romanick [Fri, 11 Jun 2010 22:49:49 +0000 (15:49 -0700)]
ir_constant_visitor: Use 'union ir_constant_data' instead of open-coded version

14 years agoMatrix and vector constructors with a single constant scalar are constant
Ian Romanick [Fri, 11 Jun 2010 21:01:44 +0000 (14:01 -0700)]
Matrix and vector constructors with a single constant scalar are constant

14 years agoir_constant_visitor: Handle bool-to-int and int-to-bool
Ian Romanick [Fri, 11 Jun 2010 20:46:30 +0000 (13:46 -0700)]
ir_constant_visitor: Handle bool-to-int and int-to-bool

14 years agoTreat ?: with all constant subexpressions as a constant expression
Ian Romanick [Fri, 11 Jun 2010 20:45:51 +0000 (13:45 -0700)]
Treat ?: with all constant subexpressions as a constant expression

14 years agoRearrange code in HIR conversion of ?: operator
Ian Romanick [Fri, 11 Jun 2010 19:56:26 +0000 (12:56 -0700)]
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.

14 years agoir_constant_visitor: Handle constant swizzles
Ian Romanick [Fri, 11 Jun 2010 19:30:28 +0000 (12:30 -0700)]
ir_constant_visitor: Handle constant swizzles

14 years agoir_constant_visitor: Handle array access of constant vectors and matrices
Ian Romanick [Fri, 11 Jun 2010 19:20:12 +0000 (12:20 -0700)]
ir_constant_visitor: Handle array access of constant vectors and matrices

14 years agoRemove redundant type checks for constant constructors
Ian Romanick [Fri, 11 Jun 2010 18:36:12 +0000 (11:36 -0700)]
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.

14 years agoDo simple constant folding while processing function call parameters
Ian Romanick [Thu, 10 Jun 2010 00:31:02 +0000 (17:31 -0700)]
Do simple constant folding while processing function call parameters

14 years agoir_constant_visitor: Handle dereferences of constant records
Ian Romanick [Thu, 10 Jun 2010 00:30:19 +0000 (17:30 -0700)]
ir_constant_visitor: Handle dereferences of constant records

14 years agoir_constant: Add get_record_field query
Ian Romanick [Thu, 10 Jun 2010 00:28:54 +0000 (17:28 -0700)]
ir_constant: Add get_record_field query

14 years agoAdd glsl_types::field_index to get the location of a record field
Ian Romanick [Thu, 10 Jun 2010 00:27:31 +0000 (17:27 -0700)]
Add glsl_types::field_index to get the location of a record field

14 years agoDetect and process constant record constructors
Ian Romanick [Thu, 10 Jun 2010 00:26:20 +0000 (17:26 -0700)]
Detect and process constant record constructors

14 years agoMove parameter processing out of match_function_by_name
Ian Romanick [Thu, 10 Jun 2010 00:23:26 +0000 (17:23 -0700)]
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.

14 years agoir_constant_visitor: Use clone to create a constant from a variable reference
Ian Romanick [Thu, 10 Jun 2010 00:19:10 +0000 (17:19 -0700)]
ir_constant_visitor: Use clone to create a constant from a variable reference

14 years agoir_constant: Support constant structures in clone
Ian Romanick [Thu, 10 Jun 2010 00:18:04 +0000 (17:18 -0700)]
ir_constant: Support constant structures in clone

14 years agoir_constant: Add storage for multiple constants for arrays and records
Ian Romanick [Thu, 10 Jun 2010 00:11:50 +0000 (17:11 -0700)]
ir_constant: Add storage for multiple constants for arrays and records

14 years agoAdd glsl_type::is_record query
Ian Romanick [Thu, 10 Jun 2010 00:17:47 +0000 (17:17 -0700)]
Add glsl_type::is_record query

14 years agoAdd float/bool conversion to ir_constant_expression.cpp.
Ian Romanick [Mon, 7 Jun 2010 22:10:14 +0000 (15:10 -0700)]
Add float/bool conversion to ir_constant_expression.cpp.

14 years agoConstant-fold constructor parameters after type conversion
Ian Romanick [Mon, 7 Jun 2010 22:08:04 +0000 (15:08 -0700)]
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.

14 years agoMake constructors with all constant parameters generate in-line constants
Ian Romanick [Fri, 4 Jun 2010 23:36:09 +0000 (16:36 -0700)]
Make constructors with all constant parameters generate in-line constants

14 years agoConstruct an ir_constant from a list of ir_constant values
Ian Romanick [Fri, 4 Jun 2010 23:34:38 +0000 (16:34 -0700)]
Construct an ir_constant from a list of ir_constant values

14 years agoAdd queries to determine if a node is a list sentinal
Ian Romanick [Fri, 4 Jun 2010 23:35:42 +0000 (16:35 -0700)]
Add queries to determine if a node is a list sentinal

14 years agoAdd methods to ir_constant to get scalar components in a particular type
Ian Romanick [Fri, 4 Jun 2010 23:30:07 +0000 (16:30 -0700)]
Add methods to ir_constant to get scalar components in a particular type

14 years agoDerefence components of constants smarter
Ian Romanick [Fri, 4 Jun 2010 23:20:35 +0000 (16:20 -0700)]
Derefence components of constants smarter

During generation of calls to constructors, derefernce constants by creating
new constants instead of creating dereferences.

14 years agoConstruct an ir_constant from a scalar component of another ir_constant
Ian Romanick [Fri, 4 Jun 2010 23:13:35 +0000 (16:13 -0700)]
Construct an ir_constant from a scalar component of another ir_constant

14 years agoUse ir_unop_b2i when converting a bool-to-int and add a missing break
Ian Romanick [Fri, 11 Jun 2010 20:49:00 +0000 (13:49 -0700)]
Use ir_unop_b2i when converting a bool-to-int and add a missing break

The previous code just had dumb cut-and-paste errors.

14 years agoRemove linux_list in favor of exec_list.
Kenneth Graunke [Thu, 10 Jun 2010 00:05:14 +0000 (17:05 -0700)]
Remove linux_list in favor of exec_list.

14 years agoAdd forgotten autogenerated EXT_texture_array_fs folder.
Kenneth Graunke [Wed, 9 Jun 2010 23:46:09 +0000 (16:46 -0700)]
Add forgotten autogenerated EXT_texture_array_fs folder.

14 years agoImplement 1.30 int/uint variants of min/max/clamp.
Kenneth Graunke [Wed, 9 Jun 2010 23:14:45 +0000 (16:14 -0700)]
Implement 1.30 int/uint variants of min/max/clamp.

14 years agotexture_builtins.py: The unsigned integer type is "uint", not "unsigned"
Kenneth Graunke [Wed, 9 Jun 2010 23:11:36 +0000 (16:11 -0700)]
texture_builtins.py: The unsigned integer type is "uint", not "unsigned"

This doesn't actually affect anything yet, but is good to fix anyway.

14 years agoImplement 1.30 hyperbolic trig builtins (sinh, cosh, tanh).
Kenneth Graunke [Wed, 9 Jun 2010 23:08:36 +0000 (16:08 -0700)]
Implement 1.30 hyperbolic trig builtins (sinh, cosh, tanh).

14 years agoImplement 1.20 'transpose' builtin.
Kenneth Graunke [Wed, 9 Jun 2010 22:56:46 +0000 (15:56 -0700)]
Implement 1.20 'transpose' builtin.

14 years agoImplement 1.20 'outerProduct' builtin.
Kenneth Graunke [Wed, 9 Jun 2010 22:47:09 +0000 (15:47 -0700)]
Implement 1.20 'outerProduct' builtin.

14 years agoImplement matrixCompMult builtin - the last of the 110 builtins.
Kenneth Graunke [Wed, 9 Jun 2010 22:17:41 +0000 (15:17 -0700)]
Implement matrixCompMult builtin - the last of the 110 builtins.

14 years agoir_constant_visitor: Add support for dFdx and dFdy operations.
Kenneth Graunke [Wed, 9 Jun 2010 22:22:35 +0000 (15:22 -0700)]
ir_constant_visitor: Add support for dFdx and dFdy operations.

If the argument is a constant expression...it's not changing per pixel,
so the result is simply 0.

14 years agoImplement dFdx, dFdy, and fwidth via new expression opcodes.
Kenneth Graunke [Wed, 9 Jun 2010 21:42:41 +0000 (14:42 -0700)]
Implement dFdx, dFdy, and fwidth via new expression opcodes.

14 years agoImplement 'refract' builtin.
Kenneth Graunke [Wed, 9 Jun 2010 21:30:52 +0000 (14:30 -0700)]
Implement 'refract' builtin.

14 years agoFix some typing issues in asin.
Kenneth Graunke [Wed, 9 Jun 2010 21:15:04 +0000 (14:15 -0700)]
Fix some typing issues in asin.

CorrectFunction.vert now passes.

14 years agoAdd a completely bogus implementation of the noise[1234] builtins.
Kenneth Graunke [Wed, 9 Jun 2010 21:06:56 +0000 (14:06 -0700)]
Add a completely bogus implementation of the noise[1234] builtins.

idr suggested this.  Eventually we will need a real one.

14 years agoImplement 'acos' builtin.
Kenneth Graunke [Wed, 9 Jun 2010 20:52:32 +0000 (13:52 -0700)]
Implement 'acos' builtin.

This is tacked on to the end of the 'asin' file because acos calls asin,
whech means asin needs to be defined first.  Alphabetical order fail.

14 years agoImplement 'faceforward' builtin.
Kenneth Graunke [Wed, 9 Jun 2010 20:27:16 +0000 (13:27 -0700)]
Implement 'faceforward' builtin.

14 years agoImplement 'distance' builtin.
Kenneth Graunke [Wed, 9 Jun 2010 20:17:00 +0000 (13:17 -0700)]
Implement 'distance' builtin.

14 years agoAdd remaining signatures for 'clamp' builtin.
Kenneth Graunke [Wed, 9 Jun 2010 20:10:00 +0000 (13:10 -0700)]
Add remaining signatures for 'clamp' builtin.

14 years agoAdd remaining signatures for 'max' builtin.
Kenneth Graunke [Wed, 9 Jun 2010 20:05:40 +0000 (13:05 -0700)]
Add remaining signatures for 'max' builtin.

14 years agoAdd remaining signatures for 'min' builtin.
Kenneth Graunke [Wed, 9 Jun 2010 20:03:18 +0000 (13:03 -0700)]
Add remaining signatures for 'min' builtin.

14 years agoAdd remaining signatures for 'mod' builtin.
Kenneth Graunke [Wed, 9 Jun 2010 19:58:42 +0000 (12:58 -0700)]
Add remaining signatures for 'mod' builtin.

14 years agoir_function_cloning_visitor: Add support for ir_texture.
Kenneth Graunke [Wed, 9 Jun 2010 18:07:53 +0000 (11:07 -0700)]
ir_function_cloning_visitor: Add support for ir_texture.

14 years agoDon't call _mesa_glsl_initialize_types for every builtin function.
Kenneth Graunke [Wed, 9 Jun 2010 05:41:30 +0000 (22:41 -0700)]
Don't call _mesa_glsl_initialize_types for every builtin function.

This was clearly wrong; types are now only initialized once.

14 years agoOnly initialize types after #extension directives have been processed.
Kenneth Graunke [Wed, 9 Jun 2010 05:33:43 +0000 (22:33 -0700)]
Only initialize types after #extension directives have been processed.

Since _mesa_glsl_initialize_types add types for various extensions, we
can't call it until after processing "#extension foo : disable" lines.

Fixes tex_rect_02.frag.

14 years agoCommit output of texture_builtins.py and refresh builtin_function.cpp.
Kenneth Graunke [Tue, 8 Jun 2010 23:29:17 +0000 (16:29 -0700)]
Commit output of texture_builtins.py and refresh builtin_function.cpp.

14 years agotexture_builtins.py: Support the EXT_texture_array extension.
Kenneth Graunke [Tue, 8 Jun 2010 23:03:46 +0000 (16:03 -0700)]
texture_builtins.py: Support the EXT_texture_array extension.

14 years agoAdd EXT_texture_array support.
Kenneth Graunke [Tue, 8 Jun 2010 23:17:17 +0000 (16:17 -0700)]
Add EXT_texture_array support.

14 years agogenerate_builtins.pl: Support stage-specific builtins even for extensions.
Kenneth Graunke [Tue, 8 Jun 2010 23:01:41 +0000 (16:01 -0700)]
generate_builtins.pl: Support stage-specific builtins even for extensions.

14 years agotexture_builtins.py: Fixes for Array variants.
Kenneth Graunke [Tue, 8 Jun 2010 22:34:37 +0000 (15:34 -0700)]
texture_builtins.py: Fixes for Array variants.

The array layer is now included as part of the texture coordinate.

14 years agotexture_builtins.py: Add support for 130 Proj variants.
Kenneth Graunke [Tue, 8 Jun 2010 20:44:00 +0000 (13:44 -0700)]
texture_builtins.py: Add support for 130 Proj variants.

14 years agoAdd a python script to generate texture builtins.
Kenneth Graunke [Tue, 8 Jun 2010 02:28:19 +0000 (19:28 -0700)]
Add a python script to generate texture builtins.

14 years agogenerate_builtins.pl: Support directiories for each extension.
Kenneth Graunke [Fri, 4 Jun 2010 22:02:49 +0000 (15:02 -0700)]
generate_builtins.pl: Support directiories for each extension.

14 years agogenerate_builtins.pl: Support _fs directories as well as _vs.
Kenneth Graunke [Thu, 3 Jun 2010 21:51:40 +0000 (14:51 -0700)]
generate_builtins.pl: Support _fs directories as well as _vs.

14 years agoSet the type of ir_texture properly; infer it from the sampler type.
Kenneth Graunke [Thu, 3 Jun 2010 22:07:34 +0000 (15:07 -0700)]
Set the type of ir_texture properly; infer it from the sampler type.

14 years agoir_reader: Add support for reading ir_texture.
Kenneth Graunke [Thu, 27 May 2010 00:55:10 +0000 (17:55 -0700)]
ir_reader: Add support for reading ir_texture.

14 years agoir_reader: Refactor reading of dereferences for later reuse.
Kenneth Graunke [Thu, 27 May 2010 00:52:44 +0000 (17:52 -0700)]
ir_reader: Refactor reading of dereferences for later reuse.

14 years agoAdd stub visitor support for ir_texture.
Kenneth Graunke [Thu, 27 May 2010 00:42:03 +0000 (17:42 -0700)]
Add stub visitor support for ir_texture.

14 years agoir_print_visitor: Add support for ir_texture.
Kenneth Graunke [Wed, 26 May 2010 22:15:31 +0000 (15:15 -0700)]
ir_print_visitor: Add support for ir_texture.

14 years agoAdd mappings between ir_texture_opcode and strings.
Kenneth Graunke [Wed, 26 May 2010 23:41:47 +0000 (16:41 -0700)]
Add mappings between ir_texture_opcode and strings.

14 years agoDefine IR instruction for texture look-ups
Ian Romanick [Thu, 29 Apr 2010 01:42:36 +0000 (18:42 -0700)]
Define IR instruction for texture look-ups

14 years agoUse array delete operator to delete an array
Ian Romanick [Wed, 9 Jun 2010 18:00:00 +0000 (11:00 -0700)]
Use array delete operator to delete an array

This was detected by valgrind.  I think GCC still does the right
thing, but the C++ spec allows the compiler to do something
stupid... like crash or only delete the first entry in the array.

14 years agoBump GL_MAX_TEXTURE_COORDS from 2 to 4
Ian Romanick [Tue, 8 Jun 2010 02:10:33 +0000 (19:10 -0700)]
Bump GL_MAX_TEXTURE_COORDS from 2 to 4

Every platform that supports GLSL sets GL_MAX_TEXTURE_COORDS to at
least 4, so hard-code 4 for now.

This causes the following tests to pass:

    glslparsertest/glsl2/norsetto-bumptbn_sh_fp.vert
    glslparsertest/glsl2/xreal-lighting-d-omni.vert
    glslparsertest/glsl2/xreal-lighting-db-omni.vert
    glslparsertest/glsl2/xreal-lighting-dbs-omni.vert

14 years agoOnly allow global precision qualifier for int and float
Ian Romanick [Tue, 8 Jun 2010 02:02:44 +0000 (19:02 -0700)]
Only allow global precision qualifier for int and float

This causes the following tests to pass:

    glslparsertest/glsl2/precision-03.vert

14 years agoFix parsing of precision qualifiers
Ian Romanick [Tue, 8 Jun 2010 01:55:41 +0000 (18:55 -0700)]
Fix parsing of precision qualifiers

This causes the following tests to pass:

     glslparsertest/glsl2/precision-02.vert
     glslparsertest/glsl2/precision-04.vert
     glslparsertest/glsl2/precision-06.vert

This causes the following test to fail.  This shader was previously
failing to compile, but it was failing for the wrong reasons.

     glslparsertest/glsl2/precision-03.vert

14 years agoDon't process empty shaders
Ian Romanick [Tue, 8 Jun 2010 01:53:06 +0000 (18:53 -0700)]
Don't process empty shaders

Some valid shaders, such as 'precision highp float;', evaluate to
empty sets of instructions.  This causes some of the optimization
stages to enter infinite loops.  Instead, don't bother processing the
empty ones.