public int GetCachePosition(GpuCacheHandle handle) { FreeListHandle freeListHandle = handle.Value; _slots.ThrowIfInvalid(freeListHandle); return((int)freeListHandle.Index); }
public void Free(ref GpuCacheHandle handle) { FreeListHandle freeListHandle = handle.Value; _slots.ThrowIfInvalid(freeListHandle); Span <Vector4> blocks = GetBlocks(freeListHandle.Index, freeing: true); blocks.Clear(); _slots.Free(ref freeListHandle); handle = GpuCacheHandle.Invalid; }
public void Upsert(ref GpuCacheHandle handle, ref T value) { FreeListHandle freeListHandle = handle.Value; if (_slots.ValidateHandle(freeListHandle)) { Span <Vector4> blocks = GetBlocks(freeListHandle.Index); value.WriteGpuBlocks(blocks); return; } handle = Insert(ref value); }