diff options
| author | 2021-12-29 18:55:42 -0500 | |
|---|---|---|
| committer | 2021-12-29 19:03:50 -0500 | |
| commit | 8c907c620d830bdaef30ff4316489443775b3ea4 (patch) | |
| tree | 1d4fdda0429c8999d615e981a6e79384a223823a /src/video_core | |
| parent | glsl_context_get_set: Add alternative cbuf type for broken drivers (diff) | |
| download | yuzu-8c907c620d830bdaef30ff4316489443775b3ea4.tar.gz yuzu-8c907c620d830bdaef30ff4316489443775b3ea4.tar.xz yuzu-8c907c620d830bdaef30ff4316489443775b3ea4.zip | |
glsl: Add boolean reference workaround
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.h | 5 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.cpp | 1 |
3 files changed, 7 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index 32736126f..e62912a22 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp | |||
| @@ -188,6 +188,7 @@ Device::Device() { | |||
| 188 | std::atoi(driver_version.substr(0, driver_version.find(".")).data()); | 188 | std::atoi(driver_version.substr(0, driver_version.find(".")).data()); |
| 189 | if (version_major >= 495) { | 189 | if (version_major >= 495) { |
| 190 | has_cbuf_ftou_bug = true; | 190 | has_cbuf_ftou_bug = true; |
| 191 | has_bool_ref_bug = true; | ||
| 191 | } | 192 | } |
| 192 | } | 193 | } |
| 193 | 194 | ||
diff --git a/src/video_core/renderer_opengl/gl_device.h b/src/video_core/renderer_opengl/gl_device.h index fe53ef991..95c2e8d38 100644 --- a/src/video_core/renderer_opengl/gl_device.h +++ b/src/video_core/renderer_opengl/gl_device.h | |||
| @@ -156,6 +156,10 @@ public: | |||
| 156 | return has_cbuf_ftou_bug; | 156 | return has_cbuf_ftou_bug; |
| 157 | } | 157 | } |
| 158 | 158 | ||
| 159 | bool HasBoolRefBug() const { | ||
| 160 | return has_bool_ref_bug; | ||
| 161 | } | ||
| 162 | |||
| 159 | Settings::ShaderBackend GetShaderBackend() const { | 163 | Settings::ShaderBackend GetShaderBackend() const { |
| 160 | return shader_backend; | 164 | return shader_backend; |
| 161 | } | 165 | } |
| @@ -205,6 +209,7 @@ private: | |||
| 205 | bool warp_size_potentially_larger_than_guest{}; | 209 | bool warp_size_potentially_larger_than_guest{}; |
| 206 | bool need_fastmath_off{}; | 210 | bool need_fastmath_off{}; |
| 207 | bool has_cbuf_ftou_bug{}; | 211 | bool has_cbuf_ftou_bug{}; |
| 212 | bool has_bool_ref_bug{}; | ||
| 208 | 213 | ||
| 209 | std::string vendor_name; | 214 | std::string vendor_name; |
| 210 | }; | 215 | }; |
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index 1efcc3562..ec558a9af 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp | |||
| @@ -215,6 +215,7 @@ ShaderCache::ShaderCache(RasterizerOpenGL& rasterizer_, Core::Frontend::EmuWindo | |||
| 215 | .has_gl_component_indexing_bug = device.HasComponentIndexingBug(), | 215 | .has_gl_component_indexing_bug = device.HasComponentIndexingBug(), |
| 216 | .has_gl_precise_bug = device.HasPreciseBug(), | 216 | .has_gl_precise_bug = device.HasPreciseBug(), |
| 217 | .has_gl_cbuf_ftou_bug = device.HasCbufFtouBug(), | 217 | .has_gl_cbuf_ftou_bug = device.HasCbufFtouBug(), |
| 218 | .has_gl_bool_ref_bug = device.HasBoolRefBug(), | ||
| 218 | .ignore_nan_fp_comparisons = true, | 219 | .ignore_nan_fp_comparisons = true, |
| 219 | .gl_max_compute_smem_size = device.GetMaxComputeSharedMemorySize(), | 220 | .gl_max_compute_smem_size = device.GetMaxComputeSharedMemorySize(), |
| 220 | }, | 221 | }, |