- 浏览: 1065980 次
- 性别:
- 来自: 南昌
文章分类
- 全部博客 (276)
- 生活 (1)
- 代码之美 (22)
- Media (7)
- Android Widget (3)
- Android Intent (1)
- Android Activity (4)
- UI event handle--UI事件处理机制 (2)
- Java基础知识 (12)
- android Databases (5)
- Android 系统知识 (70)
- 平常遇到的问题与解决方法 (38)
- Android TextView/EditView (2)
- Thinking Java (1)
- android webkit (6)
- JSON (1)
- XML (4)
- HTTP (1)
- Google Weather API (1)
- android 2.3 NFC (10)
- android app (20)
- android framework (7)
- C++ (2)
- android System (5)
- Pthread (1)
- Wifi (8)
- Unix/Linux C (8)
- Android 4.0 (1)
- Mail (1)
- Smack 源码学习 (4)
- iOS (4)
- Android (1)
- git (1)
- Gallery3d (2)
- React-Natice (1)
最新评论
-
dd18349182956:
你是用的smack哪个版本?我用的smack4.1.3和sma ...
关于socket长连接的心跳包 -
xukaiyin:
全英文
getApplicationContext()与this,getBaseContext() -
裂风矢:
...
<category android:name="android.intent.category.DEFAULT" /> 惹的祸 -
xanthodont:
mark一下
XMPP——Smack -
Evilover3:
mark一下,学习了
XMPP——Smack
Suite / Plan:VTS / cts-on-gsi
Suite / Build: 8.1_R4 / 4766758
test_result_failures.html显示:
dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_in_vertex
fail
=== with config {glformat=rgba8888d24s8ms0,rotation=unspecified,surfacetype=window,required=true} ===
dEQP-GLES3.functional.shaders.large_constant_arrays.indexing#float_128_fragment
fail
=== with config {glformat=rgba8888d24s8ms0,rotation=unspecified,surfacetype=window,required=true} ===
dEQP-GLES3.functional.shaders.large_constant_arrays.indexing#float_128_vertex
fail
=== with config {glformat=rgba8888d24s8ms0,rotation=unspecified,surfacetype=window,required=true} ===
dEQP-GLES3.functional.shaders.large_constant_arrays.indexing#float_16_fragment
fail
=== with config {glformat=rgba8888d24s8ms0,rotation=unspecified,surfacetype=window,required=true} ===
host log显示:
07-24 01:45:25 D/ModuleListener: ModuleListener.testStarted(dEQP-VK.info#build)
07-24 01:45:25 D/ModuleListener: ModuleListener.testFailed(dEQP-VK.info#build, === with config {glformat=,rotation=unspecified,surfacetype=window,required=false} ===
Abort: Test cannot be executed)
07-24 01:45:25 I/ConsoleReporter: [1/227456 armeabi-v7a CtsDeqpTestCases 620191] dEQP-VK.info#build fail: === with config {glformat=,rotation=unspecified,surfacetype=window,required=false} ===
Abort: Test cannot be executed
07-24 01:45:25 I/FailureListener: FailureListener.testFailed dEQP-VK.info#build false false false
07-24 01:45:25 D/ModuleListener: ModuleListener.testEnded(dEQP-VK.info#build, {})
07-24 01:45:25 D/ddms: Reading file permision of /tmp/temp573772372853853837.txt as: rw-rw-r--
07-24 01:45:33 D/ModuleListener: ModuleListener.testStarted(dEQP-VK.info#device)
07-24 01:45:33 D/ModuleListener: ModuleListener.testFailed(dEQP-VK.info#device, === with config {glformat=,rotation=unspecified,surfacetype=window,required=false} ===
Abort: Test cannot be executed)
07-24 01:45:33 I/ConsoleReporter: [2/227456 armeabi-v7a CtsDeqpTestCases 620191] dEQP-VK.info#device fail: === with config {glformat=,rotation=unspecified,surfacetype=window,required=false} ===
Abort: Test cannot be executed
07-24 01:45:33 I/FailureListener: FailureListener.testFailed dEQP-VK.info#device false false false
07-24 01:45:33 D/ModuleListener: ModuleListener.testEnded(dEQP-VK.info#device, {})
07-24 01:45:33 D/ddms: Reading file permision of /tmp/temp8053606987980308468.txt as: rw-rw-r--
07-24 01:45:41 D/ModuleListener: ModuleListener.testStarted(dEQP-VK.info#platform)
07-24 01:45:41 D/ModuleListener: ModuleListener.testFailed(dEQP-VK.info#platform, === with config {glformat=,rotation=unspecified,surfacetype=window,required=false} ===
Abort: Test cannot be executed)
经过分析是由于系统不支持vulkan feature 而导致的,但在跑CtsDeqpTestCases的时候,在DeqpTestRunner.java
这个从android-cts\testcases\CtsDeqpTestCases.config中解析
<test class="com.drawelements.deqp.runner.DeqpTestRunner">
<option name="deqp-package" value="dEQP-VK"/>
<option name="deqp-caselist-file" value="vk-master.txt"/>
<option name="runtime-hint" value="2h29m"/>
</test>
通过pm list features来获取device支持的fearture,在fail的机器上我们执行该命令得到的结果包含了:
feature:android.hardware.vulkan.compute
feature:android.hardware.vulkan.level
feature:android.hardware.vulkan.version=4194307
导致
执行了 runTests();但实际上机器是不支持vulkan。
在高通平台是可以通过以下设置可以得知该结论:
但pm list features是读取/vendor/etc/permission/下的文件来确定feature的,查看fail的机器再该目录下有如下文件;
android.hardware.vulkan.compute-0.xml
android.hardware.vulkan.level-0.xml
android.hardware.vulkan.version-1_0_3.xml
所以得到结果isSupportedVulkan返回true.
所以解决方法就是系统不要copy上面三个文件到/vendor/etc/permission/即可,这样CtsDeqpTestCases就会fakePassTests,跳过了对vulkan的测试。高通平台是通过TARGET_NOT_SUPPORT_VULKAN 这个值来决定是否copyvulkan相关的文件到vendor下。
Suite / Build: 8.1_R4 / 4766758
test_result_failures.html显示:
dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_in_vertex
fail
=== with config {glformat=rgba8888d24s8ms0,rotation=unspecified,surfacetype=window,required=true} ===
dEQP-GLES3.functional.shaders.large_constant_arrays.indexing#float_128_fragment
fail
=== with config {glformat=rgba8888d24s8ms0,rotation=unspecified,surfacetype=window,required=true} ===
dEQP-GLES3.functional.shaders.large_constant_arrays.indexing#float_128_vertex
fail
=== with config {glformat=rgba8888d24s8ms0,rotation=unspecified,surfacetype=window,required=true} ===
dEQP-GLES3.functional.shaders.large_constant_arrays.indexing#float_16_fragment
fail
=== with config {glformat=rgba8888d24s8ms0,rotation=unspecified,surfacetype=window,required=true} ===
host log显示:
07-24 01:45:25 D/ModuleListener: ModuleListener.testStarted(dEQP-VK.info#build)
07-24 01:45:25 D/ModuleListener: ModuleListener.testFailed(dEQP-VK.info#build, === with config {glformat=,rotation=unspecified,surfacetype=window,required=false} ===
Abort: Test cannot be executed)
07-24 01:45:25 I/ConsoleReporter: [1/227456 armeabi-v7a CtsDeqpTestCases 620191] dEQP-VK.info#build fail: === with config {glformat=,rotation=unspecified,surfacetype=window,required=false} ===
Abort: Test cannot be executed
07-24 01:45:25 I/FailureListener: FailureListener.testFailed dEQP-VK.info#build false false false
07-24 01:45:25 D/ModuleListener: ModuleListener.testEnded(dEQP-VK.info#build, {})
07-24 01:45:25 D/ddms: Reading file permision of /tmp/temp573772372853853837.txt as: rw-rw-r--
07-24 01:45:33 D/ModuleListener: ModuleListener.testStarted(dEQP-VK.info#device)
07-24 01:45:33 D/ModuleListener: ModuleListener.testFailed(dEQP-VK.info#device, === with config {glformat=,rotation=unspecified,surfacetype=window,required=false} ===
Abort: Test cannot be executed)
07-24 01:45:33 I/ConsoleReporter: [2/227456 armeabi-v7a CtsDeqpTestCases 620191] dEQP-VK.info#device fail: === with config {glformat=,rotation=unspecified,surfacetype=window,required=false} ===
Abort: Test cannot be executed
07-24 01:45:33 I/FailureListener: FailureListener.testFailed dEQP-VK.info#device false false false
07-24 01:45:33 D/ModuleListener: ModuleListener.testEnded(dEQP-VK.info#device, {})
07-24 01:45:33 D/ddms: Reading file permision of /tmp/temp8053606987980308468.txt as: rw-rw-r--
07-24 01:45:41 D/ModuleListener: ModuleListener.testStarted(dEQP-VK.info#platform)
07-24 01:45:41 D/ModuleListener: ModuleListener.testFailed(dEQP-VK.info#platform, === with config {glformat=,rotation=unspecified,surfacetype=window,required=false} ===
Abort: Test cannot be executed)
经过分析是由于系统不支持vulkan feature 而导致的,但在跑CtsDeqpTestCases的时候,在DeqpTestRunner.java
/** * Parse vulkan nature from package name */ private boolean isVulkanPackage() { if ("dEQP-GLES2".equals(mDeqpPackage) || "dEQP-GLES3".equals(mDeqpPackage) || "dEQP-GLES31".equals(mDeqpPackage) || "dEQP-EGL".equals(mDeqpPackage)) { return false; } else if ("dEQP-VK".equals(mDeqpPackage)) { return true; } else { throw new IllegalStateException("dEQP runner was created with illegal name"); } }
这个从android-cts\testcases\CtsDeqpTestCases.config中解析
<test class="com.drawelements.deqp.runner.DeqpTestRunner">
<option name="deqp-package" value="dEQP-VK"/>
<option name="deqp-caselist-file" value="vk-master.txt"/>
<option name="runtime-hint" value="2h29m"/>
</test>
/** * Check if device supports Vulkan. */ private boolean isSupportedVulkan () throws DeviceNotAvailableException, CapabilityQueryFailureException { final Set<String> features = getDeviceFeatures(mDevice); for (String feature : features) { if (feature.startsWith(FEATURE_VULKAN_LEVEL)) { return true; } } return false; }
/** * Return feature set supported by the device */ private Set<String> getDeviceFeatures(ITestDevice device) throws DeviceNotAvailableException, CapabilityQueryFailureException { if (mDeviceFeatures == null) { mDeviceFeatures = queryDeviceFeatures(device); } return mDeviceFeatures; } /** * Query feature set supported by the device */ private static Set<String> queryDeviceFeatures(ITestDevice device) throws DeviceNotAvailableException, CapabilityQueryFailureException { // NOTE: Almost identical code in BaseDevicePolicyTest#hasDeviceFeatures // TODO: Move this logic to ITestDevice. String command = "pm list features"; String commandOutput = device.executeShellCommand(command); // Extract the id of the new user. HashSet<String> availableFeatures = new HashSet<>(); for (String feature: commandOutput.split("\\s+")) { // Each line in the output of the command has the format "feature:{FEATURE_VALUE}". String[] tokens = feature.split(":"); if (tokens.length < 2 || !"feature".equals(tokens[0])) { CLog.e("Failed parse features. Unexpect format on line \"%s\"", tokens[0]); throw new CapabilityQueryFailureException(); } availableFeatures.add(tokens[1]); } return availableFeatures; }
通过pm list features来获取device支持的fearture,在fail的机器上我们执行该命令得到的结果包含了:
feature:android.hardware.vulkan.compute
feature:android.hardware.vulkan.level
feature:android.hardware.vulkan.version=4194307
导致
final boolean isSupportedApi = (isOpenGlEsPackage() && isSupportedGles()) || (isVulkanPackage() && isSupportedVulkan()) || (!isOpenGlEsPackage() && !isVulkanPackage()); if (!isSupportedApi || mCollectTestsOnly) { // Pass all tests if OpenGL ES version is not supported or we are collecting // the names of the tests only fakePassTests(listener); } else if (!mRemainingTests.isEmpty()) { // Make sure there is no pre-existing package form earlier interrupted test run. uninstallTestApk(); installTestApk(); mInstanceListerner.setSink(listener); mDeviceRecovery.setDevice(mDevice); runTests(); uninstallTestApk(); }
执行了 runTests();但实际上机器是不支持vulkan。
在高通平台是可以通过以下设置可以得知该结论:
"msm8909") case "$soc_hwplatform" in *) setprop persist.graphics.vulkan.disable true setprop ro.opengles.version 196608 ;; esac ;; //Remove vulkan specific features if (SystemProperties.getBoolean("persist.graphics.vulkan.disable", false)) { removeFeature(PackageManager.FEATURE_VULKAN_HARDWARE_LEVEL); removeFeature(PackageManager.FEATURE_VULKAN_HARDWARE_VERSION); removeFeature(PackageManager.FEATURE_VULKAN_HARDWARE_COMPUTE); }
但pm list features是读取/vendor/etc/permission/下的文件来确定feature的,查看fail的机器再该目录下有如下文件;
android.hardware.vulkan.compute-0.xml
android.hardware.vulkan.level-0.xml
android.hardware.vulkan.version-1_0_3.xml
所以得到结果isSupportedVulkan返回true.
所以解决方法就是系统不要copy上面三个文件到/vendor/etc/permission/即可,这样CtsDeqpTestCases就会fakePassTests,跳过了对vulkan的测试。高通平台是通过TARGET_NOT_SUPPORT_VULKAN 这个值来决定是否copyvulkan相关的文件到vendor下。
发表评论
-
Android Webview加载www.youtube.com的问题
2019-04-25 10:36 990Android Webview加载www.youtube.co ... -
EditText键盘删除字符的原理
2018-10-29 19:21 1246转https://blog.csdn.net/tankai19 ... -
Background execution not allowed
2018-10-22 19:02 358111-05 10:08:18.058 673 736 ... -
failed to set system property
2018-10-17 09:21 4366在App的mk文件设置了LOCAL_CERTIFICATE : ... -
在DocumentUI中的Recent(最近)列表无法显示图片的缩略图
2018-06-12 18:23 938今天客户提了一个bug说在短信添加附件,界面无法显示缩略图。接 ... -
在任务栏中清除掉播放器的进程,状态栏仍有音乐播放器状态,且音乐仍在后台播放
2018-06-05 11:28 1635在任务栏中清除掉播放器的进程,状态栏仍有音乐播放器状态,且音乐 ... -
junit.framework.AssertionFailedError: Failed to get achievable frame rates for O
2018-05-25 15:41 2343之前对于CTS测试的失败case接触不多,组长突然转了这样一个 ... -
Android 模拟各种事件的方法
2018-05-17 16:30 1523有时候没有对应的硬件设备,那我们就得通过某种方式来模拟。比如模 ... -
Android Email 新建邮件时一直显示“waiting for sync”
2018-02-28 15:48 989当用户在Setting中清除了Email的data,再返回到E ... -
javax.net.ssl.SSLHandshakeException: Unacceptable certificate: CN=GeoTrust SSL C
2018-01-30 16:48 3771最近从Android N升级到Android O,发现163的 ... -
Email中附件名称中包含中文字符显示乱码
2017-11-28 17:09 1609Email中附件名称中包含中文字符显示乱码是因为附件虽包含了中 ... -
不能再通过createPackageContext来访问另外一个应用的资源(Sharepreference)
2017-11-14 17:22 1462以前我们可以通过createPackageContext来访问 ... -
当Email未设置账户时,通过ACTION_SENDTO启动会报ActivityNotFoundException
2017-09-27 18:15 534当Email未设置账户时,通过ACTION_SENDTO启动会 ... -
java.lang.SecurityException: Permission Denial: reading...requires android.permi
2016-05-12 11:12 2369一直在忙于Gallery,最近遇到了这样的bug,在Setti ... -
android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a read
2015-11-27 14:50 2956android.database.sqlite.SQLiteR ... -
AsyncTask
2015-08-21 17:43 416转自http://blog.csdn.net/hitlion2 ... -
解决IllegalStateException: Can not perform this action after onSaveInstanceState
2015-08-07 18:07 1090转自http://www.cnblogs.com/zgz345 ... -
Android setTag方法的key问题
2015-08-03 19:22 1072转自http://www.cnblogs.com/whitew ... -
ActivityGroup对子Activity的管理
2013-06-27 17:41 2104转自http://eyeandroid.diandian.co ... -
listview在activitygroup切换后无法点击的问题
2013-05-14 10:14 1495转自:http://blog.csdn.net/daguaio ...
相关推荐
"fail2ban 安装与设置" fail2ban 是一款防火墙工具,主要用于保护 Linux 服务器免受恶意攻击。下面是 fail2ban 的安装和设置过程。 安装 fail2ban 首先,我们需要下载 fail2ban 的安装包。我们可以使用 wget 命令...
《深入理解KMP算法及其fail数组的计算》 KMP(Knuth-Morris-Pratt)算法是一种在字符串中寻找子串的搜索算法,由Donald Knuth、James H. Morris和 Vaughan Pratt共同提出。该算法避免了在模式匹配过程中不必要的...
HRESULT E_FAIL表示一个未指定的错误。下面我们来详细分析这个问题。 首先,COM组件是什么?COM(Component Object Model)是一种软件组件模型,允许开发者创建可以重复使用的软件组件。COM组件可以在不同的编程...
"Algorithm negotiation fail" 是一个常见的错误提示,通常与Java的加密策略有关。这个问题尤其在使用JDK 1.8时可能会出现,因为Java默认的加密强度有限制,特别是对于强加密(Strong Encryption)的需求。 Java ...
fail2ban-Flask 编写的 Fail2ban web 仪表盘
然而,随着网络安全标准的不断提升,SSH的加密算法也在不断更新,这可能导致旧版本的JSCH库在连接时遇到问题,比如"Algorithm Negotiation Fail"异常。 本文将深入探讨"升级jsch包解决ssh升级后jschexception:...
标题与描述:“NPIV fail-over” ### NPIV Fail-over 概述 NPIV(Network Port ID Virtualization)是一种在存储网络中实现虚拟化的技术,尤其在光纤通道(FC)环境中应用广泛。它允许单个物理端口承载多个虚拟...
本文“基于域控制器的ADAS系统故障操作安全架构”(Fail-Operational Safety Architecture for ADAS Systems Considering Domain ECUs)由Bülent Sari 和 Hans-Christian Reuss共同撰写,详细探讨了如何构建高效的...
在开发FPGA项目时,我们可能会遇到“LOAD DLL (TERASIC_JTAG_DRIVE.dll) FAIL”这样的错误,这通常是由于DLL(动态链接库)文件加载失败导致的。DLL文件是Windows操作系统中用于存储函数和资源的共享库,它们被多个...
7. **最佳实践**:除了库本身提供的功能,使用`go-fail`也会鼓励开发者遵循良好的编程习惯,比如尽早返回错误,避免使用空接口类型的错误,以及提供有意义的错误消息。 总之,`go-fail`库是Go语言开发Web服务时的一...
简述fail2ban的安装,使用,配置。及使用范例
Fail-safe机制与Fail-fast机制的比较分析 在多线程并发操作中,Fail-safe机制和Fail-fast机制是两种常见的失败处理机制,它们的作用和实现原理有所不同。 Fail-fast机制是一种快速失败机制,在集合遍历过程中,...
linux fail2ban suse11
Architectural Concepts for Fail-Operational Automotive Systems
Oracle Fail Safe 是架构在 Microsoft Cluster Server(MSCS)上的一个 Oracle 产品,为Oracle 的一些产品(数据库、Oracle Application Server 等)提供高可用性。提供数据、应用程序在出现故障的情况下,将Oracle...
用go所写的fail2ban补充程序,防范freeswith被盗打
《Why Programs Fail-系统化调试指南》是一本专注于软件调试的专著,作者为Andreas Zeller。该书旨在为软件开发者提供一个系统化和自动化调试程序的方法论,帮助他们更有效地发现和修正程序中的错误。本书通过将科学...
oracle fail safe安装配置解决方案。
fail2ban是一款实用软件,可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作。
Ansible-ansible-fail2ban.zip,负责在类似debian的系统中设置fail2ban fail2ban,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。