X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fbackends%2Fvulkan%2Fmodule_backend.cpp;h=492de9a6311ac9ac5d00207724fba93b1c47d32e;hb=cebf1330ef6773b7b4496dc279ec02a7ca4351bb;hp=759497ab6ed1fb9252a21abfe8c30c7ce271cf25;hpb=99ca354f18119f82f1adeca100cd665a8f640317;p=libs%2Fgl.git diff --git a/source/backends/vulkan/module_backend.cpp b/source/backends/vulkan/module_backend.cpp index 759497ab..492de9a6 100644 --- a/source/backends/vulkan/module_backend.cpp +++ b/source/backends/vulkan/module_backend.cpp @@ -39,6 +39,34 @@ void VulkanSpirVModule::create() module_info.pCode = code.data(); vk.CreateShaderModule(module_info, handle); + + if(!debug_name.empty()) + set_vulkan_object_name(); +} + +void VulkanSpirVModule::set_debug_name(const string &name) +{ +#ifdef DEBUG + debug_name = name; + if(handle) + set_vulkan_object_name(); +#else + (void)name; +#endif +} + +void VulkanSpirVModule::set_vulkan_object_name() const +{ +#ifdef DEBUG + const VulkanFunctions &vk = device.get_functions(); + + VkDebugUtilsObjectNameInfoEXT name_info = { }; + name_info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT; + name_info.objectType = VK_OBJECT_TYPE_SHADER_MODULE; + name_info.objectHandle = reinterpret_cast(handle); + name_info.pObjectName = debug_name.c_str(); + vk.SetDebugUtilsObjectName(name_info); +#endif } @@ -49,6 +77,7 @@ unsigned get_vulkan_stage(unsigned stage) case SpirVModule::VERTEX: return VK_SHADER_STAGE_VERTEX_BIT; case SpirVModule::GEOMETRY: return VK_SHADER_STAGE_GEOMETRY_BIT; case SpirVModule::FRAGMENT: return VK_SHADER_STAGE_FRAGMENT_BIT; + case SpirVModule::COMPUTE: return VK_SHADER_STAGE_COMPUTE_BIT; default: throw invalid_argument("get_vulkan_stage"); } }