Loading [MathJax]/extensions/tex2jax.js
  • <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • NVIDIA DRIVE OS Linux SDK API Reference

    6.0.9 Release
    All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
    EGL_NV_post_sub_buffer
    Name
    
        NV_post_sub_buffer
    
    Name Strings
    
        EGL_NV_post_sub_buffer
    
    Contributors
    
        Arcady Goldmints-Orlov
        James Jones
        Daniel Kartch
    
    Contact
    
        James Jones, NVIDIA Corporation (jajones 'at' nvidia.com)
    
    Status
    
        Draft.
    
    Version
    
        Version 3, November 5, 2010
    
    Number
    
        EGL Extension #27
    
    Dependencies
    
        Requires EGL 1.1
    
        This extension is written against the wording of the EGL 1.4
        Specification
    
    Overview
    
        Many EGL client APIs do not support rendering to window surfaces
        directly, so there is no way to efficiently make small updates to
        window surfaces. Applications that need to perform many small updates
        must either use the back-buffer preservation flag which forces
        eglSwapBuffers to copy the entire back surface, or redraw the entire
        back buffer on every update and hope eglSwapBuffers is implemented
        using buffer-flipping. This extension provides a 3rd alternative: a
        function which posts a sub-rectangle of a window surface and
        preserves the back-buffer contents.
    
    New Types
    
        None.
    
    New Procedures and Functions
    
        EGLBoolean eglPostSubBufferNV(EGLDisplay dpy,
                                      EGLSurface surface,
                                      EGLint x, EGLint y,
                                      EGLint width, EGLint height);
    
    New Tokens
    
        Accepted by the <attribute> parameter of eglQuerySurface and by the
        <attrib_list> parameter of eglCreateWindowSurface:
    
        EGL_POST_SUB_BUFFER_SUPPORTED_NV        0x30BE
    
    Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
    
        Modify the second paragraph of Section 3.5.1, page 27
        (Creating On-Screen Rendering Surfaces)
    
        "<attrib_list> specifies a list of attributes for the window. The list
        has the same structure as described for eglChooseConfig. Attributes
        that can be specified in <attrib_list> include EGL_POST_SUB_BUFFER_-
        SUPPORTED_NV, EGL_RENDER_BUFFER, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_-
        FORMAT."
    
        Add the following between paragraphs 4 and 5 of Section 3.5.1, page 27
        (Creating On-Screen Rendering Surfaces)
    
        "EGL_POST_SUB_BUFFER_SUPPORTED_NV specifies whether the application
        would perfer a surface that supports sub-buffer post operations, as
        described in section 3.9.1.  Its values can be EGL_TRUE, in which case
        the implementation will attempt to allocate a surface that supports
        sub-buffer posts, or EGL_FALSE, in which case the implementation will
        not take sub-buffer post capabilities into account.
    
        "Implementations may not be able to support sub-buffer post
        mechanisms, or may support them only on some native windows. Use
        eglQuerySurface to determine a surface's capabilities (see section
        3.5.6)."
    
        Add the following entry to Table 3.5, page 36
        (Queryable surface attributes and types)
    
        Attribute                        Type    Description
        -------------------------------- ------- ------------------------
        EGL_POST_SUB_BUFFER_SUPPORTED_NV boolean Surface can be used with
                                                 eglPostSubBufferNV
    
        Add the following paragraph to Section 3.5.6, page 37
        (Surface Attributes)
    
        "Querying EGL_POST_SUB_BUFFER_SUPPORTED_NV returns EGL_TRUE if the
        surface can use eglPostSubBufferNV (See section 3.9.1) to post sub-
        rectangles of the back color buffer.  Otherwise, EGL_FALSE is
        returned."
    
        Replace all but the last paragraph of section Section 3.9.1, page 50
        (Posting to a Window)
    
        "To post the color buffer to a window, call
    
            EGLBoolean eglSwapBuffers(EGLDisplay dpy,
                EGLSurface surface);
    
        "To post a sub-rectangle of the color buffer to a window, call
    
            EGLBoolean eglPostSubBufferNV(EGLDisplay dpy,
                EGLSurface surface, EGLint x, EGLint y,
                EGLint width, EGLint height);
    
        "Where <x> and <y> are pixel offsets from the bottom-left corner of
        <surface>.
    
        "If <surface> is a back-buffered surface, then the requested portion
        of the color buffer is copied to the native window associated with
        that surface. If <surface> is a single-buffered window, pixmap, or
        pbuffer surface, eglSwapBuffers and eglPostSubBufferNV have no
        effect.
    
        "The contents of ancillary buffers are always undefined after calling
        eglSwapBuffers or eglPostSubBufferNV. The contents of the color
        buffer are unchanged if eglPostSubBufferNV is called, or if
        eglSwapBuffers is called and the value of the EGL_SWAP_BEHAVIOR
        attribute of <surface> is EGL_BUFFER_PRESERVED. The value of EGL_-
        SWAP_BEHAVIOR can be set for some surfaces using eglSurfaceAttrib, as
        described in section 3.5.6.
    
        "Native Window Resizing
    
        "If the native window corresponding to <surface> has been resized
        prior to the swap, <surface> must be resized to match. <surface> will
        normally be resized by the EGL implementation at the time the native
        window is resized. If the implementation cannot do this transparently
        to the client, then eglSwapBuffers and eglPostSubBufferNV must
        detect the change and resize <surface> prior to copying its pixels to
        the native window. The sub-rectangle defined by <x>, <y>, <width>, and
        <height> parameters to eglPostSubBufferNV will be clamped to the
        extents of <surface>. If, after clamping, the rectangle contains no
        pixels, eglPostSubBufferNV will have no effect."
    
        Modify the following sentences in Section 3.9.3, page 51 (Posting
        Semantics)
    
        Paragraph 2, first sentence:
    
        "If <dpy> and <surface> are the display and surface for the calling
        thread's current context, eglSwapBuffers, eglPostSubBufferNV, and
        eglCopyBuffers perform an implicit flush operation on the context
        (glFlush for OpenGL or OpenGL ES context, vgFlush for an OpenVG
        context)."
    
        Paragraph 3, first sentence:
    
        "The destination of a posting operation (a visible window, for
        eglSwapBuffers or eglPostSubBufferNV, or a native pixmap, for
        eglCopyBuffers) should have the same number of components and
        component sizes as the color buffer it's being copied from."
    
        Paragraph 6, first two sentences:
    
        "The function
    
            EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint
                interval);
    
        specifes the minimum number of video frame periods per color buffer
        post operation for the window associated with the current context. The
        interval takes effect when eglSwapBuffers or eglPostSubBufferNV is
        first called subsequent to the eglSwapInterval call."
    
        Modify the following sentences in Section 3.9.4, page 52 (Posting
        Errors)
    
        Paragraph 1, first sentence:
    
        "eglSwapBuffers, eglPostSubBufferNV, and eglCopyBuffers return
        EGL_FALSE on failure."
    
        Paragraph 1, seventh sentence:
    
        "If eglSwapBuffers or eglPostSubBufferNV are called and the native
        window associated with <surface> is no longer valid, an EGL_BAD_-
        NATIVE_WINDOW error is generated.  If eglPostSubBufferNV is called
        and <x>, <y>, <width>, or <height> are less than zero, EGL_BAD_-
        PARAMETER is generated."
    
    Issues
    
        1. Should all surfaces be required to support sub-buffer posts if
        this extension is supported?
    
        RESOLVED: No. Some implementations may support multiple types of
        native windows.  Support for sub-surface posting is therefore a
        per-surface property, so a surface query should be used to determine
        which surfaces support sub-surface posts.
    
        2. What should this extension be called?
    
        RESOLVED: Names considered EGL_NV_copy_sub_buffer, EGL_NV_present_sub-
        surface, EGL_NV_post_sub_buffer.  eglCopySubBuffer() sounded too
        similar to eglCopyBuffer(), which operates on different types of
        surfaces. EGL_present_sub_surface was originally chosen as it was
        sufficiently different than eglCopyBuffer(), but based on internal
        feedback, the term "Post" is preferable to "Present" because it is
        already used in the EGL spec to describe buffer presentation
        operations. "Buffer" was chosen over "surface" at this point as well,
        because it is more consistent with the eglSwapBuffers() and
        eglCopyBuffer() commands, and eglPostSubBuffer() is still
        differentiated enough from eglCopyBuffer() that the two won't be
        confused.
        
    Revision History
    
    #3  (James Jones, November 5, 2010)
        -Renamed from NV_present_sub_surface to NV_post_sub_buffer based on
        feedback from internal reviews.
    
        -Allowed EGL_POST_SUB_BUFFER_SUPPORTED_NV to be used as a hint when
        creating window surfaces.
    
        -Clarified that eglSwapInterval applies to all color-buffer post
        operations affecting on-screen surfaces, not just eglSwapBuffers.
    
    #2  (James Jones, November 1, 2010)
        - Fixed a few typos.
    
    #1  (James Jones, October 22, 2010)
        - Initial revision, based on GLX_MESA_copy_sub_buffer
    
    人人超碰97caoporen国产