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(); }