buffer_cache: Mark uniform buffers as dirty if any enable bit changes

This commit is contained in:
ReinUsesLisp 2021-05-30 02:57:42 -03:00 committed by ameerj
parent 329dea217d
commit a7e9756671
5 changed files with 17 additions and 7 deletions

View file

@ -142,7 +142,7 @@ public:
void BindHostComputeBuffers();
void SetEnabledUniformBuffers(size_t stage, u32 enabled);
void SetEnabledUniformBuffers(const std::array<u32, NUM_STAGES>& mask);
void SetEnabledComputeUniformBuffers(u32 enabled);
@ -670,13 +670,13 @@ void BufferCache<P>::BindHostComputeBuffers() {
}
template <class P>
void BufferCache<P>::SetEnabledUniformBuffers(size_t stage, u32 enabled) {
void BufferCache<P>::SetEnabledUniformBuffers(const std::array<u32, NUM_STAGES>& mask) {
if constexpr (HAS_PERSISTENT_UNIFORM_BUFFER_BINDINGS) {
if (enabled_uniform_buffers[stage] != enabled) {
dirty_uniform_buffers[stage] = ~u32{0};
if (enabled_uniform_buffers != mask) {
dirty_uniform_buffers.fill(~u32{0});
}
}
enabled_uniform_buffers[stage] = enabled;
enabled_uniform_buffers = mask;
}
template <class P>