From 19a75c3f6595475c63e53d94fd5f8ecbe8caefe1 Mon Sep 17 00:00:00 2001 From: Billy Laws Date: Wed, 14 Sep 2022 21:56:32 +0100 Subject: [PATCH] Bind all pipeline states to main pipeline dirty state --- app/src/main/cpp/skyline/common/dirty_tracking.h | 2 +- .../skyline/gpu/interconnect/maxwell_3d/pipeline_state.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/cpp/skyline/common/dirty_tracking.h b/app/src/main/cpp/skyline/common/dirty_tracking.h index e241eedc..3bfaf29e 100644 --- a/app/src/main/cpp/skyline/common/dirty_tracking.h +++ b/app/src/main/cpp/skyline/common/dirty_tracking.h @@ -33,7 +33,7 @@ namespace skyline::dirty { * @tparam OverlapPoolSize Size of the pool used to store handles when there are multiple bound to the same subresource * @note This class is *NOT* thread-safe */ - template + template class Manager { private: struct BindingState { diff --git a/app/src/main/cpp/skyline/gpu/interconnect/maxwell_3d/pipeline_state.cpp b/app/src/main/cpp/skyline/gpu/interconnect/maxwell_3d/pipeline_state.cpp index 372aeca4..737a2728 100644 --- a/app/src/main/cpp/skyline/gpu/interconnect/maxwell_3d/pipeline_state.cpp +++ b/app/src/main/cpp/skyline/gpu/interconnect/maxwell_3d/pipeline_state.cpp @@ -399,9 +399,16 @@ namespace skyline::gpu::interconnect::maxwell3d { void PipelineState::EngineRegisters::DirtyBind(DirtyManager &manager, dirty::Handle handle) const { auto bindFunc{[&](auto ®s) { regs.DirtyBind(manager, handle); }}; + ranges::for_each(pipelineStageRegisters, bindFunc); ranges::for_each(colorRenderTargetsRegisters, bindFunc); bindFunc(depthRenderTargetRegisters); bindFunc(vertexInputRegisters); + bindFunc(inputAssemblyRegisters); + bindFunc(tessellationRegisters); + bindFunc(rasterizationRegisters); + bindFunc(depthStencilRegisters); + bindFunc(colorBlendRegisters); + bindFunc(globalShaderConfigRegisters); } PipelineState::PipelineState(dirty::Handle dirtyHandle, DirtyManager &manager, const EngineRegisters &engine)