X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fmodule_backend.cpp;h=b0c39989a19295861e64e6ae90b0f7783e428702;hb=9eb9f592d37e9a1e05c2ff70887a1c5f26b98864;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..b0c39989 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 } @@ -47,8 +75,11 @@ unsigned get_vulkan_stage(unsigned stage) switch(stage) { case SpirVModule::VERTEX: return VK_SHADER_STAGE_VERTEX_BIT; + case SpirVModule::TESS_CONTROL: return VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT; + case SpirVModule::TESS_EVAL: return VK_SHADER_STAGE_TESSELLATION_EVALUATION_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"); } }