summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/llvmpipe/lp_rast.c
AgeCommit message (Collapse)Author
2010-01-13llvmpipe: use one loop in lp_rast_clear_zstencil()Brian Paul
This is just a tiny bit faster.
2010-01-13llvmpipe: optimize lp_rast_clear_color() for non-gray colorsBrian Paul
This makes a big difference in progs that clear to a non-gray color. Some demos are 30-50% faster.
2010-01-13llvmpipe: add bin debuggerKeith Whitwell
Adjust definition of empty_bin according to what's actually in empty bins. We often have a state packet before/after load commands. Still need to do something about the fence packets.
2010-01-13llvmpipe: implement lp_rast_load_zstencilKeith Whitwell
Load zbuffer contents for binned scenes that don't start with a clear and which have a bound zbuffer.
2010-01-13llvmpipe: improve empty-bin test furtherKeith Whitwell
Remove unused param, add comments. Thanks to Brian for review.
2010-01-13llvmpipe: improve empty-bin testKeith Whitwell
We emit at most two clear packets (color and z respectively).
2010-01-13llvmpipe: quick hack to short-circuit empty binsKeith Whitwell
2010-01-10llvmpipe: initial mrt supportKeith Whitwell
Non-mrt apps work, and the code looks correct, but not many mrt test apps handy atm...
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
2010-01-06llvmpipe: remove dead codeKeith Whitwell
2009-12-17llvmpipe: replace INT_MIN/2 with INT_MINBrian Paul
Since changing the in/out test we can just use INT_MIN to be sure the comparison against the step values always passes.
2009-12-17llvmpipe: improve the in/out test a littleBrian Paul
Instead of: s = c + step m = s > 0 Do: m = step > c (with negated 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-15llvmpipe: tighten up an assertionBrian Paul
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-11llvmpipe: added lp_rast_fence() bin functionBrian Paul
2009-12-11llvmpipe: added lp_rast_get_num_threads()Brian Paul
2009-12-11llvmpipe: implement lp_rast_load_color()Brian Paul
2009-12-11llvmpipe: checkpoint: more thread/queuing changesBrian Paul
Now mapping/unmapping the framebuffer is done by a rasteizer thread rather than the main calling thread.
2009-12-11llvmpipe: remove unused lp_rasterizer::fb fieldBrian Paul
2009-12-11llvmpipe: improve framebuffer/surface codeBrian Paul
2009-12-11llvmpipe: remove unused fb parameterBrian Paul
2009-12-11llvmpipe: minor comment fixBrian Paul
2009-12-10llvmpipe: checkpoint: use empty/full bin queuesBrian Paul
2009-12-09llvmpipe: added some debug/info codeBrian Paul
2009-12-09llvmpipe: use the empty_bins queue nowBrian Paul
2009-12-09llvmpipe: checkpoint: begin plugging in bin queue codeBrian Paul
2009-12-08llvmpipe: Use number of CPUs as default number of threads.José Fonseca
Also bump MAX_THREADS to 8.
2009-12-07llvmpipe: remove some left-over debug codeBrian Paul
2009-12-07llvmpipe: implement threaded rasterizationBrian Paul
The LP_NUM_THREADS env var controls how many threads are created. The default (and max) is 4, for now. If LP_NUM_THREADS = 0, threading is not used.
2009-12-07llvmpipe: repartition lp_rasterizer state for threadingBrian Paul
Some of the state is per-thread. Put that state in new lp_rasterizer_task struct.
2009-12-07llvmpipe: use bin iteration functions when rasterizing binsBrian Paul
2009-12-04llvmpipe: still more bin code reorganizationBrian Paul
Move tiles_x,y fields from setup state into bin state. Move more bin-adding commands into lp_bin.[ch].
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 lp_rasterize_bin() into lp_rast.cBrian Paul
First step of moving bin rasterization/execution code out of lp_setup.c
2009-12-04llvmpipe: use LP_DBG() macro everywhereBrian Paul
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-03llvmpipe: checkpoint some initial state binning codeBrian Paul
2009-12-03llvmpipe: comments and a stub for lp_rast_set_state()Brian Paul
2009-12-03llvmpipe: quick & dirty implementation of lp_rast_store_zstencil()Brian Paul
This allows us to do a glReadPixels(GL_DEPTH_COMPONENT) to see what's in the depth buffer to help debugging.
2009-12-02llvmpipe: execute shaders on 4x4 blocks instead of 8x2Brian Paul
This matches the convention used by the recursive rasterizer. Also fixed assorted typos, comments, etc. Now tri-z.c, gears.c, etc look basically right but there's still some cracks in triangle rasterization.
2009-11-30llvmpipe: add a bunch of commentsBrian Paul
2009-10-22llvmpipe: fix the worst of the depth regressions since switch to 4x4Keith Whitwell
2009-10-21llvmpipe: remove one of two definitions of TILESIZEKeith 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: remove a leftover 8x2 usageKeith Whitwell
2009-10-19llvmpipe: calculate masks in format desired by shaderKeith Whitwell
Also remove branches calculating masks for quads.
2009-10-09llvmpipe: Use framebuffer coords consistently.José Fonseca
2009-10-09llvmpipe: Undo debug override.José Fonseca