glapi/dispatch.h is a core Mesa header file. Move the header file to
main/ to make this clear. It also becomes clear after this change that
IN_DRI_DRIVER is only used in core Mesa to enable the remap table.
main/dispatch.c is a glapi source file. It is part of GLAPI_SOURCES in
sources.mak and part of glapi_sources in SConscript. This commit moves
it to glapi/ and renames it to glapi_dispatch.c.
This is similar to the changes to reduce the round-trips in ximage
backend.
When the server supports DRI_InvalidateBuffers, the event is used to
update the server stamp (this path is not tested). Otherwise, the
server stamp is updated when flush_frontbuffer or swap_buffers is
called. This makes sure at least the client APIs get the new buffers
when a new frame is started while skipping all round-trips during the
drawing.
ximage_surface_validate is called several times per frame. This commit
adds the client and server stamps to reduce the round-trips to the
server. The idea is to bump the server stamp when flush_frontbuffer or
swap_buffers is called, and to skip the round-trip when the client stamp
is equal to the server stamp. This makes sure the client APIs get the
new buffers when a new frame is started while skipping all round-trips
during the drawing. To make this work, egl_g3d_validate_context is no
longer called after swap_buffers.
src/glx/dri2.c will call dri2InvalidateBuffers when
DRI2_InvalidateBuffers event is received. This fixes a missing symbol
error, and paves the way for event-based validation.
PRE_EMIT_STATE_BUFSZ accounts for the start 3d, idle, cd/db flush
not for state. The relocs for CB_COLOR0_FRAG & CB_COLOR0_TILE
are part of the render target state.
Due to the u_format.csv changes the unrolled code generator was being used
for formats it didn't support.
Bring some bugfixes from u_format_access.py too.