Handle BufferResource::version overflow (#3962)

This commit is contained in:
Adrian Cojocaru
2025-11-21 15:18:18 +02:00
committed by GitHub
parent 682ef63d78
commit de9b4fb60f

View File

@@ -78,7 +78,7 @@ BufferResource::BufferResource(
const auto frameCount = backend.getMaxFrames();
totalSize = bufferWindowSize * frameCount;
bufferWindowVersions = std::vector<std::uint16_t>(frameCount, 0);
bufferWindowVersions = std::vector<VersionType>(frameCount, VersionType{});
}
const auto bufferInfo = vk::BufferCreateInfo()
@@ -184,6 +184,14 @@ void BufferResource::update(const void* newData, std::size_t updateSize, std::si
stats.bufferObjUpdates++;
version++;
if (version == std::numeric_limits<VersionType>::max()) {
version = VersionType{} + 1;
if (bufferWindowSize) {
std::ranges::fill(bufferWindowVersions, VersionType{});
}
}
if (bufferWindowSize) {
const auto frameIndex = context.getCurrentFrameResourceIndex();
bufferWindowVersions[frameIndex] = version;