mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-09 23:58:26 +03:00
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:
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user