diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 3f6b2b182e..a3949c5ac9 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -1160,11 +1160,14 @@ void BufferCache
::BindHostGraphicsStorageBuffers(size_t stage) {
if constexpr (USE_UNIFIED_DIRECT_BINDING && !NEEDS_BIND_STORAGE_INDEX) {
u64 window_index = 0;
u64 window_offset = 0;
- if (!is_written && runtime.SupportsUnifiedDescriptorBinding() &&
+ if (runtime.SupportsUnifiedDescriptorBinding() &&
size <= runtime.UnifiedMaxStorageBufferRange() &&
ResolveUnifiedDirectBinding(binding.device_addr, size,
runtime.UnifiedStorageBufferAlignment(), window_index,
window_offset)) {
+ if (is_written) {
+ MarkWrittenBufferInPlace(binding.device_addr, size);
+ }
runtime.BindStorageBufferFromWindow(window_index, static_cast ::BindHostComputeStorageBuffers() {
if constexpr (USE_UNIFIED_DIRECT_BINDING && !NEEDS_BIND_STORAGE_INDEX) {
u64 window_index = 0;
u64 window_offset = 0;
- if (!is_written && runtime.SupportsUnifiedDescriptorBinding() &&
+ if (runtime.SupportsUnifiedDescriptorBinding() &&
size <= runtime.UnifiedMaxStorageBufferRange() &&
ResolveUnifiedDirectBinding(binding.device_addr, size,
runtime.UnifiedStorageBufferAlignment(), window_index,
window_offset)) {
+ if (is_written) {
+ MarkWrittenBufferInPlace(binding.device_addr, size);
+ }
runtime.BindStorageBufferFromWindow(window_index, static_cast