Просмотр исходного кода

shader_environment: Add shader_local_memory_crs_size to local memory size

Fixes DOOM 2016 missing local memory
ameerj 5 лет назад
Родитель
Сommit
15bdd27cac
2 измененных файлов с 3 добавлено и 3 удалено
  1. 2 2
      src/shader_recompiler/program_header.h
  2. 1 1
      src/video_core/shader_environment.cpp

+ 2 - 2
src/shader_recompiler/program_header.h

@@ -230,8 +230,8 @@ struct ProgramHeader {
     };
 
     [[nodiscard]] u64 LocalMemorySize() const noexcept {
-        return (common1.shader_local_memory_low_size |
-                (common2.shader_local_memory_high_size << 24));
+        return static_cast<u64>(common1.shader_local_memory_low_size) |
+               (static_cast<u64>(common2.shader_local_memory_high_size) << 24);
     }
 };
 static_assert(sizeof(ProgramHeader) == 0x50, "Incorrect structure size");

+ 1 - 1
src/video_core/shader_environment.cpp

@@ -69,7 +69,7 @@ u32 GenericEnvironment::TextureBoundBuffer() const {
 }
 
 u32 GenericEnvironment::LocalMemorySize() const {
-    return local_memory_size;
+    return local_memory_size + sph.common3.shader_local_memory_crs_size;
 }
 
 u32 GenericEnvironment::SharedMemorySize() const {