Separate GPU engines and make state follow official docs (part 1/2) (#2422)
* Use DeviceState for compute and i2m * Migrate 2D class, more comments * Migrate DMA copy engine * Remove now unused code * Replace GpuState by GpuAccessorState on GpuAcessor, since compute no longer has a GpuState * More comments * Add logging (disabled) * Add back i2m on 3D engine
This commit is contained in:
parent
31cbd09a75
commit
8b44eb1c98
30 changed files with 2599 additions and 460 deletions
271
Ryujinx.Graphics.Gpu/Engine/Dma/DmaClassState.cs
Normal file
271
Ryujinx.Graphics.Gpu/Engine/Dma/DmaClassState.cs
Normal file
|
@ -0,0 +1,271 @@
|
|||
// This file was auto-generated from NVIDIA official Maxwell definitions.
|
||||
|
||||
namespace Ryujinx.Graphics.Gpu.Engine.Dma
|
||||
{
|
||||
/// <summary>
|
||||
/// Physical mode target.
|
||||
/// </summary>
|
||||
enum SetPhysModeTarget
|
||||
{
|
||||
LocalFb = 0,
|
||||
CoherentSysmem = 1,
|
||||
NoncoherentSysmem = 2,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA data transfer type.
|
||||
/// </summary>
|
||||
enum LaunchDmaDataTransferType
|
||||
{
|
||||
None = 0,
|
||||
Pipelined = 1,
|
||||
NonPipelined = 2,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA semaphore type.
|
||||
/// </summary>
|
||||
enum LaunchDmaSemaphoreType
|
||||
{
|
||||
None = 0,
|
||||
ReleaseOneWordSemaphore = 1,
|
||||
ReleaseFourWordSemaphore = 2,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA interrupt type.
|
||||
/// </summary>
|
||||
enum LaunchDmaInterruptType
|
||||
{
|
||||
None = 0,
|
||||
Blocking = 1,
|
||||
NonBlocking = 2,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA destination memory layout.
|
||||
/// </summary>
|
||||
enum LaunchDmaMemoryLayout
|
||||
{
|
||||
Blocklinear = 0,
|
||||
Pitch = 1,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA type.
|
||||
/// </summary>
|
||||
enum LaunchDmaType
|
||||
{
|
||||
Virtual = 0,
|
||||
Physical = 1,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA semaphore reduction operation.
|
||||
/// </summary>
|
||||
enum LaunchDmaSemaphoreReduction
|
||||
{
|
||||
Imin = 0,
|
||||
Imax = 1,
|
||||
Ixor = 2,
|
||||
Iand = 3,
|
||||
Ior = 4,
|
||||
Iadd = 5,
|
||||
Inc = 6,
|
||||
Dec = 7,
|
||||
Fadd = 10,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA semaphore reduction signedness.
|
||||
/// </summary>
|
||||
enum LaunchDmaSemaphoreReductionSign
|
||||
{
|
||||
Signed = 0,
|
||||
Unsigned = 1,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA L2 cache bypass.
|
||||
/// </summary>
|
||||
enum LaunchDmaBypassL2
|
||||
{
|
||||
UsePteSetting = 0,
|
||||
ForceVolatile = 1,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA component remapping source component.
|
||||
/// </summary>
|
||||
enum SetRemapComponentsDst
|
||||
{
|
||||
SrcX = 0,
|
||||
SrcY = 1,
|
||||
SrcZ = 2,
|
||||
SrcW = 3,
|
||||
ConstA = 4,
|
||||
ConstB = 5,
|
||||
NoWrite = 6,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA component remapping component size.
|
||||
/// </summary>
|
||||
enum SetRemapComponentsComponentSize
|
||||
{
|
||||
One = 0,
|
||||
Two = 1,
|
||||
Three = 2,
|
||||
Four = 3,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA component remapping number of components.
|
||||
/// </summary>
|
||||
enum SetRemapComponentsNumComponents
|
||||
{
|
||||
One = 0,
|
||||
Two = 1,
|
||||
Three = 2,
|
||||
Four = 3,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Width in GOBs of the destination texture.
|
||||
/// </summary>
|
||||
enum SetBlockSizeWidth
|
||||
{
|
||||
QuarterGob = 14,
|
||||
OneGob = 0,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Height in GOBs of the destination texture.
|
||||
/// </summary>
|
||||
enum SetBlockSizeHeight
|
||||
{
|
||||
OneGob = 0,
|
||||
TwoGobs = 1,
|
||||
FourGobs = 2,
|
||||
EightGobs = 3,
|
||||
SixteenGobs = 4,
|
||||
ThirtytwoGobs = 5,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Depth in GOBs of the destination texture.
|
||||
/// </summary>
|
||||
enum SetBlockSizeDepth
|
||||
{
|
||||
OneGob = 0,
|
||||
TwoGobs = 1,
|
||||
FourGobs = 2,
|
||||
EightGobs = 3,
|
||||
SixteenGobs = 4,
|
||||
ThirtytwoGobs = 5,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Height of a single GOB in lines.
|
||||
/// </summary>
|
||||
enum SetBlockSizeGobHeight
|
||||
{
|
||||
GobHeightTesla4 = 0,
|
||||
GobHeightFermi8 = 1,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DMA copy class state.
|
||||
/// </summary>
|
||||
unsafe struct DmaClassState
|
||||
{
|
||||
#pragma warning disable CS0649
|
||||
public fixed uint Reserved00[64];
|
||||
public uint Nop;
|
||||
public fixed uint Reserved104[15];
|
||||
public uint PmTrigger;
|
||||
public fixed uint Reserved144[63];
|
||||
public uint SetSemaphoreA;
|
||||
public int SetSemaphoreAUpper => (int)((SetSemaphoreA >> 0) & 0xFF);
|
||||
public uint SetSemaphoreB;
|
||||
public uint SetSemaphorePayload;
|
||||
public fixed uint Reserved24C[2];
|
||||
public uint SetRenderEnableA;
|
||||
public int SetRenderEnableAUpper => (int)((SetRenderEnableA >> 0) & 0xFF);
|
||||
public uint SetRenderEnableB;
|
||||
public uint SetRenderEnableC;
|
||||
public int SetRenderEnableCMode => (int)((SetRenderEnableC >> 0) & 0x7);
|
||||
public uint SetSrcPhysMode;
|
||||
public SetPhysModeTarget SetSrcPhysModeTarget => (SetPhysModeTarget)((SetSrcPhysMode >> 0) & 0x3);
|
||||
public uint SetDstPhysMode;
|
||||
public SetPhysModeTarget SetDstPhysModeTarget => (SetPhysModeTarget)((SetDstPhysMode >> 0) & 0x3);
|
||||
public fixed uint Reserved268[38];
|
||||
public uint LaunchDma;
|
||||
public LaunchDmaDataTransferType LaunchDmaDataTransferType => (LaunchDmaDataTransferType)((LaunchDma >> 0) & 0x3);
|
||||
public bool LaunchDmaFlushEnable => (LaunchDma & 0x4) != 0;
|
||||
public LaunchDmaSemaphoreType LaunchDmaSemaphoreType => (LaunchDmaSemaphoreType)((LaunchDma >> 3) & 0x3);
|
||||
public LaunchDmaInterruptType LaunchDmaInterruptType => (LaunchDmaInterruptType)((LaunchDma >> 5) & 0x3);
|
||||
public LaunchDmaMemoryLayout LaunchDmaSrcMemoryLayout => (LaunchDmaMemoryLayout)((LaunchDma >> 7) & 0x1);
|
||||
public LaunchDmaMemoryLayout LaunchDmaDstMemoryLayout => (LaunchDmaMemoryLayout)((LaunchDma >> 8) & 0x1);
|
||||
public bool LaunchDmaMultiLineEnable => (LaunchDma & 0x200) != 0;
|
||||
public bool LaunchDmaRemapEnable => (LaunchDma & 0x400) != 0;
|
||||
public bool LaunchDmaForceRmwdisable => (LaunchDma & 0x800) != 0;
|
||||
public LaunchDmaType LaunchDmaSrcType => (LaunchDmaType)((LaunchDma >> 12) & 0x1);
|
||||
public LaunchDmaType LaunchDmaDstType => (LaunchDmaType)((LaunchDma >> 13) & 0x1);
|
||||
public LaunchDmaSemaphoreReduction LaunchDmaSemaphoreReduction => (LaunchDmaSemaphoreReduction)((LaunchDma >> 14) & 0xF);
|
||||
public LaunchDmaSemaphoreReductionSign LaunchDmaSemaphoreReductionSign => (LaunchDmaSemaphoreReductionSign)((LaunchDma >> 18) & 0x1);
|
||||
public bool LaunchDmaSemaphoreReductionEnable => (LaunchDma & 0x80000) != 0;
|
||||
public LaunchDmaBypassL2 LaunchDmaBypassL2 => (LaunchDmaBypassL2)((LaunchDma >> 20) & 0x1);
|
||||
public fixed uint Reserved304[63];
|
||||
public uint OffsetInUpper;
|
||||
public int OffsetInUpperUpper => (int)((OffsetInUpper >> 0) & 0xFF);
|
||||
public uint OffsetInLower;
|
||||
public uint OffsetOutUpper;
|
||||
public int OffsetOutUpperUpper => (int)((OffsetOutUpper >> 0) & 0xFF);
|
||||
public uint OffsetOutLower;
|
||||
public uint PitchIn;
|
||||
public uint PitchOut;
|
||||
public uint LineLengthIn;
|
||||
public uint LineCount;
|
||||
public fixed uint Reserved420[184];
|
||||
public uint SetRemapConstA;
|
||||
public uint SetRemapConstB;
|
||||
public uint SetRemapComponents;
|
||||
public SetRemapComponentsDst SetRemapComponentsDstX => (SetRemapComponentsDst)((SetRemapComponents >> 0) & 0x7);
|
||||
public SetRemapComponentsDst SetRemapComponentsDstY => (SetRemapComponentsDst)((SetRemapComponents >> 4) & 0x7);
|
||||
public SetRemapComponentsDst SetRemapComponentsDstZ => (SetRemapComponentsDst)((SetRemapComponents >> 8) & 0x7);
|
||||
public SetRemapComponentsDst SetRemapComponentsDstW => (SetRemapComponentsDst)((SetRemapComponents >> 12) & 0x7);
|
||||
public SetRemapComponentsComponentSize SetRemapComponentsComponentSize => (SetRemapComponentsComponentSize)((SetRemapComponents >> 16) & 0x3);
|
||||
public SetRemapComponentsNumComponents SetRemapComponentsNumSrcComponents => (SetRemapComponentsNumComponents)((SetRemapComponents >> 20) & 0x3);
|
||||
public SetRemapComponentsNumComponents SetRemapComponentsNumDstComponents => (SetRemapComponentsNumComponents)((SetRemapComponents >> 24) & 0x3);
|
||||
public uint SetDstBlockSize;
|
||||
public SetBlockSizeWidth SetDstBlockSizeWidth => (SetBlockSizeWidth)((SetDstBlockSize >> 0) & 0xF);
|
||||
public SetBlockSizeHeight SetDstBlockSizeHeight => (SetBlockSizeHeight)((SetDstBlockSize >> 4) & 0xF);
|
||||
public SetBlockSizeDepth SetDstBlockSizeDepth => (SetBlockSizeDepth)((SetDstBlockSize >> 8) & 0xF);
|
||||
public SetBlockSizeGobHeight SetDstBlockSizeGobHeight => (SetBlockSizeGobHeight)((SetDstBlockSize >> 12) & 0xF);
|
||||
public uint SetDstWidth;
|
||||
public uint SetDstHeight;
|
||||
public uint SetDstDepth;
|
||||
public uint SetDstLayer;
|
||||
public uint SetDstOrigin;
|
||||
public int SetDstOriginX => (int)((SetDstOrigin >> 0) & 0xFFFF);
|
||||
public int SetDstOriginY => (int)((SetDstOrigin >> 16) & 0xFFFF);
|
||||
public uint Reserved724;
|
||||
public uint SetSrcBlockSize;
|
||||
public SetBlockSizeWidth SetSrcBlockSizeWidth => (SetBlockSizeWidth)((SetSrcBlockSize >> 0) & 0xF);
|
||||
public SetBlockSizeHeight SetSrcBlockSizeHeight => (SetBlockSizeHeight)((SetSrcBlockSize >> 4) & 0xF);
|
||||
public SetBlockSizeDepth SetSrcBlockSizeDepth => (SetBlockSizeDepth)((SetSrcBlockSize >> 8) & 0xF);
|
||||
public SetBlockSizeGobHeight SetSrcBlockSizeGobHeight => (SetBlockSizeGobHeight)((SetSrcBlockSize >> 12) & 0xF);
|
||||
public uint SetSrcWidth;
|
||||
public uint SetSrcHeight;
|
||||
public uint SetSrcDepth;
|
||||
public uint SetSrcLayer;
|
||||
public uint SetSrcOrigin;
|
||||
public int SetSrcOriginX => (int)((SetSrcOrigin >> 0) & 0xFFFF);
|
||||
public int SetSrcOriginY => (int)((SetSrcOrigin >> 16) & 0xFFFF);
|
||||
public fixed uint Reserved740[629];
|
||||
public uint PmTriggerEnd;
|
||||
public fixed uint Reserved1118[2490];
|
||||
#pragma warning restore CS0649
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue