mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-06-29 19:36:25 +02:00
Vulkan separate descriptor set fixes (#6895)
* Ensure descriptor sets are only re-used when all command buffers using it have completed * Fix some SPIR-V capabilities * Set update after bind flag if we exceed limits * Simpler fix for Intel * Format whitespace * Make struct readonly * Add barriers for extra set arrays too
This commit is contained in:
parent
d7c6474729
commit
c0f2491eae
24 changed files with 365 additions and 113 deletions
|
@ -1113,6 +1113,15 @@ namespace Ryujinx.Graphics.Gpu.Image
|
|||
nextNode = nextNode.Next;
|
||||
_cacheFromBuffer.Remove(toRemove.Value.Key);
|
||||
_lruCache.Remove(toRemove);
|
||||
|
||||
if (toRemove.Value.Key.IsImage)
|
||||
{
|
||||
toRemove.Value.ImageArray.Dispose();
|
||||
}
|
||||
else
|
||||
{
|
||||
toRemove.Value.TextureArray.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1124,11 +1133,20 @@ namespace Ryujinx.Graphics.Gpu.Image
|
|||
{
|
||||
List<CacheEntryFromPoolKey> keysToRemove = null;
|
||||
|
||||
foreach (CacheEntryFromPoolKey key in _cacheFromPool.Keys)
|
||||
foreach ((CacheEntryFromPoolKey key, CacheEntry entry) in _cacheFromPool)
|
||||
{
|
||||
if (key.MatchesPool(pool))
|
||||
{
|
||||
(keysToRemove ??= new()).Add(key);
|
||||
|
||||
if (key.IsImage)
|
||||
{
|
||||
entry.ImageArray.Dispose();
|
||||
}
|
||||
else
|
||||
{
|
||||
entry.TextureArray.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue