From 195383a5ec293ce595ddc880d3f6f59566594754 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 2 Apr 2024 14:05:21 +0200 Subject: [PATCH] radv: add radv_rmv.h Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/meson.build | 1 + src/amd/vulkan/radv_buffer.c | 1 + src/amd/vulkan/radv_cmd_buffer.c | 1 + src/amd/vulkan/radv_descriptor_set.c | 1 + src/amd/vulkan/radv_device.c | 1 + src/amd/vulkan/radv_device_memory.c | 1 + src/amd/vulkan/radv_event.c | 3 +- src/amd/vulkan/radv_image.c | 1 + src/amd/vulkan/radv_pipeline.c | 1 + src/amd/vulkan/radv_pipeline_compute.c | 1 + src/amd/vulkan/radv_pipeline_graphics.c | 1 + src/amd/vulkan/radv_pipeline_rt.c | 1 + src/amd/vulkan/radv_private.h | 34 --------- src/amd/vulkan/radv_query.c | 1 + src/amd/vulkan/radv_queue.c | 1 + src/amd/vulkan/radv_rmv.c | 1 + src/amd/vulkan/radv_rmv.h | 94 +++++++++++++++++++++++++ 17 files changed, 110 insertions(+), 35 deletions(-) create mode 100644 src/amd/vulkan/radv_rmv.h diff --git a/src/amd/vulkan/meson.build b/src/amd/vulkan/meson.build index 68b5de46988..289e6f91719 100644 --- a/src/amd/vulkan/meson.build +++ b/src/amd/vulkan/meson.build @@ -150,6 +150,7 @@ libradv_files = files( 'radv_queue.h', 'radv_radeon_winsys.h', 'radv_rmv.c', + 'radv_rmv.h', 'radv_rra.c', 'radv_rra.h', 'radv_sampler.c', diff --git a/src/amd/vulkan/radv_buffer.c b/src/amd/vulkan/radv_buffer.c index a1eba894cff..bc4b99ba782 100644 --- a/src/amd/vulkan/radv_buffer.c +++ b/src/amd/vulkan/radv_buffer.c @@ -28,6 +28,7 @@ #include "radv_buffer.h" #include "radv_device_memory.h" #include "radv_private.h" +#include "radv_rmv.h" #include "vk_common_entrypoints.h" #include "vk_debug_utils.h" diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 5978e4ae604..30a58d0b954 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -34,6 +34,7 @@ #include "radv_pipeline_rt.h" #include "radv_private.h" #include "radv_radeon_winsys.h" +#include "radv_rmv.h" #include "radv_shader.h" #include "radv_shader_object.h" #include "radv_sqtt.h" diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c index 279f3aedd86..1ba18543869 100644 --- a/src/amd/vulkan/radv_descriptor_set.c +++ b/src/amd/vulkan/radv_descriptor_set.c @@ -32,6 +32,7 @@ #include "radv_image.h" #include "radv_image_view.h" #include "radv_private.h" +#include "radv_rmv.h" #include "radv_sampler.h" #include "sid.h" #include "vk_acceleration_structure.h" diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 620e3e83143..b3d4ae32865 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -50,6 +50,7 @@ #include "radv_debug.h" #include "radv_formats.h" #include "radv_private.h" +#include "radv_rmv.h" #include "radv_shader.h" #include "radv_spm.h" #include "radv_sqtt.h" diff --git a/src/amd/vulkan/radv_device_memory.c b/src/amd/vulkan/radv_device_memory.c index c2dc27cde7c..bdd0bebdc63 100644 --- a/src/amd/vulkan/radv_device_memory.c +++ b/src/amd/vulkan/radv_device_memory.c @@ -29,6 +29,7 @@ #include "radv_buffer.h" #include "radv_image.h" #include "radv_private.h" +#include "radv_rmv.h" void radv_device_memory_init(struct radv_device_memory *mem, struct radv_device *device, struct radeon_winsys_bo *bo) diff --git a/src/amd/vulkan/radv_event.c b/src/amd/vulkan/radv_event.c index 20e59d2417a..580a06b60a3 100644 --- a/src/amd/vulkan/radv_event.c +++ b/src/amd/vulkan/radv_event.c @@ -25,9 +25,10 @@ * IN THE SOFTWARE. */ -#include "radv_buffer.h" #include "radv_event.h" +#include "radv_buffer.h" #include "radv_private.h" +#include "radv_rmv.h" static void radv_destroy_event(struct radv_device *device, const VkAllocationCallbacks *pAllocator, struct radv_event *event) diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 14b6a524011..9d360a014dd 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -37,6 +37,7 @@ #include "radv_image_view.h" #include "radv_private.h" #include "radv_radeon_winsys.h" +#include "radv_rmv.h" #include "radv_video.h" #include "sid.h" #include "vk_debug_utils.h" diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index 06be706514c..35085656f74 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -39,6 +39,7 @@ #include "radv_debug.h" #include "radv_pipeline_rt.h" #include "radv_private.h" +#include "radv_rmv.h" #include "radv_shader.h" #include "radv_shader_args.h" #include "vk_pipeline.h" diff --git a/src/amd/vulkan/radv_pipeline_compute.c b/src/amd/vulkan/radv_pipeline_compute.c index 5d60d4b717c..39017b44306 100644 --- a/src/amd/vulkan/radv_pipeline_compute.c +++ b/src/amd/vulkan/radv_pipeline_compute.c @@ -39,6 +39,7 @@ #include "radv_debug.h" #include "radv_pipeline_cache.h" #include "radv_private.h" +#include "radv_rmv.h" #include "radv_shader.h" #include "radv_shader_args.h" #include "vk_nir_convert_ycbcr.h" diff --git a/src/amd/vulkan/radv_pipeline_graphics.c b/src/amd/vulkan/radv_pipeline_graphics.c index 24b69730c07..9c0493262ff 100644 --- a/src/amd/vulkan/radv_pipeline_graphics.c +++ b/src/amd/vulkan/radv_pipeline_graphics.c @@ -40,6 +40,7 @@ #include "radv_formats.h" #include "radv_pipeline_cache.h" #include "radv_private.h" +#include "radv_rmv.h" #include "radv_shader.h" #include "radv_shader_args.h" #include "vk_nir_convert_ycbcr.h" diff --git a/src/amd/vulkan/radv_pipeline_rt.c b/src/amd/vulkan/radv_pipeline_rt.c index 65b38e1d432..e3295668b87 100644 --- a/src/amd/vulkan/radv_pipeline_rt.c +++ b/src/amd/vulkan/radv_pipeline_rt.c @@ -29,6 +29,7 @@ #include "radv_pipeline_cache.h" #include "radv_pipeline_rt.h" #include "radv_private.h" +#include "radv_rmv.h" #include "radv_shader.h" struct rt_handle_hash_entry { diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 9cbe253c862..4eef1e0e509 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -65,9 +65,6 @@ #include "vk_util.h" #include "vk_ycbcr_conversion.h" -#include "rmv/vk_rmv_common.h" -#include "rmv/vk_rmv_tokens.h" - #include "ac_binary.h" #include "ac_gpu_info.h" #include "ac_shader_util.h" @@ -321,37 +318,6 @@ void llvm_compile_shader(const struct radv_nir_compiler_options *options, const unsigned shader_count, struct nir_shader *const *shaders, struct radv_shader_binary **binary, const struct radv_shader_args *args); - -void radv_memory_trace_init(struct radv_device *device); -void radv_rmv_log_bo_allocate(struct radv_device *device, struct radeon_winsys_bo *bo, bool is_internal); -void radv_rmv_log_bo_destroy(struct radv_device *device, struct radeon_winsys_bo *bo); -void radv_rmv_log_heap_create(struct radv_device *device, VkDeviceMemory heap, bool is_internal, - VkMemoryAllocateFlags alloc_flags); -void radv_rmv_log_buffer_bind(struct radv_device *device, VkBuffer _buffer); -void radv_rmv_log_image_create(struct radv_device *device, const VkImageCreateInfo *create_info, bool is_internal, - VkImage _image); -void radv_rmv_log_image_bind(struct radv_device *device, VkImage _image); -void radv_rmv_log_query_pool_create(struct radv_device *device, VkQueryPool pool); -void radv_rmv_log_command_buffer_bo_create(struct radv_device *device, struct radeon_winsys_bo *bo, - uint32_t executable_size, uint32_t data_size, uint32_t scratch_size); -void radv_rmv_log_command_buffer_bo_destroy(struct radv_device *device, struct radeon_winsys_bo *bo); -void radv_rmv_log_border_color_palette_create(struct radv_device *device, struct radeon_winsys_bo *bo); -void radv_rmv_log_border_color_palette_destroy(struct radv_device *device, struct radeon_winsys_bo *bo); -void radv_rmv_log_sparse_add_residency(struct radv_device *device, struct radeon_winsys_bo *src_bo, uint64_t offset); -void radv_rmv_log_sparse_remove_residency(struct radv_device *device, struct radeon_winsys_bo *src_bo, uint64_t offset); -void radv_rmv_log_descriptor_pool_create(struct radv_device *device, const VkDescriptorPoolCreateInfo *create_info, - VkDescriptorPool pool); -void radv_rmv_log_graphics_pipeline_create(struct radv_device *device, struct radv_pipeline *pipeline, - bool is_internal); -void radv_rmv_log_compute_pipeline_create(struct radv_device *device, struct radv_pipeline *pipeline, bool is_internal); -void radv_rmv_log_rt_pipeline_create(struct radv_device *device, struct radv_ray_tracing_pipeline *pipeline); -void radv_rmv_log_event_create(struct radv_device *device, VkEvent event, VkEventCreateFlags flags, bool is_internal); -void radv_rmv_log_resource_destroy(struct radv_device *device, uint64_t handle); -void radv_rmv_log_submit(struct radv_device *device, enum amd_ip_type type); -void radv_rmv_fill_device_info(const struct radv_physical_device *pdev, struct vk_rmv_device_info *info); -void radv_rmv_collect_trace_events(struct radv_device *device); -void radv_memory_trace_finish(struct radv_device *device); - /* * Queue helper to get ring. * placed here as it needs queue + device structs. diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c index d13c85854e3..02e58a263db 100644 --- a/src/amd/vulkan/radv_query.c +++ b/src/amd/vulkan/radv_query.c @@ -37,6 +37,7 @@ #include "radv_perfcounter.h" #include "radv_private.h" #include "radv_query.h" +#include "radv_rmv.h" #include "sid.h" #include "vk_acceleration_structure.h" #include "vk_common_entrypoints.h" diff --git a/src/amd/vulkan/radv_queue.c b/src/amd/vulkan/radv_queue.c index 19c43b50735..02568d0829c 100644 --- a/src/amd/vulkan/radv_queue.c +++ b/src/amd/vulkan/radv_queue.c @@ -32,6 +32,7 @@ #include "radv_device_memory.h" #include "radv_image.h" #include "radv_private.h" +#include "radv_rmv.h" #include "vk_semaphore.h" #include "vk_sync.h" diff --git a/src/amd/vulkan/radv_rmv.c b/src/amd/vulkan/radv_rmv.c index 01589eb445e..351b51ce887 100644 --- a/src/amd/vulkan/radv_rmv.c +++ b/src/amd/vulkan/radv_rmv.c @@ -37,6 +37,7 @@ #include "radv_pipeline_rt.h" #include "radv_private.h" #include "radv_query.h" +#include "radv_rmv.h" #define RADV_FTRACE_INSTANCE_PATH "/sys/kernel/tracing/instances/amd_rmv" diff --git a/src/amd/vulkan/radv_rmv.h b/src/amd/vulkan/radv_rmv.h new file mode 100644 index 00000000000..75d3e291f1f --- /dev/null +++ b/src/amd/vulkan/radv_rmv.h @@ -0,0 +1,94 @@ +/* + * Copyright © 2016 Red Hat. + * Copyright © 2016 Bas Nieuwenhuizen + * + * based in part on anv driver which is: + * Copyright © 2015 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef RADV_RMV_H +#define RADV_RMV_H + +#include "rmv/vk_rmv_common.h" +#include "rmv/vk_rmv_tokens.h" + +#include "radv_radeon_winsys.h" + +struct radv_device; +struct radv_physical_device; +struct radv_pipeline; +struct radv_ray_tracing_pipeline; + +void radv_memory_trace_init(struct radv_device *device); + +void radv_rmv_fill_device_info(const struct radv_physical_device *pdev, struct vk_rmv_device_info *info); + +void radv_rmv_collect_trace_events(struct radv_device *device); + +void radv_memory_trace_finish(struct radv_device *device); + +void radv_rmv_log_heap_create(struct radv_device *device, VkDeviceMemory heap, bool is_internal, + VkMemoryAllocateFlags alloc_flags); + +void radv_rmv_log_bo_allocate(struct radv_device *device, struct radeon_winsys_bo *bo, bool is_internal); + +void radv_rmv_log_bo_destroy(struct radv_device *device, struct radeon_winsys_bo *bo); + +void radv_rmv_log_buffer_bind(struct radv_device *device, VkBuffer _buffer); + +void radv_rmv_log_image_create(struct radv_device *device, const VkImageCreateInfo *create_info, bool is_internal, + VkImage _image); + +void radv_rmv_log_image_bind(struct radv_device *device, VkImage _image); + +void radv_rmv_log_query_pool_create(struct radv_device *device, VkQueryPool pool); + +void radv_rmv_log_command_buffer_bo_create(struct radv_device *device, struct radeon_winsys_bo *bo, + uint32_t executable_size, uint32_t data_size, uint32_t scratch_size); + +void radv_rmv_log_command_buffer_bo_destroy(struct radv_device *device, struct radeon_winsys_bo *bo); + +void radv_rmv_log_border_color_palette_create(struct radv_device *device, struct radeon_winsys_bo *bo); + +void radv_rmv_log_border_color_palette_destroy(struct radv_device *device, struct radeon_winsys_bo *bo); + +void radv_rmv_log_sparse_add_residency(struct radv_device *device, struct radeon_winsys_bo *src_bo, uint64_t offset); + +void radv_rmv_log_sparse_remove_residency(struct radv_device *device, struct radeon_winsys_bo *src_bo, uint64_t offset); + +void radv_rmv_log_descriptor_pool_create(struct radv_device *device, const VkDescriptorPoolCreateInfo *create_info, + VkDescriptorPool pool); + +void radv_rmv_log_graphics_pipeline_create(struct radv_device *device, struct radv_pipeline *pipeline, + bool is_internal); + +void radv_rmv_log_compute_pipeline_create(struct radv_device *device, struct radv_pipeline *pipeline, bool is_internal); + +void radv_rmv_log_rt_pipeline_create(struct radv_device *device, struct radv_ray_tracing_pipeline *pipeline); + +void radv_rmv_log_event_create(struct radv_device *device, VkEvent event, VkEventCreateFlags flags, bool is_internal); + +void radv_rmv_log_submit(struct radv_device *device, enum amd_ip_type type); + +void radv_rmv_log_resource_destroy(struct radv_device *device, uint64_t handle); + +#endif /* RADV_RMV_H */