summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/draw
Commit message (Collapse)AuthorAgeFilesLines
* gallium: add polygon offset clamp stateChristoph Bumiller2011-09-281-0/+6
| | | | This is required for D3D1x and supported by hardware.
* gallium: move border color to be a color unionDave Airlie2011-09-271-1/+1
| | | | | | | | | | EXT_texture_integer also specifies border color should be a color union, the values are used according to the texture sampler format. (update docs) Signed-off-by: Dave Airlie <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* draw: Never allocate duplicate extra vertex attribs.José Fonseca2011-09-255-46/+54
| | | | | | | Prevents mismatches when the VS outputs generic attributes not used by the FS. Reviewed-by: Brian Paul <[email protected]>
* draw: Make copy of the TGSI tokens.José Fonseca2011-09-252-2/+6
| | | | | | | | There is no guarantee that the tokens TGSI will persist beyond the create_fs_state. The pipe driver (and therefore the draw module) is responsible for making copies of the TGSI tokens when it needs them. Reviewed-by: Brian Paul <[email protected]>
* draw/llvm: add additional null pointer checkin ↵Brian Paul2011-09-231-1/+1
| | | | draw_pt_fetch_pipeline_or_emit_llvm()
* draw: add support for guard-band clippingBrian Paul2011-09-228-6/+50
|
* draw: Reduce the number of vertex shader variants per context to 128.José Fonseca2011-09-221-1/+1
|
* draw: Respect max_indices from the renderer.Kurt Daverman2011-09-221-1/+1
|
* Gallium: remove unnecessary ifdef for MAX_CLIPPED_VERTICES.Paul Berry2011-09-201-2/+0
| | | | | | | | | | | draw_pipe_clip.c contained an ifdef to ensure that its local definition of MAX_CLIPPED_VERTICES would not take effect if the global MAX_CLIPPED_VERTICES (defined in src/mesa/main/config.h) was already defined. This was unnecessary because draw_pipe_clip.c doesn't directly or indirectly include src/mesa/main/config.h. Removed the ifdef to reduce confusion. Reviewed-by: Brian Paul <[email protected]>
* draw/llvm: combine draw_llvm_generate() and draw_llvm_generate_elts()Brian Paul2011-09-101-273/+97
| | | | | | | | These two functions were nearly the same with lots of duplicated code. Now pass in a boolean 'elts' flag and use a few conditionals to implement the linear vs. indexed cases. Reviewed-by: José Fonseca <[email protected]>
* llvmpipe: fix build with LLVM 3.0svnTobias Droste2011-07-191-13/+35
| | | | | | | | | LLVM 3.0svn introduced a new type system. It defines a new way to create named structs and removes the (now not needed) LLVMInvalidateStructLayout function. See revision 134829 of LLVM. Signed-off-by: Tobias Droste <[email protected]> Signed-off-by: Brian Paul <[email protected]>
* draw: Fix fetch_max calculation.José Fonseca2011-07-041-1/+2
| | | | | | | | | | It should be max_index = start + count - 1 instead of max_index = count - 1
* Gallium: fix buffer overflowMicael Dias2011-07-011-0/+11
| | | | Signed-off-by: José Fonseca <[email protected]>
* Gallium:draw:aaline and aapoint: Restore the old hooks when we destroy our ↵Stéphane Marchesin2011-06-292-0/+17
| | | | stage.
* draw: fix edge flag handling in clipper (for unfilled tris/quads/polygons)Brian Paul2011-06-081-5/+57
| | | | | | | | | | | | | | | | | | | | Previously, we were errantly drawing some interior edges of clipped polygons and quads. Also, we were introducing extra edges where polygons intersected the view frustum clip planes. The main problem was that we were ignoring the edgeflags encoded in the primitive header's 'flags' field which are set during polygon/quad ->tri decomposition. We need to observe those during clipping. Since we can't modify the existing vert's edgeflag fields, we need to store them in a parallel array. Edge flags also need to be handled differently for view frustum planes vs. user-defined clip planes. In the former case we don't want to draw new clip edges but in the later case we do. This matches NVIDIA's behaviour and it just looks right. Finally, note that the LLVM draw code does not properly set vertex edge flags. It's OK on the regular software path though.
* draw: rename draw_vs_varient.c to draw_vs_variant.cBrian Paul2011-06-071-0/+0
|
* draw/llvm: whitespace, formatting fixesBrian Paul2011-06-071-38/+51
|
* draw: s/1/TRUE/Brian Paul2011-06-071-2/+2
|
* gallium/draw: Fix enum type taken by draw_get_shader_param().Michel Dänzer2011-05-031-1/+1
| | | | | | | | | | Pointed out by clang: src/gallium/auxiliary/draw/draw_context.h:251:41: warning: implicit conversion from enumeration type 'enum pipe_cap' to different enumeration type 'enum pipe_shader_cap' [-Wconversion] return tgsi_exec_get_shader_param(param); ~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~
* draw: remove set-but-unused variableMarek Olšák2011-05-011-2/+1
|
* draw: fix point/line/tri flushing bug in vbuf codeBrian Paul2011-04-221-4/+10
| | | | | | | | Need to reset the point/line/tri functions to point to the "first" versions whenever we flush vertices. Fixes unfilled polygon rendering errors seen in demos/samples/logo.c. See comments for more info. NOTE: This is a candidate for the 7.10 branch.
* llvmpipe: Take the sampler view's first_level into account when sampling.Fabian Bieler2011-04-085-6/+15
|
* draw: Fix thinko in debug warnings.José Fonseca2011-04-061-3/+3
|
* draw: Prevent out-of-bounds vertex buffer access.José Fonseca2011-04-017-7/+37
| | | | Based on some code and ideas from Keith Whitwell.
* draw: Revert code reorg in previous change.José Fonseca2011-03-311-4/+4
| | | | | | | | | | Because fetch_count = max_index - min_index + 1 overflows for min_index = 0 and max_index = 0xffffffff. Fixes fdo 35815.
* draw: implement vertex color clamping, and disable SSE and PPC pathsLuca Barbieri2011-03-314-9/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (some little changes by Marek Olšák) Squashed commit of the following: commit 737c0c6b7d591ac0fc969a7590e1691eeef0ce5e Author: Luca Barbieri <[email protected]> Date: Fri Aug 27 02:13:57 2010 +0200 draw: disable SSE and PPC paths (use LLVM instead) These paths don't support vertex clamping, and are anyway obsoleted by LLVM. If you want to re-enable them, add vertex clamping and test that it works with the ARB_color_buffer_float piglit tests. commit fed3486a7ca0683b403913604a26ee49a3ef48c7 Author: Luca Barbieri <[email protected]> Date: Thu Aug 26 18:27:38 2010 +0200 draw_llvm: respect vertex color clamp commit ef0efe9f3d1d0f9b40ebab78940491d2154277a9 Author: Luca Barbieri <[email protected]> Date: Thu Aug 26 18:26:43 2010 +0200 draw: respect vertex clamping in interpreter path
* draw: Forgot to remove one istart usage.José Fonseca2011-03-301-1/+1
|
* draw: Fix bug when drawing ushort indices.José Fonseca2011-03-301-6/+8
| | | | | | | | | | When the condition min_index == 0 && sizeof(ib[0]) == sizeof(draw_elts[0]) was true, we were wrongly ignoring istart and processing indices 0. Reorder some statements to make the code easier to understand.
* draw: Fix draw_variant_output::format's type.José Fonseca2011-03-132-3/+4
|
* draw: remove unnecessary flushMarek Olšák2011-03-111-7/+0
|
* draw: Silence tgsi_emit_sse2 failed messages.José Fonseca2011-03-041-1/+2
|
* draw: setup pipe's draw pointer for the aapoint stageBrian Paul2011-02-281-0/+2
| | | | | | The other draw stages like aaline and pstipple were already doing this. If the driver used the aapoint stage but not the others it would crash because of a null pipe->draw pointer.
* draw: update comments, rename vars in pstipple codeBrian Paul2011-02-171-16/+18
|
* gallium: remove pipe_vertex_buffer::max_indexMarek Olšák2011-02-146-23/+10
| | | | | This is redundant to pipe_draw_info::max_index and doesn't really fit in the optimizations I plan.
* draw: Don't define the last two mipmap levels in aa lines.José Fonseca2011-02-141-5/+11
| | | | | | Some hardware needs to make a seperate copy of all levels to obey max_lod, so simply do not define the last two levels instead of clamping.
* draw: tweak AA line texture minimum alphaBrian Paul2011-02-111-1/+1
| | | | | AA lines drawn as textured quads look a little better with this change. Conformance/piglit tests still pass.
* draw: Don't use the pipeline when drawing lines with fractional widths.José Fonseca2011-02-113-5/+6
| | | | Spotted by Jakob Bornecrantz.
* draw: Do not use LLVM's opaque types.José Fonseca2011-01-241-1/+1
| | | | | | | | | | | | | | | | | | | | | Contrary what the name may suggest, LLVM's opaque types are used for recursive types -- types whose definition refers itself -- so opaque types correspond to pre-declaring a structure in C. E.g.: struct node; struct link { .... struct node *next; }; struct node { struct link link; } Void pointers are also disallowed by LLVM. So the suggested way of creating what's commonly referred as "opaque pointers" is using byte pointer (i.e., uint8_t * ).
* draw: Init llvm if not providedJakob Bornecrantz2011-01-242-3/+13
|
* draw: add missing LP_CHECK_MEMBER_OFFSET()Brian Paul2011-01-151-0/+2
|
* Merge branch 'draw-instanced'Brian Paul2011-01-153-4/+29
|\ | | | | | | | | | | | | | | Conflicts: src/gallium/auxiliary/draw/draw_llvm.c src/gallium/drivers/llvmpipe/lp_state_fs.c src/glsl/ir_set_program_inouts.cpp src/mesa/tnl/t_vb_program.c
| * gallivm/llvmpipe: implement system values and instanceIDBrian Paul2010-12-081-4/+17
| |
| * draw: setup instance ID for SSE generatorBrian Paul2010-12-081-0/+6
| |
| * draw: setup instance ID for VS interpreterBrian Paul2010-12-081-0/+6
| |
* | draw: Fix an off-by-one bug in a vsplit assertion.Chia-I Wu2011-01-141-1/+2
| | | | | | | | | | | | | | | | When use_spoken is true, istart (the first vertex of this segment) is replaced by i0 (the spoken vertex of the fan). There are still icount vertices. Thanks to Brian Paul for spotting this.
* | gallium: drivers should reference vertex buffersMarek Olšák2011-01-061-2/+8
| | | | | | | | So that a state tracker can unreference them after set_vertex_buffers.
* | draw: s/varient/variant/Brian Paul2010-12-1610-110/+110
| |
* | draw/llvm: don't flush in vs_llvm_delete()Brian Paul2010-12-091-12/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes piglit glx-shader-sharing crash. When shaders are shared by multiple contexts, the shader's draw context pointer may point to a previously destroyed context. Dereferencing the context pointer will lead to a crash. In this case, simply removing the flushing code avoids the crash (the exec and sse shader paths don't flush here either). There's a deeper issue here, however, that needs examination. Shaders should not keep pointers to contexts since contexts might get destroyed at any time. NOTE: This is a candidate for the 7.10 branch (after this has been tested for a while).
* | draw/llvm: remove redundant commentBrian Paul2010-12-091-1/+0
| |
* | draw/llvm: remove extraneous conditionalBrian Paul2010-12-091-6/+4
| |