0
0
Fork 0
mirror of https://github.com/ryujinx-mirror/ryujinx.git synced 2024-12-23 08:45:46 +00:00
ryujinx-fork/Ryujinx.Graphics.Gpu/Image/TextureDependency.cs
riperiperi b530f0e110
Texture Cache: "Texture Groups" and "Texture Dependencies" (#2001)
* Initial implementation (3d tex mips broken)

This works rather well for most games, just need to fix 3d texture mips.

* Cleanup

* Address feedback

* Copy Dependencies and various other fixes

* Fix layer/level offset for copy from view<->view.

* Remove dirty flag from dependency

The dirty flag behaviour is not needed - DeferredCopy is all we need.

* Fix tracking mip slices.

* Propagate granularity (fix astral chain)

* Address Feedback pt 1

* Save slice sizes as part of SizeInfo

* Fix nits

* Fix disposing multiple dependencies causing a crash

This list is obviously modified when removing dependencies, so create a copy of it.
2021-03-02 19:30:54 -03:00

37 lines
1.2 KiB
C#

namespace Ryujinx.Graphics.Gpu.Image
{
/// <summary>
/// One side of a two-way dependency between one texture view and another.
/// Contains a reference to the handle owning the dependency, and the other dependency.
/// </summary>
class TextureDependency
{
/// <summary>
/// The handle that owns this dependency.
/// </summary>
public TextureGroupHandle Handle;
/// <summary>
/// The other dependency linked to this one, which belongs to another handle.
/// </summary>
public TextureDependency Other;
/// <summary>
/// Create a new texture dependency.
/// </summary>
/// <param name="handle">The handle that owns the dependency</param>
public TextureDependency(TextureGroupHandle handle)
{
Handle = handle;
}
/// <summary>
/// Signal that the owner of this dependency has been modified,
/// meaning that the other dependency's handle must defer a copy from it.
/// </summary>
public void SignalModified()
{
Other.Handle.DeferCopy(Handle);
}
}
}