Refactor PipelineUid and pack TopologyClass
Remove basepipelineindex as its extraneous
This commit is contained in:
parent
59ef2ac799
commit
3b398adbe6
2 changed files with 195 additions and 266 deletions
|
@ -11,294 +11,238 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
|
|
||||||
public PipelineUid Internal;
|
public PipelineUid Internal;
|
||||||
|
|
||||||
public float LineWidth
|
public PolygonMode PolygonMode
|
||||||
{
|
{
|
||||||
readonly get => BitConverter.Int32BitsToSingle((int)((Internal.Id0 >> 0) & 0xFFFFFFFF));
|
readonly get => (PolygonMode)((Internal.Id0 >> 0) & 0x3FFFFFFF);
|
||||||
set => Internal.Id0 = (Internal.Id0 & 0xFFFFFFFF00000000) | ((ulong)(uint)BitConverter.SingleToInt32Bits(value) << 0);
|
set => Internal.Id0 = (Internal.Id0 & 0xFFFFFFFFC0000000) | ((ulong)value << 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public float DepthBiasClamp
|
public uint StagesCount
|
||||||
{
|
{
|
||||||
readonly get => BitConverter.Int32BitsToSingle((int)((Internal.Id0 >> 32) & 0xFFFFFFFF));
|
readonly get => (byte)((Internal.Id0 >> 30) & 0xFF);
|
||||||
set => Internal.Id0 = (Internal.Id0 & 0xFFFFFFFF) | ((ulong)(uint)BitConverter.SingleToInt32Bits(value) << 32);
|
set => Internal.Id0 = (Internal.Id0 & 0xFFFFFFC03FFFFFFF) | ((ulong)value << 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
public float DepthBiasConstantFactor
|
public uint VertexAttributeDescriptionsCount
|
||||||
{
|
{
|
||||||
readonly get => BitConverter.Int32BitsToSingle((int)((Internal.Id1 >> 0) & 0xFFFFFFFF));
|
readonly get => (byte)((Internal.Id0 >> 38) & 0xFF);
|
||||||
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFFFF00000000) | ((ulong)(uint)BitConverter.SingleToInt32Bits(value) << 0);
|
set => Internal.Id0 = (Internal.Id0 & 0xFFFFC03FFFFFFFFF) | ((ulong)value << 38);
|
||||||
}
|
}
|
||||||
|
|
||||||
public float DepthBiasSlopeFactor
|
public uint VertexBindingDescriptionsCount
|
||||||
{
|
{
|
||||||
readonly get => BitConverter.Int32BitsToSingle((int)((Internal.Id1 >> 32) & 0xFFFFFFFF));
|
readonly get => (byte)((Internal.Id0 >> 46) & 0xFF);
|
||||||
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFFFF) | ((ulong)(uint)BitConverter.SingleToInt32Bits(value) << 32);
|
set => Internal.Id0 = (Internal.Id0 & 0xFFC03FFFFFFFFFFF) | ((ulong)value << 46);
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint StencilFrontCompareMask
|
public uint ViewportsCount
|
||||||
|
{
|
||||||
|
readonly get => (byte)((Internal.Id0 >> 54) & 0xFF);
|
||||||
|
set => Internal.Id0 = (Internal.Id0 & 0xC03FFFFFFFFFFFFF) | ((ulong)value << 54);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint ScissorsCount
|
||||||
|
{
|
||||||
|
readonly get => (byte)((Internal.Id1 >> 0) & 0xFF);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFFFFFFFFFF00) | ((ulong)value << 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint ColorBlendAttachmentStateCount
|
||||||
|
{
|
||||||
|
readonly get => (byte)((Internal.Id1 >> 8) & 0xFF);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFFFFFFFF00FF) | ((ulong)value << 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PrimitiveTopology Topology
|
||||||
|
{
|
||||||
|
readonly get => (PrimitiveTopology)((Internal.Id1 >> 16) & 0xF);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFFFFFFF0FFFF) | ((ulong)value << 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
public LogicOp LogicOp
|
||||||
|
{
|
||||||
|
readonly get => (LogicOp)((Internal.Id1 >> 20) & 0xF);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFFFFFF0FFFFF) | ((ulong)value << 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CompareOp DepthCompareOp
|
||||||
|
{
|
||||||
|
readonly get => (CompareOp)((Internal.Id1 >> 24) & 0x7);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFFFFF8FFFFFF) | ((ulong)value << 24);
|
||||||
|
}
|
||||||
|
|
||||||
|
public StencilOp StencilFrontFailOp
|
||||||
|
{
|
||||||
|
readonly get => (StencilOp)((Internal.Id1 >> 27) & 0x7);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFFFFC7FFFFFF) | ((ulong)value << 27);
|
||||||
|
}
|
||||||
|
|
||||||
|
public StencilOp StencilFrontPassOp
|
||||||
|
{
|
||||||
|
readonly get => (StencilOp)((Internal.Id1 >> 30) & 0x7);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFFFE3FFFFFFF) | ((ulong)value << 30);
|
||||||
|
}
|
||||||
|
|
||||||
|
public StencilOp StencilFrontDepthFailOp
|
||||||
|
{
|
||||||
|
readonly get => (StencilOp)((Internal.Id1 >> 33) & 0x7);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFFF1FFFFFFFF) | ((ulong)value << 33);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CompareOp StencilFrontCompareOp
|
||||||
|
{
|
||||||
|
readonly get => (CompareOp)((Internal.Id1 >> 36) & 0x7);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFF8FFFFFFFFF) | ((ulong)value << 36);
|
||||||
|
}
|
||||||
|
|
||||||
|
public StencilOp StencilBackFailOp
|
||||||
|
{
|
||||||
|
readonly get => (StencilOp)((Internal.Id1 >> 39) & 0x7);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFFC7FFFFFFFFF) | ((ulong)value << 39);
|
||||||
|
}
|
||||||
|
|
||||||
|
public StencilOp StencilBackPassOp
|
||||||
|
{
|
||||||
|
readonly get => (StencilOp)((Internal.Id1 >> 42) & 0x7);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFFE3FFFFFFFFFF) | ((ulong)value << 42);
|
||||||
|
}
|
||||||
|
|
||||||
|
public StencilOp StencilBackDepthFailOp
|
||||||
|
{
|
||||||
|
readonly get => (StencilOp)((Internal.Id1 >> 45) & 0x7);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFFF1FFFFFFFFFFF) | ((ulong)value << 45);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CompareOp StencilBackCompareOp
|
||||||
|
{
|
||||||
|
readonly get => (CompareOp)((Internal.Id1 >> 48) & 0x7);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFF8FFFFFFFFFFFF) | ((ulong)value << 48);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CullModeFlags CullMode
|
||||||
|
{
|
||||||
|
readonly get => (CullModeFlags)((Internal.Id1 >> 51) & 0x3);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFE7FFFFFFFFFFFF) | ((ulong)value << 51);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool PrimitiveRestartEnable
|
||||||
|
{
|
||||||
|
readonly get => ((Internal.Id1 >> 53) & 0x1) != 0UL;
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFDFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 53);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DepthClampEnable
|
||||||
|
{
|
||||||
|
readonly get => ((Internal.Id1 >> 54) & 0x1) != 0UL;
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFFBFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 54);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool RasterizerDiscardEnable
|
||||||
|
{
|
||||||
|
readonly get => ((Internal.Id1 >> 55) & 0x1) != 0UL;
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFF7FFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 55);
|
||||||
|
}
|
||||||
|
|
||||||
|
public FrontFace FrontFace
|
||||||
|
{
|
||||||
|
readonly get => (FrontFace)((Internal.Id1 >> 56) & 0x1);
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFEFFFFFFFFFFFFFF) | ((ulong)value << 56);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DepthBiasEnable
|
||||||
|
{
|
||||||
|
readonly get => ((Internal.Id1 >> 57) & 0x1) != 0UL;
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFDFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 57);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DepthTestEnable
|
||||||
|
{
|
||||||
|
readonly get => ((Internal.Id1 >> 58) & 0x1) != 0UL;
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xFBFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 58);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DepthWriteEnable
|
||||||
|
{
|
||||||
|
readonly get => ((Internal.Id1 >> 59) & 0x1) != 0UL;
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xF7FFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 59);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DepthBoundsTestEnable
|
||||||
|
{
|
||||||
|
readonly get => ((Internal.Id1 >> 60) & 0x1) != 0UL;
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xEFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 60);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool StencilTestEnable
|
||||||
|
{
|
||||||
|
readonly get => ((Internal.Id1 >> 61) & 0x1) != 0UL;
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xDFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 61);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool LogicOpEnable
|
||||||
|
{
|
||||||
|
readonly get => ((Internal.Id1 >> 62) & 0x1) != 0UL;
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0xBFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 62);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool HasDepthStencil
|
||||||
|
{
|
||||||
|
readonly get => ((Internal.Id1 >> 63) & 0x1) != 0UL;
|
||||||
|
set => Internal.Id1 = (Internal.Id1 & 0x7FFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 63);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint PatchControlPoints
|
||||||
{
|
{
|
||||||
readonly get => (uint)((Internal.Id2 >> 0) & 0xFFFFFFFF);
|
readonly get => (uint)((Internal.Id2 >> 0) & 0xFFFFFFFF);
|
||||||
set => Internal.Id2 = (Internal.Id2 & 0xFFFFFFFF00000000) | ((ulong)value << 0);
|
set => Internal.Id2 = (Internal.Id2 & 0xFFFFFFFF00000000) | ((ulong)value << 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint StencilFrontWriteMask
|
public uint SamplesCount
|
||||||
{
|
{
|
||||||
readonly get => (uint)((Internal.Id2 >> 32) & 0xFFFFFFFF);
|
readonly get => (uint)((Internal.Id2 >> 32) & 0xFFFFFFFF);
|
||||||
set => Internal.Id2 = (Internal.Id2 & 0xFFFFFFFF) | ((ulong)value << 32);
|
set => Internal.Id2 = (Internal.Id2 & 0xFFFFFFFF) | ((ulong)value << 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint StencilFrontReference
|
|
||||||
{
|
|
||||||
readonly get => (uint)((Internal.Id3 >> 0) & 0xFFFFFFFF);
|
|
||||||
set => Internal.Id3 = (Internal.Id3 & 0xFFFFFFFF00000000) | ((ulong)value << 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint StencilBackCompareMask
|
|
||||||
{
|
|
||||||
readonly get => (uint)((Internal.Id3 >> 32) & 0xFFFFFFFF);
|
|
||||||
set => Internal.Id3 = (Internal.Id3 & 0xFFFFFFFF) | ((ulong)value << 32);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint StencilBackWriteMask
|
|
||||||
{
|
|
||||||
readonly get => (uint)((Internal.Id4 >> 0) & 0xFFFFFFFF);
|
|
||||||
set => Internal.Id4 = (Internal.Id4 & 0xFFFFFFFF00000000) | ((ulong)value << 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint StencilBackReference
|
|
||||||
{
|
|
||||||
readonly get => (uint)((Internal.Id4 >> 32) & 0xFFFFFFFF);
|
|
||||||
set => Internal.Id4 = (Internal.Id4 & 0xFFFFFFFF) | ((ulong)value << 32);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PolygonMode PolygonMode
|
|
||||||
{
|
|
||||||
readonly get => (PolygonMode)((Internal.Id5 >> 0) & 0x3FFFFFFF);
|
|
||||||
set => Internal.Id5 = (Internal.Id5 & 0xFFFFFFFFC0000000) | ((ulong)value << 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint StagesCount
|
|
||||||
{
|
|
||||||
readonly get => (byte)((Internal.Id5 >> 30) & 0xFF);
|
|
||||||
set => Internal.Id5 = (Internal.Id5 & 0xFFFFFFC03FFFFFFF) | ((ulong)value << 30);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint VertexAttributeDescriptionsCount
|
|
||||||
{
|
|
||||||
readonly get => (byte)((Internal.Id5 >> 38) & 0xFF);
|
|
||||||
set => Internal.Id5 = (Internal.Id5 & 0xFFFFC03FFFFFFFFF) | ((ulong)value << 38);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint VertexBindingDescriptionsCount
|
|
||||||
{
|
|
||||||
readonly get => (byte)((Internal.Id5 >> 46) & 0xFF);
|
|
||||||
set => Internal.Id5 = (Internal.Id5 & 0xFFC03FFFFFFFFFFF) | ((ulong)value << 46);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint ViewportsCount
|
|
||||||
{
|
|
||||||
readonly get => (byte)((Internal.Id5 >> 54) & 0xFF);
|
|
||||||
set => Internal.Id5 = (Internal.Id5 & 0xC03FFFFFFFFFFFFF) | ((ulong)value << 54);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint ScissorsCount
|
|
||||||
{
|
|
||||||
readonly get => (byte)((Internal.Id6 >> 0) & 0xFF);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFFFFFFF00) | ((ulong)value << 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint ColorBlendAttachmentStateCount
|
|
||||||
{
|
|
||||||
readonly get => (byte)((Internal.Id6 >> 8) & 0xFF);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFFFFF00FF) | ((ulong)value << 8);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PrimitiveTopology Topology
|
|
||||||
{
|
|
||||||
readonly get => (PrimitiveTopology)((Internal.Id6 >> 16) & 0xF);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFFFF0FFFF) | ((ulong)value << 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PrimitiveTopology TopologyClass;
|
|
||||||
|
|
||||||
public LogicOp LogicOp
|
|
||||||
{
|
|
||||||
readonly get => (LogicOp)((Internal.Id6 >> 20) & 0xF);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFFF0FFFFF) | ((ulong)value << 20);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompareOp DepthCompareOp
|
|
||||||
{
|
|
||||||
readonly get => (CompareOp)((Internal.Id6 >> 24) & 0x7);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFF8FFFFFF) | ((ulong)value << 24);
|
|
||||||
}
|
|
||||||
|
|
||||||
public StencilOp StencilFrontFailOp
|
|
||||||
{
|
|
||||||
readonly get => (StencilOp)((Internal.Id6 >> 27) & 0x7);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFC7FFFFFF) | ((ulong)value << 27);
|
|
||||||
}
|
|
||||||
|
|
||||||
public StencilOp StencilFrontPassOp
|
|
||||||
{
|
|
||||||
readonly get => (StencilOp)((Internal.Id6 >> 30) & 0x7);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFE3FFFFFFF) | ((ulong)value << 30);
|
|
||||||
}
|
|
||||||
|
|
||||||
public StencilOp StencilFrontDepthFailOp
|
|
||||||
{
|
|
||||||
readonly get => (StencilOp)((Internal.Id6 >> 33) & 0x7);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFF1FFFFFFFF) | ((ulong)value << 33);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompareOp StencilFrontCompareOp
|
|
||||||
{
|
|
||||||
readonly get => (CompareOp)((Internal.Id6 >> 36) & 0x7);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFFF8FFFFFFFFF) | ((ulong)value << 36);
|
|
||||||
}
|
|
||||||
|
|
||||||
public StencilOp StencilBackFailOp
|
|
||||||
{
|
|
||||||
readonly get => (StencilOp)((Internal.Id6 >> 39) & 0x7);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFFC7FFFFFFFFF) | ((ulong)value << 39);
|
|
||||||
}
|
|
||||||
|
|
||||||
public StencilOp StencilBackPassOp
|
|
||||||
{
|
|
||||||
readonly get => (StencilOp)((Internal.Id6 >> 42) & 0x7);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFFE3FFFFFFFFFF) | ((ulong)value << 42);
|
|
||||||
}
|
|
||||||
|
|
||||||
public StencilOp StencilBackDepthFailOp
|
|
||||||
{
|
|
||||||
readonly get => (StencilOp)((Internal.Id6 >> 45) & 0x7);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFFF1FFFFFFFFFFF) | ((ulong)value << 45);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompareOp StencilBackCompareOp
|
|
||||||
{
|
|
||||||
readonly get => (CompareOp)((Internal.Id6 >> 48) & 0x7);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFF8FFFFFFFFFFFF) | ((ulong)value << 48);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CullModeFlags CullMode
|
|
||||||
{
|
|
||||||
readonly get => (CullModeFlags)((Internal.Id6 >> 51) & 0x3);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFE7FFFFFFFFFFFF) | ((ulong)value << 51);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool PrimitiveRestartEnable
|
|
||||||
{
|
|
||||||
readonly get => ((Internal.Id6 >> 53) & 0x1) != 0UL;
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFDFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 53);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool DepthClampEnable
|
|
||||||
{
|
|
||||||
readonly get => ((Internal.Id6 >> 54) & 0x1) != 0UL;
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFFBFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 54);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool RasterizerDiscardEnable
|
|
||||||
{
|
|
||||||
readonly get => ((Internal.Id6 >> 55) & 0x1) != 0UL;
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFF7FFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 55);
|
|
||||||
}
|
|
||||||
|
|
||||||
public FrontFace FrontFace
|
|
||||||
{
|
|
||||||
readonly get => (FrontFace)((Internal.Id6 >> 56) & 0x1);
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFEFFFFFFFFFFFFFF) | ((ulong)value << 56);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool DepthBiasEnable
|
|
||||||
{
|
|
||||||
readonly get => ((Internal.Id6 >> 57) & 0x1) != 0UL;
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFDFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 57);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool DepthTestEnable
|
|
||||||
{
|
|
||||||
readonly get => ((Internal.Id6 >> 58) & 0x1) != 0UL;
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xFBFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 58);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool DepthWriteEnable
|
|
||||||
{
|
|
||||||
readonly get => ((Internal.Id6 >> 59) & 0x1) != 0UL;
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xF7FFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 59);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool DepthBoundsTestEnable
|
|
||||||
{
|
|
||||||
readonly get => ((Internal.Id6 >> 60) & 0x1) != 0UL;
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xEFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 60);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool StencilTestEnable
|
|
||||||
{
|
|
||||||
readonly get => ((Internal.Id6 >> 61) & 0x1) != 0UL;
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xDFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 61);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool LogicOpEnable
|
|
||||||
{
|
|
||||||
readonly get => ((Internal.Id6 >> 62) & 0x1) != 0UL;
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0xBFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 62);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool HasDepthStencil
|
|
||||||
{
|
|
||||||
readonly get => ((Internal.Id6 >> 63) & 0x1) != 0UL;
|
|
||||||
set => Internal.Id6 = (Internal.Id6 & 0x7FFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 63);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint PatchControlPoints
|
|
||||||
{
|
|
||||||
readonly get => (uint)((Internal.Id7 >> 0) & 0xFFFFFFFF);
|
|
||||||
set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFFF00000000) | ((ulong)value << 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint SamplesCount
|
|
||||||
{
|
|
||||||
readonly get => (uint)((Internal.Id7 >> 32) & 0xFFFFFFFF);
|
|
||||||
set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFFF) | ((ulong)value << 32);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool AlphaToCoverageEnable
|
public bool AlphaToCoverageEnable
|
||||||
{
|
{
|
||||||
readonly get => ((Internal.Id8 >> 0) & 0x1) != 0UL;
|
readonly get => ((Internal.Id3 >> 0) & 0x1) != 0UL;
|
||||||
set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFFE) | ((value ? 1UL : 0UL) << 0);
|
set => Internal.Id3 = (Internal.Id3 & 0xFFFFFFFFFFFFFFFE) | ((value ? 1UL : 0UL) << 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AlphaToOneEnable
|
public bool AlphaToOneEnable
|
||||||
{
|
{
|
||||||
readonly get => ((Internal.Id8 >> 1) & 0x1) != 0UL;
|
readonly get => ((Internal.Id3 >> 1) & 0x1) != 0UL;
|
||||||
set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFFD) | ((value ? 1UL : 0UL) << 1);
|
set => Internal.Id3 = (Internal.Id3 & 0xFFFFFFFFFFFFFFFD) | ((value ? 1UL : 0UL) << 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AdvancedBlendSrcPreMultiplied
|
public bool AdvancedBlendSrcPreMultiplied
|
||||||
{
|
{
|
||||||
readonly get => ((Internal.Id8 >> 2) & 0x1) != 0UL;
|
readonly get => ((Internal.Id3 >> 2) & 0x1) != 0UL;
|
||||||
set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFFB) | ((value ? 1UL : 0UL) << 2);
|
set => Internal.Id3 = (Internal.Id3 & 0xFFFFFFFFFFFFFFFB) | ((value ? 1UL : 0UL) << 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AdvancedBlendDstPreMultiplied
|
public bool AdvancedBlendDstPreMultiplied
|
||||||
{
|
{
|
||||||
readonly get => ((Internal.Id8 >> 3) & 0x1) != 0UL;
|
readonly get => ((Internal.Id3 >> 3) & 0x1) != 0UL;
|
||||||
set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFF7) | ((value ? 1UL : 0UL) << 3);
|
set => Internal.Id3 = (Internal.Id3 & 0xFFFFFFFFFFFFFFF7) | ((value ? 1UL : 0UL) << 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlendOverlapEXT AdvancedBlendOverlap
|
public BlendOverlapEXT AdvancedBlendOverlap
|
||||||
{
|
{
|
||||||
readonly get => (BlendOverlapEXT)((Internal.Id8 >> 4) & 0x3);
|
readonly get => (BlendOverlapEXT)((Internal.Id3 >> 4) & 0x3);
|
||||||
set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFCF) | ((ulong)value << 4);
|
set => Internal.Id3 = (Internal.Id3 & 0xFFFFFFFFFFFFFFCF) | ((ulong)value << 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DepthMode
|
public bool DepthMode
|
||||||
{
|
{
|
||||||
readonly get => ((Internal.Id8 >> 6) & 0x1) != 0UL;
|
readonly get => ((Internal.Id3 >> 6) & 0x1) != 0UL;
|
||||||
set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFBF) | ((value ? 1UL : 0UL) << 6);
|
set => Internal.Id3 = (Internal.Id3 & 0xFFFFFFFFFFFFFFBF) | ((value ? 1UL : 0UL) << 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PrimitiveTopology TopologyClass
|
||||||
|
{
|
||||||
|
readonly get => (PrimitiveTopology)((Internal.Id3 >> 7) & 0xF);
|
||||||
|
set => Internal.Id3 = (Internal.Id3 & 0xFFFFFFFFFFFFFF8F) | ((ulong)value << 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasTessellationControlShader;
|
public bool HasTessellationControlShader;
|
||||||
|
@ -317,7 +261,6 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
AdvancedBlendDstPreMultiplied = true;
|
AdvancedBlendDstPreMultiplied = true;
|
||||||
AdvancedBlendOverlap = BlendOverlapEXT.UncorrelatedExt;
|
AdvancedBlendOverlap = BlendOverlapEXT.UncorrelatedExt;
|
||||||
|
|
||||||
LineWidth = 1f;
|
|
||||||
SamplesCount = 1;
|
SamplesCount = 1;
|
||||||
DepthMode = true;
|
DepthMode = true;
|
||||||
}
|
}
|
||||||
|
@ -337,7 +280,6 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
{
|
{
|
||||||
SType = StructureType.ComputePipelineCreateInfo,
|
SType = StructureType.ComputePipelineCreateInfo,
|
||||||
Stage = Stages[0],
|
Stage = Stages[0],
|
||||||
BasePipelineIndex = -1,
|
|
||||||
Layout = PipelineLayout,
|
Layout = PipelineLayout,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -11,20 +11,14 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
{
|
{
|
||||||
public ulong Id0;
|
public ulong Id0;
|
||||||
public ulong Id1;
|
public ulong Id1;
|
||||||
|
|
||||||
public ulong Id2;
|
public ulong Id2;
|
||||||
public ulong Id3;
|
public ulong Id3;
|
||||||
|
|
||||||
public ulong Id4;
|
private readonly uint VertexAttributeDescriptionsCount => (byte)((Id0 >> 38) & 0xFF);
|
||||||
public ulong Id5;
|
private readonly uint VertexBindingDescriptionsCount => (byte)((Id0 >> 46) & 0xFF);
|
||||||
public ulong Id6;
|
private readonly uint ColorBlendAttachmentStateCount => (byte)((Id1 >> 8) & 0xFF);
|
||||||
|
private readonly bool HasDepthStencil => ((Id1 >> 63) & 0x1) != 0UL;
|
||||||
public ulong Id7;
|
|
||||||
public ulong Id8;
|
|
||||||
|
|
||||||
private readonly uint VertexAttributeDescriptionsCount => (byte)((Id5 >> 38) & 0xFF);
|
|
||||||
private readonly uint VertexBindingDescriptionsCount => (byte)((Id5 >> 46) & 0xFF);
|
|
||||||
private readonly uint ColorBlendAttachmentStateCount => (byte)((Id6 >> 8) & 0xFF);
|
|
||||||
private readonly bool HasDepthStencil => ((Id6 >> 63) & 0x1) != 0UL;
|
|
||||||
|
|
||||||
public Array32<VertexInputAttributeDescription> VertexAttributeDescriptions;
|
public Array32<VertexInputAttributeDescription> VertexAttributeDescriptions;
|
||||||
public Array33<VertexInputBindingDescription> VertexBindingDescriptions;
|
public Array33<VertexInputBindingDescription> VertexBindingDescriptions;
|
||||||
|
@ -40,9 +34,7 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
|
|
||||||
public bool Equals(ref PipelineUid other)
|
public bool Equals(ref PipelineUid other)
|
||||||
{
|
{
|
||||||
if (!Unsafe.As<ulong, Vector256<byte>>(ref Id0).Equals(Unsafe.As<ulong, Vector256<byte>>(ref other.Id0)) ||
|
if (!Unsafe.As<ulong, Vector128<byte>>(ref Id2).Equals(Unsafe.As<ulong, Vector128<byte>>(ref other.Id2)))
|
||||||
!Unsafe.As<ulong, Vector256<byte>>(ref Id4).Equals(Unsafe.As<ulong, Vector256<byte>>(ref other.Id4)) ||
|
|
||||||
!Unsafe.As<ulong, Vector128<byte>>(ref Id7).Equals(Unsafe.As<ulong, Vector128<byte>>(ref other.Id7)))
|
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -80,12 +72,7 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
ulong hash64 = Id0 * 23 ^
|
ulong hash64 = Id0 * 23 ^
|
||||||
Id1 * 23 ^
|
Id1 * 23 ^
|
||||||
Id2 * 23 ^
|
Id2 * 23 ^
|
||||||
Id3 * 23 ^
|
Id3 * 23;
|
||||||
Id4 * 23 ^
|
|
||||||
Id5 * 23 ^
|
|
||||||
Id6 * 23 ^
|
|
||||||
Id7 * 23 ^
|
|
||||||
Id8 * 23;
|
|
||||||
|
|
||||||
for (int i = 0; i < (int)VertexAttributeDescriptionsCount; i++)
|
for (int i = 0; i < (int)VertexAttributeDescriptionsCount; i++)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue