这似乎是特定于Fire的GPU问题,我很感激任何帮助或建议.
在大多数情况下,我的塔防游戏能够以60 fps的速度运行,即使有数十个敌人和塔都在每个方向射击.然而,在看似随机的时间(即使没有任何事情发生 - 就像坐在主菜单上)非常均匀间隔400毫秒的故障以大约2-3秒的间隔暂停游戏.然后突然间连线将消失,16x16像素的纹理块将随机无法渲染.
这两个故障似乎是相互排斥的,就像我说的那样,只需启动游戏并从主菜单导航到水平选择屏幕即可触发,其中加载了最少的资源并且发生了很少的游戏逻辑.我使用OpenSL来获得音效,我注意到禁用sfx会将连接时间改为280ms.
然后我手动将帧速率从60 fps强制到30 fps(通过在帧滴答循环中插入睡眠),两个毛刺完全消失.
这是一个屏幕上限,演示纹理不呈现.无论深度/模板值是否打开或关闭,都会在所有32位渲染表面中发生此错误.
谢谢!
编辑:实际上,显然纹理闪烁发生在任何帧速率,然而,在40到45 fps之间的某个地方,400毫秒的故障消失了.


好的,这是一个非常微妙的驱动程序错误,不一定特定于 Kindle Fire。我希望能帮助人们在未来避免类似的痛苦。我已经清楚地概述了症状,但错误的根源来自于设置剪刀矩形。
本质上,我们有许多动画 UI 元素可以在屏幕上放大和缩小,因此我们对剪刀矩形感到非常时髦。触发器似乎将剪刀矩形设置在屏幕外,然后水平渲染在矩形之外。这样做会使 GPU 陷入某种微妙的混乱状态,这种状态似乎不会立即显现出来,但会逐渐变得更糟。
此外,这似乎还修复了 Droid RAZR 上的一个错误,Droid RAZR 具有与 Fire 相同的 GPU。该错误是游戏中 5 秒的冻结,我们在 logcat 中看到:
W/SharedBufferStack(14208): waitForCondition(LockCondition) timed out (identity=173, status=0). CPU may be pegged. trying again.
Run Code Online (Sandbox Code Playgroud)
显然,这些类型的错误很难追踪并查明确切的条件,但它肯定与屏幕外剪刀矩形之外的渲染有关。
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |