Age | Commit message (Collapse) | Author |
|
Conflicts:
src/mesa/drivers/dri/i965/brw_curbe.c
src/mesa/drivers/dri/i965/brw_vs_emit.c
src/mesa/drivers/dri/i965/brw_wm_glsl.c
|
|
This function will check an instruction to see if there's data dependencies
between the dst and src registers if executed in an SOA manner.
|
|
This function will check an instruction to see if there's data dependencies
between the dst and src registers if executed in an SOA manner.
|
|
If a shader reaches an out-of-memory condition while adding
a new function (reallocating the function list), a segfault
will occur during cleanup (because the num_functions field
is non-zero, but the functions pointer is NULL).
This fixes that segfault by zeroing out the num_functions
field if reallocation fails.
|
|
|
|
Use _NEW_PROGRAM_CONSTANTS when changing constant/uniform buffer values.
Binding a new program/shader sets both _NEW_PROGRAM and _NEW_PROGRAM_CONSTANTS.
|
|
|
|
This state flag will be used to indicate that vertex/fragment program
constants have changed. _NEW_PROGRAM will be used to indicate changes
to the vertex/fragment shader itself, or misc related state.
_NEW_PROGRAM_CONSTANTS is also set whenever a program parameter that's
tracking GL state has changed. For example, if the projection matrix is
in the parameter list, calling glFrustum() will cause _NEW_PROGRAM_CONSTANTS
to be set. This will let to remove the need for dynamic state atoms in
some drivers.
For now, we still set _NEW_PROGRAM in all the places we used to. We'll no
longer set _NEW_PROGRAM in glUniform() after drivers/etc have been updated.
|
|
|
|
|
|
Fixes bug seen in progs/tests/vptest1.c
|
|
|
|
There's really no need for two negation fields. This came from the
GL_NV_fragment_program extension. The new, unified Negate bitfield applies
after the absolute value step.
|
|
|
|
|
|
The code in prog_print.c can be used instead.
|
|
|
|
Seems to b working well enough to enable all the time.
Optimizations can be disabled with "export MESA_GLSL=nopt" if needed.
|
|
|
|
|
|
Duplicated unnamed constants were getting counted more than once.
|
|
Now a program that uses 256 locals works as it should.
|
|
Also, s/pow/_mesa_pow/
|
|
EyeDirection -> SpotDirection
_NormDirection -> _NormSpotDirection
|
|
|
|
|
|
|
|
A shader program may consist of multiple shaders (source code units).
If we find there are unresolved functions after compiling the unit that
defines main(), we'll concatenate all the respective vertex or fragment
shaders then recompile.
This isn't foolproof but should work in most cases.
|
|
|
|
This fixes broken variable indexing into the gl_Eye/ObjectPlaneS/T/R/Q arrays.
See bug 20986.
|
|
|
|
|
|
Actually, window width - 1, height - 1
|
|
This is a check-point commit; not turned on yet.
Use the linear scan register allocation algorithm to re-allocate temporary
registers. This is done by computing the live intervals for registers and
reallocating temps with that information.
For some shaders this dramatically reduces the number of temp registers
needed.
For the time being we give up on a few cases such as relative-indexed temps
and subroutine calls (but we inline most GLSL functions anyway).
|
|
|
|
|
|
|
|
Initialize the shader's pragma settings before calling the compiler.
Added pragma "Ignore" fields to allow overriding the #pragma directives found
in shader source code.
|
|
BTW, the debug pragma syntax is "#pragma debug(on)"
|
|
|
|
wasn't good enough for deeply nested if's.
|
|
This reverts commit 752296b8f311c5e3844f3ce89d17ba57224ce5ba.
|
|
trying to unroll, bail, and fallback to doing the real loop.
|
|
|
|
|
|
|
|
add new entrypoints, new texture format, etc
translate in texenvprogram.c for drivers using the mesa-generated tex env
fragment program
also handled in swrast, but not tested (cannot work due to negative texel
results not handled correctly)
|
|
|
|
This was used to handle both variable declarations and references to variables.
Instead, just do storage allocation and assignment for declarations and
references, respectively.
This is a step toward better var/uniform allocation (only allocate storage
for vars/uniforms that are actually referenced by the code).
|
|
|