1 #ifndef AUBINATOR_VIEWER_H
2 #define AUBINATOR_VIEWER_H
6 #include "common/gen_decoder.h"
7 #include "common/gen_disasm.h"
9 struct aub_viewer_cfg
{
12 ImColor highlight_color
;
14 ImColor missing_color
;
17 clear_color(114, 144, 154),
18 dwords_color(29, 177, 194, 255),
19 highlight_color(0, 230, 0, 255),
20 error_color(236, 255, 0, 255),
21 missing_color(230, 0, 230, 255) {}
24 struct aub_viewer_decode_cfg
{
25 struct ImGuiTextFilter command_filter
;
26 struct ImGuiTextFilter field_filter
;
31 aub_viewer_decode_cfg() :
36 enum aub_decode_stage
{
46 struct aub_decode_urb_stage_state
{
51 uint32_t const_rd_length
;
58 struct aub_viewer_decode_ctx
{
59 struct gen_batch_decode_bo (*get_bo
)(void *user_data
, uint64_t address
);
60 unsigned (*get_state_size
)(void *user_data
,
61 uint32_t offset_from_dynamic_state_base_addr
);
63 void (*display_shader
)(void *user_data
, const char *shader_desc
, uint64_t address
);
64 void (*display_urb
)(void *user_data
, const struct aub_decode_urb_stage_state
*stages
);
65 void (*edit_address
)(void *user_data
, uint64_t address
, uint32_t length
);
69 struct gen_spec
*spec
;
70 struct gen_disasm
*disasm
;
71 enum drm_i915_gem_engine_class engine
;
73 struct aub_viewer_cfg
*cfg
;
74 struct aub_viewer_decode_cfg
*decode_cfg
;
76 uint64_t surface_base
;
77 uint64_t dynamic_base
;
78 uint64_t instruction_base
;
80 enum aub_decode_stage stage
;
81 uint32_t end_urb_offset
;
82 struct aub_decode_urb_stage_state urb_stages
[AUB_DECODE_N_STAGE
];
85 void aub_viewer_decode_ctx_init(struct aub_viewer_decode_ctx
*ctx
,
86 struct aub_viewer_cfg
*cfg
,
87 struct aub_viewer_decode_cfg
*decode_cfg
,
88 struct gen_spec
*spec
,
89 struct gen_disasm
*disasm
,
90 struct gen_batch_decode_bo (*get_bo
)(void *, uint64_t),
91 unsigned (*get_state_size
)(void *, uint32_t),
94 void aub_viewer_render_batch(struct aub_viewer_decode_ctx
*ctx
,
95 const void *batch
, uint32_t batch_size
,
98 #endif /* AUBINATOR_VIEWER_H */