4 This document describes how to build and run Vulkan Conformance Test suite.
6 Vulkan CTS is built on the dEQP framework.
7 Up-to-date documentation for dEQP is available at:
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)
18 The following tools must be installed and present in the PATH variable:
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.10.2 or newer
26 * Visual Studio 2015 or newer (glslang uses several C++11 features)
30 * Standard toolchain (make, gcc/clang)
31 * If you have X11 installed, then the build assumes you also have the `GL/glx.h` header
33 * You can get this from the `mesa-common-dev` Ubuntu package.
39 Vulkan SDK for macOS includes a MoltenVK runtime library which is recommended method for
40 developing a Vulkan application.
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
49 If you have downloaded the Android SDK command line tools package (25.2.3 or higher) then
50 you can install the necessary components by running:
52 tools/bin/sdkmanager tools platform-tools 'build-tools;25.0.2' 'platforms;android-28'
58 To build dEQP, you need first to download sources for zlib, libpng, jsoncpp, glslang,
59 vulkan-docs, spirv-headers, and spirv-tools.
61 To download sources, run:
63 python3 external/fetch_sources.py
65 You may need to re-run `fetch_sources.py` to update to the latest glslang,
66 vulkan-docs and spirv-tools revisions occasionally.
68 You also need to install lxml python module by running:
70 python3 -m pip install lxml
72 With CMake out-of-source builds are always recommended. Create a build directory
73 of your choosing, and in that directory generate Makefiles or IDE project
79 cmake <path to vulkancts> -G"Visual Studio 14"
80 start dEQP-Core-default.sln
84 cmake <path to vulkancts> -G"Visual Studio 14 Win64"
85 start dEQP-Core-default.sln
87 ### Linux 32-bit Debug
89 cmake <path to vulkancts> -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32
92 Release build can be done by using -DCMAKE_BUILD_TYPE=Release
94 If 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.
97 ### Linux 64-bit Debug
99 cmake <path to vulkancts> -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-m64 -DCMAKE_CXX_FLAGS=-m64
103 ### MacOS 64-bit Debug
105 cmake <path to vulkancts> -DCMAKE_BUILD_TYPE=Debug -DDEQP_TARGET=osx -DCMAKE_C_FLAGS=-m64 -DCMAKE_CXX_FLAGS=-m64
110 Following command will build dEQP.apk:
112 python3 scripts/android/build_apk.py --sdk <path to Android SDK> --ndk <path to Android NDK>
114 By default the CTS package will be built for the Android API level 28.
115 Another API level may be supplied using --native-api command line option.
117 The package can be installed by either running:
119 python3 scripts/android/install_apk.py
121 By default the CTS package will contain libdeqp.so built for armeabi-v7a, arm64-v8a,
122 x86, and x86_64 ABIs, but that can be changed at build time by passing the --abis command line
123 option to `scripts/android/build_apk.py`.
125 To pick which ABI to use at _install time_, use the following command instead:
127 adb install -g --abi <ABI name> <build-root>/package/dEQP.apk
133 Current Vulkan mustpass is checked into repository and can be found at:
135 external/vulkancts/mustpass/main/vk-default.txt
137 Current Vulkan SC mustpass can be found at:
139 external/vulkancts/mustpass/master/vksc-default.txt
141 This file contains list of files located in vk-default or vksc-default subdirectory. Those files contain
142 tests from bigest test groups and together they contain all test cases that should pass.
144 Vulkan CTS mustpass can be re-generated by running:
146 python3 <vulkancts>/external/vulkancts/scripts/build_mustpass.py
152 Following command line options MUST be used when running CTS:
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
158 If 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
161 In addition, on multi-device systems the device for which conformance is claimed
162 can be selected with:
164 --deqp-vk-device-id=<value>
166 To speed up the conformance run on some platforms the following command line
167 option may be used to disable frequent fflush() calls to the output logs:
169 --deqp-log-flush=disable
171 By default, the test log will be written into the path "TestResults.qpa". If the
172 platform requires a different path, it can be specified with:
174 --deqp-log-filename=<path>
176 By default, the CTS will expect to find its test resource files in the current
177 working directory. This can be overridden with:
179 --deqp-archive-dir=<path>
181 By default, the shader cache will be written into the path "shadercache.bin". If the
182 platform requires a different path, it can be specified with:
184 --deqp-shadercache-filename=<path>
186 If the shader cache is not desired, it can be disabled with:
188 --deqp-shadercache=disable
190 CTS execution may be split into N fractions ( for the purpose of running it in parallel ) using
194 where I denotes index of current CTS execution ( I=[0..N-1], N=[1..8] )
196 When collecting results for a Conformance Submission Package the number of fractions must not exceed 8,
197 and a list of mandatory information tests for each fraction must be supplied:
199 --deqp-fraction-mandatory-caselist-file=<vulkancts>external/vulkancts/mustpass/main/vk-fraction-mandatory-tests.txt
201 To specify file containing waived tests that are omitted only by specified vendor and renderer/device
202 the following command line option may be used:
204 --deqp-waiver-file=<path>
206 To make log more clear for high level shader source analysis
207 output of decompiled SPIR-V shader sources can be disabled:
209 --deqp-log-decompiled-spirv=disable
211 Also non-informative empty LogInfo sections can be removed
212 from output into log by specifying:
214 --deqp-log-empty-loginfo=disable
216 There are several additional options used only in conjunction with Vulkan SC tests
217 ( for Vulkan SC CTS tests deqp-vksc application should be used ).
219 To define minimum size of the command pool use parameter:
221 --deqp-command-pool-min-size=<value>
223 To define minimum size of a single command buffer use parameter:
225 --deqp-command-buffer-min-size=<value>
227 If minimum size will not be defined, then the size of single command buffer will be estimated
228 from number of commands multiplied by value of parameter deqp-command-default-size.
229 Default size of a single command may be defined using:
231 --deqp-command-default-size=<value>
233 Another group of Vulkan SC options enable use of offline pipeline compiler:
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>
242 In case of offline pipeline compilers the size of the pipeline will be returned by
243 pipeline compiler. If we use internal pipeline compilation then pipeline size will be
244 equal to default size. This size may be modified using:
246 --deqp-pipeline-default-size=<value>
248 Vulkan SC may be implemented on embedded platform that is not able to
249 read from/write to files, write logs, etc. In this case you may use
250 external server that will perform these tasks on another machine:
252 --deqp-server-address=<value>
254 In Vulkan SC CTS tests are performed twice. You may define how many tests
255 are performed on separate process in a single batch:
257 --deqp-subprocess-test-count=<value>
259 Above mentioned parameter works as default value for all tests.
260 You may also define how many tests are performed on a separate process
261 for specific test tree branch using parameter:
263 --deqp-subprocess-cfg-file=<path>
265 File should contain test pattern followed by numeric value, for example:
266 dEQP-VKSC.api.copy_and_blit.core.image_to_image.dimensions.src32768x4_dst32768x4.*, 5
267 dEQP-VKSC.texture.explicit_lod.2d.sizes.*, 20
268 dEQP-VKSC.texture.explicit_lod.2d.sizes.128x128_*, 4
270 There is also one option used by CTS internally and should not be used manually.
271 It informs deqp-vksc application that it works as subprocess:
273 --deqp-subprocess=[enable|disable]
275 No other command line options are allowed.
281 cd <builddir>/external/vulkancts/modules/vulkan
282 Debug\deqp-vk.exe --deqp-caselist-file=...
286 cd <builddir>/external/vulkancts/modules/vulkan
287 Debug\deqp-vksc.exe --deqp-caselist-file=...
289 Test log will be written into TestResults.qpa
295 cd <builddir>/external/vulkancts/modules/vulkan
296 ./deqp-vk --deqp-caselist-file=...
300 cd <builddir>/external/vulkancts/modules/vulkan
301 ./deqp-vksc --deqp-caselist-file=...
305 cd <builddir>/external/vulkancts/modules/vulkan
306 ./deqp-vk --deqp-caselist-file=...
310 For Android build using SDK 29 or greater, it is recommended to use `/sdcard/Documents/` instead of `/sdcard/` due to scoped storage.
312 adb push <vulkancts>/external/vulkancts/mustpass/main/vk-default.txt /sdcard/vk-default.txt
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"
319 Test progress will be written to device log and can be displayed with:
323 Test log will be written into `/sdcard/TestResults.qpa`.
326 Conformance Submission Package Requirements
327 -------------------------------------------
329 The conformance submission package must contain the following:
331 1. Full test logs (`TestResults.qpa`) from CTS runs against all driver builds and all fractions
332 2. Result of `git status` and `git log` from CTS source directory
333 3. Any patches used on top of release tag
334 4. Conformance statement
336 Test logs (1) should be named `<submission pkg dir>/TestResults-<driver build type>-<fraction id>-of-<total fractions>.qpa`,
337 for example `TestResults-armeabi-v7a-1-of-8.qpa`. On platforms where multiple different driver
338 builds (for example 64-bit and 32-bit) are present, CTS logs must be provided
339 for each driver build as part of the submission package. If CTS run was split into multiple
340 fractions then result files for all fractions must be provided, each file must
341 contain results of the mandatory information tests.
343 Fractions may be run on different physical devices but each device must represent
344 the same Conformant Product.
346 Test logs generated on a system which exposes more than one physical device
347 in a device group can be used for products that expose one or more physical
348 devices in their device group.
350 The CTS build must always be done from clean git repository that doesn't have any
351 uncommitted changes. Thus it is necessary to run and capture output of `git
352 status` and `git log` (2) in the source directory:
354 git status > <submission pkg dir>/git-status.txt
355 git log --first-parent <release tag>^..HEAD > <submission pkg dir>/git-log.txt
357 Any changes made to CTS must be committed to the local repository, and provided
358 as part of the submission package (3). This can be done by running:
360 git format-patch -o <submission pkg dir> <release tag>..HEAD
362 Changes to platform-specific code (mostly under `framework/platform`)
363 are allowed. The commit message for each change must include a clear
364 description of the change and why it is necessary.
365 For 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)
370 Bugfixes to the tests are allowed. Before being used for a submission,
371 bugfixes must be accepted and merged into the CTS repository.
372 `git cherry-pick` is strongly recommended as a method of applying bug fixes.
374 If command line parameter --deqp-subprocess-cfg-file was used then the file
375 pointed by this parameter must also be added to submission package.
377 Other changes must be accompanied by a waiver (see below).
379 NOTE: When cherry-picking patches on top of release tag, please use `git cherry-pick -x`
380 to include original commit hash in the commit message.
382 Conformance statement (4) must be included in a file called `STATEMENT-<adopter>`
383 and must contain following:
385 CONFORM_VERSION: <git tag of CTS release>
386 PRODUCT: <string-value>
390 Note that product/cpu/os information is also captured in `dEQP-VK.info.*` tests
391 if `vk::Platform::describePlatform()` is implemented.
393 If the submission package covers multiple products, you can list them by appending
394 additional `PRODUCT:` lines to the conformance statement. For example:
396 CONFORM_VERSION: vulkan-cts-1.2.6.0
401 The actual submission package consists of the above set of files which must
402 be bundled into a gzipped tar file.
404 For Vulkan this must be named `VK<API major><API minor>_<adopter><_info>.tgz`.
406 For Vulkan SC this must be named `VKSC<API major><API minor>_<adopter><_info>.tgz`.
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.
411 `<adopter>` is the name of the Adopting member company, or some recognizable abbreviation.
412 The `<_info>` field is optional. It may be used to uniquely identify a submission
413 by OS, platform, date, or other criteria when making multiple submissions.
414 For example, a company XYZ may make a submission for a Vulkan 1.1 implementation named
415 `VK11_XYZ_PRODUCTA_Windows10.tgz`
417 One way to create a suiteable gzipped tar file is to execute the command:
419 tar -cvzf <filename.tgz> -C <submission pkg dir> .
421 where `<submission pkg dir>` is the directory containing the files from (1)-(4)
422 from above. A submission package must contain all of the files listed above,
423 and only those files.
425 As an example submission package could contain:
430 0001-Remove-Waived-Filtering-Tests.patch
431 0002-Fix-Pipeline-Parameters.patch
432 TestResults-armeabi-v7a.qpa
433 TestResults-arm64-v8a.qpa
439 The process for requesting a waiver is to report the issue by filing a bug
440 report in the Gitlab VulkanCTS project (TODO Github?). When creating the
441 submission package, include references to the waiver in the commit message of
442 the relevant change. Including as much information as possible in your bug
443 report (including a unified diff or a merge request of suggested file changes)
444 will ensure the issue can be progressed as rapidly as possible. Issues must
445 be labeled "Waiver" (TODO!) and identify the version of the CTS and affected
451 Conformance run is considered passing if all tests finish with allowed result
452 codes. Test results are contained in the TestResults.qpa log. Each
453 test case section contains XML tag Result, for example:
455 <Result StatusCode="Pass">Not validated</Result>
457 The result code is the value of the StatusCode attribute. Following status
466 Submission package can be verified using `verify_submission.py`
467 script located in [VK-GL-CTS-Tools](https://github.com/KhronosGroup/VK-GL-CTS-Tools).
472 Vulkan support from Platform implementation requires providing
473 `getVulkanPlatform()` method in `tcu::Platform` class implementation.
475 See `framework/common/tcuPlatform.hpp` and examples in
476 `framework/platform/win32/tcuWin32Platform.cpp` and
477 `framework/platform/android/tcuAndroidPlatform.cpp`.
479 If any WSI extensions are supported, platform port must also implement
480 methods for creating native display (`vk::Platform::createWsiDisplay`)
481 and window handles (`vk::wsi::Display::createWindow`). Otherwise tests
482 under `dEQP-VK.wsi` will fail.
488 For testing and development purposes it might be useful to be able to run
489 tests on dummy Vulkan implementation. One such implementation is provided in
490 vkNullDriver.cpp. To use that, implement `vk::Platform::createLibrary()` with
491 `vk::createNullDriver()`.
497 Vulkan CTS framework includes first-party support for validation layers, that
498 can be turned on with `--deqp-validation=enable` command line option.
500 When validation is turned on, default instance and device will be created with
501 validation layers enabled and debug callback is registered to record any
502 messages. Debug messages collected during test execution will be included at
503 the end of the test case log.
505 In addition, when the `--deqp-print-validation-errors` command line option is
506 used, validation errors are additionally printed to standard error in the
507 moment they are generated.
509 If any validation errors are found, test result will be set to `InternalError`.
511 By default `VK_DEBUG_REPORT_INFORMATION_BIT_EXT` and `_DEBUG_BIT_EXT` messages
512 are excluded from the log, but that can be customized by modifying
513 `vk::DebugReportMessage::shouldBeLogged()` in `vkDebugReportUtil.hpp`.
515 On the Android target, layers can be added to the APK during the build process
516 by setting the `--layers-path` command line option to point into the NDK or to
517 a locally-built layers tree. The layers are expected to be found under $abi/
518 under the layers path.
524 Vulkan test module can be used with Cherry (GUI for test execution and
525 analysis). Cherry is available at
526 https://android.googlesource.com/platform/external/cherry. Please follow
527 instructions in README to get started.
529 Before first launch, and every time test hierarchy has been modified, test
530 case list must be refreshed by running:
532 python scripts/build_caselists.py path/to/cherry/data
534 Cherry must be restarted for the case list update to take effect.
540 Vulkan CTS can be optionally run with the shader optimizer enabled. This
541 is an experimental feature which can be used to further stress both the
542 drivers as well as the optimizer itself. The shader optimizer is disabled
545 The following command line options can be used to configure the shader
548 --deqp-optimization-recipe=<number>
550 The list of the optimization recipes can be found and customized in the
551 `optimizeCompiledBinary()` function in `vkPrograms.cpp`.
553 As of this writing, there are 2 recipes to choose from:
555 0. Disabled (default)
556 1. Optimize for performance
559 The performance and size optimization recipes are defined by the spir-v
560 optimizer, and will change from time to time as the optimizer matures.
562 --deqp-optimize-spirv=enable
564 This option is not required to run the optimizer. By default, the shader
565 optimizer only optimizes shaders generated from GLSL or HLSL, and leaves
566 hand-written SPIR-V shaders alone.
568 Many of the hand-written SPIR-V tests stress specific features of the
569 SPIR-V which might get optimized out. Using this option will enable the
570 optimizer on the hand-written SPIR-V as well, which may be useful in
571 finding new bugs in drivers or the optimizer itself, but will likely
572 invalidate the tests themselves.
578 The Vulkan CTS framework contains a shader cache for speeding up the running
579 of the CTS. Skipping shader compilation can significantly reduce runtime,
580 especially for repeated runs.
582 Default behavior is to have the shader cache enabled, but truncated at the
583 start of the CTS run. This still gives the benefit of skipping shader
584 compilation for identical shaders in different tests (which there are many),
585 while making sure that the shader cache file does not grow indefinitely.
587 The shader cache identifies the shaders by hashing the shader source code
588 along with various bits of information that may affect the shader compilation
589 (such as shader stage, CTS version, possible compilation flags, etc). If a
590 cached shader with matching hash is found, a byte-by-byte comparison of the
591 shader sources is made to make sure that the correct shader is being
592 retrieved from the cache.
594 The behavior of the shader cache can be modified with the following command
597 --deqp-shadercache=disable
599 Disable the shader cache. All shaders will be compiled every time.
601 --deqp-shadercache-filename=<filename>
603 Set the name of the file where the cached shaders will be stored. This
604 option may be required for the shader cache to work at all on Android
607 --deqp-shadercache-truncate=disable
609 Do not truncate the shader cache file at startup. No shader compilation will
610 occur on repeated runs of the CTS.
612 --deqp-shadercache-ipc=enable
614 Enables the use of inter-process communication primitives to allow several
615 instances of CTS to share a single cache file. All of the instances must
616 use the same shader cache filename.
618 Note that if one instance should crash while holding the cache file lock,
619 the other instances will hang. The lock is only held while reading or
620 writing to the cache, so crashes are unlikely.
622 In case of a crash outside the cache file lock, the named shared memory
623 and shared semaphore may be left behind. These will be re-used by CTS on
624 subsequent runs, so additional memory leak will not occur. Shader cache
625 truncate may not work in this case. On Windows, when all instances of
626 CTS have terminated the shared resources get automatically cleaned up.
630 The RenderDoc (https://renderdoc.org/) graphics debugger may be used to debug
633 Following command line option should be used when launching tests from
636 --deqp-renderdoc=enable
638 This causes the framework to interface with the debugger and mark each dEQP
639 test case as a separate 'frame', just for the purpose of capturing. The frames
640 are added using RenderDoc 'In-Application API', instead of swapchain operations.
645 Some CTS tests use third-party runners. By default all tests are executed
646 regardless of runner type (`any`). To exclude all tests using any of the
647 external runners (`none`) or to only include tests using a certain runner:
649 --deqp-runner-type=(any|none|amber)
651 Vulkan SC Conformance Test suite
652 --------------------------------
654 This project is also able to perform conformance tests for Vulkan SC
655 implementations. For this purpose Vulkan CTS framework has been adapted
656 to Vulkan SC requirements:
658 - Vulkan SC CTS contains its own mustpass list
660 external/vulkancts/mustpass/master/vksc-default.txt
662 - Vulkan SC CTS uses its own executable module to perform tests: deqp-vksc
664 - Each test in deqp-vksc is performed twice.
665 First test run is performed in main process and its purpose is to collect
666 information about used pipelines, number of created Vulkan objects etc.
667 Second test run is done in separate process ( subprocess ) and it performs
670 - Vulkan SC pipelines may be compiled using offline pipeline compiler
671 delivered by implementation vendor. You can use command line parameters
672 to achieve this ( see parameters: --deqp-pipeline-compiler, --deqp-pipeline-dir,
673 --deqp-pipeline-args, --deqp-pipeline-file, --deqp-pipeline-logfile,
674 --deqp-pipeline-prefix )
676 Reference offline pipeline compiler was created to showcase how input and output
677 should look like for such application. It uses Vulkan API to create pipeline cache.
678 The name of the executable is vksc-pipeline-compiler.
680 - Some of the future Vulkan SC implementations may not have a possibility to use
681 filesystem, create pipeline caches or log results to file. For these implementations
682 Vulkan SC CTS contains server application that may handle such requests on external
683 host machine. Define parameter --deqp-server-address in deqp-vksc application
684 to use external server.
685 Server application's name is vksc-server and its parameters are listed below,
686 in Command Line section.
690 Full list of parameters for the `deqp-vk` and `deqp-vksc` modules:
692 OpenGL and OpenCL parameters not affecting Vulkan API were suppressed.
697 -n, --deqp-case=<value>
698 Test case(s) to run, supports wildcards (e.g. dEQP-GLES2.info.*)
700 --deqp-caselist=<value>
701 Case list to run in trie format (e.g. {dEQP-GLES2{info{version,renderer}}})
703 --deqp-caselist-file=<value>
704 Read case list (in trie format) from given file
706 --deqp-caselist-resource=<value>
707 Read case list (in trie format) from given file located application's assets
709 --deqp-stdin-caselist
710 Read case list (in trie format) from stdin
712 --deqp-log-filename=<value>
713 Write test results to given file
714 default: 'TestResults.qpa'
716 --deqp-runmode=[execute|xml-caselist|txt-caselist|stdout-caselist]
717 Execute tests, or write list of test cases into a file
720 --deqp-caselist-export-file=<value>
721 Set the target file name pattern for caselist export
722 default: '${packageName}-cases.${typeExtension}'
724 --deqp-watchdog=[enable|disable]
728 --deqp-crashhandler=[enable|disable]
729 Enable crash handling
732 --deqp-base-seed=<value>
733 Base seed for test cases that use randomization
736 --deqp-test-iteration-count=<value>
737 Iteration count for cases that support variable number of iterations
740 --deqp-visibility=[windowed|fullscreen|hidden]
741 Default test window visibility
744 --deqp-surface-width=<value>
745 Use given surface width if possible
748 --deqp-surface-height=<value>
749 Use given surface height if possible
752 --deqp-surface-type=[window|pixmap|pbuffer|fbo]
753 Use given surface type
756 --deqp-screen-rotation=[unspecified|0|90|180|270]
757 Screen rotation for platforms that support it
760 --deqp-vk-device-id=<value>
761 Vulkan device ID (IDs start from 1)
764 --deqp-vk-device-group-id=<value>
765 Vulkan device Group ID (IDs start from 1)
768 --deqp-log-images=[enable|disable]
769 Enable or disable logging of result images
772 --deqp-log-shader-sources=[enable|disable]
773 Enable or disable logging of shader sources
776 --deqp-test-oom=[enable|disable]
777 Run tests that exhaust memory on purpose
780 --deqp-archive-dir=<value>
781 Path to test resource files
784 --deqp-log-flush=[enable|disable]
785 Enable or disable log file fflush
788 --deqp-validation=[enable|disable]
789 Enable or disable test case validation
792 --deqp-print-validation-errors
793 Print validation errors to standard error
795 --deqp-optimization-recipe=<value>
796 Shader optimization recipe (0=disabled, 1=performance, 2=size)
799 --deqp-optimize-spirv=[enable|disable]
800 Apply optimization to spir-v shaders as well
803 --deqp-shadercache=[enable|disable]
804 Enable or disable shader cache
807 --deqp-shadercache-filename=<value>
808 Write shader cache to given file
809 default: 'shadercache.bin'
811 --deqp-shadercache-truncate=[enable|disable]
812 Truncate shader cache before running tests
815 --deqp-renderdoc=[enable|disable]
816 Enable RenderDoc frame markers
819 --deqp-fraction=<value>
820 Run a fraction of the test cases (e.g. N,M means run group%M==N)
823 --deqp-fraction-mandatory-caselist-file=<value>
824 Case list file that must be run for each fraction
827 --deqp-waiver-file=<value>
828 Read waived tests from given file
831 --deqp-runner-type=[any|none|amber]
832 Filter test cases based on runner
835 --deqp-terminate-on-fail=[enable|disable]
836 Terminate the run on first failure
839 --deqp-subprocess=[enable|disable]
840 Inform app that it works as subprocess (Vulkan SC only, do not use manually)
843 --deqp-subprocess-test-count=<value>
844 Define default number of tests performed in subprocess (Vulkan SC only)
847 --deqp-subprocess-cfg-file=<path>
848 Config file defining number of tests performed in subprocess for specific test branches (Vulkan SC only)
851 --deqp-server-address=<value>
852 Server address (host:port) responsible for shader compilation (Vulkan SC only)
855 --deqp-command-pool-min-size=<value>
856 Define minimum size of the command pool (in bytes) to use (Vulkan SC only)
859 --deqp-command-buffer-min-size=<value>
860 Define minimum size of the command buffer (in bytes) to use (Vulkan SC only)
863 --deqp-app-params-input-file=<path>
864 File providing default application parameters (Vulkan SC only)
867 The file should contain lines of input in the following format:
868 type ("instance" or "device"), 32-bit vendorID, 32-bit deviceID, 32-bit parameterKey, 64-bit parameterValue
870 `type` specifies whether the values will be used for instance or device creation.
871 All the other values should be encoded in hex. For example:
872 instance, 0x01234567, 0x76543210, 0x01234567, 0x0000000076543210
874 --deqp-command-default-size=<value>
875 Define default single command size (in bytes) to use (Vulkan SC only)
878 --deqp-pipeline-default-size=<value>
879 Define default pipeline size (in bytes) to use (Vulkan SC only)
882 --deqp-pipeline-compiler=<value>
883 Path to offline pipeline compiler (Vulkan SC only)
886 --deqp-pipeline-dir=<value>
887 Offline pipeline data directory (Vulkan SC only)
890 --deqp-pipeline-args=<value>
891 Additional compiler parameters (Vulkan SC only)
894 --deqp-pipeline-file=<value>
895 Output file with pipeline cache (Vulkan SC only, do not use manually)
898 --deqp-pipeline-logfile=<value>
899 Log file for pipeline compiler (Vulkan SC only, do not use manually)
902 --deqp-pipeline-prefix=<value>
903 Prefix for input pipeline compiler files (Vulkan SC only, do not use manually)
906 Full list of parameters for the `vksc-server` application:
917 Path to offline pipeline compiler
921 Offline pipeline data directory
925 Output file with pipeline cache
930 default: 'compiler.log'
933 Additional compiler parameters