Age | Commit message (Collapse) | Author |
|
This is just a tiny bit faster.
|
|
This makes a big difference in progs that clear to a non-gray color.
Some demos are 30-50% faster.
|
|
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.
|
|
Load zbuffer contents for binned scenes that don't start with a clear
and which have a bound zbuffer.
|
|
Remove unused param, add comments. Thanks to Brian for review.
|
|
We emit at most two clear packets (color and z respectively).
|
|
|
|
Non-mrt apps work, and the code looks correct, but not many mrt test apps
handy atm...
|
|
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
|
|
|
|
Since changing the in/out test we can just use INT_MIN to be sure the
comparison against the step values always passes.
|
|
Instead of:
s = c + step
m = s > 0
Do:
m = step > c (with negated c)
|
|
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.
|
|
|
|
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.
|
|
|
|
|
|
|
|
Now mapping/unmapping the framebuffer is done by a rasteizer thread
rather than the main calling thread.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also bump MAX_THREADS to 8.
|
|
|
|
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.
|
|
Some of the state is per-thread. Put that state in new lp_rasterizer_task
struct.
|
|
|
|
Move tiles_x,y fields from setup state into bin state.
Move more bin-adding commands into lp_bin.[ch].
|
|
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.
|
|
First step of moving bin rasterization/execution code out of lp_setup.c
|
|
|
|
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.
|
|
|
|
|
|
This allows us to do a glReadPixels(GL_DEPTH_COMPONENT) to see what's
in the depth buffer to help debugging.
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also remove branches calculating masks for quads.
|
|
|
|
|