feat(render): unify physical residency accounting
This commit is contained in:
parent
1866ea0c6d
commit
3e18fc2730
25 changed files with 642 additions and 48 deletions
|
|
@ -343,6 +343,60 @@ public sealed class ResidencyManagerTests
|
|||
Assert.Equal(1, journal.Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DomainSourcesAggregateWithoutCountingMappedAddressSpaceAsRam()
|
||||
{
|
||||
var manager = new ResidencyManager();
|
||||
manager.RegisterDomainSource(new DelegateResidencyDomainSource(
|
||||
ResidencyDomain.PreparedPackage,
|
||||
() => new ResidencyDomainSnapshot(
|
||||
ResidencyDomain.PreparedPackage,
|
||||
EntryCount: 1,
|
||||
OwnerCount: 1,
|
||||
Charges: new ResidencyCharges(
|
||||
LogicalBytes: 64,
|
||||
PinnedBytes: 32,
|
||||
MappedVirtualBytes: 30_000))));
|
||||
manager.RegisterDomainSource(new DelegateResidencyDomainSource(
|
||||
ResidencyDomain.StandaloneTextures,
|
||||
() => new ResidencyDomainSnapshot(
|
||||
ResidencyDomain.StandaloneTextures,
|
||||
EntryCount: 2,
|
||||
OwnerCount: 1,
|
||||
Charges: new ResidencyCharges(
|
||||
GpuResidentBytes: 128),
|
||||
BudgetBytes: 256,
|
||||
CapacityBytes: 128,
|
||||
UsedBytes: 96,
|
||||
LargestFreeBytes: 16)));
|
||||
|
||||
ResidencySnapshot snapshot = manager.CaptureSnapshot();
|
||||
|
||||
Assert.Equal(64, snapshot.TotalCharges.CommittedCpuBytes);
|
||||
Assert.Equal(30_000, snapshot.TotalCharges.MappedVirtualBytes);
|
||||
Assert.Equal(128, snapshot.TotalCharges.PhysicalGpuBytes);
|
||||
Assert.Equal(
|
||||
16,
|
||||
snapshot.Get(ResidencyDomain.StandaloneTextures)
|
||||
.FragmentedFreeBytes);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OnlyOneCanonicalSourceMayOwnADomain()
|
||||
{
|
||||
var manager = new ResidencyManager();
|
||||
var first = new DelegateResidencyDomainSource(
|
||||
ResidencyDomain.ObjectMeshes,
|
||||
() => default);
|
||||
manager.RegisterDomainSource(first);
|
||||
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
manager.RegisterDomainSource(
|
||||
new DelegateResidencyDomainSource(
|
||||
ResidencyDomain.ObjectMeshes,
|
||||
() => default)));
|
||||
}
|
||||
|
||||
private static AssetHandle<MeshAsset> Resident(
|
||||
ResidencyManager manager,
|
||||
ulong id,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue