Age | Commit message (Collapse) | Author |
|
since they'll get reduced to quads sometimes if hw quads are enabled. But this needs more thought, since it looks like clipped primitives will always be emitted as polys, so the reduced primitives for triangles, quads, quads_strips, polys all need to be the same, otherwise get lockups with for instance the olympic test. Render templates would probably need to be changed for this to work.
|
|
|
|
and enable hardware quads on r200 and radeon. samples/prim renders quads
correctly now.
|
|
and ignored for 1D and 2D images.
Need to pass in image dimensions (1,2,3) to the _mesa_image_address() function.
This change gets propogated to some other routines.
Also added new _mesa_image_address[123]d() convenience functions.
|
|
|
|
fog coords (it seems the chip cannot do fog factor computation when not using fragment depth as fog coord source). vtxfmt uses fallback for now (most code present but some magic would be needed if replaying vertices is necessary later on).
|
|
|
|
|
|
coordinate generation. Original code by Roland Schiedegger, with changes by
myself. While here, ensure that the swtcl path does tnl_install_attrs enough
when fog/specular are being (en/dis)abled.
Notable effects:
- projtex test works with TCL and is closer with swtcl (Bugzilla #1461)
- 8/9 squares work in texgenmix instead of 3.
- texcyl "reflect" mode works (GL_SPHERE_MAP is now a fallback -- unclear if the
hardware can actually support it).
- flickering in doom3 replaced by just plain darkness.
- blocktube fixed (Bugzilla #984)
- fixes stex3d
|
|
the current cases for turning it on were insufficient (Bugzilla #1519, 729, 814)
and it has no significant performance impact. Performance tested with quake3
in GL_LINEAR mode both with and without anisotropy, with the workaround always
on or always off.
|
|
(and DrawPixels). The R200, R128, and Unichrome drivers get support
in this commit. Other drivers would be easy enough to add for people
that have the cards.
The DRI (CVS) build will need to be updated to account for the new
source files.
|
|
|
|
(patented) S3TC/DXTC algorithms, but adds an option to dlopen a library module
providing functions to do so. Because it uses dlopen, it is only enabled if
USE_EXTERNAL_DXTN_LIB=1 is defined (which is only in linux-dri config, so far).
It adds support for S3TC to several DRI drivers, and adds a DRI config option to
force enabling S3TC even if the software compression/decompression is
unavailable. This may allow people to use apps that require S3TC even though
they don't have a license to implement the patented material themselves, if
those apps use precompressed textures.
Ideally we would get permission from the current holder of the patents to
implement the algorithm in Mesa, at which point the dlopen mess could go away.
Until then, this allows some to run applications they couldn't otherwise, and
hopefully will provide us with more push to get the final step of getting that
permission done.
|
|
fixes bugzilla #960.
|
|
|
|
happen before any state had been set, causing a hang later on. Fix this by
calling r200Flush instead of FIREVERTICES (which checks if any state has been
emitted but not flushed, before calling Flush) in r200Clear. While here, add
some more debugging info which was useful, and remove an unnecessary
save/restore in BackUpAndEmit.
|
|
between pointers in appropriate types.
Submitted by: Ronny V. Vindenes <s864@ii.uib.no>
|
|
state in a ready-to-emit cmdbuf, which avoids the issue Nicolai Haehnle reported
where the check() could return differently during backup-and-emit than it should
have if it were called at the right time. Move the lit emission before most of
the TCL state emission on r200, which fixes neverball issues.
Tested with: r100/r200 with neverball, tuxracer, chromium, quake3, ipers
|
|
setup that now removed atoms from the atomlist on texture deletion.
|
|
|
|
|
|
|
|
after we check the buffer
|
|
a new cmdbuf, to ensure that state wasn't lost across UNLOCK/LOCK pairs (in the
case of context switching). This was rather inefficient. Instead, after
flushing a cmdbuf, mark the state as needing to be saved on UNLOCK. Then, at
the beginning of flushing a cmdbuf, if we actually have lost the context, go
back and emit a new cmdbuf with the full set of state, before continuing with
the cmdbuf flush. Also, remove the dirty/clean atom lists, since atoms are
emitted in a fixed order these days, and go with a simpler single list.
Provides a 14% improvement in ipers performance in my tests, along with other
apps.
|
|
|
|
support in the r200 driver. Both extensions can be enabled via
options, GL_ARB_vertex_program is on by default, GL_NV_vertex_program
off. Option descriptions are in german, english and french.
From: Philipp Klaus Krause
|
|
|
|
|
|
last commit. I've been convinced by keithw that it's sufficient, and put a note
in the code about it.
Close another race for state in the Clear functions. I made the situation worse
in my last commit, but this should fix things. Might be a slight performance
hit, which could be regained by splitting the R*_FIREVERTICES calls in r*Clear
up so that the EmitState doesn't happen in a separate new cmdbuf.
|
|
errors on r100 and rendering errors and hangs on r200 (same for R100 without
OLD_PACKETS).
If a command buffer filled after some state (EmitState or a VBPNTR write) was
emitted, the lock was grabbed, the buffer flushed, a new buffer prepared, and
the lock dropped. Another client could come in, set its own state as part of
rendering, and when the first client flushed the rendering commands depending
on the previous state, it got the 2nd client's state. This is fixed by checking
for enough space before beginning a set of state emits and rendering, and
flushing the buffer first if so. This guarantees that the buffer won't wrap.
Also, move the "lost_context = 1" from the end of cmdbuf flushing to
UNLOCK_HARDWARE for clarity (at a minimum) that any time the lock is dropped,
state may get overwritten. We don't have enough information at the point of the
LOCK_HARDWARE to reset our state to the last UNLOCK_HARDWARE point in the case
that we did lose our context, but saving the information to rebuild that state
may be a useful optimization (ipers data suggests up to 5%).
|
|
|
|
|
|
|
|
uses the NEW_INTERFACE now so _SOLO isn't necessary anymore.
Tested with the hardware that I own.
|
|
|
|
|
|
|
|
formats. Fix various small bugs with tex env combine mode GL_DOT3_RGB(A)/GL_DOT3_RGB(A)_EXT
|
|
|
|
|
|
|
|
|
|
drivers when DRI_NEW_INTERFACE_ONLY is defined. #ifndef it away in
that situation.
Add a new function, driCheckDriDdxDrmVersion2, that is passed in the
version information that is already supplied to __driCreateNewScreen.
Part of the reason that information is supplied to
__driCreateNewScreen is so that the driver doesn't have to make those
calls to get it!
Modify all drivers that support the new interface to use the new
function instead of the old. As soon as all drivers support the new
interface, driCheckDriDdxDrmVersion can be removed.
|
|
|
|
workarounds only for r200, not derivatives.
|
|
drm_handle_t, drm_context_t, drm_drawable_t, drm_magic_t.
|
|
properly block with '#ifndef DRI_NEW_INTERFACE_ONLY'.
|
|
interface that are not *strictly* part of the old interface were
changed. Replace GetDrawableInfo type (dri_util.h) with
PFNGLXGETDRAWABLEINFOPROC (dri_interface.h). Wrap __driCreateScreen
(in drivers that use the new interface) with '#ifndef
DRI_NEW_INTERFACE_ONLY'.
|
|
unused R200_OLD_PACKET macro
|
|
|