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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When a texture is used in the scene we add it to a list of texture
references. The lp_scene_is_textured_referenced() function tells
us if a texture is referenced by the scene.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
This adjustment fixes some rasterization differences between llvmpipe
and softpipe (and other renderers).
|
|
Remove unused param, add comments. Thanks to Brian for review.
|
|
We emit at most two clear packets (color and z respectively).
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
It's still faster not to try to special case the "all pixels are
known to be inside the triangle" case.
|
|
|
|
This will make it easier to generate multiple versions of the fragment
code per variant.
|
|
This still isn't faster, but committing it for posterity.
|
|
Nice speedup for gears.
|
|
|
|
Was previously calculating the intersection of the scissor rectangle
and the framebuffer dimensions. Rendering is already restricted to
framebuffer dimensions by other means, so scissor testing (when
implemented) can just use the scissor state directly.
|
|
Non-mrt apps work, and the code looks correct, but not many mrt test apps
handy atm...
|
|
When the incoming c0,c1,c2 values are equal to INT_MIN it means that
all pixels are inside the triangle. Thus we can skip the detailed
pixel inside/outside triangle tests. Use the new lp_build_if()/endif()
functions to generate the branching code.
The code is disabled ATM however because it's actually a little slower
than the original code. A little more tuning may fix that though...
|
|
|
|
|
|
|
|
The LLVM IR looks correct now. Basic blocks are where they're supposed
to be and the Phi functions have the right (var,block) information.
|
|
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
|
|
|
|
Fixes assertion failure with fp-incomplete-tex (fdo 24298).
|
|
Otherwise we risk overwriting them with temporary GPRs if
they're not used immediately after the CALL.
|
|
|
|
|