void trace_dump_resource_template(const struct pipe_resource *templat) { if (!trace_dumping_enabled_locked()) return; if(!templat) { trace_dump_null(); return; } trace_dump_struct_begin("pipe_resource"); trace_dump_member(int, templat, target); trace_dump_member(format, templat, format); trace_dump_member_begin("width"); trace_dump_uint(templat->width0); trace_dump_member_end(); trace_dump_member_begin("height"); trace_dump_uint(templat->height0); trace_dump_member_end(); trace_dump_member_begin("depth"); trace_dump_uint(templat->depth0); trace_dump_member_end(); trace_dump_member(uint, templat, last_level); trace_dump_member(uint, templat, usage); trace_dump_member(uint, templat, bind); trace_dump_member(uint, templat, flags); trace_dump_struct_end(); }
static void trace_winsys_buffer_unmap(struct pipe_winsys *_winsys, struct pipe_buffer *buffer) { struct trace_winsys *tr_ws = trace_winsys(_winsys); struct pipe_winsys *winsys = tr_ws->winsys; const void *map; map = hash_table_get(tr_ws->buffer_maps, buffer); if(map) { trace_dump_call_begin("pipe_winsys", "buffer_write"); trace_dump_arg(ptr, winsys); trace_dump_arg(ptr, buffer); trace_dump_arg_begin("data"); trace_dump_bytes(map, buffer->size); trace_dump_arg_end(); trace_dump_arg_begin("size"); trace_dump_uint(buffer->size); trace_dump_arg_end(); trace_dump_call_end(); hash_table_remove(tr_ws->buffer_maps, buffer); } winsys->buffer_unmap(winsys, buffer); }
void trace_winsys_user_buffer_update(struct pipe_winsys *_winsys, struct pipe_buffer *buffer) { struct trace_winsys *tr_ws = trace_winsys(_winsys); struct pipe_winsys *winsys = tr_ws->winsys; const void *map; if(buffer && buffer->usage & TRACE_BUFFER_USAGE_USER) { map = winsys->buffer_map(winsys, buffer, PIPE_BUFFER_USAGE_CPU_READ); if(map) { trace_dump_call_begin("pipe_winsys", "buffer_write"); trace_dump_arg(ptr, winsys); trace_dump_arg(ptr, buffer); trace_dump_arg_begin("data"); trace_dump_bytes(map, buffer->size); trace_dump_arg_end(); trace_dump_arg_begin("size"); trace_dump_uint(buffer->size); trace_dump_arg_end(); trace_dump_call_end(); winsys->buffer_unmap(winsys, buffer); } } }
void trace_dump_query_result(unsigned query_type, const union pipe_query_result *result) { if (!trace_dumping_enabled_locked()) return; if (!result) { trace_dump_null(); return; } switch (query_type) { case PIPE_QUERY_OCCLUSION_PREDICATE: case PIPE_QUERY_SO_OVERFLOW_PREDICATE: case PIPE_QUERY_GPU_FINISHED: trace_dump_bool(result->b); break; case PIPE_QUERY_OCCLUSION_COUNTER: case PIPE_QUERY_TIMESTAMP: case PIPE_QUERY_TIME_ELAPSED: case PIPE_QUERY_PRIMITIVES_GENERATED: case PIPE_QUERY_PRIMITIVES_EMITTED: trace_dump_uint(result->u64); break; case PIPE_QUERY_SO_STATISTICS: trace_dump_struct_begin("pipe_query_data_so_statistics"); trace_dump_member(uint, &result->so_statistics, num_primitives_written); trace_dump_member(uint, &result->so_statistics, primitives_storage_needed); trace_dump_struct_end(); break; case PIPE_QUERY_TIMESTAMP_DISJOINT: trace_dump_struct_begin("pipe_query_data_timestamp_disjoint"); trace_dump_member(uint, &result->timestamp_disjoint, frequency); trace_dump_member(bool, &result->timestamp_disjoint, disjoint); trace_dump_struct_end(); break; case PIPE_QUERY_PIPELINE_STATISTICS: trace_dump_struct_begin("pipe_query_data_pipeline_statistics"); trace_dump_member(uint, &result->pipeline_statistics, ia_vertices); trace_dump_member(uint, &result->pipeline_statistics, ia_primitives); trace_dump_member(uint, &result->pipeline_statistics, vs_invocations); trace_dump_member(uint, &result->pipeline_statistics, gs_invocations); trace_dump_member(uint, &result->pipeline_statistics, gs_primitives); trace_dump_member(uint, &result->pipeline_statistics, c_invocations); trace_dump_member(uint, &result->pipeline_statistics, c_primitives); trace_dump_member(uint, &result->pipeline_statistics, ps_invocations); trace_dump_member(uint, &result->pipeline_statistics, hs_invocations); trace_dump_member(uint, &result->pipeline_statistics, ds_invocations); trace_dump_member(uint, &result->pipeline_statistics, cs_invocations); trace_dump_struct_end(); break; default: assert(query_type >= PIPE_QUERY_DRIVER_SPECIFIC); trace_dump_uint(result->u64); break; } }