diff options
| author | 2019-04-04 20:07:11 -0300 | |
|---|---|---|
| committer | 2019-04-04 20:07:11 -0300 | |
| commit | 88a3c05b7bad050d4e24c299425a6c480d1facac (patch) | |
| tree | a3c1c27dc03f31b0cc4b0632f13522cf606ce025 | |
| parent | Merge pull request #2294 from lioncash/fatal (diff) | |
| download | yuzu-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.cpp | 5 |
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"; |