- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在播放 opengl 视频流的 ListView 中有多个 TextureView。该代码在 Nexus 4 (4.2)、Galaxy S3 (4.1) 和 HTC One (4.0.3) 上运行良好。但是,当 opengl 线程正在运行(死锁)时,当我尝试在 S2(SPH-D710VMUB,Virgin Mobile,4.0.4)上滚动 ListView 时,会发生 ANR。下面提供了 ANR 跟踪( ListView 上的 isHardwareAccelerated() = true)。
另请注意,如果 GLSurfaceView 用于处理相同的 openGL 代码,它工作正常,但 Z 顺序会与 ICS 设备的同一窗口中的多个 SurfaceView 混淆。 GLTextureView 通过指令转换 Converting from GLSurfaceView to TextureView (via GLTextureView)
编辑 1:尝试了 GLTextureView 的另一个实现,能够找到确切的行。“eglSwapBuffers(EGLDisplay 显示,EGLSurface 表面);”由于某种原因会在 S2 上阻塞。
有人注意到:http://vec.io/posts/a-workaround-to-fix-opengl-eglswapbuffers-freezing完成();是需要的。任何想法?
编辑 2:添加 glFinish() 或 eglWaitGL() 没有帮助。 :( 怀疑他们会立即返回,不管......
编辑 3:使用 https://github.com/eaglesakura/gltextureview 重现它:参见 https://github.com/eaglesakura/gltextureview/issues/1
编辑 4:如果有人想知道,这是我对 GLTextureView 的实现(https://github.com/edisonw/jjmpeg/tree/jjmpeg-1.0-dev/jjmpeg-android/src/com/edisonwang/android/player),它还包括 FFMpeg 播放内容。
编辑 5:原来可能是 Qualcomm Adreno 200 系列错误:https://developer.qualcomm.com/forum/qdevnet-forums/mobile-gaming-graphics-optimization-adreno/11525
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x40c30460 self=0x129c0
| sysTid=21854 nice=0 sched=0/0 cgrp=default handle=1074746664
| schedstat=( 434522015 268952863 603 ) utm=34 stm=9 core=0
at android.view.GLES20Canvas.nUpdateTextureLayer(Native Method)
at android.view.GLES20TextureLayer.update(GLES20TextureLayer.java:77)
at android.view.TextureView.applyUpdate(TextureView.java:388)
at android.view.TextureView.draw(TextureView.java:276)
at android.view.View.getDisplayList(View.java:10586)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10549)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10549)
at android.view.ViewGroup.drawChild(ViewGroup.java:2850)
at android.widget.ListView.drawChild(ListView.java:3225)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
at android.widget.AbsListView.dispatchDraw(AbsListView.java:2271)
at android.widget.ListView.dispatchDraw(ListView.java:3220)
at android.view.View.draw(View.java:11150)
at android.widget.AbsListView.draw(AbsListView.java:3728)
at android.view.View.getDisplayList(View.java:10586)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10549)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10549)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10549)
at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:842)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2011)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1735)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2547)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
at dalvik.system.NativeStart.main(Native Method)
"AsyncTask #2" prio=5 tid=19 WAIT
| group="main" sCount=1 dsCount=0 obj=0x415cdf00 self=0x3aa178
| sysTid=8059 nice=10 sched=0/0 cgrp=bg_non_interactive handle=4722816
| schedstat=( 369083 125724959 3 ) utm=0 stm=0 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x415ce020> (a java.lang.VMThread) held by tid=19 (AsyncTask #2)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
"AsyncTask #1" prio=5 tid=13 WAIT
| group="main" sCount=1 dsCount=0 obj=0x415ca7d8 self=0x30c370
| sysTid=8050 nice=10 sched=0/0 cgrp=bg_non_interactive handle=3105360
| schedstat=( 448085 5989790 7 ) utm=0 stm=0 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x415ca970> (a java.lang.VMThread) held by tid=13 (AsyncTask #1)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
"GLThread 320" prio=5 tid=12 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41535368 self=0x2f7308
| sysTid=8049 nice=0 sched=0/0 cgrp=default handle=2690528
| schedstat=( 1744387397 1741438396 2048 ) utm=169 stm=5 core=1
at com.google.android.gles_jni.EGLImpl.eglSwapBuffers(Native Method)
ndroid.player.GLTextureView$GLThread.run(GLTextureView.java:1261)
"Binder Thread #2" prio=5 tid=10 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x4150bfd8 self=0x217e08
| sysTid=8038 nice=0 sched=0/0 cgrp=default handle=2155984
| schedstat=( 1496167 16950375 10 ) utm=0 stm=0 core=0
at dalvik.system.NativeStart.run(Native Method)
"Binder Thread #1" prio=5 tid=9 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x414fb130 self=0x1bd740
| sysTid=8037 nice=0 sched=0/0 cgrp=default handle=1595520
| schedstat=( 2633041 25123960 10 ) utm=0 stm=0 core=0
at dalvik.system.NativeStart.run(Native Method)
"FinalizerWatchdogDaemon" daemon prio=5 tid=8 TIMED_WAIT
| group="main" sCount=1 dsCount=0 obj=0x414f7490 self=0x182a50
| sysTid=8036 nice=0 sched=0/0 cgrp=default handle=1433120
| schedstat=( 288708 6619500 5 ) utm=0 stm=0 core=0
at java.lang.VMThread.sleep(Native Method)
at java.lang.Thread.sleep(Thread.java:1031)
at java.lang.Thread.sleep(Thread.java:1013)
at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:213)
at java.lang.Thread.run(Thread.java:856)
"FinalizerDaemon" daemon prio=5 tid=7 WAIT
| group="main" sCount=1 dsCount=0 obj=0x414f7338 self=0x105230
| sysTid=8035 nice=0 sched=0/0 cgrp=default handle=1662112
| schedstat=( 3763081 5489124 25 ) utm=0 stm=0 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x40c265d0> (a java.lang.ref.ReferenceQueue)
at java.lang.Object.wait(Object.java:401)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
at java.lang.Thread.run(Thread.java:856)
"ReferenceQueueDaemon" daemon prio=5 tid=6 WAIT
| group="main" sCount=1 dsCount=0 obj=0x414f71d0 self=0xfa1f0
| sysTid=8034 nice=0 sched=0/0 cgrp=default handle=1662016
| schedstat=( 1831625 1206249 33 ) utm=0 stm=0 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x40c264f8>
at java.lang.Object.wait(Object.java:364)
at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:128)
at java.lang.Thread.run(Thread.java:856)
"Compiler" daemon prio=5 tid=5 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x414f70e0 self=0x1b8688
| sysTid=8033 nice=0 sched=0/0 cgrp=default handle=747976
| schedstat=( 182108462 246633083 1197 ) utm=11 stm=7 core=1
at dalvik.system.NativeStart.run(Native Method)
"JDWP" daemon prio=5 tid=4 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x414f6ff8 self=0x206680
| sysTid=8032 nice=0 sched=0/0 cgrp=default handle=1450968
| schedstat=( 1964583 1505832 16 ) utm=0 stm=0 core=1
at dalvik.system.NativeStart.run(Native Method)
"Signal Catcher" daemon prio=5 tid=3 RUNNABLE
| group="system" sCount=0 dsCount=0 obj=0x414f6f00 self=0x1b7dd8
| sysTid=8031 nice=0 sched=0/0 cgrp=default handle=1660128
| schedstat=( 4634792 2711334 6 ) utm=0 stm=0 core=0
at dalvik.system.NativeStart.run(Native Method)
"GC" daemon prio=5 tid=2 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x414f6e20 self=0x20adb8
| sysTid=8028 nice=0 sched=0/0 cgrp=default handle=1365944
| schedstat=( 132084797 114875290 96 ) utm=10 stm=2 core=1
at dalvik.system.NativeStart.run(Native Method)
关于如何调试或为什么会发生的任何想法?
最佳答案
从谷歌得到官方回应,这确实是三星针对这个非常特殊的设备的驱动程序错误(据说已修复)。
关于android - Galaxy S2 上的 ANR TextureView(GPU 驱动程序问题?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15771971/
谁能解释或指出在多 GPU/多显示器设置中渲染如何工作的解释(或至少一些线索)? 例如,我安装了 5 个 NVIDIA Quadro 4000 视频卡并连接了 9 个显示器。显示不进行任何分组。刚刚在
以下代码报错: import spacy spacy.require_gpu() Traceback (most recent call last): File "/home/user/Pycha
正如问题已经暗示的那样,我是深度学习的新手。我知道模型的学习过程在没有 GPU 的情况下会很慢。如果我愿意等待,如果我只使用CPU可以吗? 最佳答案 在计算深度学习(以及一般的神经网络)中执行的许多操
我知道 Renderscript 的设计是为了掩盖我正在运行的处理器的事实,但是有没有办法编写代码,以便在支持 GPU 计算的设备(目前是 Nexus 10)上运行显卡?有什么方法可以判断脚本的功能正
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我想以编程方式找出可用的 GPU 及其当前内存使用情况,并根据内存可用性使用其中一个 GPU。我想在 PyTorch 中执行此操作。 我在这个 post 中看到了以下解决方案: import torc
我喜欢 GPU Gems 的结构化技术摘要。但是自上次发布以来已经过去了很长时间,应该开发新算法来处理新型硬件。 我可以阅读有关最近 GPU 技术成就的哪些信息? 潜伏在编程板上是唯一的方法吗? 最佳
我一直在做一些关于测量数据传输延迟的实验 CPU->GPU 和 GPU->CPU。我发现对于特定消息大小,CPU->GPU 数据传输速率几乎是 GPU->CPU 传输速率的两倍。谁能解释我为什么会这样
当我使用选项 --gres=gpu:1 向具有两个 GPU 的节点提交 SLURM 作业时,如何获取为该作业分配的 GPU ID?是否有用于此目的的环境变量?我使用的 GPU 都是 nvidia GP
我用 gpu、cuda 7.0 和 cudnn 6.5 安装了 tensorflow。当我导入 tensorflow 时,它运行良好。 我正在尝试在 Tensorflow 上运行一个简单的矩阵乘法,但
我们正在寻找有关 slurm salloc gpu 分配的一些建议。目前,给定: % salloc -n 4 -c 2 -gres=gpu:1 % srun env | grep CUDA CUD
我是否必须自定义为非 GPU Tensorflow 库编写的代码以适应tensorflow-gpu 库? 我有一个 GPU,想运行仅为非 GPU tensorflow 库编写的 Python 代码。我
我是否必须自定义为非 GPU Tensorflow 库编写的代码以适应tensorflow-gpu 库? 我有一个 GPU,想运行仅为非 GPU tensorflow 库编写的 Python 代码。我
我正在使用 pytorch 框架训练网络。我的电脑里有 K40 GPU。上周,我在同一台计算机上添加了 1080。 在我的第一个实验中,我在两个 GPU 上观察到相同的结果。然后,我在两个 GPU 上
有没有办法在 Slurm 上超额订阅 GPU,即运行共享一个 GPU 的多个作业/作业步骤?我们只找到了超额订阅 CPU 和内存的方法,但没有找到 GPU。 我们希望在同一 GPU 上并行运行多个作业
我可以访问 4 个 GPU(不是 root 用户)。其中一个 GPU(2 号)表现怪异,它们的一些内存被阻塞但功耗和温度非常低(好像没有任何东西在上面运行)。请参阅下图中 nvidia-smi 的详细
我正在尝试通过 Tensorflow 运行示例 seq2seq,但它不会使用 GPU。以下是我在带有 Tesla K20x 的 Linux 系统上安装 Tensorflow 所采取的步骤 git cl
一位电气工程师最近提醒我不要使用 GPU 进行科学计算(例如,在精度非常重要的地方),因为没有像 CPU 那样的硬件保护措施。这是真的吗?如果是的话,典型硬件中的问题有多普遍/严重? 最佳答案 实际上
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
最近我研究了强化学习,有一个问题困扰着我,我找不到答案:如何使用 GPU 有效地完成训练?据我所知,需要与环境持续交互,这对我来说似乎是一个巨大的瓶颈,因为这项任务通常是非数学的/不可并行化的。然而,
我是一名优秀的程序员,十分优秀!