aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/llvmpipe/lp_rast_tri.c
Commit message (Collapse)AuthorAgeFilesLines
* gallium: replace INLINE with inlineIlia Mirkin2015-07-211-5/+5
| | | | | | | | | | | | | | | | Generated by running: git grep -l INLINE src/gallium/ | xargs sed -i 's/\bINLINE\b/inline/g' git grep -l INLINE src/mesa/state_tracker/ | xargs sed -i 's/\bINLINE\b/inline/g' git checkout src/gallium/state_trackers/clover/Doxyfile and manual edits to src/gallium/include/pipe/p_compiler.h src/gallium/README.portability to remove mentions of the inline define. Signed-off-by: Ilia Mirkin <[email protected]> Acked-by: Marek Olšák <[email protected]>
* llvmpipe: support 8bit subpixel precisionZack Rusin2013-11-251-52/+121
| | | | | | | | | | | | | 8 bit precision is required by d3d10 but unfortunately requires 64 bit rasterizer. This commit implements 64 bit rasterization with full support for 8bit subpixel precision. It's a combination of all individual commits from the llvmpipe-rast-64 branch. Signed-off-by: Zack Rusin <[email protected]> Reviewed-by: José Fonseca <[email protected]> Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
* llvmpipe: Eliminate color buffer swizzling.José Fonseca2012-11-291-1/+0
| | | | | | | | | | | | Now dead code. Also had to remove the show_tiles/show_subtiles because now the color buffers are always stored in their native format, so there is no longer an easy way to paint the tile sizes. Depth-stencil buffers are still swizzled. Reviewed-by: Roland Scheidegger <[email protected]>
* llvmpipe: Change triangle rasterization comparison from < 0 to <= 0James Benton2012-05-111-1/+8
| | | | | | Tested with custom rasterisation test tool added to piglit suite, reduced errors Signed-off-by: José Fonseca <[email protected]>
* llvmpipe: fix a crash in non-SSE pathChia-I Wu2011-10-301-1/+1
| | | | It is a typo went unnoticed.
* llvmpipe: Ensure the 16x16 special rasterization path does not touch outside ↵José Fonseca2011-10-051-2/+2
| | | | | | | | | | | | | | the tile. llvmpipe has a few special rasterization paths for triangles contained in 16x16 blocks, but it allows the 16x16 block to be aligned only to a 4x4 grid. Some 16x16 blocks could actually intersect the tile if the triangle is 16 pixels in one dimension but 4 in the other, causing a buffer overflow. The fix consists of budging the 16x16 blocks back inside the tile.
* llvmpipe: use aligned loads/stores for plane valuesKeith Whitwell2010-10-151-6/+6
|
* gallium: move some intrinsics helpers to u_sse.hKeith Whitwell2010-10-151-58/+0
|
* llvmpipe: slightly shrink the size of a binned triangleKeith Whitwell2010-10-151-2/+2
|
* llvmpipe: make sure intrinsics code is guarded with PIPE_ARCH_SSEKeith Whitwell2010-10-121-40/+42
|
* llmvpipe: improve mm_mullo_epi32José Fonseca2010-10-121-4/+3
| | | | | Apply Jose's suggestions for a small but measurable improvement in isosurf.
* gallium: move sse intrinsics debug helpers to u_sse.hKeith Whitwell2010-10-121-1/+0
|
* llvmpipe: Fix MSVC build.José Fonseca2010-10-121-18/+18
| | | | MSVC doesn't accept more than 3 __m128i arguments.
* llvmpipe: fix typo in last commitKeith Whitwell2010-10-121-2/+2
|
* llvmpipe: try to do more of rast_tri_3_16 with intrinsicsKeith Whitwell2010-10-121-2/+262
| | | | | | | | There was actually a large quantity of scalar code in these functions previously. This tries to move more into intrinsics. Introduce an sse2 mm_mullo_epi32 replacement to avoid sse4 dependency in the new rasterization code.
* llvmpipe: add rast_tri_4_16 for small lines and pointsKeith Whitwell2010-10-081-139/+13
|
* llvmpipe: Fix non SSE2 builds.José Fonseca2010-09-131-2/+2
| | | | Should fix fdo 30168.
* llvmpipe: introduce tri_3_4 for tiny trianglesKeith Whitwell2010-09-121-38/+101
|
* llvmpipe: refactor tri_3_16Keith Whitwell2010-09-121-17/+47
| | | | | Keep step array as a set of four m128i's and reuse throughout the rasterization.
* llvmpipe: pass linear masks to fragment shaderKeith Whitwell2010-09-121-66/+0
| | | | Fragment shader can extract the correct bits for each quad.
* llvmpipe: slightly simplify build_maskKeith Whitwell2010-08-311-6/+2
|
* llvmpipe: combine linear mask calculationKeith Whitwell2010-08-311-5/+68
|
* llvmpipe: intrinsics versions of build_mask functionsKeith Whitwell2010-08-311-1/+77
|
* llvmpipe: native rasterization for linesHui Qi Tay2010-08-271-0/+4
| | | | | Rasterize lines directly by treating them as 4-sided polygons. Still need to check the exact pixel rasteration.
* llvmpipe: special case triangles which fall in a single 16x16 blockKeith Whitwell2010-08-151-0/+82
| | | | | Check for these and route them to a dedicated handler with one fewer levels of recursive rasterization.
* llvmpipe: remove all traces of step arrays, pos_tablesKeith Whitwell2010-08-151-46/+0
| | | | | No need to calculate these values any longer, nor to store them in the bin data. Improves isosurf a bit more, 115->123 fps.
* llvmpipe: eliminate last usage of step array in rast_tmp.hKeith Whitwell2010-08-151-0/+29
| | | | | | | | | | | | For 16 and 64 pixel levels, calculate a mask which is linear in x and y (ie not in the swizzle layout). When iterating over full and partial masks, figure out position by manipulating the bit number set in the mask, rather than relying on postion arrays. Similarly, calculate the lower-level c values from dcdx, dcdy and the position rather than relying on the step array.
* llvmpipe: version of block4 which doesn't need the full step arrayKeith Whitwell2010-08-151-6/+24
| | | | No noticable slowdown with isosurf.
* llvmpipe: reorganize block4 loop, nice speedupKeith Whitwell2010-08-151-0/+15
| | | | | isosurf 95->115 fps just by exchanging the two inner loops in this function...
* llvmpipe: pass mask into fragment shaderKeith Whitwell2010-07-131-158/+21
| | | | | | | | | Move this code back out to C for now, will generate separately. Shader now takes a mask parameter instead of C0/C1/C2/etc. Shader does not currently use that parameter and rasterizes whole pixel stamps always.
* llvmpipe: more lp_rasterizer_task parameter passingBrian Paul2010-02-241-34/+23
|
* llvmpipe: pass fewer parameters to rasterization functionsBrian Paul2010-02-241-6/+2
|
* llvmpipe: added some assertionsBrian Paul2010-02-241-0/+5
|
* llvmpipe: use ffs technique for full tiles alsoKeith Whitwell2010-02-171-45/+70
| | | | | | | | Need to compute two masks here for full and partial 16x16 blocks. Gives a further good improvement for isosurf particularly: isosurf 97 -> 108 gears 597 -> 611
* llvmpipe: rework do_block_16 to use bitmasks and ffsKeith Whitwell2010-02-171-27/+41
| | | | | | | | Some nice speedups: gears: 547 -> 597 isosurf: 83 -> 98 Others like gloss unchanged. Could do further work in this direction.
* llvmpipe: use some local vars to index step arraysBrian Paul2010-01-211-4/+6
| | | | Saves a few more cycles.
* llvmpipe: added simple perf/statistics counting facilityBrian Paul2010-01-211-0/+6
| | | | | | | | Currently counting number of tris, how many tiles of each size are fully covered, partially covered or empty, etc. Set LP_DEBUG=counters to enable. Results are printed upon context destruction.
* llvmpipe: skip 4x4 in/out test codeBrian Paul2010-01-151-14/+4
| | | | | It's a litte faster to just do the in/out testing in the shader jit code.
* llvmpipe: added comment about lookup-tables vs. computationBrian Paul2010-01-151-0/+3
|
* llvmpipe: generate two shader varients, one omits triangle in/out testingBrian Paul2010-01-151-7/+4
| | | | | | | When we know that a 4x4 pixel block is entirely inside of a triangle use the jit function which omits the in/out test code. Results in a few percent speedup in many tests.
* llvmpipe: replace INT_MIN/2 with INT_MINBrian Paul2009-12-171-1/+1
| | | | | Since changing the in/out test we can just use INT_MIN to be sure the comparison against the step values always passes.
* llvmpipe: improve the in/out test a littleBrian Paul2009-12-171-2/+2
| | | | | | | | Instead of: s = c + step m = s > 0 Do: m = step > c (with negated c)
* llvmpipe: do final the pixel in/out triangle test in the fragment shaderBrian Paul2009-12-161-101/+121
| | | | | | | | | | | | | | | | | The test to determine which of the pixels in a 2x2 quad is now done in the fragment shader rather than in the calling C code. This is a little faster but there's a few more things to do. Note that the step[] array elements are in a different order now. Rather than being in row-major order for the 4x4 grid, they're in "quad-major" order. The setup of the step arrays is a little more complicated now. So is the course/intermediate tile test code, but some lookup tables help with that. Next steps: - early-cull 2x2 quads which are totally outside the triangle. - skip the in/out test for fully contained quads - make the in/out comparison code tighter/faster.
* llvmpipe: repartition lp_rasterizer state for threadingBrian Paul2009-12-071-29/+33
| | | | | Some of the state is per-thread. Put that state in new lp_rasterizer_task struct.
* llvmpipe: use LP_DBG() macro everywhereBrian Paul2009-12-041-1/+2
|
* llvmpipe: added assertionsBrian Paul2009-12-011-3/+4
| | | | And remove unused BLOCKSIZE.
* llvmpipe: simplify mask computationBrian Paul2009-12-011-4/+6
| | | | Make this a little easier to understand.
* llvmpipe: replace shifts with multiplies to be clearerBrian Paul2009-12-011-18/+18
| | | | | The compiler will still do the multiplies with shifts. It's just a bit easier to follow the logic with multiplies.
* llvmpipe: make nr_blocks unsignedBrian Paul2009-12-011-3/+4
|
* llvmpipe: comments, reformatting and assertions in tri rast codeBrian Paul2009-12-011-47/+70
|