1### vkgl 测试框架介绍 2 3#### 概要说明 4 5vkgl 是基于开源库VK-GL-CTS(版本:opengl-es-cts-3.2.8),进行移植开发的OpenHarmony的测试套件,目录结构如下: 6 7```bash 8. 9├── BUILD.gn //编译配置 10├── comm.gni //共同编译参数 11├── cpvkgl.sh //编译打包脚本,负责打包依赖so库和依赖测试数据 12└── src 13 ├── ActsApp.cpp //测试项调用入口 14 ├── ActsApp.h 15 ├── deqpgles2 //deqp gles2测试用例suite 16 ├── deqpgles3 //deqp gles3测试用例suite 17 ├── deqpgles31 //deqp gles31测试用例suite 18 ├── khrgles2 //khr gles2测试用例suite 19 ├── khrgles3 //khr gles3测试用例suite 20 ├── khrgles31 //khr gles31测试用例suite 21 ├── khrgles32 //khr gles32测试用例suite 22 ├── khrglesext //khr glesext测试用例suite 23 ├── logdefine.h //测试结果数据收集定义 24 └── shrinkdefine.h //测试框架简化定义 25``` 26 27其中具体测试项目为: 28 29* deqpgles2:对应vk-gl-cts库的 gles2.txt,路径为external/openglcts/data/mustpass,在此路径下有deqp和khr两种,在此我们选择deqp的case,共包括用例16492条, 30* deqpgles3:对应vk-gl-cts库的 gles3.txt,路径为external/openglcts/data/mustpass,在此路径下有deqp和khr两种,在此我们选择deqp的case,共包括用例44389条, 31* deqpgles31:对应vk-gl-cts库的 gles31.txt,路径为external/openglcts/data/mustpass,在此路径下有deqp和khr两种,在此我们选择deqp的case,共包括用例37854条, 32* khrgles2:对应vk-gl-cts库的 gles2-khr.txt,路径为external/openglcts/data/mustpass,在此路径下有deqp和khr两种,在此我们选择khr的case,共包括用例472条, 33* khrgles3:对应vk-gl-cts库的 gles3-khr.txt,路径为external/openglcts/data/mustpass,在此路径下有deqp和khr两种,在此我们选择khr的case,共包括用例4079条 34* khrgles31:对应vk-gl-cts库的 gles31-khr.txt,路径为external/openglcts/data/mustpass,在此路径下有deqp和khr两种,在此我们选择khr的case,共包括用例3497条 35* khrglesext:对应vk-gl-cts库的 glesext-khr.txt,路径为external/openglcts/data/mustpass,在此路径下有deqp和khr两种,在此我们选择khr的case,共包括用例335条 36 37测试套件执行流程为: 38```mermaid 39graph LR 40测试套件 --> ActsApp --> 三方库vkgl执行单元 41``` 42 43#### 适配说明 44 45* vkgl 测试依赖于三方库内的vk-gl-cts库,以及glslang,spirv-headers,spirv-tools三个库,对应关系如下: 46 47```mermaid 48graph LR 49vkgl --> vk-gl-cts --> glslang 50vk-gl-cts --> spirv-headers 51vk-gl-cts --> spirv-tools 52``` 53 54* vk-gl-cts适配方式:在vk-gl-cts/framework/platform内增加OpenHarmony适配目录,适配目录内增加ohos适配层,针对rosen图形框架进行适配,实现对gpu驱动的加载和对应图形API的测试。 55 56 ```bash 57 vk-gl-cts/framework/platform 58 ├── android 59 ├── BUILD.gn 60 ├── CMakeLists.txt 61 ├── ios 62 ├── lnx 63 ├── null 64 ├── nullws 65 ├── ohos //OpenHarmony适配目录 66 │ ├── context 67 │ ├── display 68 │ ├── rosen_context 69 │ ├── tcuOhosPlatform.cpp 70 │ ├── tcuOhosPlatform.hpp 71 ├── osx 72 ├── raspi 73 ├── surfaceless 74 ├── tcuMain.cpp 75 ├── vanilla 76 └── win32 77 ``` 78 79 80* vkgl测试套件的编译: 81 82 * 在test/xts/acts/graphic/BUILD.gn里增加deps,如下: 83 84 ```bash 85 import("//build/ohos_var.gni") 86 group("graphic") { 87 testonly = true 88 if (is_standard_system) { 89 deps = [ 90 "webGL:webGL_hap_test", 91 "windowstandard:window_hap_test", 92 #增加下面内容------------------------------------------ 93 "vkgl:cpvkgl", //vkgl测试套件入口包括vkgl测试,测试打包脚本 94 #到此为止--------------------------------------------- 95 ] 96 } else { 97 deps = [ 98 "appaccount:appaccount_hap", 99 "osaccount:osaccount_hap", 100 ] 101 } 102 } 103 ``` 104 105 106 * vkgl测试套件的编译命令(源码根目录执行): 107 108 ```bash 109 ./build.sh --product-name rk3568 --gn-args build_xts=true --build-target "acts" --gn-args is_standard_system=true 110 ``` 111 112#### 使用说明 113 114* vkgl测试套件编译完成后生成的**测试套件**使用流程如下: 115 116 * vkgl**测试套件**会输出测试程序至两个路径: 117 118 1. out/rk3568/suites/acts/testcases/ 119 120 此路径下包括测试程序和vkgldata测试依赖库和测试数据包,具体如下: 121 122 ```bash 123 ├── libdeqp_ohos_platform.z.so 124 ├── libdeqp_SPIRV.z.so 125 ├── libdeqp_SPVRemapper.z.so 126 ├── librosen_context.z.so 127 └── vkgldata.tar.gz 128 ``` 129 130 2. out/rk3568/common/common 131 132 此路径下的测试程序为glcts,可以直接拷贝至设备上运行,运行命令如下: 133 134 ```bash 135 ./glcts --deqp-case=dEQP-GLES2.* 136 ``` 137 138 --deqp-case=参数目前支持:dEQP-GLES2,dEQP-GLES3, dEQP-GLES31, KHR-GLES2, KHR-GLES3, KHR-GLES31, *号意思就是后面的全部,所以如果指定具体case就写完整路径 139 140 --deqp-caselist-file=参数支持直接传txt文件进行测试 141 142 * vkgl测试套件运行结束会生成qpa文件方便开发人员调试,qpa文件可以通过vk-gl-cts/scripts/log内的脚本进行解析,具体命令如下: 143 144 ```bash 145 python2 log_to_xml.py TestResults.qpa TestResults.xml 146 ``` 147