summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/draw
Commit message (Collapse)AuthorAgeFilesLines
* gallivm: Remove the EMMS opcodes.José Fonseca2010-10-281-10/+0
| | | | | Unnecessary now that lp_set_target_options() successful disables MMX code emission.
* Merge branch 'primitive-restart-cleanup'Brian Paul2010-10-211-1/+85
|\ | | | | | | | | | | | | | | Conflicts: docs/relnotes-7.10.html This branch is a re-do of the primitive-restart branch with all the intermediate/temporary stuff cleaned out.
| * draw: implement primitive splitting for primitive restartBrian Paul2010-10-211-1/+85
| |
* | draw: fix typo in commentBrian Paul2010-10-211-1/+1
|/
* draw: Remove unnecessary header.Vinson Lee2010-10-211-1/+0
|
* draw: use float version of LLVM Mul/Add instructionsBrian Paul2010-10-201-7/+7
| | | | LLVM 2.8 is pickier about int vs float instructions and operands.
* llvmpipe/draw: always enable LLVMAddInstructionCombiningPass()Brian Paul2010-10-201-7/+1
| | | | | | We were working around an LLVM 2.5 bug but we're using LLVM 2.6 or later now. This basically reverts commit baddcbc5225e12052b3bc8c07a8b65243d76574d. This fixes the piglit bug/tri-tex-crash.c failure.
* draw: Move loop variable declaration outside for loop.Vinson Lee2010-10-191-1/+2
| | | | Fixes MSVC build.
* draw: make sure viewport gets updated in draw llvm shaderKeith Whitwell2010-10-193-27/+47
| | | | The viewport state was being baked in at compile time (oops...)
* Merge branch 'llvm-cliptest-viewport'Keith Whitwell2010-10-195-42/+455
|\
| * draw: corrections to allow for different cliptest casesHui Qi Tay2010-10-191-3/+5
| |
| * llvmpipe: clean up fields in draw_llvm_variant_keyKeith Whitwell2010-10-172-14/+9
| |
| * draw: corrections for w coordinateHui Qi Tay2010-10-171-2/+3
| |
| * draw: sanitize llvm variant keyHui Qi Tay2010-10-142-1/+3
| | | | | | | | Fixes recompilation, but seems to be broken with llvm 2.8.
| * draw: some changes to allow for runtime changes to userclip planesdelphi2010-10-105-20/+67
| |
| * draw: added userclip planes and updated variant_keydelphi2010-10-042-47/+99
| |
| * draw: added viewport and cliptest flagsHui Qi Tay2010-09-293-50/+98
| | | | | | | | | | | | | | Corrections in store_clip to store clip coordinates in AoS form. Viewport & cliptest flag options based on variant key. Put back draw_pt_post_vs and now 2 paths based on whether clipping occurs or not.
| * draw: cliptest and viewport done in a single loop in vertex shaderHui Qi Tay2010-09-292-27/+293
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cliptesting now done at the end of vs in draw_llvm instead of draw_pt_post_vs. Added viewport mapping transformation and further cliptesting to vertex shader in draw_llvm.c Alternative path where vertex header setup, clip coordinates store, cliptesting and viewport mapping are done earlier in the vertex shader. Still need to hook this up properly according to the return value of "draw_llvm_shader" function.
* | draw/llvmpipe: replace DRAW_MAX_TEXTURE_LEVELS with PIPE_MAX_TEXTURE_LEVELSBrian Paul2010-10-124-20/+18
| | | | | | | | | | There's no apparent reason for the former to exist. And they didn't even have the same value.
* | draw: check for null sampler pointersBrian Paul2010-09-301-4/+6
| | | | | | | | http://bugs.freedesktop.org/show_bug.cgi?id=30516
* | draw: pass sampler state down to llvm jit stateBrian Paul2010-09-293-0/+26
|/ | | | | | | Fixes a regression caused from the change to make min/max lod dynamic state. https://bugs.freedesktop.org/show_bug.cgi?id=30437
* draw: Fullfil the new min_lod/max_lod/lod_bias/border_color dynamic stateJosé Fonseca2010-09-253-0/+33
|
* draw: Prevent clipped vertices overflow.José Fonseca2010-09-231-1/+13
| | | | | | | | Some pathological triangles cause a theoritically impossible number of clipped vertices. The clipper will still assert, but at least release builds will not crash, while this problem is further investigated.
* draw: don't apply flatshading to clipped tris with <3 vertsKeith Whitwell2010-09-231-17/+18
| | | | | If a triangle was completely culled by clipping, we would still try to fix up its provoking vertex.
* draw: new draw_fs.[ch] filesBrian Paul2010-09-212-0/+115
|
* draw: check bitshift against PIPE_MAX_SHADER_OUTPUSBrian Paul2010-09-201-1/+5
|
* draw: fix test for using the wide-point stageBrian Paul2010-09-201-2/+2
| | | | | As it was, we weren't obeying the draw->pipeline.point_sprite state. Fixes point sprites in llvmpipe driver.
* gallium: rework handling of sprite_coord_enable stateBrian Paul2010-09-176-81/+135
| | | | | | | | | | | | | | | | | | | | Implement the pipe_rasterizer_state::sprite_coord_enable field in the draw module (and softpipe) according to what's specified in the documentation. The draw module can now add any number of extra vertex attributes to a post-transformed vertex and generate texcoords for those attributes per sprite_coord_enable. Auto-generated texcoords for sprites only worked for one texcoord unit before. The frag shader gl_PointCoord input is now implemented like any other generic/texcoord attribute. The draw module now needs to be informed about fragment shaders since we need to look at the fragment shader's inputs to know which ones need auto-generated texcoords. Only softpipe has been updated so far.
* draw: Remove unnecessary header.Vinson Lee2010-09-151-1/+0
|
* gallium: introduce get_shader_param (ALL DRIVERS CHANGED) (v3)Luca Barbieri2010-09-141-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes in v3: - Also change trace, which I forgot about Changes in v2: - No longer adds tessellation shaders Currently each shader cap has FS and VS versions. However, we want a version of them for geometry, tessellation control, and tessellation evaluation shaders, and want to be able to easily query a given cap type for a given shader stage. Since having 5 duplicates of each shader cap is unmanageable, add a new get_shader_param function that takes both a shader cap from a new enum and a shader stage. Drivers with non-unified shaders will first switch on the shader and, within each case, switch on the cap. Drivers with unified shaders instead first check whether the shader is supported, and then switch on the cap. MAX_CONST_BUFFERS is now per-stage. The geometry shader cap is removed in favor of checking whether the limit of geometry shader instructions is greater than 0, which is also used for tessellation shaders. WARNING: all drivers changed and compiled but only nvfx tested
* draw: minor reformattingBrian Paul2010-09-091-2/+1
|
* draw: Include missing headers in draw_vs_aos.h.Vinson Lee2010-09-021-0/+2
| | | | | Include tgsi_exec.h for TGSI_EXEC_NUM_TEMPS. Include draw_vs.h for draw_vs_varient.
* draw: Include missing header in draw_vs_llvm.c.Vinson Lee2010-08-281-0/+1
| | | | Include p_screen.h for completely type to pipe_screen.
* draw: specialized cliptesting routinesKeith Whitwell2010-08-2511-205/+267
|
* draw: Remove UNDEFINED_VERTEX_ID checks in emit pathes.Chia-I Wu2010-08-253-28/+0
| | | | | | UNDEFINED_VERTEX_ID is used by draw_pipe_vbuf to decide whether a vertex has been emitted or not. The non-pipeline pathes do not use it (they tell the frontend the max vertex count when prepare() is called).
* gallium: Use draw_set_index_buffer and others.Chia-I Wu2010-08-253-59/+4
| | | | | | Update all drivers to use draw_set_index_buffer, draw_set_mapped_index_buffer, and draw_vbo. Remove draw_set_mapped_element_buffer and draw_set_mapped_element_buffer_range.
* draw: Add draw_set_index_buffer and others.Chia-I Wu2010-08-255-31/+104
| | | | | | | | | This commit adds draw_set_index_buffer, draw_set_mapped_index_buffer, and draw_vbo. The idea behind the new functions is that an index buffer should be a state. draw_arrays and draw_set_mapped_element_buffer are preserved, but the latter will be removed soon.
* draw: reduce the size of the llvm variant keyKeith Whitwell2010-08-224-38/+100
|
* draw: Don't assert if indices point outside vertex buffer.José Fonseca2010-08-221-2/+7
| | | | | | | | | | | | This is valid input, and asserting here does causes the test suites that verify this to crash. Also, the assert was wrongly accepting the case max_index == vert_info->count which, IIUC, is the first vertex outside the buffer. Assuming the vert_info->count is precise (which often is not the case).
* draw_llvm: fix segfaults on non-SSE2 CPUs where it is disabled (v2)Luca Barbieri2010-08-163-17/+32
| | | | | | | | | | | | | | | Changes in v2: - Change function name Currently draw_llvm refuses to create itself on non-SSE2 CPUs due to an alleged LLVM bug. However, this is implemented improperly, because other parts of draw still attempt to access draw->llvm, resulting in segfaults. Instead, put the check in debug_get_option_draw_use_llvm, check that before calling draw_llvm_create, and then check whether draw->llvm is non-null everywhere else.
* drwa: Fix polygon edge flags.Chia-I Wu2010-08-161-1/+1
| | | | | Fix a copy-and-paste error introduced by f141abdc8fdbff41e16b0ce53fa3fa8fba32a7f9.
* draw: No need to make max_vertices even.Chia-I Wu2010-08-166-30/+0
| | | | | | | | | Triangle strip alternates the front/back orientation of its triangles. max_vertices was made even so that varray never splitted a triangle strip at the wrong positions. It did not work with triangle strips with adjacencies. And it is no longer relevant with vsplit.
* draw: Remove DRAW_PIPE_MAX_VERTICES and DRAW_PIPE_FLAG_MASK.Chia-I Wu2010-08-166-30/+19
| | | | | The higher bits of draw elements are no longer used for the stipple or edge flags.
* drwa: Add PRIMITIVE macro to vsplit.Chia-I Wu2010-08-162-20/+31
| | | | | PRIMITIVE is used by the indexed path to flush the entire primitive with custom vertex count checks. It replaces the existing fast path.
* draw: last_vertex_last is always true for GS and SO.Chia-I Wu2010-08-162-9/+3
| | | | | That is, OpenGL decomposition rule is assumed. There should be a pipe_context state to specify the rules.
* draw: Remove varray and vcache.Chia-I Wu2010-08-167-1278/+2
| | | | They have been deprecated by vsplit.
* draw: Replace vcache by vsplit.Chia-I Wu2010-08-163-26/+4
| | | | | | | vcache decomposes primitives while vsplit splits primitives. Splitting is generally easier to do and is faster. More importantly, vcache depends on flatshade_first to decompose. The outputs may have incorrect vertex order which is significant to GS.
* draw: Replace varray by vsplit.Chia-I Wu2010-08-162-8/+9
| | | | | vsplit is a superset of varray. It sets the split flags comparing to varray.
* draw: Add vsplit frontend.Chia-I Wu2010-08-164-1/+693
| | | | | | | | vsplit is based on varray. It sets the split flags when a primitive is splitted. It also has support for indexed primitives. For indexed primitives, unlike vcache, vsplit splits the primitives instead of decomposes them.
* draw: Add new util function draw_pt_trim_count.Chia-I Wu2010-08-163-10/+9
| | | | draw_pt_trim_count is renamed from trim in draw_pt.c.