summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/gallivm
Commit message (Collapse)AuthorAgeFilesLines
* llvmpipe: fix swizzling of texture border colorBrian Paul2010-09-271-2/+2
| | | | | | | | The pipe_sampler_view's swizzle terms also apply to the texture border color. Simply move the apply_sampler_swizzle() call after we fetch the border color. Fixes many piglit texwrap failures.
* gallivm: fix repeat() function for NPOT texturesBrian Paul2010-09-252-10/+17
| | | | | The trick of casting the coord to an unsigned value only works for POT textures. Add a bias instead. This fixes a few piglit texwrap failures.
* gallivm: Remove dead experimental code.José Fonseca2010-09-252-78/+46
|
* gallivm: Fetch the lod from the dynamic state when min_lod == max_lod.José Fonseca2010-09-252-5/+4
|
* gallivm: optimize yuv decodingRoland Scheidegger2010-09-251-9/+55
| | | | | | | | | | | this is more a proof to show vector shifts on x86 with per-element shift count are evil. Since we can avoid the shift with a single compare/select, use that instead. Replaces more than 20 instructions (and slow ones at that) with about 3, and cuts compiled shader size with mesa's yuvsqure demo by over 10% (no performance measurements done - but selection is blazing fast). Might want to revisit that for future cpus - unfortunately AVX won't have vector shifts neither, but AMD's XOP will, but even in that case using selection here is probably not slower.
* gallivm: don't use URem/UDiv when calculating offsets for blocksRoland Scheidegger2010-09-251-1/+11
| | | | | | | While it's true that llvm can and will indeed replace this with bit arithmetic (since block height/width is POT), it does so (llvm 2.7) by element and hence extracts/shifts/reinserts each element individually. This costs about 16 instructions (and extract is not really fast) vs. 1...
* gallivm: fix copy&paste bugRoland Scheidegger2010-09-251-1/+1
| | | | | looks like pot_depth should be used, not pot_height (found by accident, not verified)
* llvmpipe: make texture border_color dynamic stateBrian Paul2010-09-243-25/+53
|
* llvmpipe: make min/max lod and lod bias dynamic stateBrian Paul2010-09-244-20/+37
| | | | | | Before, changing any of these sampler values triggered generation of new JIT code. Added a new flag for the special case of min_lod == max_lod which is hit during auto mipmap generation.
* gallivm: Add unorm support to lp_build_lerp()José Fonseca2010-09-221-9/+75
| | | | Unfortunately this can cause segfault with LLVM 2.6, if x is a constant.
* gallivm: fix lp_build_sample_compare()Brian Paul2010-09-211-17/+23
| | | | | | | | | | The old code didn't really make sense. We only need to compare the X channel of the texture (depth) against the texcoord. For (bi)linear sampling we should move the calls to this function and compute the final result as (s1+s2+s3+s4) * 0.25. Someday. This fixes the glean glsl1 shadow2D() tests. See fd.o bug 29307.
* gallivm: remove debug codeBrian Paul2010-09-201-2/+0
|
* gallivm: added missing case for PIPE_TEXTURE_RECTBrian Paul2010-09-171-0/+1
| | | | Fixes fd.o bug 30245
* gallivm: Remove unnecessary header.Vinson Lee2010-09-161-1/+0
|
* gallivm: fix wrong return value in bitwise functionsBrian Paul2010-09-161-3/+3
|
* gallivm: Clamp indirect register indices to file_max.José Fonseca2010-09-161-60/+71
| | | | Prevents crashes with bogus data, or bad shader translation.
* gallivm: Start collecting bitwise arithmetic helpers in a new module.José Fonseca2010-09-165-30/+258
|
* gallivm: Fix address register swizzle.José Fonseca2010-09-161-2/+1
| | | | | | | | | | We're actually doing a double swizzling: indirect_reg->Swizzle[indirect_reg->SwizzleX] instead of simply indirect_reg->SwizzleX
* gallivm: make lp_build_sample_nop publicKeith Whitwell2010-09-162-6/+8
|
* gallivm: move i32_vec_type inside the #ifdefBrian Paul2010-09-161-1/+2
|
* gallivm: fix incorrect vector shuffle datatypeBrian Paul2010-09-161-1/+5
| | | | The permutation vector must always be a vector of int32 values.
* gallivm: Remove unnecessary headers.Vinson Lee2010-09-151-2/+0
|
* gallivm: expand AoS sampling to cover all filtering modesBrian Paul2010-09-155-1029/+1917
| | | | ...and all texture targets (1D/2D/3D/CUBE).
* gallivm: Remove unnecessary header.Vinson Lee2010-09-141-1/+0
|
* gallivm: nr_channels is only valid for formats with plain layout.José Fonseca2010-09-111-3/+1
| | | | | | | | This is erroneously throwing non plain formats out of the faster AoS sampling path. Doing 8bit interpolation for single channels such as L8 should be no worse than with floating point. But this may need more investigation.
* gallivm: Use const keyword on swizzles.José Fonseca2010-09-112-2/+2
|
* gallivm: Allow to TGSI AoS translation to happen in BGRA ordering.José Fonseca2010-09-112-33/+87
| | | | Or any ordering.
* gallivm: Add a new debug flag to warn about performance issues.José Fonseca2010-09-118-8/+50
|
* gallivm: Helper functions for pointer indirection.José Fonseca2010-09-112-0/+56
|
* gallivm: Cleanup the TGSI <-> sampler interface.José Fonseca2010-09-112-9/+4
|
* gallivm: Add some utility functions to set/get array elements too.José Fonseca2010-09-112-0/+70
|
* gallivm: Basic AoS TGSI -> LLVM IR.José Fonseca2010-09-112-0/+1154
| | | | Essentially a variation of the SoA version.
* gallivm: Move the texture modifiers to the header.José Fonseca2010-09-112-19/+20
| | | | Useful to pass these around.
* gallivm: s/lp_build_broadcast_aos/lp_build_swizzle_scalar_aos/José Fonseca2010-09-112-5/+8
| | | | More accurate description of this function purpose.
* gallivm: Pass condition masks as an unsigned bitmask.José Fonseca2010-09-055-25/+40
| | | | Much more convenient than boolean arrays.
* gallivm: Cope with tgsi instruction reallocation failure.José Fonseca2010-09-051-6/+10
|
* gallivm: fix bug in nested conditionalsBrian Paul2010-08-311-2/+4
| | | | This, plus the previous commit fix fd.o bug 29806.
* gallivm: Compute the 4 texel offsets for linear filtering en ensemble.José Fonseca2010-08-303-126/+280
|
* gallivm: Disable LLVM's pretty stack trace dumper.José Fonseca2010-08-301-0/+8
| | | | | | | | By default LLVM adds a signal handler to output a pretty stack trace. This signal handler is never removed, causing problems when unloading the shared object where the gallium driver resides. Thanks to Chris Li for finding this.
* gallivm: Correct copy'n'pasted comments.José Fonseca2010-08-301-4/+4
|
* gallivm: Fix lp_build_sum_vector.José Fonseca2010-08-301-6/+4
| | | | | | | The result is scalar, so when argument is zero/undef we can pass vector zero/undef. Also, support the scalar case.
* util: remove util_is_pot in favor of util_is_power_of_twoMarek Olšák2010-08-294-7/+7
| | | | The function was duplicated.
* gallivm: Include missing header in lp_bld_sample.h.Vinson Lee2010-08-241-0/+2
| | | | Include p_format.h for enum pipe_format symbol.
* gallivm: Include missing header in lp_bld_pack.h.Vinson Lee2010-08-241-0/+2
| | | | Include p_compiler.h for boolean symbol.
* gallivm: Emit DIVPS instead of RCPPS.José Fonseca2010-08-211-12/+24
| | | | | | | See comments for detailed rationale. Thanks to Michal Krol and Zack Rusin for detecting and investigating this in detail.
* gallium: make all checks for PIPE_TEXTURE_2D check for PIPE_TEXTURE_RECT tooLuca Barbieri2010-08-201-2/+5
| | | | | | | Searched for them with: git grep -E '[!=]=.*PIPE_TEXTURE_2D|PIPE_TEXTURE_2D.*[!=]=|case.*PIPE_TEXTURE_2D' Behavior hasn't been changed.
* gallivm: Use proper index to lookup predicate register array.michal2010-08-181-1/+1
| | | | Doesn't fix anything, as those indices were both always 0.
* gallivm: Fix and re-enable MMX-disabling codenobled2010-08-171-5/+1
| | | | Signed-off-by: José Fonseca <[email protected]>
* gallivm: Remove unnecessary header.Vinson Lee2010-08-141-1/+0
|
* u_cpu_detect: remove arch and little_endianLuca Barbieri2010-08-142-5/+8
| | | | | This logic duplicates the one in p_config.h, so remove it and adjust the only two places that were using it.