-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Barracuda OPENGL native errors on Android #21
Comments
Some of these errors might appear on mobile devices, as some of compute kernels are too complex for simpler mobile GPUs, but in many cases Barracuda should fallback to some less complicated implementation. |
My phone supports OpenGLES 3.2, so if Exception |
At the moment we dropped GLES support on Android and focusing on Vulkan instead. Please let us know if Vulkan doesn't work for you. |
I have updated project to barracuda 0.7.0 and sadly the error still occur. I have tested lately and I noticed that first frame pass without problem but on second appears crash with the same error. |
Hi! I've encountered some issues while developing mobile detection app.
On my device Xiaomi Redmi Note 4 in logs appear two errors:
`-------- GLSL link error: Warning: barrier used in non-uniform control flowWarning: barrier used in non-uniform control flow
UnityEngine.Resources:Load(String, Type)
UnityEngine.Resources:Load(String) (at /Users/builduser/buildslave/unity/build/Runtime/Export/Resources/Resources.bindings.cs:46)
Barracuda.ComputeShaderSingleton:LoadIf(Boolean, String) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\ComputeShaderSingleton.cs:38)
Barracuda.ComputeShaderSingleton:LoadIf(Boolean, String, List`1) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\ComputeShaderSingleton.cs:45)
Barracuda.ComputeShaderSingleton:.ctor() (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\ComputeShaderSingleton.cs:24)
Barracuda.ComputeShaderSingleton:.cctor() (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\ComputeShaderSingleton.cs:11)
Barracuda.BarracudaBackendsFactory:CreateOps(Type, ITensorAllocator, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\BarracudaBackendsFactory.cs:50)
Barracuda.BarracudaBackendsFactory:CreateWorker(Type, Model, String[], String[], Boolean, Type) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\BarracudaBackendsFactory.cs:99)
Barracuda.WorkerFactory:CreateWorker(Type, Model, String[], String[], Boolean, Type) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Barracuda.cs:331)
Barracuda.WorkerFactory:CreateWorker(Model, String[], String[], Device, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Barracuda.cs:345)
Barracuda.WorkerFactory:CreateWorker(Model, String[], Device, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Barracuda.cs:426)
Barracuda.WorkerFactory:CreateWorker(Model, Device, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Barracuda.cs:414)
Barracuda.WorkerFactory:CreateWorker(Model, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Barracuda.cs:403)
NNHandler:.ctor(NNModel) (at C:\Users\Kuuupa\YOLO\Assets\Scripts\NN\NNHandler.cs:13)
NNImageHandler:Start() (at C:\Users\Kuuupa\YOLO\Assets\Scripts\NNImageHandler.cs:33)
[./Runtime/GfxDevice/opengles/ApiGLES.cpp line 687]
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Resources/Resources.bindings.cs Line: 46)`
and
ERROR: Unable to link compute shader: Dense.Dense_T16x16_R4x4 UnityEngine.Resources:Load(String, Type) UnityEngine.Resources:Load(String) (at /Users/builduser/buildslave/unity/build/Runtime/Export/Resources/Resources.bindings.cs:46) Barracuda.ComputeShaderSingleton:LoadIf(Boolean, String) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\ComputeShaderSingleton.cs:38) Barracuda.ComputeShaderSingleton:LoadIf(Boolean, String, List
1) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\ComputeShaderSingleton.cs:45)Barracuda.ComputeShaderSingleton:.ctor() (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\ComputeShaderSingleton.cs:24)
Barracuda.ComputeShaderSingleton:.cctor() (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\ComputeShaderSingleton.cs:11)
Barracuda.BarracudaBackendsFactory:CreateOps(Type, ITensorAllocator, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\BarracudaBackendsFactory.cs:50)
Barracuda.BarracudaBackendsFactory:CreateWorker(Type, Model, String[], String[], Boolean, Type) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\BarracudaBackendsFactory.cs:99)
Barracuda.WorkerFactory:CreateWorker(Type, Model, String[], String[], Boolean, Type) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Barracuda.cs:331)
Barracuda.WorkerFactory:CreateWorker(Model, String[], String[], Device, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Barracuda.cs:345)
Barracuda.WorkerFactory:CreateWorker(Model, String[], Device, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Barracuda.cs:426)
Barracuda.WorkerFactory:CreateWorker(Model, Device, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Barracuda.cs:414)
Barracuda.WorkerFactory:CreateWorker(Model, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Barracuda.cs:403)
NNHandler:.ctor(NNModel) (at C:\Users\Kuuupa\YOLO\Assets\Scripts\NN\NNHandler.cs:13)
NNImageHandler:Start() (at C:\Users\Kuuupa\YOLO\Assets\Scripts\NNImageHandler.cs:33)
[./Runtime/GfxDevice/opengles/GfxDeviceGLES.cpp line 2571]
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Resources/Resources.bindings.cs Line: 46)
`
one after another.
And on end of interference there is
`allocation 0x0xc0000001 already registered @ ./Runtime/GfxDevice/opengles/DataBuffersGLES.cpp:l234 size 4096; now calling from ./Runtime/GfxDevice/opengles/DataBuffersGLES.cpp:l234 size 84500?
UnityEngine.ComputeBuffer:InitBuffer(Int32, Int32, ComputeBufferType, ComputeBufferMode)
UnityEngine.ComputeBuffer:.ctor(Int32, Int32, ComputeBufferType, ComputeBufferMode, Int32) (at /Users/builduser/buildslave/unity/build/Runtime/Export/Shaders/ComputeShader.bindings.cs:90)
UnityEngine.ComputeBuffer:.ctor(Int32, Int32) (at /Users/builduser/buildslave/unity/build/Runtime/Export/Shaders/ComputeShader.bindings.cs:65)
Barracuda.ComputeTensorData:.ctor(TensorShape, String, Boolean) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\BarracudaReferenceCompute.cs:37)
Barracuda.ReferenceComputeOps:Pin(Tensor) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\BarracudaReferenceCompute.cs:550)
Barracuda.ComputeOps:Conv2D(Tensor, Tensor, Tensor, Int32[], Int32[]) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\BarracudaCompute.cs:654)
Barracuda.PrecompiledComputeOps:Conv2D(Tensor, Tensor, Tensor, Int32[], Int32[]) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\BarracudaPrecompiledCompute.cs:235)
Barracuda.VerboseOps:Barracuda.IOps.Conv2D(Tensor, Tensor, Tensor, Int32[], Int32[]) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\VerboseOps.cs:40)
Barracuda.d__27:MoveNext() (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\GenericWorker.cs:204)
Barracuda.GenericWorker:Execute() (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\GenericWorker.cs:117)
Barracuda.GenericWorker:Execute(Tensor) (at C:\Users\Kuuupa\YOLO\Library\PackageCache\com.unity.barracuda@0.5.0-preview\Barracuda\Core\Backends\GenericWorker.cs:111)
NNImageHandler:Update() (at C:\Users\Kuuupa\YOLO\Assets\Scripts\NNImageHandler.cs:43)
[./Runtime/Allocator/MemoryManager.cpp line 1645]
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Shaders/ComputeShader.bindings.cs Line: 90)
`
But these 3 errors didn't occur on another tested device that is Huawei Mate 10.
Another have place if I try run WebCamTexture together with Barracuda Worker on my Xiaomi :
`
OPENGL NATIVE PLUG-IN ERROR: GL_INVALID_ENUM: enum argument out of range
UnityEngine.WebCamTexture:INTERNAL_CALL_Play(WebCamTexture)
UnityEngine.WebCamTexture:Play() (at /Users/builduser/buildslave/unity/build/artifacts/Android/modules/Audio/UnityEngineWebCamTextureBindings.gen.cs:63)
NNImageHandler:Start() (at C:\Users\Kuuupa\YOLO\Assets\Scripts\NNImageHandler.cs:30)
[./Runtime/GfxDevice/opengles/GfxDeviceGLES.cpp line 348]
(Filename: /Users/builduser/buildslave/unity/build/artifacts/Android/modules/Audio/UnityEngineWebCamTextureBindings.gen.cs Line: 63)
`
I have no idea if these errors have something in common so I post them as one issue.
They didn't occur also on my laptop while testing.
I use YOLOv2 Tiny network, downloaded already in onnx format.
The text was updated successfully, but these errors were encountered: