示例#1
0
        public static DeviceImage CreateFromTexture2D(UInt32 texture, Int32 mipLevel, DeviceBufferAccess access, Context context)
        {
            CLError error = CLError.None;

            CLMem mem = ManOCL.Internal.OpenCL.OpenGL.OpenCLGLDriver.clCreateFromGLTexture2D(context.CLContext, GetMemFlags(access), 3553 /* GL_TEXTURE_2D */, mipLevel, texture, ref error);

            OpenCLError.Validate(error);

            DeviceImage result = new DeviceImage(new Mem { Value = mem.Value });

            return result;
        }
示例#2
0
 internal static CLMemFlags GetMemFlags(DeviceBufferAccess access)
 {
     if (access == DeviceBufferAccess.ReadWrite)
     {
         return CLMemFlags.ReadWrite;
     }
     else if (access == DeviceBufferAccess.Read)
     {
         return CLMemFlags.ReadOnly;
     }
     else if (access == DeviceBufferAccess.Write)
     {
         return CLMemFlags.WriteOnly;
     }
     else
     {
         throw new ArgumentException();
     }
 }
示例#3
0
文件: Argument.cs 项目: lu4/ManOCL
 internal static CLMemFlags GetMemFlags(DeviceBufferAccess access)
 {
     if (access == DeviceBufferAccess.ReadWrite)
     {
         return(CLMemFlags.ReadWrite);
     }
     else if (access == DeviceBufferAccess.Read)
     {
         return(CLMemFlags.ReadOnly);
     }
     else if (access == DeviceBufferAccess.Write)
     {
         return(CLMemFlags.WriteOnly);
     }
     else
     {
         throw new ArgumentException();
     }
 }
示例#4
0
 public static DeviceGlobalMemory CreateFromStructure <T>(T data, DeviceBufferAccess access, Context context) where T : struct
 {
     return(CreateInternal(data, new SizeT(Marshal.SizeOf(data.GetType())), GetMemFlags(access) | CLMemFlags.CopyHostPtr, context, access));
 }
示例#5
0
 public static DeviceGlobalMemory CreateFromStructure <T>(T data, DeviceBufferAccess access) where T : struct
 {
     return(CreateFromStructure <T>(data, access, Context.Default));
 }
示例#6
0
 public static DeviceGlobalMemory CreateFromArray(Array data, DeviceBufferAccess access, Context context)
 {
     return(CreateInternal(data, new SizeT(Marshal.SizeOf(data.GetType().GetElementType()) * data.Length), GetMemFlags(access) | CLMemFlags.CopyHostPtr, context, access));
 }
示例#7
0
 public static DeviceGlobalMemory CreateFromArray(Array data, DeviceBufferAccess access)
 {
     return(CreateFromArray(data, access, Context.Default));
 }
示例#8
0
 public static DeviceGlobalMemory CreateFromSize(Int64 sizeInBytes, DeviceBufferAccess access, Context context)
 {
     return(CreateInternal <Array>(null, new SizeT(sizeInBytes), GetMemFlags(access), context, access));
 }
示例#9
0
 public static DeviceImage CreateFromTexture2D(UInt32 texture, DeviceBufferAccess access)
 {
     return CreateFromTexture2D(texture, 0, access, Context.Default);
 }
示例#10
0
文件: HostMemory.cs 项目: lu4/ManOCL
 public static HostMemory Create(Array data, DeviceBufferAccess access)
 {
     return(Create(Context.Default, data, access));
 }
示例#11
0
 internal void InitializeInternal(CLMem openclMem, SizeT sizeInternal, Context context, DeviceBufferAccess access)
 {
     this.Access = access;
     this.Context = context;
     this.openCLMem = openclMem;
     this.openCLMemSize = sizeInternal;
 }
示例#12
0
文件: DeviceImage.cs 项目: lu4/ManOCL
 public static DeviceImage CreateFromTexture2D(UInt32 texture, DeviceBufferAccess access)
 {
     return(CreateFromTexture2D(texture, 0, access, Context.Default));
 }
示例#13
0
文件: DeviceImage.cs 项目: lu4/ManOCL
        public static DeviceImage CreateFromTexture2D(UInt32 texture, Int32 mipLevel, DeviceBufferAccess access, Context context)
        {
            CLError error = CLError.None;

            CLMem mem = ManOCL.Internal.OpenCL.OpenGL.OpenCLGLDriver.clCreateFromGLTexture2D(context.CLContext, GetMemFlags(access), 3553 /* GL_TEXTURE_2D */, mipLevel, texture, ref error);

            OpenCLError.Validate(error);

            DeviceImage result = new DeviceImage(new Mem {
                Value = mem.Value
            });

            return(result);
        }
示例#14
0
文件: HostMemory.cs 项目: lu4/ManOCL
 public static HostMemory Create <T>(Context context, T data, DeviceBufferAccess access) where T : struct
 {
     return(CreateInternal(data, new SizeT(Marshal.SizeOf(data.GetType())), GetMemFlags(access) | CLMemFlags.AllocHostPtr | CLMemFlags.CopyHostPtr, context, access));
 }
示例#15
0
文件: HostMemory.cs 项目: lu4/ManOCL
 public static HostMemory Create <T>(T data, DeviceBufferAccess access) where T : struct
 {
     return(Create <T>(Context.Default, data, access));
 }
示例#16
0
        public static DeviceGlobalMemory CreateFromBitmap(Bitmap bmp, Context context, DeviceBufferAccess access)
        {
            BitmapData bmpBits = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

            try
            {
                return(CreateInternalFromHostPtr(new SizeT(bmpBits.Stride * bmpBits.Height), CLMemFlags.CopyHostPtr, context, access, bmpBits.Scan0));
            }
            finally
            {
                bmp.UnlockBits(bmpBits);
            }
        }
示例#17
0
 internal void InitializeInternal(CLMem openclMem, SizeT sizeInternal, Context context, DeviceBufferAccess access)
 {
     this.Access        = access;
     this.Context       = context;
     this.openCLMem     = openclMem;
     this.openCLMemSize = sizeInternal;
 }
示例#18
0
文件: HostMemory.cs 项目: lu4/ManOCL
 public static HostMemory Create(Context context, Int32 sizeInBytes, DeviceBufferAccess access)
 {
     return(CreateInternal <Array>(null, new SizeT(sizeInBytes), GetMemFlags(access) | CLMemFlags.AllocHostPtr, context, access));
 }