Changes

8,241 bytes added ,  20:02, 11 August 2022
no edit summary
Line 773: Line 773:  
| 0x4ED || SetAliasedLineWidthFloat || 1 || float ||
 
| 0x4ED || SetAliasedLineWidthFloat || 1 || float ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x50D || VertexBufferElementBase || 1 || uint ||
+
| 0x506 || SetLineMultisampleOverride || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x519 || ZCullContextSave || 1 || trigger || 0 is written here to trigger ctx-save, uses ZCullContextStartAddr.
+
| 0x508 || SetAlphaHysteresis || 1 || ||
 +
|-
 +
| 0x509 || InvalidateSamplerCacheNoWfi || 1 || ||
 +
|-
 +
| 0x50A || InvalidateTextureHeaderCacheNoWfi || 1 || ||
 +
|- style="border-top: double"
 +
| 0x50D || SetGlobalBaseVertexIndex || 1 || uint ||
 +
|-
 +
| 0x509 || SetGlobalBaseInstanceIndex || 1 || ||
 +
|- style="border-top: double"
 +
| 0x514 || SetPsWarpWatermarks || 1 || ||
 +
|-
 +
| 0x515 || SetPsRegisterWatermarks || 1 || ||
 +
|- style="border-top: double"
 +
| 0x519 || StoreZcull || 1 || trigger || 0 is written here to trigger ctx-save, uses ZCullContextStartAddr.
 
|- style="border-top: double"
 
|- style="border-top: double"
 
| 0x51F || PolygonOffsetClamp0 || 1 || float ||
 
| 0x51F || PolygonOffsetClamp0 || 1 || float ||
 +
|-
 +
| 0x520+4*N || SetIteratedBlendConstantRed || 1 || ||
 +
|-
 +
| 0x521+4*N || SetIteratedBlendConstantGreen || 1 || ||
 +
|-
 +
| 0x522+4*N || SetIteratedBlendConstantBlue || 1 || ||
 +
|- style="border-top: double"
 +
| 0x540 || LoadZcull || 1 || trigger || 0 is written here to trigger ctx-restore, uses ZCullContextStartAddr.
 +
|-
 +
| 0x541 || SetSurfaceClipIdHeight || 1 || ||
 +
|-
 +
| 0x542 || SetClipIdClearRectHorizontal || 1 || ||
 +
|-
 +
| 0x543 || SetClipIdClearRectVertical || 1 || ||
 +
|-
 +
| 0x544 || SetUserClipEnable || 1 || ||
 +
|-
 +
| 0x545 || SetZpassPixelCount || 1 || ||
 +
|-
 +
| 0x546 || SetPointSize || 1 || float ||
 +
|-
 +
| 0x547 || SetZcullStats || 1 || ||
 +
|-
 +
| 0x548 || SetPointSprite || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x540 || ZCullContextRestore || 1 || trigger || 0 is written here to trigger ctx-restore, uses ZCullContextStartAddr.
+
| 0x54A || SetShaderExceptions || 1 || ||
 +
|- style="border-top: double"
 +
| 0x54C || ClearReportValue || 1 || || Value written decides which counter to reset.
 +
|-
 +
| 0x54D || SetAntiAliasEnable || 1 || ||
 +
|-
 +
| 0x54E || SetZtSelect || 1 || bool || SetRenderTargets writes 0 here if an optional buffer is NULL.
 +
|-
 +
| 0x54F || SetAntiAliasAlphaControl || 1 || bool || bit0: AlphaToCoverageEnable, bit1+: ?
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x546 || PointSize || 1 || float ||
+
| 0x554 || SetRenderEnableA || 1 || gpuva ||
 +
|-
 +
| 0x555 || SetRenderEnableB || 1 || gpuva ||
 +
|-
 +
| 0x556 || SetRenderEnableC || 1 || enum || 0=False, 1=True, 2=Conditional, 3=RenderIfEqual, 4=RenderIfNotEqual,
 +
|-
 +
| 0x557 || SetTexSamplerPoolA || 1 || gpuva ||
 +
|-
 +
| 0x558 || SetTexSamplerPoolB || 1 || gpuva ||
 +
|-
 +
| 0x559 || SetTexSamplerPoolC || 1 || bitfield || Bit0-19: MaximumIndex
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x54C || CounterReset || 1 || || Value written decides which counter to reset.
+
| 0x55B || SetSlopeScaleDepthBias || 1 || float ||
 
|-
 
|-
| 0x54D || MultisampleEnable || 1 || ||
+
| 0x55C || SetAntiAliasedLine || 1 || ||
 +
|-
 +
| 0x55D || SetTexHeaderPoolA || 1 || gpuva ||
 +
|-
 +
| 0x55E || SetTexHeaderPoolB || 1 || gpuva ||
 +
|-
 +
| 0x55F || SetTexHeaderPoolC || 1 || bitfield || Bit0-21: MaximumIndex
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x54E || || 1 || bool || SetRenderTargets writes 0 here if an optional buffer is NULL.
+
| 0x564 || SetActiveZcullRegion || 1 || ||
 +
|-
 +
| 0x565 || SetTwoSidedStencilTest || 1 || ||
 +
|-
 +
| 0x566 || SetBackStencilOpFail || 1 || ||
 +
|-
 +
| 0x567 || SetBackStencilOpZfail || 1 || ||
 
|-
 
|-
| 0x54F || MultisampleControl || 1 || bool || bit0: AlphaToCoverageEnable, bit1+: ?
+
| 0x568 || SetBackStencilOpZpass || 1 || ||
 +
|-
 +
| 0x569 || SetBackStencilFunc || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x554 || RenderEnableOffset || 2 || gpuva ||
+
| 0x56D || CsaaEnable || 1 || bool ||
 +
|-
 +
| 0x56E || SetSrgbWrite || 1 || ||
 +
|-
 +
| 0x56F || SetDepthBias || 1 || float || Float multiplied by 2 is written here.
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x556 || RenderEnableMode || 1 || enum || 0=False, 1=True, 2=Conditional, 3=RenderIfEqual, 4=RenderIfNotEqual,
+
| 0x572 || SetZcullRegionFormat || 1 || ||
 
|-
 
|-
| 0x557 || TexSamplerPoolOffset (???) || 2 || gpuva ||
+
| 0x573 || SetRtLayer || 1 || ||
 
|-
 
|-
| 0x558 || TexSamplerPoolMaximumIndex (???) || 1 || bitfield || Bit0-19: Maximum
+
| 0x574 || SetAntiAlias || 1 || || Written by SetRenderTargets, possible values: 0, 2, 4, 5, 6.
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x55B || PolygonOffsetFactor || 1 || float ||
+
| 0x579 || SetEdgeFlag || 1 || ||
 +
|-
 +
| 0x57A || DrawInlineIndex || 1 || ||
 +
|-
 +
| 0x57B || SetInlineIndex2x16Align || 1 || ||
 +
|-
 +
| 0x57C || DrawInlineIndex2x16 || 1 || ||
 +
|-
 +
| 0x57D || SetVertexGlobalBaseOffsetA || 1 || ||
 +
|-
 +
| 0x57E || SetVertexGlobalBaseOffsetB || 1 || ||
 +
|-
 +
| 0x57F || SetZcullRegionPixelOffsetA || 1 || || SetRenderTargets optionally writes 0 here.
 +
|-
 +
| 0x580 || SetZcullRegionPixelOffsetB || 1 || || SetRenderTargets optionally writes 0 here.
 +
|-
 +
| 0x581 || SetPointSpriteSelect || 1 || ||
 +
|-
 +
| 0x582 || SetProgramRegionA || 1 || gpuva ||
 +
|-
 +
| 0x583 || SetProgramRegionB || 1 || gpuva ||
 +
|-
 +
| 0x584 || SetAttributeDefault || 1 || ||
 +
|-
 +
| 0x585 || End || 1 || ||
 +
|-
 +
| 0x586 || Begin || 1 || ||
 +
|-
 +
| 0x587 || SetVertexIdCopy || 1 || ||
 +
|-
 +
| 0x588 || AddToPrimitiveId || 1 || ||
 +
|-
 +
| 0x589 || LoadPrimitiveId || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x55D || TexHeaderPoolOffset (???) || 2 || gpuva ||
+
| 0x58B || SetShaderBasedCull || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x55F || TexHeaderPoolMaximumIndex (???) || 1 || bitfield || Bit0-21: Maximum
+
| 0x58E || SetClassVersion || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x56D || CsaaEnable || 1 || bool ||
+
| 0x591 || SetDaPrimitiveRestart || 1 || bool ||
 +
|-
 +
| 0x592 || SetDaPrimitiveRestartIndex || 1 || uint ||
 +
|-
 +
| 0x593 || SetDaOutput || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x56F || PolygonOffsetOffset || 1 || float || Float multiplied by 2 is written here.
+
| 0x596 || SetAntiAliasedPoint || 1 || ||
 +
|-
 +
| 0x597 || SetPointCenterMode || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x574 || MultisampleMode || 1 || || Written by SetRenderTargets, possible values: 0, 2, 4, 5, 6.
+
| 0x599 || CubeMapInterFaceFiltering || 1 || bitfield || Bit0-1: Mode (0=UseWrap, 1=OverrideWrap, 2=AutoSpanSeam, 3=AutoCrossSeam)
 +
|-
 +
| 0x59A || SetLineSmoothParameters || 1 || ||
 +
|-
 +
| 0x59B || SetLineStipple || 1 || ||
 +
|-
 +
| 0x59C+N || SetLineSmoothEdgeTable || 4 || ||
 +
|-
 +
| 0x5A0 || SetLineStippleParameters || 1 || ||
 +
|-
 +
| 0x5A1 || SetProvokingVertex || 1 || ||
 +
|-
 +
| 0x5A2 || SetTwoSidedLight || 1 || ||
 +
|-
 +
| 0x5A3 || SetPolygonStipple || 1 || ||
 +
|-
 +
| 0x5A4 || SetShaderControl || 1 || bitfield || Bit0: DefaultPartial (0=Zero, 1=Infinity), bit1: Fp32NanBehavior (0=Legacy, 1=Fp64Compatible), bit2: Fp32F21NanBehavior (0=PassZero, 1=PassIndefinite), bit16: ZeroTimesAnythingIsZero
 +
|-
 +
| 0x5A5 || BindConstantBuffer || 1 || bitfield || Bit0: Valid, bit8-12: ShaderSlot
 +
|-
 +
| 0x5A6 || InvalidateShaderCachesNoWfi || 1 || bitfield || Bit0: Instruction, bit4: GlobalData, bit8: Uniform, bit12: Constant
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x57F || || 1 || || SetRenderTargets optionally writes 0 here.
+
| 0x5A8 || CheckClassVersion || 1 || ||
 +
|-
 +
| 0x5A9 || SetSphVersion || 1 || ||
 
|-
 
|-
| 0x580 || || 1 || || SetRenderTargets optionally writes 0 here.
+
| 0x5AA || CheckSphVersion || 1 || ||
 +
|- style="border-top: double"
 +
| 0x5AD || SetAlphaToCoverageOverride || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x582 || ProgramRegion (???) || 2 || gpuva ||
+
| 0x5C0+N || SetPolygonStipplePattern || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x591 || PrimitiveRestartEnable || 1 || bool ||
+
| 0x5E4 || SetAamVersion || 1 || ||
 
|-
 
|-
| 0x592 || PrimitiveRestartIndex || 1 || uint ||
+
| 0x5E5 || CheckAamVersion || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x599 || CubeMapInterFaceFiltering (???) || 1 || bitfield || Bit0-1: Mode (0=UseWrap, 1=OverrideWrap, 2=AutoSpanSeam, 3=AutoCrossSeam)
+
| 0x5E7 || SetZtLayer || 1 || ||
 +
|- style="border-top: double"
 +
| 0x5F2 || SetIndexBufferA || 1 || gpuva ||
 +
|-
 +
| 0x5F3 || SetIndexBufferB || 1 || gpuva ||
 +
|-
 +
| 0x5F4 || SetIndexBufferC || 1 || gpuva ||
 +
|-
 +
| 0x5F5 || SetIndexBufferD || 1 || gpuva ||
 +
|-
 +
| 0x5F6 || SetIndexBufferE || 1 || bool ||
 +
|-
 +
| 0x5F7 || SetIndexBufferF || 1 || ||
 +
|-
 +
| 0x5F8 || DrawIndexBuffer || 1 || ||
 +
|-
 +
| 0x5F9 || DrawIndexBuffer32BeginEndInstanceFirst || 1 || ||
 +
|-
 +
| 0x5FA || DrawIndexBuffer16BeginEndInstanceFirst || 1 || ||
 +
|-
 +
| 0x5FB || DrawIndexBuffer8BeginEndInstanceFirst || 1 || ||
 +
|-
 +
| 0x5FC || DrawIndexBuffer32BeginEndInstanceSubsequent || 1 || ||
 +
|-
 +
| 0x5FD || DrawIndexBuffer16BeginEndInstanceSubsequent || 1 || ||
 +
|-
 +
| 0x5FE || DrawIndexBuffer8BeginEndInstanceSubsequent || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x5A4 || ShaderControl (???) || 1 || bitfield || Bit0: Partial (0=Zero, 1=Infinity), bit1: Fp32NanBehavior (0=Legacy, 1=Fp64Compatible), bit2: Fp32F21NanBehavior (0=PassZero, 1=PassIndefinite), bit16: ZeroTimesAnythingIsZero
+
| 0x61F || SetDepthBiasClamp || 1 || ||
 
|-
 
|-
| 0x5A5 || BindConstantBuffer (???) || 1 || bitfield || Bit0: Valid, bit8-12: ShaderSlot
+
| 0x620+N || SetVertexStreamInstanceA || 16 || bool || n=0...15.
 
|-
 
|-
| 0x5A6 || InvalidateShaderCachesNoWfi (???) || 1 || bitfield || Bit0: Instruction, bit4: GlobalData, bit8: Uniform, bit12: Constant
+
| 0x630+N || SetVertexStreamInstanceB || 16 || bool || n=0...15.
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x5F2 || DrawElementsIndirectAddr || 2 || gpuva || TODO
+
| 0x644 || SetAttributePointSize || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x5F6 || DrawElementsIndirectFlag? || 1 || bool || TODO
+
| 0x646 || OglSetCull || 1 || bool ||
 +
|-
 +
| 0x647 || OglSetFrontFace || 1 || bitfield || Bit0: Enable. Always ORR'd with 0x9000.
 +
|-
 +
| 0x648 || OglSetCullFace || 1 || bitfield || 0x404=Front, 0x405=Back, 0x408=FrontAndBack
 +
|-
 +
| 0x649 || SetViewportPixel || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x620+N || VertexStreamNEnableDivisor || 1 || bool || n=0...15.
+
| 0x64B || SetViewportScaleOffset || 1 || ||
 +
|-
 +
| 0x64C || InvalidateConstantBufferCache || 1 || bitfield || Bit0: ThruL2
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x646 || PolygonCullFaceEnable || 1 || bool ||
+
| 0x64F || SetViewportClipControl  || 1 || || TODO: 0x101A is written when enabled, 0x181D when disabled.
 
|-
 
|-
| 0x647 || PolygonFrontFace || 1 || bitfield || Bit0: Enable. Always ORR'd with 0x9000.
+
| 0x650 || SetUserClipOp || 1 || ||
 
|-
 
|-
| 0x648 || PolygonCullFaceConfig || 1 || bitfield || TODO: 0x404/0x405/0x408
+
| 0x651 || SetRenderEnableOverride || 1 || bitfield || Bit0-1: 0=UseRenderEnable, 1=AlwaysRender, 2=NeverRender
 +
|-
 +
| 0x652 || SetPrimitiveTopologyControl || 1 || ||
 +
|-
 +
| 0x653 || SetWindowClipEnable || 1 || ||
 +
|-
 +
| 0x654 || SetWindowClipType || 1 || ||
 +
|- style="border-top: double"
 +
| 0x656 || InvalidateZcull || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x651 || RenderEnableOverride || 1 || bitfield || Bit0-1: 0=UseRenderEnable, 1=AlwaysRender, 2=NeverRender
+
| 0x65A || SetZcull || 1 || ||
 +
|-
 +
| 0x65B || SetZcullBounds || 1 || ||
 +
|-
 +
| 0x65C || SetPrimitiveTopology || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x64C || InvalidateConstantBufferCache (???) || 1 || bitfield || Bit0: ThruL2
+
| 0x65E || ZcullSync || 1 || ||
 +
|-
 +
| 0x65F || SetClipIdTest || 1 || ||
 +
|-
 +
| 0x660 || SetSurfaceClipIdWidth || 1 || ||
 +
|-
 +
| 0x661 || SetClipId || 1 || ||
 +
|- style="border-top: double"
 +
| 0x66F || SetDepthBoundsTest || 1 || bool ||
 +
|-
 +
| 0x670 || SetBlendFloatOption || 1 || ||
 +
|-
 +
| 0x671 || SetLogicOp || 1 || bool || Used for all LogicOps except 3.
 +
|-
 +
| 0x672 || SetLogicOpFunc || 1 || bitfield || Bit0-7: LogicOp, bit8-15: unknown, always 0x15.
 +
|-
 +
| 0x673 || SetZCompression || 1 || ||
 +
|-
 +
| 0x674 || ClearSurface || 1 || ||
 +
|-
 +
| 0x675 || ClearClipIdSurface || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x64F || DepthClamp || 1 || || TODO: 0x101A is written when enabled, 0x181D when disabled.
+
| 0x678+N || SetColorCompression || 8 || ||
 +
|-
 +
| 0x680+N || SetCtWrite || 8 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x66F || DepthBoundsEnable || 1 || bool ||
+
| 0x68B || PipeNop || 1 || trigger || Always 0 is written here. During zcull ctx-save, spammed when enabling raster, ...
 +
|-
 +
| 0x68C || SetSpare00 || 1 || uint ||
 +
|-
 +
| 0x68D || SetSpare01 || 1 || uint ||
 +
|-
 +
| 0x68E || SetSpare02 || 1 || uint ||
 +
|-
 +
| 0x68F || SetSpare03 || 1 || uint ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x671 || ColorLogicOpEnable || 1 || bool || Used for all LogicOps except 3.
+
| 0x6C0 || SetReportSemaphoreA || 1 || gpuva ||
 +
|-
 +
| 0x6C1 || SetReportSemaphoreB || 1 || gpuva ||
 +
|-
 +
| 0x6C2 || SetReportSemaphoreC || 1 || || 0 is written here during most queries.
 
|-
 
|-
| 0x672 || ColorLogicOpType || 1 || bitfield || Bit0-7: LogicOp, bit8-15: unknown, always 0x15.
+
| 0x6C3 || SetReportSemaphoreD || 1 || bitfield || Bit0-1: Operation (0=Release, 3=Trap), bit2: FlushDisable, bit20: AwakenEnable, bit28: StructureSize (0=FourWords, 1=OneWord)
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x689 || SetSpare (???) || 1 || uint[4] ||
+
| 0x700+4*N || SetVertexStreamAFormat || 1 || uint || Bit0-11: Stride. Bit12: Enable.
 +
|-
 +
| 0x701+4*N || SetVertexStreamALocationA || 1 || gpuva ||
 +
|-
 +
| 0x702+4*N || SetVertexStreamALocationB || 1 || gpuva ||
 +
|-
 +
| 0x703+4*N || SetVertexStreamAFrequency || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x68B || PipeNop || 1 || trigger || Always 0 is written here. During zcull ctx-save, spammed when enabling raster, ...
+
| 0x740+4*N || SetVertexStreamBFormat || 1 || ||
 +
|-
 +
| 0x741+4*N || SetVertexStreamBLocationA || 1 || gpuva ||
 +
|-
 +
| 0x742+4*N || SetVertexStreamBLocationB || 1 || gpuva ||
 +
|-
 +
| 0x743+4*N || SetVertexStreamBFrequency || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x6C0 || ReportSemaphoreOffset || 2 || gpuva ||
+
| 0x780+8*N || SetBlendPerTargetSeparateForAlpha || 1 || ||
 +
|-
 +
| 0x781+8*N || SetBlendPerTargetColorOp || 1 || bitfield || Bit0-2: BlendEquation.
 +
|-
 +
| 0x782+8*N || SetBlendPerTargetColorSourceCoeff || 1 || bitfield || Bit0-4: ?, bit14-15: ?
 +
|-
 +
| 0x783+8*N || SetBlendPerTargetColorDestCoeff || 1 || bitfield || Bit0-4: ?, bit14-15: ?
 +
|-
 +
| 0x784+8*N || SetBlendPerTargetAlphaOp || 1 || bitfield || Bit0-2: BlendEquation
 +
|-
 +
| 0x785+8*N || SetBlendPerTargetAlphaSourceCoeff || 1 || bitfield || Bit0-4: ?, bit14-15: ?
 +
|-
 +
| 0x786+8*N || SetBlendPerTargetAlphaDestCoeff || 1 || bitfield || Bit0-4: ?, bit14-15: ?
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x6C2 || ReportSemaphorePayload || 1 || || 0 is written here during most queries.
+
| 0x7C0+2*N || SetVertexStreamLimitAA || 1 || gpuva ||
 
|-
 
|-
| 0x6C3 || ReportSemaphoreControl || 1 || bitfield || Bit0-1: Operation (0=Release, 3=Trap), bit2: FlushDisable, bit20: AwakenEnable, bit28: StructureSize (0=FourWords, 1=OneWord)
+
| 0x7C1+2*N || SetVertexStreamLimitAB || 1 || gpuva ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x700+4*N || VertexStreamNStride || 1 || uint || Bit0-11: Stride. TODO: This has more stuff according to nouveau. n=0..31
+
| 0x7E0+2*N || SetVertexStreamLimitBA || 1 || gpuva ||
 
|-
 
|-
| 0x701+4*N || VertexBufferStartAddr || 2 || gpuva || TODO: Incorrecto
+
| 0x7E1+2*N || SetVertexStreamLimitBB || 1 || gpuva ||
 +
|- style="border-top: double"
 +
| 0x800+16*N || SetPipelineShader || 1 || ||
 
|-
 
|-
| 0x703+4*N || VertexStreamNDivisor || || ||
+
| 0x801+16*N || SetPipelineProgram || 1 || ||
 
|-
 
|-
| 0x7C0+2*N || VertexBufferEndAddr || 2 || gpuva ||
+
| 0x802+16*N || SetPipelineReservedA || 1 || ||
 
|-
 
|-
| 0x781+8*N || BlendNRgbEquation || 1 || bitfield || Bit0-2: BlendEquation.
+
| 0x803+16*N || SetPipelineRegisterCount || 1 || ||
 
|-
 
|-
| 0x782+8*N || BlendNRgbFunctionSrc || 1 || bitfield || Bit0-4: ?, bit14-15: ?
+
| 0x804+16*N || SetPipelineBinding || 1 || ||
 
|-
 
|-
| 0x783+8*N || BlendNRgbFunctionDst || 1 || bitfield || Bit0-4: ?, bit14-15: ?
+
| 0x805+16*N || SetPipelineReservedB || 1 || ||
 
|-
 
|-
| 0x784+8*N || BlendNAlphaEquation || 1 || bitfield || Bit0-2: BlendEquation
+
| 0x806+16*N || SetPipelineReservedC || 1 || ||
 
|-
 
|-
| 0x785+8*N || BlendNAlphaFunctionSrc || 1 || bitfield || Bit0-4: ?, bit14-15: ?
+
| 0x807+16*N || SetPipelineReservedD || 1 || ||
 
|-
 
|-
| 0x786+8*N || BlendNAlphaFunctionDst || 1 || bitfield || Bit0-4: ?, bit14-15: ?
+
| 0x808+16*N || SetPipelineReservedE || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
 
| 0x820 || || 1 || || Select tessellation control program.
 
| 0x820 || || 1 || || Select tessellation control program.
Line 893: Line 1,135:  
| 0x850 || || 1 || || Select fragment program.
 
| 0x850 || || 1 || || Select fragment program.
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x8C0+N || FirmwareCallN || 8 || uint || Invokes GPU microcode firmware blob.
+
| 0x8C0 || SetFalcon00 || 1 || uint ||
 +
|-
 +
| 0x8C1 || SetFalcon01 || 1 || uint ||
 +
|-
 +
| 0x8C2 || SetFalcon02 || 1 || uint ||
 +
|-
 +
| 0x8C3 || SetFalcon03 || 1 || uint ||
 +
|-
 +
| 0x8C4 || SetFalcon04 || 1 || uint ||
 +
|-
 +
| 0x8C5 || SetFalcon05 || 1 || uint ||
 +
|-
 +
| 0x8C6 || SetFalcon06 || 1 || uint ||
 +
|-
 +
| 0x8C7 || SetFalcon07 || 1 || uint ||
 +
|-
 +
| 0x8C8 || SetFalcon08 || 1 || uint ||
 +
|-
 +
| 0x8C9 || SetFalcon09 || 1 || uint ||
 +
|-
 +
| 0x8CA || SetFalcon10 || 1 || uint ||
 +
|-
 +
| 0x8CB || SetFalcon11 || 1 || uint ||
 +
|-
 +
| 0x8CC || SetFalcon12 || 1 || uint ||
 +
|-
 +
| 0x8CD || SetFalcon13 || 1 || uint ||
 +
|-
 +
| 0x8CE || SetFalcon14 || 1 || uint ||
 +
|-
 +
| 0x8CF || SetFalcon15 || 1 || uint ||
 +
|-
 +
| 0x8D0 || SetFalcon16 || 1 || uint ||
 +
|-
 +
| 0x8D1 || SetFalcon17 || 1 || uint ||
 +
|-
 +
| 0x8D2 || SetFalcon18 || 1 || uint ||
 +
|-
 +
| 0x8D3 || SetFalcon19 || 1 || uint ||
 +
|-
 +
| 0x8D4 || SetFalcon20 || 1 || uint ||
 +
|-
 +
| 0x8D5 || SetFalcon21 || 1 || uint ||
 +
|-
 +
| 0x8D6 || SetFalcon22 || 1 || uint ||
 +
|-
 +
| 0x8D7 || SetFalcon23 || 1 || uint ||
 +
|-
 +
| 0x8D8 || SetFalcon24 || 1 || uint ||
 +
|-
 +
| 0x8D9 || SetFalcon25 || 1 || uint ||
 +
|-
 +
| 0x8DA || SetFalcon26 || 1 || uint ||
 +
|-
 +
| 0x8DB || SetFalcon27 || 1 || uint ||
 +
|-
 +
| 0x8DC || SetFalcon28 || 1 || uint ||
 +
|-
 +
| 0x8DD || SetFalcon29 || 1 || uint ||
 +
|-
 +
| 0x8DE || SetFalcon30 || 1 || uint ||
 +
|-
 +
| 0x8DF || SetFalcon31 || 1 || uint ||
 +
|-
 +
| 0x8E0 || SetConstantBufferSelectorA || 1 || uint || Bit0-16: Size
 +
|-
 +
| 0x8E1 || SetConstantBufferSelectorB || 1 || gpuva ||
 +
|-
 +
| 0x8E2 || SetConstantBufferSelectorC || 1 || gpuva ||
 +
|-
 +
| 0x8E3 || LoadConstantBufferOffset || 1 || uint || Bit0-15: Offset. BindImage writes "8*i + 0x120" here. BindSeparateSampler writes "8*i + 0x568" here. BindSeparateTexture uses "8*i + 0x168". BindTexture uses 8*i + 32. TODO: BindStorageBuffer, UpdateUniformBuffer, etc
 +
|-
 +
| 0x8E4+N || LoadConstantBuffer || 16 || uint ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x8E0 || ConstantBufferSelectorSize || 1 || uint || Bit0-16: Size
+
| 0x900+8*N || BindGroupReservedA || 1 || ||
 
|-
 
|-
| 0x8E1 || ConstantBufferSelectorAddr || 2 || gpuva ||
+
| 0x901+8*N || BindGroupReservedB || 1 || ||
 
|-
 
|-
| 0x8E3 || LoadConstantBufferOffset || 1 || uint || Bit0-15: Offset. BindImage writes "8*i + 0x120" here. BindSeparateSampler writes "8*i + 0x568" here. BindSeparateTexture uses "8*i + 0x168". BindTexture uses 8*i + 32. TODO: BindStorageBuffer, UpdateUniformBuffer, etc
+
| 0x902+8*N || BindGroupReservedC || 1 || ||
 +
|-
 +
| 0x903+8*N || BindGroupReservedD || 1 || ||
 +
|-
 +
| 0x904+8*N || BindGroupConstantBuffer || 1 || bitfield || n=0..4. Bit0: Valid, bit4-8: ShaderSlot
 +
|- style="border-top: double"
 +
| 0x980 || SetColorClamp || 1 || ||
 +
|- style="border-top: double"
 +
| 0x982 || SetBindlessTexture || 1 || ||
 
|-
 
|-
| 0x8E4 || LoadConstantBuffer || 1 || uint[16] ||
+
| 0x983 || SetTrapHandler || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x904+8*N || ConstBufferNBind || 1 || bitfield || n=0..4. Bit0: Valid, bit4-8: Index
+
| 0xA00 || SetStreamOutLayoutSelect || 1 || ||
 +
|- style="border-top: double"
 +
| 0xCCF+N || SetShaderPerformanceCounterValueUpper || 8 || ||
 +
|-
 +
| 0xCD7+N || SetShaderPerformanceCounterValue || 8 || ||
 +
|-
 +
| 0xCDF+N || SetShaderPerformanceCounterEvent || 8 || ||
 +
|-
 +
| 0xCE7+N || SetShaderPerformanceCounterControlA || 8 || ||
 +
|-
 +
| 0xCEF+N || SetShaderPerformanceCounterControlB || 8 || ||
 +
|-
 +
| 0xCF7 || SetShaderPerformanceCounterTrapControl || 1 || ||
 +
|-
 +
| 0xCF8 || StartShaderPerformanceCounter || 1 || ||
 +
|-
 +
| 0xCF9 || StopShaderPerformanceCounter || 1 || ||
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0xD00 || SetMmeShadowScratch || uint[0x80] || 128 || Mostly general purpose, sometimes accessed by FirmwareCall.
+
| 0xD00+N || SetMmeShadowScratch || 128 || uint[0x80] || Mostly general purpose, sometimes accessed by FirmwareCall.
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0xE00+N*2 || CallMmeMacroN || 1 || uint || n=0..0x7f. Writing here calls a bound macro with value written put in r1.
+
| 0xE00+N*2 || CallMmeMacro || 1 || uint || n=0..0x7f. Writing here calls a bound macro with value written put in r1.
 
|-
 
|-
| 0xE01+N*2 || CallMmeDataN || 1 || pipe || Used to send variable number of arguments to macro via the "parm" instruction.
+
| 0xE01+N*2 || CallMmeData || 1 || pipe || Used to send variable number of arguments to macro via the "parm" instruction.
 
|}
 
|}