Bind all pipeline states to main pipeline dirty state

This commit is contained in:
Billy Laws 2022-09-14 21:56:32 +01:00
parent a04d8fb5cf
commit 19a75c3f65
2 changed files with 8 additions and 1 deletions

View File

@ -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 * @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 * @note This class is *NOT* thread-safe
*/ */
template<size_t ManagedResourceSize, size_t Granularity, size_t OverlapPoolSize = 0x400> template<size_t ManagedResourceSize, size_t Granularity, size_t OverlapPoolSize = 0x1000>
class Manager { class Manager {
private: private:
struct BindingState { struct BindingState {

View File

@ -399,9 +399,16 @@ namespace skyline::gpu::interconnect::maxwell3d {
void PipelineState::EngineRegisters::DirtyBind(DirtyManager &manager, dirty::Handle handle) const { void PipelineState::EngineRegisters::DirtyBind(DirtyManager &manager, dirty::Handle handle) const {
auto bindFunc{[&](auto &regs) { regs.DirtyBind(manager, handle); }}; auto bindFunc{[&](auto &regs) { regs.DirtyBind(manager, handle); }};
ranges::for_each(pipelineStageRegisters, bindFunc);
ranges::for_each(colorRenderTargetsRegisters, bindFunc); ranges::for_each(colorRenderTargetsRegisters, bindFunc);
bindFunc(depthRenderTargetRegisters); bindFunc(depthRenderTargetRegisters);
bindFunc(vertexInputRegisters); bindFunc(vertexInputRegisters);
bindFunc(inputAssemblyRegisters);
bindFunc(tessellationRegisters);
bindFunc(rasterizationRegisters);
bindFunc(depthStencilRegisters);
bindFunc(colorBlendRegisters);
bindFunc(globalShaderConfigRegisters);
} }
PipelineState::PipelineState(dirty::Handle dirtyHandle, DirtyManager &manager, const EngineRegisters &engine) PipelineState::PipelineState(dirty::Handle dirtyHandle, DirtyManager &manager, const EngineRegisters &engine)