Age | Commit message (Collapse) | Author |
|
|
|
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).
|
|
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.
|
|
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.
|
|
|
|
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).
|
|
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.
|
|
Fix a copy-and-paste error introduced by
f141abdc8fdbff41e16b0ce53fa3fa8fba32a7f9.
|
|
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.
|
|
The higher bits of draw elements are no longer used for the stipple or
edge flags.
|
|
PRIMITIVE is used by the indexed path to flush the entire primitive with
custom vertex count checks. It replaces the existing fast path.
|
|
That is, OpenGL decomposition rule is assumed. There should be a
pipe_context state to specify the rules.
|
|
They have been deprecated by vsplit.
|
|
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.
|
|
vsplit is a superset of varray. It sets the split flags comparing to
varray.
|
|
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_pt_trim_count is renamed from trim in draw_pt.c.
|
|
The run method is simplified to take the start vertex and the vertex
count.
|
|
Update the middle end interface to pass the primitive flags from the
frontends to the pipeline. No frontend sets the flags yet.
|
|
A primitive may be splitted in frontends. The splitted primitives
should convey certain flag bits so that the decomposer can correctly
decide the stipple or edge flags.
This commit adds flags to draw_prim_info and updates the decomposer to
honor the flags. Frontends and middle ends will be updated later.
|
|
|
|
Two integers were being operated on as
a vector of floats in draw_llvm_generate().
This bug got uncovered by fixing this bug:
http://bugs.freedesktop.org/29407
|
|
Assert that "first" is always smaller than "count" and add reasoning.
It would be better to simply fix trim(), but it is used in tight loops
right now.
|
|
Some primitives with adjacency have their "incr" wrong.
|
|
642d5ba79abc6a231a5fdabb3454b9b082b0d7f8 removed flags masking for
vertices other than the first one. Add assertions to be on the safe
side.
|
|
Do not expand LOCAL_VARS to void expression. Otherwise, declarations
and code will be mixed when more variables are declared in FUNC_ENTER.
This fixes fdo bug #29416.
|
|
Vertex flags are a contract between vcache and the pipeline. They are
set only for the first vertex of a primitive.
|
|
This fixes out-of-bound access to the vertices.
|
|
Use draw_decompose_tmp.h to replace pipeline primitive decomposer.
|
|
Use draw_decompose_tmp.h to replace stream out primitive decomposer.
|
|
Use draw_decompose_tmp.h to replace GS primitive decomposer.
|
|
Use draw_decompose_tmp.h to replace vcache primitive decomposer. As the
new decomposer supports primitives with adjacency, vcache_triangle_adj
and vcache_line_adj (and their variants that have flags) are added.
|
|
Including draw_decompose_tmp.h defines a primitive decomposer. It is
intended to replace the existing vcache/so/gs/pipe decomposers.
This is based on draw_pt_vcache_tmp.h.
|
|
Fixes typo from commit b609cfc7c9c38f26e7e6d6f7dd5dd6d38f4ed209.
|
|
This bug can be triggered by rendering polygons with
glProvokingVertexEXT(GL_FIRST_VERTEX_CONVENTION_EXT);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
|
When we have instance divisors we don't really know which vertex
elements we'll be fetching ahead of time.
This fixes a bug in instanced drawing which was exposed by the new
draw_vbo() code because of max_index not being ~0 as often as it used
to be. The test for max_index >= DRAW_PIPE_MAX_VERTICES often hid
this problem before.
|
|
|
|
|
|
|
|
Not sure if this will actually fix the issue, but it fixes the warning.
|
|
we just have nothing to do in it right now
|
|
|
|
|
|
Make sure that all the element indexes actually lie inside the vertex
buffer.
Also, rename pipe_run() to pipe_run_elts() to be more specific.
And assert/check the vertex count for the non-indexed case.
|
|
|
|
Plumb the constant buffer sizes down into the tgsi interpreter where
we can do bounds checking. Optional debug code warns upon out-of-bounds
reading. Plus add a few other assertions in the TGSI interpreter.
|
|
|
|
|
|
|
|
Fixes minor rasterization error detected by some tests.
|