]> git.cworth.org Git - apitrace/blob - trace_format.hpp
Add support for GL_APPLE_flush_render
[apitrace] / trace_format.hpp
1 /**************************************************************************
2  *
3  * Copyright 2010 VMware, Inc.
4  * All Rights Reserved.
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22  * THE SOFTWARE.
23  *
24  **************************************************************************/
25
26 /*
27  * Trace binary format.
28  *
29  * Grammar:
30  *
31  *   trace = event* EOF
32  *
33  *   event = EVENT_ENTER call_sig call_detail+
34  *         | EVENT_LEAVE call_no call_detail+
35  *
36  *   call_sig = sig_id ( name arg_names )?
37  *
38  *   call_detail = ARG index value
39  *               | RET value
40  *               | END
41  *
42  *   value = NULL
43  *         | FALSE
44  *         | TRUE
45  *         | SINT int
46  *         | UINT int
47  *         | FLOAT float
48  *         | DOUBLE double
49  *         | STRING string
50  *         | BLOB string
51  *         | ENUM enum_sig
52  *         | BITMASK bitmask_sig value
53  *         | ARRAY length value+
54  *         | STRUCT struct_sig value+
55  *         | OPAQUE int
56  *
57  *   call_sig = id name arg_name*
58  *            | id
59  *
60  *   enum_sig = id name value
61  *            | id
62  *
63  *   bitmask_sig = id count (name value)+
64  *               | id
65  *
66  *   string = length (BYTE)*
67  *
68  */
69
70 #ifndef _TRACE_FORMAT_HPP_
71 #define _TRACE_FORMAT_HPP_
72
73 namespace Trace {
74
75 #define TRACE_VERSION 1
76
77 enum Event {
78     EVENT_ENTER = 0,
79     EVENT_LEAVE,
80 };
81
82 enum CallDetail {
83     CALL_END = 0,
84     CALL_ARG,
85     CALL_RET,
86     CALL_THREAD,
87 };
88
89 enum Type {
90     TYPE_NULL = 0,
91     TYPE_FALSE,
92     TYPE_TRUE,
93     TYPE_SINT,
94     TYPE_UINT,
95     TYPE_FLOAT,
96     TYPE_DOUBLE,
97     TYPE_STRING, // Null terminated, human readible string
98     TYPE_BLOB, // Block of bytes
99     TYPE_ENUM,
100     TYPE_BITMASK,
101     TYPE_ARRAY,
102     TYPE_STRUCT,
103     TYPE_OPAQUE,
104 };
105
106
107 } /* namespace Trace */
108
109 #endif /* _TRACE_FORMAT_HPP_ */