diff options
| author | 2021-05-16 07:43:40 -0400 | |
|---|---|---|
| committer | 2021-05-16 07:43:40 -0400 | |
| commit | acf22336ecc9b2271f9fbcdb62493221631d7342 (patch) | |
| tree | 5ead7586aa25c0c8589038851dacb6835d8b1ead | |
| parent | Merge pull request #6300 from Morph1984/mbedtls (diff) | |
| download | yuzu-acf22336ecc9b2271f9fbcdb62493221631d7342.tar.gz yuzu-acf22336ecc9b2271f9fbcdb62493221631d7342.tar.xz yuzu-acf22336ecc9b2271f9fbcdb62493221631d7342.zip | |
buffer_cache: Ensure null buffers cannot take the fast uniform bind path
Fixes a crash in New Pokemon Snap
| -rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 32dcbd693..de971041f 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h | |||
| @@ -690,7 +690,10 @@ void BufferCache<P>::BindHostGraphicsUniformBuffer(size_t stage, u32 index, u32 | |||
| 690 | const VAddr cpu_addr = binding.cpu_addr; | 690 | const VAddr cpu_addr = binding.cpu_addr; |
| 691 | const u32 size = binding.size; | 691 | const u32 size = binding.size; |
| 692 | Buffer& buffer = slot_buffers[binding.buffer_id]; | 692 | Buffer& buffer = slot_buffers[binding.buffer_id]; |
| 693 | if (size <= uniform_buffer_skip_cache_size && !buffer.IsRegionGpuModified(cpu_addr, size)) { | 693 | const bool use_fast_buffer = binding.buffer_id != NULL_BUFFER_ID && |
| 694 | size <= uniform_buffer_skip_cache_size && | ||
| 695 | !buffer.IsRegionGpuModified(cpu_addr, size); | ||
| 696 | if (use_fast_buffer) { | ||
| 694 | if constexpr (IS_OPENGL) { | 697 | if constexpr (IS_OPENGL) { |
| 695 | if (runtime.HasFastBufferSubData()) { | 698 | if (runtime.HasFastBufferSubData()) { |
| 696 | // Fast path for Nvidia | 699 | // Fast path for Nvidia |