Update README to allow parallel execution
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / README.md
index ff7b46f..c86c9e8 100644 (file)
@@ -16,7 +16,7 @@ The following tools must be installed and present in the PATH variable:
 
  * Git (for checking out sources)
  * Python 3.x (for the build related scripts, some other scripts still use Python 2.7.x)
- * CMake 2.8 (3.6 for Android NDK r17+ builds) or newer
+ * CMake 3.0 (3.6 for Android NDK r17+ builds) or newer
 
 ### Win32
 
@@ -74,6 +74,9 @@ using cmake.
 
 Release build can be done by using -DCMAKE_BUILD_TYPE=Release
 
+If building for 32-bit x86 with GCC, you probably also want to add `-msse2
+-mfpmath=sse` to ensure that you get correct IEEE floating-point behavior.
+
 ### Linux 64-bit Debug
 
        cmake <path to vulkancts> -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-m64 -DCMAKE_CXX_FLAGS=-m64
@@ -106,39 +109,19 @@ Building Mustpass
 
 Current mustpass is checked into repository and can be found at:
 
-       external/vulkancts/mustpass/1.1.4/vk-default.txt
+       external/vulkancts/mustpass/master/vk-default.txt
 
 Vulkan CTS mustpass can be re-generated by running:
 
        python <vulkancts>/external/vulkancts/scripts/build_mustpass.py
 
 
-Pre-compiling SPIR-V binaries
------------------------------
-
-For distribution, and platforms that don't support GLSL to SPIR-V compilation,
-SPIR-V binaries can be pre-built with following command:
-
-       python external/vulkancts/scripts/build_spirv_binaries.py
-
-By default the script builds SPIR-V binaries for Vulkan 1.1.
-Binaries for other Vulkan versions can be requested by supplying
-an extra command line option:
-
-       python external/vulkancts/scripts/build_spirv_binaries.py --target-vulkan-version <Vulkan version>
-
-Binaries will be written to `external/vulkancts/data/vulkan/prebuilt/`.
-
-Test modules (or in case of Android, the APK) must be re-built after building
-SPIR-V programs in order for the binaries to be available.
-
-
 Running CTS
 -----------
 
 Following command line options MUST be used when running CTS:
 
-       --deqp-caselist-file=<vulkancts>/external/vulkancts/mustpass/1.1.4/vk-default.txt
+       --deqp-caselist-file=<vulkancts>/external/vulkancts/mustpass/master/vk-default.txt
        --deqp-log-images=disable
        --deqp-log-shader-sources=disable
 
@@ -166,12 +149,23 @@ If the shader cache is not desired, it can be disabled with:
 
        --deqp-shadercache=disable
 
+CTS execution may be split into N fractions ( for the purpose of running it in parallel ) using
+
+       --deqp-fraction=I,N
+
+where I denotes index of current CTS execution ( I=[0..N-1], N=[1..8] )
+
+When collecting results for a Conformance Submission Package the number of fractions must not exceed 8,
+and a list of mandatory information tests for each fraction must be supplied:
+
+       --deqp-fraction-mandatory-caselist-file=<vulkancts>external/vulkancts/mustpass/master/vk-fraction-mandatory-tests.txt
+
 No other command line options are allowed.
 
 ### Win32
 
        cd <builddir>/external/vulkancts/modules/vulkan
-       Debug/deqp-vk.exe --deqp-caselist-file=...
+       Debug\deqp-vk.exe --deqp-caselist-file=...
 
 Test log will be written into TestResults.qpa
 
@@ -182,7 +176,7 @@ Test log will be written into TestResults.qpa
 
 ### Android
 
-       adb push <vulkancts>/external/vulkancts/mustpass/1.1.4/vk-default.txt /sdcard/vk-default.txt
+       adb push <vulkancts>/external/vulkancts/mustpass/master/vk-default.txt /sdcard/vk-default.txt
        adb shell
 
 In device shell:
@@ -201,15 +195,20 @@ Conformance Submission Package Requirements
 
 The conformance submission package must contain the following:
 
-1. Full test logs (`TestResults.qpa`) from CTS runs against all driver builds
+1. Full test logs (`TestResults.qpa`) from CTS runs against all driver builds and all fractions
 2. Result of `git status` and `git log` from CTS source directory
 3. Any patches used on top of release tag
 4. Conformance statement
 
-Test logs (1) should be named `<submission pkg dir>/TestResults-<driver build type>.qpa`,
-for example `TestResults-armeabi-v7a.qpa`. On platforms where multiple different driver
+Test logs (1) should be named `<submission pkg dir>/TestResults-<driver build type>-<fraction id>-of-<total fractions>.qpa`,
+for example `TestResults-armeabi-v7a-1-of-8.qpa`. On platforms where multiple different driver
 builds (for example 64-bit and 32-bit) are present, CTS logs must be provided
-for each driver build as part of the submission package.
+for each driver build as part of the submission package. If CTS run was split into multiple
+fractions then result files for all fractions must be provided, each file must
+contain results of the mandatory information tests.
+
+Fractions may be run on different physical devices but each device must represent
+the same Conformant Product.
 
 Test logs generated on a system which exposes more than one physical device
 in a device group can be used for products that expose one or more physical
@@ -249,7 +248,7 @@ if `vk::Platform::describePlatform()` is implemented.
 If the submission package covers multiple products, you can list them by appending
 additional `PRODUCT:` lines to the conformance statement. For example:
 
-       CONFORM_VERSION:         vulkan-cts-1.1.4.0
+       CONFORM_VERSION:         vulkan-cts-1.1.6.0
        PRODUCT:                 Product A
        PRODUCT:                 Product B
        ...
@@ -316,7 +315,7 @@ Submission package can be verified using `external/vulkancts/scripts/verify_subm
 script. The script takes two arguments: path to extracted submission package
 and path to current mustpass list. For example:
 
-       python external/vulkancts/scripts/verify_submission.py VK_11_Khronos_1/ external/vulkancts/mustpass/1.1.4/vk-default.txt
+       python external/vulkancts/scripts/verify_submission.py VK_11_Khronos_1/ external/vulkancts/mustpass/master/vk-default.txt
 
 Please note that the script reports a warning even for a correctly generated git-log.txt
 If your git-log.txt contains only head commit of the release tag then
@@ -402,21 +401,14 @@ optimizer:
 The list of the optimization recipes can be found and customized in the
 `optimizeCompiledBinary()` function in `vkPrograms.cpp`.
 
-As of this writing, there are 8 recipes to choose from:
+As of this writing, there are 2 recipes to choose from:
 
        0. Disabled (default)
-       1. The example recipe from spir-v opt 1.0 whitepaper
-       2. RegisterPerformancePasses from commandline optimizer tool october 2017
-       3. RegisterSizePasses from commandline optimizer tool october 2017
-       4. RegisterLegalizationPasses from commandline optimizer tool April 2018
-       5. RegisterPerformancePasses from commandline optimizer tool April 2018
-       6. RegisterPerformancePasses from commandline optimizer tool April 2018 with CreateCommonUniformElimPass
-       7. RegisterSizePasses from commandline optimizer tool April 2018
-       8. RegisterSizePasses from commandline optimizer tool April 2018 with CreateCommonUniformElimPass
-
-The `Register...Passes()` calls change in the SPIR-V optimizer tool from
-time to time. Since different sets of passes may result in different
-shaders, having several fixed sets is useful for issue discovery.
+       1. Optimize for performance
+       2. Optimize for size
+
+The performance and size optimization recipes are defined by the spir-v
+optimizer, and will change from time to time as the optimizer matures.
 
        --deqp-optimize-spirv=enable