diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2021-12-19 11:50:44 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-19 11:50:44 -0300 |
| commit | e7c2dc8ec3329d50a52c36efeb31019850ce6015 (patch) | |
| tree | 626476cc54fcf225261d6e26269a8c162284f3ec /Ryujinx.Graphics.Gpu/Engine | |
| parent | 521a07e6125d3a5d9781512639387a9be5f09107 (diff) | |
Fix for texture pool not being updated when it should + buffer texture related fixes (#2911)
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Engine')
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs | 20 | ||||
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs | 5 |
2 files changed, 24 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs b/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs index f3061c73..dc458026 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs @@ -34,6 +34,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed { nameof(ThreedClassState.LaunchDma), new RwCallback(LaunchDma, null) }, { nameof(ThreedClassState.LoadInlineData), new RwCallback(LoadInlineData, null) }, { nameof(ThreedClassState.SyncpointAction), new RwCallback(IncrementSyncpoint, null) }, + { nameof(ThreedClassState.InvalidateSamplerCacheNoWfi), new RwCallback(InvalidateSamplerCacheNoWfi, null) }, + { nameof(ThreedClassState.InvalidateTextureHeaderCacheNoWfi), new RwCallback(InvalidateTextureHeaderCacheNoWfi, null) }, { nameof(ThreedClassState.TextureBarrier), new RwCallback(TextureBarrier, null) }, { nameof(ThreedClassState.TextureBarrierTiled), new RwCallback(TextureBarrierTiled, null) }, { nameof(ThreedClassState.DrawTextureSrcY), new RwCallback(DrawTexture, null) }, @@ -228,6 +230,24 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed } /// <summary> + /// Invalidates the cache with the sampler descriptors from the sampler pool. + /// </summary> + /// <param name="argument">Method call argument (unused)</param> + private void InvalidateSamplerCacheNoWfi(int argument) + { + _context.AdvanceSequence(); + } + + /// <summary> + /// Invalidates the cache with the texture descriptors from the texture pool. + /// </summary> + /// <param name="argument">Method call argument (unused)</param> + private void InvalidateTextureHeaderCacheNoWfi(int argument) + { + _context.AdvanceSequence(); + } + + /// <summary> /// Issues a texture barrier. /// This waits until previous texture writes from the GPU to finish, before /// performing new operations with said textures. diff --git a/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs b/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs index 165f5072..9d8ad765 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs @@ -784,7 +784,10 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed public YControl YControl; public float LineWidthSmooth; public float LineWidthAliased; - public fixed uint Reserved13B8[31]; + public fixed uint Reserved13B8[27]; + public uint InvalidateSamplerCacheNoWfi; + public uint InvalidateTextureHeaderCacheNoWfi; + public fixed uint Reserved142C[2]; public uint FirstVertex; public uint FirstInstance; public fixed uint Reserved143C[53]; |
