Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }