summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/gallivm
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* gallivm: Refactor the Newton-Rapshon steps, and disable once again.José Fonseca2010-08-141-28/+83
| | | | It causes a very ugly corruption on the Earth's halo on Google Earth.
* gallivm: Fix and enable the extra Newton/Raphson step in lp_build_rcp().José Fonseca2010-08-111-2/+2
| | | | Thanks to Michal for spotting this.
* gallivm: Use lp_build_div instead of lp_build_mul + lp_build_rcp.José Fonseca2010-08-111-2/+1
| | | | | | | Single divide, so let lp_build_div decide how to implement this. This will save a multiplication in architectures which don't have a RCP intrinsic.
* gallivm: Use unsigned shift in lp_build_minify.José Fonseca2010-08-111-1/+1
| | | | Texture dimensions are unsigned.
* gallivm: fix non-SSE4.1 case in lp_build_pack2()Brian Paul2010-08-101-5/+9
| | | | | | | Since there's no SSE instruction for this case, fall through to the generic shuffle code. Fixes bug fd.o 29468.
* gallivm: Fix bitwise operations for floats, division for integersnobled2010-08-102-5/+27
| | | | | | http://bugs.freedesktop.org/29407 Signed-off-by: José Fonseca <[email protected]>
* gallivm: Even more type checkingnobled2010-08-102-1/+26
| | | | | | http://bugs.freedesktop.org/29407 Signed-off-by: José Fonseca <[email protected]>
* gallivm: More type checks.José Fonseca2010-08-091-0/+43
|
* gallivm: Don't call LLVMBuildFNeg on llvm-2.6.José Fonseca2010-08-092-9/+4
| | | | It didn't exist yet.
* gallivm: Always use floating-point operators for floating-point typesnobled2010-08-097-92/+137
| | | | | | | | | | | | | | | | | This fixes the assert added in LLVM 2.8: assert(getType()->isIntOrIntVectorTy() && "Tried to create an integer operation on a non-integer type!") But it also fixes some subtle bugs, since we should've been doing this since LLVM 2.6 anyway. Includes a modified patch from [email protected] for the FNeg instructions in emit_fetch(); thanks for pointing those out. http://bugs.freedesktop.org/29404 http://bugs.freedesktop.org/29407 Signed-off-by: José Fonseca <[email protected]>
* gallivm: Fix more integer operations.José Fonseca2010-08-081-2/+4
|
* gallivm: Use the correct context for integersnobled2010-08-081-1/+1
| | | | | See: http://bugs.freedesktop.org/29407
* gallivm: Add type checks for the basic operations.José Fonseca2010-08-081-0/+12
|
* gallium: remove stray semicolonsBrian Paul2010-08-061-1/+1
|
* gallivm: Only get debug option onceJakob Bornecrantz2010-08-051-1/+3
|
* llvmpipe: delete function bodies after generating machine codeZack Rusin2010-07-302-0/+10
|
* gallivm: added lp_build_assert() function to make assertions in LLVM codeBrian Paul2010-07-292-0/+142
|
* Revert "gallivm: fix lp_build_sample_offset() crash when indexing a 1-D texture"José Fonseca2010-07-291-3/+0
| | | | | | This reverts commit 5f90e76c54bbf4456c977b3cbca450d7a570179e. Bad cherry-pick.
* gallivm: fix lp_build_sample_offset() crash when indexing a 1-D textureBrian Paul2010-07-291-0/+3
| | | | | If y==NULL and y_stride==NULL it means the texture is 1D. Return zero for out_i and the offset instead of garbage.
* llvmpipe: Avoid corrupting the FPU stack with MMX instructions on 32bit OSes.José Fonseca2010-07-291-0/+24
| | | | | | | Unfortunately LLVM doesn't emit EMMS itself, and there is no easy/effective way to disable MMX. http://llvm.org/bugs/show_bug.cgi?id=3287
* gallivm: Add lp_build_select_bitwise() alternative to lp_build_select_bitwiseJosé Fonseca2010-07-272-22/+50
| | | | | | | | | | When (mask & a) | (~mask & b) is meant instead of mask ? a : b
* gallivm: replace has_indirect_addressing field with indirect_files fieldBrian Paul2010-07-211-8/+17
| | | | | | | | | | Instead of one big boolean indicating indirect addressing, use a bitfield indicating which register files are accessed with indirect addressing. Most shaders that use indirect addressing only use it to access the constant buffer. So no need to use an array for temporary registers in this case.
* gallivm: refactor code into get_indirect_offsets() functionBrian Paul2010-07-211-23/+34
|
* gallivm: added commentBrian Paul2010-07-211-0/+6
|
* gallivm: remove extraneous bracesBrian Paul2010-07-211-20/+18
|
* gallivm: no longer do indirect addressing in get_temp_ptr()Brian Paul2010-07-211-20/+15
|
* gallivm: implement correct indirect addressing of temp registersBrian Paul2010-07-211-11/+29
| | | | | As with indexing the const buffer, the ADDR reg may have totally different values for each element. Need to use a gather operation.
* gallivm: re-org, comments for get_temp_ptr()Brian Paul2010-07-211-3/+13
|
* gallivm: rename a var to avoid compiler warningsBrian Paul2010-07-211-2/+2
|
* gallivm: fix indirect addressing of constant bufferBrian Paul2010-07-201-25/+83
| | | | | | | | | The previous code assumed that all elements of the address register were the same. But it can vary from pixel to pixel or vertex to vertex so we must use a gather operation when dynamically indexing the constant buffer. Still need to fix this for the temporary register file...
* gallivm: added lp_build_const_int32() helperBrian Paul2010-07-201-0/+8
|
* gallivm: restore const qualifierBrian Paul2010-07-071-1/+1
|
* gallivm: fix cube map LOD computationBrian Paul2010-07-071-38/+54
| | | | | | | | | | | | | | | First, this undoes commit e503af4baa2c709ae5743bb278b277d3faaba076 so we use iround() in lp_build_nearest_mip_level(). Second, in lp_build_sample_general() we need to check if we're sampling a cube map before anything else. Choose the cube face and then recompute the partial derivatives of (S,T) with respect to the chosen cube face. Before, we were using the directional (S,T,R) derivatives to compute the LOD. Third, work around an apparent bug in LLVM 2.7 where setting the lod variable to a const(0) value results in bad x86 code. See comments in the code.
* gallivm: Remove unnecessary header.Vinson Lee2010-07-061-1/+0
|
* gallivm: use trunc, not round in lp_build_nearest_mip_level()Brian Paul2010-07-061-1/+1
| | | | Fixes fd.o bug 28036 (piglit fbo-cubemap.c regression)
* gallivm: finish implementation of lp_build_iceil()Brian Paul2010-07-061-19/+67
| | | | | | Plus fix minor error in lp_build_iceil() by tweaking the offset value. And add a bunch of comments for the round(), trunc(), floor(), ceil() functions.
* gallivm: Use SSE4.1's BLENDV instructions for lp_build_select().José Fonseca2010-07-061-0/+41
|
* gallivm: Fix 8bit comparisons.José Fonseca2010-07-061-5/+3
|
* gallivm: Remove unnecessary headers.Vinson Lee2010-07-032-2/+0
|
* gallivm: Do 4ubyte AoS texture filtering for any format that can be expressed.José Fonseca2010-07-023-52/+96
| | | | | Except if it has only one channel, as it would take the same number of instructions.
* gallivm: Use util_format_description::fetch_rgba_8unorm() when available.José Fonseca2010-07-021-7/+100
|
* gallivm: Support multiple pixels in lp_build_fetch_rgba_aos().José Fonseca2010-07-024-110/+198
| | | | | This allows to do the unpacking of formats that fit in 4 x unorm8 in parallel, 4 pixels at a time.
* gallivm: Move lp_build_rgba8_to_f32_soa() to lp_bld_format_soa.cJosé Fonseca2010-07-023-32/+40
| | | | It will be more useful here.
* gallivm: Move gather functions to its own module.José Fonseca2010-07-028-61/+213
| | | | | They need to grow, and they provide basic functionality which is not specific to sampling.
* gallivm: Check inputs/outputs in lp_build_conv()José Fonseca2010-07-021-2/+6
|