Merge pull request 'perf(decompress): release compressed staging after submit, not for the resource's life (#67)' (#106) from claude/issue-67 into master
This commit is contained in:
commit
2c8a293b57
5 changed files with 264 additions and 9 deletions
|
|
@ -278,6 +278,16 @@ void Mesh::Build(const CompressedMeshAsset& asset, VkCommandBuffer cmd, RTBuildO
|
|||
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
|
||||
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR);
|
||||
|
||||
// The compressed staging is only read by the decompress recorded above; the
|
||||
// subsequent BLAS build reads the decompressed vertex/index buffers, never
|
||||
// this. So hand it to the fence-keyed deletion queue (#101/#102) now rather
|
||||
// than pinning host-visible memory for the mesh's whole life. The recorded
|
||||
// vkCmdDecompressMemoryEXT still references compressedStaging.address, so it
|
||||
// must outlive this submit — which the queue guarantees: it retires the
|
||||
// allocation only after framesInFlight frames have elapsed, by which point
|
||||
// the decompress submit's fence has cleared.
|
||||
compressedStaging.DeferredClear();
|
||||
|
||||
allowUpdate = options.allowUpdate;
|
||||
builtInputCount = asset.vertexCount;
|
||||
RecordBLASBuild(*this, asset.vertexCount, asset.indexCount, BlasFlags(options), /*update*/ false, cmd);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue