| 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 |
| |
| XXX - Not complete yet!!! |
| |
| Version |
| |
| 1 (2 Oct 2018) |
| |
| Number |
| |
| OpenGL Extension #593 |
| |
| 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 <vdpSurface>. <target> must be |
| one of TEXTURE_2D or TEXTURE_RECTANGLE. <numTextureNames> |
| determines how many textures are defined. <textureNames> contains |
| the names of the textures that are defined. The surface is |
| transitioned into the registered state. |
| |
| VDPAURegisterVideoSurfaceNV is equivalent to calling |
| VDPAURegisterVideoSurfaceWithPictureStructureNV with <isFrameStructure> |
| set to FALSE. |
| |
| Legal values for <numTextureNames>,<isFrameStructure> are derived from the |
| VdpChromaType of <vdpSurface>, 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 <numTextureNames>,<isFrameStructure> 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 <textureNames> parameter of |
| VDPAURegisterVideoSurfaceWithPictureStructureNV is marked as immutable. |
| |
| INVALID_VALUE is generated if the VDPAU surface named by the |
| <vdpSurface> 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 |
| |
| |