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/main/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/main/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 216Vulkan compute-only implementations must be tested using option 217 218 --deqp-compute-only=enable 219 220There are several additional options used only in conjunction with Vulkan SC tests 221( for Vulkan SC CTS tests deqp-vksc application should be used ). 222 223To define minimum size of the command pool use parameter: 224 225 --deqp-command-pool-min-size=<value> 226 227To define minimum size of a single command buffer use parameter: 228 229 --deqp-command-buffer-min-size=<value> 230 231If minimum size will not be defined, then the size of single command buffer will be estimated 232from number of commands multiplied by value of parameter deqp-command-default-size. 233Default size of a single command may be defined using: 234 235 --deqp-command-default-size=<value> 236 237Another group of Vulkan SC options enable use of offline pipeline compiler: 238 239 --deqp-pipeline-compiler=<value> 240 --deqp-pipeline-dir=<value> 241 --deqp-pipeline-args=<value> 242 --deqp-pipeline-file=<value> 243 --deqp-pipeline-logfile=<value> 244 --deqp-pipeline-prefix=<value> 245 246In case of offline pipeline compilers the size of the pipeline will be returned by 247pipeline compiler. If we use internal pipeline compilation then pipeline size will be 248equal to default size. This size may be modified using: 249 250 --deqp-pipeline-default-size=<value> 251 252Vulkan SC may be implemented on embedded platform that is not able to 253read from/write to files, write logs, etc. In this case you may use 254external server that will perform these tasks on another machine: 255 256 --deqp-server-address=<value> 257 258In Vulkan SC CTS tests are performed twice. You may define how many tests 259are performed on separate process in a single batch: 260 261 --deqp-subprocess-test-count=<value> 262 263Above mentioned parameter works as default value for all tests. 264You may also define how many tests are performed on a separate process 265for specific test tree branch using parameter: 266 267 --deqp-subprocess-cfg-file=<path> 268 269File should contain test pattern followed by numeric value, for example: 270dEQP-VKSC.api.copy_and_blit.core.image_to_image.dimensions.src32768x4_dst32768x4.*, 5 271dEQP-VKSC.texture.explicit_lod.2d.sizes.*, 20 272dEQP-VKSC.texture.explicit_lod.2d.sizes.128x128_*, 4 273 274There is also one option used by CTS internally and should not be used manually. 275It informs deqp-vksc application that it works as subprocess: 276 277 --deqp-subprocess=[enable|disable] 278 279No other command line options are allowed. 280 281### Win32 282 283 Vulkan: 284 285 cd <builddir>/external/vulkancts/modules/vulkan 286 Debug\deqp-vk.exe --deqp-caselist-file=... 287 288 Vulkan SC: 289 290 cd <builddir>/external/vulkancts/modules/vulkan 291 Debug\deqp-vksc.exe --deqp-caselist-file=... 292 293Test log will be written into TestResults.qpa 294 295### Linux 296 297 Vulkan: 298 299 cd <builddir>/external/vulkancts/modules/vulkan 300 ./deqp-vk --deqp-caselist-file=... 301 302 Vulkan SC: 303 304 cd <builddir>/external/vulkancts/modules/vulkan 305 ./deqp-vksc --deqp-caselist-file=... 306 307### MacOS 308 309 cd <builddir>/external/vulkancts/modules/vulkan 310 ./deqp-vk --deqp-caselist-file=... 311 312### Android 313 314For Android build using SDK 29 or greater, it is recommended to use `/sdcard/Documents/` instead of `/sdcard/` due to scoped storage. 315 316 adb push <vulkancts>/external/vulkancts/mustpass/main/vk-default.txt /sdcard/vk-default.txt 317 adb shell 318 319In device shell: 320 321 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" 322 323Test progress will be written to device log and can be displayed with: 324 325 adb logcat -s dEQP 326 327Test log will be written into `/sdcard/TestResults.qpa`. 328 329 330Conformance Submission Package Requirements 331------------------------------------------- 332 333The conformance submission package must contain the following: 334 3351. Full test logs (`TestResults.qpa`) from CTS runs against all driver builds and all fractions 3362. Result of `git status` and `git log` from CTS source directory 3373. Any patches used on top of release tag 3384. Conformance statement 339 340Test logs (1) should be named `<submission pkg dir>/TestResults-<driver build type>-<fraction id>-of-<total fractions>.qpa`, 341for example `TestResults-armeabi-v7a-1-of-8.qpa`. On platforms where multiple different driver 342builds (for example 64-bit and 32-bit) are present, CTS logs must be provided 343for each driver build as part of the submission package. If CTS run was split into multiple 344fractions then result files for all fractions must be provided, each file must 345contain results of the mandatory information tests. 346 347Fractions may be run on different physical devices but each device must represent 348the same Conformant Product. 349 350Test logs generated on a system which exposes more than one physical device 351in a device group can be used for products that expose one or more physical 352devices in their device group. 353 354The CTS build must always be done from clean git repository that doesn't have any 355uncommitted changes. Thus it is necessary to run and capture output of `git 356status` and `git log` (2) in the source directory: 357 358 git status > <submission pkg dir>/git-status.txt 359 git log --first-parent <release tag>^..HEAD > <submission pkg dir>/git-log.txt 360 361Any changes made to CTS must be committed to the local repository, and provided 362as part of the submission package (3). This can be done by running: 363 364 git format-patch -o <submission pkg dir> <release tag>..HEAD 365 366Changes to platform-specific code (mostly under `framework/platform`) 367are allowed. The commit message for each change must include a clear 368description of the change and why it is necessary. 369For Vulkan SC, changes are also permitted to the following: 370- vksc-pipeline-compiler (under `vkscpc/`) 371- vksc-server (under `vkscserver/`) 372- modules/vulkan/sc/vktApplicationParametersTests.cpp (to provide vendor-specific test data) 373 374Bugfixes to the tests are allowed. Before being used for a submission, 375bugfixes must be accepted and merged into the CTS repository. 376`git cherry-pick` is strongly recommended as a method of applying bug fixes. 377 378If command line parameter --deqp-subprocess-cfg-file was used then the file 379pointed by this parameter must also be added to submission package. 380 381Other changes must be accompanied by a waiver (see below). 382 383NOTE: When cherry-picking patches on top of release tag, please use `git cherry-pick -x` 384to include original commit hash in the commit message. 385 386Conformance statement (4) must be included in a file called `STATEMENT-<adopter>` 387and must contain following: 388 389 CONFORM_VERSION: <git tag of CTS release> 390 PRODUCT: <string-value> 391 CPU: <string-value> 392 OS: <string-value> 393 394Note that product/cpu/os information is also captured in `dEQP-VK.info.*` tests 395if `vk::Platform::describePlatform()` is implemented. 396 397If the submission package covers multiple products, you can list them by appending 398additional `PRODUCT:` lines to the conformance statement. For example: 399 400 CONFORM_VERSION: vulkan-cts-1.2.6.0 401 PRODUCT: Product A 402 PRODUCT: Product B 403 ... 404 405The actual submission package consists of the above set of files which must 406be bundled into a gzipped tar file. 407 408For Vulkan this must be named `VK<API major><API minor>_<adopter><_info>.tgz`. 409 410For Vulkan SC this must be named `VKSC<API major><API minor>_<adopter><_info>.tgz`. 411 412`<API major>` is the major version of the Vulkan {SC} API specification. 413`<API minor>`is the minor version of the Vulkan {SC} API specification. 414 415`<adopter>` is the name of the Adopting member company, or some recognizable abbreviation. 416The `<_info>` field is optional. It may be used to uniquely identify a submission 417by OS, platform, date, or other criteria when making multiple submissions. 418For example, a company XYZ may make a submission for a Vulkan 1.1 implementation named 419`VK11_XYZ_PRODUCTA_Windows10.tgz` 420 421One way to create a suiteable gzipped tar file is to execute the command: 422 423 tar -cvzf <filename.tgz> -C <submission pkg dir> . 424 425where `<submission pkg dir>` is the directory containing the files from (1)-(4) 426from above. A submission package must contain all of the files listed above, 427and only those files. 428 429As an example submission package could contain: 430 431 STATEMENT-Khronos 432 git-log.txt 433 git-status.txt 434 0001-Remove-Waived-Filtering-Tests.patch 435 0002-Fix-Pipeline-Parameters.patch 436 TestResults-armeabi-v7a.qpa 437 TestResults-arm64-v8a.qpa 438 439 440Waivers 441------- 442 443The process for requesting a waiver is to report the issue by filing a bug 444report in the Gitlab VulkanCTS project (TODO Github?). When creating the 445submission package, include references to the waiver in the commit message of 446the relevant change. Including as much information as possible in your bug 447report (including a unified diff or a merge request of suggested file changes) 448will ensure the issue can be progressed as rapidly as possible. Issues must 449be labeled "Waiver" (TODO!) and identify the version of the CTS and affected 450tests. 451 452Conformance Criteria 453-------------------- 454 455Conformance run is considered passing if all tests finish with allowed result 456codes. Test results are contained in the TestResults.qpa log. Each 457test case section contains XML tag Result, for example: 458 459 <Result StatusCode="Pass">Not validated</Result> 460 461The result code is the value of the StatusCode attribute. Following status 462codes are allowed: 463 464 Pass 465 NotSupported 466 QualityWarning 467 CompatibilityWarning 468 Waiver 469 470Submission package can be verified using `verify_submission.py` 471script located in [VK-GL-CTS-Tools](https://github.com/KhronosGroup/VK-GL-CTS-Tools). 472 473Vulkan platform port 474-------------------- 475 476Vulkan support from Platform implementation requires providing 477`getVulkanPlatform()` method in `tcu::Platform` class implementation. 478 479See `framework/common/tcuPlatform.hpp` and examples in 480`framework/platform/win32/tcuWin32Platform.cpp` and 481`framework/platform/android/tcuAndroidPlatform.cpp`. 482 483If any WSI extensions are supported, platform port must also implement 484methods for creating native display (`vk::Platform::createWsiDisplay`) 485and window handles (`vk::wsi::Display::createWindow`). Otherwise tests 486under `dEQP-VK.wsi` will fail. 487 488 489Null (dummy) driver 490------------------- 491 492For testing and development purposes it might be useful to be able to run 493tests on dummy Vulkan implementation. One such implementation is provided in 494vkNullDriver.cpp. To use that, implement `vk::Platform::createLibrary()` with 495`vk::createNullDriver()`. 496 497 498Validation Layers 499----------------- 500 501Vulkan CTS framework includes first-party support for validation layers, that 502can be turned on with `--deqp-validation=enable` command line option. 503 504When validation is turned on, default instance and device will be created with 505validation layers enabled and debug callback is registered to record any 506messages. Debug messages collected during test execution will be included at 507the end of the test case log. 508 509In addition, when the `--deqp-print-validation-errors` command line option is 510used, validation errors are additionally printed to standard error in the 511moment they are generated. 512 513If any validation errors are found, test result will be set to `InternalError`. 514 515By default `VK_DEBUG_REPORT_INFORMATION_BIT_EXT` and `_DEBUG_BIT_EXT` messages 516are excluded from the log, but that can be customized by modifying 517`vk::DebugReportMessage::shouldBeLogged()` in `vkDebugReportUtil.hpp`. 518 519On the Android target, layers can be added to the APK during the build process 520by setting the `--layers-path` command line option to point to the downloaded 521Validation Layers binaries or a locally-built layers tree. The layers are 522expected to be found under $abi/ under the layers path. 523The Validation Layers releases including prebuilt binaries are available at 524https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases. 525 526 527Cherry GUI 528---------- 529 530Vulkan test module can be used with Cherry (GUI for test execution and 531analysis). Cherry is available at 532https://android.googlesource.com/platform/external/cherry. Please follow 533instructions in README to get started. 534 535Before first launch, and every time test hierarchy has been modified, test 536case list must be refreshed by running: 537 538 python scripts/build_caselists.py path/to/cherry/data 539 540Cherry must be restarted for the case list update to take effect. 541 542 543Shader Optimizer 544---------------- 545 546Vulkan CTS can be optionally run with the shader optimizer enabled. This 547is an experimental feature which can be used to further stress both the 548drivers as well as the optimizer itself. The shader optimizer is disabled 549by default. 550 551The following command line options can be used to configure the shader 552optimizer: 553 554 --deqp-optimization-recipe=<number> 555 556The list of the optimization recipes can be found and customized in the 557`optimizeCompiledBinary()` function in `vkPrograms.cpp`. 558 559As of this writing, there are 2 recipes to choose from: 560 561 0. Disabled (default) 562 1. Optimize for performance 563 2. Optimize for size 564 565The performance and size optimization recipes are defined by the spir-v 566optimizer, and will change from time to time as the optimizer matures. 567 568 --deqp-optimize-spirv=enable 569 570This option is not required to run the optimizer. By default, the shader 571optimizer only optimizes shaders generated from GLSL or HLSL, and leaves 572hand-written SPIR-V shaders alone. 573 574Many of the hand-written SPIR-V tests stress specific features of the 575SPIR-V which might get optimized out. Using this option will enable the 576optimizer on the hand-written SPIR-V as well, which may be useful in 577finding new bugs in drivers or the optimizer itself, but will likely 578invalidate the tests themselves. 579 580 581Shader Cache 582------------ 583 584The Vulkan CTS framework contains a shader cache for speeding up the running 585of the CTS. Skipping shader compilation can significantly reduce runtime, 586especially for repeated runs. 587 588Default behavior is to have the shader cache enabled, but truncated at the 589start of the CTS run. This still gives the benefit of skipping shader 590compilation for identical shaders in different tests (which there are many), 591while making sure that the shader cache file does not grow indefinitely. 592 593The shader cache identifies the shaders by hashing the shader source code 594along with various bits of information that may affect the shader compilation 595(such as shader stage, CTS version, possible compilation flags, etc). If a 596cached shader with matching hash is found, a byte-by-byte comparison of the 597shader sources is made to make sure that the correct shader is being 598retrieved from the cache. 599 600The behavior of the shader cache can be modified with the following command 601line options: 602 603 --deqp-shadercache=disable 604 605Disable the shader cache. All shaders will be compiled every time. 606 607 --deqp-shadercache-filename=<filename> 608 609Set the name of the file where the cached shaders will be stored. This 610option may be required for the shader cache to work at all on Android 611targets. 612 613 --deqp-shadercache-truncate=disable 614 615Do not truncate the shader cache file at startup. No shader compilation will 616occur on repeated runs of the CTS. 617 618 --deqp-shadercache-ipc=enable 619 620Enables the use of inter-process communication primitives to allow several 621instances of CTS to share a single cache file. All of the instances must 622use the same shader cache filename. 623 624Note that if one instance should crash while holding the cache file lock, 625the other instances will hang. The lock is only held while reading or 626writing to the cache, so crashes are unlikely. 627 628In case of a crash outside the cache file lock, the named shared memory 629and shared semaphore may be left behind. These will be re-used by CTS on 630subsequent runs, so additional memory leak will not occur. Shader cache 631truncate may not work in this case. On Windows, when all instances of 632CTS have terminated the shared resources get automatically cleaned up. 633 634RenderDoc 635--------- 636The RenderDoc (https://renderdoc.org/) graphics debugger may be used to debug 637Vulkan tests. 638 639Following command line option should be used when launching tests from 640RenderDoc UI: 641 642 --deqp-renderdoc=enable 643 644This causes the framework to interface with the debugger and mark each dEQP 645test case as a separate 'frame', just for the purpose of capturing. The frames 646are added using RenderDoc 'In-Application API', instead of swapchain operations. 647 648Third Party Runners 649------------------- 650 651Some CTS tests use third-party runners. By default all tests are executed 652regardless of runner type (`any`). To exclude all tests using any of the 653external runners (`none`) or to only include tests using a certain runner: 654 655 --deqp-runner-type=(any|none|amber) 656 657Vulkan SC Conformance Test suite 658-------------------------------- 659 660This project is also able to perform conformance tests for Vulkan SC 661implementations. For this purpose Vulkan CTS framework has been adapted 662to Vulkan SC requirements: 663 664- Vulkan SC CTS contains its own mustpass list 665 666 external/vulkancts/mustpass/main/vksc-default.txt 667 668- Vulkan SC CTS uses its own executable module to perform tests: deqp-vksc 669 670- Each test in deqp-vksc is performed twice. 671 First test run is performed in main process and its purpose is to collect 672 information about used pipelines, number of created Vulkan objects etc. 673 Second test run is done in separate process ( subprocess ) and it performs 674 the real tests. 675 676- Vulkan SC pipelines may be compiled using offline pipeline compiler 677 delivered by implementation vendor. You can use command line parameters 678 to achieve this ( see parameters: --deqp-pipeline-compiler, --deqp-pipeline-dir, 679 --deqp-pipeline-args, --deqp-pipeline-file, --deqp-pipeline-logfile, 680 --deqp-pipeline-prefix ) 681 682 Reference offline pipeline compiler was created to showcase how input and output 683 should look like for such application. It uses Vulkan API to create pipeline cache. 684 The name of the executable is vksc-pipeline-compiler. 685 686- Some of the future Vulkan SC implementations may not have a possibility to use 687 filesystem, create pipeline caches or log results to file. For these implementations 688 Vulkan SC CTS contains server application that may handle such requests on external 689 host machine. Define parameter --deqp-server-address in deqp-vksc application 690 to use external server. 691 Server application's name is vksc-server and its parameters are listed below, 692 in Command Line section. 693 694Command Line 695------------ 696Full list of parameters for the `deqp-vk` and `deqp-vksc` modules: 697 698OpenGL and OpenCL parameters not affecting Vulkan API were suppressed. 699 700 -h, --help 701 Show this help 702 703 -q, --quiet 704 Suppress messages to standard output 705 706 -n, --deqp-case=<value> 707 Test case(s) to run, supports wildcards (e.g. dEQP-GLES2.info.*) 708 709 --deqp-caselist=<value> 710 Case list to run in trie format (e.g. {dEQP-GLES2{info{version,renderer}}}) 711 712 --deqp-caselist-file=<value> 713 Read case list (in trie format) from given file 714 715 --deqp-caselist-resource=<value> 716 Read case list (in trie format) from given file located application's assets 717 718 --deqp-stdin-caselist 719 Read case list (in trie format) from stdin 720 721 --deqp-log-filename=<value> 722 Write test results to given file 723 default: 'TestResults.qpa' 724 725 --deqp-runmode=[execute|xml-caselist|txt-caselist|stdout-caselist] 726 Execute tests, or write list of test cases into a file 727 default: 'execute' 728 729 --deqp-caselist-export-file=<value> 730 Set the target file name pattern for caselist export 731 default: '${packageName}-cases.${typeExtension}' 732 733 --deqp-watchdog=[enable|disable] 734 Enable test watchdog 735 default: 'disable' 736 737 --deqp-crashhandler=[enable|disable] 738 Enable crash handling 739 default: 'disable' 740 741 --deqp-base-seed=<value> 742 Base seed for test cases that use randomization 743 default: '0' 744 745 --deqp-test-iteration-count=<value> 746 Iteration count for cases that support variable number of iterations 747 default: '0' 748 749 --deqp-visibility=[windowed|fullscreen|hidden] 750 Default test window visibility 751 default: 'windowed' 752 753 --deqp-surface-width=<value> 754 Use given surface width if possible 755 default: '-1' 756 757 --deqp-surface-height=<value> 758 Use given surface height if possible 759 default: '-1' 760 761 --deqp-surface-type=[window|pixmap|pbuffer|fbo] 762 Use given surface type 763 default: 'window' 764 765 --deqp-screen-rotation=[unspecified|0|90|180|270] 766 Screen rotation for platforms that support it 767 default: '0' 768 769 --deqp-vk-device-id=<value> 770 Vulkan device ID (IDs start from 1) 771 default: '1' 772 773 --deqp-vk-device-group-id=<value> 774 Vulkan device Group ID (IDs start from 1) 775 default: '1' 776 777 --deqp-log-images=[enable|disable] 778 Enable or disable logging of result images 779 default: 'enable' 780 781 --deqp-log-shader-sources=[enable|disable] 782 Enable or disable logging of shader sources 783 default: 'enable' 784 785 --deqp-test-oom=[enable|disable] 786 Run tests that exhaust memory on purpose 787 default: 'enable' 788 789 --deqp-archive-dir=<value> 790 Path to test resource files 791 default: '.' 792 793 --deqp-log-flush=[enable|disable] 794 Enable or disable log file fflush 795 default: 'enable' 796 797 --deqp-log-compact=[enable|disable] 798 Enable or disable the compact version of the log 799 default: 'disable' 800 801 --deqp-validation=[enable|disable] 802 Enable or disable test case validation 803 default: 'disable' 804 805 --deqp-print-validation-errors 806 Print validation errors to standard error 807 808 --deqp-optimization-recipe=<value> 809 Shader optimization recipe (0=disabled, 1=performance, 2=size) 810 default: '0' 811 812 --deqp-optimize-spirv=[enable|disable] 813 Apply optimization to spir-v shaders as well 814 default: 'disable' 815 816 --deqp-shadercache=[enable|disable] 817 Enable or disable shader cache 818 default: 'enable' 819 820 --deqp-shadercache-filename=<value> 821 Write shader cache to given file 822 default: 'shadercache.bin' 823 824 --deqp-shadercache-truncate=[enable|disable] 825 Truncate shader cache before running tests 826 default: 'enable' 827 828 --deqp-renderdoc=[enable|disable] 829 Enable RenderDoc frame markers 830 default: 'disable' 831 832 --deqp-fraction=<value> 833 Run a fraction of the test cases (e.g. N,M means run group%M==N) 834 default: '' 835 836 --deqp-fraction-mandatory-caselist-file=<value> 837 Case list file that must be run for each fraction 838 default: '' 839 840 --deqp-waiver-file=<value> 841 Read waived tests from given file 842 default: '' 843 844 --deqp-runner-type=[any|none|amber] 845 Filter test cases based on runner 846 default: 'any' 847 848 --deqp-terminate-on-fail=[enable|disable] 849 Terminate the run on first failure 850 default: 'disable' 851 852 --deqp-terminate-on-device-lost=[enable|disable] 853 Terminate the run on first device lost error 854 855 --deqp-compute-only=[enable|disable] 856 Perform tests for devices implementing compute-only functionality 857 default: 'disable' 858 859 --deqp-subprocess=[enable|disable] 860 Inform app that it works as subprocess (Vulkan SC only, do not use manually) 861 default: 'disable' 862 863 --deqp-subprocess-test-count=<value> 864 Define default number of tests performed in subprocess (Vulkan SC only) 865 default: '65536' 866 867 --deqp-subprocess-cfg-file=<path> 868 Config file defining number of tests performed in subprocess for specific test branches (Vulkan SC only) 869 default: '' 870 871 --deqp-server-address=<value> 872 Server address (host:port) responsible for shader compilation (Vulkan SC only) 873 default: '' 874 875 --deqp-command-pool-min-size=<value> 876 Define minimum size of the command pool (in bytes) to use (Vulkan SC only) 877 default: '0' 878 879 --deqp-command-buffer-min-size=<value> 880 Define minimum size of the command buffer (in bytes) to use (Vulkan SC only) 881 default: '0' 882 883 --deqp-app-params-input-file=<path> 884 File providing default application parameters (Vulkan SC only) 885 default: '' 886 887 The file should contain lines of input in the following format: 888 type ("instance" or "device"), 32-bit vendorID, 32-bit deviceID, 32-bit parameterKey, 64-bit parameterValue 889 890 `type` specifies whether the values will be used for instance or device creation. 891 All the other values should be encoded in hex. For example: 892 instance, 0x01234567, 0x76543210, 0x01234567, 0x0000000076543210 893 894 --deqp-command-default-size=<value> 895 Define default single command size (in bytes) to use (Vulkan SC only) 896 default: '256' 897 898 --deqp-pipeline-default-size=<value> 899 Define default pipeline size (in bytes) to use (Vulkan SC only) 900 default: '16384' 901 902 --deqp-pipeline-compiler=<value> 903 Path to offline pipeline compiler (Vulkan SC only) 904 default: '' 905 906 --deqp-pipeline-dir=<value> 907 Offline pipeline data directory (Vulkan SC only) 908 default: '' 909 910 --deqp-pipeline-args=<value> 911 Additional compiler parameters (Vulkan SC only) 912 default: '' 913 914 --deqp-pipeline-file=<value> 915 Output file with pipeline cache (Vulkan SC only, do not use manually) 916 default: '' 917 918 --deqp-pipeline-logfile=<value> 919 Log file for pipeline compiler (Vulkan SC only, do not use manually) 920 default: '' 921 922 --deqp-pipeline-prefix=<value> 923 Prefix for input pipeline compiler files (Vulkan SC only, do not use manually) 924 default: '' 925 926Full list of parameters for the `vksc-server` application: 927 928 --port 929 Port 930 default: '59333' 931 932 --log 933 Log filename 934 default: 'dummy.log' 935 936 --pipeline-compiler 937 Path to offline pipeline compiler 938 default: '' 939 940 --pipeline-dir 941 Offline pipeline data directory 942 default: '' 943 944 --pipeline-file 945 Output file with pipeline cache 946 default: '' 947 948 --pipeline-log 949 Compiler log file 950 default: 'compiler.log' 951 952 --pipeline-args 953 Additional compiler parameters 954 default: '' 955