summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-04-04 20:07:11 -0300
committerGravatar ReinUsesLisp2019-04-04 20:07:11 -0300
commit88a3c05b7bad050d4e24c299425a6c480d1facac (patch)
treea3c1c27dc03f31b0cc4b0632f13522cf606ce025
parentMerge pull request #2294 from lioncash/fatal (diff)
downloadyuzu-88a3c05b7bad050d4e24c299425a6c480d1facac.tar.gz
yuzu-88a3c05b7bad050d4e24c299425a6c480d1facac.tar.xz
yuzu-88a3c05b7bad050d4e24c299425a6c480d1facac.zip
gl_shader_decompiler: Fix TXQ types
TXQ returns integer types. Shaders usually do: R0 = TXQ(); // => int R0 = static_cast<float>(R0); If we don't treat it as an integer, it will cast a binary float value as float - resulting in a corrupted number.
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 11d1169f0..7300a4037 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -1196,11 +1196,12 @@ private:
1196 switch (meta->element) { 1196 switch (meta->element) {
1197 case 0: 1197 case 0:
1198 case 1: 1198 case 1:
1199 return "textureSize(" + sampler + ", " + lod + ')' + GetSwizzle(meta->element); 1199 return "itof(int(textureSize(" + sampler + ", " + lod + ')' +
1200 GetSwizzle(meta->element) + "))";
1200 case 2: 1201 case 2:
1201 return "0"; 1202 return "0";
1202 case 3: 1203 case 3:
1203 return "textureQueryLevels(" + sampler + ')'; 1204 return "itof(textureQueryLevels(" + sampler + "))";
1204 } 1205 }
1205 UNREACHABLE(); 1206 UNREACHABLE();
1206 return "0"; 1207 return "0";