• <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_KHR_get_all_proc_addresses
    Names
    
        KHR_get_all_proc_addresses
        KHR_client_get_all_proc_addresses
    
    Name Strings
    
        EGL_KHR_get_all_proc_addresses
        EGL_KHR_client_get_all_proc_addresses
    
    Contributors
    
        Jon Leech
        Marcus Lorentzon
        Robert Palmer
        Acorn Pooley
        Greg Prisament
        Chad Versace
    
    Contacts
    
        James Jones, NVIDIA  (jajones 'at' nvidia.com)
    
    Notice
    
        Copyright (c) 2013 The Khronos Group Inc. Copyright terms at
            http://www.khronos.org/registry/speccopyright.html
    
    Status
    
        Complete. Approved by the EGL Working Group on April 3, 2013.
        Ratified by the Khronos Board of Promoters on July 19, 2013.
    
    Version
    
        Version 3 - July 31, 2013
    
    Number
    
        EGL Extension #61
    
    Extension Types
    
        EGL_KHR_get_all_proc_addresses is an EGL display extension
        EGL_KHR_client_get_all_proc_addresses is an EGL client extension
    
    Dependencies
    
        EGL 1.2 is required.
    
        This extension is written based on the wording of the EGL 1.4
        specification.
    
        Interacts with EGL_EXT_client_extensions.
    
    Overview
    
        eglGetProcAddress is currently defined to not support the querying
        of non-extension EGL or client API functions.  Non-extension
        functions are expected to be exposed as library symbols that can
        be resolved statically at link time, or dynamically at run time
        using OS-specific runtime linking mechanisms.
    
        With the addition of OpenGL and OpenGL ES 3 support to EGL, the
        definition of a non-extension function becomes less clear.  It is
        common for one OpenGL library to implement many versions of
        OpenGL.  The suggested library name for OpenGL ES 3 is the same as
        that of OpenGL ES 2.  If OpenGL ES 3 applications linked
        statically to OpenGL ES 3 functions are run on a system with only
        OpenGL ES 2 support, they may fail to load.  Similar problems
        would be encountered by an application linking statically to
        various OpenGL functions.
    
        To avoid requiring applications to fall back to OS-specific
        dynamic linking mechanisms, this extension drops the requirement
        that eglGetProcAddress return only non-extension functions.  If
        the extension string is present, applications can query all EGL
        and client API functions using eglGetProcAddress.
    
        To allow users to query this extension before initializing a display, and
        to also allow vendors to ship this extension without
        EGL_EXT_client_extensions, two names are assigned to this extension: one
        a display extension and the other a client extension.  Identical
        functionality is exposed by each name, but users query each name using
        different methods.  Users query EGL_KHR_get_all_proc_addresses in the
        usual way; that is, by calling eglQueryString(dpy, EGL_EXTENSIONS) on an
        initialized display.  To query EGL_KHR_client_get_all_proc_addresses,
        users must use a different method which is described below in the section
        concerning EGL_EXT_client_extensions.
    
    New Types
    
        None
    
    New functions
    
        None
    
    New Tokens
    
        None
    
    Rename section "3.10 Obtaining Extension Function Pointers" to "3.10
    Obtaining Function Pointers", and replace its content with the
    following:
    
       "The client API and EGL extensions and versions which are available to a
        client may vary at runtime, depending on factors such as the rendering
        path being used (hardware or software), resources available to the
        implementation, or updated device drivers. Therefore, the address of
        functions may be queried at runtime. The function
    
            void (*eglGetProcAddress(const char *procname))(void);
    
        returns the address of the function named by <procName>. <procName> must
        be a NULL-terminated string. The pointer returned should be cast to a
        function pointer matching the function's definition in the corresponding
        API or extension specification. A return value of NULL indicates that
        the specified function does not exist for the implementation.
    
        A non-NULL return value for eglGetProcAddress does not guarantee that a
        function is actually supported at runtime. The client must also make a
        corresponding query, such as glGetString(GL_EXTENSIONS) for OpenGL and
        OpenGL ES extensions; vgGetString(VG_EXTENSIONS) for OpenVG extensions;
        eglQueryString(dpy, EGL_EXTENSIONS) for EGL extensions; or query the
        corresponding API's version for non-extension functions, to determine if
        a function is supported by a particular client API context or display.
    
        Client API function pointers returned by eglGetProcAddress are
        independent of the display and the currently bound client API context,
        and may be used by any client API context which supports the function.
    
        eglGetProcAddress may be queried for all EGL and client API extension
        and non-extension functions supported by the implementation (whether
        those functions are supported by the current client API context or not).
    
        For functions that are queryable with eglGetProcAddress, implementations
        may also choose to export those functions statically from the object
        libraries implementing them. However, portable clients cannot rely on
        this behavior."
    
    Interactions with EGL_EXT_client_extensions
    
        The EGL specification describes the behavior of eglGetProcAddress as
        independent of any display.  Therefore, this extension's functionality
        falls under the classification 'client extension' rather than 'display
        extension'. Accordingly, users may wish to query this extension before
        initializing a display.
    
        If the EGL_EXT_client_extensions is supported, then users can query this
        extension by checking for the name EGL_KHR_client_get_all_proc_addresses
        in the extension string of EGL_NO_DISPLAY.
    
        The EGL implementation must expose the name
        EGL_KHR_client_get_all_proc_addresses if and only if it exposes
        EGL_KHR_get_all_proc_addresses and supports EGL_EXT_client_extensions.
        This requirement eliminates the problematic situation where, if an EGL
        implementation exposed only one name, then an EGL client would fail to
        detect the extension if it queried only the other name.
    
        Despite having two names assigned to this extension, the restrictions
        described in EGL_EXT_client_extensions still apply. As
        EGL_KHR_client_get_all_proc_addresses is defined as a client extension,
        its name can appear only in the extension string of EGL_NO_DISPLAY and
        not in the extension string of any valid display. The converse applies
        to EGL_KHR_get_all_proc_addresses, as it is defined as a display
        extension.
    
    Issues
    
        1.  What should this spec be called?
    
            PROPOSED: KHR_get_all_proc_addresses
    
        2.  Should this extension be classified as a client extension, as defined
            by EGL_EXT_client_extensions?
    
            DISCUSSION: Yes and no.
    
            Yes, because this extension exposes functionality that is solely
            a property of the EGL library itself, independent of any display.
            Such functionality falls under the classification of 'client
            extension'.
    
            No, because classifying it as a client extension would create
            a dependency on EGL_EXT_client_extensions, and there exists no
            precedent for a KHR extension that depends on an EXT extension.
    
            RESOLUTION: Expose this extension under two names, one a client
            extension and the other a display extension.
    
    Revision History
    
        #3 (July 31, 2013) Chad Versace
            - Assign additional name, EGL_KHR_client_get_all_proc_addresses.
            - Add section "Extension Types", section "Interactions with
              EGL_EXT_client_extensions", and issue #2.
    
        #2  (March 6, 2013) Jon Leech
            - Bring into sync with latest EGL 1.4 spec update and simplify
              language describing which functions may be queried. Minor
              formatting changes for greater consistency with other KHR
              extension specs.
    
        #1  (February 4, 2013) James Jones
            - Initial draft
    
    人人超碰97caoporen国产