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