This prevents situations where the server doesn't use the target the
client thinks it does, usually resulting in the texture being sampled as all
white.
The previous scheme didn't work when the client didn't create the core drawable,
e.g. the root or composite overlay window. Use refcounting via special client
resources to fix that.
This is to avoid issues with redirected windows which are located partly or
fully outside of a screen edge, resulting in unusual cliprects which the 3D
drivers generally can't handle. The symptoms in such cases would be incorrect
rendering or even crashes or hangs.
When available, use the 2D driver texOffsetStart hook and the 3D driver
setTexOffset hook to save the overhead of passing the pixmap data to
glTex(Sub)Image.
The basic idea is to update the driver specific 'offset' for bound pixmaps
before dispatching a GLX render request and to flush immediately afterwards
if there are any pixmaps bound. This should ensure that the 3D driver can
use pixmaps for texturing directly regardless of the X server moving them
around.
As the driver EnterVT function generally re-enables the hardware and
prepares it for rendering, it must be called before any gl functions are
called which could touch the hardware.
__glXDRIleaveServer() and _enterServer() used to call DRIDoBlockHandler
(resp DRIDoWakeupHandler) directly. They are now calling DRIBlockHandler
(resp DRIWakeupHandler) to account for driver specific block/wakeup
hooks.
- Only update when pixmap content actually change;
- Only update the regions that acutally changed.
This is a worthwhile optimization, but it doesn't completely remove
the bottleneck, as mesa still uploads then entire texture whenever
it changes.
Add GL_ARB_texture_non_power_of_two, GL_EXT_framebuffer_object and
GL_NV_texture_env_combine4 extensions.
Add __GLXcontext destructor and flush context cache there and on
loseCurrent.
Chain back to new __GLXcontext destructor. (__glXMesaContextForceCurrent):
Set render table on forceCurrent. (init_screen_visuals): Index pVis
array correctly. (GlxGetMesaProvider): Add this.
Hook up FBO marshalling.