From 19994424c503d8e6869c53c1bfa0ea8851257e75 Mon Sep 17 00:00:00 2001 From: psucien Date: Wed, 5 Jun 2024 16:33:26 +0200 Subject: [PATCH] texture_cache: detiler: shader module release and debug name --- src/video_core/texture_cache/tile_manager.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/video_core/texture_cache/tile_manager.cpp b/src/video_core/texture_cache/tile_manager.cpp index e36c40f4..48880226 100644 --- a/src/video_core/texture_cache/tile_manager.cpp +++ b/src/video_core/texture_cache/tile_manager.cpp @@ -1,7 +1,6 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -#include "boost/container/static_vector.hpp" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_scheduler.h" #include "video_core/renderer_vulkan/vk_shader_util.h" @@ -12,6 +11,8 @@ #include "video_core/host_shaders/detile_m8x1_comp.h" #include "video_core/host_shaders/detile_m8x4_comp.h" +#include +#include #include namespace VideoCore { @@ -216,6 +217,15 @@ TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& sc const auto& module = Vulkan::Compile( detiler_shaders[pl_id], vk::ShaderStageFlagBits::eCompute, instance.GetDevice()); + // Set module debug name + auto module_name = magic_enum::enum_name(static_cast(pl_id)); + const vk::DebugUtilsObjectNameInfoEXT name_info = { + .objectType = vk::ObjectType::eShaderModule, + .objectHandle = std::bit_cast(module), + .pObjectName = module_name.data(), + }; + instance.GetDevice().setDebugUtilsObjectNameEXT(name_info); + const vk::PipelineShaderStageCreateInfo shader_ci = { .stage = vk::ShaderStageFlagBits::eCompute, .module = module, @@ -271,6 +281,9 @@ TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& sc } else { UNREACHABLE_MSG("Detiler pipeline creation failed!"); } + + // Once pipeline is compiled, we don't need the shader module anymore + instance.GetDevice().destroyShaderModule(module); } }