Tizen 2.0 Release
[profile/ivi/osmesa.git] / src / mapi / glapi / gen / gl_API.dtd
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                    glx_name            NMTOKEN #IMPLIED>
30 <!ATTLIST enum     name                NMTOKEN #REQUIRED
31                    count               CDATA   #IMPLIED
32                    value               NMTOKEN #REQUIRED>
33 <!ATTLIST function name                NMTOKEN #REQUIRED
34                    alias               NMTOKEN #IMPLIED
35                    offset              CDATA   #IMPLIED
36                    static_dispatch     (true | false) "true"
37                    vectorequiv         NMTOKEN #IMPLIED>
38 <!ATTLIST size     name                NMTOKEN #REQUIRED
39                    count               NMTOKEN #IMPLIED
40                    mode                (get | set) "set">
41 <!ATTLIST param    name                NMTOKEN #REQUIRED
42                    type                CDATA   #REQUIRED
43                    client_only         (true | false) "false"
44                    count               NMTOKEN #IMPLIED
45                    counter             (true | false) "false"
46                    count_scale         NMTOKEN "1"
47                    output              (true | false) "false"
48                    padding             (true | false) "false"
49                    img_width           NMTOKEN #IMPLIED
50                    img_height          NMTOKEN #IMPLIED
51                    img_depth           NMTOKEN #IMPLIED
52                    img_extent          NMTOKEN #IMPLIED
53                    img_xoff            NMTOKEN #IMPLIED
54                    img_yoff            NMTOKEN #IMPLIED
55                    img_zoff            NMTOKEN #IMPLIED
56                    img_woff            NMTOKEN #IMPLIED
57                    img_format          NMTOKEN #IMPLIED
58                    img_type            NMTOKEN #IMPLIED
59                    img_target          NMTOKEN #IMPLIED
60                    img_send_null       (true | false) "false"
61                    img_null_flag       (true | false) "false"
62                    img_pad_dimensions  (true | false) "false"
63                    variable_param      NMTOKENS #IMPLIED>
64 <!ATTLIST return   type                CDATA   "void">
65 <!ATTLIST glx      rop                 NMTOKEN #IMPLIED
66                    sop                 NMTOKEN #IMPLIED
67                    vendorpriv          NMTOKEN #IMPLIED
68                    large               (true | false) "false"
69                    doubles_in_order    (true | false) "false"
70                    always_array        (true | false) "false"
71                    handcode            (true | false | client | server) "false"
72                    img_reset           NMTOKEN #IMPLIED
73                    dimensions_in_reply (true | false) "false"
74                    ignore              (true | false) "false">
75
76 <!--
77 The various attributes for param and glx have the meanings listed below.
78 When adding new functions, please annote them correctly.  In most cases this
79 will just mean adding a '<glx ignore="true"/>' tag.
80
81 param:
82      name - name of the parameter
83      type - fully qualified type (e.g., with "const", etc.)
84      client_only - boolean flag set on parameters which are interpreted only
85          by the client and are not present in the protocol encoding (e.g.,
86          the stride parameters to Map1f, etc.)
87      count - for counted arrays (e.g., the 'lists' parameter to glCallLists),
88          the parameter or literal that represents the count.  For functions
89          like glVertex3fv it will be a litteral, for others it will be one of
90          the parameters.
91      counter - this parameter is a counter that will be referenced by the
92          'count' attribute in another parameter.
93      count_scale - literal value scale factor for the 'count' attribute.
94          See ProgramParameters4dvNV for an example.
95      output - this parameter is used to store the output of the function.
96      variable_param - name of parameter used to determine the number of
97          elements referenced by this parameter.  This should be the name of a
98          single enum parameter.  Most of the gl*Parameter[if]v functions use
99          this.  Additionally, the enums that can be passed should be properly
100          annotated.
101      img_width / img_height / img_depth / img_extent - name of parameters
102          (or hardcoded integer) used for the dimensions of pixel data.
103      img_xoff / img_yoff / img_zoff / img_woff - name of parameters used
104          for x, y, z, and w offsets of pixel data.
105      img_format - name of parameter used as the pixel data format.
106      img_type - name of parameter used as the pixel data type.
107      img_target - name of parameter used as a texture target.  Non-texture
108         pixel data should hardcode 0.
109      img_send_null - boolean flag to determine if blank pixel data should
110         be sent when a NULL pointer is passed.  This is only used by
111         TexImage1D and TexImage2D.
112      img_null_flag - boolean flag to determine if an extra flag is used to
113         determine if a NULL pixel pointer was passed.  This is used by
114         TexSubImage1D, TexSubImage2D, TexImage3D and others.
115      img_pad_dimensions - boolean flag to determine if dimension data and
116         offset data should be padded to the next even number of dimensions.
117         For example, this will insert an empty "height" field after the
118         "width" field in the protocol for TexImage1D.
119
120 glx:
121      rop - Opcode value for "render" commands
122      sop - Opcode value for "single" commands
123      vendorpriv - Opcode value for vendor private (or vendor private with
124          reply) commands
125      large - set to "true" of the render command can use RenderLarge protocol.
126      doubles_in_order - older commands always put GLdouble data at the
127          start of the render packet.  Newer commands (e.g., 
128          ProgramEnvParameter4dvARB) put the in the order that they appear
129          in the parameter list.
130      always_array - some single commands take reply data as an array or as
131          return value data (e.g., glGetLightfv).  Other single commands take
132          reply data only as an array (e.g., glGetClipPlane).
133      handcode - some functions are just too complicated to generate 
134          (e.g., glSeperableFilter2D) or operate only on client-side data
135          (e.g., glVertexPointer) and must be handcoded.
136      ignore - some functions have an entry in the dispatch table, but aren't
137          suitable for protocol implementation (e.g., glLockArraysEXT).  This
138          also applies to functions that don't have any GLX protocol specified
139          (e.g., glGetFogFuncSGIS).
140 -->