vk: Minor cleanup

This commit is contained in:
kd-11 2024-04-23 04:14:16 +03:00 committed by kd-11
parent 3a466d6fd2
commit 3ef1eb8529
3 changed files with 11 additions and 9 deletions

View File

@ -83,5 +83,10 @@ namespace rsx
auto bytes = data();
return { utils::bless<T>(bytes), m_size / sizeof(T) };
}
bool empty() const
{
return m_size == 0;
}
};
}

View File

@ -2139,24 +2139,21 @@ void VKGSRender::load_program_env()
if (update_transform_constants)
{
// Transform constants
usz transform_constants_size = 0;
usz mem_offset = 0;
auto alloc_storage = [&](usz size) -> std::pair<void*, usz>
{
const auto alignment = m_device->gpu().get_limits().minUniformBufferOffsetAlignment;
mem_offset = m_transform_constants_ring_info.alloc<1>(utils::align(size, alignment));
transform_constants_size = size;
return std::make_pair(m_transform_constants_ring_info.map(mem_offset, transform_constants_size), size);
return std::make_pair(m_transform_constants_ring_info.map(mem_offset, size), size);
};
auto io_buf = rsx::io_buffer(alloc_storage);
upload_transform_constants(io_buf);
if (transform_constants_size)
if (!io_buf.empty())
{
m_transform_constants_ring_info.unmap();
m_vertex_constants_buffer_info = { m_transform_constants_ring_info.heap->value, mem_offset, transform_constants_size };
m_vertex_constants_buffer_info = { m_transform_constants_ring_info.heap->value, mem_offset, io_buf.size() };
}
}
@ -2375,8 +2372,8 @@ void VKGSRender::patch_transform_constants(rsx::context* ctx, u32 index, u32 cou
// Indexed. This is a bit trickier. Use scratchpad to avoid UAF
auto allocate_mem = [&](usz size) -> std::pair<void*, usz>
{
scratchpad.resize(size);
return { scratchpad.data(), size };
m_scratch_mem.resize(size);
return { m_scratch_mem.data(), size };
};
rsx::io_buffer iobuf(allocate_mem);

View File

@ -234,7 +234,7 @@ private:
VkDescriptorSet allocate_descriptor_set();
vk::vertex_upload_info upload_vertex_data();
rsx::simple_array<u8> scratchpad;
rsx::simple_array<u8> m_scratch_mem;
bool load_program();
void load_program_env();