There is an errata for Broadwater that threads don't have the instruction/loop
mask stacks initialized on thread spawn. In single program flow mode, those
stacks are not writable, so we can't initialize them. However, they do get
read during ELSE and ENDIF instructions. So, instead, replace branch
instructions in single program flow mode with predicated jumps (ADD to the ip
register), avoiding use of the more complicated branch instructions that may
fail. This is also a minor optimization as no ENDIF equivalent is necessary.
Signed-off-by: Keith Packard <keithp@neko.keithp.com>
With this, tools like ximagesrc in gstreamer correctly see updates from GL
rendering. Support requires that the Xdamage library be current (but will be
disabled if not present) plus a new X Server with support for the new
XDamagePost request. libGL now has a new interface version, and also links
against libXdamage and libXfixes to support it, but backwards compatibility
is retained.
Currently, all drivers report damage at SwapBuffers time through common code --
front buffer rendering doesn't result in damage being reported. Also, the
damage is against the root window, as our drivers don't yet render to backing
store when they should (composited environments).
The files indirect_reqsize.c and indirect_reqsize.h were missing from
the list of files to be generated for the server. Add them back to
the list. Also, update the INDENT_FLAGS to prevent conversion of
'GLbyte *pc' to 'GLbyte * pc' in function prototypes.
This fixes mis-rendering if back/depth fail to get set up as tiled. While it
probably won't ever be the case now that the pitch limits are loosened, this is
still the right thing to do.
We can't wait on NV_PGRAPH_STATUS. We don't have the regs mapped, and there's
no guarantee that we'll catch PGRAPH idle when multiple channels are active.