private IntPtr MapBuffer(int target, int access) { _boundBuffers.TryGetValue(target, out uint boundBuffer); var memoryName = $"DataBuffer{target}|{boundBuffer}"; IntPtr memory = UnmanagedMemoryAllocator.GetNamedMemory(memoryName, out int bufferSize); _bufferMapping.TryGetValue(boundBuffer, out BufferMappingState state); if (state == null) { state = new BufferMappingState(); _bufferMapping.Add(boundBuffer, state); } state.Mapping = true; state.RangeStart = 0; state.RangeLength = bufferSize; return(memory); }
private IntPtr MapBufferRange(int target, IntPtr offset, uint length, uint access) { _boundBuffers.TryGetValue(target, out uint boundBuffer); var memoryName = $"DataBuffer{target}|{boundBuffer}"; IntPtr memory = UnmanagedMemoryAllocator.GetNamedMemory(memoryName, out int _); _bufferMapping.TryGetValue(boundBuffer, out BufferMappingState state); if (state == null) { state = new BufferMappingState(); _bufferMapping.Add(boundBuffer, state); } state.Mapping = true; state.RangeStart = (int)offset; state.RangeLength = (int)length; //Engine.Log.Info($"Starting map range of buffer {boundBuffer} in range {offset}:{length}", "WebGLInternal"); return(memory + state.RangeStart); }