back  Return to list

GL_EXT_gpu_program_parameters
homeprevnext Name
  
    EXT_gpu_program_parameters   
  
homeprevnext Name Strings
  
    GL_EXT_gpu_program_parameters   
  
homeprevnext Contributors
  
    Pat Brown  
    Haroon Sheikh  
     
homeprevnext Contact
  
    Pat Brown, NVIDIA Corporation (pbrown 'at' nvidia.com)   
    Geoff Stahl, Apple Computer, Inc. (gstahl 'at' apple.com)  
  
homeprevnext Status
  
    Shipping for GeForce 8 Series (November 2006)   
  
homeprevnext Version
  
    Last Modified Date:         9/27/07   
    Revision:                   6  
  
homeprevnext Number
  
    320   
  
homeprevnext Dependencies
  
    ARB_vertex_program or ARB_fragment_program is required.   
  
    This specification is written against the spec language from the   
    ARB_vertex_program extension.   
  
homeprevnext Overview
  
    This extension provides a new set of procedures to load multiple   
    consecutive program environment parameters more efficiently, via a single   
    GL call instead of multiple calls.  This will reduce the amount of CPU   
    overhead involved in loading parameters.   
  
    With the existing ARB_vertex_program and ARB_fragment_program APIs,   
    program parameters must be loaded one at a time, via separate calls.   
    While the NV_vertex_program extension provides a set of similar functions   
    that can be used to load program environment parameters (which are   
    equivalent to "program parameters" in NV_vertex_program), no such function   
    exists for program local parameters.   
  
homeprevnext New Procedures and Functions
  
    void ProgramEnvParameters4fvEXT(enum target, uint index, sizei count,   
                                   const float *params);   
  
    void ProgramLocalParameters4fvEXT(enum target, uint index, sizei count,   
                                     const float *params);   
  
homeprevnext New Tokens
      
    None.   
  
homeprevnext Additions to Chapter 2 of the OpenGL 2.0 Specification (OpenGL Operation)
  
    (modify ARB_vertex_program and ARB_fragment_program, add paragraph after  
    introduction of ProgramEnvParameter* calls)   
  
    The command   
  
      void ProgramEnvParameters4fvEXT(enum target, uint index, sizei count,   
                                      const float *params);   
  
    updates the values of the program environment parameters numbered <index>  
    through <index> + <count> - 1 for the given program target <target>.  
    <params> points to an array of 4*<count> values, where the first four are  
    used to update the program environment parameter numbered <index> and the  
    last four update the program environment parameter numbered <index> +  
    <count> - 1.  The error INVALID_VALUE is generated if <count> is less than  
    zero or if the sum of <index> and <count> is greater than the number of  
    program environment parameters supported by <target>.  
  
    (modify ARB_vertex_program and ARB_fragment_program, add paragraph after  
    introduction of ProgramLocalParameter* calls)   
  
    The command   
  
      void ProgramLocalParameters4fvEXT(enum target, uint index, sizei count,   
                                        const float *params);   
  
    updates the values of the program local parameters numbered <index>  
    through <index> + <count> - 1 belonging to the program object currently  
    bound to <target>.  <params> points to an array of 4*<count> values, where  
    the first four are used to update the program local parameter numbered  
    <index> and the last four update the program local parameter numbered  
    <index> + <count> - 1.  The error INVALID_VALUE is generated if <count> is  
    less than zero or if the sum of <index> and <count> is greater than the  
    number of program local parameters supported by <target>.  
  
homeprevnext Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization)
  
    None.   
  
homeprevnext Additions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment Operations and the Frame Buffer)
  
    None.   
  
homeprevnext Additions to Chapter 5 of the OpenGL 2.0 Specification (Special Functions)
  
    None.   
  
homeprevnext Additions to Chapter 6 of the OpenGL 2.0 Specification (State and State Requests)
  
    None.   
  
homeprevnext Additions to Appendix A of the OpenGL 2.0 Specification (Invariance)
  
    None.   
  
homeprevnext Additions to the AGL/GLX/WGL Specifications
  
    None.   
  
homeprevnext GLX Protocol
  
    Four new GL commands are added.  The following commands are sent to the   
    server as part of a glXRender request:   
  
        ProgramEnvParameters4fvEXT   
            2           16+16*n         rendering command length   
            2           4281            rendering command opcode   
            4           ENUM            target   
            4           CARD32          index   
            4           CARD32          n   
            16*n        FLOAT32         params   
  
        ProgramLocalParameters4fvEXT   
            2           16+16*n         rendering command length   
            2           4282            rendering command opcode   
            4           ENUM            target   
            4           CARD32          index   
            4           CARD32          n   
            16*n        FLOAT32         params   
  
homeprevnext Errors
  
    INVALID_VALUE is generated by ProgramEnvParameters4fvEXT or  
    ProgramLocalParameters4fvEXT if <count> is less than zero.  
  
    INVALID_VALUE is generated by ProgramEnvParameters4fvEXT if <index> plus  
    <count> is greater than the number of program environment parameters  
    supported by <target>.  
  
    INVALID_VALUE is generated by ProgramLocalParameters4fvEXT if <index> plus  
    <count> is greater than the number of program local parameters supported  
    by <target>.  
  
homeprevnext New State
  
    None.   
  
homeprevnext Issues
  
    (1) Should a set of ProgramEnvParameters*EXT() calls be added, or is using   
        NV_vertex_program's ProgramParameters*NV() sufficient?   
  
      RESOLVED:  We should add an ARB-style ProgramEnvParameters*() call for   
      naming consistency. Also ProgramParameters*NV() are not available on   
      all platforms.  
  
    (2) Should an equivalent set of calls be added to query multiple program   
        parameters at once?   
  
      RESOLVED:  No.   
  
    (3) Should double-precision versions be supported?   
  
      RESOLVED:  No.  Double-precision parameter values will be converted to   
      single-precision in current driver implementations, anyway.   
  
    (4) Why is this spec called "EXT_gpu_program_parameters"?  
  
      RESOLVED:  The functionality provided by this spec applies to more than  
      one program type.  The term "GPU" was used in the extension name to  
      indicate functionality common to all supported program types, which are  
      commonly executed on a GPU.  
  
    (5) Is it an error to load multiple parameters with a <count> of zero?  
  
      RESOLVED:  No.  However, it was illegal in versions of the spec prior to  
      9/27/07.  The spec was changed to resolve differences between the  
      shipping implementations from NVIDIA (which did enforce the error) and  
      Apple (which did not).  The new behavior is more consistent with the  
      standard OpenGL practice of allowing zero to be passed to GLsizei  
      parameters, and avoids the need for special-case behavior to  
      handle/avoid zero counts in both drivers and applications.  Since  
      loading zero program parameters has no actual effect, the only  
      difference between the two behaviors is the update of the GL error  
      state.  
  
  
homeprevnext Revision History
  
    Rev.    Date    Author    Changes   
    ----  --------  --------  --------------------------------------------   
    6     09/27/07  pbrown    Change the spec to indicate that it's not  
                              illegal to load zero parameters, just  
                              pointless.  
  
    5     11/06/06  mjk       Indicate shipping  
  
    4     06/28/06  barthold  Make clear that this spec modifies both  
                              ARB_vertex_program and ARB_fragment_program.  
  
    3     06/27/06  pbrown    Fix incorrect error language in checking the  
                              sum of <index> and <count>, added an issue  
                              about the spec name.  
  
    2     06/02/06  haroon    Changed to EXT. Added contributors.  
  
    1     04/24/06  pbrown    Initial revision.   
  
  
Valid XHTML 1.1! Valid CSS! Last update: November 14, 2006.
Cette page doit être lue avec un navigateur récent respectant le standard XHTML 1.1.