+
+
+void
+util_dump_stream_output_target(FILE *stream,
+ const struct pipe_stream_output_target *state)
+{
+ if (!state) {
+ util_dump_null(stream);
+ return;
+ }
+
+ util_dump_struct_begin(stream, "pipe_stream_output_target");
+
+ util_dump_member(stream, ptr, state, buffer);
+ util_dump_member(stream, uint, state, buffer_offset);
+ util_dump_member(stream, uint, state, buffer_size);
+
+ util_dump_struct_end(stream);
+}
+
+
+void
+util_dump_draw_info(FILE *stream, const struct pipe_draw_info *state)
+{
+ if (!state) {
+ util_dump_null(stream);
+ return;
+ }
+
+ util_dump_struct_begin(stream, "pipe_draw_info");
+
+ util_dump_member(stream, uint, state, index_size);
+ util_dump_member(stream, uint, state, has_user_indices);
+
+ util_dump_member(stream, enum_prim_mode, state, mode);
+ util_dump_member(stream, uint, state, start);
+ util_dump_member(stream, uint, state, count);
+
+ util_dump_member(stream, uint, state, start_instance);
+ util_dump_member(stream, uint, state, instance_count);
+
+ util_dump_member(stream, uint, state, drawid);
+
+ util_dump_member(stream, uint, state, vertices_per_patch);
+
+ util_dump_member(stream, int, state, index_bias);
+ util_dump_member(stream, uint, state, min_index);
+ util_dump_member(stream, uint, state, max_index);
+
+ util_dump_member(stream, bool, state, primitive_restart);
+ if (state->primitive_restart)
+ util_dump_member(stream, uint, state, restart_index);
+
+ if (state->index_size) {
+ if (state->has_user_indices)
+ util_dump_member(stream, ptr, state, index.user);
+ else
+ util_dump_member(stream, ptr, state, index.resource);
+ }
+ util_dump_member(stream, ptr, state, count_from_stream_output);
+
+ if (!state->indirect) {
+ util_dump_member(stream, ptr, state, indirect);
+ } else {
+ util_dump_member(stream, uint, state, indirect->offset);
+ util_dump_member(stream, uint, state, indirect->stride);
+ util_dump_member(stream, uint, state, indirect->draw_count);
+ util_dump_member(stream, uint, state, indirect->indirect_draw_count_offset);
+ util_dump_member(stream, ptr, state, indirect->buffer);
+ util_dump_member(stream, ptr, state, indirect->indirect_draw_count);
+ }
+
+ util_dump_struct_end(stream);
+}
+
+void util_dump_grid_info(FILE *stream, const struct pipe_grid_info *state)
+{
+ if (!state) {
+ util_dump_null(stream);
+ return;
+ }
+
+ util_dump_struct_begin(stream, "pipe_grid_info");
+
+ util_dump_member(stream, uint, state, pc);
+ util_dump_member(stream, ptr, state, input);
+ util_dump_member(stream, uint, state, work_dim);
+
+ util_dump_member_begin(stream, "block");
+ util_dump_array(stream, uint, state->block, ARRAY_SIZE(state->block));
+ util_dump_member_end(stream);
+
+ util_dump_member_begin(stream, "grid");
+ util_dump_array(stream, uint, state->grid, ARRAY_SIZE(state->grid));
+ util_dump_member_end(stream);
+
+ util_dump_member(stream, ptr, state, indirect);
+ util_dump_member(stream, uint, state, indirect_offset);
+
+ util_dump_struct_end(stream);
+}
+
+void util_dump_box(FILE *stream, const struct pipe_box *box)
+{
+ if (!box) {
+ util_dump_null(stream);
+ return;
+ }
+
+ util_dump_struct_begin(stream, "pipe_box");
+
+ util_dump_member(stream, int, box, x);
+ util_dump_member(stream, int, box, y);
+ util_dump_member(stream, int, box, z);
+ util_dump_member(stream, int, box, width);
+ util_dump_member(stream, int, box, height);
+ util_dump_member(stream, int, box, depth);
+
+ util_dump_struct_end(stream);
+}
+
+void util_dump_blit_info(FILE *stream, const struct pipe_blit_info *info)
+{
+ char mask[7];
+
+ if (!info) {
+ util_dump_null(stream);
+ return;
+ }
+
+ util_dump_struct_begin(stream, "pipe_blit_info");
+
+ util_dump_member_begin(stream, "dst");
+ util_dump_struct_begin(stream, "dst");
+ util_dump_member(stream, ptr, &info->dst, resource);
+ util_dump_member(stream, uint, &info->dst, level);
+ util_dump_member(stream, format, &info->dst, format);
+ util_dump_member_begin(stream, "box");
+ util_dump_box(stream, &info->dst.box);
+ util_dump_member_end(stream);
+ util_dump_struct_end(stream);
+ util_dump_member_end(stream);
+
+ util_dump_member_begin(stream, "src");
+ util_dump_struct_begin(stream, "src");
+ util_dump_member(stream, ptr, &info->src, resource);
+ util_dump_member(stream, uint, &info->src, level);
+ util_dump_member(stream, format, &info->src, format);
+ util_dump_member_begin(stream, "box");
+ util_dump_box(stream, &info->src.box);
+ util_dump_member_end(stream);
+ util_dump_struct_end(stream);
+ util_dump_member_end(stream);
+
+ mask[0] = (info->mask & PIPE_MASK_R) ? 'R' : '-';
+ mask[1] = (info->mask & PIPE_MASK_G) ? 'G' : '-';
+ mask[2] = (info->mask & PIPE_MASK_B) ? 'B' : '-';
+ mask[3] = (info->mask & PIPE_MASK_A) ? 'A' : '-';
+ mask[4] = (info->mask & PIPE_MASK_Z) ? 'Z' : '-';
+ mask[5] = (info->mask & PIPE_MASK_S) ? 'S' : '-';
+ mask[6] = 0;
+
+ util_dump_member_begin(stream, "mask");
+ util_dump_string(stream, mask);
+ util_dump_member_end(stream);
+ util_dump_member(stream, enum_tex_filter, info, filter);
+
+ util_dump_member(stream, bool, info, scissor_enable);
+ util_dump_member_begin(stream, "scissor");
+ util_dump_scissor_state(stream, &info->scissor);
+ util_dump_member_end(stream);
+
+ util_dump_member(stream, bool, info, render_condition_enable);
+
+ util_dump_struct_end(stream);
+}