1Vulkan CTS README 2================= 3 4This document describes how to build and run Vulkan Conformance Test suite. 5 6Vulkan CTS is built on the dEQP framework. 7Up-to-date documentation for dEQP is available at: 8 9* [The VK-GL-CTS wiki for Khronos members](https://gitlab.khronos.org/Tracker/vk-gl-cts/wikis/home) 10* [The VK-GL-CTS wiki for non-Khronos members](https://github.com/KhronosGroup/VK-GL-CTS/wiki) 11 12 13Requirements 14------------ 15 16### Common 17 18The following tools must be installed and present in the PATH variable: 19 20 * Git (for checking out sources) 21 * Python 3.x (for the build related scripts, some other scripts still use Python 2.7.x) 22 * CMake 3.20.0 or newer 23 24### Win32 25 26 * Visual Studio 2015 or newer (glslang uses several C++11 features) 27 28### Linux 29 30 * Standard toolchain (make, gcc/clang) 31 * If you have X11 installed, then the build assumes you also have the `GL/glx.h` header 32 file. 33 * You can get this from the `mesa-common-dev` Ubuntu package. 34 35### MacOS 36 37 * Xcode 38 39Vulkan SDK for macOS includes a MoltenVK runtime library which is recommended method for 40developing a Vulkan application. 41 42### Android 43 44 * Android NDK r17c or later. 45 * Android SDK with: SDK Tools, SDK Platform-tools, SDK Build-tools, and API 28 46 * Java Development Kit (JDK) 47 * Windows: either NMake or Ninja in PATH 48 49If you have downloaded the Android SDK command line tools package (25.2.3 or higher) then 50you can install the necessary components by running: 51 52 tools/bin/sdkmanager tools platform-tools 'build-tools;25.0.2' 'platforms;android-28' 53 54 55Building CTS 56------------ 57 58To build dEQP, you need first to download sources for zlib, libpng, jsoncpp, glslang, 59vulkan-docs, spirv-headers, and spirv-tools. 60 61To download sources, run: 62 63 python3 external/fetch_sources.py 64 65You may need to re-run `fetch_sources.py` to update to the latest glslang, 66vulkan-docs and spirv-tools revisions occasionally. 67 68You also need to install lxml python module by running: 69 70 python3 -m pip install lxml 71 72With CMake out-of-source builds are always recommended. Create a build directory 73of your choosing, and in that directory generate Makefiles or IDE project 74using cmake. 75 76 77### Windows x86-32 78 79 cmake <path to vulkancts> -G"Visual Studio 14" 80 start dEQP-Core-default.sln 81 82### Windows x86-64 83 84 cmake <path to vulkancts> -G"Visual Studio 14 Win64" 85 start dEQP-Core-default.sln 86 87### Linux 32-bit Debug 88 89 cmake <path to vulkancts> -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 90 make -j 91 92Release build can be done by using -DCMAKE_BUILD_TYPE=Release 93 94If building for 32-bit x86 with GCC, you probably also want to add `-msse2 95-mfpmath=sse` to ensure that you get correct IEEE floating-point behavior. 96 97### Linux 64-bit Debug 98 99 cmake <path to vulkancts> -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-m64 -DCMAKE_CXX_FLAGS=-m64 100 make -j 101 102 103### MacOS 64-bit Debug 104 105 cmake <path to vulkancts> -DCMAKE_BUILD_TYPE=Debug -DDEQP_TARGET=osx -DCMAKE_C_FLAGS=-m64 -DCMAKE_CXX_FLAGS=-m64 106 make -j 107 108### Android 109 110Following command will build dEQP.apk: 111 112 python3 scripts/android/build_apk.py --sdk <path to Android SDK> --ndk <path to Android NDK> 113 114By default the CTS package will be built for the Android API level 28. 115Another API level may be supplied using --native-api command line option. 116 117The package can be installed by either running: 118 119 python3 scripts/android/install_apk.py 120 121By default the CTS package will contain libdeqp.so built for armeabi-v7a, arm64-v8a, 122x86, and x86_64 ABIs, but that can be changed at build time by passing the --abis command line 123option to `scripts/android/build_apk.py`. 124 125To pick which ABI to use at _install time_, use the following command instead: 126 127 adb install -g --abi <ABI name> <build-root>/package/dEQP.apk 128 129 130Building Mustpass 131----------------- 132 133Current Vulkan mustpass is checked into repository and can be found at: 134 135 external/vulkancts/mustpass/main/vk-default.txt 136 137Current Vulkan SC mustpass can be found at: 138 139 external/vulkancts/mustpass/master/vksc-default.txt 140 141This file contains list of files located in vk-default or vksc-default subdirectory. Those files contain 142tests from bigest test groups and together they contain all test cases that should pass. 143 144Vulkan CTS mustpass can be re-generated by running: 145 146 python3 <vulkancts>/external/vulkancts/scripts/build_mustpass.py 147 148 149Running CTS 150----------- 151 152Following command line options MUST be used when running CTS: 153 154 --deqp-caselist-file=<vulkancts>/external/vulkancts/mustpass/main/vk-default.txt (or vksc-default.txt for Vulkan SC implementations) 155 --deqp-log-images=disable 156 --deqp-log-shader-sources=disable 157 158If an implementation ships with [implicit layers](https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md#implicit-vs-explicit-layers) enabled, then such layers must be enabled 159when running CTS. 160 161In addition, on multi-device systems the device for which conformance is claimed 162can be selected with: 163 164 --deqp-vk-device-id=<value> 165 166To speed up the conformance run on some platforms the following command line 167option may be used to disable frequent fflush() calls to the output logs: 168 169 --deqp-log-flush=disable 170 171By default, the test log will be written into the path "TestResults.qpa". If the 172platform requires a different path, it can be specified with: 173 174 --deqp-log-filename=<path> 175 176By default, the CTS will expect to find its test resource files in the current 177working directory. This can be overridden with: 178 179 --deqp-archive-dir=<path> 180 181By default, the shader cache will be written into the path "shadercache.bin". If the 182platform requires a different path, it can be specified with: 183 184 --deqp-shadercache-filename=<path> 185 186If the shader cache is not desired, it can be disabled with: 187 188 --deqp-shadercache=disable 189 190CTS execution may be split into N fractions ( for the purpose of running it in parallel ) using 191 192 --deqp-fraction=I,N 193 194where I denotes index of current CTS execution ( I=[0..N-1], N=[1..16] ) 195 196When collecting results for a Conformance Submission Package the number of fractions must not exceed 16, 197and a list of mandatory information tests for each fraction must be supplied: 198 199 --deqp-fraction-mandatory-caselist-file=<vulkancts>external/vulkancts/mustpass/main/vk-fraction-mandatory-tests.txt 200 201To specify file containing waived tests that are omitted only by specified vendor and renderer/device 202the following command line option may be used: 203 204 --deqp-waiver-file=<path> 205 206To make log more clear for high level shader source analysis 207output of decompiled SPIR-V shader sources can be disabled: 208 209 --deqp-log-decompiled-spirv=disable 210 211Also non-informative empty LogInfo sections can be removed 212from output into log by specifying: 213 214 --deqp-log-empty-loginfo=disable 215 216There are several additional options used only in conjunction with Vulkan SC tests 217( for Vulkan SC CTS tests deqp-vksc application should be used ). 218 219To define minimum size of the command pool use parameter: 220 221 --deqp-command-pool-min-size=<value> 222 223To define minimum size of a single command buffer use parameter: 224 225 --deqp-command-buffer-min-size=<value> 226 227If minimum size will not be defined, then the size of single command buffer will be estimated 228from number of commands multiplied by value of parameter deqp-command-default-size. 229Default size of a single command may be defined using: 230 231 --deqp-command-default-size=<value> 232 233Another group of Vulkan SC options enable use of offline pipeline compiler: 234 235 --deqp-pipeline-compiler=<value> 236 --deqp-pipeline-dir=<value> 237 --deqp-pipeline-args=<value> 238 --deqp-pipeline-file=<value> 239 --deqp-pipeline-logfile=<value> 240 --deqp-pipeline-prefix=<value> 241 242In case of offline pipeline compilers the size of the pipeline will be returned by 243pipeline compiler. If we use internal pipeline compilation then pipeline size will be 244equal to default size. This size may be modified using: 245 246 --deqp-pipeline-default-size=<value> 247 248Vulkan SC may be implemented on embedded platform that is not able to 249read from/write to files, write logs, etc. In this case you may use 250external server that will perform these tasks on another machine: 251 252 --deqp-server-address=<value> 253 254In Vulkan SC CTS tests are performed twice. You may define how many tests 255are performed on separate process in a single batch: 256 257 --deqp-subprocess-test-count=<value> 258 259Above mentioned parameter works as default value for all tests. 260You may also define how many tests are performed on a separate process 261for specific test tree branch using parameter: 262 263 --deqp-subprocess-cfg-file=<path> 264 265File should contain test pattern followed by numeric value, for example: 266dEQP-VKSC.api.copy_and_blit.core.image_to_image.dimensions.src32768x4_dst32768x4.*, 5 267dEQP-VKSC.texture.explicit_lod.2d.sizes.*, 20 268dEQP-VKSC.texture.explicit_lod.2d.sizes.128x128_*, 4 269 270There is also one option used by CTS internally and should not be used manually. 271It informs deqp-vksc application that it works as subprocess: 272 273 --deqp-subprocess=[enable|disable] 274 275No other command line options are allowed. 276 277### Win32 278 279 Vulkan: 280 281 cd <builddir>/external/vulkancts/modules/vulkan 282 Debug\deqp-vk.exe --deqp-caselist-file=... 283 284 Vulkan SC: 285 286 cd <builddir>/external/vulkancts/modules/vulkan 287 Debug\deqp-vksc.exe --deqp-caselist-file=... 288 289Test log will be written into TestResults.qpa 290 291### Linux 292 293 Vulkan: 294 295 cd <builddir>/external/vulkancts/modules/vulkan 296 ./deqp-vk --deqp-caselist-file=... 297 298 Vulkan SC: 299 300 cd <builddir>/external/vulkancts/modules/vulkan 301 ./deqp-vksc --deqp-caselist-file=... 302 303### MacOS 304 305 cd <builddir>/external/vulkancts/modules/vulkan 306 ./deqp-vk --deqp-caselist-file=... 307 308### Android 309 310For Android build using SDK 29 or greater, it is recommended to use `/sdcard/Documents/` instead of `/sdcard/` due to scoped storage. 311 312 adb push <vulkancts>/external/vulkancts/mustpass/main/vk-default.txt /sdcard/vk-default.txt 313 adb shell 314 315In device shell: 316 317 am start -n com.drawelements.deqp/android.app.NativeActivity -e cmdLine "deqp --deqp-caselist-file=/sdcard/vk-default.txt --deqp-log-images=disable --deqp-log-shader-sources=disable --deqp-log-filename=/sdcard/TestResults.qpa" 318 319Test progress will be written to device log and can be displayed with: 320 321 adb logcat -s dEQP 322 323Test log will be written into `/sdcard/TestResults.qpa`. 324 325 326Conformance Submission Package Requirements 327------------------------------------------- 328 329The conformance submission package must contain the following: 330 3311. Full test logs (`TestResults.qpa`) from CTS runs against all driver builds and all fractions 3322. Result of `git status` and `git log` from CTS source directory 3333. Any patches used on top of release tag 3344. Conformance statement 335 336Test logs (1) should be named `<submission pkg dir>/TestResults-<driver build type>-<fraction id>-of-<total fractions>.qpa`, 337for example `TestResults-armeabi-v7a-1-of-8.qpa`. On platforms where multiple different driver 338builds (for example 64-bit and 32-bit) are present, CTS logs must be provided 339for each driver build as part of the submission package. If CTS run was split into multiple 340fractions then result files for all fractions must be provided, each file must 341contain results of the mandatory information tests. 342 343Fractions may be run on different physical devices but each device must represent 344the same Conformant Product. 345 346Test logs generated on a system which exposes more than one physical device 347in a device group can be used for products that expose one or more physical 348devices in their device group. 349 350The CTS build must always be done from clean git repository that doesn't have any 351uncommitted changes. Thus it is necessary to run and capture output of `git 352status` and `git log` (2) in the source directory: 353 354 git status > <submission pkg dir>/git-status.txt 355 git log --first-parent <release tag>^..HEAD > <submission pkg dir>/git-log.txt 356 357Any changes made to CTS must be committed to the local repository, and provided 358as part of the submission package (3). This can be done by running: 359 360 git format-patch -o <submission pkg dir> <release tag>..HEAD 361 362Changes to platform-specific code (mostly under `framework/platform`) 363are allowed. The commit message for each change must include a clear 364description of the change and why it is necessary. 365For Vulkan SC, changes are also permitted to the following: 366- vksc-pipeline-compiler (under `vkscpc/`) 367- vksc-server (under `vkscserver/`) 368- modules/vulkan/sc/vktApplicationParametersTests.cpp (to provide vendor-specific test data) 369 370Bugfixes to the tests are allowed. Before being used for a submission, 371bugfixes must be accepted and merged into the CTS repository. 372`git cherry-pick` is strongly recommended as a method of applying bug fixes. 373 374If command line parameter --deqp-subprocess-cfg-file was used then the file 375pointed by this parameter must also be added to submission package. 376 377Other changes must be accompanied by a waiver (see below). 378 379NOTE: When cherry-picking patches on top of release tag, please use `git cherry-pick -x` 380to include original commit hash in the commit message. 381 382Conformance statement (4) must be included in a file called `STATEMENT-<adopter>` 383and must contain following: 384 385 CONFORM_VERSION: <git tag of CTS release> 386 PRODUCT: <string-value> 387 CPU: <string-value> 388 OS: <string-value> 389 390Note that product/cpu/os information is also captured in `dEQP-VK.info.*` tests 391if `vk::Platform::describePlatform()` is implemented. 392 393If the submission package covers multiple products, you can list them by appending 394additional `PRODUCT:` lines to the conformance statement. For example: 395 396 CONFORM_VERSION: vulkan-cts-1.2.6.0 397 PRODUCT: Product A 398 PRODUCT: Product B 399 ... 400 401The actual submission package consists of the above set of files which must 402be bundled into a gzipped tar file. 403 404For Vulkan this must be named `VK<API major><API minor>_<adopter><_info>.tgz`. 405 406For Vulkan SC this must be named `VKSC<API major><API minor>_<adopter><_info>.tgz`. 407 408`<API major>` is the major version of the Vulkan {SC} API specification. 409`<API minor>`is the minor version of the Vulkan {SC} API specification. 410 411`<adopter>` is the name of the Adopting member company, or some recognizable abbreviation. 412The `<_info>` field is optional. It may be used to uniquely identify a submission 413by OS, platform, date, or other criteria when making multiple submissions. 414For example, a company XYZ may make a submission for a Vulkan 1.1 implementation named 415`VK11_XYZ_PRODUCTA_Windows10.tgz` 416 417One way to create a suiteable gzipped tar file is to execute the command: 418 419 tar -cvzf <filename.tgz> -C <submission pkg dir> . 420 421where `<submission pkg dir>` is the directory containing the files from (1)-(4) 422from above. A submission package must contain all of the files listed above, 423and only those files. 424 425As an example submission package could contain: 426 427 STATEMENT-Khronos 428 git-log.txt 429 git-status.txt 430 0001-Remove-Waived-Filtering-Tests.patch 431 0002-Fix-Pipeline-Parameters.patch 432 TestResults-armeabi-v7a.qpa 433 TestResults-arm64-v8a.qpa 434 435 436Waivers 437------- 438 439The process for requesting a waiver is to report the issue by filing a bug 440report in the Gitlab VulkanCTS project (TODO Github?). When creating the 441submission package, include references to the waiver in the commit message of 442the relevant change. Including as much information as possible in your bug 443report (including a unified diff or a merge request of suggested file changes) 444will ensure the issue can be progressed as rapidly as possible. Issues must 445be labeled "Waiver" (TODO!) and identify the version of the CTS and affected 446tests. 447 448Conformance Criteria 449-------------------- 450 451Conformance run is considered passing if all tests finish with allowed result 452codes. Test results are contained in the TestResults.qpa log. Each 453test case section contains XML tag Result, for example: 454 455 <Result StatusCode="Pass">Not validated</Result> 456 457The result code is the value of the StatusCode attribute. Following status 458codes are allowed: 459 460 Pass 461 NotSupported 462 QualityWarning 463 CompatibilityWarning 464 Waiver 465 466Submission package can be verified using `verify_submission.py` 467script located in [VK-GL-CTS-Tools](https://github.com/KhronosGroup/VK-GL-CTS-Tools). 468 469Vulkan platform port 470-------------------- 471 472Vulkan support from Platform implementation requires providing 473`getVulkanPlatform()` method in `tcu::Platform` class implementation. 474 475See `framework/common/tcuPlatform.hpp` and examples in 476`framework/platform/win32/tcuWin32Platform.cpp` and 477`framework/platform/android/tcuAndroidPlatform.cpp`. 478 479If any WSI extensions are supported, platform port must also implement 480methods for creating native display (`vk::Platform::createWsiDisplay`) 481and window handles (`vk::wsi::Display::createWindow`). Otherwise tests 482under `dEQP-VK.wsi` will fail. 483 484 485Null (dummy) driver 486------------------- 487 488For testing and development purposes it might be useful to be able to run 489tests on dummy Vulkan implementation. One such implementation is provided in 490vkNullDriver.cpp. To use that, implement `vk::Platform::createLibrary()` with 491`vk::createNullDriver()`. 492 493 494Validation Layers 495----------------- 496 497Vulkan CTS framework includes first-party support for validation layers, that 498can be turned on with `--deqp-validation=enable` command line option. 499 500When validation is turned on, default instance and device will be created with 501validation layers enabled and debug callback is registered to record any 502messages. Debug messages collected during test execution will be included at 503the end of the test case log. 504 505In addition, when the `--deqp-print-validation-errors` command line option is 506used, validation errors are additionally printed to standard error in the 507moment they are generated. 508 509If any validation errors are found, test result will be set to `InternalError`. 510 511By default `VK_DEBUG_REPORT_INFORMATION_BIT_EXT` and `_DEBUG_BIT_EXT` messages 512are excluded from the log, but that can be customized by modifying 513`vk::DebugReportMessage::shouldBeLogged()` in `vkDebugReportUtil.hpp`. 514 515On the Android target, layers can be added to the APK during the build process 516by setting the `--layers-path` command line option to point to the downloaded 517Validation Layers binaries or a locally-built layers tree. The layers are 518expected to be found under $abi/ under the layers path. 519The Validation Layers releases including prebuilt binaries are available at 520https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases. 521 522 523Cherry GUI 524---------- 525 526Vulkan test module can be used with Cherry (GUI for test execution and 527analysis). Cherry is available at 528https://android.googlesource.com/platform/external/cherry. Please follow 529instructions in README to get started. 530 531Before first launch, and every time test hierarchy has been modified, test 532case list must be refreshed by running: 533 534 python scripts/build_caselists.py path/to/cherry/data 535 536Cherry must be restarted for the case list update to take effect. 537 538 539Shader Optimizer 540---------------- 541 542Vulkan CTS can be optionally run with the shader optimizer enabled. This 543is an experimental feature which can be used to further stress both the 544drivers as well as the optimizer itself. The shader optimizer is disabled 545by default. 546 547The following command line options can be used to configure the shader 548optimizer: 549 550 --deqp-optimization-recipe=<number> 551 552The list of the optimization recipes can be found and customized in the 553`optimizeCompiledBinary()` function in `vkPrograms.cpp`. 554 555As of this writing, there are 2 recipes to choose from: 556 557 0. Disabled (default) 558 1. Optimize for performance 559 2. Optimize for size 560 561The performance and size optimization recipes are defined by the spir-v 562optimizer, and will change from time to time as the optimizer matures. 563 564 --deqp-optimize-spirv=enable 565 566This option is not required to run the optimizer. By default, the shader 567optimizer only optimizes shaders generated from GLSL or HLSL, and leaves 568hand-written SPIR-V shaders alone. 569 570Many of the hand-written SPIR-V tests stress specific features of the 571SPIR-V which might get optimized out. Using this option will enable the 572optimizer on the hand-written SPIR-V as well, which may be useful in 573finding new bugs in drivers or the optimizer itself, but will likely 574invalidate the tests themselves. 575 576 577Shader Cache 578------------ 579 580The Vulkan CTS framework contains a shader cache for speeding up the running 581of the CTS. Skipping shader compilation can significantly reduce runtime, 582especially for repeated runs. 583 584Default behavior is to have the shader cache enabled, but truncated at the 585start of the CTS run. This still gives the benefit of skipping shader 586compilation for identical shaders in different tests (which there are many), 587while making sure that the shader cache file does not grow indefinitely. 588 589The shader cache identifies the shaders by hashing the shader source code 590along with various bits of information that may affect the shader compilation 591(such as shader stage, CTS version, possible compilation flags, etc). If a 592cached shader with matching hash is found, a byte-by-byte comparison of the 593shader sources is made to make sure that the correct shader is being 594retrieved from the cache. 595 596The behavior of the shader cache can be modified with the following command 597line options: 598 599 --deqp-shadercache=disable 600 601Disable the shader cache. All shaders will be compiled every time. 602 603 --deqp-shadercache-filename=<filename> 604 605Set the name of the file where the cached shaders will be stored. This 606option may be required for the shader cache to work at all on Android 607targets. 608 609 --deqp-shadercache-truncate=disable 610 611Do not truncate the shader cache file at startup. No shader compilation will 612occur on repeated runs of the CTS. 613 614 --deqp-shadercache-ipc=enable 615 616Enables the use of inter-process communication primitives to allow several 617instances of CTS to share a single cache file. All of the instances must 618use the same shader cache filename. 619 620Note that if one instance should crash while holding the cache file lock, 621the other instances will hang. The lock is only held while reading or 622writing to the cache, so crashes are unlikely. 623 624In case of a crash outside the cache file lock, the named shared memory 625and shared semaphore may be left behind. These will be re-used by CTS on 626subsequent runs, so additional memory leak will not occur. Shader cache 627truncate may not work in this case. On Windows, when all instances of 628CTS have terminated the shared resources get automatically cleaned up. 629 630RenderDoc 631--------- 632The RenderDoc (https://renderdoc.org/) graphics debugger may be used to debug 633Vulkan tests. 634 635Following command line option should be used when launching tests from 636RenderDoc UI: 637 638 --deqp-renderdoc=enable 639 640This causes the framework to interface with the debugger and mark each dEQP 641test case as a separate 'frame', just for the purpose of capturing. The frames 642are added using RenderDoc 'In-Application API', instead of swapchain operations. 643 644Third Party Runners 645------------------- 646 647Some CTS tests use third-party runners. By default all tests are executed 648regardless of runner type (`any`). To exclude all tests using any of the 649external runners (`none`) or to only include tests using a certain runner: 650 651 --deqp-runner-type=(any|none|amber) 652 653Vulkan SC Conformance Test suite 654-------------------------------- 655 656This project is also able to perform conformance tests for Vulkan SC 657implementations. For this purpose Vulkan CTS framework has been adapted 658to Vulkan SC requirements: 659 660- Vulkan SC CTS contains its own mustpass list 661 662 external/vulkancts/mustpass/master/vksc-default.txt 663 664- Vulkan SC CTS uses its own executable module to perform tests: deqp-vksc 665 666- Each test in deqp-vksc is performed twice. 667 First test run is performed in main process and its purpose is to collect 668 information about used pipelines, number of created Vulkan objects etc. 669 Second test run is done in separate process ( subprocess ) and it performs 670 the real tests. 671 672- Vulkan SC pipelines may be compiled using offline pipeline compiler 673 delivered by implementation vendor. You can use command line parameters 674 to achieve this ( see parameters: --deqp-pipeline-compiler, --deqp-pipeline-dir, 675 --deqp-pipeline-args, --deqp-pipeline-file, --deqp-pipeline-logfile, 676 --deqp-pipeline-prefix ) 677 678 Reference offline pipeline compiler was created to showcase how input and output 679 should look like for such application. It uses Vulkan API to create pipeline cache. 680 The name of the executable is vksc-pipeline-compiler. 681 682- Some of the future Vulkan SC implementations may not have a possibility to use 683 filesystem, create pipeline caches or log results to file. For these implementations 684 Vulkan SC CTS contains server application that may handle such requests on external 685 host machine. Define parameter --deqp-server-address in deqp-vksc application 686 to use external server. 687 Server application's name is vksc-server and its parameters are listed below, 688 in Command Line section. 689 690Command Line 691------------ 692Full list of parameters for the `deqp-vk` and `deqp-vksc` modules: 693 694OpenGL and OpenCL parameters not affecting Vulkan API were suppressed. 695 696 -h, --help 697 Show this help 698 699 -n, --deqp-case=<value> 700 Test case(s) to run, supports wildcards (e.g. dEQP-GLES2.info.*) 701 702 --deqp-caselist=<value> 703 Case list to run in trie format (e.g. {dEQP-GLES2{info{version,renderer}}}) 704 705 --deqp-caselist-file=<value> 706 Read case list (in trie format) from given file 707 708 --deqp-caselist-resource=<value> 709 Read case list (in trie format) from given file located application's assets 710 711 --deqp-stdin-caselist 712 Read case list (in trie format) from stdin 713 714 --deqp-log-filename=<value> 715 Write test results to given file 716 default: 'TestResults.qpa' 717 718 --deqp-runmode=[execute|xml-caselist|txt-caselist|stdout-caselist] 719 Execute tests, or write list of test cases into a file 720 default: 'execute' 721 722 --deqp-caselist-export-file=<value> 723 Set the target file name pattern for caselist export 724 default: '${packageName}-cases.${typeExtension}' 725 726 --deqp-watchdog=[enable|disable] 727 Enable test watchdog 728 default: 'disable' 729 730 --deqp-crashhandler=[enable|disable] 731 Enable crash handling 732 default: 'disable' 733 734 --deqp-base-seed=<value> 735 Base seed for test cases that use randomization 736 default: '0' 737 738 --deqp-test-iteration-count=<value> 739 Iteration count for cases that support variable number of iterations 740 default: '0' 741 742 --deqp-visibility=[windowed|fullscreen|hidden] 743 Default test window visibility 744 default: 'windowed' 745 746 --deqp-surface-width=<value> 747 Use given surface width if possible 748 default: '-1' 749 750 --deqp-surface-height=<value> 751 Use given surface height if possible 752 default: '-1' 753 754 --deqp-surface-type=[window|pixmap|pbuffer|fbo] 755 Use given surface type 756 default: 'window' 757 758 --deqp-screen-rotation=[unspecified|0|90|180|270] 759 Screen rotation for platforms that support it 760 default: '0' 761 762 --deqp-vk-device-id=<value> 763 Vulkan device ID (IDs start from 1) 764 default: '1' 765 766 --deqp-vk-device-group-id=<value> 767 Vulkan device Group ID (IDs start from 1) 768 default: '1' 769 770 --deqp-log-images=[enable|disable] 771 Enable or disable logging of result images 772 default: 'enable' 773 774 --deqp-log-shader-sources=[enable|disable] 775 Enable or disable logging of shader sources 776 default: 'enable' 777 778 --deqp-test-oom=[enable|disable] 779 Run tests that exhaust memory on purpose 780 default: 'enable' 781 782 --deqp-archive-dir=<value> 783 Path to test resource files 784 default: '.' 785 786 --deqp-log-flush=[enable|disable] 787 Enable or disable log file fflush 788 default: 'enable' 789 790 --deqp-log-compact=[enable|disable] 791 Enable or disable the compact version of the log 792 default: 'disable' 793 794 --deqp-validation=[enable|disable] 795 Enable or disable test case validation 796 default: 'disable' 797 798 --deqp-print-validation-errors 799 Print validation errors to standard error 800 801 --deqp-optimization-recipe=<value> 802 Shader optimization recipe (0=disabled, 1=performance, 2=size) 803 default: '0' 804 805 --deqp-optimize-spirv=[enable|disable] 806 Apply optimization to spir-v shaders as well 807 default: 'disable' 808 809 --deqp-shadercache=[enable|disable] 810 Enable or disable shader cache 811 default: 'enable' 812 813 --deqp-shadercache-filename=<value> 814 Write shader cache to given file 815 default: 'shadercache.bin' 816 817 --deqp-shadercache-truncate=[enable|disable] 818 Truncate shader cache before running tests 819 default: 'enable' 820 821 --deqp-renderdoc=[enable|disable] 822 Enable RenderDoc frame markers 823 default: 'disable' 824 825 --deqp-fraction=<value> 826 Run a fraction of the test cases (e.g. N,M means run group%M==N) 827 default: '' 828 829 --deqp-fraction-mandatory-caselist-file=<value> 830 Case list file that must be run for each fraction 831 default: '' 832 833 --deqp-waiver-file=<value> 834 Read waived tests from given file 835 default: '' 836 837 --deqp-runner-type=[any|none|amber] 838 Filter test cases based on runner 839 default: 'any' 840 841 --deqp-terminate-on-fail=[enable|disable] 842 Terminate the run on first failure 843 default: 'disable' 844 845 --deqp-subprocess=[enable|disable] 846 Inform app that it works as subprocess (Vulkan SC only, do not use manually) 847 default: 'disable' 848 849 --deqp-subprocess-test-count=<value> 850 Define default number of tests performed in subprocess (Vulkan SC only) 851 default: '65536' 852 853 --deqp-subprocess-cfg-file=<path> 854 Config file defining number of tests performed in subprocess for specific test branches (Vulkan SC only) 855 default: '' 856 857 --deqp-server-address=<value> 858 Server address (host:port) responsible for shader compilation (Vulkan SC only) 859 default: '' 860 861 --deqp-command-pool-min-size=<value> 862 Define minimum size of the command pool (in bytes) to use (Vulkan SC only) 863 default: '0' 864 865 --deqp-command-buffer-min-size=<value> 866 Define minimum size of the command buffer (in bytes) to use (Vulkan SC only) 867 default: '0' 868 869 --deqp-app-params-input-file=<path> 870 File providing default application parameters (Vulkan SC only) 871 default: '' 872 873 The file should contain lines of input in the following format: 874 type ("instance" or "device"), 32-bit vendorID, 32-bit deviceID, 32-bit parameterKey, 64-bit parameterValue 875 876 `type` specifies whether the values will be used for instance or device creation. 877 All the other values should be encoded in hex. For example: 878 instance, 0x01234567, 0x76543210, 0x01234567, 0x0000000076543210 879 880 --deqp-command-default-size=<value> 881 Define default single command size (in bytes) to use (Vulkan SC only) 882 default: '256' 883 884 --deqp-pipeline-default-size=<value> 885 Define default pipeline size (in bytes) to use (Vulkan SC only) 886 default: '16384' 887 888 --deqp-pipeline-compiler=<value> 889 Path to offline pipeline compiler (Vulkan SC only) 890 default: '' 891 892 --deqp-pipeline-dir=<value> 893 Offline pipeline data directory (Vulkan SC only) 894 default: '' 895 896 --deqp-pipeline-args=<value> 897 Additional compiler parameters (Vulkan SC only) 898 default: '' 899 900 --deqp-pipeline-file=<value> 901 Output file with pipeline cache (Vulkan SC only, do not use manually) 902 default: '' 903 904 --deqp-pipeline-logfile=<value> 905 Log file for pipeline compiler (Vulkan SC only, do not use manually) 906 default: '' 907 908 --deqp-pipeline-prefix=<value> 909 Prefix for input pipeline compiler files (Vulkan SC only, do not use manually) 910 default: '' 911 912Full list of parameters for the `vksc-server` application: 913 914 --port 915 Port 916 default: '59333' 917 918 --log 919 Log filename 920 default: 'dummy.log' 921 922 --pipeline-compiler 923 Path to offline pipeline compiler 924 default: '' 925 926 --pipeline-dir 927 Offline pipeline data directory 928 default: '' 929 930 --pipeline-file 931 Output file with pipeline cache 932 default: '' 933 934 --pipeline-log 935 Compiler log file 936 default: 'compiler.log' 937 938 --pipeline-args 939 Additional compiler parameters 940 default: '' 941