Home | History | Annotate | Download | only in gen
      1 <!ELEMENT OpenGLAPI (category?, xi:include?, OpenGLAPI?)+>
      2 <!ELEMENT category (type*, enum*, function*)*>
      3 <!ELEMENT type EMPTY>
      4 <!ELEMENT enum (size*)>
      5 <!ELEMENT size EMPTY>
      6 <!ELEMENT function (param*, return?, glx?)*>
      7 <!ELEMENT param EMPTY>
      8 <!ELEMENT return EMPTY>
      9 <!ELEMENT glx EMPTY>
     10 
     11 <!ELEMENT xi:include (xi:fallback)?>
     12 <!ATTLIST xi:include
     13           xmlns:xi  CDATA #FIXED "http://www.w3.org/2001/XInclude"
     14           href       CDATA #REQUIRED
     15           parse      (xml|text) "xml"
     16           encoding   CDATA #IMPLIED>
     17 <!ELEMENT xi:fallback ANY>
     18 <!ATTLIST xi:fallback
     19           xmlns:xi   CDATA #FIXED "http://www.w3.org/2001/XInclude">
     20 
     21 
     22 <!ATTLIST category name                NMTOKEN #REQUIRED
     23                    number              NMTOKEN #IMPLIED
     24 		   window_system       NMTOKEN #IMPLIED>
     25 <!ATTLIST type     name                NMTOKEN #REQUIRED
     26                    size                NMTOKEN #REQUIRED
     27 		   float               (true | false) "false"
     28 		   unsigned            (true | false) "false"
     29 		   pointer             (true | false) "false"
     30                    glx_name            NMTOKEN #IMPLIED>
     31 <!ATTLIST enum     name                NMTOKEN #REQUIRED
     32                    count               CDATA   #IMPLIED
     33                    value               NMTOKEN #REQUIRED>
     34 <!ATTLIST function name                NMTOKEN #REQUIRED
     35                    alias               NMTOKEN #IMPLIED
     36                    vectorequiv         NMTOKEN #IMPLIED
     37                    es1                 CDATA   "none"
     38                    es2                 CDATA   "none"
     39                    deprecated          CDATA   "none"
     40                    exec                NMTOKEN #IMPLIED
     41                    desktop             (true | false) "true"
     42                    marshal             NMTOKEN #IMPLIED
     43                    marshal_fail        CDATA #IMPLIED>
     44 <!ATTLIST size     name                NMTOKEN #REQUIRED
     45                    count               NMTOKEN #IMPLIED
     46                    mode                (get | set) "set">
     47 <!ATTLIST param    name                NMTOKEN #REQUIRED
     48                    type                CDATA   #REQUIRED
     49 		   client_only	       (true | false) "false"
     50                    count               NMTOKEN #IMPLIED
     51                    counter             (true | false) "false"
     52                    count_scale         NMTOKEN "1"
     53                    output              (true | false) "false"
     54                    padding             (true | false) "false"
     55                    img_width           NMTOKEN #IMPLIED
     56                    img_height          NMTOKEN #IMPLIED
     57                    img_depth           NMTOKEN #IMPLIED
     58                    img_extent          NMTOKEN #IMPLIED
     59                    img_xoff            NMTOKEN #IMPLIED
     60                    img_yoff            NMTOKEN #IMPLIED
     61                    img_zoff            NMTOKEN #IMPLIED
     62                    img_woff            NMTOKEN #IMPLIED
     63                    img_format          NMTOKEN #IMPLIED
     64                    img_type            NMTOKEN #IMPLIED
     65                    img_target          NMTOKEN #IMPLIED
     66                    img_send_null       (true | false) "false"
     67                    img_null_flag       (true | false) "false"
     68                    img_pad_dimensions  (true | false) "false"
     69                    variable_param      NMTOKENS #IMPLIED>
     70 <!ATTLIST return   type                CDATA   "void">
     71 <!ATTLIST glx      rop                 NMTOKEN #IMPLIED
     72                    sop                 NMTOKEN #IMPLIED
     73                    vendorpriv          NMTOKEN #IMPLIED
     74                    large               (true | false) "false"
     75                    doubles_in_order    (true | false) "false"
     76                    always_array        (true | false) "false"
     77                    handcode            (true | false | client | server) "false"
     78                    img_reset           NMTOKEN #IMPLIED
     79                    dimensions_in_reply (true | false) "false"
     80                    ignore              (true | false) "false">
     81 
     82 <!--
     83 The various attributes for param and glx have the meanings listed below.
     84 When adding new functions, please annote them correctly.  In most cases this
     85 will just mean adding a '<glx ignore="true"/>' tag.
     86 
     87 param:
     88      name - name of the parameter
     89      type - fully qualified type (e.g., with "const", etc.)
     90      client_only - boolean flag set on parameters which are interpreted only
     91          by the client and are not present in the protocol encoding (e.g.,
     92 	 the stride parameters to Map1f, etc.)
     93      count - for counted arrays (e.g., the 'lists' parameter to glCallLists),
     94          the parameter or literal that represents the count.  For functions
     95          like glVertex3fv it will be a literal, for others it will be one of
     96          the parameters.
     97      counter - this parameter is a counter that will be referenced by the
     98          'count' attribute in another parameter.
     99      count_scale - literal value scale factor for the 'count' attribute.
    100          See ProgramParameters4dvNV for an example.
    101      output - this parameter is used to store the output of the function.
    102      variable_param - name of parameter used to determine the number of
    103          elements referenced by this parameter.  This should be the name of a
    104          single enum parameter.  Most of the gl*Parameter[if]v functions use
    105          this.  Additionally, the enums that can be passed should be properly
    106          annotated.
    107      img_width / img_height / img_depth / img_extent - name of parameters
    108          (or hardcoded integer) used for the dimensions of pixel data.
    109      img_xoff / img_yoff / img_zoff / img_woff - name of parameters used
    110          for x, y, z, and w offsets of pixel data.
    111      img_format - name of parameter used as the pixel data format.
    112      img_type - name of parameter used as the pixel data type.
    113      img_target - name of parameter used as a texture target.  Non-texture
    114         pixel data should hardcode 0.
    115      img_send_null - boolean flag to determine if blank pixel data should
    116         be sent when a NULL pointer is passed.  This is only used by
    117         TexImage1D and TexImage2D.
    118      img_null_flag - boolean flag to determine if an extra flag is used to
    119         determine if a NULL pixel pointer was passed.  This is used by
    120         TexSubImage1D, TexSubImage2D, TexImage3D and others.
    121      img_pad_dimensions - boolean flag to determine if dimension data and
    122         offset data should be padded to the next even number of dimensions.
    123         For example, this will insert an empty "height" field after the
    124         "width" field in the protocol for TexImage1D.
    125      marshal - One of "sync", "async", "draw", or "custom", defaulting to
    126         async unless one of the arguments is something we know we can't
    127         codegen for.  If "sync", we finish any queued glthread work and call
    128         the Mesa implementation directly.  If "async", we queue the function
    129         call to be performed by glthread.  If "custom", the prototype will be
    130         generated but a custom implementation will be present in marshal.c.
    131         If "draw", it will follow the "async" rules except that "indices" are
    132         ignored (since they may come from a VBO).
    133      marshal_fail - an expression that, if it evaluates true, causes glthread
    134         to switch back to the Mesa implementation and call it directly.  Used
    135         to disable glthread for GL compatibility interactions that we don't
    136         want to track state for.
    137 
    138 glx:
    139      rop - Opcode value for "render" commands
    140      sop - Opcode value for "single" commands
    141      vendorpriv - Opcode value for vendor private (or vendor private with
    142          reply) commands
    143      large - set to "true" of the render command can use RenderLarge protocol.
    144      doubles_in_order - older commands always put GLdouble data at the
    145          start of the render packet.  Newer commands (e.g., 
    146          ProgramEnvParameter4dvARB) put the in the order that they appear
    147          in the parameter list.
    148      always_array - some single commands take reply data as an array or as
    149          return value data (e.g., glGetLightfv).  Other single commands take
    150          reply data only as an array (e.g., glGetClipPlane).
    151      handcode - some functions are just too complicated to generate 
    152          (e.g., glSeperableFilter2D) or operate only on client-side data
    153          (e.g., glVertexPointer) and must be handcoded.
    154      ignore - some functions have an entry in the dispatch table, but aren't
    155          suitable for protocol implementation (e.g., glLockArraysEXT).  This
    156          also applies to functions that don't have any GLX protocol specified
    157          (e.g., glGetFogFuncSGIS).
    158 -->
    159