summaryrefslogtreecommitdiff
path: root/src/video_core
diff options
context:
space:
mode:
authorGravatar ameerj2021-12-29 18:55:42 -0500
committerGravatar ameerj2021-12-29 19:03:50 -0500
commit8c907c620d830bdaef30ff4316489443775b3ea4 (patch)
tree1d4fdda0429c8999d615e981a6e79384a223823a /src/video_core
parentglsl_context_get_set: Add alternative cbuf type for broken drivers (diff)
downloadyuzu-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.cpp1
-rw-r--r--src/video_core/renderer_opengl/gl_device.h5
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.cpp1
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 },