Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions android/framework/decode/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -132,14 +132,19 @@ target_sources(gfxrecon_decode
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources.cpp
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_common.h
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_common.cpp
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_as.h
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_as.cpp
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_draw_calls.h
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_draw_calls.cpp
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_compute_ray_tracing.h
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_compute_ray_tracing.cpp
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_delegate.h
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_delegate.cpp
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_delegate_dumped_resources.h
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_json.h
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_json.cpp
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_transfer.h
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_replay_dump_resources_transfer.cpp
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_resource_allocator.h
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_resource_initializer.h
${GFXRECON_SOURCE_DIR}/framework/decode/vulkan_resource_initializer.cpp
Expand Down
5 changes: 5 additions & 0 deletions framework/decode/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -230,12 +230,17 @@ target_sources(gfxrecon_decode
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources.cpp
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_common.h
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_common.cpp
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_as.h
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_as.cpp
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_draw_calls.h
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_draw_calls.cpp
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_compute_ray_tracing.h
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_compute_ray_tracing.cpp
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_delegate.h
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_delegate.cpp
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_delegate_dumped_resources.h
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_transfer.h
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_transfer.cpp
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_json.h
${CMAKE_CURRENT_LIST_DIR}/vulkan_replay_dump_resources_json.cpp
${CMAKE_CURRENT_LIST_DIR}/vulkan_resource_allocator.h
Expand Down
3 changes: 2 additions & 1 deletion framework/decode/vulkan_pre_process_consumer.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ GFXRECON_BEGIN_NAMESPACE(gfxrecon)
GFXRECON_BEGIN_NAMESPACE(decode)

const std::string DUMP_ARG_BEGIN_COMMAND_BUFFER = "BeginCommandBuffer";
const std::string DUMP_ARG_TRANSFER = "Transfer";
const std::string DUMP_ARG_DRAW = "Draw";
const std::string DUMP_ARG_RENDER_PASS = "RenderPass";
const std::string DUMP_ARG_BEGIN_RENDER_PASS = "BeginRenderPass";
Expand Down Expand Up @@ -724,4 +725,4 @@ class VulkanPreProcessConsumer : public VulkanConsumer
GFXRECON_END_NAMESPACE(decode)
GFXRECON_END_NAMESPACE(gfxrecon)

#endif // GFXRECON_DECODE_VULKAN_PRE_PROCESS_CONSUMER_H
#endif // GFXRECON_DECODE_VULKAN_PRE_PROCESS_CONSUMER_H
67 changes: 57 additions & 10 deletions framework/decode/vulkan_replay_consumer_base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,10 @@ VulkanReplayConsumerBase::~VulkanReplayConsumerBase()
background_queue_.join_all();
main_thread_queue_.poll();

// This will call the destructor for dump resources.
// This needs to be done before parent devices are destroyed
resource_dumper_ = nullptr;

// Cleanup screenshot resources before destroying device.
object_info_table_->VisitVkDeviceInfo([this](const VulkanDeviceInfo* info) {
assert(info != nullptr);
Expand Down Expand Up @@ -332,8 +336,6 @@ VulkanReplayConsumerBase::~VulkanReplayConsumerBase()
graphics::ReleaseLoader(loader_handle_);
}

resource_dumper_ = nullptr;

CommonObjectInfoTable::ReleaseSingleton();
object_info_table_ = nullptr;
}
Expand Down Expand Up @@ -368,6 +370,11 @@ void VulkanReplayConsumerBase::ProcessStateEndMarker(uint64_t frame_number)
{
fps_info_->ProcessStateEndMarker(frame_number);
}

if (options_.dumping_resources)
{
resource_dumper_->ProcessStateEndMarker();
}
}

void VulkanReplayConsumerBase::ProcessDisplayMessageCommand(const std::string& message)
Expand Down Expand Up @@ -1115,6 +1122,11 @@ void VulkanReplayConsumerBase::ProcessInitBufferCommand(format::HandleId device_
}
}
}

if (options_.dumping_resources)
{
resource_dumper_->ProcessInitBufferCommand(block_index_, device_id, buffer_id, data_size, data);
}
}
else
{
Expand Down Expand Up @@ -1251,6 +1263,18 @@ void VulkanReplayConsumerBase::ProcessInitImageCommand(format::HandleId
image_id,
image);
}

if (options_.dumping_resources)
{
VkCommandBuffer command_buffer = VK_NULL_HANDLE;
if (!copy_regions.empty())
{
initializer->BeginCommandBuffer(image_info->queue_family_index, &command_buffer);
}

resource_dumper_->ProcessInitImageCommand(
command_buffer, block_index_, device_id, image_id, data_size, aspect, layout, level_sizes, data);
}
}
}
else
Expand Down Expand Up @@ -2009,8 +2033,8 @@ void VulkanReplayConsumerBase::InitializeReplayDumpResources()
{
if (resource_dumper_ == nullptr)
{
resource_dumper_ =
std::make_unique<VulkanReplayDumpResources>(options_, object_info_table_, _device_address_trackers);
resource_dumper_ = std::make_unique<VulkanReplayDumpResources>(
options_, object_info_table_, _device_address_trackers, instance_tables_, device_tables_);
GFXRECON_ASSERT(resource_dumper_);
}
}
Expand Down Expand Up @@ -4210,7 +4234,7 @@ VkResult VulkanReplayConsumerBase::OverrideQueueSubmit(PFN_vkQueueSubmit
resource_dumper_->MustDumpQueueSubmitIndex(index))
{
resource_dumper_->QueueSubmit(
modified_submit_infos, *GetDeviceTable(queue_info->handle), queue_info->handle, fence, index);
modified_submit_infos, *GetDeviceTable(queue_info->handle), queue_info, fence, index);
}
else
{
Expand Down Expand Up @@ -9106,7 +9130,7 @@ void VulkanReplayConsumerBase::OverrideCmdBuildAccelerationStructuresKHR(
// needs to be called before the address replacer
if (options_.dumping_resources)
{
resource_dumper_->HandleCmdBuildAccelerationStructures(
resource_dumper_->OverrideCmdBuildAccelerationStructuresKHR(
command_buffer_info, *GetDeviceTable(device_info->handle), infoCount, pInfos, ppBuildRangeInfos);
}

Expand Down Expand Up @@ -9136,8 +9160,7 @@ void VulkanReplayConsumerBase::OverrideCmdCopyAccelerationStructureKHR(
const auto* info_meta = pInfo->GetMetaStructPointer();
const auto* src = object_info_table_->GetVkAccelerationStructureKHRInfo(info_meta->src);
const auto* dst = object_info_table_->GetVkAccelerationStructureKHRInfo(info_meta->dst);
resource_dumper_->HandleCmdCopyAccelerationStructureKHR(
command_buffer_info, *GetDeviceTable(device_info->handle), src, dst);
resource_dumper_->HandleCmdCopyAccelerationStructureKHR(*GetDeviceTable(device_info->handle), src, dst);
}

VkCommandBuffer command_buffer = command_buffer_info->handle;
Expand Down Expand Up @@ -9728,7 +9751,7 @@ VkResult VulkanReplayConsumerBase::OverrideBeginCommandBuffer(
}

VkResult res = VK_SUCCESS;
if (options_.dumping_resources && resource_dumper_->DumpingBeginCommandBufferIndex(index))
if (options_.dumping_resources)
{
const VulkanDeviceInfo* device = GetObjectInfoTable().GetVkDeviceInfo(command_buffer_info->parent_id);

Expand Down Expand Up @@ -11112,6 +11135,17 @@ void VulkanReplayConsumerBase::ProcessVulkanCopyAccelerationStructuresCommand(

MapStructArrayHandles(copy_infos->GetMetaStructPointer(), copy_infos->GetLength(), GetObjectInfoTable());

if (options_.dumping_resources)
{
const auto* info_meta = copy_infos->GetMetaStructPointer();
if (info_meta != nullptr)
{
const auto* src = object_info_table_->GetVkAccelerationStructureKHRInfo(info_meta->src);
const auto* dst = object_info_table_->GetVkAccelerationStructureKHRInfo(info_meta->dst);
resource_dumper_->HandleCmdCopyAccelerationStructureKHR(*GetDeviceTable(device_info->handle), src, dst);
}
}

if (UseAddressReplacement(device_info))
{
const auto& address_tracker = GetDeviceAddressTracker(device_info);
Expand Down Expand Up @@ -11142,7 +11176,7 @@ void VulkanReplayConsumerBase::ProcessVulkanBuildAccelerationStructuresCommand(
// it needs to be called before the address replacer
if (options_.dumping_resources)
{
resource_dumper_->HandleCmdBuildAccelerationStructures(
resource_dumper_->OverrideCmdBuildAccelerationStructuresKHR(
nullptr, *GetDeviceTable(device_info->handle), info_count, pInfos, ppRangeInfos);
}

Expand All @@ -11152,6 +11186,19 @@ void VulkanReplayConsumerBase::ProcessVulkanBuildAccelerationStructuresCommand(
.ProcessBuildVulkanAccelerationStructuresMetaCommand(
info_count, pInfos->GetPointer(), ppRangeInfos->GetPointer(), GetDeviceAddressTracker(device_info));
}

if (options_.dumping_resources)
{
ApiCallInfo call_info{ block_index_, 0 };
resource_dumper_->Process_vkCmdBuildAccelerationStructuresKHR(
call_info,
GetDeviceTable(device_info->handle)->CmdBuildAccelerationStructuresKHR,
VK_NULL_HANDLE,
info_count,
pInfos,
ppRangeInfos,
false);
}
}
}

Expand Down
40 changes: 20 additions & 20 deletions framework/decode/vulkan_replay_consumer_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -1852,26 +1852,26 @@ class VulkanReplayConsumerBase : public VulkanConsumer
typedef std::unordered_map<format::HandleId, HardwareBufferMemoryInfo> HardwareBufferMemoryMap;

private:
util::platform::LibraryHandle loader_handle_;
PFN_vkGetInstanceProcAddr get_instance_proc_addr_;
PFN_vkCreateInstance create_instance_proc_;
std::unordered_map<graphics::VulkanDispatchKey, PFN_vkGetDeviceProcAddr> get_device_proc_addrs_;
std::unordered_map<graphics::VulkanDispatchKey, PFN_vkCreateDevice> create_device_procs_;
std::unordered_map<graphics::VulkanDispatchKey, graphics::VulkanInstanceTable> instance_tables_;
std::unordered_map<graphics::VulkanDispatchKey, graphics::VulkanDeviceTable> device_tables_;
std::unordered_map<format::HandleId, format::HandleId> device_phy_id_map_;
std::function<void(const char*)> fatal_error_handler_;
std::shared_ptr<application::Application> application_;
CommonObjectInfoTable* object_info_table_;
bool loading_trim_state_;
bool replaying_trimmed_capture_;
SwapchainImageTracker swapchain_image_tracker_;
HardwareBufferMap hardware_buffers_;
HardwareBufferMemoryMap hardware_buffer_memory_info_;
std::unique_ptr<ScreenshotHandler> screenshot_handler_;
std::unique_ptr<VulkanSwapchain> swapchain_;
std::string screenshot_file_prefix_;
graphics::FpsInfo* fps_info_;
util::platform::LibraryHandle loader_handle_;
PFN_vkGetInstanceProcAddr get_instance_proc_addr_;
PFN_vkCreateInstance create_instance_proc_;
std::unordered_map<graphics::VulkanDispatchKey, PFN_vkGetDeviceProcAddr> get_device_proc_addrs_;
std::unordered_map<graphics::VulkanDispatchKey, PFN_vkCreateDevice> create_device_procs_;
graphics::InstanceDispatchTablesMap instance_tables_;
graphics::DeviceDispatchTablesMap device_tables_;
std::unordered_map<format::HandleId, format::HandleId> device_phy_id_map_;
std::function<void(const char*)> fatal_error_handler_;
std::shared_ptr<application::Application> application_;
CommonObjectInfoTable* object_info_table_;
bool loading_trim_state_;
bool replaying_trimmed_capture_;
SwapchainImageTracker swapchain_image_tracker_;
HardwareBufferMap hardware_buffers_;
HardwareBufferMemoryMap hardware_buffer_memory_info_;
std::unique_ptr<ScreenshotHandler> screenshot_handler_;
std::unique_ptr<VulkanSwapchain> swapchain_;
std::string screenshot_file_prefix_;
graphics::FpsInfo* fps_info_;

VulkanPerDeviceAddressTrackers _device_address_trackers;
VulkanPerDeviceAddressReplacers _device_address_replacers;
Expand Down
Loading
Loading