summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/llvmpipe/lp_setup_tri.c
AgeCommit message (Collapse)Author
2010-03-13llvmpipe: Obey rasterization rules.José Fonseca
Replicates softpipe.
2010-03-13llvmpipe: setup_context -> lp_setup_contextJosé Fonseca
Otherwise IDEs and debuggers have trouble distinguishing from softpipe's setup_context.
2010-03-03llvmpipe: Store the original triangle coordinates in the debug build.José Fonseca
For debugging purposes only.
2010-02-11llvmpipe: Clamp both extremes of triangles to framebuffer size.José Fonseca
Fix segmentation fault when triangles crossed the axis.
2010-01-21llvmpipe: s/inline/INLINE/Brian Paul
2010-01-21llvmpipe: consolidate lp_scene_alloc_aligned() callsBrian Paul
Use just one call instead of four. Good for a few more fps.
2010-01-21llvmpipe: re-use a1 var in linear_coef()Brian Paul
2010-01-21llvmpipe: area is an int here, not floatBrian Paul
2010-01-21llvmpipe: manually unroll the inputs.step[] setup codeBrian Paul
Good for a few more fps in some tests.
2010-01-21llvmpipe: added simple perf/statistics counting facilityBrian Paul
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.
2010-01-19llvmpipe: updated commentsBrian Paul
2010-01-15llvmpipe: implement scissor test in triangle setupBrian Paul
2010-01-15llvmpipe: remove lp_rast_triangle::min/max fieldsBrian Paul
These values aren't needed outside the do_triangle_ccw() function.
2010-01-15llvmpipe: change 'in' to boolean, add commentsBrian Paul
2010-01-14llvmpipe: minor comment updateBrian Paul
2010-01-13llvmpipe: minor assorted clean-upsBrian Paul
2010-01-13llvmpipe: Reset the bin when shading a whole tile with an opaque shader.José Fonseca
2010-01-13llvmpipe: tweak subpixel_snap() arithmeticBrian Paul
This adjustment fixes some rasterization differences between llvmpipe and softpipe (and other renderers).
2010-01-12llvmpipe: clamp maxx,maxy to framebuffer size (in terms of tiles)Brian Paul
In some corner cases the right-most / bottom-most vertex can be right on the edge of the framebuffer. Because the maxx, maxy vals are computed with a series of float/int, pixel/tile transformations we can end up with maxx >= scene->x_tiles or maxy >= scene->y_tiles. This leads to putting data into bins that never get processed, or reset. This becomes stale data that can lead to segfaults. Clamping fixes this.
2010-01-11llvmpipe: remove opencoded constantKeith Whitwell
2010-01-08Merge remote branch 'origin/master' into lp-binningJosé Fonseca
Conflicts: src/gallium/auxiliary/util/u_surface.c src/gallium/drivers/llvmpipe/Makefile src/gallium/drivers/llvmpipe/SConscript src/gallium/drivers/llvmpipe/lp_bld_arit.c src/gallium/drivers/llvmpipe/lp_bld_flow.c src/gallium/drivers/llvmpipe/lp_bld_interp.c src/gallium/drivers/llvmpipe/lp_clear.c src/gallium/drivers/llvmpipe/lp_context.c src/gallium/drivers/llvmpipe/lp_context.h src/gallium/drivers/llvmpipe/lp_draw_arrays.c src/gallium/drivers/llvmpipe/lp_jit.c src/gallium/drivers/llvmpipe/lp_jit.h src/gallium/drivers/llvmpipe/lp_prim_vbuf.c src/gallium/drivers/llvmpipe/lp_setup.c src/gallium/drivers/llvmpipe/lp_setup_point.c src/gallium/drivers/llvmpipe/lp_state.h src/gallium/drivers/llvmpipe/lp_state_blend.c src/gallium/drivers/llvmpipe/lp_state_derived.c src/gallium/drivers/llvmpipe/lp_state_fs.c src/gallium/drivers/llvmpipe/lp_state_sampler.c src/gallium/drivers/llvmpipe/lp_state_surface.c src/gallium/drivers/llvmpipe/lp_tex_cache.c src/gallium/drivers/llvmpipe/lp_tex_cache.h src/gallium/drivers/llvmpipe/lp_tex_sample.h src/gallium/drivers/llvmpipe/lp_tile_cache.c
2009-12-16llvmpipe: do final the pixel in/out triangle test in the fragment shaderBrian Paul
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.
2009-12-13llvmpipe: rename bins to sceneKeith Whitwell
It was pretty confusing having an entity named "bin" and another named "bins", not least because sometimes there was a need to talk about >1 of the "bins" objects, which couldn't be pluralized any further... Scene is a term used in a bunch of places to talk about what a binner operates on, so it's a decent choice here.
2009-12-09llvmpipe: use new lp_setup_get_current_bins() functionBrian Paul
This stub function will interface to the queue system...
2009-12-04llvmpipe: reorganization of binning data structions and funtionsBrian Paul
New lp_bins struct contains all bin information. More move bin-related code into lp_bin.[ch] Use new/updated bin-access functions to hide implementation details. The result is more/cleaner separation between the setup and rast components. This will make double-buffering of the bins easier, etc.
2009-12-04llvmpipe: move bin-related structures and functions into new lp_bin.[ch]Brian Paul
And put lp_ prefixes on some functions.
2009-12-04llvmpipe: remove lp_rast_triangle::oneoverarea fieldBrian Paul
Makes lp_rast_triangle a little smaller (now 280 bytes on a 32-bit system).
2009-12-04llvmpipe: bin state-change commandsBrian Paul
Previously, each triangle had a pointer to the state to use for shading. Now we insert state-change commands into the bins. When we execute one of those commands we just update a 'current state' pointer and use that pointer when calling the jit shader. When inserting state-change commands into a bin we check if the previous command was also a state-change command and simply replace it. This avoids accumulating useless/redundant state-change commands.
2009-12-04llvmpipe: fix typo, whitespaceBrian Paul
2009-12-04llvmpipe: dynamic allocation of triangle a0/dadx/dady arraysBrian Paul
Much less memory per triangle now.
2009-12-03llvmpipe: new comment in do_triangle_ccw()Brian Paul
2009-11-30llvmpipe: add a bunch of commentsBrian Paul
2009-10-21llvmpipe: remove one of two definitions of TILESIZEKeith Whitwell
2009-10-21llvmpipe: remove dead codeKeith Whitwell
2009-10-20llvmpipe: minor opts to setup_triKeith Whitwell
2009-10-20llvmpipe: pass mask as a linear encoding of the 4x4 blockKeith Whitwell
2009-10-20llvmpipe: precalculate some offsetsKeith Whitwell
2009-10-19llvmpipe: pre-multiply some constants by fixed_oneKeith Whitwell
2009-10-19llvmpipe: fixed-point rasterizationKeith Whitwell
2009-10-19llvmpipe: correctly scale top/left fill adjustmentsKeith Whitwell
Was overdoing it previously.
2009-10-19llvmpipe: fix typo correcting for fill conventionKeith Whitwell
Adjustments for top-left fill convention were being lost.
2009-10-09llvmpipe: fill in tri min/max valuesKeith Whitwell
2009-10-09llvmpipe: Remove partial tile override.José Fonseca
2009-10-09llvmpipe: correct binning maths for iterating over whole tilesKeith Whitwell
2009-10-09llvmpipe: Get jit_context/jit_function across the rasterizer.José Fonseca
2009-10-09llvmpipe: just bin whole tiles for nowKeith Whitwell
2009-10-09llvmpipe: get lp_setup_tri buildingKeith Whitwell
2009-10-09llvmpipe: use union lp_cmd_rast_arg directly, rather than through a pointerKeith Whitwell
The union itself consists of pointers. We don't need to be passing pointer to pointers.
2009-10-09llvmpipe: hook up some state, add stub line and point functionsKeith Whitwell
2009-10-09llvmpipe: more wip on coefficientsKeith Whitwell