Exemplo n.º 1
0
        public TextureView([NotNull] IMemoryBlock memory, int stride, TextureFormat format)
        {
            if (memory == null)
            {
                throw new ArgumentNullException(nameof(memory));
            }

            if (stride <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(stride));
            }

            mMemory         = memory;
            mFormat         = format;
            mReadableMemory = new ReadOnlyMemoryWindow(memory);

            mStride = stride;
            mWidth  = stride >> 2;
            mHeight = (int)(memory.Size / stride);

            mReadable = memory is IReadableMemory;
            mWritable = memory is IWritableMemory;

            if (!mReadable && !mWritable)
            {
                // neither readable nor writable!? must be some unknown memory restriction...
                mReadable = mWritable = true;
            }
        }
Exemplo n.º 2
0
        public static ReadOnlyArrayView <T> AsReadOnlyArray <T>([NotNull] this IReadableMemory readableMemory) where T : struct
        {
            if (readableMemory == null)
            {
                throw new ArgumentNullException(nameof(readableMemory));
            }

            return(new ReadOnlyArrayView <T>(readableMemory));
        }
Exemplo n.º 3
0
        public static ReadOnlyMemoryWindow GetReadOnlyWindow([NotNull] this IReadableMemory readableMemory, int offset, long size)
        {
            if (readableMemory == null)
            {
                throw new ArgumentNullException(nameof(readableMemory));
            }

            return(new ReadOnlyMemoryWindow(readableMemory, offset, size));
        }
Exemplo n.º 4
0
        public HardwareRenderTargetData([NotNull] HardwareRenderTarget renderTarget)
        {
            if (renderTarget == null)
            {
                throw new ArgumentNullException(nameof(renderTarget));
            }

            mTexture = renderTarget.GetTexture2D();
            mBox     = renderTarget.Device.ImmediateContext.MapSubresource(mTexture, 0, MapMode.Read, MapFlags.None);
            mMemory  = new ReadOnlyMemoryWindow(mBox.Data.DataPointer, mBox.Data.Length);
        }
Exemplo n.º 5
0
        public ReadOnlyArrayView([NotNull] IReadableMemory memory)
        {
            if (memory == null)
            {
                throw new ArgumentNullException(nameof(memory));
            }

            mMemory = memory;

            mSizeOfT = Marshal.SizeOf <T>();
            mLength  = memory.Size / mSizeOfT;
        }
Exemplo n.º 6
0
        public UnmanagedStream([NotNull] IReadableMemory memory)
        {
            if (memory == null)
            {
                throw new ArgumentNullException(nameof(memory));
            }

            mMemory  = memory;
            CanRead  = true;
            CanSeek  = true;
            CanWrite = false;
        }
Exemplo n.º 7
0
        protected void Load([NotNull] IReadableMemory bytecode)
        {
            if (bytecode == null)
            {
                throw new ArgumentNullException(nameof(bytecode));
            }

            var bytecodeData = new byte[bytecode.Size];

            bytecode.CopyTo(bytecodeData);
            mBytecode = new ShaderBytecode(new DataStream(bytecodeData, true, false));
            OnBytecodeLoaded();
        }
Exemplo n.º 8
0
        public static void Write([NotNull] this IWritable writableMemory, [NotNull] IReadableMemory sourceMemory)
        {
            if (writableMemory == null)
            {
                throw new ArgumentNullException(nameof(writableMemory));
            }

            if (sourceMemory == null)
            {
                throw new ArgumentNullException(nameof(sourceMemory));
            }

            writableMemory.Write(sourceMemory.GetPointer(), 0, sourceMemory.Size);
        }
Exemplo n.º 9
0
        public ReadOnlyTextureView([NotNull] IReadableMemory memory, int stride, TextureFormat format)
        {
            if (stride <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(stride));
            }

            mMemory = memory ?? throw new ArgumentNullException(nameof(memory));
            mFormat = format;

            mStride = stride;
            mWidth  = stride >> 2;
            mHeight = (int)(memory.Size / stride);
        }
Exemplo n.º 10
0
        public ReadOnlyMemoryWindow([NotNull] IReadableMemory memoryBlock, int offset, long size)
        {
            if (memoryBlock == null)
            {
                throw new ArgumentNullException(nameof(memoryBlock));
            }

            if (offset < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(offset));
            }

            if (size > memoryBlock.Size - offset)
            {
                throw new ArgumentOutOfRangeException(nameof(size), "The window size is larger than the size of the target block.");
            }

            Pointer = memoryBlock.GetPointer() + offset;
            Size    = size;
        }
Exemplo n.º 11
0
        public static void CopyTo <T>(this IReadableMemory memory, [NotNull] T[] targetArray) where T : struct
        {
            if (targetArray == null)
            {
                throw new ArgumentNullException(nameof(targetArray));
            }

            var targetArrayHandle = default(GCHandle);

            try
            {
                targetArrayHandle = GCHandle.Alloc(targetArray, GCHandleType.Pinned);
                UnmanagedBlock.Copy(memory.GetPointer(), targetArrayHandle.AddrOfPinnedObject(), 0, 0, memory.Size);
            }
            finally
            {
                if (targetArrayHandle.IsAllocated)
                {
                    targetArrayHandle.Free();
                }
            }
        }
Exemplo n.º 12
0
 public void Blit(IReadableMemory pixels)
 {
     mReactor.mBackBufferMemory.Write(pixels);
 }
Exemplo n.º 13
0
        public static AcceleratedComputationKernel FromBytecode([NotNull] AccelerationDevice device, [NotNull] IReadableMemory bytecode)
        {
            if (device == null)
            {
                throw new ArgumentNullException(nameof(device));
            }

            if (bytecode == null)
            {
                throw new ArgumentNullException(nameof(bytecode));
            }

            var kernel = new AcceleratedComputationKernel(device);

            kernel.Load(bytecode);
            return(kernel);
        }
Exemplo n.º 14
0
        public static IAcceleratedImagingKernelConfiguration FromBytecode([NotNull] AccelerationDevice device, [NotNull] IReadableMemory bytecode)
        {
            if (device == null)
            {
                throw new ArgumentNullException(nameof(device));
            }

            if (bytecode == null)
            {
                throw new ArgumentNullException(nameof(bytecode));
            }

            return(new AcceleratedImagingKernelConfiguration(device, k => k.Load(bytecode)));
        }