Age | Commit message (Collapse) | Author |
|
|
|
|
|
Encode edgeflags (and reset_stipple info) into the top two bits of the
fetch elements. This info could be moved elsewhere, but for now we
can live with a 1<<30 maximum element size...
Also use the primitive decomposition code from draw_prim.c verbatim, as
it includes all this stuff and is known to work.
|
|
|
|
|
|
Also, implement support in the draw module. We were hardwiring these
to one for quite a long time...
Currently using a draw_set_edgeflags() function, may be better to push
the argument into the draw_arrays() function. TBD.
|
|
Add facility for draw_vbuf.c to reset these vertex ids on flushes.
Pre-initialize vertex ids correctly.
|
|
This handles the case where bypass_vs is set, but vertices need to go
through the pipeline for some reason - eg unfilled polygon mode.
Demonstrates how to drive the pipeline from inside one of these things.
|
|
|
|
Leaving it until 'run' is bad as the primitive is pretty much state
for some drivers and so needs to get set early. In some drivers
this is used to determine things like vertex format, etc -- by the
time we get to 'run', it's too late to change this.
|
|
Use this to set up hardware rasterization (if your hardware can
do it) or otherwise turn on various tweaks in the draw module.
Currently only hooked up to point biasing code.
|
|
|
|
|
|
- Reduce the number of changes to the normal vertex ordering
- Assume that the hardware knows how to do this in the standard case.
- Add support to the passthrough vcache path.
|
|
|
|
|
|
|
|
|
|
Also:
1. Added an identity_viewport flag to skip viewport transformation when it
has no effect. Might also add an explicit bypass_viewport flag someday.
2. Separate the code for computing clip codes and doing the viewport transform.
Predicate them separately.
Note: even if bypass_vs is set, we still look at the shader to determine the
number of inputs and outputs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The later follows the naming scheme of other limits.
Keep the old definition until all possible usage is updated.
|
|
|
|
|
|
Fixes a very tricky conformance failure.
|
|
|
|
|
|
|
|
|
|
Also, if the app really uses all available sampler/texture units, don't just
die. Just use the last sampler for the pstipple or aaline texture.
|
|
Also, fix another texture refcounting bug.
|
|
This solves problems when the state tracker frees the token array when the
draw module still needs it.
|
|
|
|
|
|
This reverts commit a6d17bf671d6bfbb187a62ba14b9ad08fb5dafe1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Middle-end elements are ushort, but prior to that have to treat all
elements as unsigned to avoid wrapping and/or overruns.
|
|
Trying to put a structure in place that we can actually optimize.
Initially just implementing a passthrough mode, this will fairly soon
replace all the vertex_cache/prim_queue/shader_queue stuff that's so
hard to understand...
Split the vertex processing into a couple of distinct stages:
- Frontend
- Prepares two lists of elements (fetch and draw) to be processed
by the next stage. This stage doesn't fetch or draw vertices, but
makes the decision which to draw. Multiple implementations of this
will implement different strategies, currently just a vcache
implementation.
- MiddleEnd
- Takes the list of fetch elements, fetches them, runs the vertex
shader, cliptest, viewport transform on them to produce a
linear array of vertex_header vertices.
- Passes that list of vertices, plus the draw_elements (which index
into that list) onto the backend
- Backend
- Either the existing primitive/clipping pipeline, or the vbuf_render
hardware backend provided by the driver.
Currently, the middle-end is the old passthrough code, and it build hardware
vertices, not vertex_header vertices as above. It may be that passthrough
is a special case in this respect.
|
|
|
|
|
|
This provides better information about which images in texture object have changed.
Also, call texture_update() from more places previously missed.
|