mirror of
https://git.suyu.dev/suyu/suyu
synced 2024-10-31 04:17:52 +00:00
Maxwell3D: Use override constants from nouveau
This fixes some incorrect rendering in Sunshine
This commit is contained in:
parent
56c646d82c
commit
37aa472269
2 changed files with 37 additions and 2 deletions
|
@ -370,8 +370,29 @@ void Maxwell3D::CallMethodFromMME(u32 method, u32 method_argument) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Maxwell3D::ProcessTopologyOverride() {
|
void Maxwell3D::ProcessTopologyOverride() {
|
||||||
|
using PrimitiveTopology = Maxwell3D::Regs::PrimitiveTopology;
|
||||||
|
using PrimitiveTopologyOverride = Maxwell3D::Regs::PrimitiveTopologyOverride;
|
||||||
|
|
||||||
|
PrimitiveTopology topology{};
|
||||||
|
|
||||||
|
switch (regs.topology_override) {
|
||||||
|
case PrimitiveTopologyOverride::None:
|
||||||
|
case PrimitiveTopologyOverride::Points:
|
||||||
|
topology = PrimitiveTopology::Points;
|
||||||
|
break;
|
||||||
|
case PrimitiveTopologyOverride::Lines:
|
||||||
|
topology = PrimitiveTopology::Lines;
|
||||||
|
break;
|
||||||
|
case PrimitiveTopologyOverride::LineStrip:
|
||||||
|
topology = PrimitiveTopology::LineStrip;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
topology = static_cast<PrimitiveTopology>(regs.topology_override);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (use_topology_override) {
|
if (use_topology_override) {
|
||||||
regs.draw.topology.Assign(regs.topology_override);
|
regs.draw.topology.Assign(topology);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -367,6 +367,20 @@ public:
|
||||||
Patches = 0xe,
|
Patches = 0xe,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class PrimitiveTopologyOverride : u32 {
|
||||||
|
None = 0x0,
|
||||||
|
Points = 0x1,
|
||||||
|
Lines = 0x2,
|
||||||
|
LineStrip = 0x3,
|
||||||
|
Triangles = 0x4,
|
||||||
|
TriangleStrip = 0x5,
|
||||||
|
LinesAdjacency = 0xa,
|
||||||
|
LineStripAdjacency = 0xb,
|
||||||
|
TrianglesAdjacency = 0xc,
|
||||||
|
TriangleStripAdjacency = 0xd,
|
||||||
|
Patches = 0xe,
|
||||||
|
};
|
||||||
|
|
||||||
enum class IndexFormat : u32 {
|
enum class IndexFormat : u32 {
|
||||||
UnsignedByte = 0x0,
|
UnsignedByte = 0x0,
|
||||||
UnsignedShort = 0x1,
|
UnsignedShort = 0x1,
|
||||||
|
@ -1251,7 +1265,7 @@ public:
|
||||||
|
|
||||||
INSERT_PADDING_WORDS_NOINIT(0xC);
|
INSERT_PADDING_WORDS_NOINIT(0xC);
|
||||||
|
|
||||||
PrimitiveTopology topology_override;
|
PrimitiveTopologyOverride topology_override;
|
||||||
|
|
||||||
INSERT_PADDING_WORDS_NOINIT(0x12);
|
INSERT_PADDING_WORDS_NOINIT(0x12);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue