mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-12-01 03:20:16 +00:00
644de99e86
* Implement GPU syncpoints This adds support for GPU syncpoints on the GPU backend & nvservices. Everything that was implemented here is based on my researches, hardware testing of the GM20B and reversing of nvservices (8.1.0). Thanks to @fincs for the informations about some behaviours of the pusher and for the initial informations about syncpoints. * syncpoint: address gdkchan's comments * Add some missing logic to handle SubmitGpfifo correctly * Handle the NV event API correctly * evnt => hostEvent * Finish addressing gdkchan's comments * nvservices: write the output buffer even when an error is returned * dma pusher: Implemnet prefetch barrier lso fix when the commands should be prefetch. * Partially fix prefetch barrier * Add a missing syncpoint check in QueryEvent of NvHostSyncPt * Address Ac_K's comments and fix GetSyncpoint for ChannelResourcePolicy == Channel * fix SyncptWait & SyncptWaitEx cmds logic * Address ripinperi's comments * Address gdkchan's comments * Move user event management to the control channel * Fix mm implementation, nvdec works again * Address ripinperi's comments * Address gdkchan's comments * Implement nvhost-ctrl close accurately + make nvservices dispose channels when stopping the emulator * Fix typo in MultiMediaOperationType
114 lines
No EOL
5.1 KiB
C#
114 lines
No EOL
5.1 KiB
C#
namespace Ryujinx.Graphics.Gpu.State
|
|
{
|
|
/// <summary>
|
|
/// GPU method offset.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// This is indexed in 32 bits word.
|
|
/// </remarks>
|
|
enum MethodOffset
|
|
{
|
|
BindChannel = 0x00,
|
|
FenceValue = 0x1c,
|
|
FenceAction = 0x1d,
|
|
WaitForIdle = 0x44,
|
|
MacroUploadAddress = 0x45,
|
|
SendMacroCodeData = 0x46,
|
|
MacroBindingIndex = 0x47,
|
|
BindMacro = 0x48,
|
|
SetMmeShadowRamControl = 0x49,
|
|
I2mParams = 0x60,
|
|
LaunchDma = 0x6c,
|
|
LoadInlineData = 0x6d,
|
|
CopyDstTexture = 0x80,
|
|
CopySrcTexture = 0x8c,
|
|
DispatchParamsAddress = 0xad,
|
|
Dispatch = 0xaf,
|
|
SyncpointAction = 0xb2,
|
|
CopyBuffer = 0xc0,
|
|
RasterizeEnable = 0xdf,
|
|
CopyBufferParams = 0x100,
|
|
CopyBufferSwizzle = 0x1c2,
|
|
CopyBufferDstTexture = 0x1c3,
|
|
CopyBufferSrcTexture = 0x1ca,
|
|
RtColorState = 0x200,
|
|
CopyTextureControl = 0x223,
|
|
CopyRegion = 0x22c,
|
|
CopyTexture = 0x237,
|
|
ViewportTransform = 0x280,
|
|
ViewportExtents = 0x300,
|
|
VertexBufferDrawState = 0x35d,
|
|
DepthMode = 0x35f,
|
|
ClearColors = 0x360,
|
|
ClearDepthValue = 0x364,
|
|
ClearStencilValue = 0x368,
|
|
DepthBiasState = 0x370,
|
|
TextureBarrier = 0x378,
|
|
ScissorState = 0x380,
|
|
StencilBackMasks = 0x3d5,
|
|
InvalidateTextures = 0x3dd,
|
|
TextureBarrierTiled = 0x3df,
|
|
RtColorMaskShared = 0x3e4,
|
|
RtDepthStencilState = 0x3f8,
|
|
VertexAttribState = 0x458,
|
|
RtControl = 0x487,
|
|
RtDepthStencilSize = 0x48a,
|
|
SamplerIndex = 0x48d,
|
|
DepthTestEnable = 0x4b3,
|
|
BlendIndependent = 0x4b9,
|
|
DepthWriteEnable = 0x4ba,
|
|
DepthTestFunc = 0x4c3,
|
|
BlendStateCommon = 0x4cf,
|
|
BlendEnableCommon = 0x4d7,
|
|
BlendEnable = 0x4d8,
|
|
StencilTestState = 0x4e0,
|
|
YControl = 0x4eb,
|
|
FirstVertex = 0x50d,
|
|
FirstInstance = 0x50e,
|
|
PointSize = 0x546,
|
|
ResetCounter = 0x54c,
|
|
RtDepthStencilEnable = 0x54e,
|
|
ConditionState = 0x554,
|
|
SamplerPoolState = 0x557,
|
|
DepthBiasFactor = 0x55b,
|
|
TexturePoolState = 0x55d,
|
|
StencilBackTestState = 0x565,
|
|
DepthBiasUnits = 0x56f,
|
|
RtMsaaMode = 0x574,
|
|
ShaderBaseAddress = 0x582,
|
|
DrawEnd = 0x585,
|
|
DrawBegin = 0x586,
|
|
PrimitiveRestartState = 0x591,
|
|
IndexBufferState = 0x5f2,
|
|
IndexBufferCount = 0x5f8,
|
|
DepthBiasClamp = 0x61f,
|
|
VertexBufferInstanced = 0x620,
|
|
FaceState = 0x646,
|
|
ViewportTransformEnable = 0x64b,
|
|
ViewVolumeClipControl = 0x64f,
|
|
Clear = 0x674,
|
|
RtColorMask = 0x680,
|
|
ReportState = 0x6c0,
|
|
Report = 0x6c3,
|
|
VertexBufferState = 0x700,
|
|
BlendState = 0x780,
|
|
VertexBufferEndAddress = 0x7c0,
|
|
ShaderState = 0x800,
|
|
FirmwareCall0 = 0x8c0,
|
|
FirmwareCall1 = 0x8c1,
|
|
FirmwareCall2 = 0x8c2,
|
|
FirmwareCall3 = 0x8c3,
|
|
FirmwareCall4 = 0x8c4,
|
|
FirmwareCall5 = 0x8c5,
|
|
FirmwareCall6 = 0x8c6,
|
|
FirmwareCall7 = 0x8c7,
|
|
UniformBufferState = 0x8e0,
|
|
UniformBufferUpdateData = 0x8e4,
|
|
UniformBufferBindVertex = 0x904,
|
|
UniformBufferBindTessControl = 0x90c,
|
|
UniformBufferBindTessEvaluation = 0x914,
|
|
UniformBufferBindGeometry = 0x91c,
|
|
UniformBufferBindFragment = 0x924,
|
|
TextureBufferIndex = 0x982
|
|
}
|
|
} |