Esempio n. 1
0
        public int GetCachePosition(GpuCacheHandle handle)
        {
            FreeListHandle freeListHandle = handle.Value;

            _slots.ThrowIfInvalid(freeListHandle);
            return((int)freeListHandle.Index);
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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);
        }