From 14205d3d1cf3822ebbd86de1f2151f3b8f305e26 Mon Sep 17 00:00:00 2001 From: vlj Date: Mon, 12 Sep 2016 00:05:14 +0200 Subject: [PATCH] d3d12: CMP vertex format has 4 members. Fix 1878 --- rpcs3/Emu/RSX/D3D12/D3D12Formats.cpp | 6 +++--- rpcs3/Emu/RSX/rsx_vertex_data.h | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/RSX/D3D12/D3D12Formats.cpp b/rpcs3/Emu/RSX/D3D12/D3D12Formats.cpp index 519b7643e5..ff4891ecf2 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12Formats.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12Formats.cpp @@ -455,10 +455,10 @@ DXGI_FORMAT get_vertex_attribute_format(rsx::vertex_base_type type, u8 size) { switch (size) { - case 1: return DXGI_FORMAT_R16G16B16A16_SNORM; + case 1: case 2: - case 3: - case 4: fmt::throw_exception("Unsupported CMP vertex format with size > 1" HERE); + case 3: fmt::throw_exception("Unsupported CMP vertex format with size > 1" HERE); + case 4: return DXGI_FORMAT_R16G16B16A16_SNORM; } break; } diff --git a/rpcs3/Emu/RSX/rsx_vertex_data.h b/rpcs3/Emu/RSX/rsx_vertex_data.h index 7f6a89345d..988fe38051 100644 --- a/rpcs3/Emu/RSX/rsx_vertex_data.h +++ b/rpcs3/Emu/RSX/rsx_vertex_data.h @@ -38,6 +38,8 @@ public: u8 size() const { + if (decode_reg().type() == rsx::vertex_base_type::cmp) + return 4; return decode_reg().size(); }