Vulkan: Fixed buffer clear after using BufferData and BufferSubData

This happened if both functions were called before any Draw* used them
This commit is contained in:
korenkonder
2025-05-21 07:54:57 +03:00
parent 953bd6cc6f
commit eaf44cc154
2 changed files with 6 additions and 4 deletions
+4 -4
View File
@@ -277,7 +277,7 @@ namespace Vulkan {
Vulkan::Buffer dynamic_buffer = Vulkan::manager_get_dynamic_buffer(size, alignment);
dynamic_buffer.WriteMemory(dynamic_buffer.GetOffset(), size, data.data());
enum_and(flags, ~Vulkan::GL_BUFFER_FLAG_WRITE_DATA);
enum_and(flags, ~Vulkan::GL_BUFFER_FLAG_UPDATE_DATA);
working_buffer.AddBuffer(hash, dynamic_buffer);
copy_working_buffer = true;
@@ -286,7 +286,7 @@ namespace Vulkan {
Vulkan::end_render_pass(Vulkan::current_command_buffer);
vkCmdFillBuffer(Vulkan::current_command_buffer, buffer, 0, size, 0);
enum_and(flags, ~Vulkan::GL_BUFFER_FLAG_CLEAR_DATA);
enum_and(flags, ~Vulkan::GL_BUFFER_FLAG_UPDATE_DATA);
working_buffer.SetBuffer(buffer);
copy_working_buffer = false;
@@ -6967,8 +6967,8 @@ namespace Vulkan {
return GL_FALSE;
}
if (vk_buf->flags & Vulkan::GL_BUFFER_FLAG_WRITE_DATA) {
enum_and(vk_buf->flags, ~Vulkan::GL_BUFFER_FLAG_CLEAR_DATA);
if (vk_buf->flags & Vulkan::GL_BUFFER_FLAG_UPDATE_DATA) {
enum_and(vk_buf->flags, ~Vulkan::GL_BUFFER_FLAG_UPDATE_DATA);
if (check_for_zero(vk_buf->data.data(), vk_buf->data.size()))
enum_or(vk_buf->flags, Vulkan::GL_BUFFER_FLAG_CLEAR_DATA);
+2
View File
@@ -43,6 +43,8 @@ namespace Vulkan {
GL_BUFFER_FLAG_MAP_READ_BIT = (1 << 5u),
GL_BUFFER_FLAG_MAP_WRITE_BIT = (1 << 6u),
GL_BUFFER_FLAG_DYNAMIC_STORAGE_BIT = (1 << 7u),
GL_BUFFER_FLAG_UPDATE_DATA = GL_BUFFER_FLAG_CLEAR_DATA | GL_BUFFER_FLAG_WRITE_DATA,
};
enum gl_texture_flags {