summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/llvmpipe
AgeCommit message (Collapse)Author
2010-07-16llvmpipe: use single swizzled tileKeith Whitwell
Use a single swizzled tile per colorbuf (and per thread) to avoid accumulating large amounts of cached swizzled data. Now that the SSE3 code has been merged to master, the performance delta of this change is minimal, the main benefit is reduced memory usage due to no longer keeping swizzled copies of render targets. It's clear from the performance of the in-place version of this code that there is still quite a bit of time being spent swizzling & unswizzling, but it's not clear exactly how to reduce that.
2010-07-16llvmpipe: Describe _mm_shuffle_epi8() with gcc extended inline assembly when ↵José Fonseca
-mssse3 is not supported/enabled.
2010-07-16llvmpipe: Only use -mssse3 on gcc 4.3+José Fonseca
2010-07-15llvmpipe: implement instanced drawing functionsBrian Paul
And express all the other drawing functions in terms of llvmpipe_draw_range_elements_instanced().
2010-07-15llvmpipe: Remove redundant statement.José Fonseca
Thanks to Vinson for spotting this.
2010-07-14llvmpipe: delete lp_test_*.o files with make cleanBrian Paul
2010-07-14llvmpipe: Remove redundant alignments.José Fonseca
The lp_rast_shader_inputs' alignment is irrelevant now that it contains pointers instead of actual data. Likewise, lp_rast_triangle's size alignment is meaningless.
2010-07-14llvmpipe: Addi ssse3 swizzling for B8G8R8A8_UNORM.Chris Li
2010-07-13llvmpipe: fix comment typoRoland Scheidegger
2010-07-13llvmpipe: move rasterizer to screen instead of setup contextRoland Scheidegger
there's no point of having this per context, so move to screen (and protect with a mutex).
2010-07-13llvmpipe: Align texture data to the cache line.José Fonseca
2010-07-13llvmpipe: eliminate the set_state rasterizer commandKeith Whitwell
Just put a pointer to the state in the tri->inputs struct. Remove some complex logic for eliminating unused statechanges in bins at the expense of a slightly larger triangle struct.
2010-07-13llvmpipe: pass mask into fragment shaderKeith Whitwell
Move this code back out to C for now, will generate separately. Shader now takes a mask parameter instead of C0/C1/C2/etc. Shader does not currently use that parameter and rasterizes whole pixel stamps always.
2010-07-13llvmpipe: move fences from per-bin to per-threadKeith Whitwell
Rather than inserting an lp_rast_fence command at the end of each bin, have each rasterizer thread call this function directly once it has run out of work to do on a particular scene. This results in fewer calls to the mutex & related functions, but more importantly makes it easier to recognize empty bins.
2010-07-13llvmpipe: Always swizzle/unswizzle whole tiles.José Fonseca
This was already the case, but the generated (un)swizzling code was not benefiting of that knowledge.
2010-07-13llvmpipe: Ignores!Jakob Bornecrantz
2010-07-12llvmpipe: Re-enable threading on windows.José Fonseca
2010-07-06llvmpipe: Don't build lp_test_round when using MSVC.Vinson Lee
lp_test_round uses the math functions round and trunc, which aren't available with MSVC. Fixes the MSVC build for now.
2010-07-06llvmpipe: Add lp_test_round to SCons build.Vinson Lee
2010-07-06llvmpipe: add test program for round(), trunc(), floor(), ceil()Brian Paul
2010-07-06llvmpipe: disconnect vertex texture sampling from the setupZack Rusin
it was wrong to put this in the fs paths, but it was easier to just stuff it along the fragment texture sampling paths. the patch disconnects vertex texture sampling and just maps the textures before the draw itself and unmaps them after.
2010-07-06draw: implement vertex texture sampling using llvmZack Rusin
2010-07-06llvmpipe: ensure all bins are reset avoids memory corruption.Alan Hourihane
2010-07-05llvmpipe: wait for queries being finished when asked for it or before deletionRoland Scheidegger
This fixes bug #28757, though does not yet address the issue that fences aren't always emitted.
2010-07-02gallivm: Support multiple pixels in lp_build_fetch_rgba_aos().José Fonseca
This allows to do the unpacking of formats that fit in 4 x unorm8 in parallel, 4 pixels at a time.
2010-07-02gallivm: Fix 4 x unorm8 -> 4 x float conversion.José Fonseca
Also fix the test.
2010-07-01llvmpipe: silence pointer type warningsBrian Paul
2010-07-01gallivm: Support 4 x unorm8 in lp_build_fetch_rgba_aos().José Fonseca
Uses code and ideas from Brian Paul.
2010-07-01gallivm: Allow to conversions to/from registers of different sizes.José Fonseca
Allow for example to convert from 4 x float32 to 4 x unorm8 and vice versa. Uses code and ideas from Brian Paul.
2010-07-01llvmpipe: Remove lp_build_swizzle2_aos().José Fonseca
Unnecessary special case.
2010-06-30llvmpipe: another null pointer checkBrian Paul
2010-06-30llvmpipe: use dummy tile when out of memoryBrian Paul
2010-06-30llvmpipe: added new lp_memory.[ch] filesBrian Paul
Functions for using dummy tiles when we detect OOM conditions.
2010-06-30llvmpipe: Add a new scene state to describe scenes which only have state ↵José Fonseca
changes. It's a rare condition, but it may happen if all primitives are clipped/culled. For now we just do a no-op rasterization, but we could bypass it.
2010-06-30llvmpipe: Don't reset the bin when there's a zsbuf bound.José Fonseca
The previous rendering may have secondary effects on the zsbuf. Fixes the missing tiles on gearbox.
2010-06-29llvmpipe: don't crash/assert on out of memoryBrian Paul
Check for null pointers and return early, etc.
2010-06-29llvmpipe: restore call to lp_setup_update_state()Brian Paul
This undoes part of commit 8be645d53a0d5d0ca50e4e9597043225e2231b6d and fixes fd.o bug 28822 as well as other regressions. The 'draw' module may issue additional state-change commands while we're inside the draw_arrays/elements() call so it's important to check for updated state at this point.
2010-06-28mesa: initial support for ARB_geometry_shader4Zack Rusin
laying down the foundation for everything and implementing most of the stuff. linking, gl_VerticesIn and multidimensional inputs are left.
2010-06-28llvmpipe: set WRITE_ALL only a per-tile basis in lp_resource_copy().José Fonseca
2010-06-28llvmpipe: Actually flush in lp_resource_copy()José Fonseca
The cpu_access is redundant in a software rasterizer.
2010-06-28llvmpipe: Ensure outdated framebuffer state is not reused in ↵José Fonseca
lp_setup_bind_framebuffer(). We were starting a scene whenever lp_setup_get_vertex_info() was called by the draw module. So when when all primitives were culled/clipped, not only did we create a new scene for nothing, but we end up using the old scene with the old framebuffer state instead of a new one. Fix consists in: - don't call lp_setup_update_state() in lp_setup_get_vertex_info() -- no longer necessary - always setting the scene state before binning a command -- query commands were bypassing it - assert no old scene is reused in lp_setup_bind_framebuffer()
2010-06-25llvmpipe: fix comment typoBrian Paul
2010-06-23llvmpipe: Remove unnecessary header.Vinson Lee
2010-06-22llvmpipe: IgnoresJakob Bornecrantz
2010-06-22llvmpipe: make geometry shaders and stream output workZack Rusin
2010-06-21llvmpipe: s/lpfs/shader/José Fonseca
2010-06-18llvmpipe: Fix pointer dereference after free.José Fonseca
2010-06-18llvmpipe: limit the number of fragment shader variants kept aroundRoland Scheidegger
llvmpipe can create a large number of shader variants for a single shader (which are quite big), and they were only ever deleted if the shader itself was deleted. This is especially apparent in things like glean blendFunc where a new variant is created for every different subtest, chewing up all memory. This change limits the numbers of fragment shader variants (for all shaders) which are kept around to a fixed number. If that would be exceeded a fixed portion of the cached variants is deleted (since without tracking the used variants this involves flushing we don't want to delete only one). Always the least recently used variants (from all shaders together) are deleted. For now this is all per-context. Both the number of how many variants are cached (1024) as well as how many will be deleted at once (1/4 of the cache size) are just rough guesses and subject to further optimization.
2010-06-09llvmpipe: fix copy & paste bug in clear logicRoland Scheidegger
fixes bug 28450.
2010-06-08gallium: adjust the query interface to support custom typesZack Rusin
we need to change it to support composite types