Age | Commit message (Collapse) | Author |
|
|
|
This is the only method supported in GLSL 1.20 so we take a few short-cuts.
|
|
|
|
Only one flag defined so far: PROG_PARAM_CENTROID_BIT
|
|
function
Bug #18659.
|
|
|
|
We now express arrays in terms of indirect addressing. For example:
dst = a[i];
becomes:
MOV dst, TEMP[1 + TEMP[2].y];
At instruction-emit time indirect addressing is converted into ARL/
ADDR-relative form:
ARL ADDR.x, TEMP[2].y;
MOV dst, TEMP[1 + ADDR.x];
This fixes a number of array-related issues. Arrays of arrays and complex
array/struct nesting works now.
There may be some regressions, but more work is coming.
|
|
|
|
The Swizzle and Size fields carry all the info we need now.
|
|
|
|
|
|
This lets one specify initial values for uniforms in the code, avoiding
the need to call glUniform() in some cases.
|
|
emitted yet though)
|
|
Expressions like array[i] + array[j] didn't work properly before.
|
|
The swizzle mask for such variables wasn't set up properly.
|
|
|
|
|
|
sampler variable redeclaration.
|
|
Includes:
1. Fixes failed asserting about bad swizzles in src reg emit.
2. Tracks uniform var usage.
3. Emit exp() in terms of EXP2 instruction.
|
|
|
|
|
|
|
|
Fixes a failure for cases such as y = f(a, f(a, b))
All the usual tests still pass but regressions are possible...
|
|
|
|
Plus,
- fix some issues in casting function arguments to format param types.
- fix some vec/mat constructor bugs
- find/report more syntax/semantic errors
|
|
Plus begin some fixes for vec/matrix constructors.
|
|
In the following case:
for () {
if (cond)
break; // or continue;
else
something;
}
The "something" block didn't get emitted.
|
|
|
|
|
|
Build on the heirarchal approach implemented for arrays/structs.
|
|
|
|
|
|
Fix incorrect uniform/attribute size query results.
Add missing error checking for glUniform, glUniformMatrix params
Fix an array size/allocation error.
|
|
|
|
The slang_ir_storage type now has a pointer to parent storage to represent
storage of an array element within an array, or a field within a struct.
This fixes some problems related to addressing of fields/elements in non-
trivial cases. More work to follow.
|
|
Need to add local vars of original function to the new scope's variable
list (though the DECLs were already present).
In slang_operation_copy() call slang_replace_scope() for SLANG_OPER_BLOCK_NEW_SCOPE opers.
|
|
|
|
This fixes a failure for cases like:
vec4 v;
v[1] *= 2.0;
The v[1] actually acts like a writemask, equivalent to v.y
The fix is a bit convoluted, but will do for now.
|
|
|
|
Before, the presence of a 'return' statement always prevented inlining
a function. This was because we didn't want to accidentally return from
the _calling_ function. We still need the semantic of 'return' when inlining
but we can't always use unconditional branches/jumps (GPUs don't always
support arbitrary branching).
Now, we allow inlining functions w/ return if the return is the last
statement in the function. This fixes the common case of a function
that returns a value, such as:
vec4 square(const in vec4 x)
{
return x * x;
}
which effectively compiles into:
vec4 square(const in vec4 x)
{
__retVal = x * x;
return;
}
The 'return' can be no-op'd now and we can inline the function.
|
|
All samplers indexes were zero.
|
|
|
|
Previously, the shader linker combined the uniforms used by the vertex and
fragment shaders into a combined set of uniforms. This made the implementation
of glUniform*() simple, but was rather inefficient otherwise. Now each shader
gets its own set of uniforms (no more modelview matrix showing up in the
fragment shader uniforms, for example).
cherry-picked by hand from gallium-0.1 branch
|
|
Also, remove obsolete matrix codegen code.
|
|
|
|
Conflicts:
src/mesa/drivers/dri/i965/brw_sf.h
src/mesa/drivers/dri/i965/intel_context.c
|
|
Contains the normalized fragment position within a point sprite.
|
|
|
|
|
|
|