Exemple #1
0
 public static extern IntPtr CreateSubBuffer(
     [In] IntPtr memoryObject,
     [In][MarshalAs(UnmanagedType.U8)] MemoryFlag flags,
     [In][MarshalAs(UnmanagedType.U4)] BufferCreateType bufferCreateType,
     [In] IntPtr bufferCreateInformation,
     [Out][MarshalAs(UnmanagedType.I4)] out Result errorCode
     );
        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);
        }
 IntPtr IBufferApi.clCreateSubBuffer(IntPtr buffer, MemoryFlags flags, BufferCreateType bufferCreateType, IntPtr bufferCreateInfo,
                                     out OpenClErrorCode errorCode)
 {
     return(clCreateSubBuffer(buffer, flags, bufferCreateType, bufferCreateInfo, out errorCode));
 }
 public static extern IntPtr clCreateSubBuffer(IntPtr buffer, MemoryFlags flags,
                                               BufferCreateType bufferCreateType, IntPtr bufferCreateInfo,
                                               out OpenClErrorCode errorCode);
Exemple #5
0
 internal static extern cl_mem clCreateSubBuffer(cl_mem buffer, cl_mem_flags flags, BufferCreateType buffer_create_type, void *buffer_create_info, out ErrorCode errcode_ret);