Example #1
0
        public bool BindBufferToOutputTensor(Interpreter interpreter, int index, ComputeBuffer buffer)
        {
            uint bufferID = (uint)buffer.GetNativeBufferPtr().ToInt32();
            var  status   = TfLiteGpuDelegateV2BindOutputBuffer(Delegate, index, bufferID);

            return(status == Interpreter.Status.Ok);
        }
    public void GetD3D11DeviceTest()
    {
        ComputeBuffer buffer = new ComputeBuffer(1, 4);
        IntPtr        device = FlexUtils.DeviceFromResource(buffer.GetNativeBufferPtr());

        buffer.Release();
        Assert.AreNotEqual(default(IntPtr), device);
    }
 /// <summary>
 ///
 /// </summary>
 /// <param name="buffer"></param>
 /// <param name="data"></param>
 /// <returns></returns>
 public static Status RetrieveBufferData(ComputeBuffer buffer, byte[] data)
 {
     if (buffer == null)
     {
         return(Status.InvalidArguments);
     }
     return((Status)RetrieveBufferData(buffer.GetNativeBufferPtr(), data));
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="buffer"></param>
 /// <returns></returns>
 public static Status RequestBufferData(ComputeBuffer buffer)
 {
     if (buffer == null)
     {
         return(Status.InvalidArguments);
     }
     return((Status)RequestBufferData(buffer.GetNativeBufferPtr()));
 }
Example #5
0
        private bool BindBufferToTensor(int tensorIndex, ComputeBuffer buffer)
        {
            Debug.Assert(buffer.IsValid());
            Debug.Assert(Delegate != TfLiteDelegate.Zero);
            uint bufferID = (uint)buffer.GetNativeBufferPtr().ToInt32();
            var  status   = TfLiteGpuDelegateBindBufferToTensor(Delegate, bufferID, tensorIndex);

            return(status == Interpreter.Status.Ok);
        }
Example #6
0
    private static IntPtr GetBufferPtr(ComputeBuffer buffer)
    {
        IntPtr ptr;
        if (_bufferHandles.TryGetValue(buffer, out ptr))
            return ptr;

        ptr = buffer.GetNativeBufferPtr();
        _bufferHandles.Add(buffer, ptr);
        return ptr;
    }
    private static IntPtr GetBufferPtr(ComputeBuffer buffer)
    {
        if (_bufferHandles.TryGetValue(buffer, out IntPtr ptr))
        {
            return(ptr);
        }

        ptr = buffer.GetNativeBufferPtr();
        _bufferHandles.Add(buffer, ptr);
        return(ptr);
    }
Example #8
0
 static public IntPtr GetFor(ComputeBuffer rt)
 {
     if (cbPtrs.ContainsKey(rt))
     {
         return(cbPtrs[rt]);
     }
     else
     {
         var ptr = rt.GetNativeBufferPtr();
         cbPtrs.Add(rt, ptr);
         return(ptr);
     }
 }
Example #9
0
        public static unsafe void CopyFromUnsafe <T>(this ComputeBuffer dst, ref ComponentDataArray <T> src, int length) where T : struct, IComponentData
        {
            var             stride = dst.stride;
            var             ptr    = dst.GetNativeBufferPtr();
            NativeArray <T> chunkArray;

            for (int copiedCount = 0, chunkLength = 0; copiedCount < length; copiedCount += chunkLength)
            {
                chunkArray  = src.GetChunkArray(copiedCount, length - copiedCount);
                chunkLength = chunkArray.Length;
                UnsafeUtility.MemCpy(ptr.ToPointer(), NativeArrayUnsafeUtility.GetUnsafeBufferPointerWithoutChecks(chunkArray), chunkLength * stride);
                ptr += chunkLength * stride;
            }
        }
        public IntPtr GetShadowParamsPointer()
        {
            if (m_ShadowParamsCB == null)
            {
                return(IntPtr.Zero);
            }

            if (shadowParamsPointer == IntPtr.Zero)
            {
                shadowParamsPointer = m_ShadowParamsCB.GetNativeBufferPtr();
            }

            return(shadowParamsPointer);
        }
    public static int GetNativeBufferPtr(IntPtr l)
    {
        int result;

        try
        {
            ComputeBuffer computeBuffer   = (ComputeBuffer)LuaObject.checkSelf(l);
            IntPtr        nativeBufferPtr = computeBuffer.GetNativeBufferPtr();
            LuaObject.pushValue(l, true);
            LuaObject.pushValue(l, nativeBufferPtr);
            result = 2;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
Example #12
0
    private void Update()
    {
        if (transform.hasChanged)
        {
            _currentSample       = 1;
            transform.hasChanged = false;
        }
        if (Input.GetKeyDown(KeyCode.L))
        {
            Roughness *= 2;
        }
        else if (Input.GetKeyDown(KeyCode.K))
        {
            Roughness /= 2;
        }

        System.IntPtr ptr = buffer.GetNativeBufferPtr();
        Debug.Log(ptr);
    }
Example #13
0
        unsafe public ReadbackBuffer(ComputeBuffer source)
        {
            _source     = source;
            _readBuffer = new NativeArray <int>(source.count + 1, Allocator.Persistent);

            _copyArgs = GCHandle.Alloc(
                new CopyBufferEventArgs {
                source        = source.GetNativeBufferPtr(),
                destination   = (IntPtr)_readBuffer.GetUnsafePtr(),
                lengthInBytes = source.count * 4
            },
                GCHandleType.Pinned
                );

            _copyCommand = new CommandBuffer();
            _copyCommand.IssuePluginEventAndData(
                CopyBuffer_GetCallback(),
                0, _copyArgs.AddrOfPinnedObject()
                );
        }
    void AppendBufferTest()
    {
        shader = (ComputeShader)Resources.Load("shaders/ChunkCompute");

        ComputeBuffer argBuffer = new ComputeBuffer(4, sizeof(int), ComputeBufferType.IndirectArguments);



        int[] args = new int[] { 0, 1, 0, 0 };

        argBuffer.SetData(args);


        Min_Max = new ComputeBuffer(1, sizeof(float) * 2);
        Data    = new ComputeBuffer(18688, sizeof(float) + sizeof(uint), ComputeBufferType.Append);
        Raw     = new ComputeBuffer(18688, sizeof(float) + sizeof(uint));

        Data.SetCounterValue(0);

        int k = shader.FindKernel("CSMain");

        shader.SetBuffer(k, "Min_Max", Min_Max);
        shader.SetBuffer(k, "Data", Data);
        shader.SetBuffer(k, "Raw", Raw);


        Stopwatch watch = new Stopwatch();

        watch.Start();

        shader.Dispatch(k, 18688 / 16, 1, 1);

        Vector2[] min_max = new Vector2[1];


        Min_Max.GetData(min_max);

        Min_Max.GetNativeBufferPtr();



        ComputeBuffer.CopyCount(Data, argBuffer, 0);

        argBuffer.GetData(args);

        watch.Stop();

        Debug.LogFormat("Get Metadata: {0}: {1} - {2}", watch.Elapsed, min_max[0].x, min_max[0].y);
        Debug.Log("count: " + args[0]);

        Debug.Log("instance count: " + args[1]);

        Debug.Log("start count: " + args[2]);

        Debug.Log("start instance:  " + args[3]);

        watch.Restart();



        Result[] data = new Result[args[0]];
        Data.GetData(data);

        watch.Stop();

        Debug.LogFormat("Get Data: {0}: {1}", watch.Elapsed, Mathf.Max(0, 0));
    }
Example #15
0
 public static UniversalAsyncGPUReadbackRequest Request(ComputeBuffer computeBuffer)
 {
     if (SystemInfo.supportsAsyncGPUReadback)
     {
         return(new UniversalAsyncGPUReadbackRequest()
         {
             isPlugin = false,
             uInited = true,
             uDisposd = false,
             uRequest = AsyncGPUReadback.Request(computeBuffer),
         });
     }
     else
     {
         return(new UniversalAsyncGPUReadbackRequest()
         {
             isPlugin = true,
             oRequest = OpenGLAsyncReadbackRequest.CreateComputeBufferRequest((int)computeBuffer.GetNativeBufferPtr(), computeBuffer.stride * computeBuffer.count),
         });
     }
 }
Example #16
0
 private bool BindBufferToTensor(int tensorIndex, ComputeBuffer buffer)
 {
     Debug.Assert(buffer.IsValid());
     Debug.Assert(Delegate != TfLiteDelegate.Zero);
     return(TFLGpuDelegateBindMetalBufferToTensor(Delegate, tensorIndex, buffer.GetNativeBufferPtr()));
 }