aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium
Commit message (Collapse)AuthorAgeFilesLines
...
* gallivm: Remove support for Phi generation.José Fonseca2010-10-093-225/+0
| | | | Simply rely on mem2reg pass. It's easier and more reliable.
* gallivm: Use varilables instead of Phis for cubemap selection.José Fonseca2010-10-091-36/+26
|
* gallivm: Don't generate Phis for execution mask.José Fonseca2010-10-094-17/+32
|
* gallivm: Special bri-linear computation path for unmodified rho.José Fonseca2010-10-091-20/+91
|
* gallivm: Less code duplication in log computation.José Fonseca2010-10-092-35/+88
|
* util: Defined M_SQRT2 when not available.José Fonseca2010-10-091-0/+5
|
* gallivm: Handle code have ret correctly.José Fonseca2010-10-091-2/+4
| | | | Stop disassembling on unconditional backwards jumps.
* llvmpipe: Fix MSVC build. Enable the new SSE2 code on non SSE3 systems.José Fonseca2010-10-091-42/+44
|
* llvmpipe: simplified SSE2 swz/unswz routinesKeith Whitwell2010-10-092-146/+107
| | | | | | | | We've been using these in the linear path for a while now. Based on Chris's SSSE3 code, but using only sse2 opcodes. Speed seems to be identical, but code is simpler & removes dependency on SSE3. Should be easier to extend to other rgba8 formats.
* llvmpipe: clean up shader pre/postamble, try to catch more early-zKeith Whitwell2010-10-093-103/+193
| | | | | | | | | Specifically, can do early-depth-test even when alpahtest or kill-pixel are active, providing we defer the actual z write until the final mask is avaialable. Improves demos/fire.c especially in the case where you get close to the trees.
* llvmpipe: try to be sensible about whether to branch after mask updatesKeith Whitwell2010-10-098-35/+80
| | | | | Don't branch more than once in quick succession. Don't branch at the end of the shader.
* gallivm: simpler uint8->float conversionsKeith Whitwell2010-10-091-0/+10
| | | | | LLVM seems to finds it easier to reason about these than our mantissa-manipulation code.
* gallivm: prefer blendvb for integer argumentsKeith Whitwell2010-10-091-2/+4
|
* gallivm: specialized x8z24 depthtest pathKeith Whitwell2010-10-092-31/+94
| | | | Avoid unnecessary masking of non-existant stencil component.
* llvmpipe: dump fragment shader ir and asm when LP_DEBUG=fsKeith Whitwell2010-10-091-2/+2
| | | | Better than GALLIVM_DEBUG if you're only interested in fragment shaders.
* llvmpipe: store zero into all alloca'd valuesKeith Whitwell2010-10-091-0/+1
| | | | Fixes slowdown in isosurf with earlier versions of llvm.
* llvmpipe: use alloca for fs color outputsKeith Whitwell2010-10-091-4/+12
| | | | Don't try to emit our own phi's, let llvm mem2reg do it for us.
* llvmpipe: defer attribute interpolation until after mask and ztestKeith Whitwell2010-10-093-14/+34
| | | | Don't calculate 1/w for quads which aren't visible...
* llvmpipe: Prevent z > 1.0José Fonseca2010-10-091-6/+14
| | | | | | | | | | | | The current interpolation schemes causes precision loss. Changing the operation order helps, but does not completely avoid the problem. The only short term solution is to clamp z to 1.0. This is unfortunate, but probably unavoidable until interpolation is improved.
* gallivm: Do size computations simultanously for all dimensions (AoS).José Fonseca2010-10-094-92/+177
| | | | | | | | | | Operate simultanouesly on <width, height, depth> vector as much as possible, instead of doing the operations on vectors with broadcasted scalars. Also do the 24.8 fixed point scalar with integer shift of the texture size, for unnormalized coordinates. AoS path only for now -- the same thing can be done for SoA.
* llvmpipe: fix rasterization of vertical lines on pixel boundariesZack Rusin2010-10-091-2/+2
|
* gallivm: make use of new iround code in lp_bld_conv.Roland Scheidegger2010-10-091-4/+4
| | | | Only requires sse2 now.
* gallivm: optimize soa linear clamp to edge wrap mode a bitRoland Scheidegger2010-10-091-23/+30
| | | | | | | | | Clamp against 0 instead of -0.5, which simplifies things. The former version would have resulted in both int coords being zero (in case of coord being smaller than 0) and some "unused" weight value, whereas now the int coords will be 0 and 1, but weight will be 0, hence the lerp should produce the same value. Still not happy about differences between normalized and non-normalized...
* gallivm: avoid unnecessary URem in linear wrap repeat caseRoland Scheidegger2010-10-091-3/+7
| | | | | | Haven't looked at what code this exactly generates but URem can't be fast. Instead of using two URem only use one and replace the second one with select/add (this is what the corresponding aos code already does).
* gallivm: more linear tex wrap mode calculation simplificationRoland Scheidegger2010-10-091-12/+9
| | | | | | | Rearrange order of operations a bit to make some clamps easier. All calculations should be equivalent. Note there seems to be some inconsistency in the clamp to edge case wrt normalized/non-normalized coords, could potentially simplify this too.
* gallivm: optimize some tex wrap mode calculations a bitRoland Scheidegger2010-10-091-6/+11
| | | | | | | | | Sometimes coords are clamped to positive numbers before doing conversion to int, or clamped to 0 afterwards, in this case can use itrunc instead of ifloor which is easier. This is only the case for nearest calculations unfortunately, except linear MIRROR_CLAMP_TO_EDGE which for the same reason can use a unsigned float build context so the ifloor_fract helper can reduce this to itrunc in the ifloor helper itself.
* gallivm: replace sub/floor/ifloor combo with ifloor_fractRoland Scheidegger2010-10-091-5/+1
|
* gallivm: faster iround implementation for sse2Roland Scheidegger2010-10-091-1/+53
| | | | | | sse2 supports round to nearest directly (or rather, assuming default nearest rounding mode in MXCSR). Use intrinsic to use this rather than round (sse41) or bit manipulation whenever possible.
* gallivm: fix trunc/itrunc commentRoland Scheidegger2010-10-091-6/+6
| | | | trunc of -1.5 is -1.0 not 1.0...
* r600g: Silence uninitialized variable warning.Vinson Lee2010-10-081-1/+2
|
* r600g: Silence uninitialized variable warning.Vinson Lee2010-10-081-1/+2
|
* r600g: Silence uninitialized variable warning.Vinson Lee2010-10-081-1/+2
|
* gallivm: Remove unnecessary header.Vinson Lee2010-10-081-1/+0
|
* gallivm: Help for combined extraction and broadcasting.José Fonseca2010-10-083-15/+102
| | | | Doesn't change generated code quality, but saves some typing.
* llvmpipe: First minify the texture size, then broadcast.José Fonseca2010-10-083-32/+42
|
* gallivm: Move into the as much of the second level code as possible.José Fonseca2010-10-085-219/+120
| | | | | Also, pass more stuff trhough the sample build context, instead of arguments.
* gallivm: Warn when doing inefficient integer comparisons.José Fonseca2010-10-081-2/+18
|
* gallivm: Avoid control flow for two-sided stencil test.José Fonseca2010-10-081-92/+58
|
* llvmpipe: fix off-by-one in tri_16Keith Whitwell2010-10-081-1/+1
|
* llvmpipe: add rast_tri_4_16 for small lines and pointsKeith Whitwell2010-10-087-148/+161
|
* llvmpipe: clean up setup_tri a littleKeith Whitwell2010-10-081-27/+26
|
* gallivm: round rather than truncate in new 4x4f->1x16ub conversion pathKeith Whitwell2010-10-081-17/+42
|
* gallivm: Use the wrappers for SSE pack intrinsics.José Fonseca2010-10-081-15/+3
| | | | Fixes assertion failures on LLVM 2.6.
* gallivm: special case conversion 4x4f to 1x16ubKeith Whitwell2010-10-081-0/+84
| | | | | Nice reduction in the number of operations required for final color output in many shaders.
* llvmpipe: avoid overflow in triangle cullingKeith Whitwell2010-10-081-40/+39
| | | | | | | | | | | Avoid multiplying fixed-point values. Calculate triangle area in floating point use that for culling. Lift area calculations up a level as we are already doing this in the triangle_both() case. Would like to share the calculated area with attribute interpolation, but the way the code is structured makes this difficult.
* llvmpipe: fail gracefully on oom in scene creationKeith Whitwell2010-10-086-42/+92
|
* gallivm: Implement brilinear filtering.José Fonseca2010-10-081-1/+89
|
* gallivm: Fix copy'n'paste typo in previous commit.José Fonseca2010-10-081-2/+2
|
* gallivm: Clamp mipmap level and zero mip weight simultaneously.José Fonseca2010-10-084-14/+52
|
* gallivm: Use lp_build_ifloor_fract for lod computation.José Fonseca2010-10-081-5/+3
| | | | Forgot this one before.