summaryrefslogtreecommitdiff
path: root/src/glsl/linker.cpp
AgeCommit message (Collapse)Author
2010-07-19linker: Use foreach_list_safe in move_non_declarationsIan Romanick
The node being processed may be removed from the list and put in a different list. Not using the safe version caused list processing to change streams after moving a node.
2010-07-19linker: Move global instructions from the linked shader firstIan Romanick
For the shader containing 'main', use the linked shader (i.e., the clone of the original shader that contained main) as the source for global instructions to move into main.
2010-07-13glsl2: When linking makes a variable not a varying output, make it ir_var_auto.Eric Anholt
This almost fixes glsl-unused-varying, except that the used varying gets assigned to the first varying slot (position).
2010-07-13glsl2: Remove unnecessary casts of clone return valuesIan Romanick
2010-07-12linker: Merge global-scope instructions into mainIan Romanick
Find instructions in all shaders that are not contained in a function (i.e., initializers for global variables). "Move" these instructions to the top of the main function in the linked shader. As a side-effect, many global variables will also be copied into the linked shader.
2010-07-12linker: Detect the shader that contains "main" during intrastage linkingIan Romanick
2010-07-12linker: Implement first bits of intrastage linkingIan Romanick
This currently involves an ugly hack so that every link doesn't result in all the built-in functions showing up as multiply defined. As soon as the built-in functions are stored in a separate compilation unit, ir_function_signature::is_built_in can be removed.
2010-07-12linker: Refactor cross_validate_uniforms into cross_validate_globalsIan Romanick
The later, more generic function will be used in the intra-stage linker.
2010-07-12linker: Stub-out intrastage linkerIan Romanick
2010-07-07linker: Use bit-0 instead of VERT_BIT_GENERIC0Ian Romanick
Uses of the bits for allocation are offset by 16, and VERT_BIT_GENERIC0 already has the 16 offset. As a result, it was preventing the wrong thing from being allocated.
2010-06-30glsl2: Allow a fragment shader to not write a color.Eric Anholt
I can't find any text justifying this check, and it caused a reasonable-looking shader in glsl-bug-22603 (which writes only gl_FragDepth) to fail.
2010-06-30linker: Don't dynamically allocate slots for linked shadersIan Romanick
The can be at most one shader per stage. There are currently only two stages. There is zero reason to dynamically size this array.
2010-06-30linker: Don't automatically allocate VERT_ATTRIB_GENERIC0Ian Romanick
2010-06-30glsl2: Use Mesa's gl_shader_program instead of our own struct glsl_program.Eric Anholt
This avoids more allocation and shuffling of data around.
2010-06-30glsl2: Move our data from a glsl_shader* on the side to the main gl_shader *.Eric Anholt
This saves recompiling at link time. gl_shader->ir is made a pointer so that we don't have to bring exec_list into mtypes.h.
2010-06-24glsl2: Wrap includes of C interfaces with extern "C".Eric Anholt
2010-06-24glsl2: Move the compiler to the subdirectory it will live in in Mesa.Eric Anholt