17b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulName
27b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
37b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    MESA_copy_sub_buffer
47b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
57b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulName Strings
67b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
77b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    GLX_MESA_copy_sub_buffer
87b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
97b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulContact
107b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
11d3b09fe29b112ddf114d14849e917befafd8387aBrian Paul    Brian Paul (brian.paul 'at' tungstengraphics.com)
127b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
137b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulStatus
147b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
157b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    Shipping since Mesa 2.6 in February, 1998.
167b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
177b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulVersion
187b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
191f47388dfebf15f610993f046e1f945024c8fc3cIan Romanick    Last Modified Date:  12 January 2009
207b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
217b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulNumber
227b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
23dd18a4f335984081ccf5c2145b7983168ab3e074Brian Paul    215
247b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
257b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulDependencies
267b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
277b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    OpenGL 1.0 or later is required.
287b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    GLX 1.0 or later is required.
297b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
307b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulOverview
317b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
327b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    The glxCopySubBufferMESA() function copies a rectangular region
337b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    of the back color buffer to the front color buffer.  This can be
347b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    used to quickly repaint 3D windows in response to expose events
357b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    when the back color buffer cannot be damaged by other windows.
367b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
377b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulIP Status
387b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
397b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    Open-source; freely implementable.
407b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
417b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulIssues
427b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
437b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    None.
447b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
457b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulNew Procedures and Functions
467b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
477b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
48dd18a4f335984081ccf5c2145b7983168ab3e074Brian Paul			       int x, int y, int width, int height );
497b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
507b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulNew Tokens
517b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
527b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    None.
537b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
547b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulAdditions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
557b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
567b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    Add to section 3.3.10 Double Buffering:
577b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
587b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    The function
597b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
60dd18a4f335984081ccf5c2145b7983168ab3e074Brian Paul	 void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
61dd18a4f335984081ccf5c2145b7983168ab3e074Brian Paul				    int x, int y, int width, int height );
627b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
637b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    may be used to copy a rectangular region of the back color buffer to
647b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    the front color buffer.  This can be used to quickly repaint 3D windows
657b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    in response to expose events when the back color buffer cannot be
667b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    damaged by other windows.
677b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
687b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    <x> and <y> indicates the lower-left corner of the region to copy and
697b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    <width> and <height> indicate the size in pixels.  Coordinate (0,0)
707b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    corresponds to the lower-left pixel of the window, like glReadPixels.
71dd18a4f335984081ccf5c2145b7983168ab3e074Brian Paul
721f47388dfebf15f610993f046e1f945024c8fc3cIan Romanick    If dpy and drawable are the display and drawable for the calling
731f47388dfebf15f610993f046e1f945024c8fc3cIan Romanick    thread's current context, glXCopySubBufferMESA performs an
741f47388dfebf15f610993f046e1f945024c8fc3cIan Romanick    implicit glFlush before it returns.  Subsequent OpenGL commands
751f47388dfebf15f610993f046e1f945024c8fc3cIan Romanick    may be issued immediately after calling glXCopySubBufferMESA, but
761f47388dfebf15f610993f046e1f945024c8fc3cIan Romanick    are not executed until the copy is completed. 
771f47388dfebf15f610993f046e1f945024c8fc3cIan Romanick
787b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulGLX Protocol
797b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
807b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    None at this time.  The extension is implemented in terms of ordinary
817b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    Xlib protocol inside of Mesa.
827b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
837b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulErrors
847b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
857b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    None.
867b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
877b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulNew State
887b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
897b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul    None.
907b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
917b2c0f9148eb7eb30326173899ed366fcef8d437Brian PaulRevision History
927b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
931f47388dfebf15f610993f046e1f945024c8fc3cIan Romanick    12 January 2009 Ian Romanick - Added language about implicit flush
941f47388dfebf15f610993f046e1f945024c8fc3cIan Romanick                                   and command completion.
951f47388dfebf15f610993f046e1f945024c8fc3cIan Romanick    8 June 2000     Brian Paul   - initial specification
967b2c0f9148eb7eb30326173899ed366fcef8d437Brian Paul
97