OSDN Git Service

mesa/main: Make FEATURE_feedback follow feature conventions.
[android-x86/external-mesa.git] / docs / MESA_shader_debug.spec
1 Name
2
3     MESA_shader_debug
4
5 Name Strings
6
7     GL_MESA_shader_debug
8
9 Contact
10
11     Brian Paul (brian.paul 'at' tungstengraphics.com)
12     Michal Krol (mjkrol 'at' gmail.com)
13
14 Status
15
16     Obsolete.
17
18 Version
19
20     Last Modified Date: July 30, 2006
21     Author Revision: 0.2
22
23 Number
24
25     TBD
26
27 Dependencies
28
29     OpenGL 1.0 is required.
30
31     The ARB_shader_objects extension is required.
32
33     The ARB_shading_language_100 extension is required.
34
35     The extension is written against the OpenGL 1.5 specification.
36
37     The extension is written against the OpenGL Shading Language 1.10
38     Specification.
39
40 Overview
41
42     This extension introduces a debug object that can be attached to
43     a program object to enable debugging. Vertex and/or fragment shader,
44     during execution, issue diagnostic function calls that are logged
45     to the debug object's log. A separate debug log for each shader type
46     is maintained. A debug object can be attached, detached and queried
47     at any time outside the Begin/End pair. Multiple debug objects can
48     be attached to a single program object.
49
50 IP Status
51
52     None
53
54 Issues
55
56     None
57
58 New Procedures and Functions
59
60     handleARB CreateDebugObjectMESA(void)
61     void ClearDebugLogMESA(handleARB obj, enum logType, enum shaderType)
62     void GetDebugLogMESA(handleARB obj, enum logType, enum shaderType,
63                          sizei maxLength, sizei *length,
64                          charARB *debugLog)
65     sizei GetDebugLogLengthMESA(handleARB obj, enum logType,
66                                 enum shaderType)
67
68 New Types
69
70     None
71
72 New Tokens
73
74     Returned by the <params> parameter of GetObjectParameter{fi}vARB:
75
76         DEBUG_OBJECT_MESA                               0x8759
77
78     Accepted by the <logType> argument of ClearDebugLogMESA,
79     GetDebugLogLengthMESA and GetDebugLogMESA:
80
81         DEBUG_PRINT_MESA                                0x875A
82         DEBUG_ASSERT_MESA                               0x875B
83
84 Additions to Chapter 2 of the OpenGL 1.5 Specification
85 (OpenGL Operation)
86
87     None
88
89 Additions to Chapter 3 of the OpenGL 1.5 Specification (Rasterization)
90
91     None
92
93 Additions to Chapter 4 of the OpenGL 1.5 Specification (Per-Fragment
94 Operations and the Frame Buffer)
95
96     None
97
98 Additions to Chapter 5 of the OpenGL 1.5 Specification
99 (Special Functions)
100
101     None
102
103 Additions to Chapter 6 of the OpenGL 1.5 Specification (State and State
104 Requests)
105
106     None
107
108 Additions to Appendix A of the OpenGL 1.5 Specification (Invariance)
109
110     None
111
112 Additions to Chapter 1 of the OpenGL Shading Language 1.10 Specification
113 (Introduction)
114
115     None
116
117 Additions to Chapter 2 of the OpenGL Shading Language 1.10 Specification
118 (Overview of OpenGL Shading)
119
120     None
121
122 Additions to Chapter 3 of the OpenGL Shading Language 1.10 Specification
123 (Basics)
124
125     None
126
127 Additions to Chapter 4 of the OpenGL Shading Language 1.10 Specification
128 (Variables and Types)
129
130     None
131
132 Additions to Chapter 5 of the OpenGL Shading Language 1.10 Specification
133 (Operators and Expressions)
134
135     None
136
137 Additions to Chapter 6 of the OpenGL Shading Language 1.10 Specification
138 (Statements and Structure)
139
140     None
141
142 Additions to Chapter 7 of the OpenGL Shading Language 1.10 Specification
143 (Built-in Variables)
144
145     None
146
147 Additions to Chapter 8 of the OpenGL Shading Language 1.10 Specification
148 (Built-in Functions)
149
150     Add a new section 8.10 "Debug Functions":
151
152     Debug functions are available to both fragment and vertex shaders.
153     They are used to track the execution of a shader by logging
154     passed-in arguments to the debug object's log. Those values can be
155     retrieved by the application for inspection after shader execution
156     is complete.
157
158     The text, if any, produced by any of these functions is appended
159     to each debug object that is attached to the program object.
160     There are different debug log types
161
162     Add a new section 8.10.1 "Print Function":
163
164     The following printMESA prototypes are available.
165
166         void printMESA(const float value)
167         void printMESA(const int value)
168         void printMESA(const bool value)
169         void printMESA(const vec2 value)
170         void printMESA(const vec3 value)
171         void printMESA(const vec4 value)
172         void printMESA(const ivec2 value)
173         void printMESA(const ivec3 value)
174         void printMESA(const ivec4 value)
175         void printMESA(const bvec2 value)
176         void printMESA(const bvec3 value)
177         void printMESA(const bvec4 value)
178         void printMESA(const mat2 value)
179         void printMESA(const mat3 value)
180         void printMESA(const mat4 value)
181         void printMESA(const sampler1D value)
182         void printMESA(const sampler2D value)
183         void printMESA(const sampler3D value)
184         void printMESA(const samplerCube value)
185         void printMESA(const sampler1DShadow value)
186         void printMESA(const sampler2DShadow value)
187
188     The printMESA function writes the argument <value> to the "debug
189     print log" (XXX DEBUG_PRINT_MESA?). Each component is written in
190     text format (XXX format!) and is delimited by a white space (XXX 1
191     or more?).
192
193     Add a new section 8.10.2 "Assert Function":
194
195     The following assertMESA prototypes are available.
196
197         void assertMESA(const bool condition)
198         void assertMESA(const bool condition, const int cookie)
199         void assertMESA(const bool condition, const int cookie,
200                         const int file, const int line)
201
202     The assertMESA function checks if the argument <condition> is
203     true or false. If it is true, nothing happens. If it is false,
204     a diagnostic message is written to the "debug assert log".
205     The message contains the argument <file>, <line>, <cookie> and
206     implementation dependent double-quoted string, each of this
207     delimited by a white space. If the argument <cookie> is not present,
208     it is meant as if it was of value 0. If the arguments <file> and
209     <line> are not present, they are meant as if they were of values
210     __FILE__ and __LINE__, respectively. The following three calls
211     produce the same output, assuming they were issued from the same
212     file and line.
213
214         assertMESA (false);
215         assertMESA (false, 0);
216         assertMESA (false, 0, __FILE__, __LINE__);
217
218     The diagnostic message examples follow.
219
220         1 89 0 ""
221         1 45 333 "all (lessThanEqual (fragColor, vec4 (1.0)))"
222         1 66 1 "assertion failed in file 1, line 66, cookie 1"
223
224 Additions to Chapter 9 of the OpenGL Shading Language 1.10 Specification
225 (Shading Language Grammar)
226
227     None
228
229 Additions to Chapter 10 of the OpenGL Shading Language 1.10
230 Specification (Issues)
231
232     None
233
234 Additions to the AGL/EGL/GLX/WGL Specifications
235
236     None
237
238 GLX Protocol
239
240     None
241
242 Errors
243
244     TBD
245
246 New State
247
248     TBD
249
250 New Implementation Dependent State
251
252     TBD
253
254 Sample Code
255
256     TBD
257
258 Revision History
259
260     29 May 2006
261         Initial draft. (Michal Krol)
262     30 July 2006
263         Add Overview, New Procedures and Functions, New Tokens sections.
264         Add sections 8.10.1, 8.10.2 to GLSL spec.