Browse Source

Add additional check to prevent graphics corruption when triggering fast buffer incorrectly

pull/2824/head
MaranBr 5 months ago
committed by crueter
parent
commit
f9f70b0cf4
  1. 5
      src/video_core/buffer_cache/buffer_cache.h

5
src/video_core/buffer_cache/buffer_cache.h

@ -790,12 +790,13 @@ void BufferCache<P>::BindHostGraphicsUniformBuffer(size_t stage, u32 index, u32
++channel_state->uniform_cache_shots[0];
const Binding& binding = channel_state->uniform_buffers[stage][index];
const DAddr device_addr = binding.device_addr;
const u32 size = (std::min)(binding.size, (*channel_state->uniform_buffer_sizes)[stage][index]);
const u32 size = std::min(binding.size, (*channel_state->uniform_buffer_sizes)[stage][index]);
Buffer& buffer = slot_buffers[binding.buffer_id];
TouchBuffer(buffer, binding.buffer_id);
const bool use_fast_buffer = binding.buffer_id != NULL_BUFFER_ID &&
size <= channel_state->uniform_buffer_skip_cache_size &&
!memory_tracker.IsRegionGpuModified(device_addr, size);
!memory_tracker.IsRegionGpuModified(device_addr, size) &&
!memory_tracker.IsRegionCpuModified(device_addr, size);
if (use_fast_buffer) {
if constexpr (IS_OPENGL) {
if (runtime.HasFastBufferSubData()) {

Loading…
Cancel
Save