xref: /aosp_15_r20/external/mesa3d/src/intel/common/intel_debug_identifier.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 #include <stdbool.h>
2 #include <stdint.h>
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 /**
8  * \file intel_debug_identifier.h
9  *
10  * Debug identifier to put into the driver debug buffers. Helps figure out
11  * information about the driver that generated a hang.
12  */
13 
14 /* Below is a list of structure located in the identifier buffer. The driver
15  * can fill those in for debug purposes.
16  */
17 
18 enum intel_debug_block_type {
19    /* End of the debug blocks */
20    INTEL_DEBUG_BLOCK_TYPE_END = 1,
21 
22    /* Driver identifier (struct intel_debug_block_driver) */
23    INTEL_DEBUG_BLOCK_TYPE_DRIVER,
24 
25    /* Frame identifier (struct intel_debug_block_frame) */
26    INTEL_DEBUG_BLOCK_TYPE_FRAME,
27 
28    /* Internal, never to be written out */
29    INTEL_DEBUG_BLOCK_TYPE_MAX,
30 };
31 
32 struct intel_debug_block_base {
33    uint32_t type; /* enum intel_debug_block_type */
34    uint32_t length; /* inclusive of this structure size */
35 };
36 
37 struct intel_debug_block_driver {
38    struct intel_debug_block_base base;
39    uint8_t description[];
40 };
41 
42 struct intel_debug_block_frame {
43    struct intel_debug_block_base base;
44    uint64_t frame_id;
45 };
46 
47 extern void *intel_debug_identifier(void);
48 extern uint32_t intel_debug_identifier_size(void);
49 
50 extern uint32_t intel_debug_write_identifiers(void *output,
51                                               uint32_t output_size,
52                                               const char *driver_name);
53 
54 extern void *intel_debug_get_identifier_block(void *buffer,
55                                               uint32_t buffer_size,
56                                               enum intel_debug_block_type type);
57 
58 bool intel_debug_batch_in_range(uint64_t frame_id);
59 
60 #ifdef __cplusplus
61 }
62 #endif
63