Age | Commit message (Collapse) | Author |
|
|
|
We shouldn't try to clear a non-existant z/stencil buffer, so there's
probably a bug elsewhere. Disable the assertion for now to allow things
to at least run.
|
|
|
|
The triangle rasterizer sets this field to indicate front/back-facing.
It gets passed into the generated fragment code as another parameter.
Used now for stencil front/back selection but will also be used for
fragment shaders in general (see TGSI_SEMANTIC_FACE).
With this commit two-sided stenciling mostly works but there's
still a bug or two...
|
|
|
|
Now that transfers are context objects their sideeffects must happen in
order when used by the state tracker, but that synchronization must be
bypassed when used inside the driver, or it would cause infinite
recursion.
|
|
Wait for threads to exit before cleaning up per-thread data.
Fixes hang on context destruction with glean makeCurrent test.
See fd.o bug 26536.
|
|
No longer any need to protect expensive asserts with #ifdef DEBUG.
|
|
Move transfer creation and mapping to the "scene" object, and out of
the rasterizer. The rasterizer operates on already-mapped
framebuffers only, and no longer needs a screen or context pointer.
The scene object has access to a pipe_context, and this reorg prepares
for moving transfer functionality from the screen to the context.
|
|
Fixes glean hang, bug 26536.
|
|
|
|
|
|
|
|
This fixes several assertion failures due to only Z32 being supported.
|
|
|
|
the llvmpipe tgsi translation is a lot more complete than what was in
gallivm so replacing the latter with the former. this is needed since
the draw llvm paths will use the same code. effectively the proven
llvmpipe code becomes gallivm.
|
|
|
|
Conflicts:
src/gallium/auxiliary/util/u_dl.c
src/gallium/auxiliary/util/u_time.h
src/gallium/drivers/llvmpipe/lp_state_derived.c
src/gallium/drivers/llvmpipe/lp_state_surface.c
src/gallium/drivers/llvmpipe/lp_tex_cache.c
src/gallium/drivers/llvmpipe/lp_tile_cache.c
|
|
The surface is always a multiple of the tile size now.
|
|
|
|
|
|
These options draw lines over the tiles to show the 64x64 tile
bounds and 16x16 sub-tile bounds. For debugging/visualization.
|
|
|
|
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.
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|