The files are the same except for swtnl support on nv40 and for
texture cache flushing on nv40.
Unify them, and use a macro to define 4 versions of render_states,
for all combinations of nvfx and hwtnl/swtnl.
Will be used to hold source files unified between nv30 and nv40.
Eventually all nv30 and nv40 code will be moved there and the
nv30 and nv40 directories will be removed.
This patch unifies nv[34]0_screen.h, nv[34]0_context.h and
nv[34]0_state.h
The unified files are put in a new "nvfx" directory.
nv30_context.h and nv40_context.h still exist to hold the function
prototypes and include nvfx_context.h
nv[34]0_screen.h and nv[34]0_state.h are deleted, replaced by the
unified versions.
nv40 includes some extra fields for swtnl and user clip planes
support.
These fields will be unused on nv30 until that functionality gets
added to it too (by unification with nv40).
It was decided to just use the NV34TCL_ constants for constants
common between nv30 and nv40, and deprecate the NV40TCL_ versions.
This patch changes the nv40 driver to use NV34TCL_ constants for
common functionality.
This reduces differences between nv30 and nv40 to ease further
unification.
It seems that x86-64 with tls will fail to compile or load due to a missining
gl_dispatch_functions_start symbol. Not changing though, since this is how it
used to be and cannot test.
Consider this rendering sequence
* render to the back buffer
* swap buffers
* read from the front buffer
The front buffer is expected to have the contents of the back buffer.
This basically adds a static xmesa_display to collect per-display static
variables in xm_api.c. Multiple display support is still missing, but
this is a step forward.
E.g. when mapping buffers could flush CS or cause waiting
for a busy buffer.
The side effect of this is it also fixes progs/demos/arbocclude however
a separate fix should be proposed to address this issue in other cases
it might occur.
Now that transfers are context objects their sideeffects must happen in
order when used by the state tracker, but that synchronization must be
bypassed when used inside the driver, or it would cause infinite
recursion.