summaryrefslogtreecommitdiff
path: root/src/mesa/glapi/gl_API.dtd
blob: 352e1b53a5d7861c8cb57ce9bc477932c25f7597 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<!ELEMENT OpenGLAPI (category+)>
<!ELEMENT category (type*, enum*, function*)*>
<!ELEMENT type EMPTY>
<!ELEMENT enum (size*)>
<!ELEMENT size EMPTY>
<!ELEMENT function (param*, return?, glx?)*>
<!ELEMENT param EMPTY>
<!ELEMENT return EMPTY>
<!ELEMENT glx EMPTY>

<!ATTLIST category name                NMTOKEN #REQUIRED
                   number              NMTOKEN #IMPLIED>
<!ATTLIST type     name                NMTOKEN #REQUIRED
                   size                NMTOKEN #REQUIRED
                   glx_name            NMTOKEN #IMPLIED>
<!ATTLIST enum     name                NMTOKEN #REQUIRED
                   count               CDATA   #IMPLIED
                   value               NMTOKEN #REQUIRED>
<!ATTLIST function name                NMTOKEN #REQUIRED
                   alias               NMTOKEN #IMPLIED
                   offset              CDATA   #IMPLIED
                   vectorequiv         NMTOKEN #IMPLIED>
<!ATTLIST size     name                NMTOKEN #REQUIRED
                   count               NMTOKEN #IMPLIED
                   mode                NMTOKEN #IMPLIED>
<!ATTLIST param    name                NMTOKEN #REQUIRED
                   type                CDATA   #REQUIRED
                   count               NMTOKEN #IMPLIED
                   counter             (true | false) "false"
                   count_scale         NMTOKEN #IMPLIED
                   output              (true | false) "false"
                   img_width           NMTOKEN #IMPLIED
                   img_height          NMTOKEN #IMPLIED
                   img_depth           NMTOKEN #IMPLIED
                   img_extent          NMTOKEN #IMPLIED
                   img_xoff            NMTOKEN #IMPLIED
                   img_yoff            NMTOKEN #IMPLIED
                   img_zoff            NMTOKEN #IMPLIED
                   img_woff            NMTOKEN #IMPLIED
                   img_format          NMTOKEN #IMPLIED
                   img_type            NMTOKEN #IMPLIED
                   img_target          NMTOKEN #IMPLIED
                   img_send_null       (true | false) "false"
                   img_null_flag       (true | false) "false"
                   img_pad_dimensions  (true | false) "false"
                   variable_param      NMTOKENS #IMPLIED>
<!ATTLIST return   type                CDATA   "void">
<!ATTLIST glx      rop                 NMTOKEN #IMPLIED
                   sop                 NMTOKEN #IMPLIED
                   vendorpriv          NMTOKEN #IMPLIED
                   large               (true | false) "false"
                   doubles_in_order    (true | false) "false"
                   always_array        (true | false) "false"
                   handcode            (true | false | client | server) "false"
                   img_reset           NMTOKEN #IMPLIED
                   dimensions_in_reply (true | false) "false"
                   ignore              (true | false) "false">

<!--
The various attributes for param and glx have the meanings listed below.
When adding new functions, please annote them correctly.  In most cases this
will just mean adding a '<glx ignore="true"/>' tag.

param:
     name - name of the parameter
     type - fully qualified type (e.g., with "const", etc.)
     count - for counted arrays (e.g., the 'lists' parameter to glCallLists),
         the parameter or literal that represents the count.  For functions
         like glVertex3fv it will be a litteral, for others it will be one of
         the parameters.
     counter - this parameter is a counter that will be referenced by the
         'count' attribute in another parameter.
     count_scale - literal value scale factor for the 'count' attribute.
         See ProgramParameters4dvNV for an example.
     output - this parameter is used to store the output of the function.
     variable_param - name of parameter used to determine the number of
         elements referenced by this parameter.  This should be the name of a
         single enum parameter.  Most of the gl*Parameter[if]v functions use
         this.  Additionally, the enums that can be passed should be properly
         annotated.
     img_width / img_height / img_depth / img_extent - name of parameters
         (or hardcoded integer) used for the dimensions of pixel data.
     img_xoff / img_yoff / img_zoff / img_woff - name of parameters used
         for x, y, z, and w offsets of pixel data.
     img_format - name of parameter used as the pixel data format.
     img_type - name of parameter used as the pixel data type.
     img_target - name of parameter used as a texture target.  Non-texture
        pixel data should hardcode 0.
     img_send_null - boolean flag to determine if blank pixel data should
        be sent when a NULL pointer is passed.  This is only used by
        TexImage1D and TexImage2D.
     img_null_flag - boolean flag to determine if an extra flag is used to
        determine if a NULL pixel pointer was passed.  This is used by
        TexSubImage1D, TexSubImage2D, TexImage3D and others.
     img_pad_dimensions - boolean flag to determine if dimension data and
        offset data should be padded to the next even number of dimensions.
        For example, this will insert an empty "height" field after the
        "width" field in the protocol for TexImage1D.

glx:
     rop - Opcode value for "render" commands
     sop - Opcode value for "single" commands
     vendorpriv - Opcode value for vendor private (or vendor private with
         reply) commands
     large - set to "true" of the render command can use RenderLarge protocol.
     doubles_in_order - older commands always put GLdouble data at the
         start of the render packet.  Newer commands (e.g., 
         ProgramEnvParameter4dvARB) put the in the order that they appear
         in the parameter list.
     always_array - some single commands take reply data as an array or as
         return value data (e.g., glGetLightfv).  Other single commands take
         reply data only as an array (e.g., glGetClipPlane).
     handcode - some functions are just too complicated to generate 
         (e.g., glSeperableFilter2D) or operate only on client-side data
         (e.g., glVertexPointer) and must be handcoded.
     ignore - some functions have an entry in the dispatch table, but aren't
         suitable for protocol implementation (e.g., glLockArraysEXT).  This
         also applies to functions that don't have any GLX protocol specified
         (e.g., glGetFogFuncSGIS).
-->