Add tests for multi GPU (device group)
authorVikram Kushwaha <vkushwaha@nvidia.com>
Fri, 2 Jun 2017 22:36:17 +0000 (15:36 -0700)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Fri, 6 Oct 2017 07:41:46 +0000 (03:41 -0400)
commit69de8d3f5ee3b1874173210a9b88831b54e5c6f9
tree2b3be1e6d169273a0e109d0f9cd0c0d307aaaffe
parentfef2cc50d1342f373da9be120baf53c44e00720e
Add tests for multi GPU (device group)

Device Group tests may use multiple physical devices for rendering.
If there are 2 or more physical devices in a device group, tests
are looped through all physical devices, 2 at a time.
If there is only 1 physical device, the test is only run on it.

Primarily, there are 2 main test modes:
AFR(Alternate frame rendering) and SFR(Split frame rendering)

AFR: A frame(tessellated or filled sphere) is drawn by one of the
physical devices ['i'+1] and copied to the render target of phys
device 'i' which then does a check against reference image.

SFR: Each half of the frame is drawn by a physical device 'i'
and 'i+1'%(num phys devices), then phys device 'i' does a check
against reference image.

SFR and AFR have 6 modes each:
1. Rendering a triangle with render target in device memory
2. Rendering a triangle with render target in host memory
3. dedicated memory allocations for buffers and render target
4. Peer fetching of vertex, uniform and sbo data, (ith physical
device fetches attributes from (i+1)%(num phys devices)th peer device
5. Render a tessellated sphere
6. Render a tesslated sphere in line fill mode

For validation, the rendering is either compared against a system
renderer(for triangle) or compared against a stored png (in case of
a tessellated sphere)

New tests:
 dEQP-VK.device_group.sfr*
 dEQP-VK.device_group.afr*

Components: Vulkan

VK-GL-CTS issue: 110

Change-Id: Ibace53a1c3be610798925a339a763a808f9f76b9
AndroidGen.mk
android/cts/master/vk-master.txt
external/vulkancts/data/vulkan/data/device_group/sphere.png [new file with mode: 0644]
external/vulkancts/data/vulkan/data/device_group/spherefilled.png [new file with mode: 0644]
external/vulkancts/modules/vulkan/CMakeLists.txt
external/vulkancts/modules/vulkan/device_group/CMakeLists.txt [new file with mode: 0644]
external/vulkancts/modules/vulkan/device_group/vktDeviceGroupRendering.cpp [new file with mode: 0755]
external/vulkancts/modules/vulkan/device_group/vktDeviceGroupTests.hpp [new file with mode: 0644]
external/vulkancts/modules/vulkan/vktTestPackage.cpp
external/vulkancts/mustpass/1.1.0/vk-default.txt