public IntPtr clCreateBuffer(IntPtr context, MemoryFlags flags, ulong size, IntPtr hostPtr, out OpenClErrorCode errorCode) { errorCode = clCreateBufferErrorCode ?? OpenClErrorCode.Success; var id = clCreateBufferResult ?? IntPtr.Zero; if (errorCode == OpenClErrorCode.Success) { FakeMemoryObjects[id] = new FakeMemoryObject(size, flags, hostPtr); return(id); } return(IntPtr.Zero); }
public IntPtr clCreateSubBuffer(IntPtr buffer, MemoryFlags flags, BufferCreateType bufferCreateType, IntPtr bufferCreateInfo, out OpenClErrorCode errorCode) { errorCode = clCreateSubBufferErrorCode ?? OpenClErrorCode.Success; if (errorCode == OpenClErrorCode.Success) { var id = clCreateSubBufferResult ?? new IntPtr(1); var regionObject = Marshal.PtrToStructure <BufferRegion>(bufferCreateInfo); const MemoryFlags memMask = MemoryFlags.AllocHostPointer | MemoryFlags.UseHostPointer | MemoryFlags.CopyHostPointer; var parent = FakeMemoryObjects[buffer]; var validFlags = (parent.Flags & (memMask)) | flags; FakeMemoryObjects[id] = new FakeMemoryObject(regionObject.Size, validFlags, parent.HostPointer); return(id); } return(IntPtr.Zero); }