From 37aa472269df2e66af151c36822d0d248bec1a40 Mon Sep 17 00:00:00 2001 From: Liam Date: Mon, 14 Mar 2022 10:11:28 -0400 Subject: Maxwell3D: Use override constants from nouveau This fixes some incorrect rendering in Sunshine --- src/video_core/engines/maxwell_3d.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src/video_core/engines/maxwell_3d.cpp') diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 92baba4e8..aa88984d4 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp @@ -370,8 +370,29 @@ void Maxwell3D::CallMethodFromMME(u32 method, u32 method_argument) { } 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(regs.topology_override); + break; + } + if (use_topology_override) { - regs.draw.topology.Assign(regs.topology_override); + regs.draw.topology.Assign(topology); } } -- cgit v1.2.3