Tests for VK_KHR_deferred_host_operations
authorBoris Zanin <boris.zanin@mobica.com>
Wed, 15 Apr 2020 14:19:17 +0000 (16:19 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Mon, 11 May 2020 15:11:27 +0000 (11:11 -0400)
Implementation of deferred host operations tests for:
 * vkCreateRayTracingPipelinesKHR
 * vkBuildAccelerationStructureKHR
 * vkCopyAccelerationStructureToMemoryKHR

Add tests:
 * dEQP-VK.ray_tracing.large_shader_set.cpu_ht_*
 * dEQP-VK.ray_tracing.build.cpuht_*
 * dEQP-VK.ray_tracing.acceleration_structures.host_threading.*

Affects tests:
 * dEQP-VK.ray_tracing.large_shader_set.gpu*
 * dEQP-VK.ray_tracing.large_shader_set.cpu_ht.*
 * dEQP-VK.ray_tracing.build.gpu_cpu.*
 * dEQP-VK.ray_tracing.build.gpu_cpuht.*
 * dEQP-VK.ray_tracing.acceleration_structures.*

Components: Vulkan

VK-GL-CTS issue: 2308

Change-Id: I9d0ba23b9badd24afc4efe944cde686bd07e9c74

android/cts/master/vk-master-2020-03-01.txt
android/cts/master/vk-master.txt
external/vulkancts/framework/vulkan/vkRayTracingUtil.cpp
external/vulkancts/framework/vulkan/vkRayTracingUtil.hpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingAccelerationStructuresTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingBuildLargeTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingBuildTests.cpp
external/vulkancts/mustpass/master/vk-default.txt

index a76fc39..32ff475 100644 (file)
@@ -205001,78 +205001,30 @@ dEQP-VK.ray_tracing.large_shader_set.cpu_ht.64
 dEQP-VK.ray_tracing.large_shader_set.cpu_ht.256
 dEQP-VK.ray_tracing.large_shader_set.cpu_ht.1024
 dEQP-VK.ray_tracing.large_shader_set.cpu_ht.4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_1048576
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_1048576
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_16_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_256_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_4096_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_65536_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_1048576_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_1_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_16_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_256_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_4096_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_65536_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_16_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_256_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_4096_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_65536_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_1048576_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_1_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_16_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_256_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_4096_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_65536_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_16_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_256_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_4096_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_65536_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1048576_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1048576_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_16_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_256_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_4096_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.4096
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_primitives.triangles_1_1_16
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_primitives.triangles_1_1_256
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_primitives.triangles_1_1_4096
@@ -205145,6 +205097,510 @@ dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_16_4_4
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_256_4_4
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_4096_4_4
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_65536_4_4
 dEQP-VK.ray_tracing.callable_shader.rgen_call
 dEQP-VK.ray_tracing.callable_shader.rgen_call_call
 dEQP-VK.ray_tracing.callable_shader.hit_call
@@ -206149,6 +206605,54 @@ dEQP-VK.ray_tracing.acceleration_structures.operations.serialization.gpu_built.b
 dEQP-VK.ray_tracing.acceleration_structures.operations.serialization.gpu_built.bottom_acceleration_structure.aabbs
 dEQP-VK.ray_tracing.acceleration_structures.requirements.memory_build_scratch
 dEQP-VK.ray_tracing.acceleration_structures.requirements.memory_update_scratch
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.bottom_acceleration_structure.aabbs
 dEQP-VK.ray_tracing.indirect.build_structure
 dEQP-VK.ray_tracing.watertightness.0.4
 dEQP-VK.ray_tracing.watertightness.0.16
index 5488fe3..c8e8c4e 100644 (file)
@@ -601415,78 +601415,30 @@ dEQP-VK.ray_tracing.large_shader_set.cpu_ht.64
 dEQP-VK.ray_tracing.large_shader_set.cpu_ht.256
 dEQP-VK.ray_tracing.large_shader_set.cpu_ht.1024
 dEQP-VK.ray_tracing.large_shader_set.cpu_ht.4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_1048576
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_1048576
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_16_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_256_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_4096_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_65536_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_1048576_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_1_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_16_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_256_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_4096_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_65536_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_16_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_256_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_4096_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_65536_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_1048576_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_1_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_16_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_256_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_4096_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_65536_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_16_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_256_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_4096_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_65536_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1048576_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1048576_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_16_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_256_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_4096_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.4096
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_primitives.triangles_1_1_16
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_primitives.triangles_1_1_256
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_primitives.triangles_1_1_4096
@@ -601559,6 +601511,510 @@ dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_16_4_4
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_256_4_4
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_4096_4_4
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_65536_4_4
 dEQP-VK.ray_tracing.callable_shader.rgen_call
 dEQP-VK.ray_tracing.callable_shader.rgen_call_call
 dEQP-VK.ray_tracing.callable_shader.hit_call
@@ -602563,6 +603019,54 @@ dEQP-VK.ray_tracing.acceleration_structures.operations.serialization.gpu_built.b
 dEQP-VK.ray_tracing.acceleration_structures.operations.serialization.gpu_built.bottom_acceleration_structure.aabbs
 dEQP-VK.ray_tracing.acceleration_structures.requirements.memory_build_scratch
 dEQP-VK.ray_tracing.acceleration_structures.requirements.memory_update_scratch
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.bottom_acceleration_structure.aabbs
 dEQP-VK.ray_tracing.indirect.build_structure
 dEQP-VK.ray_tracing.watertightness.0.4
 dEQP-VK.ray_tracing.watertightness.0.16
index 9c8e6e6..e505859 100644 (file)
 
 namespace vk
 {
+struct DeferredThreadParams
+{
+       const DeviceInterface&  vk;
+       VkDevice                                device;
+       VkDeferredOperationKHR  deferredOperation;
+       VkResult                                result;
+};
 
 std::string getCommonRayGenerationShader (void)
 {
@@ -339,6 +346,60 @@ VkResult finishDeferredOperation (const DeviceInterface&   vk,
        return result;
 }
 
+void finishDeferredOperationThreaded (DeferredThreadParams* deferredThreadParams)
+{
+       deferredThreadParams->result = finishDeferredOperation(deferredThreadParams->vk, deferredThreadParams->device, deferredThreadParams->deferredOperation);
+}
+
+void finishDeferredOperation (const DeviceInterface&   vk,
+                                                         VkDevice                                      device,
+                                                         VkDeferredOperationKHR        deferredOperation,
+                                                         const deUint32                        workerThreadCount)
+{
+       if (workerThreadCount == 0)
+       {
+               VK_CHECK(finishDeferredOperation(vk, device, deferredOperation));
+       }
+       else
+       {
+               const deUint32                                                  maxThreadCountSupported = deMinu32(256u, vk.getDeferredOperationMaxConcurrencyKHR(device, deferredOperation));
+               const deUint32                                                  requestedThreadCount    = workerThreadCount;
+               const deUint32                                                  testThreadCount                 = requestedThreadCount == std::numeric_limits<deUint32>::max() ? maxThreadCountSupported : requestedThreadCount;
+
+               if (maxThreadCountSupported == 0)
+                       TCU_FAIL("vkGetDeferredOperationMaxConcurrencyKHR must not return 0");
+
+               if (testThreadCount > maxThreadCountSupported)
+                       TCU_THROW(NotSupportedError, "Requested number of threads is greater than allowed maximum");
+
+               const DeferredThreadParams                              deferredThreadParams    =
+               {
+                       vk,                                     //  const DeviceInterface&      vk;
+                       device,                         //  VkDevice                            device;
+                       deferredOperation,      //  VkDeferredOperationKHR      deferredOperation;
+                       VK_RESULT_MAX_ENUM,     //  VResult                                     result;
+               };
+               std::vector<DeferredThreadParams>               threadParams    (testThreadCount, deferredThreadParams);
+               std::vector<de::MovePtr<std::thread> >  threads                 (testThreadCount);
+               bool                                                                    executionResult = false;
+
+               DE_ASSERT(threads.size() > 0 && threads.size() == testThreadCount);
+
+               for (deUint32 threadNdx = 0; threadNdx < testThreadCount; ++threadNdx)
+                       threads[threadNdx] = de::MovePtr<std::thread>(new std::thread(finishDeferredOperationThreaded, &threadParams[threadNdx]));
+
+               for (deUint32 threadNdx = 0; threadNdx < testThreadCount; ++threadNdx)
+                       threads[threadNdx]->join();
+
+               for (deUint32 threadNdx = 0; threadNdx < testThreadCount; ++threadNdx)
+                       if (threadParams[threadNdx].result == VK_SUCCESS)
+                               executionResult = true;
+
+               if (!executionResult)
+                       TCU_FAIL("Neither reported VK_SUCCESS");
+       }
+}
+
 SerialStorage::SerialStorage (const DeviceInterface&                                                                   vk,
                                                          const VkDevice                                                                                        device,
                                                          Allocator&                                                                                            allocator,
@@ -560,7 +621,8 @@ public:
 
        void                                                                                                    setBuildType                                                                    (const VkAccelerationStructureBuildTypeKHR      buildType) override;
        void                                                                                                    setBuildFlags                                                                   (const VkBuildAccelerationStructureFlagsKHR     flags) override;
-       void                                                                                                    setDeferredOperation                                                    (const bool                                                                     deferredOperation) override;
+       void                                                                                                    setDeferredOperation                                                    (const bool                                                                     deferredOperation,
+                                                                                                                                                                                                                        const deUint32                                                         workerThreadCount) override;
        void                                                                                                    setUseArrayOfPointers                                                   (const bool                                                                     useArrayOfPointers) override;
        void                                                                                                    setIndirectBuildParameters                                              (const VkBuffer                                                         indirectBuffer,
                                                                                                                                                                                                                         const VkDeviceSize                                                     indirectBufferOffset,
@@ -596,6 +658,7 @@ protected:
        VkAccelerationStructureBuildTypeKHR                                             m_buildType;
        VkBuildAccelerationStructureFlagsKHR                                    m_buildFlags;
        bool                                                                                                    m_deferredOperation;
+       deUint32                                                                                                m_workerThreadCount;
        bool                                                                                                    m_useArrayOfPointers;
        de::MovePtr<BufferWithMemory>                                                   m_vertexBuffer;
        de::MovePtr<BufferWithMemory>                                                   m_indexBuffer;
@@ -626,6 +689,7 @@ BottomLevelAccelerationStructureKHR::BottomLevelAccelerationStructureKHR ()
        , m_buildType                                           (VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)
        , m_buildFlags                                          (0u)
        , m_deferredOperation                           (false)
+       , m_workerThreadCount                           (0)
        , m_useArrayOfPointers                          (false)
        , m_vertexBuffer                                        ()
        , m_indexBuffer                                         ()
@@ -648,9 +712,11 @@ void BottomLevelAccelerationStructureKHR::setBuildFlags (const VkBuildAccelerati
        m_buildFlags = flags;
 }
 
-void BottomLevelAccelerationStructureKHR::setDeferredOperation (const bool     deferredOperation)
+void BottomLevelAccelerationStructureKHR::setDeferredOperation (const bool             deferredOperation,
+                                                                                                                               const deUint32  workerThreadCount)
 {
        m_deferredOperation = deferredOperation;
+       m_workerThreadCount = workerThreadCount;
 }
 
 void BottomLevelAccelerationStructureKHR::setUseArrayOfPointers (const bool    useArrayOfPointers)
@@ -898,7 +964,7 @@ void BottomLevelAccelerationStructureKHR::build (const DeviceInterface&                                             vk,
                        DE_ASSERT(result == VK_OPERATION_DEFERRED_KHR || result == VK_OPERATION_NOT_DEFERRED_KHR || result == VK_SUCCESS);
                        DE_UNREF(result);
 
-                       VK_CHECK(finishDeferredOperation(vk, device, deferredOperation));
+                       finishDeferredOperation(vk, device, deferredOperation, m_workerThreadCount);
 
                        accelerationStructureBuildGeometryInfoKHR.pNext = DE_NULL;
                }
@@ -956,7 +1022,7 @@ void BottomLevelAccelerationStructureKHR::copyFrom (const DeviceInterface&
                DE_ASSERT(result == VK_OPERATION_DEFERRED_KHR || result == VK_OPERATION_NOT_DEFERRED_KHR || result == VK_SUCCESS);
                DE_UNREF(result);
 
-               VK_CHECK(finishDeferredOperation(vk, device, deferredOperation));
+               finishDeferredOperation(vk, device, deferredOperation, m_workerThreadCount);
        }
 
        if (m_buildType == VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)
@@ -973,10 +1039,18 @@ void BottomLevelAccelerationStructureKHR::serialize (const DeviceInterface&              vk,
                                                                                                         const VkCommandBuffer          cmdBuffer,
                                                                                                         SerialStorage*                         storage)
 {
-       VkCopyAccelerationStructureToMemoryInfoKHR copyAccelerationStructureInfo =
+       Move<VkDeferredOperationKHR>                                            deferredOperation                               = (m_deferredOperation ? createDeferredOperationKHR(vk, device) : Move<VkDeferredOperationKHR>());
+       VkDeferredOperationInfoKHR                                                      deferredOperationInfoKHR                =
+       {
+               VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR,  //  VkStructureType                     sType;
+               DE_NULL,                                                                                //  const void*                         pNext;
+               *deferredOperation                                                              //  VkDeferredOperationKHR      operationHandle;
+       };
+       const VkDeferredOperationInfoKHR*                                       deferredOperationInfoPtr                = m_deferredOperation ? &deferredOperationInfoKHR : DE_NULL;
+       const VkCopyAccelerationStructureToMemoryInfoKHR        copyAccelerationStructureInfo   =
        {
                VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,       // VkStructureType                                              sType;
-               DE_NULL,                                                                                                                        // const void*                                                  pNext;
+               deferredOperationInfoPtr,                                                                                       // const void*                                                  pNext;
                *(getPtr()),                                                                                                            // VkAccelerationStructureKHR                   src;
                storage->getAddress(vk,device),                                                                         // VkDeviceOrHostAddressKHR                             dst;
                VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR                                       // VkCopyAccelerationStructureModeKHR   mode;
@@ -988,9 +1062,19 @@ void BottomLevelAccelerationStructureKHR::serialize (const DeviceInterface&               vk,
        }
        else
        {
-               VK_CHECK(vk.copyAccelerationStructureToMemoryKHR(device, &copyAccelerationStructureInfo));
+               const VkResult result = vk.copyAccelerationStructureToMemoryKHR(device, &copyAccelerationStructureInfo);
+
+               if (!m_deferredOperation)
+               {
+                       VK_CHECK(result);
+               }
+               else
+               {
+                       DE_ASSERT(result == VK_OPERATION_DEFERRED_KHR || result == VK_OPERATION_NOT_DEFERRED_KHR || result == VK_SUCCESS);
+
+                       finishDeferredOperation(vk, device, *deferredOperation, m_workerThreadCount);
+               }
        }
-       // There is no deferred operation for vkCopyAccelerationStructureToMemoryKHR
 }
 
 void BottomLevelAccelerationStructureKHR::deserialize (const DeviceInterface&  vk,
@@ -998,10 +1082,18 @@ void BottomLevelAccelerationStructureKHR::deserialize (const DeviceInterface&    vk
                                                                                                           const VkCommandBuffer        cmdBuffer,
                                                                                                           SerialStorage*                       storage)
 {
-       VkCopyMemoryToAccelerationStructureInfoKHR copyAccelerationStructureInfo =
+       const Move<VkDeferredOperationKHR>                                      deferredOperation                               = (m_deferredOperation ? createDeferredOperationKHR(vk, device) : Move<VkDeferredOperationKHR>());
+       const VkDeferredOperationInfoKHR                                        deferredOperationInfoKHR                =
+       {
+               VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR,  //  VkStructureType                     sType;
+               DE_NULL,                                                                                //  const void*                         pNext;
+               *deferredOperation                                                              //  VkDeferredOperationKHR      operationHandle;
+       };
+       const VkDeferredOperationInfoKHR*                                       deferredOperationInfoPtr                = m_deferredOperation ? &deferredOperationInfoKHR : DE_NULL;
+       const VkCopyMemoryToAccelerationStructureInfoKHR        copyAccelerationStructureInfo   =
        {
                VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,       // VkStructureType                                                      sType;
-               DE_NULL,                                                                                                                        // const void*                                                          pNext;
+               deferredOperationInfoPtr,                                                                                       // const void*                                                          pNext;
                storage->getAddressConst(vk,device),                                                            // VkDeviceOrHostAddressConstKHR                        src;
                *(getPtr()),                                                                                                            // VkAccelerationStructureKHR                           dst;
                VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR                                     // VkCopyAccelerationStructureModeKHR           mode;
@@ -1013,7 +1105,18 @@ void BottomLevelAccelerationStructureKHR::deserialize (const DeviceInterface&    vk
        }
        else
        {
-               VK_CHECK(vk.copyMemoryToAccelerationStructureKHR(device, &copyAccelerationStructureInfo));
+               const VkResult result = vk.copyMemoryToAccelerationStructureKHR(device, &copyAccelerationStructureInfo);
+
+               if (!m_deferredOperation)
+               {
+                       VK_CHECK(result);
+               }
+               else
+               {
+                       DE_ASSERT(result == VK_OPERATION_DEFERRED_KHR || result == VK_OPERATION_NOT_DEFERRED_KHR || result == VK_SUCCESS);
+
+                       finishDeferredOperation(vk, device, *deferredOperation, m_workerThreadCount);
+               }
        }
 
        if (m_buildType == VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)
@@ -1213,7 +1316,8 @@ public:
 
        void                                                                                                    setBuildType                                                                            (const VkAccelerationStructureBuildTypeKHR      buildType) override;
        void                                                                                                    setBuildFlags                                                                           (const VkBuildAccelerationStructureFlagsKHR     flags) override;
-       void                                                                                                    setDeferredOperation                                                            (const bool                                                                     deferredOperation) override;
+       void                                                                                                    setDeferredOperation                                                            (const bool                                                                     deferredOperation,
+                                                                                                                                                                                                                                const deUint32                                                         workerThreadCount) override;
        void                                                                                                    setUseArrayOfPointers                                                           (const bool                                                                     useArrayOfPointers) override;
        void                                                                                                    setIndirectBuildParameters                                                      (const VkBuffer                                                         indirectBuffer,
                                                                                                                                                                                                                                 const VkDeviceSize                                                     indirectBufferOffset,
@@ -1249,6 +1353,7 @@ protected:
        VkAccelerationStructureBuildTypeKHR                                             m_buildType;
        VkBuildAccelerationStructureFlagsKHR                                    m_buildFlags;
        bool                                                                                                    m_deferredOperation;
+       deUint32                                                                                                m_workerThreadCount;
        bool                                                                                                    m_useArrayOfPointers;
        de::MovePtr<BufferWithMemory>                                                   m_instanceBuffer;
        de::MovePtr<BufferWithMemory>                                                   m_instanceAddressBuffer;
@@ -1275,6 +1380,7 @@ TopLevelAccelerationStructureKHR::TopLevelAccelerationStructureKHR ()
        , m_buildType                                   (VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)
        , m_buildFlags                                  (0u)
        , m_deferredOperation                   (false)
+       , m_workerThreadCount                   (0)
        , m_useArrayOfPointers                  (false)
        , m_instanceBuffer                              ()
        , m_instanceAddressBuffer               ()
@@ -1301,9 +1407,11 @@ void TopLevelAccelerationStructureKHR::setBuildFlags (const VkBuildAccelerationS
        m_buildFlags = flags;
 }
 
-void TopLevelAccelerationStructureKHR::setDeferredOperation (const bool        deferredOperation)
+void TopLevelAccelerationStructureKHR::setDeferredOperation (const bool                deferredOperation,
+                                                                                                                        const deUint32 workerThreadCount)
 {
        m_deferredOperation = deferredOperation;
+       m_workerThreadCount = workerThreadCount;
 }
 
 void TopLevelAccelerationStructureKHR::setUseArrayOfPointers (const bool       useArrayOfPointers)
@@ -1531,7 +1639,7 @@ void TopLevelAccelerationStructureKHR::build (const DeviceInterface&      vk,
                DE_ASSERT(result == VK_OPERATION_DEFERRED_KHR || result == VK_OPERATION_NOT_DEFERRED_KHR || result == VK_SUCCESS);
                DE_UNREF(result);
 
-               VK_CHECK(finishDeferredOperation(vk, device, deferredOperation));
+               finishDeferredOperation(vk, device, deferredOperation, m_workerThreadCount);
 
                accelerationStructureBuildGeometryInfoKHR.pNext = DE_NULL;
        }
@@ -1588,7 +1696,7 @@ void TopLevelAccelerationStructureKHR::copyFrom (const DeviceInterface&                           vk,
                DE_ASSERT(result == VK_OPERATION_DEFERRED_KHR || result == VK_OPERATION_NOT_DEFERRED_KHR || result == VK_SUCCESS);
                DE_UNREF(result);
 
-               VK_CHECK(finishDeferredOperation(vk, device, deferredOperation));
+               finishDeferredOperation(vk, device, deferredOperation, m_workerThreadCount);
        }
 
        if (m_buildType == VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)
@@ -1606,10 +1714,18 @@ void TopLevelAccelerationStructureKHR::serialize (const DeviceInterface&        vk,
                                                                                                  const VkCommandBuffer         cmdBuffer,
                                                                                                  SerialStorage*                        storage)
 {
-       VkCopyAccelerationStructureToMemoryInfoKHR copyAccelerationStructureInfo =
+       Move<VkDeferredOperationKHR>                                            deferredOperation                               = (m_deferredOperation ? createDeferredOperationKHR(vk, device) : Move<VkDeferredOperationKHR>());
+       VkDeferredOperationInfoKHR                                                      deferredOperationInfoKHR                =
+       {
+               VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR,  //  VkStructureType                     sType;
+               DE_NULL,                                                                                //  const void*                         pNext;
+               *deferredOperation                                                              //  VkDeferredOperationKHR      operationHandle;
+       };
+       const VkDeferredOperationInfoKHR*                                       deferredOperationInfoPtr                = m_deferredOperation ? &deferredOperationInfoKHR : DE_NULL;
+       const VkCopyAccelerationStructureToMemoryInfoKHR        copyAccelerationStructureInfo   =
        {
                VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,       // VkStructureType                                              sType;
-               DE_NULL,                                                                                                                        // const void*                                                  pNext;
+               deferredOperationInfoPtr,                                                                                       // const void*                                                  pNext;
                *(getPtr()),                                                                                                            // VkAccelerationStructureKHR                   src;
                storage->getAddress(vk,device),                                                                         // VkDeviceOrHostAddressKHR                             dst;
                VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR                                       // VkCopyAccelerationStructureModeKHR   mode;
@@ -1621,9 +1737,19 @@ void TopLevelAccelerationStructureKHR::serialize (const DeviceInterface& vk,
        }
        else
        {
-               VK_CHECK(vk.copyAccelerationStructureToMemoryKHR(device, &copyAccelerationStructureInfo));
+               const VkResult result = vk.copyAccelerationStructureToMemoryKHR(device, &copyAccelerationStructureInfo);
+
+               if (!m_deferredOperation)
+               {
+                       VK_CHECK(result);
+               }
+               else
+               {
+                       DE_ASSERT(result == VK_OPERATION_DEFERRED_KHR || result == VK_OPERATION_NOT_DEFERRED_KHR || result == VK_SUCCESS);
+
+                       finishDeferredOperation(vk, device, *deferredOperation, m_workerThreadCount);
+               }
        }
-       // There is no deferred operation for vkCopyAccelerationStructureToMemoryKHR
 }
 
 void TopLevelAccelerationStructureKHR::deserialize (const DeviceInterface&     vk,
@@ -1631,10 +1757,18 @@ void TopLevelAccelerationStructureKHR::deserialize (const DeviceInterface&      vk,
                                                                                                        const VkCommandBuffer   cmdBuffer,
                                                                                                        SerialStorage*                  storage)
 {
-       VkCopyMemoryToAccelerationStructureInfoKHR copyAccelerationStructureInfo =
+       const Move<VkDeferredOperationKHR>                                      deferredOperation                               = (m_deferredOperation ? createDeferredOperationKHR(vk, device) : Move<VkDeferredOperationKHR>());
+       const VkDeferredOperationInfoKHR                                        deferredOperationInfoKHR                =
+       {
+               VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR,  //  VkStructureType                     sType;
+               DE_NULL,                                                                                //  const void*                         pNext;
+               *deferredOperation                                                              //  VkDeferredOperationKHR      operationHandle;
+       };
+       const VkDeferredOperationInfoKHR*                                       deferredOperationInfoPtr                = m_deferredOperation ? &deferredOperationInfoKHR : DE_NULL;
+       const VkCopyMemoryToAccelerationStructureInfoKHR        copyAccelerationStructureInfo   =
        {
                VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,       // VkStructureType                                                      sType;
-               DE_NULL,                                                                                                                        // const void*                                                          pNext;
+               deferredOperationInfoPtr,                                                                                       // const void*                                                          pNext;
                storage->getAddressConst(vk,device),                                                            // VkDeviceOrHostAddressConstKHR                        src;
                *(getPtr()),                                                                                                            // VkAccelerationStructureKHR                           dst;
                VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR                                     // VkCopyAccelerationStructureModeKHR           mode;
@@ -1646,7 +1780,18 @@ void TopLevelAccelerationStructureKHR::deserialize (const DeviceInterface&       vk,
        }
        else
        {
-               VK_CHECK(vk.copyMemoryToAccelerationStructureKHR(device, &copyAccelerationStructureInfo));
+               const VkResult result = vk.copyMemoryToAccelerationStructureKHR(device, &copyAccelerationStructureInfo);
+
+               if (!m_deferredOperation)
+               {
+                       VK_CHECK(result);
+               }
+               else
+               {
+                       DE_ASSERT(result == VK_OPERATION_DEFERRED_KHR || result == VK_OPERATION_NOT_DEFERRED_KHR || result == VK_SUCCESS);
+
+                       finishDeferredOperation(vk, device, *deferredOperation, m_workerThreadCount);
+               }
        }
 
        if (m_buildType == VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)
@@ -1725,6 +1870,7 @@ RayTracingPipeline::RayTracingPipeline ()
        , m_maxAttributeSize            (0U)
        , m_maxCallableSize                     (0U)
        , m_deferredOperation           (false)
+       , m_workerThreadCount           (0)
 {
 }
 
@@ -1888,7 +2034,7 @@ Move<VkPipeline> RayTracingPipeline::createPipelineKHR (const DeviceInterface&
                DE_ASSERT(result == VK_OPERATION_DEFERRED_KHR || result == VK_OPERATION_NOT_DEFERRED_KHR || result == VK_SUCCESS);
                DE_UNREF(result);
 
-               VK_CHECK(finishDeferredOperation(vk, device, *deferredOperation));
+               finishDeferredOperation(vk, device, *deferredOperation, m_workerThreadCount);
        }
 
        return pipeline;
@@ -2004,9 +2150,11 @@ void RayTracingPipeline::setMaxCallableSize (const deUint32& maxCallableSize)
        m_maxCallableSize = maxCallableSize;
 }
 
-void RayTracingPipeline::setDeferredOperation (const bool deferredOperation)
+void RayTracingPipeline::setDeferredOperation (const bool              deferredOperation,
+                                                                                          const deUint32       workerThreadCount)
 {
        m_deferredOperation = deferredOperation;
+       m_workerThreadCount = workerThreadCount;
 }
 
 class RayTracingPropertiesKHR : public RayTracingProperties
index 8446d74..918571b 100644 (file)
@@ -329,7 +329,8 @@ public:
 
        virtual void                                                                            setBuildType                                                    (const VkAccelerationStructureBuildTypeKHR      buildType) = DE_NULL;
        virtual void                                                                            setBuildFlags                                                   (const VkBuildAccelerationStructureFlagsKHR     flags) = DE_NULL;
-       virtual void                                                                            setDeferredOperation                                    (const bool                                                                     deferredOperation) = DE_NULL;
+       virtual void                                                                            setDeferredOperation                                    (const bool                                                                     deferredOperation,
+                                                                                                                                                                                                const deUint32                                                         workerThreadCount = 0) = DE_NULL;
        virtual void                                                                            setUseArrayOfPointers                                   (const bool                                                                     useArrayOfPointers) = DE_NULL;
        virtual void                                                                            setIndirectBuildParameters                              (const VkBuffer                                                         indirectBuffer,
                                                                                                                                                                                                 const VkDeviceSize                                                     indirectBufferOffset,
@@ -423,7 +424,8 @@ public:
 
        virtual void                                                                                                    setBuildType                                            (const VkAccelerationStructureBuildTypeKHR                      buildType) = DE_NULL;
        virtual void                                                                                                    setBuildFlags                                           (const VkBuildAccelerationStructureFlagsKHR                     flags) = DE_NULL;
-       virtual void                                                                                                    setDeferredOperation                            (const bool                                                                                     deferredOperation) = DE_NULL;
+       virtual void                                                                                                    setDeferredOperation                            (const bool                                                                                     deferredOperation,
+                                                                                                                                                                                                                const deUint32                                                                         workerThreadCount = 0) = DE_NULL;
        virtual void                                                                                                    setUseArrayOfPointers                           (const bool                                                                                     useArrayOfPointers) = DE_NULL;
        virtual void                                                                                                    setIndirectBuildParameters                      (const VkBuffer                                                                         indirectBuffer,
                                                                                                                                                                                                                 const VkDeviceSize                                                                     indirectBufferOffset,
@@ -529,7 +531,8 @@ public:
        void                                                                                                            setMaxPayloadSize                       (const deUint32&                                                                                maxPayloadSize);
        void                                                                                                            setMaxAttributeSize                     (const deUint32&                                                                                maxAttributeSize);
        void                                                                                                            setMaxCallableSize                      (const deUint32&                                                                                maxCallableSize);
-       void                                                                                                            setDeferredOperation            (const bool                                                                                             deferredOperation);
+       void                                                                                                            setDeferredOperation            (const bool                                                                                             deferredOperation,
+                                                                                                                                                                                        const deUint32                                                                                 workerThreadCount = 0);
 
 protected:
        Move<VkPipeline>                                                                                        createPipelineKHR                       (const DeviceInterface&                                                                 vk,
@@ -547,6 +550,7 @@ protected:
        deUint32                                                                                                        m_maxAttributeSize;
        deUint32                                                                                                        m_maxCallableSize;
        bool                                                                                                            m_deferredOperation;
+       deUint32                                                                                                        m_workerThreadCount;
 };
 
 class RayTracingProperties
index 77feb67..e87c715 100644 (file)
@@ -24,6 +24,7 @@
 #include "vktRayTracingAccelerationStructuresTests.hpp"
 
 #include "vkDefs.hpp"
+#include "deClock.h"
 
 #include "vktTestCase.hpp"
 #include "vktTestGroupUtil.hpp"
@@ -132,6 +133,7 @@ struct TestParams
        deUint32                                                                width;
        deUint32                                                                height;
        de::SharedPtr<TestConfiguration>                testConfiguration;
+       deUint32                                                                workerThreadsCount;
 };
 
 deUint32 getShaderGroupSize (const InstanceInterface&  vki,
@@ -653,7 +655,9 @@ public:
        tcu::TestStatus                                                                                                 iterate                                                         (void) override;
 
 protected:
-       de::MovePtr<BufferWithMemory>                                                                   runTest                                                         ();
+       bool                                                                                                                    iterateNoWorkers                                        (void);
+       bool                                                                                                                    iterateWithWorkers                                      (void);
+       de::MovePtr<BufferWithMemory>                                                                   runTest                                                         (const deUint32 workerThreadsCount);
 private:
        TestParams                                                                                                              m_data;
 };
@@ -819,7 +823,7 @@ RayTracingASBasicTestInstance::~RayTracingASBasicTestInstance (void)
 {
 }
 
-de::MovePtr<BufferWithMemory> RayTracingASBasicTestInstance::runTest()
+de::MovePtr<BufferWithMemory> RayTracingASBasicTestInstance::runTest(const deUint32 workerThreadsCount)
 {
        const InstanceInterface&                        vki                                                                     = m_context.getInstanceInterface();
        const DeviceInterface&                          vkd                                                                     = m_context.getDeviceInterface();
@@ -831,6 +835,8 @@ de::MovePtr<BufferWithMemory> RayTracingASBasicTestInstance::runTest()
        const deUint32                                          pixelCount                                                      = m_data.width * m_data.height;
        const deUint32                                          shaderGroupHandleSize                           = getShaderGroupSize(vki, physicalDevice);
        const deUint32                                          shaderGroupBaseAlignment                        = getShaderGroupBaseAlignment(vki, physicalDevice);
+       const bool                                                      htCopy                                                          = (workerThreadsCount != 0) && (m_data.operationType == OP_COPY);
+       const bool                                                      htSerialize                                                     = (workerThreadsCount != 0) && (m_data.operationType == OP_SERIALIZE);
 
        const Move<VkDescriptorSetLayout>       descriptorSetLayout                                     = DescriptorSetLayoutBuilder()
                                                                                                                                                                        .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, ALL_RAY_TRACING_STAGES)
@@ -961,6 +967,7 @@ de::MovePtr<BufferWithMemory> RayTracingASBasicTestInstance::runTest()
                                bottomLevelAccelerationStructureCopies = m_data.testConfiguration->initBottomAccelerationStructures(m_context, m_data);
                                for (size_t i = 0; i < bottomLevelAccelerationStructures.size(); ++i)
                                {
+                                       bottomLevelAccelerationStructureCopies[i]->setDeferredOperation(htCopy, workerThreadsCount);
                                        bottomLevelAccelerationStructureCopies[i]->setBuildType(m_data.buildType);
                                        bottomLevelAccelerationStructureCopies[i]->setBuildFlags(m_data.buildFlags);
                                        bottomLevelAccelerationStructureCopies[i]->setUseArrayOfPointers(m_data.bottomUsesAOP);
@@ -987,6 +994,8 @@ de::MovePtr<BufferWithMemory> RayTracingASBasicTestInstance::runTest()
                                for (size_t i = 0; i < bottomLevelAccelerationStructures.size(); ++i)
                                {
                                        de::SharedPtr<SerialStorage> storage ( new SerialStorage(vkd, device, allocator, m_data.buildType, bottomBlasSerialSize[i]));
+
+                                       bottomLevelAccelerationStructures[i]->setDeferredOperation(htSerialize, workerThreadsCount);
                                        bottomLevelAccelerationStructures[i]->serialize(vkd, device, *cmdBuffer, storage.get());
                                        bottomSerialized.push_back(storage);
 
@@ -999,6 +1008,7 @@ de::MovePtr<BufferWithMemory> RayTracingASBasicTestInstance::runTest()
                                        bottomLevelAccelerationStructureCopies[i]->setBuildType(m_data.buildType);
                                        bottomLevelAccelerationStructureCopies[i]->setBuildFlags(m_data.buildFlags);
                                        bottomLevelAccelerationStructureCopies[i]->setUseArrayOfPointers(m_data.bottomUsesAOP);
+                                       bottomLevelAccelerationStructureCopies[i]->setDeferredOperation(htSerialize, workerThreadsCount);
                                        bottomLevelAccelerationStructureCopies[i]->createAndDeserializeFrom(vkd, device, *cmdBuffer, allocator, 0u, storage.get());
                                }
                                break;
@@ -1054,6 +1064,7 @@ de::MovePtr<BufferWithMemory> RayTracingASBasicTestInstance::runTest()
                                case OP_COPY:
                                {
                                        topLevelAccelerationStructureCopy = m_data.testConfiguration->initTopAccelerationStructure(m_context, m_data, *bottomLevelAccelerationStructuresPtr);
+                                       topLevelAccelerationStructureCopy->setDeferredOperation(htCopy, workerThreadsCount);
                                        topLevelAccelerationStructureCopy->setBuildType(m_data.buildType);
                                        topLevelAccelerationStructureCopy->setBuildFlags(m_data.buildFlags);
                                        topLevelAccelerationStructureCopy->setUseArrayOfPointers(m_data.topUsesAOP);
@@ -1074,6 +1085,8 @@ de::MovePtr<BufferWithMemory> RayTracingASBasicTestInstance::runTest()
                                        topLevelAccelerationStructureCopy = m_data.testConfiguration->initTopAccelerationStructure(m_context, m_data, *bottomLevelAccelerationStructuresPtr);
 
                                        de::SharedPtr<SerialStorage> storage( new SerialStorage(vkd, device, allocator, m_data.buildType, topBlasSerialSize[0]));
+
+                                       topLevelAccelerationStructure->setDeferredOperation(htSerialize, workerThreadsCount);
                                        topLevelAccelerationStructure->serialize(vkd, device, *cmdBuffer, storage.get());
                                        topSerialized.push_back(storage);
 
@@ -1086,6 +1099,7 @@ de::MovePtr<BufferWithMemory> RayTracingASBasicTestInstance::runTest()
                                        topLevelAccelerationStructureCopy->setBuildType(m_data.buildType);
                                        topLevelAccelerationStructureCopy->setBuildFlags(m_data.buildFlags);
                                        topLevelAccelerationStructureCopy->setUseArrayOfPointers(m_data.topUsesAOP);
+                                       topLevelAccelerationStructureCopy->setDeferredOperation(htSerialize, workerThreadsCount);
                                        topLevelAccelerationStructureCopy->createAndDeserializeFrom(vkd, device, *cmdBuffer, allocator, 0u, storage.get());
                                        break;
                                }
@@ -1137,14 +1151,53 @@ de::MovePtr<BufferWithMemory> RayTracingASBasicTestInstance::runTest()
        return resultBuffer;
 }
 
-tcu::TestStatus RayTracingASBasicTestInstance::iterate (void)
+bool RayTracingASBasicTestInstance::iterateNoWorkers (void)
 {
        // run test using arrays of pointers
-       const de::MovePtr<BufferWithMemory>     buffer          = runTest();
+       const de::MovePtr<BufferWithMemory>     buffer          = runTest(0);
+
+       return m_data.testConfiguration->verifyImage(buffer.get(), m_context, m_data);
+}
+
+bool RayTracingASBasicTestInstance::iterateWithWorkers (void)
+{
+       const deUint64                                  singleThreadTimeStart   = deGetMicroseconds();
+       de::MovePtr<BufferWithMemory>   singleThreadBufferCPU   = runTest(0);
+       const bool                                              singleThreadValidation  = m_data.testConfiguration->verifyImage(singleThreadBufferCPU.get(), m_context, m_data);
+       const deUint64                                  singleThreadTime                = deGetMicroseconds() - singleThreadTimeStart;
+
+       deUint64                                                multiThreadTimeStart    = deGetMicroseconds();
+       de::MovePtr<BufferWithMemory>   multiThreadBufferCPU    = runTest(m_data.workerThreadsCount);
+       const bool                                              multiThreadValidation   = m_data.testConfiguration->verifyImage(multiThreadBufferCPU.get(), m_context, m_data);
+       deUint64                                                multiThreadTime                 = deGetMicroseconds() - multiThreadTimeStart;
+       const deUint64                                  multiThreadTimeOut              = 10 * singleThreadTime;
+
+       const deUint32                                  result                                  = singleThreadValidation && multiThreadValidation;
+
+       if (multiThreadTime > multiThreadTimeOut)
+       {
+               std::string failMsg     = "Time of multithreaded test execution " + de::toString(multiThreadTime) +
+                                                         " that is longer than expected execution time " + de::toString(multiThreadTimeOut);
+
+               TCU_FAIL(failMsg);
+       }
+
+       return result;
+}
+
+tcu::TestStatus RayTracingASBasicTestInstance::iterate (void)
+{
+       bool result;
+
+       if (m_data.workerThreadsCount != 0)
+               result = iterateWithWorkers();
+       else
+               result = iterateNoWorkers();
 
-       if (!m_data.testConfiguration->verifyImage(buffer.get(), m_context, m_data))
+       if (result)
+               return tcu::TestStatus::pass("Pass");
+       else
                return tcu::TestStatus::fail("Fail");
-       return tcu::TestStatus::pass("Pass");
 }
 
 }      // anonymous
@@ -1382,7 +1435,8 @@ void addBasicBuildingTests(tcu::TestCaseGroup* group)
                                                                        OP_NONE,
                                                                        RTAS_DEFAULT_SIZE,
                                                                        RTAS_DEFAULT_SIZE,
-                                                                       de::SharedPtr<TestConfiguration>(new CheckerboardConfiguration())
+                                                                       de::SharedPtr<TestConfiguration>(new CheckerboardConfiguration()),
+                                                                       0
                                                                };
                                                                topGroup->addChild(new RayTracingASBasicTestCase(group->getTestContext(), testName.c_str(), "", testParams));
                                                        }
@@ -1445,7 +1499,8 @@ void addVertexIndexFormatsTests(tcu::TestCaseGroup* group)
                                OP_NONE,
                                RTAS_DEFAULT_SIZE,
                                RTAS_DEFAULT_SIZE,
-                               de::SharedPtr<TestConfiguration>(new SingleTriangleConfiguration())
+                               de::SharedPtr<TestConfiguration>(new SingleTriangleConfiguration()),
+                               0
                        };
                        vertexFormatGroup->addChild(new RayTracingASBasicTestCase(group->getTestContext(), indexFormats[indexFormatNdx].name, "", testParams));
                }
@@ -1453,7 +1508,7 @@ void addVertexIndexFormatsTests(tcu::TestCaseGroup* group)
        }
 }
 
-void addOperationTests(tcu::TestCaseGroup* group)
+void addOperationTestsImpl (tcu::TestCaseGroup* group, const deUint32 workerThreads)
 {
        struct
        {
@@ -1498,10 +1553,17 @@ void addOperationTests(tcu::TestCaseGroup* group)
 
        for (size_t operationTypeNdx = 0; operationTypeNdx < DE_LENGTH_OF_ARRAY(operationTypes); ++operationTypeNdx)
        {
+               if (workerThreads > 0)
+                       if (operationTypes[operationTypeNdx].operationType != OP_COPY && operationTypes[operationTypeNdx].operationType != OP_SERIALIZE)
+                               continue;
+
                de::MovePtr<tcu::TestCaseGroup> operationTypeGroup(new tcu::TestCaseGroup(group->getTestContext(), operationTypes[operationTypeNdx].name, ""));
 
                for (size_t buildTypeNdx = 0; buildTypeNdx < DE_LENGTH_OF_ARRAY(buildTypes); ++buildTypeNdx)
                {
+                       if (workerThreads > 0 && buildTypes[buildTypeNdx].buildType != VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR)
+                               continue;
+
                        de::MovePtr<tcu::TestCaseGroup> buildGroup(new tcu::TestCaseGroup(group->getTestContext(), buildTypes[buildTypeNdx].name, ""));
 
                        for (size_t operationTargetNdx = 0; operationTargetNdx < DE_LENGTH_OF_ARRAY(operationTargets); ++operationTargetNdx)
@@ -1526,7 +1588,8 @@ void addOperationTests(tcu::TestCaseGroup* group)
                                                operationTypes[operationTypeNdx].operationType,
                                                RTAS_DEFAULT_SIZE,
                                                RTAS_DEFAULT_SIZE,
-                                               de::SharedPtr<TestConfiguration>(new CheckerboardConfiguration())
+                                               de::SharedPtr<TestConfiguration>(new CheckerboardConfiguration()),
+                                               workerThreads
                                        };
                                        operationTargetGroup->addChild(new RayTracingASBasicTestCase(group->getTestContext(), bottomTestTypes[testTypeNdx].name, "", testParams));
                                }
@@ -1544,6 +1607,28 @@ void addRequirementsTests(tcu::TestCaseGroup* group)
        group->addChild(new RayTracingASMemoryRequirementsTestCase(group->getTestContext(), "memory_update_scratch", "", MemoryRequirementsTestParams{ VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR }));
 }
 
+void addOperationTests (tcu::TestCaseGroup* group)
+{
+       addOperationTestsImpl(group, 0);
+}
+
+void addHostThreadingOperationTests (tcu::TestCaseGroup* group)
+{
+       const deUint32  threads[]       = { 1, 2, 3, 4, 8, std::numeric_limits<deUint32>::max() };
+
+       for (size_t threadsNdx = 0; threadsNdx < DE_LENGTH_OF_ARRAY(threads); ++threadsNdx)
+       {
+               const std::string groupName = threads[threadsNdx] != std::numeric_limits<deUint32>::max()
+                                                                       ? de::toString(threads[threadsNdx])
+                                                                       : "max";
+
+               de::MovePtr<tcu::TestCaseGroup> threadGroup(new tcu::TestCaseGroup(group->getTestContext(), groupName.c_str(), ""));
+
+               addOperationTestsImpl(threadGroup.get(), threads[threadsNdx]);
+
+               group->addChild(threadGroup.release());
+       }
+}
 
 tcu::TestCaseGroup*    createAccelerationStructuresTests(tcu::TestContext& testCtx)
 {
@@ -1553,6 +1638,7 @@ tcu::TestCaseGroup*       createAccelerationStructuresTests(tcu::TestContext& testCtx)
        addTestGroup(group.get(), "format", "Test building AS with different vertex and index formats", addVertexIndexFormatsTests);
        addTestGroup(group.get(), "operations", "Test copying, compaction and serialization of AS", addOperationTests);
        addTestGroup(group.get(), "requirements", "Test other requirements", addRequirementsTests);
+       addTestGroup(group.get(), "host_threading", "Test host threading operations", addHostThreadingOperationTests);
 
        return group.release();
 }
index 5a34efd..6f300ac 100644 (file)
 
 #include "vkRayTracingUtil.hpp"
 
+#include "deClock.h"
+
+#include <limits>
+
 namespace vkt
 {
 namespace RayTracing
@@ -61,6 +65,7 @@ struct CaseDef
        deUint32                                                        instancesGroupCount;
        bool                                                            deferredOperation;
        VkAccelerationStructureBuildTypeKHR     buildType;
+       deUint32                                                        workerThreadsCount;
 };
 
 deUint32 getShaderGroupSize (const InstanceInterface&  vki,
@@ -89,11 +94,12 @@ Move<VkPipeline> makePipeline (const DeviceInterface&                       vkd,
                                                           de::MovePtr<RayTracingPipeline>&     rayTracingPipeline,
                                                           VkPipelineLayout                                     pipelineLayout,
                                                           const deUint32                                       groupCount,
-                                                          const bool                                           deferredOperation)
+                                                          const bool                                           deferredOperation,
+                                                          const deUint32                                       threadCount)
 {
        Move<VkShaderModule>    raygenShader    = createShaderModule(vkd, device, collection.get("rgen"), 0);
 
-       rayTracingPipeline->setDeferredOperation(deferredOperation);
+       rayTracingPipeline->setDeferredOperation(deferredOperation, threadCount);
        rayTracingPipeline->addShader(VK_SHADER_STAGE_RAYGEN_BIT_KHR, raygenShader, 0);
 
        for (deUint32 groupNdx = 0; groupNdx < groupCount; ++groupNdx)
@@ -142,8 +148,11 @@ public:
        tcu::TestStatus                                                                                         iterate                                                         (void);
 
 protected:
+       deUint32                                                                                                        iterateNoWorkers                                        (void);
+       deUint32                                                                                                        iterateWithWorkers                                      (void);
        void                                                                                                            checkSupportInInstance                          (void) const;
-       de::MovePtr<BufferWithMemory>                                                           runTest                                                         (void);
+       de::MovePtr<BufferWithMemory>                                                           runTest                                                         (const deUint32                                                                         threadCount);
+       deUint32                                                                                                        validateBuffer                                          (de::MovePtr<BufferWithMemory>                                          buffer);
        de::SharedPtr<TopLevelAccelerationStructure>                            initTopAccelerationStructure            (VkCommandBuffer                                                                        cmdBuffer,
                                                                                                                                                                                                         de::SharedPtr<BottomLevelAccelerationStructure>&       bottomLevelAccelerationStructure);
        de::SharedPtr<BottomLevelAccelerationStructure>                         initBottomAccelerationStructure         (VkCommandBuffer        cmdBuffer);
@@ -333,7 +342,7 @@ de::SharedPtr<BottomLevelAccelerationStructure> RayTracingBuildLargeTestInstance
        return de::SharedPtr<BottomLevelAccelerationStructure>(result.release());
 }
 
-de::MovePtr<BufferWithMemory> RayTracingBuildLargeTestInstance::runTest (void)
+de::MovePtr<BufferWithMemory> RayTracingBuildLargeTestInstance::runTest (const deUint32        threadCount)
 {
        const InstanceInterface&                        vki                                                                     = m_context.getInstanceInterface();
        const DeviceInterface&                          vkd                                                                     = m_context.getDeviceInterface();
@@ -362,7 +371,7 @@ de::MovePtr<BufferWithMemory> RayTracingBuildLargeTestInstance::runTest (void)
        const Move<VkCommandBuffer>                     cmdBuffer                                                       = allocateCommandBuffer(vkd, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
 
        de::MovePtr<RayTracingPipeline>         rayTracingPipeline                                      = de::newMovePtr<RayTracingPipeline>();
-       const Move<VkPipeline>                          pipeline                                                        = makePipeline(vkd, device, m_context.getBinaryCollection(), rayTracingPipeline, *pipelineLayout, callableShaderCount, m_data.deferredOperation);
+       const Move<VkPipeline>                          pipeline                                                        = makePipeline(vkd, device, m_context.getBinaryCollection(), rayTracingPipeline, *pipelineLayout, callableShaderCount, m_data.deferredOperation, threadCount);
        const de::MovePtr<BufferWithMemory>     raygenShaderBindingTable                        = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1u);
        const de::MovePtr<BufferWithMemory>     callableShaderBindingTable                      = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 1u, callableShaderCount);
        const VkStridedBufferRegionKHR          raygenShaderBindingTableRegion          = makeStridedBufferRegionKHR(raygenShaderBindingTable->get(), 0, shaderGroupHandleSize, shaderGroupHandleSize);
@@ -471,26 +480,70 @@ void RayTracingBuildLargeTestInstance::checkSupportInInstance (void) const
                TCU_THROW(NotSupportedError, "Test requires more allocations allowed");
 }
 
-tcu::TestStatus RayTracingBuildLargeTestInstance::iterate (void)
+deUint32 RayTracingBuildLargeTestInstance::validateBuffer (de::MovePtr<BufferWithMemory> buffer)
 {
-       checkSupportInInstance();
-
-       const de::MovePtr<BufferWithMemory>     bufferCPU               = runTest();
-       const deUint32*                                         bufferPtrCPU    = (deUint32*)bufferCPU->getAllocation().getHostPtr();
-       deUint32                                                        failures                = 0;
-       deUint32                                                        pos                             = 0;
+       const deUint32* bufferPtr       = (deUint32*)buffer->getAllocation().getHostPtr();
+       deUint32                failures        = 0;
+       deUint32                pos                     = 0;
 
        for (deUint32 y = 0; y < m_data.height; ++y)
        for (deUint32 x = 0; x < m_data.width; ++x)
        {
                const deUint32  expectedValue   = (m_data.width * (y / 3) + x) % 199;
 
-               if (bufferPtrCPU[pos] != expectedValue)
+               if (bufferPtr[pos] != expectedValue)
                        failures++;
 
                ++pos;
        }
 
+       return failures;
+}
+
+deUint32 RayTracingBuildLargeTestInstance::iterateNoWorkers (void)
+{
+       de::MovePtr<BufferWithMemory>   buffer          = runTest(0);
+       const deUint32                                  failures        = validateBuffer(buffer);
+
+       return failures;
+}
+
+deUint32 RayTracingBuildLargeTestInstance::iterateWithWorkers (void)
+{
+       const deUint64                                  singleThreadTimeStart   = deGetMicroseconds();
+       de::MovePtr<BufferWithMemory>   singleThreadBuffer              = runTest(0);
+       const deUint32                                  singleThreadFailures    = validateBuffer(singleThreadBuffer);
+       const deUint64                                  singleThreadTime                = deGetMicroseconds() - singleThreadTimeStart;
+
+       deUint64                                                multiThreadTimeStart    = deGetMicroseconds();
+       de::MovePtr<BufferWithMemory>   multiThreadBuffer               = runTest(m_data.workerThreadsCount);
+       const deUint32                                  multiThreadFailures             = validateBuffer(multiThreadBuffer);
+       deUint64                                                multiThreadTime                 = deGetMicroseconds() - multiThreadTimeStart;
+       const deUint64                                  multiThreadTimeOut              = 10 * singleThreadTime;
+
+       const deUint32                                  failures                                = singleThreadFailures + multiThreadFailures;
+
+       DE_ASSERT(multiThreadTimeOut > singleThreadTime);
+
+       if (multiThreadTime > multiThreadTimeOut)
+       {
+               string failMsg  = "Time of multithreaded test execution " + de::toString(multiThreadTime) +
+                                                 " that is longer than expected execution time " + de::toString(multiThreadTimeOut);
+
+               TCU_FAIL(failMsg);
+       }
+
+       return failures;
+}
+
+tcu::TestStatus RayTracingBuildLargeTestInstance::iterate (void)
+{
+       checkSupportInInstance();
+
+       const deUint32  failures        = m_data.workerThreadsCount == 0
+                                                               ? iterateNoWorkers()
+                                                               : iterateWithWorkers();
+
        if (failures == 0)
                return tcu::TestStatus::pass("Pass");
        else
@@ -515,7 +568,7 @@ tcu::TestCaseGroup* createBuildLargeShaderSetTests (tcu::TestContext& testCtx)
                {  "gpu",               false,  VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR },
                {  "cpu_ht",    true,   VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR   },
        };
-
+       const deUint32  threads[]       = { 1, 2, 3, 4, 8, std::numeric_limits<deUint32>::max() };
 
        for (size_t buildNdx = 0; buildNdx < DE_LENGTH_OF_ARRAY(buildTypes); ++buildNdx)
        {
@@ -535,7 +588,8 @@ tcu::TestCaseGroup* createBuildLargeShaderSetTests (tcu::TestContext& testCtx)
                                geometriesGroupCount,                                   //  deUint32                                                    geometriesGroupCount;
                                instancesGroupCount,                                    //  deUint32                                                    instancesGroupCount;
                                buildTypes[buildNdx].deferredOperation, //  bool                                                                deferredOperation;
-                               buildTypes[buildNdx].buildType                  //  VkAccelerationStructureBuildTypeKHR buildType;
+                               buildTypes[buildNdx].buildType,                 //  VkAccelerationStructureBuildTypeKHR buildType;
+                               0,                                                                              //  deUint32                                                    threadsCount;
                        };
                        const std::string       testName                        = de::toString(largestGroup);
 
@@ -545,6 +599,43 @@ tcu::TestCaseGroup*        createBuildLargeShaderSetTests (tcu::TestContext& testCtx)
                group->addChild(buildTypeGroup.release());
        }
 
+       for (size_t threadsNdx = 0; threadsNdx < DE_LENGTH_OF_ARRAY(threads); ++threadsNdx)
+       {
+               for (size_t buildNdx = 0; buildNdx < DE_LENGTH_OF_ARRAY(buildTypes); ++buildNdx)
+               {
+                       if (buildTypes[buildNdx].buildType != VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR)
+                               continue;
+
+                       const std::string                               suffix                          = threads[threadsNdx] == std::numeric_limits<deUint32>::max() ? "max" : de::toString(threads[threadsNdx]);
+                       const std::string                               buildTypeGroupName      = std::string(buildTypes[buildNdx].buildTypeName) + '_' + suffix;
+                       de::MovePtr<tcu::TestCaseGroup> buildTypeGroup            (new tcu::TestCaseGroup(testCtx, buildTypeGroupName.c_str(), ""));
+
+                       for (size_t sizesNdx = 0; sizesNdx < DE_LENGTH_OF_ARRAY(sizes); ++sizesNdx)
+                       {
+                               const deUint32  largestGroup                    = sizes[sizesNdx] * sizes[sizesNdx];
+                               const deUint32  squaresGroupCount               = largestGroup;
+                               const deUint32  geometriesGroupCount    = 1;
+                               const deUint32  instancesGroupCount             = 1;
+                               const CaseDef   caseDef                                 =
+                               {
+                                       sizes[sizesNdx],                                                //  deUint32                                                    width;
+                                       sizes[sizesNdx],                                                //  deUint32                                                    height;
+                                       squaresGroupCount,                                              //  deUint32                                                    squaresGroupCount;
+                                       geometriesGroupCount,                                   //  deUint32                                                    geometriesGroupCount;
+                                       instancesGroupCount,                                    //  deUint32                                                    instancesGroupCount;
+                                       buildTypes[buildNdx].deferredOperation, //  bool                                                                deferredOperation;
+                                       buildTypes[buildNdx].buildType,                 //  VkAccelerationStructureBuildTypeKHR buildType;
+                                       threads[threadsNdx],                                    //  deUint32                                                    workerThreadsCount;
+                               };
+                               const std::string       testName                        = de::toString(largestGroup);
+
+                               buildTypeGroup->addChild(new RayTracingTestCase(testCtx, testName.c_str(), "", caseDef));
+                       }
+
+                       group->addChild(buildTypeGroup.release());
+               }
+       }
+
        return group.release();
 }
 
index 532e331..78ed162 100644 (file)
@@ -36,6 +36,8 @@
 
 #include "vkRayTracingUtil.hpp"
 
+#include "deClock.h"
+
 namespace vkt
 {
 namespace RayTracing
@@ -68,6 +70,7 @@ struct CaseDef
        deUint32        geometriesGroupCount;
        deUint32        instancesGroupCount;
        bool            deferredOperation;
+       deUint32        workerThreadsCount;
 };
 
 enum ShaderGroups
@@ -154,17 +157,24 @@ public:
        tcu::TestStatus                                                                                         iterate                                                         (void);
 
 protected:
+       deUint32                                                                                                        iterateNoWorkers                                        (void);
+       deUint32                                                                                                        iterateWithWorkers                                      (void);
        void                                                                                                            checkSupportInInstance                          (void) const;
-       de::MovePtr<BufferWithMemory>                                                           runTest                                                         (bool useGpuBuild);
+       deUint32                                                                                                        validateBuffer                                          (de::MovePtr<BufferWithMemory>                                                          buffer);
+       de::MovePtr<BufferWithMemory>                                                           runTest                                                         (bool                                                                                                           useGpuBuild,
+                                                                                                                                                                                                        deUint32                                                                                                       workerThreadsCount);
        de::MovePtr<TopLevelAccelerationStructure>                                      initTopAccelerationStructure            (VkCommandBuffer                                                                                        cmdBuffer,
                                                                                                                                                                                                         bool                                                                                                           useGpuBuild,
+                                                                                                                                                                                                        deUint32                                                                                                       workerThreadsCount,
                                                                                                                                                                                                         vector<de::SharedPtr<BottomLevelAccelerationStructure> >&      bottomLevelAccelerationStructures);
-       vector<de::SharedPtr<BottomLevelAccelerationStructure>  >       initBottomAccelerationStructures        (VkCommandBuffer        cmdBuffer,
-                                                                                                                                                                                                        bool                           useGpuBuild);
-       de::MovePtr<BottomLevelAccelerationStructure>                           initBottomAccelerationStructure         (VkCommandBuffer        cmdBuffer,
-                                                                                                                                                                                                        bool                           useGpuBuild,
-                                                                                                                                                                                                        tcu::UVec2&            startPos,
-                                                                                                                                                                                                        bool                           triangles);
+       vector<de::SharedPtr<BottomLevelAccelerationStructure>  >       initBottomAccelerationStructures        (VkCommandBuffer                                                                                        cmdBuffer,
+                                                                                                                                                                                                        bool                                                                                                           useGpuBuild,
+                                                                                                                                                                                                        deUint32                                                                                                       workerThreadsCount);
+       de::MovePtr<BottomLevelAccelerationStructure>                           initBottomAccelerationStructure         (VkCommandBuffer                                                                                        cmdBuffer,
+                                                                                                                                                                                                        bool                                                                                                           useGpuBuild,
+                                                                                                                                                                                                        deUint32                                                                                                       workerThreadsCount,
+                                                                                                                                                                                                        tcu::UVec2&                                                                                            startPos,
+                                                                                                                                                                                                        bool                                                                                                           triangles);
 
 private:
        CaseDef                                                                                                         m_data;
@@ -283,6 +293,7 @@ TestInstance* RayTracingTestCase::createInstance (Context& context) const
 
 de::MovePtr<TopLevelAccelerationStructure> RayTracingBuildTestInstance::initTopAccelerationStructure (VkCommandBuffer                                                                                  cmdBuffer,
                                                                                                                                                                                                          bool                                                                                                          useGpuBuild,
+                                                                                                                                                                                                         deUint32                                                                                                      workerThreadsCount,
                                                                                                                                                                                                          vector<de::SharedPtr<BottomLevelAccelerationStructure> >&     bottomLevelAccelerationStructures)
 {
        const DeviceInterface&                                          vkd                     = m_context.getDeviceInterface();
@@ -292,7 +303,7 @@ de::MovePtr<TopLevelAccelerationStructure> RayTracingBuildTestInstance::initTopA
 
        result->setInstanceCount(bottomLevelAccelerationStructures.size());
        result->setBuildType(useGpuBuild ? VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR : VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR);
-       result->setDeferredOperation(m_data.deferredOperation);
+       result->setDeferredOperation(m_data.deferredOperation, workerThreadsCount);
 
        for (size_t structNdx = 0; structNdx < bottomLevelAccelerationStructures.size(); ++structNdx)
                result->addInstance(bottomLevelAccelerationStructures[structNdx]);
@@ -304,6 +315,7 @@ de::MovePtr<TopLevelAccelerationStructure> RayTracingBuildTestInstance::initTopA
 
 de::MovePtr<BottomLevelAccelerationStructure> RayTracingBuildTestInstance::initBottomAccelerationStructure (VkCommandBuffer    cmdBuffer,
                                                                                                                                                                                                                        bool                    useGpuBuild,
+                                                                                                                                                                                                                       deUint32                workerThreadsCount,
                                                                                                                                                                                                                        tcu::UVec2&             startPos,
                                                                                                                                                                                                                        bool                    triangles)
 {
@@ -313,7 +325,7 @@ de::MovePtr<BottomLevelAccelerationStructure> RayTracingBuildTestInstance::initB
        de::MovePtr<BottomLevelAccelerationStructure>   result          = makeBottomLevelAccelerationStructure();
 
        result->setBuildType(useGpuBuild ? VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR : VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR);
-       result->setDeferredOperation(m_data.deferredOperation);
+       result->setDeferredOperation(m_data.deferredOperation, workerThreadsCount);
        result->setGeometryCount(m_data.geometriesGroupCount);
 
        for (size_t geometryNdx = 0; geometryNdx < m_data.geometriesGroupCount; ++geometryNdx)
@@ -367,7 +379,8 @@ de::MovePtr<BottomLevelAccelerationStructure> RayTracingBuildTestInstance::initB
 }
 
 vector<de::SharedPtr<BottomLevelAccelerationStructure> > RayTracingBuildTestInstance::initBottomAccelerationStructures (VkCommandBuffer        cmdBuffer,
-                                                                                                                                                                                                                                               bool                    useGpuBuild)
+                                                                                                                                                                                                                                               bool                    useGpuBuild,
+                                                                                                                                                                                                                                               deUint32                workerThreadsCount)
 {
        tcu::UVec2                                                                                                      startPos;
        vector<de::SharedPtr<BottomLevelAccelerationStructure> >        result;
@@ -375,7 +388,7 @@ vector<de::SharedPtr<BottomLevelAccelerationStructure> > RayTracingBuildTestInst
        for (size_t instanceNdx = 0; instanceNdx < m_data.instancesGroupCount; ++instanceNdx)
        {
                const bool      triangles       = (m_data.testType == TEST_TYPE_TRIANGLES) || (m_data.testType == TEST_TYPE_MIXED && (instanceNdx & 1) == 0);
-               de::MovePtr<BottomLevelAccelerationStructure>   bottomLevelAccelerationStructure        = initBottomAccelerationStructure(cmdBuffer, useGpuBuild, startPos, triangles);
+               de::MovePtr<BottomLevelAccelerationStructure>   bottomLevelAccelerationStructure        = initBottomAccelerationStructure(cmdBuffer, useGpuBuild, workerThreadsCount, startPos, triangles);
 
                result.push_back(de::SharedPtr<BottomLevelAccelerationStructure>(bottomLevelAccelerationStructure.release()));
        }
@@ -383,7 +396,7 @@ vector<de::SharedPtr<BottomLevelAccelerationStructure> > RayTracingBuildTestInst
        return result;
 }
 
-de::MovePtr<BufferWithMemory> RayTracingBuildTestInstance::runTest (bool useGpuBuild)
+de::MovePtr<BufferWithMemory> RayTracingBuildTestInstance::runTest (bool useGpuBuild, deUint32 workerThreadsCount)
 {
        const InstanceInterface&                        vki                                                                     = m_context.getInstanceInterface();
        const DeviceInterface&                          vkd                                                                     = m_context.getDeviceInterface();
@@ -452,8 +465,8 @@ de::MovePtr<BufferWithMemory> RayTracingBuildTestInstance::runTest (bool useGpuB
                vkd.cmdClearColorImage(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &clearValue.color, 1, &imageSubresourceRange);
                cmdPipelineImageMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, ALL_RAY_TRACING_STAGES, &postImageBarrier);
 
-               bottomLevelAccelerationStructures = initBottomAccelerationStructures(*cmdBuffer, useGpuBuild);
-               topLevelAccelerationStructure = initTopAccelerationStructure(*cmdBuffer, useGpuBuild, bottomLevelAccelerationStructures);
+               bottomLevelAccelerationStructures = initBottomAccelerationStructures(*cmdBuffer, useGpuBuild, workerThreadsCount);
+               topLevelAccelerationStructure = initTopAccelerationStructure(*cmdBuffer, useGpuBuild, workerThreadsCount, bottomLevelAccelerationStructures);
 
                cmdPipelineMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, ALL_RAY_TRACING_STAGES, &preTraceMemoryBarrier);
 
@@ -521,16 +534,11 @@ void RayTracingBuildTestInstance::checkSupportInInstance (void) const
                TCU_THROW(NotSupportedError, "Test requires more allocations allowed");
 }
 
-tcu::TestStatus RayTracingBuildTestInstance::iterate (void)
+deUint32 RayTracingBuildTestInstance::validateBuffer (de::MovePtr<BufferWithMemory>    buffer)
 {
-       checkSupportInInstance();
-
-       const de::MovePtr<BufferWithMemory>     bufferGPU               = runTest(true);
-       const deUint32*                                         bufferPtrGPU    = (deUint32*)bufferGPU->getAllocation().getHostPtr();
-       const de::MovePtr<BufferWithMemory>     bufferCPU               = runTest(false);
-       const deUint32*                                         bufferPtrCPU    = (deUint32*)bufferCPU->getAllocation().getHostPtr();
-       deUint32                                                        failures                = 0;
-       deUint32                                                        pos                             = 0;
+       const deUint32* bufferPtr       = (deUint32*)buffer->getAllocation().getHostPtr();
+       deUint32                failures        = 0;
+       deUint32                pos                     = 0;
 
        for (deUint32 y = 0; y < m_data.height; ++y)
        for (deUint32 x = 0; x < m_data.width; ++x)
@@ -538,16 +546,66 @@ tcu::TestStatus RayTracingBuildTestInstance::iterate (void)
                const deUint32  n                               = m_data.width * y + x;
                const deUint32  expectedValue   = (n % 7 == 0) ? 2 : 1;
 
-               if (bufferPtrGPU[pos] != expectedValue || bufferPtrCPU[pos] != expectedValue)
+               if (bufferPtr[pos] != expectedValue)
                        failures++;
 
                ++pos;
        }
 
+       return failures;
+}
+
+deUint32 RayTracingBuildTestInstance::iterateWithWorkers (void)
+{
+       const deUint64                                  singleThreadTimeStart   = deGetMicroseconds();
+       de::MovePtr<BufferWithMemory>   singleThreadBufferCPU   = runTest(false, 0);
+       const deUint32                                  singleThreadFailures    = validateBuffer(singleThreadBufferCPU);
+       const deUint64                                  singleThreadTime                = deGetMicroseconds() - singleThreadTimeStart;
+
+       deUint64                                                multiThreadTimeStart    = deGetMicroseconds();
+       de::MovePtr<BufferWithMemory>   multiThreadBufferCPU    = runTest(false, m_data.workerThreadsCount);
+       const deUint32                                  multiThreadFailures             = validateBuffer(multiThreadBufferCPU);
+       deUint64                                                multiThreadTime                 = deGetMicroseconds() - multiThreadTimeStart;
+       const deUint64                                  multiThreadTimeOut              = 10 * singleThreadTime;
+
+       const deUint32                                  failures                                = singleThreadFailures + multiThreadFailures;
+
+       DE_ASSERT(multiThreadTimeOut > singleThreadTime);
+
+       if (multiThreadTime > multiThreadTimeOut)
+       {
+               string failMsg  = "Time of multithreaded test execution " + de::toString(multiThreadTime) +
+                                                 " that is longer than expected execution time " + de::toString(multiThreadTimeOut);
+
+               TCU_FAIL(failMsg);
+       }
+
+       return failures;
+}
+
+deUint32 RayTracingBuildTestInstance::iterateNoWorkers (void)
+{
+       de::MovePtr<BufferWithMemory>   bufferGPU               = runTest(true, 0);
+       de::MovePtr<BufferWithMemory>   bufferCPU               = runTest(false, 0);
+       const deUint32                                  failuresGPU             = validateBuffer(bufferGPU);
+       const deUint32                                  failuresCPU             = validateBuffer(bufferCPU);
+       const deUint32                                  failures                = failuresGPU + failuresCPU;
+
+       return failures;
+}
+
+tcu::TestStatus RayTracingBuildTestInstance::iterate (void)
+{
+       checkSupportInInstance();
+
+       const deUint32  failures        = m_data.workerThreadsCount == 0
+                                                               ? iterateNoWorkers()
+                                                               : iterateWithWorkers();
+
        if (failures == 0)
                return tcu::TestStatus::pass("Pass");
        else
-               return tcu::TestStatus::fail("Fail (failures=" + de::toString(failures) + ")");
+               return tcu::TestStatus::fail("failures=" + de::toString(failures));
 }
 
 }      // anonymous
@@ -555,8 +613,6 @@ tcu::TestStatus RayTracingBuildTestInstance::iterate (void)
 tcu::TestCaseGroup*    createBuildTests (tcu::TestContext& testCtx)
 {
        de::MovePtr<tcu::TestCaseGroup> buildGroup(new tcu::TestCaseGroup(testCtx, "build", "Ray tracing build tests"));
-       de::MovePtr<tcu::TestCaseGroup> cpuGroup(new tcu::TestCaseGroup(testCtx, "gpu_cpu", "Compare results of run with acceleration structures build on GPU and CPU"));
-       de::MovePtr<tcu::TestCaseGroup> mtGroup(new tcu::TestCaseGroup(testCtx, "gpu_cpuht", "Compare results of run with acceleration structures build on GPU and using host threading"));
 
        const char*             tests[] =
        {
@@ -566,10 +622,20 @@ tcu::TestCaseGroup*       createBuildTests (tcu::TestContext& testCtx)
        };
        const deUint32  sizes[]         = { 4, 16, 64, 256, 1024 };
        const deUint32  factors[]       = { 1, 4 };
+       const deUint32  threads[]       = { 0, 1, 2, 3, 4, 8, std::numeric_limits<deUint32>::max() };
 
-       for (size_t targetNdx = 0; targetNdx < 2; ++targetNdx)
+       for (size_t threadNdx = 0; threadNdx <= DE_LENGTH_OF_ARRAY(threads); ++threadNdx)
        {
-               const bool      defferedOperation       = (targetNdx == 1);
+               const bool                                              defferedOperation       = threadNdx != DE_LENGTH_OF_ARRAY(threads);
+               const deUint32                                  threadsCount            = threadNdx < DE_LENGTH_OF_ARRAY(threads) ? threads[threadNdx] : 0;
+               const string                                    groupName                       = !defferedOperation ? "gpu_cpu"
+                                                                                                                       : threadsCount == 0 ? "gpu_cpuht"
+                                                                                                                       : threadsCount == std::numeric_limits<deUint32>::max() ? "cpuht_max"
+                                                                                                                       : "cpuht_" + de::toString(threadsCount);
+               const string                                    groupDesc                       = !defferedOperation ? "Compare results of run with acceleration structures build on GPU and CPU"
+                                                                                                                       : threadsCount > 0 ? "Compare results of run with acceleration structures build on GPU and using host threading"
+                                                                                                                       : "Run acceleration structures build using host threading";
+               de::MovePtr<tcu::TestCaseGroup> groupGpuCpuHt           (new tcu::TestCaseGroup(testCtx, groupName.c_str(), groupDesc.c_str()));
 
                for (size_t testsNdx = 0; testsNdx < DE_LENGTH_OF_ARRAY(tests); ++testsNdx)
                {
@@ -585,13 +651,14 @@ tcu::TestCaseGroup*       createBuildTests (tcu::TestContext& testCtx)
                                const deUint32  instancesGroupCount             = testsNdx == 2 ? largestGroup : factor;
                                const CaseDef   caseDef                                 =
                                {
-                                       TEST_TYPE_TRIANGLES,
-                                       sizes[sizesNdx],
-                                       sizes[sizesNdx],
-                                       squaresGroupCount,
-                                       geometriesGroupCount,
-                                       instancesGroupCount,
-                                       defferedOperation
+                                       TEST_TYPE_TRIANGLES,    //  TestType    testType;
+                                       sizes[sizesNdx],                //  deUint32    width;
+                                       sizes[sizesNdx],                //  deUint32    height;
+                                       squaresGroupCount,              //  deUint32    squaresGroupCount;
+                                       geometriesGroupCount,   //  deUint32    geometriesGroupCount;
+                                       instancesGroupCount,    //  deUint32    instancesGroupCount;
+                                       defferedOperation,              //  bool                deferredOperation;
+                                       threadsCount                    //  deUint32    workerThreadsCount;
                                };
                                const std::string       suffix          = de::toString(caseDef.instancesGroupCount) + '_' + de::toString(caseDef.geometriesGroupCount) + '_' + de::toString(caseDef.squaresGroupCount);
                                const std::string       testName        = "triangles_" + suffix;
@@ -612,13 +679,14 @@ tcu::TestCaseGroup*       createBuildTests (tcu::TestContext& testCtx)
                                const deUint32  instancesGroupCount             = testsNdx == 2 ? largestGroup : factor;
                                const CaseDef   caseDef                                 =
                                {
-                                       TEST_TYPE_AABBS,
-                                       sizes[sizesNdx],
-                                       sizes[sizesNdx],
-                                       squaresGroupCount,
-                                       geometriesGroupCount,
-                                       instancesGroupCount,
-                                       defferedOperation
+                                       TEST_TYPE_AABBS,                //  TestType    testType;
+                                       sizes[sizesNdx],                //  deUint32    width;
+                                       sizes[sizesNdx],                //  deUint32    height;
+                                       squaresGroupCount,              //  deUint32    squaresGroupCount;
+                                       geometriesGroupCount,   //  deUint32    geometriesGroupCount;
+                                       instancesGroupCount,    //  deUint32    instancesGroupCount;
+                                       defferedOperation,              //  bool                deferredOperation;
+                                       threadsCount                    //  deUint32    workerThreadsCount;
                                };
                                const std::string       suffix          = de::toString(caseDef.instancesGroupCount) + '_' + de::toString(caseDef.geometriesGroupCount) + '_' + de::toString(caseDef.squaresGroupCount);
                                const std::string       testName        = "aabbs_" + suffix;
@@ -639,13 +707,14 @@ tcu::TestCaseGroup*       createBuildTests (tcu::TestContext& testCtx)
                                const deUint32  instancesGroupCount             = testsNdx == 2 ? largestGroup : factor;
                                const CaseDef   caseDef                                 =
                                {
-                                       TEST_TYPE_MIXED,
-                                       sizes[sizesNdx],
-                                       sizes[sizesNdx],
-                                       squaresGroupCount,
-                                       geometriesGroupCount,
-                                       instancesGroupCount,
-                                       defferedOperation
+                                       TEST_TYPE_MIXED,                //  TestType    testType;
+                                       sizes[sizesNdx],                //  deUint32    width;
+                                       sizes[sizesNdx],                //  deUint32    height;
+                                       squaresGroupCount,              //  deUint32    squaresGroupCount;
+                                       geometriesGroupCount,   //  deUint32    geometriesGroupCount;
+                                       instancesGroupCount,    //  deUint32    instancesGroupCount;
+                                       defferedOperation,              //  bool                deferredOperation;
+                                       threadsCount                    //  deUint32    workerThreadsCount;
                                };
                                const std::string       suffix          = de::toString(caseDef.instancesGroupCount) + '_' + de::toString(caseDef.geometriesGroupCount) + '_' + de::toString(caseDef.squaresGroupCount);
                                const std::string       testName        = "mixed_" + suffix;
@@ -656,15 +725,11 @@ tcu::TestCaseGroup*       createBuildTests (tcu::TestContext& testCtx)
                                group->addChild(new RayTracingTestCase(testCtx, testName.c_str(), "", caseDef));
                        }
 
-                       if (defferedOperation)
-                               mtGroup->addChild(group.release());
-                       else
-                               cpuGroup->addChild(group.release());
+                       groupGpuCpuHt->addChild(group.release());
                }
-       }
 
-       buildGroup->addChild(cpuGroup.release());
-       buildGroup->addChild(mtGroup.release());
+               buildGroup->addChild(groupGpuCpuHt.release());
+       }
 
        return buildGroup.release();
 }
index 09d687f..1691b45 100644 (file)
@@ -603685,78 +603685,30 @@ dEQP-VK.ray_tracing.large_shader_set.cpu_ht.64
 dEQP-VK.ray_tracing.large_shader_set.cpu_ht.256
 dEQP-VK.ray_tracing.large_shader_set.cpu_ht.1024
 dEQP-VK.ray_tracing.large_shader_set.cpu_ht.4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_1048576
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_1048576
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_16
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_256
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_4096
-dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_65536
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_16_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_256_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_4096_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_65536_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_1048576_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_1_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_16_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_256_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_4096_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_65536_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_16_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_256_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_4096_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_65536_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_1048576_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_1_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_16_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_256_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_4096_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_65536_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_16_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_256_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_4096_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_65536_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1048576_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1048576_1_1
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_16_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_256_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_4096_4_4
-dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_1.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_2.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_3.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_4.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_8.4096
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.64
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.256
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.1024
+dEQP-VK.ray_tracing.large_shader_set.cpu_ht_max.4096
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_primitives.triangles_1_1_16
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_primitives.triangles_1_1_256
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_primitives.triangles_1_1_4096
@@ -603829,6 +603781,510 @@ dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_16_4_4
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_256_4_4
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_4096_4_4
 dEQP-VK.ray_tracing.build.gpu_cpuht.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_1.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_1.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_2.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_2.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_3.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_3.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_4.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_4.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_8.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_8.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.cpuht_max.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.cpuht_max.level_instances.mixed_65536_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_1_1_1048576
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.triangles_4_4_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_1_1_1048576
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.aabbs_4_4_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_16
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_256
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_4096
+dEQP-VK.ray_tracing.build.gpu_cpu.level_primitives.mixed_4_4_65536
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_16_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_256_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_4096_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_65536_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_1_1048576_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_1_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_16_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_256_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_4096_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.triangles_4_65536_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_16_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_256_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_4096_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_65536_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_1_1048576_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_1_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_16_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_256_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_4096_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.aabbs_4_65536_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_16_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_256_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_4096_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_geometries.mixed_4_65536_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1048576_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_1_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_16_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_256_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_4096_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.triangles_65536_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1048576_1_1
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_1_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_16_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_256_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_4096_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.aabbs_65536_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_16_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_256_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_4096_4_4
+dEQP-VK.ray_tracing.build.gpu_cpu.level_instances.mixed_65536_4_4
 dEQP-VK.ray_tracing.callable_shader.rgen_call
 dEQP-VK.ray_tracing.callable_shader.rgen_call_call
 dEQP-VK.ray_tracing.callable_shader.hit_call
@@ -604833,6 +605289,54 @@ dEQP-VK.ray_tracing.acceleration_structures.operations.serialization.gpu_built.b
 dEQP-VK.ray_tracing.acceleration_structures.operations.serialization.gpu_built.bottom_acceleration_structure.aabbs
 dEQP-VK.ray_tracing.acceleration_structures.requirements.memory_build_scratch
 dEQP-VK.ray_tracing.acceleration_structures.requirements.memory_update_scratch
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.1.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.2.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.3.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.4.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.8.serialization.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.copy.cpu_built.bottom_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.top_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.top_acceleration_structure.aabbs
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.bottom_acceleration_structure.triangles
+dEQP-VK.ray_tracing.acceleration_structures.host_threading.max.serialization.cpu_built.bottom_acceleration_structure.aabbs
 dEQP-VK.ray_tracing.indirect.build_structure
 dEQP-VK.ray_tracing.watertightness.0.4
 dEQP-VK.ray_tracing.watertightness.0.16