Age | Commit message (Collapse) | Author |
|
Changes in v3:
- If we can do a copy, don't try to get an emit func, as that can assert(0)
Changes in v2:
- Add comment regarding copy_size
When used in GPU drivers, translate can be used to simultaneously
perform a gather operation, and convert away from unsupported formats.
In this use case, input and output formats will often be identical: clearly
it would make sense to use a memcpy in this case.
Instead, translate will insist to convert to and from 32-bit floating point
numbers.
This is not only extremely expensive, but it also loses precision for
32/64-bit integers and 64-bit floating point numbers.
This patch changes translate_generic to just use memcpy if the formats are
identical, non-blocked, and with an integral number of bytes per pixel (note
that all sensible vertex formats are like this).
|
|
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.
|
|
|
|
Signed-off-by: Marek Olšák <maraeo@gmail.com>
|
|
This changes r300_destroy_context() so it can be called
on a partially-initialized context, and uses it when
r300_create_context() hits a fatal error.
This makes sure r300_create_context() doesn't leak memory
or neglect to call r300_update_num_contexts() when it fails.
Signed-off-by: Marek Olšák <maraeo@gmail.com>
|
|
This fixes a potential bug if (has_hyperz) is false
(it would still init the atom as if has_hyperz were true).
Signed-off-by: Marek Olšák <maraeo@gmail.com>
|
|
|
|
|
|
Check for these and route them to a dedicated handler with one fewer
levels of recursive rasterization.
|
|
|
|
No need to calculate these values any longer, nor to store them in the
bin data. Improves isosurf a bit more, 115->123 fps.
|
|
For 16 and 64 pixel levels, calculate a mask which is linear in x and
y (ie not in the swizzle layout).
When iterating over full and partial masks, figure out position by
manipulating the bit number set in the mask, rather than relying on
postion arrays.
Similarly, calculate the lower-level c values from dcdx, dcdy and the
position rather than relying on the step array.
|
|
|
|
|
|
No noticable slowdown with isosurf.
|
|
isosurf 95->115 fps just by exchanging the two inner loops in this
function...
|
|
|
|
Per Jakob's request. Not super-pretty, but it's a good point for modding
later.
|
|
|
|
|
|
|
|
This skips the blitter clear path entirely if the color is not cleared and
the depth+stencil is cleared with the ZMask.
|
|
z_fastfill -> dirty_zmask[level].
|
|
|
|
|
|
|
|
This commit silences the printing off most of the debug information
when running debug builds. The big culprits are: the tgsi sanity checker
that gets run on all shaders on debug; all the options; and
finaly the cpu caps printer.
|
|
|
|
|
|
|
|
|
|
This logic duplicates the one in p_config.h, so remove it and adjust
the only two places that were using it.
|
|
It causes a very ugly corruption on the Earth's halo on Google Earth.
|
|
|
|
This is based on a patch by nobled <nobled@dreamwidth.org> and allows the TFP
extension to be enabled for DRISW also. This patch does not enable TFP for DRISW
though, because testing on xephyr segfaults here (for both classic and gallium):
Program received signal SIGSEGV, Segmentation fault.
0x00786a4a in _mesa_GenTextures (n=1, textures=0xbfffee4c) at main/texobj.c:788
788 ASSERT_OUTSIDE_BEGIN_END(ctx);
(gdb)
(gdb) where
\#0 0x00786a4a in _mesa_GenTextures (n=1, textures=0xbfffee4c) at main/texobj.c:788
\#1 0x0817a004 in __glXDisp_GenTextures ()
\#2 0x08168498 in __glXDispatch ()
\#3 0x0808b6ce in Dispatch ()
\#4 0x08084435 in main ()
The TFP code is generic except for the teximage call. We need to verify that
DRISW correclty implements whatever hook teximage finally calls.
|
|
|
|
|
|
It doesn't work well with Hyper-Z, so put the burden on the state tracker.
|