Commit Graph

174 Commits

Author SHA1 Message Date
Keith Whitwell 591e1bc34f llvmpipe: make debug_fs_variant respect variant->nr_samplers 2010-10-06 11:40:30 +01:00
José Fonseca 87267c71f6 llvmpipe: Make rgb/alpha bland func/factors match, when there is no alpha.
Makes AoS blending easier, and state more canonical.
2010-09-22 15:02:39 +01:00
José Fonseca b556bb7c44 llvmpipe: When failing free fs shader too. 2010-09-21 17:51:29 +01:00
Brian Paul 955d76c3d2 llvmpipe: maintain fragment shader state for draw module 2010-09-20 12:52:16 -06:00
Keith Whitwell 0986355425 llvmpipe: add DEBUG_FS to dump variant information 2010-09-16 17:34:58 +01:00
Vinson Lee aeb83928fd llvmpipe: Initialize variable for potentially unhandled switch case. 2010-09-14 00:17:13 -07:00
Keith Whitwell 67b957781d llvmpipe: pass linear masks to fragment shader
Fragment shader can extract the correct bits for each quad.
2010-09-12 15:03:49 +01:00
José Fonseca 853953dc3c llvmpipe: Only generate the whole shader specialization for opaque shaders.
If not opaque, then the color buffer will have to be read any way,
therefore the specialization is pointless.
2010-09-12 10:15:48 +01:00
José Fonseca 277d768d10 llvmpipe: Don't store display the alpha ref value in the key.
It's never used.
2010-09-11 13:30:14 +01:00
Brian Paul 3ec296390c llvmpipe: remove redundant tgsi_dup_tokens() call
We were calling this twice so the first allocation was orphaned/leaked.
2010-09-09 10:04:39 -06:00
Keith Whitwell 9f6e8e1d6b llvmpipe: use opcodes instead of function pointers in bins
Also, move some state from rasterizer struct to the scene.
2010-09-07 14:02:15 +01:00
Keith Whitwell 71e27ef21c llvmpipe: put fs variant dumping in a function 2010-09-07 13:22:54 +01:00
José Fonseca 00989d5bfc llvmpipe: Relax the colormask constraint on opaque.
Also, include the color buffer in the key. Not having it there
causes a tight knots in the logic to determine when it is OK or not
to discard previous color buffer contents.
2010-09-05 10:17:51 +01:00
Keith Whitwell b6e03eafe3 llvmpipe: fence debugging, add llvmpipe_finish 2010-08-25 10:29:27 +01:00
Keith Whitwell 3d4b60f1f7 llvmpipe: reduce size of fragment shader variant key
Don't spend as much time comparing them.
2010-08-22 14:49:17 +01:00
Vinson Lee 078eff659a llvmpipe: Fix implicit declaration of lp_func_delete_body warnings. 2010-07-30 11:48:48 -07:00
Zack Rusin 042018a943 llvmpipe: delete function bodies after generating machine code 2010-07-30 16:25:29 +01:00
José Fonseca e3d2ebac11 llvmpipe: Avoid corrupting the FPU stack with MMX instructions on 32bit OSes.
Unfortunately LLVM doesn't emit EMMS itself, and there is no
easy/effective way to disable MMX.

http://llvm.org/bugs/show_bug.cgi?id=3287
2010-07-29 19:10:59 +01:00
Keith Whitwell d4b64167b5 llvmpipe: pass mask into fragment shader
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-13 17:23:49 +01:00
Zack Rusin b5e381d978 llvmpipe: make geometry shaders and stream output work 2010-06-22 12:58:04 -04:00
José Fonseca 197636814e llvmpipe: s/lpfs/shader/ 2010-06-21 14:11:15 +01:00
José Fonseca d7f4250333 llvmpipe: Fix pointer dereference after free. 2010-06-18 17:37:37 +01:00
Roland Scheidegger 17c9d7eea7 llvmpipe: limit the number of fragment shader variants kept around
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-18 13:52:17 +01:00
Keith Whitwell a6d9d18fae llvmpipe: hook up basic gs and multiple constant buffer support 2010-06-07 16:39:02 +01:00
José Fonseca 81862bbbc8 llvmpipe: Number shaders/variants for more reproducible function names in the IR. 2010-06-03 14:32:56 +01:00
José Fonseca 147dc2354c llvmpipe: Centralize all position interpolation in lp_bld_interp.c. 2010-06-02 13:24:25 +01:00
José Fonseca 6ce68ad3ca llvmpipe: Use struct lp_shader_input in the interpolator.
Eliminates all this identical yet slightly different code to decide how
shader inputs should be interpolated.

As bonus, don't interpolate the position twice when it is listed in the
TGSI shader inputs.
2010-06-01 21:30:57 +01:00
José Fonseca 149cb7682e llvmpipe: Don't waste time interpolating unused input channels. 2010-06-01 16:39:03 +01:00
José Fonseca 524ec6464d llvmpipe: Show fs's TGSI when LP_DEBUG=tgsi is set. 2010-05-31 21:58:38 +01:00
José Fonseca f503b3dd9d llvmpipe: Use pointer_to_func() instead of custom wrappers. 2010-05-30 16:38:23 +01:00
José Fonseca 18fb9ff6d8 llvmpipe: Pass the fs variant to the rasterizer. 2010-05-30 10:30:01 +01:00
Brian Paul d574ffbb4d llvmpipe: more tweaks to dump_fs_variant_key() 2010-05-20 10:27:11 -06:00
Brian Paul 75189ef960 llvmpipe: use util_dump_logicop() 2010-05-20 10:27:11 -06:00
Brian Paul c2a036d4ef llvmpipe: put variant print/debug code into separate function 2010-05-20 10:27:11 -06:00
Vinson Lee 6440dcea21 llvmpipe: Remove unnecessary headers. 2010-05-15 08:38:00 -07:00
José Fonseca 8a3bcba12c llvmpipe: Use GALLIVM_DEBUG opt where applicable. 2010-05-15 11:48:39 +01:00
Brian Paul d9096926f8 llvmpipe: silence casting warnings 2010-05-13 14:15:44 -06:00
José Fonseca 648c9d5247 llvmpipe: Dump fs key's stencil state. 2010-05-12 20:40:14 +01:00
José Fonseca 4c4f98c6fc llvmpipe: Use RAST_WHOLE/EDGE_TEST in more places. 2010-05-12 17:24:34 +01:00
José Fonseca 10fdbb9298 llvmpipe: Move the opaque flag computation into the variant. 2010-05-12 17:12:59 +01:00
Brian Paul f795735f42 llvmpipe: fix up indexing of blend/colormask state for render targets 2010-05-10 17:04:19 -06:00
José Fonseca 8ad3e0b55d gallivm: Add an alternative to LLVMDumpValue that works with Windows GUI apps. 2010-05-08 23:29:05 +01:00
Qicheng Christopher Li 86afe8250e llvmpipe: implement occlusion query
OpenGL occlusion queries work now.  The Mesa demos, glean test and piglit
tests all pass.  A few enhancements are possible in the future. -Brian

Signed-off-by: Brian Paul <brianp@vmware.com>
2010-05-06 11:45:45 -06:00
José Fonseca 59253a79d8 llvmpipe: Fix alpha blending for formats without alpha channel.
Don't use the dst alpha channel from the swizzled tile when it does not
exist in the true format.
2010-05-03 00:13:36 +01:00
Vinson Lee 70c7531051 llvmpipe: Remove unused variable. 2010-05-01 15:12:45 -07:00
Brian Paul 9523d78dde llvmpipe: make shader-related functions static, clean-up initializations 2010-04-28 15:25:50 -06:00
Brian Paul a7e2470843 llvmpipe: remove some unneeded shader structure fields 2010-04-28 15:25:50 -06:00
Brian Paul ac6725b8f9 llvmpipe: dump shaders if LP_DEBUG=tgsi 2010-04-28 15:25:50 -06:00
Vinson Lee 03b3c10774 llvmpipe: Remove unused variable. 2010-04-26 16:31:05 -07:00
Vinson Lee 8352983e2a llvmpipe: Remove unused variable. 2010-04-25 13:10:02 -07:00