加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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)
    link_libraries("/path/to/libs/my_target/libmali.so")
    link_libraries("/path/to/libs/my_target/libcmodel.so")
endif ()

if (NOT GLES3_LIBRARY)
    find_library(GLES3_LIBRARY NAMES libGLESv2 GLESv2 PATHS /path/to/libs/my_target)
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)
    set(DEQP_SUPPORT_GLES1 ON)
    set(DEQP_GLES1_LIBRARIES ${GLES1_LIBRARY})
    include_directories(BEFORE ${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)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有