radv: Add Radeon Raytracing Analyzer trace dumping utilities

Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18166>
This commit is contained in:
Friedrich Vock 2022-08-20 23:50:38 +02:00 committed by Marge Bot
parent 07eceb4fe4
commit 5749806754
3 changed files with 1157 additions and 0 deletions

View file

@ -82,6 +82,7 @@ libradv_files = files(
'radv_pipeline_rt.c',
'radv_private.h',
'radv_radeon_winsys.h',
'radv_rra.c',
'radv_rt_common.c',
'radv_sdma_copy_image.c',
'radv_shader.c',

View file

@ -789,6 +789,16 @@ struct radv_notifier {
thrd_t thread;
};
struct radv_rra_trace_data {
int elapsed_frames;
int trace_frame;
char *trigger_file;
struct hash_table *accel_structs;
struct hash_table_u64 *accel_struct_vas;
simple_mtx_t data_mtx;
bool validate_as;
};
struct radv_device {
struct vk_device vk;
@ -879,6 +889,9 @@ struct radv_device {
/* SPM. */
struct ac_spm_trace_data spm_trace;
/* Radeon Raytracing Analyzer trace. */
struct radv_rra_trace_data rra_trace;
/* Trap handler. */
struct radv_trap_handler_shader *trap_handler_shader;
struct radeon_winsys_bo *tma_bo; /* Trap Memory Address */
@ -2809,6 +2822,15 @@ void radv_emit_inhibit_clockgating(struct radv_device *device, struct radeon_cmd
bool inhibit);
void radv_emit_spi_config_cntl(struct radv_device *device, struct radeon_cmdbuf *cs, bool enable);
int radv_rra_trace_frame(void);
char *radv_rra_trace_trigger_file(void);
bool radv_rra_trace_enabled(void);
void radv_rra_trace_init(struct radv_device *device);
VkResult radv_rra_dump_trace(VkQueue vk_queue, char *filename);
void radv_rra_trace_finish(VkDevice vk_device, struct radv_rra_trace_data *data);
bool radv_sdma_copy_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
struct radv_buffer *buffer, const VkBufferImageCopy2 *region);

1134
src/amd/vulkan/radv_rra.c Normal file

File diff suppressed because it is too large Load diff