renderer_vulkan: another fix for vertex buffer offsets

This commit is contained in:
psucien 2024-06-10 23:20:32 +02:00
parent 71dda8c776
commit c2dc7c3fd4
2 changed files with 5 additions and 4 deletions

View File

@ -429,8 +429,10 @@ void GraphicsPipeline::BindVertexBuffers(StreamBuffer& staging) const {
for (u32 i = 0; i < num_buffers; ++i) { for (u32 i = 0; i < num_buffers; ++i) {
const auto& buffer = guest_buffers[i]; const auto& buffer = guest_buffers[i];
const auto& host_buffer = std::ranges::find_if( const auto& host_buffer = std::ranges::find_if(
ranges_merged.cbegin(), ranges_merged.cend(), ranges_merged.cbegin(), ranges_merged.cend(), [&](const BufferRange& range) {
[&](const BufferRange& range) { return (buffer.base_address >= range.base_address); }); return (buffer.base_address >= range.base_address &&
buffer.base_address < range.end_address);
});
assert(host_buffer != ranges_merged.cend()); assert(host_buffer != ranges_merged.cend());
host_buffers[i] = staging.Handle(); host_buffers[i] = staging.Handle();

View File

@ -232,8 +232,7 @@ void StreamBuffer::WaitPendingOperations(u64 requested_upper_bound) {
} }
u64 StreamBuffer::Copy(VAddr src, size_t size, size_t alignment /*= 0*/) { u64 StreamBuffer::Copy(VAddr src, size_t size, size_t alignment /*= 0*/) {
static const u64 MinUniformAlignment = instance.UniformMinAlignment(); const auto [data, offset, _] = Map(size, alignment);
const auto [data, offset, _] = Map(size, MinUniformAlignment);
std::memcpy(data, reinterpret_cast<const void*>(src), size); std::memcpy(data, reinterpret_cast<const void*>(src), size);
Commit(size); Commit(size);
return offset; return offset;