mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2026-04-26 20:31:41 +00:00
Set pipeline names.
This commit is contained in:
parent
d3536955e0
commit
f50d9d85a5
6 changed files with 43 additions and 6 deletions
|
|
@ -2672,6 +2672,10 @@ namespace RT64 {
|
|||
}
|
||||
}
|
||||
|
||||
void D3D12ComputePipeline::setName(const std::string& name) const {
|
||||
setObjectName(d3d, name);
|
||||
}
|
||||
|
||||
RenderPipelineProgram D3D12ComputePipeline::getProgram(const std::string &name) const {
|
||||
assert(false && "Compute pipelines can't retrieve shader programs.");
|
||||
return RenderPipelineProgram();
|
||||
|
|
@ -2791,6 +2795,10 @@ namespace RT64 {
|
|||
}
|
||||
}
|
||||
|
||||
void D3D12GraphicsPipeline::setName(const std::string& name) const {
|
||||
setObjectName(d3d, name);
|
||||
}
|
||||
|
||||
RenderPipelineProgram D3D12GraphicsPipeline::getProgram(const std::string &name) const {
|
||||
assert(false && "Graphics pipelines can't retrieve shader programs.");
|
||||
return RenderPipelineProgram();
|
||||
|
|
@ -3011,6 +3019,10 @@ namespace RT64 {
|
|||
}
|
||||
}
|
||||
|
||||
void D3D12RaytracingPipeline::setName(const std::string& name) const {
|
||||
setObjectName(stateObject, name);
|
||||
}
|
||||
|
||||
RenderPipelineProgram D3D12RaytracingPipeline::getProgram(const std::string &name) const {
|
||||
auto it = nameProgramMap.find(name);
|
||||
assert((it != nameProgramMap.end()) && "Program must exist in the PSO.");
|
||||
|
|
|
|||
|
|
@ -355,6 +355,7 @@ namespace RT64 {
|
|||
|
||||
D3D12ComputePipeline(D3D12Device *device, const RenderComputePipelineDesc &desc);
|
||||
~D3D12ComputePipeline() override;
|
||||
virtual void setName(const std::string& name) const override;
|
||||
virtual RenderPipelineProgram getProgram(const std::string &name) const override;
|
||||
};
|
||||
|
||||
|
|
@ -365,6 +366,7 @@ namespace RT64 {
|
|||
|
||||
D3D12GraphicsPipeline(D3D12Device *device, const RenderGraphicsPipelineDesc &desc);
|
||||
~D3D12GraphicsPipeline() override;
|
||||
virtual void setName(const std::string& name) const override;
|
||||
virtual RenderPipelineProgram getProgram(const std::string &name) const override;
|
||||
};
|
||||
|
||||
|
|
@ -377,6 +379,7 @@ namespace RT64 {
|
|||
|
||||
D3D12RaytracingPipeline(D3D12Device *device, const RenderRaytracingPipelineDesc &desc, const RenderPipeline *previousPipeline);
|
||||
~D3D12RaytracingPipeline() override;
|
||||
virtual void setName(const std::string& name) const override;
|
||||
virtual RenderPipelineProgram getProgram(const std::string &name) const override;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ namespace RT64 {
|
|||
|
||||
struct RenderPipeline {
|
||||
virtual ~RenderPipeline() { }
|
||||
virtual void setName(const std::string& name) const = 0;
|
||||
virtual RenderPipelineProgram getProgram(const std::string &name) const = 0;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1316,6 +1316,10 @@ namespace RT64 {
|
|||
}
|
||||
}
|
||||
|
||||
void VulkanComputePipeline::setName(const std::string& name) const {
|
||||
setObjectName(device->vk, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, uint64_t(vk), name);
|
||||
}
|
||||
|
||||
RenderPipelineProgram VulkanComputePipeline::getProgram(const std::string &name) const {
|
||||
assert(false && "Compute pipelines can't retrieve shader programs.");
|
||||
return RenderPipelineProgram();
|
||||
|
|
@ -1552,6 +1556,10 @@ namespace RT64 {
|
|||
}
|
||||
}
|
||||
|
||||
void VulkanGraphicsPipeline::setName(const std::string& name) const {
|
||||
setObjectName(device->vk, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, uint64_t(vk), name);
|
||||
}
|
||||
|
||||
RenderPipelineProgram VulkanGraphicsPipeline::getProgram(const std::string &name) const {
|
||||
assert(false && "Graphics pipelines can't retrieve shader programs.");
|
||||
return RenderPipelineProgram();
|
||||
|
|
@ -1752,6 +1760,10 @@ namespace RT64 {
|
|||
}
|
||||
}
|
||||
|
||||
void VulkanRaytracingPipeline::setName(const std::string& name) const {
|
||||
setObjectName(device->vk, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, uint64_t(vk), name);
|
||||
}
|
||||
|
||||
RenderPipelineProgram VulkanRaytracingPipeline::getProgram(const std::string &name) const {
|
||||
auto it = nameProgramMap.find(name);
|
||||
assert((it != nameProgramMap.end()) && "Program must exist in the PSO.");
|
||||
|
|
|
|||
|
|
@ -158,6 +158,7 @@ namespace RT64 {
|
|||
|
||||
VulkanComputePipeline(VulkanDevice *device, const RenderComputePipelineDesc &desc);
|
||||
~VulkanComputePipeline() override;
|
||||
void setName(const std::string& name) const override;
|
||||
RenderPipelineProgram getProgram(const std::string &name) const override;
|
||||
};
|
||||
|
||||
|
|
@ -167,6 +168,7 @@ namespace RT64 {
|
|||
|
||||
VulkanGraphicsPipeline(VulkanDevice *device, const RenderGraphicsPipelineDesc &desc);
|
||||
~VulkanGraphicsPipeline() override;
|
||||
void setName(const std::string& name) const override;
|
||||
RenderPipelineProgram getProgram(const std::string &name) const override;
|
||||
static VkRenderPass createRenderPass(VulkanDevice *device, const VkFormat *renderTargetFormat, uint32_t renderTargetCount, VkFormat depthTargetFormat, VkSampleCountFlagBits sampleCount);
|
||||
};
|
||||
|
|
@ -179,6 +181,7 @@ namespace RT64 {
|
|||
|
||||
VulkanRaytracingPipeline(VulkanDevice *device, const RenderRaytracingPipelineDesc &desc, const RenderPipeline *previousPipeline);
|
||||
~VulkanRaytracingPipeline() override;
|
||||
void setName(const std::string& name) const override;
|
||||
RenderPipelineProgram getProgram(const std::string &name) const override;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2699,12 +2699,16 @@ static RenderPipeline* CreateGraphicsPipelineInRenderThread(PipelineState pipeli
|
|||
{
|
||||
SanitizePipelineState(pipelineState);
|
||||
|
||||
auto& pipeline = g_pipelines[XXH3_64bits(&pipelineState, sizeof(pipelineState))];
|
||||
XXH64_hash_t hash = XXH3_64bits(&pipelineState, sizeof(pipelineState));
|
||||
auto& pipeline = g_pipelines[hash];
|
||||
if (pipeline == nullptr)
|
||||
{
|
||||
pipeline = CreateGraphicsPipeline(pipelineState);
|
||||
|
||||
if (pipelineState.zEnable) // Should ignore most post effect/2D shaders.
|
||||
++g_pipelinesCreatedInRenderThread;
|
||||
|
||||
pipeline->setName(std::format("Render Thread Pipeline {:X}", hash));
|
||||
}
|
||||
|
||||
return pipeline.get();
|
||||
|
|
@ -4247,7 +4251,7 @@ static std::atomic<uint32_t> g_pendingModelCount;
|
|||
static ankerl::unordered_dense::set<XXH64_hash_t> g_asyncPipelines;
|
||||
static Mutex g_asyncPipelineMutex;
|
||||
|
||||
static void CompileGraphicsPipelineInPipelineThread(const PipelineState& pipelineState)
|
||||
static void CreateGraphicsPipelineInPipelineThread(const PipelineState& pipelineState)
|
||||
{
|
||||
XXH64_hash_t hash = XXH3_64bits(&pipelineState, sizeof(pipelineState));
|
||||
|
||||
|
|
@ -4262,6 +4266,8 @@ static void CompileGraphicsPipelineInPipelineThread(const PipelineState& pipelin
|
|||
auto pipeline = CreateGraphicsPipeline(pipelineState);
|
||||
++g_pipelinesCreatedAsynchronously;
|
||||
|
||||
pipeline->setName(std::format("Async Pipeline {:X}", hash));
|
||||
|
||||
{
|
||||
std::lock_guard lock(g_asyncPipelineMutex);
|
||||
g_asyncPipelines.emplace(hash);
|
||||
|
|
@ -4319,7 +4325,7 @@ static void CompileMeshPipeline(Hedgehog::Mirage::CMeshData* mesh, bool isTransp
|
|||
pipelineState.specConstants |= SPEC_CONSTANT_ALPHA_TEST;
|
||||
|
||||
SanitizePipelineState(pipelineState);
|
||||
CompileGraphicsPipelineInPipelineThread(pipelineState);
|
||||
CreateGraphicsPipelineInPipelineThread(pipelineState);
|
||||
}
|
||||
|
||||
guest_stack_var<Hedgehog::Base::CStringSymbol> defaultSymbol(reinterpret_cast<const char*>(g_memory.Translate(0x8202DDBC)));
|
||||
|
|
@ -4334,12 +4340,12 @@ static void CompileMeshPipeline(Hedgehog::Mirage::CMeshData* mesh, bool isTransp
|
|||
|
||||
for (auto& [pixelShaderSubPermutations, pixelShader] : defaultFindResult->second.m_PixelShaders)
|
||||
{
|
||||
if ((pixelShaderSubPermutations & 0x2) != (args.noGI ? 0x2 : 0x0))
|
||||
if (pixelShader.get() == nullptr || (pixelShaderSubPermutations & 0x2) != (args.noGI ? 0x2 : 0x0))
|
||||
continue;
|
||||
|
||||
for (auto& [vertexShaderSubPermutations, vertexShader] : noneFindResult->second->m_VertexShaders)
|
||||
{
|
||||
if (vertexShader.get() == nullptr || pixelShader.get() == nullptr)
|
||||
if (vertexShader.get() == nullptr)
|
||||
continue;
|
||||
|
||||
PipelineState pipelineState{};
|
||||
|
|
@ -4385,7 +4391,7 @@ static void CompileMeshPipeline(Hedgehog::Mirage::CMeshData* mesh, bool isTransp
|
|||
pipelineState.specConstants |= SPEC_CONSTANT_REVERSE_Z;
|
||||
|
||||
SanitizePipelineState(pipelineState);
|
||||
CompileGraphicsPipelineInPipelineThread(pipelineState);
|
||||
CreateGraphicsPipelineInPipelineThread(pipelineState);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue