summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_llvm.c
AgeCommit message (Collapse)Author
2010-06-25draw: limit the number of vertex shader variants kept aroundZack Rusin
we used to create and cache unltimited number of variant, this change limits the number of variants kept around to a fixed number. the change is based on a similar patch by Roland for llvmpipe fragment shaders.
2010-06-16draw: add alloc checkAlan Hourihane
2010-05-30draw: Use pointer_to_func() instead of custom wrappers.José Fonseca
2010-05-15draw: Use GALLIVM_DEBUG opt.José Fonseca
2010-05-13draw: silence casting warningsBrian Paul
2010-05-08gallivm: Add an alternative to LLVMDumpValue that works with Windows GUI apps.José Fonseca
2010-05-06gallivm: Require SSE2 for draw_llvm/llvmpipe due to LLVM PR6960.Török Edwin
Note that this also requires X86 for llvm, if llvmpipe/draw_llvm works on PPC then the condition should be extended to include && x86. Signed-off-by: Török Edwin <edwintorok@gmail.com> Signed-off-by: José Fonseca <jfonseca@vmware.com>
2010-05-03Reorder LLVM passes, running mem2reg earlier.Török Edwin
This gives a ~30% shader optimization time improvement on blender. Tested by comparing the dumped LLVM modules. Current ordering: time ~/llvm-git/obj/Release-Asserts/bin/opt l.bc -constprop -instcombine -mem2reg -gvn -simplifycfg real 0m1.126s user 0m1.108s sys 0m0.012s With this patch: time ~/llvm-git/obj/Release-Asserts/bin/opt l.bc -mem2reg -constprop -instcombine -gvn -simplifycfg real 0m0.885s user 0m0.880s sys 0m0.000s The overall improvement in blender is ~15%. Blender without the patch takes 1m13s: edwin 5934 87.6 11.5 729440 458296 pts/5 SLl+ 17:35 1:13 blender Blender with the patch takes 1m3s: edwin 5726 94.2 11.2 716424 446168 pts/5 SLl+ 17:32 1:03 blender It is still slow with the patch, but better (most of the optimization time is taken up by GVN, see LLVM PR7023). Signed-off-by: Török Edwin <edwintorok@gmail.com> Signed-off-by: José Fonseca <jfonseca@vmware.com>
2010-04-30draw: Fix memory leaks in llvm code.José Fonseca
2010-04-29draw llvm: stay in bounds even if fetch_count % 4 != 0Zack Rusin
if fetch_count % 4 != 0 then on the last iteration we fetch garbage. this patch makes sure we stay within bounds
2010-04-26draw/llvm: implement fetch elts pathsZack Rusin
we were only running the llvm paths when the input elts were linear, now we can handle abritrary fetch elts arrays. we do this by generating two paths - linear and fetch_elts one and just selecting the right one at run time.
2010-04-25draw: Respect pipe_vertex_buffer::max_index in llvm generated code.José Fonseca
Everybody should respect max_index, specially llvm generated code, which likes to eat vertices 4 at a time, so it may end up chew a bit a bit more than actually exists.
2010-04-23draw: use FREE() instead of free()Stephen Johnson
2010-04-22gallivm: implement indirect addressing over temporariesZack Rusin
a bit more involved than indirect addressing over consts, but still fairly reasonable. we allocate an array instead of individual alloca's, and we do it only if the shader does indirect addressing.
2010-04-19draw llvm: Remove unnecessary header.Vinson Lee
2010-04-19draw llvm: fix constructor messZack Rusin
use just one constructor to figure out whether to use llvm.
2010-04-16gallium/draw: fix breakage from moving lp_bld_* filesBrian Paul
2010-04-13draw llvm: Initialize variable.Vinson Lee
2010-04-08draw: Fix vertex buffer indexation.José Fonseca
2010-04-08draw llvm: Remove unnecessary header.Vinson Lee
2010-04-07draw llvm: highly reduce the compilation times for draw llvmZack Rusin
our code resets pipe_vertex_buffer's with different offsets when rendering vbo, meaning that we kept creating insane number of shaders even for simple apps e.g. geartrain had 54 shaders and it was taking almost 27 seconds just to compile them. this patch passes pipe_vertex_buffer's to the jit function and lets it to the stride/buffer_offset computation at run time. the slowdown at runtime is largely unnoticable but the we go from 54 shaders to 3, and from 27 seconds to less than 1.
2010-04-07draw: Fix MSVC build (snprintf->util_snprintf).José Fonseca
2010-04-07llvmpipe: Fix USE_DRAW_LLVM build. Use lp_build_engine.José Fonseca
2010-04-06draw llvm: disable printing of the LLVM irZack Rusin
2010-04-06draw llvm: implement simple pipeline caching using variantsZack Rusin
2010-04-06draw llvm: fix iteration for larger vertex arraysZack Rusin
we were trying to store the outputs starting at the same offset we were using for the input arrays, which was writing beyond the end of the output array.
2010-04-06draw llvm: iterate with the correct stop over the outputsZack Rusin
it's whatever the var step is (4 usually) not an unconditional 1
2010-04-06draw llvm: fix draw arraysZack Rusin
we don't index within the outputs but only within the inputs
2010-04-06draw llvm: fix loop iteration and vertex header offsetsZack Rusin
the loop was doing a NE comparison which we could have skipped if the prim was triangles (3 verts) and our step was 4 verts. also fix offsets in conversion to aos.
2010-04-05draw llvm: when generating the vertex_header struct adjust its nameZack Rusin
change the name to not clash and accuretly represent the number of inputs we store in the data member
2010-04-02draw llvm: fix storing of outputs for the rest of the pipelineZack Rusin
there's no good way of aligning the output's, and since the vertex_header is variable sized in the first place we need to extract elements from a vector and store them individually into an array. this gets the basic examples working again
2010-04-01draw llvm: a lot better storing implementationZack Rusin
2010-03-31draw llvm: fix iteration over buffersZack Rusin
fetching was converting garbage
2010-03-30draw llvm: fix a warningZack Rusin
2010-03-30draw llvm: actually set the constant buffers on the contextZack Rusin
2010-03-30draw llvm: fix some silly mistakesZack Rusin
the vs_type selection isn't ideal, but for now both llvmpipe's fs and vs do the same thing which is operate on 4xfloat vector as the base type
2010-03-30draw llvm: various fixes for the translation codeZack Rusin
the from translation isn't quite right yet
2010-03-29draw llvmpipe: lots of fixes for fetch/emitZack Rusin
the values passed are still not right, but the general scheme is looking good.
2010-02-22gallium/draw: initial code to properly support llvm in the draw moduleZack Rusin
code generate big chunks of the vertex pipeline in order to speed up software vertex processing.