mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-28 13:56:59 +01:00
Respect vertex buffer sizes
This commit is contained in:
@@ -709,6 +709,7 @@ struct PreparedVertexBuffers {
|
|||||||
|
|
||||||
std::array<vk::Buffer, MaxBuffers> buffers {};
|
std::array<vk::Buffer, MaxBuffers> buffers {};
|
||||||
std::array<vk::DeviceSize, MaxBuffers> offsets {};
|
std::array<vk::DeviceSize, MaxBuffers> offsets {};
|
||||||
|
std::array<vk::DeviceSize, MaxBuffers> sizes {};
|
||||||
uint32_t count = 0;
|
uint32_t count = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -793,6 +794,7 @@ static PreparedVertexBuffers AcquireVertexBuffers(CommandBuffer& b
|
|||||||
|
|
||||||
prepared.buffers[i] = range->binding.first->Handle();
|
prepared.buffers[i] = range->binding.first->Handle();
|
||||||
prepared.offsets[i] = range->binding.second + vertex.addr - range->base_address;
|
prepared.offsets[i] = range->binding.second + vertex.addr - range->base_address;
|
||||||
|
prepared.sizes[i] = std::min(size, range->acquired_end - vertex.addr);
|
||||||
SetVulkanObjectNameF(
|
SetVulkanObjectNameF(
|
||||||
buffer.GetContext().GetGraphics().device, prepared.buffers[i],
|
buffer.GetContext().GetGraphics().device, prepared.buffers[i],
|
||||||
"Kyty.VertexBuffer[slot={} guest=0x{:016x} size=0x{:x} stride={} records={}]", i,
|
"Kyty.VertexBuffer[slot={} guest=0x{:016x} size=0x{:x} stride={} records={}]", i,
|
||||||
@@ -989,8 +991,9 @@ static void CommitVertexBuffers(vk::CommandBuffer vk_buffer,
|
|||||||
EXIT_IF(prepared.buffers[i] == nullptr);
|
EXIT_IF(prepared.buffers[i] == nullptr);
|
||||||
}
|
}
|
||||||
if (prepared.count != 0) {
|
if (prepared.count != 0) {
|
||||||
vk_buffer.bindVertexBuffers(0, prepared.count, prepared.buffers.data(),
|
// Guest descriptor bounds must survive allocation merging in the cache.
|
||||||
prepared.offsets.data());
|
vk_buffer.bindVertexBuffers2(0, prepared.count, prepared.buffers.data(),
|
||||||
|
prepared.offsets.data(), prepared.sizes.data(), nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user