diff options
| author | 2023-04-05 03:02:24 +0200 | |
|---|---|---|
| committer | 2023-04-08 16:12:44 +0200 | |
| commit | fe91066f4673f7a3ee87235f08b72db4910eb01c (patch) | |
| tree | 7228ef7eb04f1f0ceb289d54daeba42d0d2719c8 /src/video_core/renderer_opengl | |
| parent | shader_recompiler: Add subpixel offset for correct rounding at `ImageGather` (diff) | |
| download | yuzu-fe91066f4673f7a3ee87235f08b72db4910eb01c.tar.gz yuzu-fe91066f4673f7a3ee87235f08b72db4910eb01c.tar.xz yuzu-fe91066f4673f7a3ee87235f08b72db4910eb01c.zip | |
video_core: Enable ImageGather with subpixel offset on Intel
Diffstat (limited to 'src/video_core/renderer_opengl')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.h | 9 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.cpp | 2 |
3 files changed, 5 insertions, 7 deletions
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index d36a0a7a1..22ed16ebf 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp | |||
| @@ -169,7 +169,6 @@ Device::Device(Core::Frontend::EmuWindow& emu_window) { | |||
| 169 | has_draw_texture = GLAD_GL_NV_draw_texture; | 169 | has_draw_texture = GLAD_GL_NV_draw_texture; |
| 170 | warp_size_potentially_larger_than_guest = !is_nvidia && !is_intel; | 170 | warp_size_potentially_larger_than_guest = !is_nvidia && !is_intel; |
| 171 | need_fastmath_off = is_nvidia; | 171 | need_fastmath_off = is_nvidia; |
| 172 | need_gather_subpixel_offset = is_amd; | ||
| 173 | can_report_memory = GLAD_GL_NVX_gpu_memory_info; | 172 | can_report_memory = GLAD_GL_NVX_gpu_memory_info; |
| 174 | 173 | ||
| 175 | // At the moment of writing this, only Nvidia's driver optimizes BufferSubData on exclusive | 174 | // At the moment of writing this, only Nvidia's driver optimizes BufferSubData on exclusive |
diff --git a/src/video_core/renderer_opengl/gl_device.h b/src/video_core/renderer_opengl/gl_device.h index e8104c4de..cc0b95f1a 100644 --- a/src/video_core/renderer_opengl/gl_device.h +++ b/src/video_core/renderer_opengl/gl_device.h | |||
| @@ -160,10 +160,6 @@ public: | |||
| 160 | return need_fastmath_off; | 160 | return need_fastmath_off; |
| 161 | } | 161 | } |
| 162 | 162 | ||
| 163 | bool NeedsGatherSubpixelOffset() const { | ||
| 164 | return need_gather_subpixel_offset; | ||
| 165 | } | ||
| 166 | |||
| 167 | bool HasCbufFtouBug() const { | 163 | bool HasCbufFtouBug() const { |
| 168 | return has_cbuf_ftou_bug; | 164 | return has_cbuf_ftou_bug; |
| 169 | } | 165 | } |
| @@ -180,6 +176,10 @@ public: | |||
| 180 | return vendor_name == "ATI Technologies Inc."; | 176 | return vendor_name == "ATI Technologies Inc."; |
| 181 | } | 177 | } |
| 182 | 178 | ||
| 179 | bool IsIntel() const { | ||
| 180 | return vendor_name == "Intel"; | ||
| 181 | } | ||
| 182 | |||
| 183 | bool CanReportMemoryUsage() const { | 183 | bool CanReportMemoryUsage() const { |
| 184 | return can_report_memory; | 184 | return can_report_memory; |
| 185 | } | 185 | } |
| @@ -229,7 +229,6 @@ private: | |||
| 229 | bool has_draw_texture{}; | 229 | bool has_draw_texture{}; |
| 230 | bool warp_size_potentially_larger_than_guest{}; | 230 | bool warp_size_potentially_larger_than_guest{}; |
| 231 | bool need_fastmath_off{}; | 231 | bool need_fastmath_off{}; |
| 232 | bool need_gather_subpixel_offset{}; | ||
| 233 | bool has_cbuf_ftou_bug{}; | 232 | bool has_cbuf_ftou_bug{}; |
| 234 | bool has_bool_ref_bug{}; | 233 | bool has_bool_ref_bug{}; |
| 235 | bool can_report_memory{}; | 234 | bool can_report_memory{}; |
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index b40aa6f5e..6ecda2984 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp | |||
| @@ -218,7 +218,7 @@ ShaderCache::ShaderCache(RasterizerOpenGL& rasterizer_, Core::Frontend::EmuWindo | |||
| 218 | .lower_left_origin_mode = true, | 218 | .lower_left_origin_mode = true, |
| 219 | .need_declared_frag_colors = true, | 219 | .need_declared_frag_colors = true, |
| 220 | .need_fastmath_off = device.NeedsFastmathOff(), | 220 | .need_fastmath_off = device.NeedsFastmathOff(), |
| 221 | .need_gather_subpixel_offset = device.NeedsGatherSubpixelOffset(), | 221 | .need_gather_subpixel_offset = device.IsAmd() || device.IsIntel(), |
| 222 | 222 | ||
| 223 | .has_broken_spirv_clamp = true, | 223 | .has_broken_spirv_clamp = true, |
| 224 | .has_broken_unsigned_image_offsets = true, | 224 | .has_broken_unsigned_image_offsets = true, |