15bd8deadSopenharmony_ciName 
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    NV_video_output
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings 
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GLX_NV_video_out
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact 
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Thomas True, Nvidia, ttrue@nvidia.com
125bd8deadSopenharmony_ci    Ian Williams, Nvidia, iwilliams@nvidia.com
135bd8deadSopenharmony_ci    Martin Schwarzer, Nvidia, mschwarzer@nvidia.com
145bd8deadSopenharmony_ci    Andy Ritger, Nvidia, aritger@nvidia.com
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ciStatus 
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ci    Shipping since 2004 for NVIDIA Quadro SDI (Serial Digital Interface)
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ciVersion 
215bd8deadSopenharmony_ci    Last Modified:      2014/06/04
225bd8deadSopenharmony_ci    NVIDIA Revision:    8
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ciNumber 
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ci    348
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ciDependencies 
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ci    OpenGL 1.1 is required.
315bd8deadSopenharmony_ci    GLX 1.3 is required.
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ciOverview 
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ci    This extension permits a color and or depth buffer of a pbuffer to
365bd8deadSopenharmony_ci    be used for rendering and subsequent video output.  After a pbuffer 
375bd8deadSopenharmony_ci    has been bound to a video device, subsequent color and or depth 
385bd8deadSopenharmony_ci    rendering into that buffer may be displayed on the video output.
395bd8deadSopenharmony_ci
405bd8deadSopenharmony_ci    This is intended for use with NVIDIA products such as the Quadro FX
415bd8deadSopenharmony_ci    4000 SDI.
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ciIssues 
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ci 1. Should the new pbuffer attributes be available through GL queries? 
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    No, like other pbuffer attributes you need to query them through the 
485bd8deadSopenharmony_ci    window system extension. This extension does not make any changes to 
495bd8deadSopenharmony_ci    OpenGL. 
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ci 2. Should glXSendPbufferToVideoNV require that the pbuffer be current?
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ciImplementation Notes
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci 1. Any created pbuffers must be the same resolution as that specified
565bd8deadSopenharmony_ci    by the state of the video output device.  The current state of the
575bd8deadSopenharmony_ci    video output device can be queried via the NV-CONTROL X extension.
585bd8deadSopenharmony_ci
595bd8deadSopenharmony_ci 2. Applications may use a single pbuffer or a collection of pbuffers
605bd8deadSopenharmony_ci    to send frames/fields to a video device.  In the first case, an
615bd8deadSopenharmony_ci    application should block on the call to glXSendPbufferToVideoNV() to
625bd8deadSopenharmony_ci    ensure synchronization.  In the second case, an application should
635bd8deadSopenharmony_ci    utilize glXGetVideoInfoNV() in order to query vblank and
645bd8deadSopenharmony_ci    buffer counters for synchronization.
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ciIntended Usage 
675bd8deadSopenharmony_ci
685bd8deadSopenharmony_ci    1) Configure the video output device via the NV-CONTROL X extension.
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ci    2) Use glXGetFBConfigs or glXChooseFBConfig to find a suitable
715bd8deadSopenharmony_ci       FBConfig for rendering images.  GLX_DRAWABLE_TYPE must have
725bd8deadSopenharmony_ci       GLX_PBUFFER_BIT set.  The per-component pixel depth of the pbuffer
735bd8deadSopenharmony_ci       must be equal to or greater than the per-component depth of the
745bd8deadSopenharmony_ci       video output.
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci    3) Create a GLXPbuffer for each stream of video by calling
775bd8deadSopenharmony_ci       glXCreatePbuffer.  Set the width and height for each GLXPbuffer
785bd8deadSopenharmony_ci       to match that of the intended video output device.
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    4) Call glXGetVideoDeviceNV to retrieve the handles for all 
815bd8deadSopenharmony_ci       video devices available.  A video device handle is required
825bd8deadSopenharmony_ci       for each video stream.  glXGetVideoDeviceNV will lock the
835bd8deadSopenharmony_ci       video device for exclusive use by this GLX client.  The NV-CONTROL
845bd8deadSopenharmony_ci       X extension will not be able to update video out attributes until
855bd8deadSopenharmony_ci       the video device is released with glXReleaseVideoDeviceNV.
865bd8deadSopenharmony_ci
875bd8deadSopenharmony_ci    5) Call glXBindVideoImageNV to bind each GLXPbuffer to a
885bd8deadSopenharmony_ci       corresponding video device handle.  Multiple pbuffers can
895bd8deadSopenharmony_ci       be bound, at the same time, to the same video device.
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci    6) Render the current frame/field for each stream to one of the bound
925bd8deadSopenharmony_ci       GLXPbuffers. Once rendering is complete, call
935bd8deadSopenharmony_ci       glXSendPbufferToVideoNV to send each frame/field to the video
945bd8deadSopenharmony_ci       device.
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci    7) Render subsequent video frames or fields calling
975bd8deadSopenharmony_ci       glXSendPbufferToVideoNV() at the completion of rendering for
985bd8deadSopenharmony_ci       each frame/field.
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ci    8) Call glXReleaseVideoImageNV to unbind each GLXPbuffer
1015bd8deadSopenharmony_ci       from its associated video device.
1025bd8deadSopenharmony_ci
1035bd8deadSopenharmony_ci    9) Call glXReleaseVideoDeviceNV to release the video device.
1045bd8deadSopenharmony_ci
1055bd8deadSopenharmony_ciNew Types
1065bd8deadSopenharmony_ci    
1075bd8deadSopenharmony_ci    /*
1085bd8deadSopenharmony_ci     * GLXVideoDeviceNV is an opaque handle to a video device.
1095bd8deadSopenharmony_ci     */
1105bd8deadSopenharmony_ci    typedef unsigned int GLXVideoDeviceNV;
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci
1135bd8deadSopenharmony_ciNew Procedures and Functions 
1145bd8deadSopenharmony_ci
1155bd8deadSopenharmony_ci    int glXGetVideoDeviceNV(Display *dpy, int screen, int numVideoDevices,
1165bd8deadSopenharmony_ci                            GLXVideoDeviceNV *pVideoDevice);
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci    int glXReleaseVideoDeviceNV(Display *dpy, int screen,
1195bd8deadSopenharmony_ci                                GLXVideoDeviceNV VideoDevice);
1205bd8deadSopenharmony_ci
1215bd8deadSopenharmony_ci    int glXBindVideoImageNV(Display *dpy, GLXVideoDeviceNV VideoDevice,
1225bd8deadSopenharmony_ci                            GLXPbuffer pbuf, int iVideoBuffer);
1235bd8deadSopenharmony_ci
1245bd8deadSopenharmony_ci    int glXReleaseVideoImageNV(Display *dpy, GLXPbuffer pbuf);
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ci    int glXSendPbufferToVideoNV(Display *dpy, GLXPbuffer pbuf,
1275bd8deadSopenharmony_ci                                int iBufferType,
1285bd8deadSopenharmony_ci                                unsigned long *pulCounterPbuffer,
1295bd8deadSopenharmony_ci                                GLboolean bBlock);
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ci    int glXGetVideoInfoNV(Display *dpy, int screen,
1325bd8deadSopenharmony_ci                          GLXVideoDeviceNV VideoDevice,
1335bd8deadSopenharmony_ci                          unsigned long *pulCounterOutputPbuffer,
1345bd8deadSopenharmony_ci                          unsigned long *pulCounterOutputVideo);
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ciNew Tokens 
1375bd8deadSopenharmony_ci
1385bd8deadSopenharmony_ci    Accepted by the <iVideoBuffer> parameter of glXBindVideoImageNV:
1395bd8deadSopenharmony_ci
1405bd8deadSopenharmony_ci        GLX_VIDEO_OUT_COLOR_NV                          0x20C3
1415bd8deadSopenharmony_ci        GLX_VIDEO_OUT_ALPHA_NV                          0x20C4
1425bd8deadSopenharmony_ci        GLX_VIDEO_OUT_DEPTH_NV                          0x20C5
1435bd8deadSopenharmony_ci        GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV                0x20C6
1445bd8deadSopenharmony_ci        GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV                0x20C7
1455bd8deadSopenharmony_ci
1465bd8deadSopenharmony_ci    Accepted by the <iBufferType> parameter of glXSendPbufferToVideoNV:
1475bd8deadSopenharmony_ci
1485bd8deadSopenharmony_ci        GLX_VIDEO_OUT_FRAME_NV                          0x20C8
1495bd8deadSopenharmony_ci        GLX_VIDEO_OUT_FIELD_1_NV                        0x20C9
1505bd8deadSopenharmony_ci        GLX_VIDEO_OUT_FIELD_2_NV                        0x20CA
1515bd8deadSopenharmony_ci        GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV             0x20CB
1525bd8deadSopenharmony_ci        GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV             0x20CC
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation) 
1555bd8deadSopenharmony_ci
1565bd8deadSopenharmony_ci    None. 
1575bd8deadSopenharmony_ci
1585bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization) 
1595bd8deadSopenharmony_ci
1605bd8deadSopenharmony_ci    None. 
1615bd8deadSopenharmony_ci
1625bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 1.2.1 Specification (Per-Fragment 
1635bd8deadSopenharmony_ciOperations and the Frame Buffer) 
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ci    None. 
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions) 
1685bd8deadSopenharmony_ci
1695bd8deadSopenharmony_ci    None. 
1705bd8deadSopenharmony_ci
1715bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 1.2.1 Specification (State and State 
1725bd8deadSopenharmony_ciRequests) 
1735bd8deadSopenharmony_ci
1745bd8deadSopenharmony_ci    None. 
1755bd8deadSopenharmony_ci
1765bd8deadSopenharmony_ci
1775bd8deadSopenharmony_ciAdditions to the GLX 1.3 Specification
1785bd8deadSopenharmony_ci
1795bd8deadSopenharmony_ci    [Add new section, Video Out]
1805bd8deadSopenharmony_ci
1815bd8deadSopenharmony_ci    Video out functions permit color and depth buffers from a
1825bd8deadSopenharmony_ci    pbuffer to be sent to a video output device.
1835bd8deadSopenharmony_ci    
1845bd8deadSopenharmony_ci    The command
1855bd8deadSopenharmony_ci
1865bd8deadSopenharmony_ci        int glXGetVideoDeviceNV(Display *dpy, int screen, int numVideoDevices,
1875bd8deadSopenharmony_ci                                GLXVideoDeviceNV *pVideoDevice);
1885bd8deadSopenharmony_ci
1895bd8deadSopenharmony_ci    fills in the array <pVideoDevice> with up to <numVideoDevices>
1905bd8deadSopenharmony_ci    handles to the available video devices.  <numVideoDevices> must be
1915bd8deadSopenharmony_ci    non-negative, and <pVideoDevice> must not be NULL.
1925bd8deadSopenharmony_ci
1935bd8deadSopenharmony_ci    It is not an error if the number of available video devices is larger
1945bd8deadSopenharmony_ci    that <numVideoDevices>; in that case the first <numVideoDevices>
1955bd8deadSopenharmony_ci    device handles are returned.  It is an error if <numVideoDevices>
1965bd8deadSopenharmony_ci    is larger than the number of available video devices.  The order of
1975bd8deadSopenharmony_ci    devices returned in <pVideoDevice> is implementation dependent.
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ci    If glXGetVideoDeviceNV succeeds, 0 is returned.  Otherwise, a non-zero
2005bd8deadSopenharmony_ci    error code is returned.
2015bd8deadSopenharmony_ci
2025bd8deadSopenharmony_ci
2035bd8deadSopenharmony_ci    The command
2045bd8deadSopenharmony_ci
2055bd8deadSopenharmony_ci        int glXReleaseVideoDeviceNV(Display *dpy, int screen,
2065bd8deadSopenharmony_ci                                    GLXVideoDeviceNV VideoDevice);
2075bd8deadSopenharmony_ci
2085bd8deadSopenharmony_ci    releases all resources associated with <VideoDevice>.
2095bd8deadSopenharmony_ci
2105bd8deadSopenharmony_ci    If glXReleaseVideoDeviceNV succeeds, 0 is returned.  Otherwise,
2115bd8deadSopenharmony_ci    a non-zero error code is returned.
2125bd8deadSopenharmony_ci
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ci    The command
2155bd8deadSopenharmony_ci
2165bd8deadSopenharmony_ci        int glXBindVideoImageNV(Display *dpy, GLXVideoDeviceNV VideoDevice,
2175bd8deadSopenharmony_ci                                GLXPbuffer pbuf, int iVideoBuffer);
2185bd8deadSopenharmony_ci
2195bd8deadSopenharmony_ci    binds <pbuf> to <VideoDevice> for subsequent scanout where
2205bd8deadSopenharmony_ci    <iVideoBuffer> specifies that <pbuf> contains color, alpha and/or
2215bd8deadSopenharmony_ci    depth data.  Valid values for <iVideoBuffer> are:
2225bd8deadSopenharmony_ci
2235bd8deadSopenharmony_ci        GLX_VIDEO_OUT_COLOR_NV                          0x20C3
2245bd8deadSopenharmony_ci        GLX_VIDEO_OUT_ALPHA_NV                          0x20C4
2255bd8deadSopenharmony_ci        GLX_VIDEO_OUT_DEPTH_NV                          0x20C5
2265bd8deadSopenharmony_ci        GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV                0x20C6
2275bd8deadSopenharmony_ci        GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV                0x20C7
2285bd8deadSopenharmony_ci
2295bd8deadSopenharmony_ci    <pbuf> cannot be None, and <VideoDevice> must be a VideoDevice
2305bd8deadSopenharmony_ci    returned by glXGetVideoDeviceNV().
2315bd8deadSopenharmony_ci
2325bd8deadSopenharmony_ci
2335bd8deadSopenharmony_ci    A pbuffer can only be bound to one GLXVideoDeviceNV at a time.
2345bd8deadSopenharmony_ci    If <pbuf> is already bound to a different GLXVideoDeviceNV, then
2355bd8deadSopenharmony_ci    glXBindVideoImageNV will fail.
2365bd8deadSopenharmony_ci
2375bd8deadSopenharmony_ci
2385bd8deadSopenharmony_ci    If glXBindVideoImageNV succeeds, 0 is returned.  Otherwise, 
2395bd8deadSopenharmony_ci    a non-zero error code is returned.
2405bd8deadSopenharmony_ci
2415bd8deadSopenharmony_ci
2425bd8deadSopenharmony_ci    The command
2435bd8deadSopenharmony_ci
2445bd8deadSopenharmony_ci        int glXReleaseVideoImageNV(Display *dpy, GLXPbuffer pbuf);
2455bd8deadSopenharmony_ci
2465bd8deadSopenharmony_ci    releases <pbuf> from a previously bound video device.  <pbuf> may
2475bd8deadSopenharmony_ci    not be None.
2485bd8deadSopenharmony_ci
2495bd8deadSopenharmony_ci    If glXReleaseVideoImageNV succeeds, 0 is returned.  Otherwise,
2505bd8deadSopenharmony_ci    a non-zero error code is returned.
2515bd8deadSopenharmony_ci
2525bd8deadSopenharmony_ci
2535bd8deadSopenharmony_ci    The command
2545bd8deadSopenharmony_ci
2555bd8deadSopenharmony_ci        int glXSendPbufferToVideoNV(Display *dpy, GLXPbuffer pbuf,
2565bd8deadSopenharmony_ci                                    int iBufferType,
2575bd8deadSopenharmony_ci                                    unsigned long *pulCounterPbuffer,
2585bd8deadSopenharmony_ci                                    Bool bBlock);
2595bd8deadSopenharmony_ci
2605bd8deadSopenharmony_ci    indicates that rendering to the <pbuf> is complete and that the
2615bd8deadSopenharmony_ci    completed frame/field contained with <pbuf> is ready for scan out by
2625bd8deadSopenharmony_ci    the video device where <iBufferType> specifies that <pbuf> contains
2635bd8deadSopenharmony_ci    the first field, second field or a complete frame.  Valid values
2645bd8deadSopenharmony_ci    for <iBufferType> are:
2655bd8deadSopenharmony_ci
2665bd8deadSopenharmony_ci        GLX_VIDEO_OUT_FRAME_NV                          0x20C8
2675bd8deadSopenharmony_ci        GLX_VIDEO_OUT_FIELD_1_NV                        0x20C9
2685bd8deadSopenharmony_ci        GLX_VIDEO_OUT_FIELD_2_NV                        0x20CA
2695bd8deadSopenharmony_ci
2705bd8deadSopenharmony_ci    The color buffer controlled by glReadBuffer is used as the color
2715bd8deadSopenharmony_ci    buffer input to glXSendPbufferToVideoNV().  <pbuf> cannot be None.
2725bd8deadSopenharmony_ci    The <bBlock> argument specifies whether or not the call should
2735bd8deadSopenharmony_ci    block until scan out of the specified frame/field is complete.
2745bd8deadSopenharmony_ci    <pulCounterPbuffer> returns the total number of frames/fields sent
2755bd8deadSopenharmony_ci    to the video device.
2765bd8deadSopenharmony_ci
2775bd8deadSopenharmony_ci    If glXSendPbufferToVideoNV succeeds, 0 is returned.  Otherwise,
2785bd8deadSopenharmony_ci    a non-zero error code is returned.
2795bd8deadSopenharmony_ci
2805bd8deadSopenharmony_ci
2815bd8deadSopenharmony_ci    The command
2825bd8deadSopenharmony_ci
2835bd8deadSopenharmony_ci        int glXGetVideoInfoNV(GLXVideoDeviceNV VideoDevice,
2845bd8deadSopenharmony_ci                              unsigned long *pulCounterOutputPbuffer,
2855bd8deadSopenharmony_ci                              unsigned long *pulCounterOutputVideo);
2865bd8deadSopenharmony_ci
2875bd8deadSopenharmony_ci    returns in <pulCounterOutputVideo> the absolute count of vertical
2885bd8deadSopenharmony_ci    blanks on <VideoDevice> since transfers were started while
2895bd8deadSopenharmony_ci    <pulCounterOutputPbuffer> returns the count of the current pbuffer
2905bd8deadSopenharmony_ci    being scanned out by <VideoDevice>.
2915bd8deadSopenharmony_ci
2925bd8deadSopenharmony_ci    If glXGetVideoInfoNV succeeds, 0 is returned.  Otherwise, a non-zero
2935bd8deadSopenharmony_ci    error code is returned.
2945bd8deadSopenharmony_ci
2955bd8deadSopenharmony_ci
2965bd8deadSopenharmony_ciGLX Protocol
2975bd8deadSopenharmony_ci
2985bd8deadSopenharmony_ci    Six new GLX protocol commands are added.
2995bd8deadSopenharmony_ci
3005bd8deadSopenharmony_ci    GetVideoDeviceNV
3015bd8deadSopenharmony_ci        1       CARD8       opcode (X assigned)
3025bd8deadSopenharmony_ci        1       17          GLX opcode (glXVendorPrivateWithReply)
3035bd8deadSopenharmony_ci        2       5           request length
3045bd8deadSopenharmony_ci        4       1313        vendor specific opcode
3055bd8deadSopenharmony_ci        4                   unused
3065bd8deadSopenharmony_ci        4       CARD32      num_devices
3075bd8deadSopenharmony_ci        4       CARD32      screen
3085bd8deadSopenharmony_ci      =>
3095bd8deadSopenharmony_ci        1       CARD8       reply
3105bd8deadSopenharmony_ci        1                   unused
3115bd8deadSopenharmony_ci        2       CARD16      sequence number
3125bd8deadSopenharmony_ci        4       n           reply length
3135bd8deadSopenharmony_ci        4       CARD32      status
3145bd8deadSopenharmony_ci        4       CARD32      num_devices
3155bd8deadSopenharmony_ci        16                  unused
3165bd8deadSopenharmony_ci        4 * n   CARD32      video_device handles
3175bd8deadSopenharmony_ci
3185bd8deadSopenharmony_ci    Where n is the number of device handles returned.
3195bd8deadSopenharmony_ci
3205bd8deadSopenharmony_ci
3215bd8deadSopenharmony_ci    ReleaseVideoDeviceNV
3225bd8deadSopenharmony_ci        1       CARD8       opcode (X assigned)
3235bd8deadSopenharmony_ci        1       17          GLX opcode (glXVendorPrivateWithReply)
3245bd8deadSopenharmony_ci        2       5           request length
3255bd8deadSopenharmony_ci        4       1314        vendor specific opcode
3265bd8deadSopenharmony_ci        4                   unused
3275bd8deadSopenharmony_ci        4       CARD32      video_device
3285bd8deadSopenharmony_ci        4       CARD32      screen
3295bd8deadSopenharmony_ci      =>
3305bd8deadSopenharmony_ci        1       CARD8       reply
3315bd8deadSopenharmony_ci        1                   unused
3325bd8deadSopenharmony_ci        2       CARD16      sequence number 
3335bd8deadSopenharmony_ci        4       0           reply length
3345bd8deadSopenharmony_ci        4       CARD32      status
3355bd8deadSopenharmony_ci        20                  unused
3365bd8deadSopenharmony_ci
3375bd8deadSopenharmony_ci
3385bd8deadSopenharmony_ci    BindVideoImageNV
3395bd8deadSopenharmony_ci        1       CARD8       opcode (X assigned)
3405bd8deadSopenharmony_ci        1       17          GLX opcode (glXVendorPrivateWithReply)
3415bd8deadSopenharmony_ci        2       6           request length
3425bd8deadSopenharmony_ci        4       1315        vendor specific opcode
3435bd8deadSopenharmony_ci        4                   unused
3445bd8deadSopenharmony_ci        4       GLX_PBUFFER pbuffer
3455bd8deadSopenharmony_ci        4       CARD32      video_device
3465bd8deadSopenharmony_ci        4       CARD32      video_buffer
3475bd8deadSopenharmony_ci      =>
3485bd8deadSopenharmony_ci        1       CARD8       reply
3495bd8deadSopenharmony_ci        1                   unused
3505bd8deadSopenharmony_ci        2       CARD16      sequence number
3515bd8deadSopenharmony_ci        4       0           reply length
3525bd8deadSopenharmony_ci        4       CARD32      status
3535bd8deadSopenharmony_ci        20                  unused
3545bd8deadSopenharmony_ci
3555bd8deadSopenharmony_ci
3565bd8deadSopenharmony_ci    ReleaseVideoImageNV
3575bd8deadSopenharmony_ci        1       CARD8       opcode (X assigned)
3585bd8deadSopenharmony_ci        1       17          GLX opcode (glXVendorPrivateWithReply)
3595bd8deadSopenharmony_ci        2       4           request length
3605bd8deadSopenharmony_ci        4       1316        vendor specific opcode
3615bd8deadSopenharmony_ci        4       GLX_PBUFFER pbuffer
3625bd8deadSopenharmony_ci      =>
3635bd8deadSopenharmony_ci        1       CARD8       reply
3645bd8deadSopenharmony_ci        1                   unused
3655bd8deadSopenharmony_ci        2       CARD16      sequence number
3665bd8deadSopenharmony_ci        4       0           reply length
3675bd8deadSopenharmony_ci        4       CARD32      status
3685bd8deadSopenharmony_ci        20                  unused
3695bd8deadSopenharmony_ci
3705bd8deadSopenharmony_ci
3715bd8deadSopenharmony_ci    SendPbufferToVideoNV
3725bd8deadSopenharmony_ci        1       CARD8       opcode (X assigned)
3735bd8deadSopenharmony_ci        1       17          GLX opcode (glXVendorPrivateWithReply)
3745bd8deadSopenharmony_ci        2       6           request length
3755bd8deadSopenharmony_ci        4       1317        vendor specific opcode
3765bd8deadSopenharmony_ci        4                   unused
3775bd8deadSopenharmony_ci        4       GLX_PBUFFER pbuffer
3785bd8deadSopenharmony_ci        4       CARD32      buffer_type
3795bd8deadSopenharmony_ci        1       BOOL        block
3805bd8deadSopenharmony_ci        1                   unused
3815bd8deadSopenharmony_ci        2                   unused
3825bd8deadSopenharmony_ci      =>
3835bd8deadSopenharmony_ci        1       CARD8       reply
3845bd8deadSopenharmony_ci        1                   unused
3855bd8deadSopenharmony_ci        2       CARD16      sequence number
3865bd8deadSopenharmony_ci        4       0           reply length
3875bd8deadSopenharmony_ci        4       CARD32      status
3885bd8deadSopenharmony_ci        4       CARD32      counter_pbuffer
3895bd8deadSopenharmony_ci        16                  unused
3905bd8deadSopenharmony_ci
3915bd8deadSopenharmony_ci
3925bd8deadSopenharmony_ci    GetVideoInfoNV
3935bd8deadSopenharmony_ci        1       CARD8       opcode (X assigned)
3945bd8deadSopenharmony_ci        1       17          GLX opcode (glXVendorPrivateWithReply)
3955bd8deadSopenharmony_ci        2       5           request length
3965bd8deadSopenharmony_ci        4       1318        vendor specific opcode
3975bd8deadSopenharmony_ci        4       CARD32      screen
3985bd8deadSopenharmony_ci        4       CARD32      video_device
3995bd8deadSopenharmony_ci      =>
4005bd8deadSopenharmony_ci        1       CARD8       reply
4015bd8deadSopenharmony_ci        1                   unused
4025bd8deadSopenharmony_ci        2       CARD16      sequence number
4035bd8deadSopenharmony_ci        4       0           reply length
4045bd8deadSopenharmony_ci        4       CARD32      status
4055bd8deadSopenharmony_ci        4       CARD32      counter_video
4065bd8deadSopenharmony_ci        4       CARD32      counter_pbuffer
4075bd8deadSopenharmony_ci        12                  unused
4085bd8deadSopenharmony_ci
4095bd8deadSopenharmony_ciNew State
4105bd8deadSopenharmony_ci
4115bd8deadSopenharmony_ci    None
4125bd8deadSopenharmony_ci
4135bd8deadSopenharmony_ciNew Implementation Dependent State
4145bd8deadSopenharmony_ci
4155bd8deadSopenharmony_ci    None
4165bd8deadSopenharmony_ci
4175bd8deadSopenharmony_ciHistory
4185bd8deadSopenharmony_ci
4195bd8deadSopenharmony_ci    Revision 8, June 4, 2014 (jajones)
4205bd8deadSopenharmony_ci      - Fix extension string to match implementation.
4215bd8deadSopenharmony_ci
4225bd8deadSopenharmony_ci    Revision 7, February 6, 2013 (pbrown)
4235bd8deadSopenharmony_ci      - Fix GLX protocol section to remove the duplicate
4245bd8deadSopenharmony_ci        opcode and match the implementation.
4255bd8deadSopenharmony_ci
4265bd8deadSopenharmony_ci    Revision 6, February 20, 2008
4275bd8deadSopenharmony_ci      - Internal revisions.
4285bd8deadSopenharmony_ci    
429