Name Date Size

..25-Oct-20244 KiB

data/vulkan/H25-Oct-20244 KiB

doc/H25-Oct-20244 KiB

framework/vulkan/H25-Oct-20244 KiB

LICENSEH A D25-Oct-202411.1 KiB

modules/vulkan/H25-Oct-20244 KiB

modules_no_buildgn/vulkan/H25-Oct-20244 KiB

mustpass/H25-Oct-20244 KiB

README.mdH A D25-Oct-202431.1 KiB

scripts/H25-Oct-20244 KiB

vkscpc/H25-Oct-20244 KiB

vkscserver/H25-Oct-20244 KiB

README.md

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