KhronosOpenGL/VulkanConformanceTests(CTS)
(2017-12-29 22:42:00)分类: GPU |
安装
1. 下载
VK-GL-CTS
2.
需要安装zlib和libpng。
下载后
./configure
make -j64
make install
如果报错lbpng12.so.0找不到的话可以直接复制一份放到
/lib/x86_64-linux-gnu 下
编译
1. 在targets下建立自己的target
file,例如targets/my_target/my_target.cmake
root下的CMakeLists.txt是总控,其中有列出target
file需要设置的变量。
# Include target-specific
definitions
include
(targets/${DEQP_TARGET}/${DEQP_TARGET}.cmake)
2.
在root下建立目录include放置GLES/EGL的头文件,建立目录libs/my_target放置库,并在target
file中添加引用,可参考targets/nullws/nullws.cmake
修改头部的find_library:
find_library(GLES1_LIBRARY
NAMES libGLESv1_CM GLESv1_CM
PATHS /path/to/libs/my_target)
find_library(GLES2_LIBRARY NAMES
libGLESv2 GLESv2
PATHS /path/to/libs/ my_target)
find_library(GLES3_LIBRARY NAMES
libGLESv3 GLESv3 PATHS /path/to/libs/ my_target)
find_library(EGL_LIBRARY NAMES
libEGL EGL PATHS /path/to/libs/ my_target)
find_library(MALI_LIBRARY
NAMES libmali mali PATHS
/path/to/libs/my_target)
if (MALI_LIBRARY)
endif ()
if (NOT
GLES3_LIBRARY)
endif
()
以及find_path:
find_path(GLES_INCLUDE_PATH
GLES/gl.h PATHS /path/to/include NO_SYSTEM_ENVIRONMENT_PATH
NO_DEFAULT_PATH)
find_path(GLES2_INCLUDE_PATH GLES2/gl2.h
PATHS /path/to/include NO_SYSTEM_ENVIRONMENT_PATH
NO_DEFAULT_PATH)
find_path(GLES3_INCLUDE_PATH
GLES3/gl3.h PATHS /path/to/include
NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH)
find_path(GLES31_INCLUDE_PATH
GLES3/gl31.h PATHS /path/to/include
NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH)
find_path(GLES32_INCLUDE_PATH
GLES3/gl32.h PATHS /path/to/include
NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH)
find_path(EGL_INCLUDE_PATH
EGL/egl.h PATHS /path/to/include
NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH)
if (GLES1_LIBRARY AND
GLES_INCLUDE_PATH)
endif ()
在尾部增加:
set(DEQP_EMBED_TESTS ON)
add_definitions(-DHKEMBEDDEDFILESYSTEM)
3. 执行out-of-source编译。
mkdir -p build/my_target;
cd build/my_target
cmake ../.. -DDEQP_TARGET=my_target
-DCMAKE_BUILD_TYPE=Debug
make -j64
编译时可能遇到如下2个问题:
*
报错GLIBCXX3.4.21,需要检查CMakeCache.txt中的compiler的版本是否正确
CMAKE_CXX_COMPILER:FILEPATH=/usr/local/bin/c++
* 报错wayland不支持,重新执行“cmake
xxx; make clean; make -j64”即可
运行
cd
build/external/openglcts/modules
运行单个case:
MALI_EGL_DUMMY_DISPLAY_WIDTH=256 MALI_EGL_DUMMY_DISPLAY_HEIGHT=256 ./glcts
--deqp-case=xxx --deqp-gl-config-name="rgba8888d24s8ms0"
--deqp-screen-rotation=unspecified --deqp-base-seed=-1
--deqp-surface-width=256 --deqp-surface-height=256
--deqp-gl-context-type=egl --deqp-watchdog=disable
rgba8888 : 8bit, depth : 24bit, stencil :
8bit, multi-sample : 0
生成用例集合
./glcts
--deqp-runmode=txt-caselist
配合patrace抓取api
LD_PRELOAD=/path/to/libegltrace.so
OUT_TRACE_FILE=my_trace ./glcts ... #
生成.pat
./trace_to_txt my_trace.pat my_trace.txt
# 提取api
*
运行时如果报找不到库,需要export当前目录到LD_LIBRARY_PATH。
检查结果
单次运行case产生结果TestResults.qpa,可以将其转换为xml:
python
../../../../../scripts/log/log_to_xml.py TestResults.qpa
result.xml
再将doc/testlog-stylesheet下的testlog.{xsl,css}拷贝过来即可打开xml查看结果
代码结构
external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.2.x
*.txt是不同测试目的的分组文件
mustpass.xml是针对分组文件的配置参数
external/openglcts/modules/glcTestPackageRegistry.cpp
registerPackages()函数注册测试用例集
调试技巧
* 打印shader
call printf("%s",
fragmentSource._M_dataplus._M_p)
前一篇:台式机组装指南