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_winsys.h"
34 #include "tr_screen.h"
35 #include "tr_context.h"
39 trace_context_set_edgeflags(struct pipe_context
*_pipe
,
40 const unsigned *bitfield
)
42 struct trace_context
*tr_ctx
= trace_context(_pipe
);
43 struct trace_stream
*stream
= tr_ctx
->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_stream
*stream
= tr_ctx
->stream
;
64 struct pipe_context
*pipe
= tr_ctx
->pipe
;
67 trace_dump_call_begin(stream
, "pipe_context", "draw_arrays");
69 trace_dump_arg(stream
, ptr
, pipe
);
70 trace_dump_arg(stream
, uint
, mode
);
71 trace_dump_arg(stream
, uint
, start
);
72 trace_dump_arg(stream
, uint
, count
);
74 result
= pipe
->draw_arrays(pipe
, mode
, start
, count
);;
76 trace_dump_ret(stream
, bool, result
);
78 trace_dump_call_end(stream
);
85 trace_context_draw_elements(struct pipe_context
*_pipe
,
86 struct pipe_buffer
*indexBuffer
,
88 unsigned mode
, unsigned start
, unsigned count
)
90 struct trace_context
*tr_ctx
= trace_context(_pipe
);
91 struct trace_stream
*stream
= tr_ctx
->stream
;
92 struct pipe_context
*pipe
= tr_ctx
->pipe
;
95 trace_dump_call_begin(stream
, "pipe_context", "draw_elements");
97 trace_dump_arg(stream
, ptr
, pipe
);
98 trace_dump_arg(stream
, ptr
, indexBuffer
);
99 trace_dump_arg(stream
, uint
, indexSize
);
100 trace_dump_arg(stream
, uint
, mode
);
101 trace_dump_arg(stream
, uint
, start
);
102 trace_dump_arg(stream
, uint
, count
);
104 result
= pipe
->draw_elements(pipe
, indexBuffer
, indexSize
, mode
, start
, count
);;
106 trace_dump_ret(stream
, bool, result
);
108 trace_dump_call_end(stream
);
114 static INLINE boolean
115 trace_context_draw_range_elements(struct pipe_context
*_pipe
,
116 struct pipe_buffer
*indexBuffer
,
124 struct trace_context
*tr_ctx
= trace_context(_pipe
);
125 struct trace_stream
*stream
= tr_ctx
->stream
;
126 struct pipe_context
*pipe
= tr_ctx
->pipe
;
129 trace_dump_call_begin(stream
, "pipe_context", "draw_range_elements");
131 trace_dump_arg(stream
, ptr
, pipe
);
132 trace_dump_arg(stream
, ptr
, indexBuffer
);
133 trace_dump_arg(stream
, uint
, indexSize
);
134 trace_dump_arg(stream
, uint
, minIndex
);
135 trace_dump_arg(stream
, uint
, maxIndex
);
136 trace_dump_arg(stream
, uint
, mode
);
137 trace_dump_arg(stream
, uint
, start
);
138 trace_dump_arg(stream
, uint
, count
);
140 result
= pipe
->draw_range_elements(pipe
,
142 indexSize
, minIndex
, maxIndex
,
145 trace_dump_ret(stream
, bool, result
);
147 trace_dump_call_end(stream
);
153 static INLINE
struct pipe_query
*
154 trace_context_create_query(struct pipe_context
*_pipe
,
157 struct trace_context
*tr_ctx
= trace_context(_pipe
);
158 struct trace_stream
*stream
= tr_ctx
->stream
;
159 struct pipe_context
*pipe
= tr_ctx
->pipe
;
160 struct pipe_query
*result
;
162 trace_dump_call_begin(stream
, "pipe_context", "create_query");
164 trace_dump_arg(stream
, ptr
, pipe
);
165 trace_dump_arg(stream
, uint
, query_type
);
167 result
= pipe
->create_query(pipe
, query_type
);;
169 trace_dump_ret(stream
, ptr
, result
);
171 trace_dump_call_end(stream
);
178 trace_context_destroy_query(struct pipe_context
*_pipe
,
179 struct pipe_query
*query
)
181 struct trace_context
*tr_ctx
= trace_context(_pipe
);
182 struct trace_stream
*stream
= tr_ctx
->stream
;
183 struct pipe_context
*pipe
= tr_ctx
->pipe
;
185 trace_dump_call_begin(stream
, "pipe_context", "destroy_query");
187 trace_dump_arg(stream
, ptr
, pipe
);
188 trace_dump_arg(stream
, ptr
, query
);
190 pipe
->destroy_query(pipe
, query
);;
192 trace_dump_call_end(stream
);
197 trace_context_begin_query(struct pipe_context
*_pipe
,
198 struct pipe_query
*query
)
200 struct trace_context
*tr_ctx
= trace_context(_pipe
);
201 struct trace_stream
*stream
= tr_ctx
->stream
;
202 struct pipe_context
*pipe
= tr_ctx
->pipe
;
204 trace_dump_call_begin(stream
, "pipe_context", "begin_query");
206 trace_dump_arg(stream
, ptr
, pipe
);
207 trace_dump_arg(stream
, ptr
, query
);
209 pipe
->begin_query(pipe
, query
);;
211 trace_dump_call_end(stream
);
216 trace_context_end_query(struct pipe_context
*_pipe
,
217 struct pipe_query
*query
)
219 struct trace_context
*tr_ctx
= trace_context(_pipe
);
220 struct trace_stream
*stream
= tr_ctx
->stream
;
221 struct pipe_context
*pipe
= tr_ctx
->pipe
;
223 trace_dump_call_begin(stream
, "pipe_context", "end_query");
225 trace_dump_arg(stream
, ptr
, pipe
);
226 trace_dump_arg(stream
, ptr
, query
);
228 pipe
->end_query(pipe
, query
);
230 trace_dump_call_end(stream
);
234 static INLINE boolean
235 trace_context_get_query_result(struct pipe_context
*_pipe
,
236 struct pipe_query
*query
,
240 struct trace_context
*tr_ctx
= trace_context(_pipe
);
241 struct trace_stream
*stream
= tr_ctx
->stream
;
242 struct pipe_context
*pipe
= tr_ctx
->pipe
;
246 trace_dump_call_begin(stream
, "pipe_context", "get_query_result");
248 trace_dump_arg(stream
, ptr
, pipe
);
250 _result
= pipe
->get_query_result(pipe
, query
, wait
, presult
);;
253 trace_dump_arg(stream
, uint
, result
);
254 trace_dump_ret(stream
, bool, _result
);
256 trace_dump_call_end(stream
);
263 trace_context_create_blend_state(struct pipe_context
*_pipe
,
264 const struct pipe_blend_state
*state
)
266 struct trace_context
*tr_ctx
= trace_context(_pipe
);
267 struct trace_stream
*stream
= tr_ctx
->stream
;
268 struct pipe_context
*pipe
= tr_ctx
->pipe
;
271 trace_dump_call_begin(stream
, "pipe_context", "create_blend_state");
273 trace_dump_arg(stream
, ptr
, pipe
);
274 trace_dump_arg(stream
, blend_state
, state
);
276 result
= pipe
->create_blend_state(pipe
, state
);;
278 trace_dump_ret(stream
, ptr
, result
);
280 trace_dump_call_end(stream
);
287 trace_context_bind_blend_state(struct pipe_context
*_pipe
,
290 struct trace_context
*tr_ctx
= trace_context(_pipe
);
291 struct trace_stream
*stream
= tr_ctx
->stream
;
292 struct pipe_context
*pipe
= tr_ctx
->pipe
;
294 trace_dump_call_begin(stream
, "pipe_context", "bind_blend_state");
296 trace_dump_arg(stream
, ptr
, pipe
);
297 trace_dump_arg(stream
, ptr
, state
);
299 pipe
->bind_blend_state(pipe
, state
);;
301 trace_dump_call_end(stream
);
306 trace_context_delete_blend_state(struct pipe_context
*_pipe
,
309 struct trace_context
*tr_ctx
= trace_context(_pipe
);
310 struct trace_stream
*stream
= tr_ctx
->stream
;
311 struct pipe_context
*pipe
= tr_ctx
->pipe
;
313 trace_dump_call_begin(stream
, "pipe_context", "delete_blend_state");
315 trace_dump_arg(stream
, ptr
, pipe
);
316 trace_dump_arg(stream
, ptr
, state
);
318 pipe
->delete_blend_state(pipe
, state
);;
320 trace_dump_call_end(stream
);
325 trace_context_create_sampler_state(struct pipe_context
*_pipe
,
326 const struct pipe_sampler_state
*state
)
328 struct trace_context
*tr_ctx
= trace_context(_pipe
);
329 struct trace_stream
*stream
= tr_ctx
->stream
;
330 struct pipe_context
*pipe
= tr_ctx
->pipe
;
333 trace_dump_call_begin(stream
, "pipe_context", "create_sampler_state");
335 trace_dump_arg(stream
, ptr
, pipe
);
336 trace_dump_arg(stream
, ptr
, state
);
338 result
= pipe
->create_sampler_state(pipe
, state
);;
340 trace_dump_ret(stream
, sampler_state
, result
);
342 trace_dump_call_end(stream
);
349 trace_context_bind_sampler_states(struct pipe_context
*_pipe
,
350 unsigned num_states
, void **states
)
352 struct trace_context
*tr_ctx
= trace_context(_pipe
);
353 struct trace_stream
*stream
= tr_ctx
->stream
;
354 struct pipe_context
*pipe
= tr_ctx
->pipe
;
356 trace_dump_call_begin(stream
, "pipe_context", "bind_sampler_states");
358 trace_dump_arg(stream
, ptr
, pipe
);
359 trace_dump_arg(stream
, uint
, num_states
);
360 trace_dump_arg_array(stream
, ptr
, states
, num_states
);
362 pipe
->bind_sampler_states(pipe
, num_states
, states
);;
364 trace_dump_call_end(stream
);
369 trace_context_delete_sampler_state(struct pipe_context
*_pipe
,
372 struct trace_context
*tr_ctx
= trace_context(_pipe
);
373 struct trace_stream
*stream
= tr_ctx
->stream
;
374 struct pipe_context
*pipe
= tr_ctx
->pipe
;
376 trace_dump_call_begin(stream
, "pipe_context", "delete_sampler_state");
378 trace_dump_arg(stream
, ptr
, pipe
);
379 trace_dump_arg(stream
, ptr
, state
);
381 pipe
->delete_sampler_state(pipe
, state
);;
383 trace_dump_call_end(stream
);
388 trace_context_create_rasterizer_state(struct pipe_context
*_pipe
,
389 const struct pipe_rasterizer_state
*state
)
391 struct trace_context
*tr_ctx
= trace_context(_pipe
);
392 struct trace_stream
*stream
= tr_ctx
->stream
;
393 struct pipe_context
*pipe
= tr_ctx
->pipe
;
396 trace_dump_call_begin(stream
, "pipe_context", "create_rasterizer_state");
398 trace_dump_arg(stream
, ptr
, pipe
);
399 trace_dump_arg(stream
, rasterizer_state
, state
);
401 result
= pipe
->create_rasterizer_state(pipe
, state
);;
403 trace_dump_ret(stream
, ptr
, result
);
405 trace_dump_call_end(stream
);
412 trace_context_bind_rasterizer_state(struct pipe_context
*_pipe
,
415 struct trace_context
*tr_ctx
= trace_context(_pipe
);
416 struct trace_stream
*stream
= tr_ctx
->stream
;
417 struct pipe_context
*pipe
= tr_ctx
->pipe
;
419 trace_dump_call_begin(stream
, "pipe_context", "bind_rasterizer_state");
421 trace_dump_arg(stream
, ptr
, pipe
);
422 trace_dump_arg(stream
, ptr
, state
);
424 pipe
->bind_rasterizer_state(pipe
, state
);;
426 trace_dump_call_end(stream
);
431 trace_context_delete_rasterizer_state(struct pipe_context
*_pipe
,
434 struct trace_context
*tr_ctx
= trace_context(_pipe
);
435 struct trace_stream
*stream
= tr_ctx
->stream
;
436 struct pipe_context
*pipe
= tr_ctx
->pipe
;
438 trace_dump_call_begin(stream
, "pipe_context", "delete_rasterizer_state");
440 trace_dump_arg(stream
, ptr
, pipe
);
441 trace_dump_arg(stream
, ptr
, state
);
443 pipe
->delete_rasterizer_state(pipe
, state
);;
445 trace_dump_call_end(stream
);
450 trace_context_create_depth_stencil_alpha_state(struct pipe_context
*_pipe
,
451 const struct pipe_depth_stencil_alpha_state
*state
)
453 struct trace_context
*tr_ctx
= trace_context(_pipe
);
454 struct trace_stream
*stream
= tr_ctx
->stream
;
455 struct pipe_context
*pipe
= tr_ctx
->pipe
;
458 trace_dump_call_begin(stream
, "pipe_context", "create_depth_stencil_alpha_state");
460 result
= pipe
->create_depth_stencil_alpha_state(pipe
, state
);;
462 trace_dump_arg(stream
, ptr
, pipe
);
463 trace_dump_arg(stream
, depth_stencil_alpha_state
, state
);
465 trace_dump_ret(stream
, ptr
, result
);
467 trace_dump_call_end(stream
);
474 trace_context_bind_depth_stencil_alpha_state(struct pipe_context
*_pipe
,
477 struct trace_context
*tr_ctx
= trace_context(_pipe
);
478 struct trace_stream
*stream
= tr_ctx
->stream
;
479 struct pipe_context
*pipe
= tr_ctx
->pipe
;
481 trace_dump_call_begin(stream
, "pipe_context", "bind_depth_stencil_alpha_state");
483 trace_dump_arg(stream
, ptr
, pipe
);
484 trace_dump_arg(stream
, ptr
, state
);
486 pipe
->bind_depth_stencil_alpha_state(pipe
, state
);;
488 trace_dump_call_end(stream
);
493 trace_context_delete_depth_stencil_alpha_state(struct pipe_context
*_pipe
,
496 struct trace_context
*tr_ctx
= trace_context(_pipe
);
497 struct trace_stream
*stream
= tr_ctx
->stream
;
498 struct pipe_context
*pipe
= tr_ctx
->pipe
;
500 trace_dump_call_begin(stream
, "pipe_context", "delete_depth_stencil_alpha_state");
502 trace_dump_arg(stream
, ptr
, pipe
);
503 trace_dump_arg(stream
, ptr
, state
);
505 pipe
->delete_depth_stencil_alpha_state(pipe
, state
);;
507 trace_dump_call_end(stream
);
512 trace_context_create_fs_state(struct pipe_context
*_pipe
,
513 const struct pipe_shader_state
*state
)
515 struct trace_context
*tr_ctx
= trace_context(_pipe
);
516 struct trace_stream
*stream
= tr_ctx
->stream
;
517 struct pipe_context
*pipe
= tr_ctx
->pipe
;
520 trace_dump_call_begin(stream
, "pipe_context", "create_fs_state");
522 trace_dump_arg(stream
, ptr
, pipe
);
523 trace_dump_arg(stream
, shader_state
, state
);
525 result
= pipe
->create_fs_state(pipe
, state
);;
527 trace_dump_ret(stream
, ptr
, result
);
529 trace_dump_call_end(stream
);
536 trace_context_bind_fs_state(struct pipe_context
*_pipe
,
539 struct trace_context
*tr_ctx
= trace_context(_pipe
);
540 struct trace_stream
*stream
= tr_ctx
->stream
;
541 struct pipe_context
*pipe
= tr_ctx
->pipe
;
543 trace_dump_call_begin(stream
, "pipe_context", "bind_fs_state");
545 trace_dump_arg(stream
, ptr
, pipe
);
546 trace_dump_arg(stream
, ptr
, state
);
548 pipe
->bind_fs_state(pipe
, state
);;
550 trace_dump_call_end(stream
);
555 trace_context_delete_fs_state(struct pipe_context
*_pipe
,
558 struct trace_context
*tr_ctx
= trace_context(_pipe
);
559 struct trace_stream
*stream
= tr_ctx
->stream
;
560 struct pipe_context
*pipe
= tr_ctx
->pipe
;
562 trace_dump_call_begin(stream
, "pipe_context", "delete_fs_state");
564 trace_dump_arg(stream
, ptr
, pipe
);
565 trace_dump_arg(stream
, ptr
, state
);
567 pipe
->delete_fs_state(pipe
, state
);;
569 trace_dump_call_end(stream
);
574 trace_context_create_vs_state(struct pipe_context
*_pipe
,
575 const struct pipe_shader_state
*state
)
577 struct trace_context
*tr_ctx
= trace_context(_pipe
);
578 struct trace_stream
*stream
= tr_ctx
->stream
;
579 struct pipe_context
*pipe
= tr_ctx
->pipe
;
582 trace_dump_call_begin(stream
, "pipe_context", "create_vs_state");
584 trace_dump_arg(stream
, ptr
, pipe
);
585 trace_dump_arg(stream
, shader_state
, state
);
587 result
= pipe
->create_vs_state(pipe
, state
);;
589 trace_dump_ret(stream
, ptr
, result
);
591 trace_dump_call_end(stream
);
598 trace_context_bind_vs_state(struct pipe_context
*_pipe
,
601 struct trace_context
*tr_ctx
= trace_context(_pipe
);
602 struct trace_stream
*stream
= tr_ctx
->stream
;
603 struct pipe_context
*pipe
= tr_ctx
->pipe
;
605 trace_dump_call_begin(stream
, "pipe_context", "bind_vs_state");
607 trace_dump_arg(stream
, ptr
, pipe
);
608 trace_dump_arg(stream
, ptr
, state
);
610 pipe
->bind_vs_state(pipe
, state
);;
612 trace_dump_call_end(stream
);
617 trace_context_delete_vs_state(struct pipe_context
*_pipe
,
620 struct trace_context
*tr_ctx
= trace_context(_pipe
);
621 struct trace_stream
*stream
= tr_ctx
->stream
;
622 struct pipe_context
*pipe
= tr_ctx
->pipe
;
624 trace_dump_call_begin(stream
, "pipe_context", "delete_vs_state");
626 trace_dump_arg(stream
, ptr
, pipe
);
627 trace_dump_arg(stream
, ptr
, state
);
629 pipe
->delete_vs_state(pipe
, state
);;
631 trace_dump_call_end(stream
);
636 trace_context_set_blend_color(struct pipe_context
*_pipe
,
637 const struct pipe_blend_color
*state
)
639 struct trace_context
*tr_ctx
= trace_context(_pipe
);
640 struct trace_stream
*stream
= tr_ctx
->stream
;
641 struct pipe_context
*pipe
= tr_ctx
->pipe
;
643 trace_dump_call_begin(stream
, "pipe_context", "set_blend_color");
645 trace_dump_arg(stream
, ptr
, pipe
);
646 trace_dump_arg(stream
, blend_color
, state
);
648 pipe
->set_blend_color(pipe
, state
);;
650 trace_dump_call_end(stream
);
655 trace_context_set_clip_state(struct pipe_context
*_pipe
,
656 const struct pipe_clip_state
*state
)
658 struct trace_context
*tr_ctx
= trace_context(_pipe
);
659 struct trace_stream
*stream
= tr_ctx
->stream
;
660 struct pipe_context
*pipe
= tr_ctx
->pipe
;
662 trace_dump_call_begin(stream
, "pipe_context", "set_clip_state");
664 trace_dump_arg(stream
, ptr
, pipe
);
665 trace_dump_arg(stream
, clip_state
, state
);
667 pipe
->set_clip_state(pipe
, state
);;
669 trace_dump_call_end(stream
);
674 trace_context_set_constant_buffer(struct pipe_context
*_pipe
,
675 uint shader
, uint index
,
676 const struct pipe_constant_buffer
*buffer
)
678 struct trace_context
*tr_ctx
= trace_context(_pipe
);
679 struct trace_stream
*stream
= tr_ctx
->stream
;
680 struct pipe_context
*pipe
= tr_ctx
->pipe
;
682 trace_dump_call_begin(stream
, "pipe_context", "set_constant_buffer");
684 trace_dump_arg(stream
, ptr
, pipe
);
685 trace_dump_arg(stream
, uint
, shader
);
686 trace_dump_arg(stream
, uint
, index
);
687 trace_dump_arg(stream
, constant_buffer
, buffer
);
689 pipe
->set_constant_buffer(pipe
, shader
, index
, buffer
);;
691 trace_dump_call_end(stream
);
696 trace_context_set_framebuffer_state(struct pipe_context
*_pipe
,
697 const struct pipe_framebuffer_state
*state
)
699 struct trace_context
*tr_ctx
= trace_context(_pipe
);
700 struct trace_stream
*stream
= tr_ctx
->stream
;
701 struct pipe_context
*pipe
= tr_ctx
->pipe
;
703 trace_dump_call_begin(stream
, "pipe_context", "set_framebuffer_state");
705 trace_dump_arg(stream
, ptr
, pipe
);
706 trace_dump_arg(stream
, framebuffer_state
, state
);
708 pipe
->set_framebuffer_state(pipe
, state
);;
710 trace_dump_call_end(stream
);
715 trace_context_set_polygon_stipple(struct pipe_context
*_pipe
,
716 const struct pipe_poly_stipple
*state
)
718 struct trace_context
*tr_ctx
= trace_context(_pipe
);
719 struct trace_stream
*stream
= tr_ctx
->stream
;
720 struct pipe_context
*pipe
= tr_ctx
->pipe
;
722 trace_dump_call_begin(stream
, "pipe_context", "set_polygon_stipple");
724 trace_dump_arg(stream
, ptr
, pipe
);
725 trace_dump_arg(stream
, poly_stipple
, state
);
727 pipe
->set_polygon_stipple(pipe
, state
);;
729 trace_dump_call_end(stream
);
734 trace_context_set_scissor_state(struct pipe_context
*_pipe
,
735 const struct pipe_scissor_state
*state
)
737 struct trace_context
*tr_ctx
= trace_context(_pipe
);
738 struct trace_stream
*stream
= tr_ctx
->stream
;
739 struct pipe_context
*pipe
= tr_ctx
->pipe
;
741 trace_dump_call_begin(stream
, "pipe_context", "set_scissor_state");
743 trace_dump_arg(stream
, ptr
, pipe
);
744 trace_dump_arg(stream
, scissor_state
, state
);
746 pipe
->set_scissor_state(pipe
, state
);;
748 trace_dump_call_end(stream
);
753 trace_context_set_viewport_state(struct pipe_context
*_pipe
,
754 const struct pipe_viewport_state
*state
)
756 struct trace_context
*tr_ctx
= trace_context(_pipe
);
757 struct trace_stream
*stream
= tr_ctx
->stream
;
758 struct pipe_context
*pipe
= tr_ctx
->pipe
;
760 trace_dump_call_begin(stream
, "pipe_context", "set_viewport_state");
762 trace_dump_arg(stream
, ptr
, pipe
);
763 trace_dump_arg(stream
, viewport_state
, state
);
765 pipe
->set_viewport_state(pipe
, state
);;
767 trace_dump_call_end(stream
);
772 trace_context_set_sampler_textures(struct pipe_context
*_pipe
,
773 unsigned num_textures
,
774 struct pipe_texture
**textures
)
776 struct trace_context
*tr_ctx
= trace_context(_pipe
);
777 struct trace_stream
*stream
= tr_ctx
->stream
;
778 struct pipe_context
*pipe
= tr_ctx
->pipe
;
780 trace_dump_call_begin(stream
, "pipe_context", "set_sampler_textures");
782 trace_dump_arg(stream
, ptr
, pipe
);
783 trace_dump_arg(stream
, uint
, num_textures
);
784 trace_dump_arg_array(stream
, ptr
, textures
, num_textures
);
786 pipe
->set_sampler_textures(pipe
, num_textures
, textures
);;
788 trace_dump_call_end(stream
);
793 trace_context_set_vertex_buffers(struct pipe_context
*_pipe
,
794 unsigned num_buffers
,
795 const struct pipe_vertex_buffer
*buffers
)
797 struct trace_context
*tr_ctx
= trace_context(_pipe
);
798 struct trace_stream
*stream
= tr_ctx
->stream
;
799 struct pipe_context
*pipe
= tr_ctx
->pipe
;
801 trace_dump_call_begin(stream
, "pipe_context", "set_vertex_buffers");
803 trace_dump_arg(stream
, ptr
, pipe
);
804 trace_dump_arg(stream
, uint
, num_buffers
);
806 trace_dump_arg_begin(stream
, "buffers");
807 trace_dump_struct_array(stream
, vertex_buffer
, buffers
, num_buffers
);
808 trace_dump_arg_end(stream
);
810 pipe
->set_vertex_buffers(pipe
, num_buffers
, buffers
);;
812 trace_dump_call_end(stream
);
817 trace_context_set_vertex_elements(struct pipe_context
*_pipe
,
818 unsigned num_elements
,
819 const struct pipe_vertex_element
*elements
)
821 struct trace_context
*tr_ctx
= trace_context(_pipe
);
822 struct trace_stream
*stream
= tr_ctx
->stream
;
823 struct pipe_context
*pipe
= tr_ctx
->pipe
;
825 trace_dump_call_begin(stream
, "pipe_context", "set_vertex_elements");
827 trace_dump_arg(stream
, ptr
, pipe
);
828 trace_dump_arg(stream
, uint
, num_elements
);
830 trace_dump_arg_begin(stream
, "elements");
831 trace_dump_struct_array(stream
, vertex_element
, elements
, num_elements
);
832 trace_dump_arg_end(stream
);
834 pipe
->set_vertex_elements(pipe
, num_elements
, elements
);;
836 trace_dump_call_end(stream
);
841 trace_context_surface_copy(struct pipe_context
*_pipe
,
843 struct pipe_surface
*dest
,
844 unsigned destx
, unsigned desty
,
845 struct pipe_surface
*src
,
846 unsigned srcx
, unsigned srcy
,
847 unsigned width
, unsigned height
)
849 struct trace_context
*tr_ctx
= trace_context(_pipe
);
850 struct trace_stream
*stream
= tr_ctx
->stream
;
851 struct pipe_context
*pipe
= tr_ctx
->pipe
;
853 trace_dump_call_begin(stream
, "pipe_context", "surface_copy");
855 trace_dump_arg(stream
, ptr
, pipe
);
856 trace_dump_arg(stream
, bool, do_flip
);
857 trace_dump_arg(stream
, ptr
, dest
);
858 trace_dump_arg(stream
, uint
, destx
);
859 trace_dump_arg(stream
, uint
, desty
);
860 trace_dump_arg(stream
, ptr
, src
);
861 trace_dump_arg(stream
, uint
, srcx
);
862 trace_dump_arg(stream
, uint
, srcy
);
863 trace_dump_arg(stream
, uint
, width
);
864 trace_dump_arg(stream
, uint
, height
);
866 pipe
->surface_copy(pipe
, do_flip
,
868 src
, srcx
, srcy
, width
, height
);
870 trace_dump_call_end(stream
);
875 trace_context_surface_fill(struct pipe_context
*_pipe
,
876 struct pipe_surface
*dst
,
877 unsigned dstx
, unsigned dsty
,
878 unsigned width
, unsigned height
,
881 struct trace_context
*tr_ctx
= trace_context(_pipe
);
882 struct trace_stream
*stream
= tr_ctx
->stream
;
883 struct pipe_context
*pipe
= tr_ctx
->pipe
;
885 trace_dump_call_begin(stream
, "pipe_context", "surface_fill");
887 trace_dump_arg(stream
, ptr
, pipe
);
888 trace_dump_arg(stream
, ptr
, dst
);
889 trace_dump_arg(stream
, uint
, dstx
);
890 trace_dump_arg(stream
, uint
, dsty
);
891 trace_dump_arg(stream
, uint
, width
);
892 trace_dump_arg(stream
, uint
, height
);
894 pipe
->surface_fill(pipe
, dst
, dstx
, dsty
, width
, height
, value
);;
896 trace_dump_call_end(stream
);
901 trace_context_clear(struct pipe_context
*_pipe
,
902 struct pipe_surface
*surface
,
905 struct trace_context
*tr_ctx
= trace_context(_pipe
);
906 struct trace_stream
*stream
= tr_ctx
->stream
;
907 struct pipe_context
*pipe
= tr_ctx
->pipe
;
909 trace_dump_call_begin(stream
, "pipe_context", "clear");
911 trace_dump_arg(stream
, ptr
, pipe
);
912 trace_dump_arg(stream
, ptr
, surface
);
913 trace_dump_arg(stream
, uint
, clearValue
);
915 pipe
->clear(pipe
, surface
, clearValue
);;
917 trace_dump_call_end(stream
);
922 trace_context_flush(struct pipe_context
*_pipe
,
924 struct pipe_fence_handle
**fence
)
926 struct trace_context
*tr_ctx
= trace_context(_pipe
);
927 struct trace_stream
*stream
= tr_ctx
->stream
;
928 struct pipe_context
*pipe
= tr_ctx
->pipe
;
930 trace_dump_call_begin(stream
, "pipe_context", "flush");
932 trace_dump_arg(stream
, ptr
, pipe
);
933 trace_dump_arg(stream
, uint
, flags
);
934 trace_dump_arg(stream
, ptr
, fence
);
936 pipe
->flush(pipe
, flags
, fence
);;
938 trace_dump_call_end(stream
);
943 trace_context_destroy(struct pipe_context
*_pipe
)
945 struct trace_context
*tr_ctx
= trace_context(_pipe
);
946 struct trace_stream
*stream
= tr_ctx
->stream
;
947 struct pipe_context
*pipe
= tr_ctx
->pipe
;
949 trace_dump_call_begin(stream
, "pipe_context", "destroy");
951 trace_dump_arg(stream
, ptr
, pipe
);
955 trace_dump_call_end(stream
);
961 struct pipe_context
*
962 trace_context_create(struct pipe_screen
*screen
,
963 struct pipe_context
*pipe
)
965 struct trace_stream
*stream
;
966 struct trace_context
*tr_ctx
;
968 if(!debug_get_bool_option("GALLIUM_TRACE", FALSE
))
971 tr_ctx
= CALLOC_STRUCT(trace_context
);
975 tr_ctx
->base
.winsys
= screen
->winsys
;
976 tr_ctx
->base
.screen
= screen
;
977 tr_ctx
->base
.destroy
= trace_context_destroy
;
978 tr_ctx
->base
.set_edgeflags
= trace_context_set_edgeflags
;
979 tr_ctx
->base
.draw_arrays
= trace_context_draw_arrays
;
980 tr_ctx
->base
.draw_elements
= trace_context_draw_elements
;
981 tr_ctx
->base
.draw_range_elements
= trace_context_draw_range_elements
;
982 tr_ctx
->base
.create_query
= trace_context_create_query
;
983 tr_ctx
->base
.destroy_query
= trace_context_destroy_query
;
984 tr_ctx
->base
.begin_query
= trace_context_begin_query
;
985 tr_ctx
->base
.end_query
= trace_context_end_query
;
986 tr_ctx
->base
.get_query_result
= trace_context_get_query_result
;
987 tr_ctx
->base
.create_blend_state
= trace_context_create_blend_state
;
988 tr_ctx
->base
.bind_blend_state
= trace_context_bind_blend_state
;
989 tr_ctx
->base
.delete_blend_state
= trace_context_delete_blend_state
;
990 tr_ctx
->base
.create_sampler_state
= trace_context_create_sampler_state
;
991 tr_ctx
->base
.bind_sampler_states
= trace_context_bind_sampler_states
;
992 tr_ctx
->base
.delete_sampler_state
= trace_context_delete_sampler_state
;
993 tr_ctx
->base
.create_rasterizer_state
= trace_context_create_rasterizer_state
;
994 tr_ctx
->base
.bind_rasterizer_state
= trace_context_bind_rasterizer_state
;
995 tr_ctx
->base
.delete_rasterizer_state
= trace_context_delete_rasterizer_state
;
996 tr_ctx
->base
.create_depth_stencil_alpha_state
= trace_context_create_depth_stencil_alpha_state
;
997 tr_ctx
->base
.bind_depth_stencil_alpha_state
= trace_context_bind_depth_stencil_alpha_state
;
998 tr_ctx
->base
.delete_depth_stencil_alpha_state
= trace_context_delete_depth_stencil_alpha_state
;
999 tr_ctx
->base
.create_fs_state
= trace_context_create_fs_state
;
1000 tr_ctx
->base
.bind_fs_state
= trace_context_bind_fs_state
;
1001 tr_ctx
->base
.delete_fs_state
= trace_context_delete_fs_state
;
1002 tr_ctx
->base
.create_vs_state
= trace_context_create_vs_state
;
1003 tr_ctx
->base
.bind_vs_state
= trace_context_bind_vs_state
;
1004 tr_ctx
->base
.delete_vs_state
= trace_context_delete_vs_state
;
1005 tr_ctx
->base
.set_blend_color
= trace_context_set_blend_color
;
1006 tr_ctx
->base
.set_clip_state
= trace_context_set_clip_state
;
1007 tr_ctx
->base
.set_constant_buffer
= trace_context_set_constant_buffer
;
1008 tr_ctx
->base
.set_framebuffer_state
= trace_context_set_framebuffer_state
;
1009 tr_ctx
->base
.set_polygon_stipple
= trace_context_set_polygon_stipple
;
1010 tr_ctx
->base
.set_scissor_state
= trace_context_set_scissor_state
;
1011 tr_ctx
->base
.set_viewport_state
= trace_context_set_viewport_state
;
1012 tr_ctx
->base
.set_sampler_textures
= trace_context_set_sampler_textures
;
1013 tr_ctx
->base
.set_vertex_buffers
= trace_context_set_vertex_buffers
;
1014 tr_ctx
->base
.set_vertex_elements
= trace_context_set_vertex_elements
;
1015 tr_ctx
->base
.surface_copy
= trace_context_surface_copy
;
1016 tr_ctx
->base
.surface_fill
= trace_context_surface_fill
;
1017 tr_ctx
->base
.clear
= trace_context_clear
;
1018 tr_ctx
->base
.flush
= trace_context_flush
;
1020 tr_ctx
->pipe
= pipe
;
1021 tr_ctx
->stream
= stream
= trace_screen(screen
)->stream
;
1023 trace_dump_call_begin(stream
, "", "pipe_context_create");
1024 trace_dump_arg_begin(stream
, "screen");
1025 trace_dump_ptr(stream
, pipe
->screen
);
1026 trace_dump_arg_end(stream
);
1027 trace_dump_ret(stream
, ptr
, pipe
);
1028 trace_dump_call_end(stream
);
1030 return &tr_ctx
->base
;