1 /**************************************************************************
3 * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
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:
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
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 TUNGSTEN GRAPHICS 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.
26 **************************************************************************/
28 #include "pipe/p_util.h"
30 #include "tr_stream.h"
33 #include "tr_screen.h"
34 #include "tr_context.h"
38 trace_context_set_edgeflags(struct pipe_context
*_pipe
,
39 const unsigned *bitfield
)
41 struct trace_context
*tr_ctx
= trace_context(_pipe
);
42 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
43 struct trace_stream
*stream
= tr_scr
->stream
;
44 struct pipe_context
*pipe
= tr_ctx
->pipe
;
46 trace_dump_call_begin(stream
, "pipe_context", "set_edgeflags");
48 trace_dump_arg(stream
, ptr
, pipe
);
49 /* FIXME: we don't know how big this array is */
50 trace_dump_arg(stream
, ptr
, bitfield
);
52 pipe
->set_edgeflags(pipe
, bitfield
);;
54 trace_dump_call_end(stream
);
59 trace_context_draw_arrays(struct pipe_context
*_pipe
,
60 unsigned mode
, unsigned start
, unsigned count
)
62 struct trace_context
*tr_ctx
= trace_context(_pipe
);
63 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
64 struct trace_stream
*stream
= tr_scr
->stream
;
65 struct pipe_context
*pipe
= tr_ctx
->pipe
;
68 trace_dump_call_begin(stream
, "pipe_context", "draw_arrays");
70 trace_dump_arg(stream
, ptr
, pipe
);
71 trace_dump_arg(stream
, uint
, mode
);
72 trace_dump_arg(stream
, uint
, start
);
73 trace_dump_arg(stream
, uint
, count
);
75 result
= pipe
->draw_arrays(pipe
, mode
, start
, count
);;
77 trace_dump_ret(stream
, bool, result
);
79 trace_dump_call_end(stream
);
86 trace_context_draw_elements(struct pipe_context
*_pipe
,
87 struct pipe_buffer
*indexBuffer
,
89 unsigned mode
, unsigned start
, unsigned count
)
91 struct trace_context
*tr_ctx
= trace_context(_pipe
);
92 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
93 struct trace_stream
*stream
= tr_scr
->stream
;
94 struct pipe_context
*pipe
= tr_ctx
->pipe
;
97 trace_dump_call_begin(stream
, "pipe_context", "draw_elements");
99 trace_dump_arg(stream
, ptr
, pipe
);
100 trace_dump_arg(stream
, ptr
, indexBuffer
);
101 trace_dump_arg(stream
, uint
, indexSize
);
102 trace_dump_arg(stream
, uint
, mode
);
103 trace_dump_arg(stream
, uint
, start
);
104 trace_dump_arg(stream
, uint
, count
);
106 result
= pipe
->draw_elements(pipe
, indexBuffer
, indexSize
, mode
, start
, count
);;
108 trace_dump_ret(stream
, bool, result
);
110 trace_dump_call_end(stream
);
116 static INLINE boolean
117 trace_context_draw_range_elements(struct pipe_context
*_pipe
,
118 struct pipe_buffer
*indexBuffer
,
126 struct trace_context
*tr_ctx
= trace_context(_pipe
);
127 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
128 struct trace_stream
*stream
= tr_scr
->stream
;
129 struct pipe_context
*pipe
= tr_ctx
->pipe
;
132 trace_dump_call_begin(stream
, "pipe_context", "draw_range_elements");
134 trace_dump_arg(stream
, ptr
, pipe
);
135 trace_dump_arg(stream
, ptr
, indexBuffer
);
136 trace_dump_arg(stream
, uint
, indexSize
);
137 trace_dump_arg(stream
, uint
, minIndex
);
138 trace_dump_arg(stream
, uint
, maxIndex
);
139 trace_dump_arg(stream
, uint
, mode
);
140 trace_dump_arg(stream
, uint
, start
);
141 trace_dump_arg(stream
, uint
, count
);
143 result
= pipe
->draw_range_elements(pipe
,
145 indexSize
, minIndex
, maxIndex
,
148 trace_dump_ret(stream
, bool, result
);
150 trace_dump_call_end(stream
);
156 static INLINE
struct pipe_query
*
157 trace_context_create_query(struct pipe_context
*_pipe
,
160 struct trace_context
*tr_ctx
= trace_context(_pipe
);
161 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
162 struct trace_stream
*stream
= tr_scr
->stream
;
163 struct pipe_context
*pipe
= tr_ctx
->pipe
;
164 struct pipe_query
*result
;
166 trace_dump_call_begin(stream
, "pipe_context", "create_query");
168 trace_dump_arg(stream
, ptr
, pipe
);
169 trace_dump_arg(stream
, uint
, query_type
);
171 result
= pipe
->create_query(pipe
, query_type
);;
173 trace_dump_ret(stream
, ptr
, result
);
175 trace_dump_call_end(stream
);
182 trace_context_destroy_query(struct pipe_context
*_pipe
,
183 struct pipe_query
*query
)
185 struct trace_context
*tr_ctx
= trace_context(_pipe
);
186 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
187 struct trace_stream
*stream
= tr_scr
->stream
;
188 struct pipe_context
*pipe
= tr_ctx
->pipe
;
190 trace_dump_call_begin(stream
, "pipe_context", "destroy_query");
192 trace_dump_arg(stream
, ptr
, pipe
);
193 trace_dump_arg(stream
, ptr
, query
);
195 pipe
->destroy_query(pipe
, query
);;
197 trace_dump_call_end(stream
);
202 trace_context_begin_query(struct pipe_context
*_pipe
,
203 struct pipe_query
*query
)
205 struct trace_context
*tr_ctx
= trace_context(_pipe
);
206 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
207 struct trace_stream
*stream
= tr_scr
->stream
;
208 struct pipe_context
*pipe
= tr_ctx
->pipe
;
210 trace_dump_call_begin(stream
, "pipe_context", "begin_query");
212 trace_dump_arg(stream
, ptr
, pipe
);
213 trace_dump_arg(stream
, ptr
, query
);
215 pipe
->begin_query(pipe
, query
);;
217 trace_dump_call_end(stream
);
222 trace_context_end_query(struct pipe_context
*_pipe
,
223 struct pipe_query
*query
)
225 struct trace_context
*tr_ctx
= trace_context(_pipe
);
226 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
227 struct trace_stream
*stream
= tr_scr
->stream
;
228 struct pipe_context
*pipe
= tr_ctx
->pipe
;
230 trace_dump_call_begin(stream
, "pipe_context", "end_query");
232 trace_dump_arg(stream
, ptr
, pipe
);
233 trace_dump_arg(stream
, ptr
, query
);
235 pipe
->end_query(pipe
, query
);
237 trace_dump_call_end(stream
);
241 static INLINE boolean
242 trace_context_get_query_result(struct pipe_context
*_pipe
,
243 struct pipe_query
*query
,
247 struct trace_context
*tr_ctx
= trace_context(_pipe
);
248 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
249 struct trace_stream
*stream
= tr_scr
->stream
;
250 struct pipe_context
*pipe
= tr_ctx
->pipe
;
254 trace_dump_call_begin(stream
, "pipe_context", "get_query_result");
256 trace_dump_arg(stream
, ptr
, pipe
);
258 _result
= pipe
->get_query_result(pipe
, query
, wait
, presult
);;
261 trace_dump_arg(stream
, uint
, result
);
262 trace_dump_ret(stream
, bool, _result
);
264 trace_dump_call_end(stream
);
271 trace_context_create_blend_state(struct pipe_context
*_pipe
,
272 const struct pipe_blend_state
*state
)
274 struct trace_context
*tr_ctx
= trace_context(_pipe
);
275 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
276 struct trace_stream
*stream
= tr_scr
->stream
;
277 struct pipe_context
*pipe
= tr_ctx
->pipe
;
280 trace_dump_call_begin(stream
, "pipe_context", "create_blend_state");
282 trace_dump_arg(stream
, ptr
, pipe
);
283 trace_dump_arg(stream
, ptr
, state
);
285 result
= pipe
->create_blend_state(pipe
, state
);;
287 trace_dump_call_end(stream
);
294 trace_context_bind_blend_state(struct pipe_context
*_pipe
,
297 struct trace_context
*tr_ctx
= trace_context(_pipe
);
298 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
299 struct trace_stream
*stream
= tr_scr
->stream
;
300 struct pipe_context
*pipe
= tr_ctx
->pipe
;
302 trace_dump_call_begin(stream
, "pipe_context", "bind_blend_state");
304 trace_dump_arg(stream
, ptr
, pipe
);
305 trace_dump_arg(stream
, ptr
, state
);
307 pipe
->bind_blend_state(pipe
, state
);;
309 trace_dump_call_end(stream
);
314 trace_context_delete_blend_state(struct pipe_context
*_pipe
,
317 struct trace_context
*tr_ctx
= trace_context(_pipe
);
318 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
319 struct trace_stream
*stream
= tr_scr
->stream
;
320 struct pipe_context
*pipe
= tr_ctx
->pipe
;
322 trace_dump_call_begin(stream
, "pipe_context", "delete_blend_state");
324 trace_dump_arg(stream
, ptr
, pipe
);
325 trace_dump_arg(stream
, ptr
, state
);
327 pipe
->delete_blend_state(pipe
, state
);;
329 trace_dump_call_end(stream
);
334 trace_context_create_sampler_state(struct pipe_context
*_pipe
,
335 const struct pipe_sampler_state
*state
)
337 struct trace_context
*tr_ctx
= trace_context(_pipe
);
338 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
339 struct trace_stream
*stream
= tr_scr
->stream
;
340 struct pipe_context
*pipe
= tr_ctx
->pipe
;
343 trace_dump_call_begin(stream
, "pipe_context", "create_sampler_state");
345 trace_dump_arg(stream
, ptr
, pipe
);
346 trace_dump_arg(stream
, ptr
, state
);
348 result
= pipe
->create_sampler_state(pipe
, state
);;
350 trace_dump_ret(stream
, ptr
, result
);
352 trace_dump_call_end(stream
);
359 trace_context_bind_sampler_states(struct pipe_context
*_pipe
,
360 unsigned num_states
, void **states
)
362 struct trace_context
*tr_ctx
= trace_context(_pipe
);
363 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
364 struct trace_stream
*stream
= tr_scr
->stream
;
365 struct pipe_context
*pipe
= tr_ctx
->pipe
;
367 trace_dump_call_begin(stream
, "pipe_context", "bind_sampler_states");
369 trace_dump_arg(stream
, ptr
, pipe
);
370 trace_dump_arg(stream
, uint
, num_states
);
371 trace_dump_arg_array(stream
, ptr
, states
, num_states
);
373 pipe
->bind_sampler_states(pipe
, num_states
, states
);;
375 trace_dump_call_end(stream
);
380 trace_context_delete_sampler_state(struct pipe_context
*_pipe
,
383 struct trace_context
*tr_ctx
= trace_context(_pipe
);
384 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
385 struct trace_stream
*stream
= tr_scr
->stream
;
386 struct pipe_context
*pipe
= tr_ctx
->pipe
;
388 trace_dump_call_begin(stream
, "pipe_context", "delete_sampler_state");
390 trace_dump_arg(stream
, ptr
, pipe
);
391 trace_dump_arg(stream
, ptr
, state
);
393 pipe
->delete_sampler_state(pipe
, state
);;
395 trace_dump_call_end(stream
);
400 trace_context_create_rasterizer_state(struct pipe_context
*_pipe
,
401 const struct pipe_rasterizer_state
*state
)
403 struct trace_context
*tr_ctx
= trace_context(_pipe
);
404 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
405 struct trace_stream
*stream
= tr_scr
->stream
;
406 struct pipe_context
*pipe
= tr_ctx
->pipe
;
409 trace_dump_call_begin(stream
, "pipe_context", "create_rasterizer_state");
411 trace_dump_arg(stream
, ptr
, pipe
);
412 trace_dump_arg(stream
, ptr
, state
);
414 result
= pipe
->create_rasterizer_state(pipe
, state
);;
416 trace_dump_ret(stream
, ptr
, result
);
418 trace_dump_call_end(stream
);
425 trace_context_bind_rasterizer_state(struct pipe_context
*_pipe
,
428 struct trace_context
*tr_ctx
= trace_context(_pipe
);
429 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
430 struct trace_stream
*stream
= tr_scr
->stream
;
431 struct pipe_context
*pipe
= tr_ctx
->pipe
;
433 trace_dump_call_begin(stream
, "pipe_context", "bind_rasterizer_state");
435 trace_dump_arg(stream
, ptr
, pipe
);
436 trace_dump_arg(stream
, ptr
, state
);
438 pipe
->bind_rasterizer_state(pipe
, state
);;
440 trace_dump_call_end(stream
);
445 trace_context_delete_rasterizer_state(struct pipe_context
*_pipe
,
448 struct trace_context
*tr_ctx
= trace_context(_pipe
);
449 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
450 struct trace_stream
*stream
= tr_scr
->stream
;
451 struct pipe_context
*pipe
= tr_ctx
->pipe
;
453 trace_dump_call_begin(stream
, "pipe_context", "delete_rasterizer_state");
455 trace_dump_arg(stream
, ptr
, pipe
);
456 trace_dump_arg(stream
, ptr
, state
);
458 pipe
->delete_rasterizer_state(pipe
, state
);;
460 trace_dump_call_end(stream
);
465 trace_context_create_depth_stencil_alpha_state(struct pipe_context
*_pipe
,
466 const struct pipe_depth_stencil_alpha_state
*state
)
468 struct trace_context
*tr_ctx
= trace_context(_pipe
);
469 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
470 struct trace_stream
*stream
= tr_scr
->stream
;
471 struct pipe_context
*pipe
= tr_ctx
->pipe
;
474 trace_dump_call_begin(stream
, "pipe_context", "create_depth_stencil_alpha_state");
476 result
= pipe
->create_depth_stencil_alpha_state(pipe
, state
);;
478 trace_dump_ret(stream
, ptr
, result
);
479 trace_dump_arg(stream
, ptr
, state
);
481 trace_dump_call_end(stream
);
488 trace_context_bind_depth_stencil_alpha_state(struct pipe_context
*_pipe
,
491 struct trace_context
*tr_ctx
= trace_context(_pipe
);
492 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
493 struct trace_stream
*stream
= tr_scr
->stream
;
494 struct pipe_context
*pipe
= tr_ctx
->pipe
;
496 trace_dump_call_begin(stream
, "pipe_context", "bind_depth_stencil_alpha_state");
498 trace_dump_arg(stream
, ptr
, pipe
);
499 trace_dump_arg(stream
, ptr
, state
);
501 pipe
->bind_depth_stencil_alpha_state(pipe
, state
);;
503 trace_dump_call_end(stream
);
508 trace_context_delete_depth_stencil_alpha_state(struct pipe_context
*_pipe
,
511 struct trace_context
*tr_ctx
= trace_context(_pipe
);
512 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
513 struct trace_stream
*stream
= tr_scr
->stream
;
514 struct pipe_context
*pipe
= tr_ctx
->pipe
;
516 trace_dump_call_begin(stream
, "pipe_context", "delete_depth_stencil_alpha_state");
518 trace_dump_arg(stream
, ptr
, pipe
);
519 trace_dump_arg(stream
, ptr
, state
);
521 pipe
->delete_depth_stencil_alpha_state(pipe
, state
);;
523 trace_dump_call_end(stream
);
528 trace_context_create_fs_state(struct pipe_context
*_pipe
,
529 const struct pipe_shader_state
*state
)
531 struct trace_context
*tr_ctx
= trace_context(_pipe
);
532 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
533 struct trace_stream
*stream
= tr_scr
->stream
;
534 struct pipe_context
*pipe
= tr_ctx
->pipe
;
537 trace_dump_call_begin(stream
, "pipe_context", "create_fs_state");
539 trace_dump_arg(stream
, ptr
, pipe
);
540 trace_dump_arg(stream
, ptr
, state
);
542 result
= pipe
->create_fs_state(pipe
, state
);;
544 trace_dump_ret(stream
, ptr
, result
);
546 trace_dump_call_end(stream
);
553 trace_context_bind_fs_state(struct pipe_context
*_pipe
,
556 struct trace_context
*tr_ctx
= trace_context(_pipe
);
557 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
558 struct trace_stream
*stream
= tr_scr
->stream
;
559 struct pipe_context
*pipe
= tr_ctx
->pipe
;
561 trace_dump_call_begin(stream
, "pipe_context", "bind_fs_state");
563 trace_dump_arg(stream
, ptr
, pipe
);
564 trace_dump_arg(stream
, ptr
, state
);
566 pipe
->bind_fs_state(pipe
, state
);;
568 trace_dump_call_end(stream
);
573 trace_context_delete_fs_state(struct pipe_context
*_pipe
,
576 struct trace_context
*tr_ctx
= trace_context(_pipe
);
577 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
578 struct trace_stream
*stream
= tr_scr
->stream
;
579 struct pipe_context
*pipe
= tr_ctx
->pipe
;
581 trace_dump_call_begin(stream
, "pipe_context", "delete_fs_state");
583 trace_dump_arg(stream
, ptr
, pipe
);
584 trace_dump_arg(stream
, ptr
, state
);
586 pipe
->delete_fs_state(pipe
, state
);;
588 trace_dump_call_end(stream
);
593 trace_context_create_vs_state(struct pipe_context
*_pipe
,
594 const struct pipe_shader_state
*state
)
596 struct trace_context
*tr_ctx
= trace_context(_pipe
);
597 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
598 struct trace_stream
*stream
= tr_scr
->stream
;
599 struct pipe_context
*pipe
= tr_ctx
->pipe
;
602 trace_dump_call_begin(stream
, "pipe_context", "create_vs_state");
604 trace_dump_arg(stream
, ptr
, pipe
);
605 trace_dump_arg(stream
, ptr
, state
);
607 result
= pipe
->create_vs_state(pipe
, state
);;
609 trace_dump_ret(stream
, ptr
, result
);
611 trace_dump_call_end(stream
);
618 trace_context_bind_vs_state(struct pipe_context
*_pipe
,
621 struct trace_context
*tr_ctx
= trace_context(_pipe
);
622 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
623 struct trace_stream
*stream
= tr_scr
->stream
;
624 struct pipe_context
*pipe
= tr_ctx
->pipe
;
626 trace_dump_call_begin(stream
, "pipe_context", "bind_vs_state");
628 trace_dump_arg(stream
, ptr
, pipe
);
629 trace_dump_arg(stream
, ptr
, state
);
631 pipe
->bind_vs_state(pipe
, state
);;
633 trace_dump_call_end(stream
);
638 trace_context_delete_vs_state(struct pipe_context
*_pipe
,
641 struct trace_context
*tr_ctx
= trace_context(_pipe
);
642 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
643 struct trace_stream
*stream
= tr_scr
->stream
;
644 struct pipe_context
*pipe
= tr_ctx
->pipe
;
646 trace_dump_call_begin(stream
, "pipe_context", "delete_vs_state");
648 trace_dump_arg(stream
, ptr
, pipe
);
649 trace_dump_arg(stream
, ptr
, state
);
651 pipe
->delete_vs_state(pipe
, state
);;
653 trace_dump_call_end(stream
);
658 trace_context_set_blend_color(struct pipe_context
*_pipe
,
659 const struct pipe_blend_color
*state
)
661 struct trace_context
*tr_ctx
= trace_context(_pipe
);
662 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
663 struct trace_stream
*stream
= tr_scr
->stream
;
664 struct pipe_context
*pipe
= tr_ctx
->pipe
;
666 trace_dump_call_begin(stream
, "pipe_context", "set_blend_color");
668 trace_dump_arg(stream
, ptr
, pipe
);
669 trace_dump_arg(stream
, ptr
, state
);
671 pipe
->set_blend_color(pipe
, state
);;
673 trace_dump_call_end(stream
);
678 trace_context_set_clip_state(struct pipe_context
*_pipe
,
679 const struct pipe_clip_state
*state
)
681 struct trace_context
*tr_ctx
= trace_context(_pipe
);
682 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
683 struct trace_stream
*stream
= tr_scr
->stream
;
684 struct pipe_context
*pipe
= tr_ctx
->pipe
;
686 trace_dump_call_begin(stream
, "pipe_context", "set_clip_state");
688 trace_dump_arg(stream
, ptr
, pipe
);
689 trace_dump_arg(stream
, ptr
, state
);
691 pipe
->set_clip_state(pipe
, state
);;
693 trace_dump_call_end(stream
);
698 trace_context_set_constant_buffer(struct pipe_context
*_pipe
,
699 uint shader
, uint index
,
700 const struct pipe_constant_buffer
*buffer
)
702 struct trace_context
*tr_ctx
= trace_context(_pipe
);
703 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
704 struct trace_stream
*stream
= tr_scr
->stream
;
705 struct pipe_context
*pipe
= tr_ctx
->pipe
;
707 trace_dump_call_begin(stream
, "pipe_context", "set_constant_buffer");
709 trace_dump_arg(stream
, ptr
, pipe
);
710 trace_dump_arg(stream
, uint
, shader
);
711 trace_dump_arg(stream
, uint
, index
);
712 trace_dump_arg(stream
, ptr
, buffer
);
714 pipe
->set_constant_buffer(pipe
, shader
, index
, buffer
);;
716 trace_dump_call_end(stream
);
721 trace_context_set_framebuffer_state(struct pipe_context
*_pipe
,
722 const struct pipe_framebuffer_state
*state
)
724 struct trace_context
*tr_ctx
= trace_context(_pipe
);
725 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
726 struct trace_stream
*stream
= tr_scr
->stream
;
727 struct pipe_context
*pipe
= tr_ctx
->pipe
;
729 trace_dump_call_begin(stream
, "pipe_context", "set_framebuffer_state");
731 trace_dump_arg(stream
, ptr
, pipe
);
732 trace_dump_arg(stream
, ptr
, state
);
734 pipe
->set_framebuffer_state(pipe
, state
);;
736 trace_dump_call_end(stream
);
741 trace_context_set_polygon_stipple(struct pipe_context
*_pipe
,
742 const struct pipe_poly_stipple
*state
)
744 struct trace_context
*tr_ctx
= trace_context(_pipe
);
745 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
746 struct trace_stream
*stream
= tr_scr
->stream
;
747 struct pipe_context
*pipe
= tr_ctx
->pipe
;
749 trace_dump_call_begin(stream
, "pipe_context", "set_polygon_stipple");
751 trace_dump_arg(stream
, ptr
, pipe
);
752 trace_dump_arg(stream
, ptr
, state
);
754 pipe
->set_polygon_stipple(pipe
, state
);;
756 trace_dump_call_end(stream
);
761 trace_context_set_scissor_state(struct pipe_context
*_pipe
,
762 const struct pipe_scissor_state
*state
)
764 struct trace_context
*tr_ctx
= trace_context(_pipe
);
765 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
766 struct trace_stream
*stream
= tr_scr
->stream
;
767 struct pipe_context
*pipe
= tr_ctx
->pipe
;
769 trace_dump_call_begin(stream
, "pipe_context", "set_scissor_state");
771 trace_dump_arg(stream
, ptr
, pipe
);
772 trace_dump_arg(stream
, ptr
, state
);
774 pipe
->set_scissor_state(pipe
, state
);;
776 trace_dump_call_end(stream
);
781 trace_context_set_viewport_state(struct pipe_context
*_pipe
,
782 const struct pipe_viewport_state
*state
)
784 struct trace_context
*tr_ctx
= trace_context(_pipe
);
785 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
786 struct trace_stream
*stream
= tr_scr
->stream
;
787 struct pipe_context
*pipe
= tr_ctx
->pipe
;
789 trace_dump_call_begin(stream
, "pipe_context", "set_viewport_state");
791 trace_dump_arg(stream
, ptr
, pipe
);
792 trace_dump_arg(stream
, ptr
, state
);
794 pipe
->set_viewport_state(pipe
, state
);;
796 trace_dump_call_end(stream
);
801 trace_context_set_sampler_textures(struct pipe_context
*_pipe
,
802 unsigned num_textures
,
803 struct pipe_texture
**textures
)
805 struct trace_context
*tr_ctx
= trace_context(_pipe
);
806 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
807 struct trace_stream
*stream
= tr_scr
->stream
;
808 struct pipe_context
*pipe
= tr_ctx
->pipe
;
810 trace_dump_call_begin(stream
, "pipe_context", "set_sampler_textures");
812 trace_dump_arg(stream
, ptr
, pipe
);
813 trace_dump_arg(stream
, uint
, num_textures
);
814 trace_dump_arg_array(stream
, ptr
, textures
, num_textures
);
816 pipe
->set_sampler_textures(pipe
, num_textures
, textures
);;
818 trace_dump_call_end(stream
);
823 trace_context_set_vertex_buffers(struct pipe_context
*_pipe
,
824 unsigned num_buffers
,
825 const struct pipe_vertex_buffer
*buffers
)
827 struct trace_context
*tr_ctx
= trace_context(_pipe
);
828 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
829 struct trace_stream
*stream
= tr_scr
->stream
;
830 struct pipe_context
*pipe
= tr_ctx
->pipe
;
832 trace_dump_call_begin(stream
, "pipe_context", "set_vertex_buffers");
834 trace_dump_arg(stream
, ptr
, pipe
);
835 trace_dump_arg(stream
, uint
, num_buffers
);
836 trace_dump_arg(stream
, ptr
, buffers
);
837 //trace_dump_arg_array(stream, ptr, buffers, num_buffers);
839 pipe
->set_vertex_buffers(pipe
, num_buffers
, buffers
);;
841 trace_dump_call_end(stream
);
846 trace_context_set_vertex_elements(struct pipe_context
*_pipe
,
847 unsigned num_elements
,
848 const struct pipe_vertex_element
*elements
)
850 struct trace_context
*tr_ctx
= trace_context(_pipe
);
851 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
852 struct trace_stream
*stream
= tr_scr
->stream
;
853 struct pipe_context
*pipe
= tr_ctx
->pipe
;
855 trace_dump_call_begin(stream
, "pipe_context", "set_vertex_elements");
857 trace_dump_arg(stream
, ptr
, pipe
);
858 trace_dump_arg(stream
, uint
, num_elements
);
859 trace_dump_arg(stream
, ptr
, elements
);
860 //trace_dump_arg_array(stream, ptr, elements, num_elements);
862 pipe
->set_vertex_elements(pipe
, num_elements
, elements
);;
864 trace_dump_call_end(stream
);
869 trace_context_surface_copy(struct pipe_context
*_pipe
,
871 struct pipe_surface
*dest
,
872 unsigned destx
, unsigned desty
,
873 struct pipe_surface
*src
,
874 unsigned srcx
, unsigned srcy
,
875 unsigned width
, unsigned height
)
877 struct trace_context
*tr_ctx
= trace_context(_pipe
);
878 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
879 struct trace_stream
*stream
= tr_scr
->stream
;
880 struct pipe_context
*pipe
= tr_ctx
->pipe
;
882 trace_dump_call_begin(stream
, "pipe_context", "surface_copy");
884 trace_dump_arg(stream
, ptr
, pipe
);
885 trace_dump_arg(stream
, bool, do_flip
);
886 trace_dump_arg(stream
, ptr
, dest
);
887 trace_dump_arg(stream
, uint
, destx
);
888 trace_dump_arg(stream
, uint
, desty
);
889 trace_dump_arg(stream
, ptr
, src
);
890 trace_dump_arg(stream
, uint
, srcx
);
891 trace_dump_arg(stream
, uint
, srcy
);
892 trace_dump_arg(stream
, uint
, width
);
893 trace_dump_arg(stream
, uint
, height
);
895 pipe
->surface_copy(pipe
, do_flip
,
897 src
, srcx
, srcy
, width
, height
);
899 trace_dump_call_end(stream
);
904 trace_context_surface_fill(struct pipe_context
*_pipe
,
905 struct pipe_surface
*dst
,
906 unsigned dstx
, unsigned dsty
,
907 unsigned width
, unsigned height
,
910 struct trace_context
*tr_ctx
= trace_context(_pipe
);
911 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
912 struct trace_stream
*stream
= tr_scr
->stream
;
913 struct pipe_context
*pipe
= tr_ctx
->pipe
;
915 trace_dump_call_begin(stream
, "pipe_context", "surface_fill");
917 trace_dump_arg(stream
, ptr
, pipe
);
918 trace_dump_arg(stream
, ptr
, dst
);
919 trace_dump_arg(stream
, uint
, dstx
);
920 trace_dump_arg(stream
, uint
, dsty
);
921 trace_dump_arg(stream
, uint
, width
);
922 trace_dump_arg(stream
, uint
, height
);
924 pipe
->surface_fill(pipe
, dst
, dstx
, dsty
, width
, height
, value
);;
926 trace_dump_call_end(stream
);
931 trace_context_clear(struct pipe_context
*_pipe
,
932 struct pipe_surface
*surface
,
935 struct trace_context
*tr_ctx
= trace_context(_pipe
);
936 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
937 struct trace_stream
*stream
= tr_scr
->stream
;
938 struct pipe_context
*pipe
= tr_ctx
->pipe
;
940 trace_dump_call_begin(stream
, "pipe_context", "clear");
942 trace_dump_arg(stream
, ptr
, pipe
);
943 trace_dump_arg(stream
, ptr
, surface
);
944 trace_dump_arg(stream
, uint
, clearValue
);
946 pipe
->clear(pipe
, surface
, clearValue
);;
948 trace_dump_call_end(stream
);
953 trace_context_flush(struct pipe_context
*_pipe
,
955 struct pipe_fence_handle
**fence
)
957 struct trace_context
*tr_ctx
= trace_context(_pipe
);
958 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
959 struct trace_stream
*stream
= tr_scr
->stream
;
960 struct pipe_context
*pipe
= tr_ctx
->pipe
;
962 trace_dump_call_begin(stream
, "pipe_context", "flush");
964 trace_dump_arg(stream
, ptr
, pipe
);
965 trace_dump_arg(stream
, uint
, flags
);
966 trace_dump_arg(stream
, ptr
, fence
);
968 pipe
->flush(pipe
, flags
, fence
);;
970 trace_dump_call_end(stream
);
975 trace_context_destroy(struct pipe_context
*_pipe
)
977 struct trace_context
*tr_ctx
= trace_context(_pipe
);
978 struct trace_screen
*tr_scr
= trace_screen(_pipe
->screen
);
979 struct trace_stream
*stream
= tr_scr
->stream
;
980 struct pipe_context
*pipe
= tr_ctx
->pipe
;
982 trace_dump_call_begin(stream
, "pipe_context", "destroy");
984 trace_dump_arg(stream
, ptr
, pipe
);
988 trace_dump_call_end(stream
);
994 struct pipe_context
*
995 trace_context_create(struct pipe_context
*pipe
)
997 struct trace_context
*tr_ctx
;
999 if(!debug_get_bool_option("GALLIUM_TRACE", FALSE
))
1002 tr_ctx
= CALLOC_STRUCT(trace_context
);
1006 tr_ctx
->base
.winsys
= pipe
->winsys
;
1007 tr_ctx
->base
.screen
= pipe
->screen
;
1008 tr_ctx
->base
.destroy
= trace_context_destroy
;
1009 tr_ctx
->base
.set_edgeflags
= trace_context_set_edgeflags
;
1010 tr_ctx
->base
.draw_arrays
= trace_context_draw_arrays
;
1011 tr_ctx
->base
.draw_elements
= trace_context_draw_elements
;
1012 tr_ctx
->base
.draw_range_elements
= trace_context_draw_range_elements
;
1013 tr_ctx
->base
.create_query
= trace_context_create_query
;
1014 tr_ctx
->base
.destroy_query
= trace_context_destroy_query
;
1015 tr_ctx
->base
.begin_query
= trace_context_begin_query
;
1016 tr_ctx
->base
.end_query
= trace_context_end_query
;
1017 tr_ctx
->base
.get_query_result
= trace_context_get_query_result
;
1018 tr_ctx
->base
.create_blend_state
= trace_context_create_blend_state
;
1019 tr_ctx
->base
.bind_blend_state
= trace_context_bind_blend_state
;
1020 tr_ctx
->base
.delete_blend_state
= trace_context_delete_blend_state
;
1021 tr_ctx
->base
.create_sampler_state
= trace_context_create_sampler_state
;
1022 tr_ctx
->base
.bind_sampler_states
= trace_context_bind_sampler_states
;
1023 tr_ctx
->base
.delete_sampler_state
= trace_context_delete_sampler_state
;
1024 tr_ctx
->base
.create_rasterizer_state
= trace_context_create_rasterizer_state
;
1025 tr_ctx
->base
.bind_rasterizer_state
= trace_context_bind_rasterizer_state
;
1026 tr_ctx
->base
.delete_rasterizer_state
= trace_context_delete_rasterizer_state
;
1027 tr_ctx
->base
.create_depth_stencil_alpha_state
= trace_context_create_depth_stencil_alpha_state
;
1028 tr_ctx
->base
.bind_depth_stencil_alpha_state
= trace_context_bind_depth_stencil_alpha_state
;
1029 tr_ctx
->base
.delete_depth_stencil_alpha_state
= trace_context_delete_depth_stencil_alpha_state
;
1030 tr_ctx
->base
.create_fs_state
= trace_context_create_fs_state
;
1031 tr_ctx
->base
.bind_fs_state
= trace_context_bind_fs_state
;
1032 tr_ctx
->base
.delete_fs_state
= trace_context_delete_fs_state
;
1033 tr_ctx
->base
.create_vs_state
= trace_context_create_vs_state
;
1034 tr_ctx
->base
.bind_vs_state
= trace_context_bind_vs_state
;
1035 tr_ctx
->base
.delete_vs_state
= trace_context_delete_vs_state
;
1036 tr_ctx
->base
.set_blend_color
= trace_context_set_blend_color
;
1037 tr_ctx
->base
.set_clip_state
= trace_context_set_clip_state
;
1038 tr_ctx
->base
.set_constant_buffer
= trace_context_set_constant_buffer
;
1039 tr_ctx
->base
.set_framebuffer_state
= trace_context_set_framebuffer_state
;
1040 tr_ctx
->base
.set_polygon_stipple
= trace_context_set_polygon_stipple
;
1041 tr_ctx
->base
.set_scissor_state
= trace_context_set_scissor_state
;
1042 tr_ctx
->base
.set_viewport_state
= trace_context_set_viewport_state
;
1043 tr_ctx
->base
.set_sampler_textures
= trace_context_set_sampler_textures
;
1044 tr_ctx
->base
.set_vertex_buffers
= trace_context_set_vertex_buffers
;
1045 tr_ctx
->base
.set_vertex_elements
= trace_context_set_vertex_elements
;
1046 tr_ctx
->base
.surface_copy
= trace_context_surface_copy
;
1047 tr_ctx
->base
.surface_fill
= trace_context_surface_fill
;
1048 tr_ctx
->base
.clear
= trace_context_clear
;
1049 tr_ctx
->base
.flush
= trace_context_flush
;
1051 tr_ctx
->pipe
= pipe
;
1053 return &tr_ctx
->base
;