Add missing dowhile loops around FindBuffer calls
This commit is contained in:
parent
db37e583ff
commit
68f25217b8
|
@ -1067,8 +1067,7 @@ void BufferCache<P>::BindHostComputeTextureBuffers() {
|
||||||
|
|
||||||
template <class P>
|
template <class P>
|
||||||
void BufferCache<P>::DoUpdateGraphicsBuffers(bool is_indexed) {
|
void BufferCache<P>::DoUpdateGraphicsBuffers(bool is_indexed) {
|
||||||
do {
|
BufferOperations([&]() {
|
||||||
channel_state->has_deleted_buffers = false;
|
|
||||||
if (is_indexed) {
|
if (is_indexed) {
|
||||||
UpdateIndexBuffer();
|
UpdateIndexBuffer();
|
||||||
}
|
}
|
||||||
|
@ -1082,14 +1081,16 @@ void BufferCache<P>::DoUpdateGraphicsBuffers(bool is_indexed) {
|
||||||
if (current_draw_indirect) {
|
if (current_draw_indirect) {
|
||||||
UpdateDrawIndirect();
|
UpdateDrawIndirect();
|
||||||
}
|
}
|
||||||
} while (channel_state->has_deleted_buffers);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class P>
|
template <class P>
|
||||||
void BufferCache<P>::DoUpdateComputeBuffers() {
|
void BufferCache<P>::DoUpdateComputeBuffers() {
|
||||||
|
BufferOperations([&]() {
|
||||||
UpdateComputeUniformBuffers();
|
UpdateComputeUniformBuffers();
|
||||||
UpdateComputeStorageBuffers();
|
UpdateComputeStorageBuffers();
|
||||||
UpdateComputeTextureBuffers();
|
UpdateComputeTextureBuffers();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class P>
|
template <class P>
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include "common/microprofile.h"
|
#include "common/microprofile.h"
|
||||||
#include "common/scope_exit.h"
|
#include "common/scope_exit.h"
|
||||||
#include "common/settings.h"
|
#include "common/settings.h"
|
||||||
|
#include "video_core/buffer_cache/buffer_cache.h"
|
||||||
#include "video_core/control/channel_state.h"
|
#include "video_core/control/channel_state.h"
|
||||||
#include "video_core/engines/draw_manager.h"
|
#include "video_core/engines/draw_manager.h"
|
||||||
#include "video_core/engines/kepler_compute.h"
|
#include "video_core/engines/kepler_compute.h"
|
||||||
|
@ -285,6 +286,7 @@ void RasterizerVulkan::DrawTexture() {
|
||||||
|
|
||||||
query_cache.NotifySegment(true);
|
query_cache.NotifySegment(true);
|
||||||
|
|
||||||
|
std::scoped_lock l{texture_cache.mutex};
|
||||||
texture_cache.SynchronizeGraphicsDescriptors();
|
texture_cache.SynchronizeGraphicsDescriptors();
|
||||||
texture_cache.UpdateRenderTargets(false);
|
texture_cache.UpdateRenderTargets(false);
|
||||||
|
|
||||||
|
|
Reference in New Issue