Name NV_vdpau_interop2 Name Strings GL_NV_vdpau_interop2 Contributors Manoj Gupta Bonda, NVIDIA James Jones, NVIDIA Contact Manoj Gupta Bonda, NVIDIA (mbonda 'at' nvidia.com) Status Complete Version 1 (2 Oct 2018) Number OpenGL Extension #533 Dependencies This extension is written against the OpenGL 4.6 Specification (Compatibility Profile), dated July 30, 2017. but can apply to OpenGL 1.1 and up. OpenGL 1.1 is required. GL_NV_vdpau_interop is required. GL_EXT_framebuffer_object affects the definition of this extension. GL_ARB_texture_rectangle affects the definition of this extension. GL_ARB_texture_non_power_of_two affects the definition of this extension. Overview This extension allows VDPAU video surfaces to be used either with frame or field structures for texturing and rendering. IP Status There are no known IP issues. New Types None New Procedures and Functions vdpauSurfaceNV VDPAURegisterVideoSurfaceWithPictureStructureNV (const void *vdpSurface, enum target, sizei numTextureNames, const uint *textureNames, boolean isFrameStructure); New Tokens None Additions to Chapter 8 of the OpenGL 4.6 (unabridged) Specification (Textures and Samplers) Replace the paragraph that begins with 'The command vdpauSurfaceNV VDPAURegisterVideoSurfaceNV' and the following two paragraphs, including table 3.8.3.1, with the following: The commands vdpauSurfaceNV VDPAURegisterVideoSurfaceNV (const void *vdpSurface, enum target, sizei numTextureNames, const uint *textureNames); vdpauSurfaceNV VDPAURegisterVideoSurfaceWithPictureStructureNV (const void *vdpSurface, enum target, sizei numTextureNames, const uint *textureNames, boolean isFrameStructure); defines a set of two-dimensional textures, where the image data may be taken from the VdpVideoSurface . must be one of TEXTURE_2D or TEXTURE_RECTANGLE. determines how many textures are defined. contains the names of the textures that are defined. The surface is transitioned into the registered state. VDPAURegisterVideoSurfaceNV is equivalent to calling VDPAURegisterVideoSurfaceWithPictureStructureNV with set to FALSE. Legal values for , are derived from the VdpChromaType of , as defined in table 8.7.1. Internal VdpChromaType numTextureNames isFrameStructure Index Size Format Content ------------- --------------- ---------------- ----- ---- -------- ------------------- VDP_CHROMA_TYPE_420 4 0 0 w x h/2 R8 Top-field luma 1 w x h/2 R8 Bottom-field luma 2 w/2 x h/4 R8G8 Top-field chroma 3 w/2 x h/4 R8G8 Bottom-field chroma VDP_CHROMA_TYPE_422 4 0 0 w x h/2 R8 Top-field luma 1 w x h/2 R8 Bottom-field luma 2 w/2 x h/2 R8G8 Top-field chroma 3 w/2 x h/2 R8G8 Bottom-field chroma VDP_CHROMA_TYPE_444 4 0 0 w x h/2 R8 Top-field luma 1 w x h/2 R8 Bottom-field luma 2 w x h/2 R8G8 Top-field chroma 3 w x h/2 R8G8 Bottom-field chroma VDP_CHROMA_TYPE_420 2 1 0 w x h R8 Luma 1 w/2 x h/2 R8G8 Chroma VDP_CHROMA_TYPE_422 2 1 0 w x h R8 Luma 1 w/2 x h R8G8 Chroma VDP_CHROMA_TYPE_444 2 1 0 w x h R8 Luma 1 w x h R8G8 Chroma VDP_CHROMA_TYPE_420_FIELD 4 0 0 w x h/2 R8 Top-field luma 1 w x h/2 R8 Bottom-field luma 2 w/2 x h/4 R8G8 Top-field chroma 3 w/2 x h/4 R8G8 Bottom-field chroma VDP_CHROMA_TYPE_422_FIELD 4 0 0 w x h/2 R8 Top-field luma 1 w x h/2 R8 Bottom-field luma 2 w/2 x h/2 R8G8 Top-field chroma 3 w/2 x h/2 R8G8 Bottom-field chroma VDP_CHROMA_TYPE_444_FIELD 4 0 0 w x h/2 R8 Top-field luma 1 w x h/2 R8 Bottom-field luma 2 w x h/2 R8G8 Top-field chroma 3 w x h/2 R8G8 Bottom-field chroma VDP_CHROMA_TYPE_420_FRAME 2 1 0 w x h R8 Luma 1 w/2 x h/2 R8G8 Chroma VDP_CHROMA_TYPE_422_FRAME 2 1 0 w x h R8 Luma 1 w/2 x h R8G8 Chroma VDP_CHROMA_TYPE_444_FRAME 2 1 0 w x h R8 Luma 1 w x h R8G8 Chroma Table 8.7.1: Supported VdpChromaType values, and derived values of , and texture parameters for each texture. VDPAURegisterVideoSurfaceWithPictureStructureNV's return value is a handle used by various other commands detailed in NV_vdpau_interop. Additions to the AGL/GLX/WGL Specifications None Additions to the OpenGL Shading Language None GLX Protocol VDPAU implementations currently only support direct-rendering. Consequently, no GLX protocol is currently defined for this extension. Dependencies on GL_ARB_texture_rectangle If GL_ARB_texture_rectangle is not supported, TEXTURE_RECTANGLE may not be used as target for VDPAURegisterVideoSurfaceWithPictureStructureNV. Dependencies on GL_ARB_texture_non_power_of_two If GL_ARB_texture_non_power_of_two is not supported, only VDPAU surfaces with power-of-two size may be used with target TEXTURE_2D. Errors INVALID_OPERATION is generated by VDPAURegisterVideoSurfaceWithPictureStructureNV if the VDPAU driver refuses the request for some reason. INVALID_OPERATION is generated if any texture named by an entry within the parameter of VDPAURegisterVideoSurfaceWithPictureStructureNV is marked as immutable. INVALID_VALUE is generated if the VDPAU surface named by the parameter of VDPAURegisterVideoSurfaceWithPictureStructureNV does not have a supported format; see table 8.7.1. New State None New Implementation State None Issues Revision History 1. 02 Oct 2018 - Manoj Bonda Initial version 2. 21 Nov 2018 - Manoj Bonda Changed status to complete.