From 3e923b4993791ea8cd8b6dd9d9469dd62dfefad8 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Wed, 3 Aug 2022 19:28:56 +0300 Subject: [PATCH] rsx: Optimize VTX_FMT_SNORM16 decoding - Cuts down SNORM16 overhead by ~65% --- rpcs3/Emu/RSX/Program/GLSLCommon.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/rpcs3/Emu/RSX/Program/GLSLCommon.cpp b/rpcs3/Emu/RSX/Program/GLSLCommon.cpp index 369349e040..35feedda15 100644 --- a/rpcs3/Emu/RSX/Program/GLSLCommon.cpp +++ b/rpcs3/Emu/RSX/Program/GLSLCommon.cpp @@ -267,7 +267,7 @@ namespace glsl "vec4 fetch_attribute(const in attribute_desc desc, const in int vertex_id, usamplerBuffer input_stream)\n" "{\n" " const int elem_size_table[] = { 2, 4, 2, 1, 2, 4, 1 };\n" - " const float scaling_table[] = { 65535., 1., 1., 255., 1., 32767., 1. };\n" + " const float scaling_table[] = { 32767.5, 1., 1., 255., 1., 32767., 1. };\n" " const int elem_size = elem_size_table[desc.type];\n" " const vec4 scale = scaling_table[desc.type].xxxx;\n\n" @@ -298,11 +298,7 @@ namespace glsl " if (desc.type == VTX_FMT_SNORM16 || desc.type == VTX_FMT_SINT16)\n" " {\n" " ret = sext(ivec4(result));\n" - - " if (desc.type == VTX_FMT_SNORM16)\n" - " {\n" - " ret = ret * 2. + 1.;\n" - " }\n" + " ret = fma(vec4(0.5), vec4(desc.type == VTX_FMT_SNORM16), ret);\n" " }\n" " else if (desc.type == VTX_FMT_FLOAT32)\n" " {\n"