Age | Commit message (Collapse) | Author |
|
It's possible for mis-behaving vertex programs to produce vertex data
with very large/NaN values. This doesn't get handled reliably by the
clipper code so we may try to rasterize triangles that extend beyond
the viewport/window. Always clip spans to avoid invalid memory accesses
later.
|
|
If a horizontal span of pixels was located at x < 0 we could sometimes
read/write outside of renderbuffer bounds.
|
|
Fixes a regression from commit 76ac75af8e5481b498981c133836efa2101be2dc.
|
|
Also, clean up the logic involved in choosing per-vertex vs. per-fragment
primary+secondary color addition.
|
|
We weren't putting the right colors into the back buffer in this mode.
|
|
The MAX-based function can produce values that are non-monotonic for a span
which causes glitches in texture filtering. The sqrt-based one avoids that.
This is perhaps slightly slower than before, but the difference
probably isn't noticable given we're doing software mipmap filtering.
Issue reported by Nir Radian <nirr@horizonsemi.com>
|
|
|
|
Using _EnabledUnits was wrong because it included vertex texture units.
This change plus the prev commit fixes occasional failures of glean/glsl1
vertex texture test failure.
|
|
|
|
|
|
This is another step toward removing a whole bunch of -I flags from
the cc commands. Still need to address driver code...
|
|
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
|
|
|
|
point drawing function.
|
|
These fields are no longer indexed by shader output. Now, we just have
a simple array of renderbuffer pointers.
If the shader writes to gl_FragData[i], send those colors to the N
_ColorDrawBuffers. Otherwise, replicate the single gl_FragColor (or
the fixed-function color) to the N _ColorDrawBuffers.
A few more changes and simplifications can follow from this...
|
|
Contains the normalized fragment position within a point sprite.
|
|
max depth buffer value on 64bit system. fix bug #12095
|
|
|
|
|
|
were overwritten by interpolating attributes.
Now just set the span->arrayAttribs mask in glDraw/CopyPixels and be sure
we don't overwrite the values in interpolate_active_attribs().
|
|
|
|
|
|
Need to turn off FRAG_BIT_COL0 in swrast->_ActiveAttribMask when doing
glRead/CopyPixels to prevent the user's colors from getting overwritten
when a fragment program is active.
This was happening in the DRI drivers when MaintainTexEnv program was
used (the texenv fragment program was enabled when _swrast_DrawPixels was
called).
This still isn't an ideal solution, but fixes things for now.
|
|
|
|
Instead of separate fog/specular/texcoord/varying code, just treat all of
them as generic attributes. Simplifies the point/line/triangle functions.
|
|
|
|
|
|
Occlusion query might depend on the shader killing/discarding fragments.
Helps fix depth peeling technique.
Also, minor tweaks in interpolate_wpos().
|
|
|
|
|
|
glDrawPixels, etc.
Secondary color wasn't getting added to post-texture color when drawing
bitmaps, images. See bug 10409.
|
|
progs
|
|
GL_MAX_DRAW_BUFFERS is currently 4.
Added gl_FragData[] output for fragment programs.
In _swrast_write_rgba_span() loop over the color outputs/renderbuffers.
|
|
|
|
|
|
|
|
|
|
fields. More to come.
|
|
|
|
Replace texcoord[], varying[], etc. arrays with single attribs[] array, indexed
by FRAG_ATTRIB_* values.
Eliminates need to copy data into fragment program machine input registers.
Will lead to future clean-ups.
|
|
|
|
|
|
|
|
|
|
|
|
In brief:
Check for enabled fragment program by looking at ctx->FragmentProgram._Current.
New code for varying variables.
|
|
|
|
|
|
|
|
the fragment Z.
|