|
@@ -71,244 +71,232 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
set => Internal.Id4 = (Internal.Id4 & 0xFFFFFFFF) | ((ulong)value << 32);
|
|
set => Internal.Id4 = (Internal.Id4 & 0xFFFFFFFF) | ((ulong)value << 32);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public float MinDepthBounds
|
|
|
|
|
- {
|
|
|
|
|
- readonly get => BitConverter.Int32BitsToSingle((int)((Internal.Id5 >> 0) & 0xFFFFFFFF));
|
|
|
|
|
- set => Internal.Id5 = (Internal.Id5 & 0xFFFFFFFF00000000) | ((ulong)(uint)BitConverter.SingleToInt32Bits(value) << 0);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- public float MaxDepthBounds
|
|
|
|
|
- {
|
|
|
|
|
- readonly get => BitConverter.Int32BitsToSingle((int)((Internal.Id5 >> 32) & 0xFFFFFFFF));
|
|
|
|
|
- set => Internal.Id5 = (Internal.Id5 & 0xFFFFFFFF) | ((ulong)(uint)BitConverter.SingleToInt32Bits(value) << 32);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
public PolygonMode PolygonMode
|
|
public PolygonMode PolygonMode
|
|
|
{
|
|
{
|
|
|
- readonly get => (PolygonMode)((Internal.Id6 >> 0) & 0x3FFFFFFF);
|
|
|
|
|
- set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFC0000000) | ((ulong)value << 0);
|
|
|
|
|
|
|
+ readonly get => (PolygonMode)((Internal.Id5 >> 0) & 0x3FFFFFFF);
|
|
|
|
|
+ set => Internal.Id5 = (Internal.Id5 & 0xFFFFFFFFC0000000) | ((ulong)value << 0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public uint StagesCount
|
|
public uint StagesCount
|
|
|
{
|
|
{
|
|
|
- readonly get => (byte)((Internal.Id6 >> 30) & 0xFF);
|
|
|
|
|
- set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFC03FFFFFFF) | ((ulong)value << 30);
|
|
|
|
|
|
|
+ readonly get => (byte)((Internal.Id5 >> 30) & 0xFF);
|
|
|
|
|
+ set => Internal.Id5 = (Internal.Id5 & 0xFFFFFFC03FFFFFFF) | ((ulong)value << 30);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public uint VertexAttributeDescriptionsCount
|
|
public uint VertexAttributeDescriptionsCount
|
|
|
{
|
|
{
|
|
|
- readonly get => (byte)((Internal.Id6 >> 38) & 0xFF);
|
|
|
|
|
- set => Internal.Id6 = (Internal.Id6 & 0xFFFFC03FFFFFFFFF) | ((ulong)value << 38);
|
|
|
|
|
|
|
+ readonly get => (byte)((Internal.Id5 >> 38) & 0xFF);
|
|
|
|
|
+ set => Internal.Id5 = (Internal.Id5 & 0xFFFFC03FFFFFFFFF) | ((ulong)value << 38);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public uint VertexBindingDescriptionsCount
|
|
public uint VertexBindingDescriptionsCount
|
|
|
{
|
|
{
|
|
|
- readonly get => (byte)((Internal.Id6 >> 46) & 0xFF);
|
|
|
|
|
- set => Internal.Id6 = (Internal.Id6 & 0xFFC03FFFFFFFFFFF) | ((ulong)value << 46);
|
|
|
|
|
|
|
+ readonly get => (byte)((Internal.Id5 >> 46) & 0xFF);
|
|
|
|
|
+ set => Internal.Id5 = (Internal.Id5 & 0xFFC03FFFFFFFFFFF) | ((ulong)value << 46);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public uint ViewportsCount
|
|
public uint ViewportsCount
|
|
|
{
|
|
{
|
|
|
- readonly get => (byte)((Internal.Id6 >> 54) & 0xFF);
|
|
|
|
|
- set => Internal.Id6 = (Internal.Id6 & 0xC03FFFFFFFFFFFFF) | ((ulong)value << 54);
|
|
|
|
|
|
|
+ readonly get => (byte)((Internal.Id5 >> 54) & 0xFF);
|
|
|
|
|
+ set => Internal.Id5 = (Internal.Id5 & 0xC03FFFFFFFFFFFFF) | ((ulong)value << 54);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public uint ScissorsCount
|
|
public uint ScissorsCount
|
|
|
{
|
|
{
|
|
|
- readonly get => (byte)((Internal.Id7 >> 0) & 0xFF);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFFFFFFFFF00) | ((ulong)value << 0);
|
|
|
|
|
|
|
+ readonly get => (byte)((Internal.Id6 >> 0) & 0xFF);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFFFFFFF00) | ((ulong)value << 0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public uint ColorBlendAttachmentStateCount
|
|
public uint ColorBlendAttachmentStateCount
|
|
|
{
|
|
{
|
|
|
- readonly get => (byte)((Internal.Id7 >> 8) & 0xFF);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFFFFFFF00FF) | ((ulong)value << 8);
|
|
|
|
|
|
|
+ readonly get => (byte)((Internal.Id6 >> 8) & 0xFF);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFFFFF00FF) | ((ulong)value << 8);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public PrimitiveTopology Topology
|
|
public PrimitiveTopology Topology
|
|
|
{
|
|
{
|
|
|
- readonly get => (PrimitiveTopology)((Internal.Id7 >> 16) & 0xF);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFFFFFF0FFFF) | ((ulong)value << 16);
|
|
|
|
|
|
|
+ readonly get => (PrimitiveTopology)((Internal.Id6 >> 16) & 0xF);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFFFF0FFFF) | ((ulong)value << 16);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public LogicOp LogicOp
|
|
public LogicOp LogicOp
|
|
|
{
|
|
{
|
|
|
- readonly get => (LogicOp)((Internal.Id7 >> 20) & 0xF);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFFFFF0FFFFF) | ((ulong)value << 20);
|
|
|
|
|
|
|
+ readonly get => (LogicOp)((Internal.Id6 >> 20) & 0xF);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFFF0FFFFF) | ((ulong)value << 20);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public CompareOp DepthCompareOp
|
|
public CompareOp DepthCompareOp
|
|
|
{
|
|
{
|
|
|
- readonly get => (CompareOp)((Internal.Id7 >> 24) & 0x7);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFFFF8FFFFFF) | ((ulong)value << 24);
|
|
|
|
|
|
|
+ readonly get => (CompareOp)((Internal.Id6 >> 24) & 0x7);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFF8FFFFFF) | ((ulong)value << 24);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public StencilOp StencilFrontFailOp
|
|
public StencilOp StencilFrontFailOp
|
|
|
{
|
|
{
|
|
|
- readonly get => (StencilOp)((Internal.Id7 >> 27) & 0x7);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFFFC7FFFFFF) | ((ulong)value << 27);
|
|
|
|
|
|
|
+ readonly get => (StencilOp)((Internal.Id6 >> 27) & 0x7);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFFC7FFFFFF) | ((ulong)value << 27);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public StencilOp StencilFrontPassOp
|
|
public StencilOp StencilFrontPassOp
|
|
|
{
|
|
{
|
|
|
- readonly get => (StencilOp)((Internal.Id7 >> 30) & 0x7);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFFE3FFFFFFF) | ((ulong)value << 30);
|
|
|
|
|
|
|
+ readonly get => (StencilOp)((Internal.Id6 >> 30) & 0x7);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFFE3FFFFFFF) | ((ulong)value << 30);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public StencilOp StencilFrontDepthFailOp
|
|
public StencilOp StencilFrontDepthFailOp
|
|
|
{
|
|
{
|
|
|
- readonly get => (StencilOp)((Internal.Id7 >> 33) & 0x7);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFF1FFFFFFFF) | ((ulong)value << 33);
|
|
|
|
|
|
|
+ readonly get => (StencilOp)((Internal.Id6 >> 33) & 0x7);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFFFF1FFFFFFFF) | ((ulong)value << 33);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public CompareOp StencilFrontCompareOp
|
|
public CompareOp StencilFrontCompareOp
|
|
|
{
|
|
{
|
|
|
- readonly get => (CompareOp)((Internal.Id7 >> 36) & 0x7);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFFF8FFFFFFFFF) | ((ulong)value << 36);
|
|
|
|
|
|
|
+ readonly get => (CompareOp)((Internal.Id6 >> 36) & 0x7);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFFF8FFFFFFFFF) | ((ulong)value << 36);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public StencilOp StencilBackFailOp
|
|
public StencilOp StencilBackFailOp
|
|
|
{
|
|
{
|
|
|
- readonly get => (StencilOp)((Internal.Id7 >> 39) & 0x7);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFFC7FFFFFFFFF) | ((ulong)value << 39);
|
|
|
|
|
|
|
+ readonly get => (StencilOp)((Internal.Id6 >> 39) & 0x7);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFFC7FFFFFFFFF) | ((ulong)value << 39);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public StencilOp StencilBackPassOp
|
|
public StencilOp StencilBackPassOp
|
|
|
{
|
|
{
|
|
|
- readonly get => (StencilOp)((Internal.Id7 >> 42) & 0x7);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFFE3FFFFFFFFFF) | ((ulong)value << 42);
|
|
|
|
|
|
|
+ readonly get => (StencilOp)((Internal.Id6 >> 42) & 0x7);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFFE3FFFFFFFFFF) | ((ulong)value << 42);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public StencilOp StencilBackDepthFailOp
|
|
public StencilOp StencilBackDepthFailOp
|
|
|
{
|
|
{
|
|
|
- readonly get => (StencilOp)((Internal.Id7 >> 45) & 0x7);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFFF1FFFFFFFFFFF) | ((ulong)value << 45);
|
|
|
|
|
|
|
+ readonly get => (StencilOp)((Internal.Id6 >> 45) & 0x7);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFFF1FFFFFFFFFFF) | ((ulong)value << 45);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public CompareOp StencilBackCompareOp
|
|
public CompareOp StencilBackCompareOp
|
|
|
{
|
|
{
|
|
|
- readonly get => (CompareOp)((Internal.Id7 >> 48) & 0x7);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFF8FFFFFFFFFFFF) | ((ulong)value << 48);
|
|
|
|
|
|
|
+ readonly get => (CompareOp)((Internal.Id6 >> 48) & 0x7);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFF8FFFFFFFFFFFF) | ((ulong)value << 48);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public CullModeFlags CullMode
|
|
public CullModeFlags CullMode
|
|
|
{
|
|
{
|
|
|
- readonly get => (CullModeFlags)((Internal.Id7 >> 51) & 0x3);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFE7FFFFFFFFFFFF) | ((ulong)value << 51);
|
|
|
|
|
|
|
+ readonly get => (CullModeFlags)((Internal.Id6 >> 51) & 0x3);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFE7FFFFFFFFFFFF) | ((ulong)value << 51);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool PrimitiveRestartEnable
|
|
public bool PrimitiveRestartEnable
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id7 >> 53) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFDFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 53);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id6 >> 53) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFDFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 53);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool DepthClampEnable
|
|
public bool DepthClampEnable
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id7 >> 54) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFFBFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 54);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id6 >> 54) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFFBFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 54);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool RasterizerDiscardEnable
|
|
public bool RasterizerDiscardEnable
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id7 >> 55) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFF7FFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 55);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id6 >> 55) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFF7FFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 55);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public FrontFace FrontFace
|
|
public FrontFace FrontFace
|
|
|
{
|
|
{
|
|
|
- readonly get => (FrontFace)((Internal.Id7 >> 56) & 0x1);
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFEFFFFFFFFFFFFFF) | ((ulong)value << 56);
|
|
|
|
|
|
|
+ readonly get => (FrontFace)((Internal.Id6 >> 56) & 0x1);
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFEFFFFFFFFFFFFFF) | ((ulong)value << 56);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool DepthBiasEnable
|
|
public bool DepthBiasEnable
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id7 >> 57) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFDFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 57);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id6 >> 57) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFDFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 57);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool DepthTestEnable
|
|
public bool DepthTestEnable
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id7 >> 58) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xFBFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 58);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id6 >> 58) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xFBFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 58);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool DepthWriteEnable
|
|
public bool DepthWriteEnable
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id7 >> 59) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xF7FFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 59);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id6 >> 59) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xF7FFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 59);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool DepthBoundsTestEnable
|
|
public bool DepthBoundsTestEnable
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id7 >> 60) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xEFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 60);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id6 >> 60) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xEFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 60);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool StencilTestEnable
|
|
public bool StencilTestEnable
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id7 >> 61) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xDFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 61);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id6 >> 61) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xDFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 61);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool LogicOpEnable
|
|
public bool LogicOpEnable
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id7 >> 62) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0xBFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 62);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id6 >> 62) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0xBFFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 62);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool HasDepthStencil
|
|
public bool HasDepthStencil
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id7 >> 63) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id7 = (Internal.Id7 & 0x7FFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 63);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id6 >> 63) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id6 = (Internal.Id6 & 0x7FFFFFFFFFFFFFFF) | ((value ? 1UL : 0UL) << 63);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public uint PatchControlPoints
|
|
public uint PatchControlPoints
|
|
|
{
|
|
{
|
|
|
- readonly get => (uint)((Internal.Id8 >> 0) & 0xFFFFFFFF);
|
|
|
|
|
- set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFF00000000) | ((ulong)value << 0);
|
|
|
|
|
|
|
+ readonly get => (uint)((Internal.Id7 >> 0) & 0xFFFFFFFF);
|
|
|
|
|
+ set => Internal.Id7 = (Internal.Id7 & 0xFFFFFFFF00000000) | ((ulong)value << 0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public uint SamplesCount
|
|
public uint SamplesCount
|
|
|
{
|
|
{
|
|
|
- readonly get => (uint)((Internal.Id8 >> 32) & 0xFFFFFFFF);
|
|
|
|
|
- set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFF) | ((ulong)value << 32);
|
|
|
|
|
|
|
+ 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.Id9 >> 0) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id9 = (Internal.Id9 & 0xFFFFFFFFFFFFFFFE) | ((value ? 1UL : 0UL) << 0);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id8 >> 0) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFFE) | ((value ? 1UL : 0UL) << 0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool AlphaToOneEnable
|
|
public bool AlphaToOneEnable
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id9 >> 1) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id9 = (Internal.Id9 & 0xFFFFFFFFFFFFFFFD) | ((value ? 1UL : 0UL) << 1);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id8 >> 1) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFFD) | ((value ? 1UL : 0UL) << 1);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool AdvancedBlendSrcPreMultiplied
|
|
public bool AdvancedBlendSrcPreMultiplied
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id9 >> 2) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id9 = (Internal.Id9 & 0xFFFFFFFFFFFFFFFB) | ((value ? 1UL : 0UL) << 2);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id8 >> 2) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFFB) | ((value ? 1UL : 0UL) << 2);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool AdvancedBlendDstPreMultiplied
|
|
public bool AdvancedBlendDstPreMultiplied
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id9 >> 3) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id9 = (Internal.Id9 & 0xFFFFFFFFFFFFFFF7) | ((value ? 1UL : 0UL) << 3);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id8 >> 3) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFF7) | ((value ? 1UL : 0UL) << 3);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public BlendOverlapEXT AdvancedBlendOverlap
|
|
public BlendOverlapEXT AdvancedBlendOverlap
|
|
|
{
|
|
{
|
|
|
- readonly get => (BlendOverlapEXT)((Internal.Id9 >> 4) & 0x3);
|
|
|
|
|
- set => Internal.Id9 = (Internal.Id9 & 0xFFFFFFFFFFFFFFCF) | ((ulong)value << 4);
|
|
|
|
|
|
|
+ readonly get => (BlendOverlapEXT)((Internal.Id8 >> 4) & 0x3);
|
|
|
|
|
+ set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFCF) | ((ulong)value << 4);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool DepthMode
|
|
public bool DepthMode
|
|
|
{
|
|
{
|
|
|
- readonly get => ((Internal.Id9 >> 6) & 0x1) != 0UL;
|
|
|
|
|
- set => Internal.Id9 = (Internal.Id9 & 0xFFFFFFFFFFFFFFBF) | ((value ? 1UL : 0UL) << 6);
|
|
|
|
|
|
|
+ readonly get => ((Internal.Id8 >> 6) & 0x1) != 0UL;
|
|
|
|
|
+ set => Internal.Id8 = (Internal.Id8 & 0xFFFFFFFFFFFFFFBF) | ((value ? 1UL : 0UL) << 6);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool HasTessellationControlShader;
|
|
public bool HasTessellationControlShader;
|
|
@@ -408,8 +396,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
fixed (VertexInputAttributeDescription* pVertexAttributeDescriptions = &Internal.VertexAttributeDescriptions[0])
|
|
fixed (VertexInputAttributeDescription* pVertexAttributeDescriptions = &Internal.VertexAttributeDescriptions[0])
|
|
|
fixed (VertexInputAttributeDescription* pVertexAttributeDescriptions2 = &_vertexAttributeDescriptions2[0])
|
|
fixed (VertexInputAttributeDescription* pVertexAttributeDescriptions2 = &_vertexAttributeDescriptions2[0])
|
|
|
fixed (VertexInputBindingDescription* pVertexBindingDescriptions = &Internal.VertexBindingDescriptions[0])
|
|
fixed (VertexInputBindingDescription* pVertexBindingDescriptions = &Internal.VertexBindingDescriptions[0])
|
|
|
- fixed (Viewport* pViewports = &Internal.Viewports[0])
|
|
|
|
|
- fixed (Rect2D* pScissors = &Internal.Scissors[0])
|
|
|
|
|
fixed (PipelineColorBlendAttachmentState* pColorBlendAttachmentState = &Internal.ColorBlendAttachmentState[0])
|
|
fixed (PipelineColorBlendAttachmentState* pColorBlendAttachmentState = &Internal.ColorBlendAttachmentState[0])
|
|
|
{
|
|
{
|
|
|
var vertexInputState = new PipelineVertexInputStateCreateInfo
|
|
var vertexInputState = new PipelineVertexInputStateCreateInfo
|
|
@@ -472,18 +458,13 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
CullMode = CullMode,
|
|
CullMode = CullMode,
|
|
|
FrontFace = FrontFace,
|
|
FrontFace = FrontFace,
|
|
|
DepthBiasEnable = DepthBiasEnable,
|
|
DepthBiasEnable = DepthBiasEnable,
|
|
|
- DepthBiasClamp = DepthBiasClamp,
|
|
|
|
|
- DepthBiasConstantFactor = DepthBiasConstantFactor,
|
|
|
|
|
- DepthBiasSlopeFactor = DepthBiasSlopeFactor,
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
var viewportState = new PipelineViewportStateCreateInfo
|
|
var viewportState = new PipelineViewportStateCreateInfo
|
|
|
{
|
|
{
|
|
|
SType = StructureType.PipelineViewportStateCreateInfo,
|
|
SType = StructureType.PipelineViewportStateCreateInfo,
|
|
|
ViewportCount = ViewportsCount,
|
|
ViewportCount = ViewportsCount,
|
|
|
- PViewports = pViewports,
|
|
|
|
|
ScissorCount = ScissorsCount,
|
|
ScissorCount = ScissorsCount,
|
|
|
- PScissors = pScissors,
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
if (gd.Capabilities.SupportsDepthClipControl)
|
|
if (gd.Capabilities.SupportsDepthClipControl)
|
|
@@ -511,19 +492,13 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
StencilFrontFailOp,
|
|
StencilFrontFailOp,
|
|
|
StencilFrontPassOp,
|
|
StencilFrontPassOp,
|
|
|
StencilFrontDepthFailOp,
|
|
StencilFrontDepthFailOp,
|
|
|
- StencilFrontCompareOp,
|
|
|
|
|
- StencilFrontCompareMask,
|
|
|
|
|
- StencilFrontWriteMask,
|
|
|
|
|
- StencilFrontReference);
|
|
|
|
|
|
|
+ StencilFrontCompareOp);
|
|
|
|
|
|
|
|
var stencilBack = new StencilOpState(
|
|
var stencilBack = new StencilOpState(
|
|
|
StencilBackFailOp,
|
|
StencilBackFailOp,
|
|
|
StencilBackPassOp,
|
|
StencilBackPassOp,
|
|
|
StencilBackDepthFailOp,
|
|
StencilBackDepthFailOp,
|
|
|
- StencilBackCompareOp,
|
|
|
|
|
- StencilBackCompareMask,
|
|
|
|
|
- StencilBackWriteMask,
|
|
|
|
|
- StencilBackReference);
|
|
|
|
|
|
|
+ StencilBackCompareOp);
|
|
|
|
|
|
|
|
var depthStencilState = new PipelineDepthStencilStateCreateInfo
|
|
var depthStencilState = new PipelineDepthStencilStateCreateInfo
|
|
|
{
|
|
{
|
|
@@ -531,12 +506,10 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
DepthTestEnable = DepthTestEnable,
|
|
DepthTestEnable = DepthTestEnable,
|
|
|
DepthWriteEnable = DepthWriteEnable,
|
|
DepthWriteEnable = DepthWriteEnable,
|
|
|
DepthCompareOp = DepthCompareOp,
|
|
DepthCompareOp = DepthCompareOp,
|
|
|
- DepthBoundsTestEnable = DepthBoundsTestEnable,
|
|
|
|
|
|
|
+ DepthBoundsTestEnable = false,
|
|
|
StencilTestEnable = StencilTestEnable,
|
|
StencilTestEnable = StencilTestEnable,
|
|
|
Front = stencilFront,
|
|
Front = stencilFront,
|
|
|
Back = stencilBack,
|
|
Back = stencilBack,
|
|
|
- MinDepthBounds = MinDepthBounds,
|
|
|
|
|
- MaxDepthBounds = MaxDepthBounds,
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
uint blendEnables = 0;
|
|
uint blendEnables = 0;
|
|
@@ -591,22 +564,21 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bool supportsExtDynamicState = gd.Capabilities.SupportsExtendedDynamicState;
|
|
bool supportsExtDynamicState = gd.Capabilities.SupportsExtendedDynamicState;
|
|
|
- int dynamicStatesCount = supportsExtDynamicState ? 9 : 8;
|
|
|
|
|
|
|
+ int dynamicStatesCount = supportsExtDynamicState ? 8 : 7;
|
|
|
|
|
|
|
|
DynamicState* dynamicStates = stackalloc DynamicState[dynamicStatesCount];
|
|
DynamicState* dynamicStates = stackalloc DynamicState[dynamicStatesCount];
|
|
|
|
|
|
|
|
dynamicStates[0] = DynamicState.Viewport;
|
|
dynamicStates[0] = DynamicState.Viewport;
|
|
|
dynamicStates[1] = DynamicState.Scissor;
|
|
dynamicStates[1] = DynamicState.Scissor;
|
|
|
dynamicStates[2] = DynamicState.DepthBias;
|
|
dynamicStates[2] = DynamicState.DepthBias;
|
|
|
- dynamicStates[3] = DynamicState.DepthBounds;
|
|
|
|
|
- dynamicStates[4] = DynamicState.StencilCompareMask;
|
|
|
|
|
- dynamicStates[5] = DynamicState.StencilWriteMask;
|
|
|
|
|
- dynamicStates[6] = DynamicState.StencilReference;
|
|
|
|
|
- dynamicStates[7] = DynamicState.BlendConstants;
|
|
|
|
|
|
|
+ dynamicStates[3] = DynamicState.StencilCompareMask;
|
|
|
|
|
+ dynamicStates[4] = DynamicState.StencilWriteMask;
|
|
|
|
|
+ dynamicStates[5] = DynamicState.StencilReference;
|
|
|
|
|
+ dynamicStates[6] = DynamicState.BlendConstants;
|
|
|
|
|
|
|
|
if (supportsExtDynamicState)
|
|
if (supportsExtDynamicState)
|
|
|
{
|
|
{
|
|
|
- dynamicStates[8] = DynamicState.VertexInputBindingStrideExt;
|
|
|
|
|
|
|
+ dynamicStates[7] = DynamicState.VertexInputBindingStrideExt;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
var pipelineDynamicStateCreateInfo = new PipelineDynamicStateCreateInfo
|
|
var pipelineDynamicStateCreateInfo = new PipelineDynamicStateCreateInfo
|
|
@@ -632,7 +604,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
PDynamicState = &pipelineDynamicStateCreateInfo,
|
|
PDynamicState = &pipelineDynamicStateCreateInfo,
|
|
|
Layout = PipelineLayout,
|
|
Layout = PipelineLayout,
|
|
|
RenderPass = renderPass,
|
|
RenderPass = renderPass,
|
|
|
- BasePipelineIndex = -1,
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
Result result = gd.Api.CreateGraphicsPipelines(device, cache, 1, &pipelineCreateInfo, null, &pipelineHandle);
|
|
Result result = gd.Api.CreateGraphicsPipelines(device, cache, 1, &pipelineCreateInfo, null, &pipelineHandle);
|