Просмотр исходного кода

vk_pipeline_cache: Name SPIR-V modules

ReinUsesLisp 5 лет назад
Родитель
Сommit
0c933e20de
1 измененных файлов с 11 добавлено и 1 удалено
  1. 11 1
      src/video_core/renderer_vulkan/vk_pipeline_cache.cpp

+ 11 - 1
src/video_core/renderer_vulkan/vk_pipeline_cache.cpp

@@ -777,6 +777,11 @@ GraphicsPipeline PipelineCache::CreateGraphicsPipeline(ShaderPools& pools,
         const Shader::Profile profile{MakeProfile(key, program.stage)};
         const Shader::Profile profile{MakeProfile(key, program.stage)};
         const std::vector<u32> code{EmitSPIRV(profile, program, binding)};
         const std::vector<u32> code{EmitSPIRV(profile, program, binding)};
         modules[stage_index] = BuildShader(device, code);
         modules[stage_index] = BuildShader(device, code);
+        if (device.HasDebuggingToolAttached()) {
+            const std::string name{fmt::format("{:016x}{:016x}", key.unique_hashes[index][0],
+                                               key.unique_hashes[index][1])};
+            modules[stage_index].SetObjectNameEXT(name.c_str());
+        }
     }
     }
     return GraphicsPipeline(maxwell3d, gpu_memory, scheduler, buffer_cache, texture_cache, device,
     return GraphicsPipeline(maxwell3d, gpu_memory, scheduler, buffer_cache, texture_cache, device,
                             descriptor_pool, update_descriptor_queue, render_pass_cache, key.state,
                             descriptor_pool, update_descriptor_queue, render_pass_cache, key.state,
@@ -836,8 +841,13 @@ ComputePipeline PipelineCache::CreateComputePipeline(ShaderPools& pools,
     Shader::IR::Program program{TranslateProgram(pools.inst, pools.block, env, cfg)};
     Shader::IR::Program program{TranslateProgram(pools.inst, pools.block, env, cfg)};
     u32 binding{0};
     u32 binding{0};
     std::vector<u32> code{EmitSPIRV(base_profile, program, binding)};
     std::vector<u32> code{EmitSPIRV(base_profile, program, binding)};
+    vk::ShaderModule spv_module{BuildShader(device, code)};
+    if (device.HasDebuggingToolAttached()) {
+        const auto name{fmt::format("{:016x}{:016x}", key.unique_hash[0], key.unique_hash[1])};
+        spv_module.SetObjectNameEXT(name.c_str());
+    }
     return ComputePipeline{device, descriptor_pool, update_descriptor_queue, program.info,
     return ComputePipeline{device, descriptor_pool, update_descriptor_queue, program.info,
-                           BuildShader(device, code)};
+                           std::move(spv_module)};
 }
 }
 
 
 static Shader::AttributeType CastAttributeType(const FixedPipelineState::VertexAttribute& attr) {
 static Shader::AttributeType CastAttributeType(const FixedPipelineState::VertexAttribute& attr) {