Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5564 | serge | 1 | /************************************************************************** |
2 | * |
||
3 | * Copyright 2007 VMware, Inc. |
||
4 | * All Rights Reserved. |
||
5 | * |
||
6 | * Permission is hereby granted, free of charge, to any person obtaining a |
||
7 | * copy of this software and associated documentation files (the |
||
8 | * "Software"), to deal in the Software without restriction, including |
||
9 | * without limitation the rights to use, copy, modify, merge, publish, |
||
10 | * distribute, sub license, and/or sell copies of the Software, and to |
||
11 | * permit persons to whom the Software is furnished to do so, subject to |
||
12 | * the following conditions: |
||
13 | * |
||
14 | * The above copyright notice and this permission notice (including the |
||
15 | * next paragraph) shall be included in all copies or substantial portions |
||
16 | * of the Software. |
||
17 | * |
||
18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
||
19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||
20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. |
||
21 | * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR |
||
22 | * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
||
23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
||
24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||
25 | * |
||
26 | **************************************************************************/ |
||
27 | |||
28 | #ifndef PIPE_DEFINES_H |
||
29 | #define PIPE_DEFINES_H |
||
30 | |||
31 | #include "p_compiler.h" |
||
32 | |||
33 | #ifdef __cplusplus |
||
34 | extern "C" { |
||
35 | #endif |
||
36 | |||
37 | /** |
||
38 | * Gallium error codes. |
||
39 | * |
||
40 | * - A zero value always means success. |
||
41 | * - A negative value always means failure. |
||
42 | * - The meaning of a positive value is function dependent. |
||
43 | */ |
||
44 | enum pipe_error |
||
45 | { |
||
46 | PIPE_OK = 0, |
||
47 | PIPE_ERROR = -1, /**< Generic error */ |
||
48 | PIPE_ERROR_BAD_INPUT = -2, |
||
49 | PIPE_ERROR_OUT_OF_MEMORY = -3, |
||
50 | PIPE_ERROR_RETRY = -4 |
||
51 | /* TODO */ |
||
52 | }; |
||
53 | |||
54 | |||
55 | #define PIPE_BLENDFACTOR_ONE 0x1 |
||
56 | #define PIPE_BLENDFACTOR_SRC_COLOR 0x2 |
||
57 | #define PIPE_BLENDFACTOR_SRC_ALPHA 0x3 |
||
58 | #define PIPE_BLENDFACTOR_DST_ALPHA 0x4 |
||
59 | #define PIPE_BLENDFACTOR_DST_COLOR 0x5 |
||
60 | #define PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE 0x6 |
||
61 | #define PIPE_BLENDFACTOR_CONST_COLOR 0x7 |
||
62 | #define PIPE_BLENDFACTOR_CONST_ALPHA 0x8 |
||
63 | #define PIPE_BLENDFACTOR_SRC1_COLOR 0x9 |
||
64 | #define PIPE_BLENDFACTOR_SRC1_ALPHA 0x0A |
||
65 | #define PIPE_BLENDFACTOR_ZERO 0x11 |
||
66 | #define PIPE_BLENDFACTOR_INV_SRC_COLOR 0x12 |
||
67 | #define PIPE_BLENDFACTOR_INV_SRC_ALPHA 0x13 |
||
68 | #define PIPE_BLENDFACTOR_INV_DST_ALPHA 0x14 |
||
69 | #define PIPE_BLENDFACTOR_INV_DST_COLOR 0x15 |
||
70 | #define PIPE_BLENDFACTOR_INV_CONST_COLOR 0x17 |
||
71 | #define PIPE_BLENDFACTOR_INV_CONST_ALPHA 0x18 |
||
72 | #define PIPE_BLENDFACTOR_INV_SRC1_COLOR 0x19 |
||
73 | #define PIPE_BLENDFACTOR_INV_SRC1_ALPHA 0x1A |
||
74 | |||
75 | #define PIPE_BLEND_ADD 0 |
||
76 | #define PIPE_BLEND_SUBTRACT 1 |
||
77 | #define PIPE_BLEND_REVERSE_SUBTRACT 2 |
||
78 | #define PIPE_BLEND_MIN 3 |
||
79 | #define PIPE_BLEND_MAX 4 |
||
80 | |||
81 | #define PIPE_LOGICOP_CLEAR 0 |
||
82 | #define PIPE_LOGICOP_NOR 1 |
||
83 | #define PIPE_LOGICOP_AND_INVERTED 2 |
||
84 | #define PIPE_LOGICOP_COPY_INVERTED 3 |
||
85 | #define PIPE_LOGICOP_AND_REVERSE 4 |
||
86 | #define PIPE_LOGICOP_INVERT 5 |
||
87 | #define PIPE_LOGICOP_XOR 6 |
||
88 | #define PIPE_LOGICOP_NAND 7 |
||
89 | #define PIPE_LOGICOP_AND 8 |
||
90 | #define PIPE_LOGICOP_EQUIV 9 |
||
91 | #define PIPE_LOGICOP_NOOP 10 |
||
92 | #define PIPE_LOGICOP_OR_INVERTED 11 |
||
93 | #define PIPE_LOGICOP_COPY 12 |
||
94 | #define PIPE_LOGICOP_OR_REVERSE 13 |
||
95 | #define PIPE_LOGICOP_OR 14 |
||
96 | #define PIPE_LOGICOP_SET 15 |
||
97 | |||
98 | #define PIPE_MASK_R 0x1 |
||
99 | #define PIPE_MASK_G 0x2 |
||
100 | #define PIPE_MASK_B 0x4 |
||
101 | #define PIPE_MASK_A 0x8 |
||
102 | #define PIPE_MASK_RGBA 0xf |
||
103 | #define PIPE_MASK_Z 0x10 |
||
104 | #define PIPE_MASK_S 0x20 |
||
105 | #define PIPE_MASK_ZS 0x30 |
||
106 | #define PIPE_MASK_RGBAZS (PIPE_MASK_RGBA|PIPE_MASK_ZS) |
||
107 | |||
108 | |||
109 | /** |
||
110 | * Inequality functions. Used for depth test, stencil compare, alpha |
||
111 | * test, shadow compare, etc. |
||
112 | */ |
||
113 | #define PIPE_FUNC_NEVER 0 |
||
114 | #define PIPE_FUNC_LESS 1 |
||
115 | #define PIPE_FUNC_EQUAL 2 |
||
116 | #define PIPE_FUNC_LEQUAL 3 |
||
117 | #define PIPE_FUNC_GREATER 4 |
||
118 | #define PIPE_FUNC_NOTEQUAL 5 |
||
119 | #define PIPE_FUNC_GEQUAL 6 |
||
120 | #define PIPE_FUNC_ALWAYS 7 |
||
121 | |||
122 | /** Polygon fill mode */ |
||
123 | #define PIPE_POLYGON_MODE_FILL 0 |
||
124 | #define PIPE_POLYGON_MODE_LINE 1 |
||
125 | #define PIPE_POLYGON_MODE_POINT 2 |
||
126 | |||
127 | /** Polygon face specification, eg for culling */ |
||
128 | #define PIPE_FACE_NONE 0 |
||
129 | #define PIPE_FACE_FRONT 1 |
||
130 | #define PIPE_FACE_BACK 2 |
||
131 | #define PIPE_FACE_FRONT_AND_BACK (PIPE_FACE_FRONT | PIPE_FACE_BACK) |
||
132 | |||
133 | /** Stencil ops */ |
||
134 | #define PIPE_STENCIL_OP_KEEP 0 |
||
135 | #define PIPE_STENCIL_OP_ZERO 1 |
||
136 | #define PIPE_STENCIL_OP_REPLACE 2 |
||
137 | #define PIPE_STENCIL_OP_INCR 3 |
||
138 | #define PIPE_STENCIL_OP_DECR 4 |
||
139 | #define PIPE_STENCIL_OP_INCR_WRAP 5 |
||
140 | #define PIPE_STENCIL_OP_DECR_WRAP 6 |
||
141 | #define PIPE_STENCIL_OP_INVERT 7 |
||
142 | |||
143 | /** Texture types. |
||
144 | * See the documentation for info on PIPE_TEXTURE_RECT vs PIPE_TEXTURE_2D |
||
145 | */ |
||
146 | enum pipe_texture_target |
||
147 | { |
||
148 | PIPE_BUFFER = 0, |
||
149 | PIPE_TEXTURE_1D = 1, |
||
150 | PIPE_TEXTURE_2D = 2, |
||
151 | PIPE_TEXTURE_3D = 3, |
||
152 | PIPE_TEXTURE_CUBE = 4, |
||
153 | PIPE_TEXTURE_RECT = 5, |
||
154 | PIPE_TEXTURE_1D_ARRAY = 6, |
||
155 | PIPE_TEXTURE_2D_ARRAY = 7, |
||
156 | PIPE_TEXTURE_CUBE_ARRAY = 8, |
||
157 | PIPE_MAX_TEXTURE_TYPES |
||
158 | }; |
||
159 | |||
160 | #define PIPE_TEX_FACE_POS_X 0 |
||
161 | #define PIPE_TEX_FACE_NEG_X 1 |
||
162 | #define PIPE_TEX_FACE_POS_Y 2 |
||
163 | #define PIPE_TEX_FACE_NEG_Y 3 |
||
164 | #define PIPE_TEX_FACE_POS_Z 4 |
||
165 | #define PIPE_TEX_FACE_NEG_Z 5 |
||
166 | #define PIPE_TEX_FACE_MAX 6 |
||
167 | |||
168 | #define PIPE_TEX_WRAP_REPEAT 0 |
||
169 | #define PIPE_TEX_WRAP_CLAMP 1 |
||
170 | #define PIPE_TEX_WRAP_CLAMP_TO_EDGE 2 |
||
171 | #define PIPE_TEX_WRAP_CLAMP_TO_BORDER 3 |
||
172 | #define PIPE_TEX_WRAP_MIRROR_REPEAT 4 |
||
173 | #define PIPE_TEX_WRAP_MIRROR_CLAMP 5 |
||
174 | #define PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE 6 |
||
175 | #define PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER 7 |
||
176 | |||
177 | /** Between mipmaps, ie mipfilter */ |
||
178 | #define PIPE_TEX_MIPFILTER_NEAREST 0 |
||
179 | #define PIPE_TEX_MIPFILTER_LINEAR 1 |
||
180 | #define PIPE_TEX_MIPFILTER_NONE 2 |
||
181 | |||
182 | /** Within a mipmap, ie min/mag filter */ |
||
183 | #define PIPE_TEX_FILTER_NEAREST 0 |
||
184 | #define PIPE_TEX_FILTER_LINEAR 1 |
||
185 | |||
186 | #define PIPE_TEX_COMPARE_NONE 0 |
||
187 | #define PIPE_TEX_COMPARE_R_TO_TEXTURE 1 |
||
188 | |||
189 | /** |
||
190 | * Clear buffer bits |
||
191 | */ |
||
192 | #define PIPE_CLEAR_DEPTH (1 << 0) |
||
193 | #define PIPE_CLEAR_STENCIL (1 << 1) |
||
194 | #define PIPE_CLEAR_COLOR0 (1 << 2) |
||
195 | #define PIPE_CLEAR_COLOR1 (1 << 3) |
||
196 | #define PIPE_CLEAR_COLOR2 (1 << 4) |
||
197 | #define PIPE_CLEAR_COLOR3 (1 << 5) |
||
198 | #define PIPE_CLEAR_COLOR4 (1 << 6) |
||
199 | #define PIPE_CLEAR_COLOR5 (1 << 7) |
||
200 | #define PIPE_CLEAR_COLOR6 (1 << 8) |
||
201 | #define PIPE_CLEAR_COLOR7 (1 << 9) |
||
202 | /** Combined flags */ |
||
203 | /** All color buffers currently bound */ |
||
204 | #define PIPE_CLEAR_COLOR (PIPE_CLEAR_COLOR0 | PIPE_CLEAR_COLOR1 | \ |
||
205 | PIPE_CLEAR_COLOR2 | PIPE_CLEAR_COLOR3 | \ |
||
206 | PIPE_CLEAR_COLOR4 | PIPE_CLEAR_COLOR5 | \ |
||
207 | PIPE_CLEAR_COLOR6 | PIPE_CLEAR_COLOR7) |
||
208 | #define PIPE_CLEAR_DEPTHSTENCIL (PIPE_CLEAR_DEPTH | PIPE_CLEAR_STENCIL) |
||
209 | |||
210 | /** |
||
211 | * Transfer object usage flags |
||
212 | */ |
||
213 | enum pipe_transfer_usage |
||
214 | { |
||
215 | /** |
||
216 | * Resource contents read back (or accessed directly) at transfer |
||
217 | * create time. |
||
218 | */ |
||
219 | PIPE_TRANSFER_READ = (1 << 0), |
||
220 | |||
221 | /** |
||
222 | * Resource contents will be written back at transfer_unmap |
||
223 | * time (or modified as a result of being accessed directly). |
||
224 | */ |
||
225 | PIPE_TRANSFER_WRITE = (1 << 1), |
||
226 | |||
227 | /** |
||
228 | * Read/modify/write |
||
229 | */ |
||
230 | PIPE_TRANSFER_READ_WRITE = PIPE_TRANSFER_READ | PIPE_TRANSFER_WRITE, |
||
231 | |||
232 | /** |
||
233 | * The transfer should map the texture storage directly. The driver may |
||
234 | * return NULL if that isn't possible, and the state tracker needs to cope |
||
235 | * with that and use an alternative path without this flag. |
||
236 | * |
||
237 | * E.g. the state tracker could have a simpler path which maps textures and |
||
238 | * does read/modify/write cycles on them directly, and a more complicated |
||
239 | * path which uses minimal read and write transfers. |
||
240 | */ |
||
241 | PIPE_TRANSFER_MAP_DIRECTLY = (1 << 2), |
||
242 | |||
243 | /** |
||
244 | * Discards the memory within the mapped region. |
||
245 | * |
||
246 | * It should not be used with PIPE_TRANSFER_READ. |
||
247 | * |
||
248 | * See also: |
||
249 | * - OpenGL's ARB_map_buffer_range extension, MAP_INVALIDATE_RANGE_BIT flag. |
||
250 | */ |
||
251 | PIPE_TRANSFER_DISCARD_RANGE = (1 << 8), |
||
252 | |||
253 | /** |
||
254 | * Fail if the resource cannot be mapped immediately. |
||
255 | * |
||
256 | * See also: |
||
257 | * - Direct3D's D3DLOCK_DONOTWAIT flag. |
||
258 | * - Mesa3D's MESA_MAP_NOWAIT_BIT flag. |
||
259 | * - WDDM's D3DDDICB_LOCKFLAGS.DonotWait flag. |
||
260 | */ |
||
261 | PIPE_TRANSFER_DONTBLOCK = (1 << 9), |
||
262 | |||
263 | /** |
||
264 | * Do not attempt to synchronize pending operations on the resource when mapping. |
||
265 | * |
||
266 | * It should not be used with PIPE_TRANSFER_READ. |
||
267 | * |
||
268 | * See also: |
||
269 | * - OpenGL's ARB_map_buffer_range extension, MAP_UNSYNCHRONIZED_BIT flag. |
||
270 | * - Direct3D's D3DLOCK_NOOVERWRITE flag. |
||
271 | * - WDDM's D3DDDICB_LOCKFLAGS.IgnoreSync flag. |
||
272 | */ |
||
273 | PIPE_TRANSFER_UNSYNCHRONIZED = (1 << 10), |
||
274 | |||
275 | /** |
||
276 | * Written ranges will be notified later with |
||
277 | * pipe_context::transfer_flush_region. |
||
278 | * |
||
279 | * It should not be used with PIPE_TRANSFER_READ. |
||
280 | * |
||
281 | * See also: |
||
282 | * - pipe_context::transfer_flush_region |
||
283 | * - OpenGL's ARB_map_buffer_range extension, MAP_FLUSH_EXPLICIT_BIT flag. |
||
284 | */ |
||
285 | PIPE_TRANSFER_FLUSH_EXPLICIT = (1 << 11), |
||
286 | |||
287 | /** |
||
288 | * Discards all memory backing the resource. |
||
289 | * |
||
290 | * It should not be used with PIPE_TRANSFER_READ. |
||
291 | * |
||
292 | * This is equivalent to: |
||
293 | * - OpenGL's ARB_map_buffer_range extension, MAP_INVALIDATE_BUFFER_BIT |
||
294 | * - BufferData(NULL) on a GL buffer |
||
295 | * - Direct3D's D3DLOCK_DISCARD flag. |
||
296 | * - WDDM's D3DDDICB_LOCKFLAGS.Discard flag. |
||
297 | * - D3D10 DDI's D3D10_DDI_MAP_WRITE_DISCARD flag |
||
298 | * - D3D10's D3D10_MAP_WRITE_DISCARD flag. |
||
299 | */ |
||
300 | PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE = (1 << 12), |
||
301 | |||
302 | /** |
||
303 | * Allows the resource to be used for rendering while mapped. |
||
304 | * |
||
305 | * PIPE_RESOURCE_FLAG_MAP_PERSISTENT must be set when creating |
||
306 | * the resource. |
||
307 | * |
||
308 | * If COHERENT is not set, memory_barrier(PIPE_BARRIER_MAPPED_BUFFER) |
||
309 | * must be called to ensure the device can see what the CPU has written. |
||
310 | */ |
||
311 | PIPE_TRANSFER_PERSISTENT = (1 << 13), |
||
312 | |||
313 | /** |
||
314 | * If PERSISTENT is set, this ensures any writes done by the device are |
||
315 | * immediately visible to the CPU and vice versa. |
||
316 | * |
||
317 | * PIPE_RESOURCE_FLAG_MAP_COHERENT must be set when creating |
||
318 | * the resource. |
||
319 | */ |
||
320 | PIPE_TRANSFER_COHERENT = (1 << 14) |
||
321 | }; |
||
322 | |||
323 | /** |
||
324 | * Flags for the flush function. |
||
325 | */ |
||
326 | enum pipe_flush_flags |
||
327 | { |
||
328 | PIPE_FLUSH_END_OF_FRAME = (1 << 0) |
||
329 | }; |
||
330 | |||
331 | /** |
||
332 | * Flags for pipe_context::memory_barrier. |
||
333 | */ |
||
334 | #define PIPE_BARRIER_MAPPED_BUFFER (1 << 0) |
||
335 | |||
336 | /** |
||
337 | * Resource binding flags -- state tracker must specify in advance all |
||
338 | * the ways a resource might be used. |
||
339 | */ |
||
340 | #define PIPE_BIND_DEPTH_STENCIL (1 << 0) /* create_surface */ |
||
341 | #define PIPE_BIND_RENDER_TARGET (1 << 1) /* create_surface */ |
||
342 | #define PIPE_BIND_BLENDABLE (1 << 2) /* create_surface */ |
||
343 | #define PIPE_BIND_SAMPLER_VIEW (1 << 3) /* create_sampler_view */ |
||
344 | #define PIPE_BIND_VERTEX_BUFFER (1 << 4) /* set_vertex_buffers */ |
||
345 | #define PIPE_BIND_INDEX_BUFFER (1 << 5) /* draw_elements */ |
||
346 | #define PIPE_BIND_CONSTANT_BUFFER (1 << 6) /* set_constant_buffer */ |
||
347 | #define PIPE_BIND_DISPLAY_TARGET (1 << 7) /* flush_front_buffer */ |
||
348 | #define PIPE_BIND_TRANSFER_WRITE (1 << 8) /* transfer_map */ |
||
349 | #define PIPE_BIND_TRANSFER_READ (1 << 9) /* transfer_map */ |
||
350 | #define PIPE_BIND_STREAM_OUTPUT (1 << 10) /* set_stream_output_buffers */ |
||
351 | #define PIPE_BIND_CURSOR (1 << 11) /* mouse cursor */ |
||
352 | #define PIPE_BIND_CUSTOM (1 << 12) /* state-tracker/winsys usages */ |
||
353 | #define PIPE_BIND_GLOBAL (1 << 13) /* set_global_binding */ |
||
354 | #define PIPE_BIND_SHADER_RESOURCE (1 << 14) /* set_shader_resources */ |
||
355 | #define PIPE_BIND_COMPUTE_RESOURCE (1 << 15) /* set_compute_resources */ |
||
356 | #define PIPE_BIND_COMMAND_ARGS_BUFFER (1 << 16) /* pipe_draw_info.indirect */ |
||
357 | |||
358 | /** |
||
359 | * The first two flags above were previously part of the amorphous |
||
360 | * TEXTURE_USAGE, most of which are now descriptions of the ways a |
||
361 | * particular texture can be bound to the gallium pipeline. The two flags |
||
362 | * below do not fit within that and probably need to be migrated to some |
||
363 | * other place. |
||
364 | * |
||
365 | * It seems like scanout is used by the Xorg state tracker to ask for |
||
366 | * a texture suitable for actual scanout (hence the name), which |
||
367 | * implies extra layout constraints on some hardware. It may also |
||
368 | * have some special meaning regarding mouse cursor images. |
||
369 | * |
||
370 | * The shared flag is quite underspecified, but certainly isn't a |
||
371 | * binding flag - it seems more like a message to the winsys to create |
||
372 | * a shareable allocation. |
||
373 | * |
||
374 | * The third flag has been added to be able to force textures to be created |
||
375 | * in linear mode (no tiling). |
||
376 | */ |
||
377 | #define PIPE_BIND_SCANOUT (1 << 17) /* */ |
||
378 | #define PIPE_BIND_SHARED (1 << 18) /* get_texture_handle ??? */ |
||
379 | #define PIPE_BIND_LINEAR (1 << 19) |
||
380 | |||
381 | |||
382 | /** |
||
383 | * Flags for the driver about resource behaviour: |
||
384 | */ |
||
385 | #define PIPE_RESOURCE_FLAG_MAP_PERSISTENT (1 << 0) |
||
386 | #define PIPE_RESOURCE_FLAG_MAP_COHERENT (1 << 1) |
||
387 | #define PIPE_RESOURCE_FLAG_DRV_PRIV (1 << 16) /* driver/winsys private */ |
||
388 | #define PIPE_RESOURCE_FLAG_ST_PRIV (1 << 24) /* state-tracker/winsys private */ |
||
389 | |||
390 | /** |
||
391 | * Hint about the expected lifecycle of a resource. |
||
392 | * Sorted according to GPU vs CPU access. |
||
393 | */ |
||
394 | #define PIPE_USAGE_DEFAULT 0 /* fast GPU access */ |
||
395 | #define PIPE_USAGE_IMMUTABLE 1 /* fast GPU access, immutable */ |
||
396 | #define PIPE_USAGE_DYNAMIC 2 /* uploaded data is used multiple times */ |
||
397 | #define PIPE_USAGE_STREAM 3 /* uploaded data is used once */ |
||
398 | #define PIPE_USAGE_STAGING 4 /* fast CPU access */ |
||
399 | |||
400 | |||
401 | /** |
||
402 | * Shaders |
||
403 | */ |
||
404 | #define PIPE_SHADER_VERTEX 0 |
||
405 | #define PIPE_SHADER_FRAGMENT 1 |
||
406 | #define PIPE_SHADER_GEOMETRY 2 |
||
407 | #define PIPE_SHADER_TESS_CTRL 3 |
||
408 | #define PIPE_SHADER_TESS_EVAL 4 |
||
409 | #define PIPE_SHADER_COMPUTE 5 |
||
410 | #define PIPE_SHADER_TYPES 6 |
||
411 | |||
412 | |||
413 | /** |
||
414 | * Primitive types: |
||
415 | */ |
||
416 | #define PIPE_PRIM_POINTS 0 |
||
417 | #define PIPE_PRIM_LINES 1 |
||
418 | #define PIPE_PRIM_LINE_LOOP 2 |
||
419 | #define PIPE_PRIM_LINE_STRIP 3 |
||
420 | #define PIPE_PRIM_TRIANGLES 4 |
||
421 | #define PIPE_PRIM_TRIANGLE_STRIP 5 |
||
422 | #define PIPE_PRIM_TRIANGLE_FAN 6 |
||
423 | #define PIPE_PRIM_QUADS 7 |
||
424 | #define PIPE_PRIM_QUAD_STRIP 8 |
||
425 | #define PIPE_PRIM_POLYGON 9 |
||
426 | #define PIPE_PRIM_LINES_ADJACENCY 10 |
||
427 | #define PIPE_PRIM_LINE_STRIP_ADJACENCY 11 |
||
428 | #define PIPE_PRIM_TRIANGLES_ADJACENCY 12 |
||
429 | #define PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY 13 |
||
430 | #define PIPE_PRIM_PATCHES 14 |
||
431 | #define PIPE_PRIM_MAX 15 |
||
432 | |||
433 | |||
434 | /** |
||
435 | * Tessellator spacing types |
||
436 | */ |
||
437 | #define PIPE_TESS_SPACING_FRACTIONAL_ODD 0 |
||
438 | #define PIPE_TESS_SPACING_FRACTIONAL_EVEN 1 |
||
439 | #define PIPE_TESS_SPACING_EQUAL 2 |
||
440 | |||
441 | /** |
||
442 | * Query object types |
||
443 | */ |
||
444 | #define PIPE_QUERY_OCCLUSION_COUNTER 0 |
||
445 | #define PIPE_QUERY_OCCLUSION_PREDICATE 1 |
||
446 | #define PIPE_QUERY_TIMESTAMP 2 |
||
447 | #define PIPE_QUERY_TIMESTAMP_DISJOINT 3 |
||
448 | #define PIPE_QUERY_TIME_ELAPSED 4 |
||
449 | #define PIPE_QUERY_PRIMITIVES_GENERATED 5 |
||
450 | #define PIPE_QUERY_PRIMITIVES_EMITTED 6 |
||
451 | #define PIPE_QUERY_SO_STATISTICS 7 |
||
452 | #define PIPE_QUERY_SO_OVERFLOW_PREDICATE 8 |
||
453 | #define PIPE_QUERY_GPU_FINISHED 9 |
||
454 | #define PIPE_QUERY_PIPELINE_STATISTICS 10 |
||
455 | #define PIPE_QUERY_TYPES 11 |
||
456 | /* start of driver queries, see pipe_screen::get_driver_query_info */ |
||
457 | #define PIPE_QUERY_DRIVER_SPECIFIC 256 |
||
458 | |||
459 | |||
460 | /** |
||
461 | * Conditional rendering modes |
||
462 | */ |
||
463 | #define PIPE_RENDER_COND_WAIT 0 |
||
464 | #define PIPE_RENDER_COND_NO_WAIT 1 |
||
465 | #define PIPE_RENDER_COND_BY_REGION_WAIT 2 |
||
466 | #define PIPE_RENDER_COND_BY_REGION_NO_WAIT 3 |
||
467 | |||
468 | |||
469 | /** |
||
470 | * Point sprite coord modes |
||
471 | */ |
||
472 | #define PIPE_SPRITE_COORD_UPPER_LEFT 0 |
||
473 | #define PIPE_SPRITE_COORD_LOWER_LEFT 1 |
||
474 | |||
475 | |||
476 | /** |
||
477 | * Texture swizzles |
||
478 | */ |
||
479 | #define PIPE_SWIZZLE_RED 0 |
||
480 | #define PIPE_SWIZZLE_GREEN 1 |
||
481 | #define PIPE_SWIZZLE_BLUE 2 |
||
482 | #define PIPE_SWIZZLE_ALPHA 3 |
||
483 | #define PIPE_SWIZZLE_ZERO 4 |
||
484 | #define PIPE_SWIZZLE_ONE 5 |
||
485 | |||
486 | |||
487 | #define PIPE_TIMEOUT_INFINITE 0xffffffffffffffffull |
||
488 | |||
489 | |||
490 | /** |
||
491 | * Device reset status. |
||
492 | */ |
||
493 | enum pipe_reset_status |
||
494 | { |
||
495 | PIPE_NO_RESET = 0, |
||
496 | PIPE_GUILTY_CONTEXT_RESET = 1, |
||
497 | PIPE_INNOCENT_CONTEXT_RESET = 2, |
||
498 | PIPE_UNKNOWN_CONTEXT_RESET = 3 |
||
499 | }; |
||
500 | |||
501 | |||
502 | /** |
||
503 | * Implementation capabilities/limits which are queried through |
||
504 | * pipe_screen::get_param() |
||
505 | */ |
||
506 | enum pipe_cap |
||
507 | { |
||
508 | PIPE_CAP_NPOT_TEXTURES = 1, |
||
509 | PIPE_CAP_TWO_SIDED_STENCIL = 2, |
||
510 | PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS = 4, |
||
511 | PIPE_CAP_ANISOTROPIC_FILTER = 5, |
||
512 | PIPE_CAP_POINT_SPRITE = 6, |
||
513 | PIPE_CAP_MAX_RENDER_TARGETS = 7, |
||
514 | PIPE_CAP_OCCLUSION_QUERY = 8, |
||
515 | PIPE_CAP_QUERY_TIME_ELAPSED = 9, |
||
516 | PIPE_CAP_TEXTURE_SHADOW_MAP = 10, |
||
517 | PIPE_CAP_TEXTURE_SWIZZLE = 11, |
||
518 | PIPE_CAP_MAX_TEXTURE_2D_LEVELS = 12, |
||
519 | PIPE_CAP_MAX_TEXTURE_3D_LEVELS = 13, |
||
520 | PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS = 14, |
||
521 | PIPE_CAP_TEXTURE_MIRROR_CLAMP = 25, |
||
522 | PIPE_CAP_BLEND_EQUATION_SEPARATE = 28, |
||
523 | PIPE_CAP_SM3 = 29, /*< Shader Model, supported */ |
||
524 | PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS = 30, |
||
525 | PIPE_CAP_PRIMITIVE_RESTART = 31, |
||
526 | /** blend enables and write masks per rendertarget */ |
||
527 | PIPE_CAP_INDEP_BLEND_ENABLE = 33, |
||
528 | /** different blend funcs per rendertarget */ |
||
529 | PIPE_CAP_INDEP_BLEND_FUNC = 34, |
||
530 | PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS = 36, |
||
531 | PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT = 37, |
||
532 | PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT = 38, |
||
533 | PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER = 39, |
||
534 | PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER = 40, |
||
535 | PIPE_CAP_DEPTH_CLIP_DISABLE = 41, |
||
536 | PIPE_CAP_SHADER_STENCIL_EXPORT = 42, |
||
537 | PIPE_CAP_TGSI_INSTANCEID = 43, |
||
538 | PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR = 44, |
||
539 | PIPE_CAP_FRAGMENT_COLOR_CLAMPED = 45, |
||
540 | PIPE_CAP_MIXED_COLORBUFFER_FORMATS = 46, |
||
541 | PIPE_CAP_SEAMLESS_CUBE_MAP = 47, |
||
542 | PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE = 48, |
||
543 | PIPE_CAP_MIN_TEXEL_OFFSET = 50, |
||
544 | PIPE_CAP_MAX_TEXEL_OFFSET = 51, |
||
545 | PIPE_CAP_CONDITIONAL_RENDER = 52, |
||
546 | PIPE_CAP_TEXTURE_BARRIER = 53, |
||
547 | PIPE_CAP_MAX_STREAM_OUTPUT_SEPARATE_COMPONENTS = 55, |
||
548 | PIPE_CAP_MAX_STREAM_OUTPUT_INTERLEAVED_COMPONENTS = 56, |
||
549 | PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME = 57, |
||
550 | PIPE_CAP_TGSI_CAN_COMPACT_CONSTANTS = 59, /* temporary */ |
||
551 | PIPE_CAP_VERTEX_COLOR_UNCLAMPED = 60, |
||
552 | PIPE_CAP_VERTEX_COLOR_CLAMPED = 61, |
||
553 | PIPE_CAP_GLSL_FEATURE_LEVEL = 62, |
||
554 | PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 63, |
||
555 | PIPE_CAP_USER_VERTEX_BUFFERS = 64, |
||
556 | PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY = 65, |
||
557 | PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY = 66, |
||
558 | PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY = 67, |
||
559 | PIPE_CAP_COMPUTE = 68, |
||
560 | PIPE_CAP_USER_INDEX_BUFFERS = 69, |
||
561 | PIPE_CAP_USER_CONSTANT_BUFFERS = 70, |
||
562 | PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT = 71, |
||
563 | PIPE_CAP_START_INSTANCE = 72, |
||
564 | PIPE_CAP_QUERY_TIMESTAMP = 73, |
||
565 | PIPE_CAP_TEXTURE_MULTISAMPLE = 74, |
||
566 | PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT = 75, |
||
567 | PIPE_CAP_CUBE_MAP_ARRAY = 76, |
||
568 | PIPE_CAP_TEXTURE_BUFFER_OBJECTS = 77, |
||
569 | PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT = 78, |
||
570 | PIPE_CAP_TGSI_TEXCOORD = 79, |
||
571 | PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER = 80, |
||
572 | PIPE_CAP_QUERY_PIPELINE_STATISTICS = 81, |
||
573 | PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK = 82, |
||
574 | PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE = 83, |
||
575 | PIPE_CAP_MAX_VIEWPORTS = 84, |
||
576 | PIPE_CAP_ENDIANNESS = 85, |
||
577 | PIPE_CAP_MIXED_FRAMEBUFFER_SIZES = 86, |
||
578 | PIPE_CAP_TGSI_VS_LAYER_VIEWPORT = 87, |
||
579 | PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES = 88, |
||
580 | PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 89, |
||
581 | PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS = 90, |
||
582 | PIPE_CAP_TEXTURE_GATHER_SM5 = 91, |
||
583 | PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT = 92, |
||
584 | PIPE_CAP_FAKE_SW_MSAA = 93, |
||
585 | PIPE_CAP_TEXTURE_QUERY_LOD = 94, |
||
586 | PIPE_CAP_MIN_TEXTURE_GATHER_OFFSET = 95, |
||
587 | PIPE_CAP_MAX_TEXTURE_GATHER_OFFSET = 96, |
||
588 | PIPE_CAP_SAMPLE_SHADING = 97, |
||
589 | PIPE_CAP_TEXTURE_GATHER_OFFSETS = 98, |
||
590 | PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION = 99, |
||
591 | PIPE_CAP_MAX_VERTEX_STREAMS = 100, |
||
592 | PIPE_CAP_DRAW_INDIRECT = 101, |
||
593 | PIPE_CAP_TGSI_FS_FINE_DERIVATIVE = 102, |
||
594 | PIPE_CAP_VENDOR_ID = 103, |
||
595 | PIPE_CAP_DEVICE_ID = 104, |
||
596 | PIPE_CAP_ACCELERATED = 105, |
||
597 | PIPE_CAP_VIDEO_MEMORY = 106, |
||
598 | PIPE_CAP_UMA = 107, |
||
599 | PIPE_CAP_CONDITIONAL_RENDER_INVERTED = 108, |
||
600 | PIPE_CAP_MAX_VERTEX_ATTRIB_STRIDE = 109, |
||
601 | PIPE_CAP_SAMPLER_VIEW_TARGET = 110, |
||
602 | PIPE_CAP_CLIP_HALFZ = 111, |
||
603 | PIPE_CAP_VERTEXID_NOBASE = 112, |
||
604 | PIPE_CAP_POLYGON_OFFSET_CLAMP = 113, |
||
605 | PIPE_CAP_MULTISAMPLE_Z_RESOLVE = 114, |
||
606 | PIPE_CAP_RESOURCE_FROM_USER_MEMORY = 115, |
||
607 | PIPE_CAP_DEVICE_RESET_STATUS_QUERY = 116, |
||
608 | }; |
||
609 | |||
610 | #define PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 (1 << 0) |
||
611 | #define PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_R600 (1 << 1) |
||
612 | |||
613 | enum pipe_endian |
||
614 | { |
||
615 | PIPE_ENDIAN_LITTLE = 0, |
||
616 | PIPE_ENDIAN_BIG = 1, |
||
617 | #if defined(PIPE_ARCH_LITTLE_ENDIAN) |
||
618 | PIPE_ENDIAN_NATIVE = PIPE_ENDIAN_LITTLE |
||
619 | #elif defined(PIPE_ARCH_BIG_ENDIAN) |
||
620 | PIPE_ENDIAN_NATIVE = PIPE_ENDIAN_BIG |
||
621 | #endif |
||
622 | }; |
||
623 | |||
624 | /** |
||
625 | * Implementation limits which are queried through |
||
626 | * pipe_screen::get_paramf() |
||
627 | */ |
||
628 | enum pipe_capf |
||
629 | { |
||
630 | PIPE_CAPF_MAX_LINE_WIDTH, |
||
631 | PIPE_CAPF_MAX_LINE_WIDTH_AA, |
||
632 | PIPE_CAPF_MAX_POINT_WIDTH, |
||
633 | PIPE_CAPF_MAX_POINT_WIDTH_AA, |
||
634 | PIPE_CAPF_MAX_TEXTURE_ANISOTROPY, |
||
635 | PIPE_CAPF_MAX_TEXTURE_LOD_BIAS, |
||
636 | PIPE_CAPF_GUARD_BAND_LEFT, |
||
637 | PIPE_CAPF_GUARD_BAND_TOP, |
||
638 | PIPE_CAPF_GUARD_BAND_RIGHT, |
||
639 | PIPE_CAPF_GUARD_BAND_BOTTOM |
||
640 | }; |
||
641 | |||
642 | /** Shader caps not specific to any single stage */ |
||
643 | enum pipe_shader_cap |
||
644 | { |
||
645 | PIPE_SHADER_CAP_MAX_INSTRUCTIONS, /* if 0, it means the stage is unsupported */ |
||
646 | PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS, |
||
647 | PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS, |
||
648 | PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS, |
||
649 | PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH, |
||
650 | PIPE_SHADER_CAP_MAX_INPUTS, |
||
651 | PIPE_SHADER_CAP_MAX_OUTPUTS, |
||
652 | PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE, |
||
653 | PIPE_SHADER_CAP_MAX_CONST_BUFFERS, |
||
654 | PIPE_SHADER_CAP_MAX_TEMPS, |
||
655 | PIPE_SHADER_CAP_MAX_PREDS, |
||
656 | /* boolean caps */ |
||
657 | PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED, |
||
658 | PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR, |
||
659 | PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR, |
||
660 | PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR, |
||
661 | PIPE_SHADER_CAP_INDIRECT_CONST_ADDR, |
||
662 | PIPE_SHADER_CAP_SUBROUTINES, /* BGNSUB, ENDSUB, CAL, RET */ |
||
663 | PIPE_SHADER_CAP_INTEGERS, |
||
664 | PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS, |
||
665 | PIPE_SHADER_CAP_PREFERRED_IR, |
||
666 | PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED, |
||
667 | PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS, |
||
668 | PIPE_SHADER_CAP_DOUBLES, |
||
669 | PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED, /* all rounding modes */ |
||
670 | PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED, |
||
671 | PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED, |
||
672 | }; |
||
673 | |||
674 | /** |
||
675 | * Shader intermediate representation. |
||
676 | */ |
||
677 | enum pipe_shader_ir |
||
678 | { |
||
679 | PIPE_SHADER_IR_TGSI, |
||
680 | PIPE_SHADER_IR_LLVM, |
||
681 | PIPE_SHADER_IR_NATIVE |
||
682 | }; |
||
683 | |||
684 | /** |
||
685 | * Compute-specific implementation capability. They can be queried |
||
686 | * using pipe_screen::get_compute_param. |
||
687 | */ |
||
688 | enum pipe_compute_cap |
||
689 | { |
||
690 | PIPE_COMPUTE_CAP_IR_TARGET, |
||
691 | PIPE_COMPUTE_CAP_GRID_DIMENSION, |
||
692 | PIPE_COMPUTE_CAP_MAX_GRID_SIZE, |
||
693 | PIPE_COMPUTE_CAP_MAX_BLOCK_SIZE, |
||
694 | PIPE_COMPUTE_CAP_MAX_THREADS_PER_BLOCK, |
||
695 | PIPE_COMPUTE_CAP_MAX_GLOBAL_SIZE, |
||
696 | PIPE_COMPUTE_CAP_MAX_LOCAL_SIZE, |
||
697 | PIPE_COMPUTE_CAP_MAX_PRIVATE_SIZE, |
||
698 | PIPE_COMPUTE_CAP_MAX_INPUT_SIZE, |
||
699 | PIPE_COMPUTE_CAP_MAX_MEM_ALLOC_SIZE, |
||
700 | PIPE_COMPUTE_CAP_MAX_CLOCK_FREQUENCY, |
||
701 | PIPE_COMPUTE_CAP_MAX_COMPUTE_UNITS, |
||
702 | PIPE_COMPUTE_CAP_IMAGES_SUPPORTED |
||
703 | }; |
||
704 | |||
705 | /** |
||
706 | * Composite query types |
||
707 | */ |
||
708 | |||
709 | /** |
||
710 | * Query result for PIPE_QUERY_SO_STATISTICS. |
||
711 | */ |
||
712 | struct pipe_query_data_so_statistics |
||
713 | { |
||
714 | uint64_t num_primitives_written; |
||
715 | uint64_t primitives_storage_needed; |
||
716 | }; |
||
717 | |||
718 | /** |
||
719 | * Query result for PIPE_QUERY_TIMESTAMP_DISJOINT. |
||
720 | */ |
||
721 | struct pipe_query_data_timestamp_disjoint |
||
722 | { |
||
723 | uint64_t frequency; |
||
724 | boolean disjoint; |
||
725 | }; |
||
726 | |||
727 | /** |
||
728 | * Query result for PIPE_QUERY_PIPELINE_STATISTICS. |
||
729 | */ |
||
730 | struct pipe_query_data_pipeline_statistics |
||
731 | { |
||
732 | uint64_t ia_vertices; /**< Num vertices read by the vertex fetcher. */ |
||
733 | uint64_t ia_primitives; /**< Num primitives read by the vertex fetcher. */ |
||
734 | uint64_t vs_invocations; /**< Num vertex shader invocations. */ |
||
735 | uint64_t gs_invocations; /**< Num geometry shader invocations. */ |
||
736 | uint64_t gs_primitives; /**< Num primitives output by a geometry shader. */ |
||
737 | uint64_t c_invocations; /**< Num primitives sent to the rasterizer. */ |
||
738 | uint64_t c_primitives; /**< Num primitives that were rendered. */ |
||
739 | uint64_t ps_invocations; /**< Num pixel shader invocations. */ |
||
740 | uint64_t hs_invocations; /**< Num hull shader invocations. */ |
||
741 | uint64_t ds_invocations; /**< Num domain shader invocations. */ |
||
742 | uint64_t cs_invocations; /**< Num compute shader invocations. */ |
||
743 | }; |
||
744 | |||
745 | /** |
||
746 | * Query result (returned by pipe_context::get_query_result). |
||
747 | */ |
||
748 | union pipe_query_result |
||
749 | { |
||
750 | /* PIPE_QUERY_OCCLUSION_PREDICATE */ |
||
751 | /* PIPE_QUERY_SO_OVERFLOW_PREDICATE */ |
||
752 | /* PIPE_QUERY_GPU_FINISHED */ |
||
753 | boolean b; |
||
754 | |||
755 | /* PIPE_QUERY_OCCLUSION_COUNTER */ |
||
756 | /* PIPE_QUERY_TIMESTAMP */ |
||
757 | /* PIPE_QUERY_TIME_ELAPSED */ |
||
758 | /* PIPE_QUERY_PRIMITIVES_GENERATED */ |
||
759 | /* PIPE_QUERY_PRIMITIVES_EMITTED */ |
||
760 | /* PIPE_DRIVER_QUERY_TYPE_UINT64 */ |
||
761 | uint64_t u64; |
||
762 | |||
763 | /* PIPE_DRIVER_QUERY_TYPE_UINT */ |
||
764 | uint32_t u32; |
||
765 | |||
766 | /* PIPE_DRIVER_QUERY_TYPE_FLOAT */ |
||
767 | /* PIPE_DRIVER_QUERY_TYPE_PERCENTAGE */ |
||
768 | float f; |
||
769 | |||
770 | /* PIPE_QUERY_SO_STATISTICS */ |
||
771 | struct pipe_query_data_so_statistics so_statistics; |
||
772 | |||
773 | /* PIPE_QUERY_TIMESTAMP_DISJOINT */ |
||
774 | struct pipe_query_data_timestamp_disjoint timestamp_disjoint; |
||
775 | |||
776 | /* PIPE_QUERY_PIPELINE_STATISTICS */ |
||
777 | struct pipe_query_data_pipeline_statistics pipeline_statistics; |
||
778 | }; |
||
779 | |||
780 | union pipe_color_union |
||
781 | { |
||
782 | float f[4]; |
||
783 | int i[4]; |
||
784 | unsigned int ui[4]; |
||
785 | }; |
||
786 | |||
787 | enum pipe_driver_query_type |
||
788 | { |
||
789 | PIPE_DRIVER_QUERY_TYPE_UINT64 = 0, |
||
790 | PIPE_DRIVER_QUERY_TYPE_UINT = 1, |
||
791 | PIPE_DRIVER_QUERY_TYPE_FLOAT = 2, |
||
792 | PIPE_DRIVER_QUERY_TYPE_PERCENTAGE = 3, |
||
793 | PIPE_DRIVER_QUERY_TYPE_BYTES = 4, |
||
794 | }; |
||
795 | |||
796 | enum pipe_driver_query_group_type |
||
797 | { |
||
798 | PIPE_DRIVER_QUERY_GROUP_TYPE_CPU = 0, |
||
799 | PIPE_DRIVER_QUERY_GROUP_TYPE_GPU = 1, |
||
800 | }; |
||
801 | |||
802 | union pipe_numeric_type_union |
||
803 | { |
||
804 | uint64_t u64; |
||
805 | uint32_t u32; |
||
806 | float f; |
||
807 | }; |
||
808 | |||
809 | struct pipe_driver_query_info |
||
810 | { |
||
811 | const char *name; |
||
812 | unsigned query_type; /* PIPE_QUERY_DRIVER_SPECIFIC + i */ |
||
813 | union pipe_numeric_type_union max_value; /* max value that can be returned */ |
||
814 | enum pipe_driver_query_type type; |
||
815 | unsigned group_id; |
||
816 | }; |
||
817 | |||
818 | struct pipe_driver_query_group_info |
||
819 | { |
||
820 | const char *name; |
||
821 | enum pipe_driver_query_group_type type; |
||
822 | unsigned max_active_queries; |
||
823 | unsigned num_queries; |
||
824 | }; |
||
825 | |||
826 | #ifdef __cplusplus |
||
827 | } |
||
828 | #endif |
||
829 | |||
830 | #endif>>>>>>>>>>>><>><>>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>><>> |