mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-07-25 19:17:11 +02:00
Implement fast DMA texture to texture copy (#7299)
* Implement fast DMA texture to texture copy * PR feedback
This commit is contained in:
parent
62216782ca
commit
cd74ae1bbd
2 changed files with 93 additions and 2 deletions
|
@ -347,6 +347,53 @@ namespace Ryujinx.Graphics.Gpu.Image
|
|||
return texture;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tries to find an existing texture, or create a new one if not found.
|
||||
/// </summary>
|
||||
/// <param name="memoryManager">GPU memory manager where the texture is mapped</param>
|
||||
/// <param name="formatInfo">Format of the texture</param>
|
||||
/// <param name="gpuAddress">GPU virtual address of the texture</param>
|
||||
/// <param name="xCount">Texture width in bytes</param>
|
||||
/// <param name="yCount">Texture height</param>
|
||||
/// <param name="stride">Texture stride if linear, otherwise ignored</param>
|
||||
/// <param name="isLinear">Indicates if the texture is linear or block linear</param>
|
||||
/// <param name="gobBlocksInY">GOB blocks in Y for block linear textures</param>
|
||||
/// <param name="gobBlocksInZ">GOB blocks in Z for 3D block linear textures</param>
|
||||
/// <returns>The texture</returns>
|
||||
public Texture FindOrCreateTexture(
|
||||
MemoryManager memoryManager,
|
||||
FormatInfo formatInfo,
|
||||
ulong gpuAddress,
|
||||
int xCount,
|
||||
int yCount,
|
||||
int stride,
|
||||
bool isLinear,
|
||||
int gobBlocksInY,
|
||||
int gobBlocksInZ)
|
||||
{
|
||||
TextureInfo info = new(
|
||||
gpuAddress,
|
||||
xCount / formatInfo.BytesPerPixel,
|
||||
yCount,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
stride,
|
||||
isLinear,
|
||||
gobBlocksInY,
|
||||
gobBlocksInZ,
|
||||
1,
|
||||
Target.Texture2D,
|
||||
formatInfo);
|
||||
|
||||
Texture texture = FindOrCreateTexture(memoryManager, TextureSearchFlags.ForCopy, info, 0, sizeHint: new Size(xCount, yCount, 1));
|
||||
|
||||
texture?.SynchronizeMemory();
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tries to find an existing texture, or create a new one if not found.
|
||||
/// </summary>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue