public void FlushCommandsIfWeightExceeding(IAuto disposedResource, ulong byteWeight) { bool usedByCurrentCb = disposedResource.HasCommandBufferDependency(Cbs); if (PreloadCbs != null && !usedByCurrentCb) { usedByCurrentCb = disposedResource.HasCommandBufferDependency(PreloadCbs.Value); } if (usedByCurrentCb) { // Since we can only free memory after the command buffer that uses a given resource was executed, // keeping the command buffer might cause a high amount of memory to be in use. // To prevent that, we force submit command buffers if the memory usage by resources // in use by the current command buffer is above a given limit, and those resources were disposed. _byteWeight += byteWeight; if (_byteWeight >= MinByteWeightForFlush) { FlushCommandsImpl(); } } }