external/vulkancts/framework/vulkan/vkDebugReportUtil.cpp \
external/vulkancts/framework/vulkan/vkDefs.cpp \
external/vulkancts/framework/vulkan/vkDeviceFeatures.cpp \
+ external/vulkancts/framework/vulkan/vkDeviceProperties.cpp \
external/vulkancts/framework/vulkan/vkDeviceUtil.cpp \
external/vulkancts/framework/vulkan/vkImageUtil.cpp \
external/vulkancts/framework/vulkan/vkImageWithMemory.cpp \
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.cpp \
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmConditionalBranchTests.cpp \
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmCrossStageInterfaceTests.cpp \
+ external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsExtensionlessTests.cpp \
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsTests.cpp \
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFromHlslTests.cpp \
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmGraphicsShaderTestUtil.cpp \
dEQP-VK.api.info.get_physical_device_properties2.format_properties
dEQP-VK.api.info.get_physical_device_properties2.queue_family_properties
dEQP-VK.api.info.get_physical_device_properties2.memory_properties
+dEQP-VK.api.info.vulkan1p2.features
+dEQP-VK.api.info.vulkan1p2.properties
+dEQP-VK.api.info.vulkan1p2.feature_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.property_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.feature_bits_influence
+dEQP-VK.api.info.vulkan1p2_limits_validation.general
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_push_descriptor
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_multiview
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_discard_rectangles
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_sample_locations
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_external_memory_host
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_blend_operation_advanced
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_maintenance_3
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_conservative_rasterization
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_descriptor_indexing
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_inline_uniform_block
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_vertex_attribute_divisor
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_mesh_shader
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_transform_feedback
+dEQP-VK.api.info.vulkan1p2_limits_validation.fragment_density_map
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_ray_tracing
+dEQP-VK.api.info.vulkan1p2_limits_validation.timeline_semaphore
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_line_rasterization
dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4_unorm_pack8
dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4b4a4_unorm_pack16
dEQP-VK.api.info.image_format_properties2.1d.optimal.b4g4r4a4_unorm_pack16
dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_3_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
+dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_5_compute
dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize
dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize
dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize
dEQP-VK.spirv_assembly.instruction.compute.opnmin.all
dEQP-VK.spirv_assembly.instruction.compute.opnmax.all
dEQP-VK.spirv_assembly.instruction.compute.opnclamp.all
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rtz
dEQP-VK.spirv_assembly.instruction.compute.android.opsrem.positive
dEQP-VK.spirv_assembly.instruction.compute.android.opsrem.all
dEQP-VK.spirv_assembly.instruction.compute.android.opsmod.positive
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_control
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_geometry
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_fragment
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_vertex
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_evaluation
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_control
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_geometry
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_fragment
dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_vert
dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tessc
dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tesse
dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.geometry
dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.vertex
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_double
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_double
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bool
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bool
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_double
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_double
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bool
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bool
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec4
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublegeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublevertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublegeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublevertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4geometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intgeometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_intvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintgeometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uintvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatgeometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floatvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_control
dEQP-VK.graphicsfuzz.write-before-break
dEQP-VK.graphicsfuzz.write-red-in-loop-nest
dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if
+dEQP-VK.imageless_framebuffer.color
+dEQP-VK.imageless_framebuffer.depth_stencil
+dEQP-VK.imageless_framebuffer.color_resolve
+dEQP-VK.imageless_framebuffer.depth_stencil_resolve
+dEQP-VK.imageless_framebuffer.multisubpass
dEQP-VK.transform_feedback.simple.basic_1_256
dEQP-VK.transform_feedback.simple.basic_beginqueryindexed_streamid_0_1_256
dEQP-VK.transform_feedback.simple.basic_endqueryindexed_streamid_0_1_256
dEQP-VK.descriptor_indexing.storage_buffer_dynamic_in_loop
dEQP-VK.descriptor_indexing.uniform_buffer_dynamic_in_loop
dEQP-VK.descriptor_indexing.input_attachment_in_loop
-dEQP-VK.imageless_framebuffer.color
-dEQP-VK.imageless_framebuffer.depth_stencil
-dEQP-VK.imageless_framebuffer.color_resolve
-dEQP-VK.imageless_framebuffer.depth_stencil_resolve
-dEQP-VK.imageless_framebuffer.multisubpass
dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.8x8
dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.16x16
dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.32x32
"e7b5f0aa5b1b0eadc63a1c624c0ca7f5af133aa857d6a4271b0ef3d0bdb6868e",
"renderdoc"),
GitRepo(
- "https://github.com/KhronosGroup/SPIRV-Tools.git",
- None,
- "c1d42038f79a926ba293556dbc325d4a90d452d0",
+ "https://gitlab.khronos.org/spirv/spirv-tools.git",
+ "git@gitlab.khronos.org:spirv/spirv-tools.git",
+ "d478bdb1e5286e818cf2e0ba3ee42ebe64d519f3",
"spirv-tools"),
GitRepo(
"https://github.com/KhronosGroup/glslang.git",
None,
- "1ff0c181bb37b06371e2ffa2810d473c5e01c9b7",
+ "ee8e9c15222c2aff93dfea451b1e8a892497ec2d",
"glslang",
removeTags = ["master-tot"]),
GitRepo(
vkDeviceFeatures.hpp
vkDeviceFeatures.cpp
vkDeviceFeatures.inl
+ vkDeviceProperties.hpp
+ vkDeviceProperties.cpp
+ vkDeviceProperties.inl
)
set(VKUTIL_SRCS
*/
#define VK_API_VERSION_1_0 (static_cast<deUint32> (VK_MAKE_VERSION(1, 0, 0)))
#define VK_API_VERSION_1_1 (static_cast<deUint32> (VK_MAKE_VERSION(1, 1, 0)))
+#define VK_API_VERSION_1_2 (static_cast<deUint32> (VK_MAKE_VERSION(1, 2, 0)))
#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE (static_cast<size_t> (256))
#define VK_MAX_EXTENSION_NAME_SIZE (static_cast<size_t> (256))
-#define VK_MAX_DRIVER_NAME_SIZE_KHR (static_cast<size_t> (256))
-#define VK_MAX_DRIVER_INFO_SIZE_KHR (static_cast<size_t> (256))
+#define VK_MAX_DRIVER_NAME_SIZE (static_cast<size_t> (256))
+#define VK_MAX_DRIVER_INFO_SIZE (static_cast<size_t> (256))
#define VK_UUID_SIZE (static_cast<size_t> (16))
#define VK_LUID_SIZE (static_cast<size_t> (8))
#define VK_MAX_MEMORY_TYPES (static_cast<size_t> (32))
#define VK_WHOLE_SIZE (static_cast<vk::VkDeviceSize> ((~0ULL)))
#define VK_TRUE (static_cast<vk::VkBool32> (1))
#define VK_FALSE (static_cast<vk::VkBool32> (0))
-#define VK_API_MAX_FRAMEWORK_VERSION VK_API_VERSION_1_1
+#define VK_API_MAX_FRAMEWORK_VERSION VK_API_VERSION_1_2
VK_DEFINE_HANDLE (VkInstance, HANDLE_TYPE_INSTANCE);
VK_DEFINE_HANDLE (VkPhysicalDevice, HANDLE_TYPE_PHYSICAL_DEVICE);
VK_ERROR_FRAGMENTED_POOL = -12,
VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
+ VK_ERROR_FRAGMENTATION = -1000161000,
+ VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
VK_ERROR_SURFACE_LOST_KHR = -1000000000,
VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
VK_SUBOPTIMAL_KHR = 1000001003,
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
VK_ERROR_INVALID_SHADER_NV = -1000012000,
VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
- VK_ERROR_FRAGMENTATION_EXT = -1000161000,
VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
- VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000244000,
VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
+ VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
+ VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
+ VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
VK_RESULT_MAX_ENUM = 0x7FFFFFFF,
};
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,
+ VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002,
+ VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004,
+ VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005,
+ VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,
+ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,
+ VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,
+ VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002,
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,
+ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004,
+ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001,
+ VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,
+ VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,
+ VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,
VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000,
VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002,
- VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000,
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002,
- VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003,
- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004,
- VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005,
- VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006,
VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
- VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001,
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002,
VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
- VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004,
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000,
VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,
VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000,
VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001,
- VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002,
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003,
- VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004,
- VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,
VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000,
VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,
VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003,
VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004,
VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000,
VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000,
VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002,
VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000,
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001,
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
- VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000,
VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,
VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000,
VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000,
VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,
VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000,
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,
VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
+ VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
+ VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
+ VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
+ VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
+ VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
+ VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
+ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
+ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+ VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
+ VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
+ VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF,
};
VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
+ VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000,
+ VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001,
+ VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002,
+ VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003,
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003,
VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
- VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000,
- VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001,
- VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002,
- VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003,
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+ VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
+ VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF,
};
VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF,
};
+enum VkDriverId
+{
+ VK_DRIVER_ID_AMD_PROPRIETARY = 1,
+ VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,
+ VK_DRIVER_ID_MESA_RADV = 3,
+ VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,
+ VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,
+ VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,
+ VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,
+ VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,
+ VK_DRIVER_ID_ARM_PROPRIETARY = 9,
+ VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,
+ VK_DRIVER_ID_GGP_PROPRIETARY = 11,
+ VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,
+ VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY,
+ VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE,
+ VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV,
+ VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY,
+ VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
+ VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
+ VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
+ VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,
+ VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY,
+ VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
+ VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY,
+ VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+ VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF,
+};
+
+enum VkShaderFloatControlsIndependence
+{
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_LAST,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF,
+};
+
+enum VkSamplerReductionMode
+{
+ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,
+ VK_SAMPLER_REDUCTION_MODE_MIN = 1,
+ VK_SAMPLER_REDUCTION_MODE_MAX = 2,
+ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+ VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN,
+ VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX,
+ VK_SAMPLER_REDUCTION_MODE_LAST,
+ VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF,
+};
+
+enum VkSemaphoreType
+{
+ VK_SEMAPHORE_TYPE_BINARY = 0,
+ VK_SEMAPHORE_TYPE_TIMELINE = 1,
+ VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY,
+ VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE,
+ VK_SEMAPHORE_TYPE_LAST,
+ VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF,
+};
+
enum VkColorSpaceKHR
{
VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF,
};
-enum VkDriverIdKHR
-{
- VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1,
- VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2,
- VK_DRIVER_ID_MESA_RADV_KHR = 3,
- VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4,
- VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5,
- VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6,
- VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7,
- VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8,
- VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9,
- VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10,
- VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11,
- VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12,
- VK_DRIVER_ID_MAX_ENUM_KHR = 0x7FFFFFFF,
-};
-
-enum VkShaderFloatControlsIndependenceKHR
-{
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_KHR_LAST,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR = 0x7FFFFFFF,
-};
-
-enum VkSemaphoreTypeKHR
-{
- VK_SEMAPHORE_TYPE_BINARY_KHR = 0,
- VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1,
- VK_SEMAPHORE_TYPE_KHR_LAST,
- VK_SEMAPHORE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF,
-};
-
enum VkPipelineExecutableStatisticFormatKHR
{
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0,
VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF,
};
-enum VkSamplerReductionModeEXT
-{
- VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
- VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
- VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
- VK_SAMPLER_REDUCTION_MODE_EXT_LAST,
- VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF,
-};
-
enum VkBlendOverlapEXT
{
VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
+
+
+
+
enum VkFormatFeatureFlagBits
{
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
- VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000010,
+ VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010,
+ VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+ VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
};
typedef deUint32 VkBufferCreateFlags;
VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000,
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 0x00000400,
- VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000,
+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
};
typedef deUint32 VkBufferUsageFlags;
enum VkDescriptorSetLayoutCreateFlagBits
{
+ VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
- VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 0x00000002,
+ VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
};
typedef deUint32 VkDescriptorSetLayoutCreateFlags;
enum VkDescriptorPoolCreateFlagBits
{
VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
- VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 0x00000002,
+ VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,
+ VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,
VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
};
typedef deUint32 VkDescriptorPoolCreateFlags;
enum VkFramebufferCreateFlagBits
{
- VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 0x00000001,
+ VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
+ VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
};
typedef deUint32 VkFramebufferCreateFlags;
enum VkMemoryAllocateFlagBits
{
- VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
- VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
- VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
+ VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004,
+ VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+ VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
};
typedef deUint32 VkMemoryAllocateFlags;
};
typedef deUint32 VkExternalSemaphoreFeatureFlags;
+enum VkResolveModeFlagBits
+{
+ VK_RESOLVE_MODE_NONE = 0,
+ VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,
+ VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,
+ VK_RESOLVE_MODE_MIN_BIT = 0x00000004,
+ VK_RESOLVE_MODE_MAX_BIT = 0x00000008,
+ VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE,
+ VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
+ VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT,
+ VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT,
+ VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT,
+ VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
+};
+typedef deUint32 VkResolveModeFlags;
+
+enum VkDescriptorBindingFlagBits
+{
+ VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001,
+ VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002,
+ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004,
+ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008,
+ VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
+ VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
+ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
+ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,
+ VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
+};
+typedef deUint32 VkDescriptorBindingFlags;
+
+enum VkSemaphoreWaitFlagBits
+{
+ VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
+ VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT,
+ VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
+};
+typedef deUint32 VkSemaphoreWaitFlags;
+
enum VkSurfaceTransformFlagBitsKHR
{
VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
};
typedef deUint32 VkAcquireProfilingLockFlagsKHR;
-enum VkResolveModeFlagBitsKHR
-{
- VK_RESOLVE_MODE_NONE_KHR = 0,
- VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 0x00000001,
- VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 0x00000002,
- VK_RESOLVE_MODE_MIN_BIT_KHR = 0x00000004,
- VK_RESOLVE_MODE_MAX_BIT_KHR = 0x00000008,
- VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF,
-};
-typedef deUint32 VkResolveModeFlagsKHR;
-
-enum VkSemaphoreWaitFlagBitsKHR
-{
- VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 0x00000001,
- VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF,
-};
-typedef deUint32 VkSemaphoreWaitFlagsKHR;
-
enum VkDebugReportFlagBitsEXT
{
VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
};
typedef deUint32 VkDebugUtilsMessageTypeFlagsEXT;
-enum VkDescriptorBindingFlagBitsEXT
-{
- VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 0x00000001,
- VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 0x00000002,
- VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 0x00000004,
- VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 0x00000008,
- VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF,
-};
-typedef deUint32 VkDescriptorBindingFlagsEXT;
-
enum VkGeometryFlagBitsNV
{
VK_GEOMETRY_OPAQUE_BIT_NV = 0x00000001,
+
+
+
VK_DEFINE_PLATFORM_TYPE(XlibDisplayPtr, void*);
VK_DEFINE_PLATFORM_TYPE(XlibWindow, deUintptr);
VK_DEFINE_PLATFORM_TYPE(XlibVisualID, deUint32);
#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1
#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
+#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE
+#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE
#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1
#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1
#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9
#define VK_NV_GLSL_SHADER_SPEC_VERSION 1
virtual void destroyDescriptorUpdateTemplate (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const;
virtual void updateDescriptorSetWithTemplate (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const;
virtual void getDescriptorSetLayoutSupport (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const;
+virtual void cmdDrawIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual void cmdDrawIndexedIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual VkResult createRenderPass2 (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const;
+virtual void cmdBeginRenderPass2 (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo) const;
+virtual void cmdNextSubpass2 (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo) const;
+virtual void cmdEndRenderPass2 (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) const;
+virtual void resetQueryPool (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const;
+virtual VkResult getSemaphoreCounterValue (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const;
+virtual VkResult waitSemaphores (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout) const;
+virtual VkResult signalSemaphore (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) const;
+virtual VkDeviceAddress getBufferDeviceAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const;
+virtual uint64_t getBufferOpaqueCaptureAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const;
+virtual uint64_t getDeviceMemoryOpaqueCaptureAddress (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) const;
virtual VkResult createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const;
virtual void destroySwapchainKHR (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const;
virtual VkResult getSwapchainImagesKHR (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const;
virtual VkResult getSemaphoreFdKHR (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) const;
virtual void cmdPushDescriptorSetKHR (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const;
virtual void cmdPushDescriptorSetWithTemplateKHR (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const;
-virtual VkResult createRenderPass2KHR (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const;
-virtual void cmdBeginRenderPass2KHR (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo) const;
-virtual void cmdNextSubpass2KHR (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo) const;
-virtual void cmdEndRenderPass2KHR (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo) const;
virtual VkResult getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain) const;
virtual VkResult importFenceFdKHR (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const;
virtual VkResult getFenceFdKHR (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const;
virtual VkResult acquireProfilingLockKHR (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) const;
virtual void releaseProfilingLockKHR (VkDevice device) const;
-virtual void cmdDrawIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
-virtual void cmdDrawIndexedIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
-virtual VkResult getSemaphoreCounterValueKHR (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const;
-virtual VkResult waitSemaphoresKHR (VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout) const;
-virtual VkResult signalSemaphoreKHR (VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo) const;
virtual VkResult getPipelineExecutablePropertiesKHR (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) const;
virtual VkResult getPipelineExecutableStatisticsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) const;
virtual VkResult getPipelineExecutableInternalRepresentationsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) const;
virtual VkResult queueSetPerformanceConfigurationINTEL (VkQueue queue, VkPerformanceConfigurationINTEL configuration) const;
virtual VkResult getPerformanceParameterINTEL (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) const;
virtual void setLocalDimmingAMD (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) const;
-virtual VkDeviceAddress getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo) const;
+virtual VkDeviceAddress getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const;
virtual void cmdSetLineStippleEXT (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern) const;
-virtual void resetQueryPoolEXT (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const;
virtual VkResult getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const;
virtual VkResult getMemoryAndroidHardwareBufferANDROID (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const;
virtual VkResult getMemoryWin32HandleKHR (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
apis.clear();
apis.insert(::std::pair<deUint32, FunctionInfosList>(VK_API_VERSION_1_0, FunctionInfosList()));
apis.insert(::std::pair<deUint32, FunctionInfosList>(VK_API_VERSION_1_1, FunctionInfosList()));
+ apis.insert(::std::pair<deUint32, FunctionInfosList>(VK_API_VERSION_1_2, FunctionInfosList()));
apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateInstance", FUNCTIONORIGIN_PLATFORM));
apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyInstance", FUNCTIONORIGIN_INSTANCE));
apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceExternalFenceProperties", FUNCTIONORIGIN_INSTANCE));
apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceExternalSemaphoreProperties", FUNCTIONORIGIN_INSTANCE));
apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetDescriptorSetLayoutSupport", FUNCTIONORIGIN_DEVICE));
+
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateInstance", FUNCTIONORIGIN_PLATFORM));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyInstance", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumeratePhysicalDevices", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetInstanceProcAddr", FUNCTIONORIGIN_PLATFORM));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceProcAddr", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDevice", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDevice", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateInstanceExtensionProperties", FUNCTIONORIGIN_PLATFORM));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateDeviceExtensionProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateInstanceLayerProperties", FUNCTIONORIGIN_PLATFORM));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateDeviceLayerProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceQueue", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkQueueSubmit", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkQueueWaitIdle", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDeviceWaitIdle", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkAllocateMemory", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFreeMemory", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkMapMemory", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkUnmapMemory", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFlushMappedMemoryRanges", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkInvalidateMappedMemoryRanges", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceMemoryCommitment", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindBufferMemory", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindImageMemory", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferMemoryRequirements", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageMemoryRequirements", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageSparseMemoryRequirements", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkQueueBindSparse", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateFence", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyFence", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetFences", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetFenceStatus", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkWaitForFences", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateSemaphore", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroySemaphore", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateEvent", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyEvent", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetEventStatus", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkSetEvent", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetEvent", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateQueryPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyQueryPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetQueryPoolResults", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateBuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyBuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateBufferView", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyBufferView", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateImage", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyImage", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageSubresourceLayout", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateImageView", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyImageView", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateShaderModule", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyShaderModule", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreatePipelineCache", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyPipelineCache", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPipelineCacheData", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkMergePipelineCaches", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateGraphicsPipelines", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateComputePipelines", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyPipeline", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreatePipelineLayout", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyPipelineLayout", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateSampler", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroySampler", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDescriptorSetLayout", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDescriptorSetLayout", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDescriptorPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDescriptorPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetDescriptorPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkAllocateDescriptorSets", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFreeDescriptorSets", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkUpdateDescriptorSets", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateFramebuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyFramebuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateRenderPass", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyRenderPass", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetRenderAreaGranularity", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateCommandPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyCommandPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetCommandPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkAllocateCommandBuffers", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFreeCommandBuffers", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBeginCommandBuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEndCommandBuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetCommandBuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindPipeline", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetViewport", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetScissor", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetLineWidth", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetDepthBias", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetBlendConstants", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetDepthBounds", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetStencilCompareMask", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetStencilWriteMask", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetStencilReference", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindDescriptorSets", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindIndexBuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindVertexBuffers", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDraw", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndexed", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndirect", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndexedIndirect", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDispatch", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDispatchIndirect", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyBuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyImage", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBlitImage", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyBufferToImage", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyImageToBuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdUpdateBuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdFillBuffer", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdClearColorImage", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdClearDepthStencilImage", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdClearAttachments", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdResolveImage", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetEvent", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdResetEvent", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdWaitEvents", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdPipelineBarrier", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBeginQuery", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdEndQuery", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdResetQueryPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdWriteTimestamp", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyQueryPoolResults", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdPushConstants", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBeginRenderPass", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdNextSubpass", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdEndRenderPass", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdExecuteCommands", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateInstanceVersion", FUNCTIONORIGIN_PLATFORM));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindBufferMemory2", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindImageMemory2", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceGroupPeerMemoryFeatures", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetDeviceMask", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDispatchBase", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumeratePhysicalDeviceGroups", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageMemoryRequirements2", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferMemoryRequirements2", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageSparseMemoryRequirements2", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures2", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceProperties2", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties2", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties2", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties2", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties2", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties2", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkTrimCommandPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceQueue2", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateSamplerYcbcrConversion", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroySamplerYcbcrConversion", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDescriptorUpdateTemplate", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDescriptorUpdateTemplate", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkUpdateDescriptorSetWithTemplate", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceExternalBufferProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceExternalFenceProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceExternalSemaphoreProperties", FUNCTIONORIGIN_INSTANCE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDescriptorSetLayoutSupport", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndirectCount", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndexedIndirectCount", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateRenderPass2", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBeginRenderPass2", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdNextSubpass2", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdEndRenderPass2", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetQueryPool", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetSemaphoreCounterValue", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkWaitSemaphores", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkSignalSemaphore", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferDeviceAddress", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferOpaqueCaptureAddress", FUNCTIONORIGIN_DEVICE));
+ apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceMemoryOpaqueCaptureAddress", FUNCTIONORIGIN_DEVICE));
+
}
SPIRV_VERSION_1_2 = 2, //!< SPIR-V 1.2
SPIRV_VERSION_1_3 = 3, //!< SPIR-V 1.3
SPIRV_VERSION_1_4 = 4, //!< SPIR-V 1.4
+ SPIRV_VERSION_1_5 = 5, //!< SPIR-V 1.5
SPIRV_VERSION_LAST
};
m_vk.getDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
}
+void DeviceDriver::cmdDrawIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
+{
+ m_vk.cmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+}
+
+void DeviceDriver::cmdDrawIndexedIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
+{
+ m_vk.cmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+}
+
+VkResult DeviceDriver::createRenderPass2 (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const
+{
+ return m_vk.createRenderPass2(device, pCreateInfo, pAllocator, pRenderPass);
+}
+
+void DeviceDriver::cmdBeginRenderPass2 (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo) const
+{
+ m_vk.cmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
+}
+
+void DeviceDriver::cmdNextSubpass2 (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo) const
+{
+ m_vk.cmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
+}
+
+void DeviceDriver::cmdEndRenderPass2 (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) const
+{
+ m_vk.cmdEndRenderPass2(commandBuffer, pSubpassEndInfo);
+}
+
+void DeviceDriver::resetQueryPool (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const
+{
+ m_vk.resetQueryPool(device, queryPool, firstQuery, queryCount);
+}
+
+VkResult DeviceDriver::getSemaphoreCounterValue (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const
+{
+ return m_vk.getSemaphoreCounterValue(device, semaphore, pValue);
+}
+
+VkResult DeviceDriver::waitSemaphores (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout) const
+{
+ return m_vk.waitSemaphores(device, pWaitInfo, timeout);
+}
+
+VkResult DeviceDriver::signalSemaphore (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) const
+{
+ return m_vk.signalSemaphore(device, pSignalInfo);
+}
+
+VkDeviceAddress DeviceDriver::getBufferDeviceAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const
+{
+ return m_vk.getBufferDeviceAddress(device, pInfo);
+}
+
+uint64_t DeviceDriver::getBufferOpaqueCaptureAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const
+{
+ return m_vk.getBufferOpaqueCaptureAddress(device, pInfo);
+}
+
+uint64_t DeviceDriver::getDeviceMemoryOpaqueCaptureAddress (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) const
+{
+ return m_vk.getDeviceMemoryOpaqueCaptureAddress(device, pInfo);
+}
+
VkResult DeviceDriver::createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const
{
return m_vk.createSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
m_vk.cmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
}
-VkResult DeviceDriver::createRenderPass2KHR (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const
-{
- return m_vk.createRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
-}
-
-void DeviceDriver::cmdBeginRenderPass2KHR (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo) const
-{
- m_vk.cmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
-}
-
-void DeviceDriver::cmdNextSubpass2KHR (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo) const
-{
- m_vk.cmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
-}
-
-void DeviceDriver::cmdEndRenderPass2KHR (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo) const
-{
- m_vk.cmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
-}
-
VkResult DeviceDriver::getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain) const
{
return m_vk.getSwapchainStatusKHR(device, swapchain);
m_vk.releaseProfilingLockKHR(device);
}
-void DeviceDriver::cmdDrawIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
-{
- m_vk.cmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
-}
-
-void DeviceDriver::cmdDrawIndexedIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
-{
- m_vk.cmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
-}
-
-VkResult DeviceDriver::getSemaphoreCounterValueKHR (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const
-{
- return m_vk.getSemaphoreCounterValueKHR(device, semaphore, pValue);
-}
-
-VkResult DeviceDriver::waitSemaphoresKHR (VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout) const
-{
- return m_vk.waitSemaphoresKHR(device, pWaitInfo, timeout);
-}
-
-VkResult DeviceDriver::signalSemaphoreKHR (VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo) const
-{
- return m_vk.signalSemaphoreKHR(device, pSignalInfo);
-}
-
VkResult DeviceDriver::getPipelineExecutablePropertiesKHR (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) const
{
return m_vk.getPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties);
m_vk.setLocalDimmingAMD(device, swapChain, localDimmingEnable);
}
-VkDeviceAddress DeviceDriver::getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo) const
+VkDeviceAddress DeviceDriver::getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const
{
return m_vk.getBufferDeviceAddressEXT(device, pInfo);
}
m_vk.cmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern);
}
-void DeviceDriver::resetQueryPoolEXT (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const
-{
- m_vk.resetQueryPoolEXT(device, queryPool, firstQuery, queryCount);
-}
-
VkResult DeviceDriver::getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const
{
return m_vk.getAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
"VK_KHR_vulkan_memory_model",
"VK_KHR_uniform_buffer_standard_layout",
"VK_KHR_imageless_framebuffer",
- "VK_KHR_pipeline_executable_properties",
- "VK_KHR_timeline_semaphore",
- "VK_KHR_shader_clock",
- "VK_KHR_spirv_1_4",
"VK_KHR_shader_subgroup_extended_types",
+ "VK_EXT_sampler_filter_minmax",
+ "VK_EXT_shader_viewport_index_layer",
+ "VK_EXT_descriptor_indexing",
+ "VK_EXT_scalar_block_layout",
+ "VK_KHR_buffer_device_address",
+ "VK_EXT_host_query_reset",
"VK_KHR_separate_depth_stencil_layouts",
+ "VK_KHR_timeline_semaphore",
+ "VK_KHR_spirv_1_4",
+ "VK_EXT_separate_stencil_usage",
+ "VK_KHR_pipeline_executable_properties",
+ "VK_KHR_shader_clock",
"VK_KHR_performance_query",
};
const std::vector<std::string>& instanceExtensions,
const std::vector<std::string>& deviceExtensions)
{
- deMemset(&m_coreFeatures2, 0, sizeof(m_coreFeatures2));
- m_coreFeatures2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
+ m_coreFeatures2 = initVulkanStructure();
+ m_vulkan11Features = initVulkanStructure();
+ m_vulkan12Features = initVulkanStructure();
if (isInstanceExtensionSupported(apiVersion, instanceExtensions, "VK_KHR_get_physical_device_properties2"))
{
const std::vector<VkExtensionProperties> deviceExtensionProperties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
void** nextPtr = &m_coreFeatures2.pNext;
+ std::vector<FeatureStructWrapperBase*> featuresToFillFromBlob;
+ bool vk12Supported = (apiVersion >= VK_MAKE_VERSION(1, 2, 0));
- for (size_t i = 0; i < DE_LENGTH_OF_ARRAY(featureStructCreatorMap); ++i)
+ // in vk12 we have blob structures combining features of couple previously
+ // available feature structures, that now in vk12 must be removed from chain
+ if (vk12Supported)
{
- const char* featureName = featureStructCreatorMap[i].name;
+ addToChainVulkanStructure(&nextPtr, m_vulkan11Features);
+ addToChainVulkanStructure(&nextPtr, m_vulkan12Features);
+ }
- if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), featureName)
- && verifyFeatureAddCriteria(featureStructCreatorMap[i], deviceExtensionProperties))
- {
- FeatureStruct* p = createFeatureStructWrapper(featureName);
+ // iterate over data for all feature that are defined in specification
+ for (const auto& featureStructCreationData : featureStructCreationArray)
+ {
+ const char* featureName = featureStructCreationData.name;
- if (p)
+ // check if this feature is available on current device
+ if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), featureName) &&
+ verifyFeatureAddCriteria(featureStructCreationData, deviceExtensionProperties))
+ {
+ FeatureStructWrapperBase* p = (*featureStructCreationData.creatorFunction)();
+ if (p == DE_NULL)
+ continue;
+
+ // if feature struct is part of VkPhysicalDeviceVulkan1{1,2}Features
+ // we dont add it to the chain but store and fill later from blob data
+ bool featureFilledFromBlob = false;
+ if (vk12Supported)
+ featureFilledFromBlob = isPartOfBlobFeatures(p->getFeatureDesc().sType);
+
+ if (featureFilledFromBlob)
+ featuresToFillFromBlob.push_back(p);
+ else
{
+ // add to chain
*nextPtr = p->getFeatureTypeRaw();
nextPtr = p->getFeatureTypeNext();
- m_features.push_back(p);
}
+ m_features.push_back(p);
}
}
vki.getPhysicalDeviceFeatures2(physicalDevice, &m_coreFeatures2);
+
+ // fill data from VkPhysicalDeviceVulkan1{1,2}Features
+ if (vk12Supported)
+ {
+ AllBlobs allBlobs =
+ {
+ m_vulkan11Features,
+ m_vulkan12Features,
+ // add blobs from future vulkan versions here
+ };
+
+ for (auto feature : featuresToFillFromBlob)
+ feature->initializeFromBlob(allBlobs);
+ }
}
else
m_coreFeatures2.features = getPhysicalDeviceFeatures(vki, physicalDevice);
m_coreFeatures2.features.robustBufferAccess = false;
}
-bool DeviceFeatures::verifyFeatureAddCriteria (const FeatureStructMapItem& item, const std::vector<VkExtensionProperties>& properties)
+bool DeviceFeatures::verifyFeatureAddCriteria (const FeatureStructCreationData& item, const std::vector<VkExtensionProperties>& properties)
{
- bool criteriaOK = true;
-
if (deStringEqual(item.name, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME))
{
- const size_t propSize = properties.size();
-
- for (size_t propIdx = 0; propIdx < propSize; ++propIdx)
+ for (const auto& property : properties)
{
- if (deStringEqual(properties[propIdx].extensionName, item.name))
- {
- criteriaOK = properties[propIdx].specVersion == item.specVersion;
- break;
- }
+ if (deStringEqual(property.extensionName, item.name))
+ return (property.specVersion == item.specVersion);
}
}
- return criteriaOK;
+ return true;
}
bool DeviceFeatures::contains (const std::string& feature, bool throwIfNotExists) const
{
- const size_t typesSize = m_features.size();
-
- for (size_t typeIdx = 0; typeIdx < typesSize; ++typeIdx)
+ for (const auto f : m_features)
{
- if (deStringEqual(m_features[typeIdx]->getFeatureDesc().name, feature.c_str()))
- {
+ if (deStringEqual(f->getFeatureDesc().name, feature.c_str()))
return true;
- }
}
if (throwIfNotExists)
- {
- std::string msg("Feature " + feature + " is not supported");
-
- TCU_THROW(NotSupportedError, msg);
- }
+ TCU_THROW(NotSupportedError, "Feature " + feature + " is not supported");
return false;
}
-DeviceFeatures::~DeviceFeatures (void)
+bool DeviceFeatures::isDeviceFeatureInitialized (VkStructureType sType) const
{
- for (size_t i = 0; i < m_features.size(); ++i)
- delete m_features[i];
-
- m_features.clear();
+ for (const auto f : m_features)
+ {
+ if (f->getFeatureDesc().sType == sType)
+ return true;
+ }
+ return false;
}
-FeatureStruct* DeviceFeatures::createFeatureStructWrapper (const std::string& s)
+DeviceFeatures::~DeviceFeatures (void)
{
- for (size_t i = 0; i < DE_LENGTH_OF_ARRAY(featureStructCreatorMap); ++i)
- {
- if (deStringEqual(featureStructCreatorMap[i].name, s.c_str()))
- return (*featureStructCreatorMap[i].creator)();
- }
+ for (auto p : m_features)
+ delete p;
- return DE_NULL;
+ m_features.clear();
}
} // vk
namespace vk
{
+// Structure describing vulkan feature structure
struct FeatureDesc
{
- FeatureDesc (VkStructureType sType_, const char* name_, deUint32 specVersion_, deUint32 typeId_)
- : name (name_)
- , sType (sType_)
- , specVersion (specVersion_)
- , typeId (typeId_)
- {}
-
- const char* name;
VkStructureType sType;
+ const char* name;
const deUint32 specVersion;
const deUint32 typeId;
};
-struct FeatureStruct
+// Structure containg all feature blobs - this simplifies generated code
+struct AllBlobs
{
- virtual deUint32 getFeatureTypeId (void) const = 0;
- virtual FeatureDesc getFeatureDesc (void) const = 0;
- virtual void** getFeatureTypeNext (void) = 0;
- virtual void* getFeatureTypeRaw (void) = 0;
- virtual ~FeatureStruct (void) {}
+ VkPhysicalDeviceVulkan11Features& vk11;
+ VkPhysicalDeviceVulkan12Features& vk12;
+ // add blobs from future vulkan versions here
};
+// Base class for all FeatureStructWrapper specializations
+class FeatureStructWrapperBase
+{
+public:
+ virtual ~FeatureStructWrapperBase (void) {}
+ virtual void initializeFromBlob (const AllBlobs& allBlobs) = 0;
+ virtual deUint32 getFeatureTypeId (void) const = 0;
+ virtual FeatureDesc getFeatureDesc (void) const = 0;
+ virtual void** getFeatureTypeNext (void) = 0;
+ virtual void* getFeatureTypeRaw (void) = 0;
+};
-struct FeatureStructMapItem
+using FeatureStructWrapperCreator = FeatureStructWrapperBase* (*) (void);
+struct FeatureStructCreationData
{
- FeatureStruct* (*creator)(void);
- const char* name;
- deUint32 specVersion;
+ FeatureStructWrapperCreator creatorFunction;
+ const char* name;
+ deUint32 specVersion;
};
-template<class FeatureType> struct FeatureStructWrapper;
+template<class FeatureType> class FeatureStructWrapper;
template<class FeatureType> FeatureDesc makeFeatureDesc (void);
template<class FeatureType>
-FeatureStruct* createFeatureStructWrapper (void)
+FeatureStructWrapperBase* createFeatureStructWrapper (void)
{
return new FeatureStructWrapper<FeatureType>(makeFeatureDesc<FeatureType>());
}
+template<class FeatureType>
+void initFromBlob(FeatureType& featureType, const AllBlobs& allBlobs);
+
+template<class FeatureType>
+void initFromBlobWrapper(FeatureType& featureType, const AllBlobs& allBlobs)
+{
+ initFromBlob<FeatureType>(featureType, allBlobs);
+}
+
class DeviceFeatures
{
public:
- DeviceFeatures (const InstanceInterface& vki,
- const deUint32 apiVersion,
- const VkPhysicalDevice physicalDevice,
- const std::vector<std::string>& instanceExtensions,
- const std::vector<std::string>& deviceExtensions);
-
- ~DeviceFeatures (void);
+ DeviceFeatures (const InstanceInterface& vki,
+ const deUint32 apiVersion,
+ const VkPhysicalDevice physicalDevice,
+ const std::vector<std::string>& instanceExtensions,
+ const std::vector<std::string>& deviceExtensions);
- template<class FeatureType>
- bool getFeatureType (FeatureType& featureType) const
- {
- typedef FeatureStructWrapper<FeatureType> *FeatureWrapperPtr;
-
- const VkStructureType sType = makeFeatureDesc<FeatureType>().sType;
- const size_t featCount = m_features.size();
-
- for (size_t featIdx = 0; featIdx < featCount; ++featIdx)
- {
- if (sType == m_features[featIdx]->getFeatureDesc().sType)
- {
- featureType = static_cast<FeatureWrapperPtr>(m_features[featIdx])->getFeatureTypeRef();
- return true;
- }
- }
- return false;
- }
+ ~DeviceFeatures (void);
template<class FeatureType>
- const FeatureType& getFeatureType (void) const
- {
- typedef FeatureStructWrapper<FeatureType> *FeatureWrapperPtr;
+ const FeatureType& getFeatureType (void) const;
- const FeatureDesc featDesc = makeFeatureDesc<FeatureType>();
- const VkStructureType sType = featDesc.sType;
- const size_t featCount = m_features.size();
+ const VkPhysicalDeviceFeatures2& getCoreFeatures2 (void) const { return m_coreFeatures2; }
+ const VkPhysicalDeviceVulkan11Features& getVulkan11Features (void) const { return m_vulkan11Features; }
+ const VkPhysicalDeviceVulkan12Features& getVulkan12Features (void) const { return m_vulkan12Features; }
- for (size_t featIdx = 0; featIdx < featCount; ++featIdx)
- {
- if (sType == m_features[featIdx]->getFeatureDesc().sType)
- return static_cast<FeatureWrapperPtr>(m_features[featIdx])->getFeatureTypeRef();
- }
+ bool contains (const std::string& feature, bool throwIfNotExists = false) const;
- const deUint32 featureId = featDesc.typeId;
+ bool isDeviceFeatureInitialized (VkStructureType sType) const;
- for (size_t featIdx = 0; featIdx < featCount; ++featIdx)
- {
- if (featureId == m_features[featIdx]->getFeatureTypeId())
- return static_cast<FeatureWrapperPtr>(m_features[featIdx])->getFeatureTypeRef();
- }
+private:
- FeatureStruct* p = vk::createFeatureStructWrapper<FeatureType>();
- m_features.push_back(p);
+ static bool verifyFeatureAddCriteria (const FeatureStructCreationData& item, const std::vector<VkExtensionProperties>& properties);
- return static_cast<FeatureWrapperPtr>(p)->getFeatureTypeRef();
- }
+private:
- const VkPhysicalDeviceFeatures2& getCoreFeatures2 (void) const { return m_coreFeatures2; }
+ VkPhysicalDeviceFeatures2 m_coreFeatures2;
+ mutable std::vector<FeatureStructWrapperBase*> m_features;
+ VkPhysicalDeviceVulkan11Features m_vulkan11Features;
+ VkPhysicalDeviceVulkan12Features m_vulkan12Features;
+};
- bool contains (const std::string& feature, bool throwIfNotExists = false) const;
+template<class FeatureType>
+const FeatureType& DeviceFeatures::getFeatureType(void) const
+{
+ typedef FeatureStructWrapper<FeatureType>* FeatureWrapperPtr;
-private:
+ const FeatureDesc featDesc = makeFeatureDesc<FeatureType>();
+ const VkStructureType sType = featDesc.sType;
- static FeatureStruct* createFeatureStructWrapper (const std::string& s);
+ // try to find feature by sType
+ for (auto feature : m_features)
+ {
+ if (sType == feature->getFeatureDesc().sType)
+ return static_cast<FeatureWrapperPtr>(feature)->getFeatureTypeRef();
+ }
- static bool verifyFeatureAddCriteria (const FeatureStructMapItem& item, const std::vector<VkExtensionProperties>& properties);
+ // try to find feature by id that was assigned by gen_framework script
+ const deUint32 featureId = featDesc.typeId;
+ for (auto feature : m_features)
+ {
+ if (featureId == feature->getFeatureTypeId())
+ return static_cast<FeatureWrapperPtr>(feature)->getFeatureTypeRef();
+ }
- VkPhysicalDeviceFeatures2 m_coreFeatures2;
- mutable std::vector<FeatureStruct*> m_features;
-};
+ // if initialized feature structure was not found create empty one and return it
+ m_features.push_back(vk::createFeatureStructWrapper<FeatureType>());
+ return static_cast<FeatureWrapperPtr>(m_features.back())->getFeatureTypeRef();
+}
template<class FeatureType>
-struct FeatureStructWrapper : FeatureStruct
+class FeatureStructWrapper : public FeatureStructWrapperBase
{
+public:
+ FeatureStructWrapper (const FeatureDesc& featureDesc)
+ : m_featureDesc(featureDesc)
+ {
+ deMemset(&m_featureType, 0, sizeof(m_featureType));
+ m_featureType.sType = featureDesc.sType;
+ }
+
+ void initializeFromBlob (const AllBlobs& allBlobs)
+ {
+ initFromBlobWrapper(m_featureType, allBlobs);
+ }
+
+ deUint32 getFeatureTypeId (void) const { return m_featureDesc.typeId; }
+ FeatureDesc getFeatureDesc (void) const { return m_featureDesc; }
+ void** getFeatureTypeNext (void) { return &m_featureType.pNext; }
+ void* getFeatureTypeRaw (void) { return &m_featureType; }
+ FeatureType& getFeatureTypeRef (void) { return m_featureType; }
+
+public:
+ // metadata about feature structure
const FeatureDesc m_featureDesc;
- FeatureType m_featureType;
- FeatureStructWrapper (void)
- : m_featureDesc (VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, DE_NULL, ~0u, 0u)
- {
- deMemset(&m_featureType, 0, sizeof(m_featureType));
- }
-
- FeatureStructWrapper (const FeatureDesc& featureDesc)
- : m_featureDesc (featureDesc)
- {
- deMemset(&m_featureType, 0, sizeof(m_featureType));
- m_featureType.sType = featureDesc.sType;
- }
-
- deUint32 getFeatureTypeId (void) const { return m_featureDesc.typeId; }
- FeatureDesc getFeatureDesc (void) const { return m_featureDesc; }
- void** getFeatureTypeNext (void) { return &m_featureType.pNext; }
- void* getFeatureTypeRaw (void) { return &m_featureType; }
- FeatureType& getFeatureTypeRef (void) { return m_featureType; }
+ // actual vulkan feature structure
+ FeatureType m_featureType;
};
} // vk
#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
#define DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME "not_existent_feature"
#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives"
#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays"
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice16BitStorageFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION, 50); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice8BitStorageFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION, 49); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION, 48); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 47); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0, 46); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION, 45); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION, 44); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION, 43); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCornerSampledImageFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME, VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION, 42); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION, 41); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION, 40); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION, 39); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorIndexingFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION, 38); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExclusiveScissorFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION, 37); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, 36); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION, 35); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION, 34); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceHostQueryResetFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION, 33); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImagelessFramebufferFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION, 32); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION, 31); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, 30); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceLineRasterizationFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION, 29); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, VK_EXT_MEMORY_PRIORITY_SPEC_VERSION, 28); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMeshShaderFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION, 27); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 26); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePerformanceQueryFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION, 25); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION, 24); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 23); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION, 22); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION, 21); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION, 20); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION, 19); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION, 18); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderClockFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, VK_KHR_SHADER_CLOCK_EXTENSION_NAME, VK_KHR_SHADER_CLOCK_SPEC_VERSION, 17); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION, 16); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDrawParametersFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION, 15); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderFloat16Int8FeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION, 14); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION, 13); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION, 12); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION, 11); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShadingRateImageFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION, 10); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION, 9); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION, 8); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION, 7); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION, 6); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION, 5); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVariablePointersFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION, 4); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION, 3); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION, 2); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME, VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION, 1); }
+template<> void initFromBlob<VkPhysicalDevice16BitStorageFeatures>(VkPhysicalDevice16BitStorageFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.storageBuffer16BitAccess = allBlobs.vk11.storageBuffer16BitAccess;
+ featureType.uniformAndStorageBuffer16BitAccess = allBlobs.vk11.uniformAndStorageBuffer16BitAccess;
+ featureType.storagePushConstant16 = allBlobs.vk11.storagePushConstant16;
+ featureType.storageInputOutput16 = allBlobs.vk11.storageInputOutput16;
+}
+template<> void initFromBlob<VkPhysicalDeviceMultiviewFeatures>(VkPhysicalDeviceMultiviewFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.multiview = allBlobs.vk11.multiview;
+ featureType.multiviewGeometryShader = allBlobs.vk11.multiviewGeometryShader;
+ featureType.multiviewTessellationShader = allBlobs.vk11.multiviewTessellationShader;
+}
+template<> void initFromBlob<VkPhysicalDeviceVariablePointersFeatures>(VkPhysicalDeviceVariablePointersFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.variablePointersStorageBuffer = allBlobs.vk11.variablePointersStorageBuffer;
+ featureType.variablePointers = allBlobs.vk11.variablePointers;
+}
+template<> void initFromBlob<VkPhysicalDeviceProtectedMemoryFeatures>(VkPhysicalDeviceProtectedMemoryFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.protectedMemory = allBlobs.vk11.protectedMemory;
+}
+template<> void initFromBlob<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(VkPhysicalDeviceSamplerYcbcrConversionFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.samplerYcbcrConversion = allBlobs.vk11.samplerYcbcrConversion;
+}
+template<> void initFromBlob<VkPhysicalDeviceShaderDrawParametersFeatures>(VkPhysicalDeviceShaderDrawParametersFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.shaderDrawParameters = allBlobs.vk11.shaderDrawParameters;
+}
+template<> void initFromBlob<VkPhysicalDevice8BitStorageFeatures>(VkPhysicalDevice8BitStorageFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.storageBuffer8BitAccess = allBlobs.vk12.storageBuffer8BitAccess;
+ featureType.uniformAndStorageBuffer8BitAccess = allBlobs.vk12.uniformAndStorageBuffer8BitAccess;
+ featureType.storagePushConstant8 = allBlobs.vk12.storagePushConstant8;
+}
+template<> void initFromBlob<VkPhysicalDeviceShaderAtomicInt64Features>(VkPhysicalDeviceShaderAtomicInt64Features& featureType, const AllBlobs& allBlobs)
+{
+ featureType.shaderBufferInt64Atomics = allBlobs.vk12.shaderBufferInt64Atomics;
+ featureType.shaderSharedInt64Atomics = allBlobs.vk12.shaderSharedInt64Atomics;
+}
+template<> void initFromBlob<VkPhysicalDeviceShaderFloat16Int8Features>(VkPhysicalDeviceShaderFloat16Int8Features& featureType, const AllBlobs& allBlobs)
+{
+ featureType.shaderFloat16 = allBlobs.vk12.shaderFloat16;
+ featureType.shaderInt8 = allBlobs.vk12.shaderInt8;
+}
+template<> void initFromBlob<VkPhysicalDeviceDescriptorIndexingFeatures>(VkPhysicalDeviceDescriptorIndexingFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.shaderInputAttachmentArrayDynamicIndexing = allBlobs.vk12.shaderInputAttachmentArrayDynamicIndexing;
+ featureType.shaderUniformTexelBufferArrayDynamicIndexing = allBlobs.vk12.shaderUniformTexelBufferArrayDynamicIndexing;
+ featureType.shaderStorageTexelBufferArrayDynamicIndexing = allBlobs.vk12.shaderStorageTexelBufferArrayDynamicIndexing;
+ featureType.shaderUniformBufferArrayNonUniformIndexing = allBlobs.vk12.shaderUniformBufferArrayNonUniformIndexing;
+ featureType.shaderSampledImageArrayNonUniformIndexing = allBlobs.vk12.shaderSampledImageArrayNonUniformIndexing;
+ featureType.shaderStorageBufferArrayNonUniformIndexing = allBlobs.vk12.shaderStorageBufferArrayNonUniformIndexing;
+ featureType.shaderStorageImageArrayNonUniformIndexing = allBlobs.vk12.shaderStorageImageArrayNonUniformIndexing;
+ featureType.shaderInputAttachmentArrayNonUniformIndexing = allBlobs.vk12.shaderInputAttachmentArrayNonUniformIndexing;
+ featureType.shaderUniformTexelBufferArrayNonUniformIndexing = allBlobs.vk12.shaderUniformTexelBufferArrayNonUniformIndexing;
+ featureType.shaderStorageTexelBufferArrayNonUniformIndexing = allBlobs.vk12.shaderStorageTexelBufferArrayNonUniformIndexing;
+ featureType.descriptorBindingUniformBufferUpdateAfterBind = allBlobs.vk12.descriptorBindingUniformBufferUpdateAfterBind;
+ featureType.descriptorBindingSampledImageUpdateAfterBind = allBlobs.vk12.descriptorBindingSampledImageUpdateAfterBind;
+ featureType.descriptorBindingStorageImageUpdateAfterBind = allBlobs.vk12.descriptorBindingStorageImageUpdateAfterBind;
+ featureType.descriptorBindingStorageBufferUpdateAfterBind = allBlobs.vk12.descriptorBindingStorageBufferUpdateAfterBind;
+ featureType.descriptorBindingUniformTexelBufferUpdateAfterBind = allBlobs.vk12.descriptorBindingUniformTexelBufferUpdateAfterBind;
+ featureType.descriptorBindingStorageTexelBufferUpdateAfterBind = allBlobs.vk12.descriptorBindingStorageTexelBufferUpdateAfterBind;
+ featureType.descriptorBindingUpdateUnusedWhilePending = allBlobs.vk12.descriptorBindingUpdateUnusedWhilePending;
+ featureType.descriptorBindingPartiallyBound = allBlobs.vk12.descriptorBindingPartiallyBound;
+ featureType.descriptorBindingVariableDescriptorCount = allBlobs.vk12.descriptorBindingVariableDescriptorCount;
+ featureType.runtimeDescriptorArray = allBlobs.vk12.runtimeDescriptorArray;
+}
+template<> void initFromBlob<VkPhysicalDeviceScalarBlockLayoutFeatures>(VkPhysicalDeviceScalarBlockLayoutFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.scalarBlockLayout = allBlobs.vk12.scalarBlockLayout;
+}
+template<> void initFromBlob<VkPhysicalDeviceVulkanMemoryModelFeatures>(VkPhysicalDeviceVulkanMemoryModelFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.vulkanMemoryModel = allBlobs.vk12.vulkanMemoryModel;
+ featureType.vulkanMemoryModelDeviceScope = allBlobs.vk12.vulkanMemoryModelDeviceScope;
+ featureType.vulkanMemoryModelAvailabilityVisibilityChains = allBlobs.vk12.vulkanMemoryModelAvailabilityVisibilityChains;
+}
+template<> void initFromBlob<VkPhysicalDeviceImagelessFramebufferFeatures>(VkPhysicalDeviceImagelessFramebufferFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.imagelessFramebuffer = allBlobs.vk12.imagelessFramebuffer;
+}
+template<> void initFromBlob<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(VkPhysicalDeviceUniformBufferStandardLayoutFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.uniformBufferStandardLayout = allBlobs.vk12.uniformBufferStandardLayout;
+}
+template<> void initFromBlob<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.shaderSubgroupExtendedTypes = allBlobs.vk12.shaderSubgroupExtendedTypes;
+}
+template<> void initFromBlob<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.separateDepthStencilLayouts = allBlobs.vk12.separateDepthStencilLayouts;
+}
+template<> void initFromBlob<VkPhysicalDeviceHostQueryResetFeatures>(VkPhysicalDeviceHostQueryResetFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.hostQueryReset = allBlobs.vk12.hostQueryReset;
+}
+template<> void initFromBlob<VkPhysicalDeviceTimelineSemaphoreFeatures>(VkPhysicalDeviceTimelineSemaphoreFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.timelineSemaphore = allBlobs.vk12.timelineSemaphore;
+}
+template<> void initFromBlob<VkPhysicalDeviceBufferDeviceAddressFeatures>(VkPhysicalDeviceBufferDeviceAddressFeatures& featureType, const AllBlobs& allBlobs)
+{
+ featureType.bufferDeviceAddress = allBlobs.vk12.bufferDeviceAddress;
+ featureType.bufferDeviceAddressCaptureReplay = allBlobs.vk12.bufferDeviceAddressCaptureReplay;
+ featureType.bufferDeviceAddressMultiDevice = allBlobs.vk12.bufferDeviceAddressMultiDevice;
+}
+// generic template is not enough for some compilers
+template<> void initFromBlob<VkPhysicalDevicePerformanceQueryFeaturesKHR>(VkPhysicalDevicePerformanceQueryFeaturesKHR&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShaderClockFeaturesKHR>(VkPhysicalDeviceShaderClockFeaturesKHR&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(VkPhysicalDeviceTransformFeedbackFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceCornerSampledImageFeaturesNV>(VkPhysicalDeviceCornerSampledImageFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>(VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceASTCDecodeFeaturesEXT>(VkPhysicalDeviceASTCDecodeFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(VkPhysicalDeviceConditionalRenderingFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(VkPhysicalDeviceDepthClipEnableFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(VkPhysicalDeviceInlineUniformBlockFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>(VkPhysicalDeviceShaderSMBuiltinsFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShadingRateImageFeaturesNV>(VkPhysicalDeviceShadingRateImageFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceMeshShaderFeaturesNV>(VkPhysicalDeviceMeshShaderFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(VkPhysicalDeviceShaderImageFootprintFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceExclusiveScissorFeaturesNV>(VkPhysicalDeviceExclusiveScissorFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(VkPhysicalDeviceFragmentDensityMapFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(VkPhysicalDeviceCoherentMemoryFeaturesAMD&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(VkPhysicalDeviceMemoryPriorityFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(VkPhysicalDeviceCooperativeMatrixFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(VkPhysicalDeviceCoverageReductionModeFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceLineRasterizationFeaturesEXT>(VkPhysicalDeviceLineRasterizationFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(VkPhysicalDeviceIndexTypeUint8FeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&, const AllBlobs&) {}
-static const FeatureStructMapItem featureStructCreatorMap[] =
+
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice16BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION, 51}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice8BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION, 50}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION, 49}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 48}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 47}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0, 46}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION, 45}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION, 44}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION, 43}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCornerSampledImageFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME, VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION, 42}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION, 41}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION, 40}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION, 39}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorIndexingFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION, 38}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExclusiveScissorFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION, 37}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, 36}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION, 35}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION, 34}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceHostQueryResetFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION, 33}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImagelessFramebufferFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION, 32}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION, 31}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, 30}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceLineRasterizationFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION, 29}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, VK_EXT_MEMORY_PRIORITY_SPEC_VERSION, 28}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMeshShaderFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION, 27}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 26}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePerformanceQueryFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION, 25}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION, 24}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 23}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION, 22}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION, 21}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceScalarBlockLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION, 20}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION, 19}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicInt64Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION, 18}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderClockFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, VK_KHR_SHADER_CLOCK_EXTENSION_NAME, VK_KHR_SHADER_CLOCK_SPEC_VERSION, 17}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION, 16}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDrawParametersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION, 15}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderFloat16Int8Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION, 14}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION, 13}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION, 12}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION, 11}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShadingRateImageFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION, 10}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION, 9}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION, 8}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTimelineSemaphoreFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION, 7}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION, 6}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION, 5}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVariablePointersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION, 4}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION, 3}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVulkanMemoryModelFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION, 2}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME, VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION, 1}; }
+
+
+static const FeatureStructCreationData featureStructCreationArray[] =
{
{ createFeatureStructWrapper<VkPhysicalDevice16BitStorageFeatures>, VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDevice8BitStorageFeaturesKHR>, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDevice8BitStorageFeatures>, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceBufferDeviceAddressFeatures>, VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>, VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceCoherentMemoryFeaturesAMD>, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0 },
{ createFeatureStructWrapper<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>, VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceCoverageReductionModeFeaturesNV>, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceDepthClipEnableFeaturesEXT>, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceDescriptorIndexingFeaturesEXT>, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceDescriptorIndexingFeatures>, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceExclusiveScissorFeaturesNV>, VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>, VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceHostQueryResetFeaturesEXT>, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceImagelessFramebufferFeaturesKHR>, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceHostQueryResetFeatures>, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceImagelessFramebufferFeatures>, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>, VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceLineRasterizationFeaturesEXT>, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceProtectedMemoryFeatures>, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0 },
{ createFeatureStructWrapper<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceSamplerYcbcrConversionFeatures>, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT>, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR>, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR>, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceScalarBlockLayoutFeatures>, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceShaderAtomicInt64Features>, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceShaderClockFeaturesKHR>, VK_KHR_SHADER_CLOCK_EXTENSION_NAME, VK_KHR_SHADER_CLOCK_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceShaderDrawParametersFeatures>, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceShaderFloat16Int8FeaturesKHR>, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceShaderFloat16Int8Features>, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceShaderImageFootprintFeaturesNV>, VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceShadingRateImageFeaturesNV>, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR>, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceTimelineSemaphoreFeatures>, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceTransformFeedbackFeaturesEXT>, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR>, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceVariablePointersFeatures>, VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION },
- { createFeatureStructWrapper<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR>, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceVulkanMemoryModelFeatures>, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>, VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME, VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION },
};
+
+bool isPartOfBlobFeatures (VkStructureType sType)
+{
+ const std::vector<VkStructureType> sTypeVect = {
+ // Vulkan11
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
+ // Vulkan12
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
+ };
+ return de::contains(sTypeVect.begin(), sTypeVect.end(), sType);
+}
+
} // vk
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*/
-const vk::VkPhysicalDevice16BitStorageFeatures& get16BitStorageFeatures (void) const;
-const vk::VkPhysicalDevice8BitStorageFeaturesKHR& get8BitStorageFeatures (void) const;
-const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& getBlendOperationAdvancedFeatures (void) const;
-const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& getBufferDeviceAddressFeatures (void) const;
-const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD& getCoherentMemoryFeaturesAMD (void) const;
-const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& getComputeShaderDerivativesFeatures (void) const;
-const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& getConditionalRenderingFeatures (void) const;
-const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV& getCooperativeMatrixFeatures (void) const;
-const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV& getCornerSampledImageFeatures (void) const;
-const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV& getCoverageReductionModeFeatures (void) const;
-const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& getDedicatedAllocationImageAliasingFeatures (void) const;
-const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT& getDepthClipEnableFeatures (void) const;
-const vk::VkPhysicalDeviceDescriptorIndexingFeaturesEXT& getDescriptorIndexingFeatures (void) const;
-const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV& getExclusiveScissorFeatures (void) const;
-const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT& getFragmentDensityMapFeatures (void) const;
-const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& getFragmentShaderBarycentricFeatures (void) const;
-const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& getFragmentShaderInterlockFeatures (void) const;
-const vk::VkPhysicalDeviceHostQueryResetFeaturesEXT& getHostQueryResetFeatures (void) const;
-const vk::VkPhysicalDeviceImagelessFramebufferFeaturesKHR& getImagelessFramebufferFeatures (void) const;
-const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT& getIndexTypeUint8Features (void) const;
-const vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT& getInlineUniformBlockFeatures (void) const;
-const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT& getLineRasterizationFeatures (void) const;
-const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT& getMemoryPriorityFeatures (void) const;
-const vk::VkPhysicalDeviceMeshShaderFeaturesNV& getMeshShaderFeatures (void) const;
-const vk::VkPhysicalDeviceMultiviewFeatures& getMultiviewFeatures (void) const;
-const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR& getPerformanceQueryFeatures (void) const;
-const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& getPipelineExecutablePropertiesFeatures (void) const;
-const vk::VkPhysicalDeviceProtectedMemoryFeatures& getProtectedMemoryFeatures (void) const;
-const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& getRepresentativeFragmentTestFeatures (void) const;
-const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures& getSamplerYcbcrConversionFeatures (void) const;
-const vk::VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& getScalarBlockLayoutFeatures (void) const;
-const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR& getSeparateDepthStencilLayoutsFeatures (void) const;
-const vk::VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& getShaderAtomicInt64Features (void) const;
-const vk::VkPhysicalDeviceShaderClockFeaturesKHR& getShaderClockFeatures (void) const;
-const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& getShaderDemoteToHelperInvocationFeatures (void) const;
-const vk::VkPhysicalDeviceShaderDrawParametersFeatures& getShaderDrawParametersFeatures (void) const;
-const vk::VkPhysicalDeviceShaderFloat16Int8FeaturesKHR& getShaderFloat16Int8Features (void) const;
-const vk::VkPhysicalDeviceShaderImageFootprintFeaturesNV& getShaderImageFootprintFeatures (void) const;
-const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& getShaderIntegerFunctions2FeaturesINTEL (void) const;
-const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR& getShaderSubgroupExtendedTypesFeatures (void) const;
-const vk::VkPhysicalDeviceShadingRateImageFeaturesNV& getShadingRateImageFeatures (void) const;
-const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& getSubgroupSizeControlFeatures (void) const;
-const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& getTexelBufferAlignmentFeatures (void) const;
-const vk::VkPhysicalDeviceTimelineSemaphoreFeaturesKHR& getTimelineSemaphoreFeatures (void) const;
-const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT& getTransformFeedbackFeatures (void) const;
-const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& getUniformBufferStandardLayoutFeatures (void) const;
-const vk::VkPhysicalDeviceVariablePointersFeatures& getVariablePointersFeatures (void) const;
-const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& getVertexAttributeDivisorFeatures (void) const;
-const vk::VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& getVulkanMemoryModelFeatures (void) const;
-const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& getYcbcrImageArraysFeatures (void) const;
+const vk::VkPhysicalDevice16BitStorageFeatures& get16BitStorageFeatures (void) const;
+const vk::VkPhysicalDevice8BitStorageFeatures& get8BitStorageFeatures (void) const;
+const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& getBlendOperationAdvancedFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceBufferDeviceAddressFeatures& getBufferDeviceAddressFeatures (void) const;
+const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& getBufferDeviceAddressFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD& getCoherentMemoryFeaturesAMD (void) const;
+const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& getComputeShaderDerivativesFeatures (void) const;
+const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& getConditionalRenderingFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV& getCooperativeMatrixFeatures (void) const;
+const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV& getCornerSampledImageFeatures (void) const;
+const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV& getCoverageReductionModeFeatures (void) const;
+const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& getDedicatedAllocationImageAliasingFeatures (void) const;
+const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT& getDepthClipEnableFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceDescriptorIndexingFeatures& getDescriptorIndexingFeatures (void) const;
+const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV& getExclusiveScissorFeatures (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT& getFragmentDensityMapFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& getFragmentShaderBarycentricFeatures (void) const;
+const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& getFragmentShaderInterlockFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceHostQueryResetFeatures& getHostQueryResetFeatures (void) const;
+const vk::VkPhysicalDeviceImagelessFramebufferFeatures& getImagelessFramebufferFeatures (void) const;
+const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT& getIndexTypeUint8FeaturesEXT (void) const;
+const vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT& getInlineUniformBlockFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT& getLineRasterizationFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT& getMemoryPriorityFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceMeshShaderFeaturesNV& getMeshShaderFeatures (void) const;
+const vk::VkPhysicalDeviceMultiviewFeatures& getMultiviewFeatures (void) const;
+const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR& getPerformanceQueryFeatures (void) const;
+const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& getPipelineExecutablePropertiesFeatures (void) const;
+const vk::VkPhysicalDeviceProtectedMemoryFeatures& getProtectedMemoryFeatures (void) const;
+const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& getRepresentativeFragmentTestFeatures (void) const;
+const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures& getSamplerYcbcrConversionFeatures (void) const;
+const vk::VkPhysicalDeviceScalarBlockLayoutFeatures& getScalarBlockLayoutFeatures (void) const;
+const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& getSeparateDepthStencilLayoutsFeatures (void) const;
+const vk::VkPhysicalDeviceShaderAtomicInt64Features& getShaderAtomicInt64Features (void) const;
+const vk::VkPhysicalDeviceShaderClockFeaturesKHR& getShaderClockFeatures (void) const;
+const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& getShaderDemoteToHelperInvocationFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceShaderDrawParametersFeatures& getShaderDrawParametersFeatures (void) const;
+const vk::VkPhysicalDeviceShaderFloat16Int8Features& getShaderFloat16Int8Features (void) const;
+const vk::VkPhysicalDeviceShaderImageFootprintFeaturesNV& getShaderImageFootprintFeatures (void) const;
+const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& getShaderIntegerFunctions2FeaturesINTEL (void) const;
+const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& getShaderSubgroupExtendedTypesFeatures (void) const;
+const vk::VkPhysicalDeviceShadingRateImageFeaturesNV& getShadingRateImageFeatures (void) const;
+const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& getSubgroupSizeControlFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& getTexelBufferAlignmentFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceTimelineSemaphoreFeatures& getTimelineSemaphoreFeatures (void) const;
+const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT& getTransformFeedbackFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures& getUniformBufferStandardLayoutFeatures (void) const;
+const vk::VkPhysicalDeviceVariablePointersFeatures& getVariablePointersFeatures (void) const;
+const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& getVertexAttributeDivisorFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceVulkanMemoryModelFeatures& getVulkanMemoryModelFeatures (void) const;
+const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& getYcbcrImageArraysFeaturesEXT (void) const;
* be lost! Modify the generating script instead.
*/
const vk::VkPhysicalDevice16BitStorageFeatures& Context::get16BitStorageFeatures (void) const { return m_device->get16BitStorageFeatures(); }
-const vk::VkPhysicalDevice8BitStorageFeaturesKHR& Context::get8BitStorageFeatures (void) const { return m_device->get8BitStorageFeatures(); }
-const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& Context::getBlendOperationAdvancedFeatures (void) const { return m_device->getBlendOperationAdvancedFeatures(); }
-const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& Context::getBufferDeviceAddressFeatures (void) const { return m_device->getBufferDeviceAddressFeatures(); }
+const vk::VkPhysicalDevice8BitStorageFeatures& Context::get8BitStorageFeatures (void) const { return m_device->get8BitStorageFeatures(); }
+const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& Context::getBlendOperationAdvancedFeaturesEXT (void) const { return m_device->getBlendOperationAdvancedFeaturesEXT(); }
+const vk::VkPhysicalDeviceBufferDeviceAddressFeatures& Context::getBufferDeviceAddressFeatures (void) const { return m_device->getBufferDeviceAddressFeatures(); }
+const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& Context::getBufferDeviceAddressFeaturesEXT (void) const { return m_device->getBufferDeviceAddressFeaturesEXT(); }
const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD& Context::getCoherentMemoryFeaturesAMD (void) const { return m_device->getCoherentMemoryFeaturesAMD(); }
const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& Context::getComputeShaderDerivativesFeatures (void) const { return m_device->getComputeShaderDerivativesFeatures(); }
-const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& Context::getConditionalRenderingFeatures (void) const { return m_device->getConditionalRenderingFeatures(); }
+const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& Context::getConditionalRenderingFeaturesEXT (void) const { return m_device->getConditionalRenderingFeaturesEXT(); }
const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV& Context::getCooperativeMatrixFeatures (void) const { return m_device->getCooperativeMatrixFeatures(); }
const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV& Context::getCornerSampledImageFeatures (void) const { return m_device->getCornerSampledImageFeatures(); }
const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV& Context::getCoverageReductionModeFeatures (void) const { return m_device->getCoverageReductionModeFeatures(); }
const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& Context::getDedicatedAllocationImageAliasingFeatures (void) const { return m_device->getDedicatedAllocationImageAliasingFeatures(); }
-const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT& Context::getDepthClipEnableFeatures (void) const { return m_device->getDepthClipEnableFeatures(); }
-const vk::VkPhysicalDeviceDescriptorIndexingFeaturesEXT& Context::getDescriptorIndexingFeatures (void) const { return m_device->getDescriptorIndexingFeatures(); }
+const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT& Context::getDepthClipEnableFeaturesEXT (void) const { return m_device->getDepthClipEnableFeaturesEXT(); }
+const vk::VkPhysicalDeviceDescriptorIndexingFeatures& Context::getDescriptorIndexingFeatures (void) const { return m_device->getDescriptorIndexingFeatures(); }
const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV& Context::getExclusiveScissorFeatures (void) const { return m_device->getExclusiveScissorFeatures(); }
-const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT& Context::getFragmentDensityMapFeatures (void) const { return m_device->getFragmentDensityMapFeatures(); }
+const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT& Context::getFragmentDensityMapFeaturesEXT (void) const { return m_device->getFragmentDensityMapFeaturesEXT(); }
const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& Context::getFragmentShaderBarycentricFeatures (void) const { return m_device->getFragmentShaderBarycentricFeatures(); }
-const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& Context::getFragmentShaderInterlockFeatures (void) const { return m_device->getFragmentShaderInterlockFeatures(); }
-const vk::VkPhysicalDeviceHostQueryResetFeaturesEXT& Context::getHostQueryResetFeatures (void) const { return m_device->getHostQueryResetFeatures(); }
-const vk::VkPhysicalDeviceImagelessFramebufferFeaturesKHR& Context::getImagelessFramebufferFeatures (void) const { return m_device->getImagelessFramebufferFeatures(); }
-const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT& Context::getIndexTypeUint8Features (void) const { return m_device->getIndexTypeUint8Features(); }
-const vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT& Context::getInlineUniformBlockFeatures (void) const { return m_device->getInlineUniformBlockFeatures(); }
-const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT& Context::getLineRasterizationFeatures (void) const { return m_device->getLineRasterizationFeatures(); }
-const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT& Context::getMemoryPriorityFeatures (void) const { return m_device->getMemoryPriorityFeatures(); }
+const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& Context::getFragmentShaderInterlockFeaturesEXT (void) const { return m_device->getFragmentShaderInterlockFeaturesEXT(); }
+const vk::VkPhysicalDeviceHostQueryResetFeatures& Context::getHostQueryResetFeatures (void) const { return m_device->getHostQueryResetFeatures(); }
+const vk::VkPhysicalDeviceImagelessFramebufferFeatures& Context::getImagelessFramebufferFeatures (void) const { return m_device->getImagelessFramebufferFeatures(); }
+const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT& Context::getIndexTypeUint8FeaturesEXT (void) const { return m_device->getIndexTypeUint8FeaturesEXT(); }
+const vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT& Context::getInlineUniformBlockFeaturesEXT (void) const { return m_device->getInlineUniformBlockFeaturesEXT(); }
+const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT& Context::getLineRasterizationFeaturesEXT (void) const { return m_device->getLineRasterizationFeaturesEXT(); }
+const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT& Context::getMemoryPriorityFeaturesEXT (void) const { return m_device->getMemoryPriorityFeaturesEXT(); }
const vk::VkPhysicalDeviceMeshShaderFeaturesNV& Context::getMeshShaderFeatures (void) const { return m_device->getMeshShaderFeatures(); }
const vk::VkPhysicalDeviceMultiviewFeatures& Context::getMultiviewFeatures (void) const { return m_device->getMultiviewFeatures(); }
const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR& Context::getPerformanceQueryFeatures (void) const { return m_device->getPerformanceQueryFeatures(); }
const vk::VkPhysicalDeviceProtectedMemoryFeatures& Context::getProtectedMemoryFeatures (void) const { return m_device->getProtectedMemoryFeatures(); }
const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& Context::getRepresentativeFragmentTestFeatures (void) const { return m_device->getRepresentativeFragmentTestFeatures(); }
const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures& Context::getSamplerYcbcrConversionFeatures (void) const { return m_device->getSamplerYcbcrConversionFeatures(); }
-const vk::VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& Context::getScalarBlockLayoutFeatures (void) const { return m_device->getScalarBlockLayoutFeatures(); }
-const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR& Context::getSeparateDepthStencilLayoutsFeatures (void) const { return m_device->getSeparateDepthStencilLayoutsFeatures(); }
-const vk::VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& Context::getShaderAtomicInt64Features (void) const { return m_device->getShaderAtomicInt64Features(); }
+const vk::VkPhysicalDeviceScalarBlockLayoutFeatures& Context::getScalarBlockLayoutFeatures (void) const { return m_device->getScalarBlockLayoutFeatures(); }
+const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& Context::getSeparateDepthStencilLayoutsFeatures (void) const { return m_device->getSeparateDepthStencilLayoutsFeatures(); }
+const vk::VkPhysicalDeviceShaderAtomicInt64Features& Context::getShaderAtomicInt64Features (void) const { return m_device->getShaderAtomicInt64Features(); }
const vk::VkPhysicalDeviceShaderClockFeaturesKHR& Context::getShaderClockFeatures (void) const { return m_device->getShaderClockFeatures(); }
-const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& Context::getShaderDemoteToHelperInvocationFeatures (void) const { return m_device->getShaderDemoteToHelperInvocationFeatures(); }
+const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& Context::getShaderDemoteToHelperInvocationFeaturesEXT (void) const { return m_device->getShaderDemoteToHelperInvocationFeaturesEXT(); }
const vk::VkPhysicalDeviceShaderDrawParametersFeatures& Context::getShaderDrawParametersFeatures (void) const { return m_device->getShaderDrawParametersFeatures(); }
-const vk::VkPhysicalDeviceShaderFloat16Int8FeaturesKHR& Context::getShaderFloat16Int8Features (void) const { return m_device->getShaderFloat16Int8Features(); }
+const vk::VkPhysicalDeviceShaderFloat16Int8Features& Context::getShaderFloat16Int8Features (void) const { return m_device->getShaderFloat16Int8Features(); }
const vk::VkPhysicalDeviceShaderImageFootprintFeaturesNV& Context::getShaderImageFootprintFeatures (void) const { return m_device->getShaderImageFootprintFeatures(); }
const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& Context::getShaderIntegerFunctions2FeaturesINTEL (void) const { return m_device->getShaderIntegerFunctions2FeaturesINTEL(); }
-const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR& Context::getShaderSubgroupExtendedTypesFeatures (void) const { return m_device->getShaderSubgroupExtendedTypesFeatures(); }
+const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& Context::getShaderSubgroupExtendedTypesFeatures (void) const { return m_device->getShaderSubgroupExtendedTypesFeatures(); }
const vk::VkPhysicalDeviceShadingRateImageFeaturesNV& Context::getShadingRateImageFeatures (void) const { return m_device->getShadingRateImageFeatures(); }
-const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& Context::getSubgroupSizeControlFeatures (void) const { return m_device->getSubgroupSizeControlFeatures(); }
-const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& Context::getTexelBufferAlignmentFeatures (void) const { return m_device->getTexelBufferAlignmentFeatures(); }
-const vk::VkPhysicalDeviceTimelineSemaphoreFeaturesKHR& Context::getTimelineSemaphoreFeatures (void) const { return m_device->getTimelineSemaphoreFeatures(); }
-const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT& Context::getTransformFeedbackFeatures (void) const { return m_device->getTransformFeedbackFeatures(); }
-const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& Context::getUniformBufferStandardLayoutFeatures (void) const { return m_device->getUniformBufferStandardLayoutFeatures(); }
+const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& Context::getSubgroupSizeControlFeaturesEXT (void) const { return m_device->getSubgroupSizeControlFeaturesEXT(); }
+const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& Context::getTexelBufferAlignmentFeaturesEXT (void) const { return m_device->getTexelBufferAlignmentFeaturesEXT(); }
+const vk::VkPhysicalDeviceTimelineSemaphoreFeatures& Context::getTimelineSemaphoreFeatures (void) const { return m_device->getTimelineSemaphoreFeatures(); }
+const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT& Context::getTransformFeedbackFeaturesEXT (void) const { return m_device->getTransformFeedbackFeaturesEXT(); }
+const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures& Context::getUniformBufferStandardLayoutFeatures (void) const { return m_device->getUniformBufferStandardLayoutFeatures(); }
const vk::VkPhysicalDeviceVariablePointersFeatures& Context::getVariablePointersFeatures (void) const { return m_device->getVariablePointersFeatures(); }
-const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& Context::getVertexAttributeDivisorFeatures (void) const { return m_device->getVertexAttributeDivisorFeatures(); }
-const vk::VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& Context::getVulkanMemoryModelFeatures (void) const { return m_device->getVulkanMemoryModelFeatures(); }
-const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& Context::getYcbcrImageArraysFeatures (void) const { return m_device->getYcbcrImageArraysFeatures(); }
+const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& Context::getVertexAttributeDivisorFeaturesEXT (void) const { return m_device->getVertexAttributeDivisorFeaturesEXT(); }
+const vk::VkPhysicalDeviceVulkanMemoryModelFeatures& Context::getVulkanMemoryModelFeatures (void) const { return m_device->getVulkanMemoryModelFeatures(); }
+const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& Context::getYcbcrImageArraysFeaturesEXT (void) const { return m_device->getYcbcrImageArraysFeaturesEXT(); }
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*/
-const VkPhysicalDevice16BitStorageFeatures& get16BitStorageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice16BitStorageFeatures>(); }
-const VkPhysicalDevice8BitStorageFeaturesKHR& get8BitStorageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice8BitStorageFeaturesKHR>(); }
-const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& getBlendOperationAdvancedFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(); }
-const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& getBufferDeviceAddressFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(); }
-const VkPhysicalDeviceCoherentMemoryFeaturesAMD& getCoherentMemoryFeaturesAMD (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(); }
-const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& getComputeShaderDerivativesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(); }
-const VkPhysicalDeviceConditionalRenderingFeaturesEXT& getConditionalRenderingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(); }
-const VkPhysicalDeviceCooperativeMatrixFeaturesNV& getCooperativeMatrixFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(); }
-const VkPhysicalDeviceCornerSampledImageFeaturesNV& getCornerSampledImageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCornerSampledImageFeaturesNV>(); }
-const VkPhysicalDeviceCoverageReductionModeFeaturesNV& getCoverageReductionModeFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(); }
-const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& getDedicatedAllocationImageAliasingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(); }
-const VkPhysicalDeviceDepthClipEnableFeaturesEXT& getDepthClipEnableFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(); }
-const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& getDescriptorIndexingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDescriptorIndexingFeaturesEXT>(); }
-const VkPhysicalDeviceExclusiveScissorFeaturesNV& getExclusiveScissorFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExclusiveScissorFeaturesNV>(); }
-const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& getFragmentDensityMapFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(); }
-const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& getFragmentShaderBarycentricFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(); }
-const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& getFragmentShaderInterlockFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(); }
-const VkPhysicalDeviceHostQueryResetFeaturesEXT& getHostQueryResetFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceHostQueryResetFeaturesEXT>(); }
-const VkPhysicalDeviceImagelessFramebufferFeaturesKHR& getImagelessFramebufferFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImagelessFramebufferFeaturesKHR>(); }
-const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& getIndexTypeUint8Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(); }
-const VkPhysicalDeviceInlineUniformBlockFeaturesEXT& getInlineUniformBlockFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(); }
-const VkPhysicalDeviceLineRasterizationFeaturesEXT& getLineRasterizationFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>(); }
-const VkPhysicalDeviceMemoryPriorityFeaturesEXT& getMemoryPriorityFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(); }
-const VkPhysicalDeviceMeshShaderFeaturesNV& getMeshShaderFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMeshShaderFeaturesNV>(); }
-const VkPhysicalDeviceMultiviewFeatures& getMultiviewFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiviewFeatures>(); }
-const VkPhysicalDevicePerformanceQueryFeaturesKHR& getPerformanceQueryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>(); }
-const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& getPipelineExecutablePropertiesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(); }
-const VkPhysicalDeviceProtectedMemoryFeatures& getProtectedMemoryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProtectedMemoryFeatures>(); }
-const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& getRepresentativeFragmentTestFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(); }
-const VkPhysicalDeviceSamplerYcbcrConversionFeatures& getSamplerYcbcrConversionFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(); }
-const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& getScalarBlockLayoutFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT>(); }
-const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR& getSeparateDepthStencilLayoutsFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR>(); }
-const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& getShaderAtomicInt64Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR>(); }
-const VkPhysicalDeviceShaderClockFeaturesKHR& getShaderClockFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderClockFeaturesKHR>(); }
-const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& getShaderDemoteToHelperInvocationFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(); }
-const VkPhysicalDeviceShaderDrawParametersFeatures& getShaderDrawParametersFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDrawParametersFeatures>(); }
-const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR& getShaderFloat16Int8Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderFloat16Int8FeaturesKHR>(); }
-const VkPhysicalDeviceShaderImageFootprintFeaturesNV& getShaderImageFootprintFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(); }
-const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& getShaderIntegerFunctions2FeaturesINTEL (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(); }
-const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR& getShaderSubgroupExtendedTypesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>(); }
-const VkPhysicalDeviceShadingRateImageFeaturesNV& getShadingRateImageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShadingRateImageFeaturesNV>(); }
-const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& getSubgroupSizeControlFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(); }
-const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& getTexelBufferAlignmentFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(); }
-const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR& getTimelineSemaphoreFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR>(); }
-const VkPhysicalDeviceTransformFeedbackFeaturesEXT& getTransformFeedbackFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(); }
-const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& getUniformBufferStandardLayoutFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR>(); }
-const VkPhysicalDeviceVariablePointersFeatures& getVariablePointersFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVariablePointersFeatures>(); }
-const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& getVertexAttributeDivisorFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(); }
-const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& getVulkanMemoryModelFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR>(); }
-const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& getYcbcrImageArraysFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(); }
+const VkPhysicalDevice16BitStorageFeatures& get16BitStorageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice16BitStorageFeatures>(); }
+const VkPhysicalDevice8BitStorageFeatures& get8BitStorageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice8BitStorageFeatures>(); }
+const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& getBlendOperationAdvancedFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(); }
+const VkPhysicalDeviceBufferDeviceAddressFeatures& getBufferDeviceAddressFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeatures>(); }
+const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& getBufferDeviceAddressFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(); }
+const VkPhysicalDeviceCoherentMemoryFeaturesAMD& getCoherentMemoryFeaturesAMD (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(); }
+const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& getComputeShaderDerivativesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(); }
+const VkPhysicalDeviceConditionalRenderingFeaturesEXT& getConditionalRenderingFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(); }
+const VkPhysicalDeviceCooperativeMatrixFeaturesNV& getCooperativeMatrixFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(); }
+const VkPhysicalDeviceCornerSampledImageFeaturesNV& getCornerSampledImageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCornerSampledImageFeaturesNV>(); }
+const VkPhysicalDeviceCoverageReductionModeFeaturesNV& getCoverageReductionModeFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(); }
+const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& getDedicatedAllocationImageAliasingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(); }
+const VkPhysicalDeviceDepthClipEnableFeaturesEXT& getDepthClipEnableFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(); }
+const VkPhysicalDeviceDescriptorIndexingFeatures& getDescriptorIndexingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDescriptorIndexingFeatures>(); }
+const VkPhysicalDeviceExclusiveScissorFeaturesNV& getExclusiveScissorFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExclusiveScissorFeaturesNV>(); }
+const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& getFragmentDensityMapFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(); }
+const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& getFragmentShaderBarycentricFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(); }
+const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& getFragmentShaderInterlockFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(); }
+const VkPhysicalDeviceHostQueryResetFeatures& getHostQueryResetFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceHostQueryResetFeatures>(); }
+const VkPhysicalDeviceImagelessFramebufferFeatures& getImagelessFramebufferFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImagelessFramebufferFeatures>(); }
+const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& getIndexTypeUint8FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(); }
+const VkPhysicalDeviceInlineUniformBlockFeaturesEXT& getInlineUniformBlockFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(); }
+const VkPhysicalDeviceLineRasterizationFeaturesEXT& getLineRasterizationFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>(); }
+const VkPhysicalDeviceMemoryPriorityFeaturesEXT& getMemoryPriorityFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(); }
+const VkPhysicalDeviceMeshShaderFeaturesNV& getMeshShaderFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMeshShaderFeaturesNV>(); }
+const VkPhysicalDeviceMultiviewFeatures& getMultiviewFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiviewFeatures>(); }
+const VkPhysicalDevicePerformanceQueryFeaturesKHR& getPerformanceQueryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>(); }
+const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& getPipelineExecutablePropertiesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(); }
+const VkPhysicalDeviceProtectedMemoryFeatures& getProtectedMemoryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProtectedMemoryFeatures>(); }
+const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& getRepresentativeFragmentTestFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(); }
+const VkPhysicalDeviceSamplerYcbcrConversionFeatures& getSamplerYcbcrConversionFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(); }
+const VkPhysicalDeviceScalarBlockLayoutFeatures& getScalarBlockLayoutFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceScalarBlockLayoutFeatures>(); }
+const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& getSeparateDepthStencilLayoutsFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(); }
+const VkPhysicalDeviceShaderAtomicInt64Features& getShaderAtomicInt64Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicInt64Features>(); }
+const VkPhysicalDeviceShaderClockFeaturesKHR& getShaderClockFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderClockFeaturesKHR>(); }
+const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& getShaderDemoteToHelperInvocationFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(); }
+const VkPhysicalDeviceShaderDrawParametersFeatures& getShaderDrawParametersFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDrawParametersFeatures>(); }
+const VkPhysicalDeviceShaderFloat16Int8Features& getShaderFloat16Int8Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderFloat16Int8Features>(); }
+const VkPhysicalDeviceShaderImageFootprintFeaturesNV& getShaderImageFootprintFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(); }
+const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& getShaderIntegerFunctions2FeaturesINTEL (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(); }
+const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& getShaderSubgroupExtendedTypesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(); }
+const VkPhysicalDeviceShadingRateImageFeaturesNV& getShadingRateImageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShadingRateImageFeaturesNV>(); }
+const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& getSubgroupSizeControlFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(); }
+const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& getTexelBufferAlignmentFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(); }
+const VkPhysicalDeviceTimelineSemaphoreFeatures& getTimelineSemaphoreFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTimelineSemaphoreFeatures>(); }
+const VkPhysicalDeviceTransformFeedbackFeaturesEXT& getTransformFeedbackFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(); }
+const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& getUniformBufferStandardLayoutFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(); }
+const VkPhysicalDeviceVariablePointersFeatures& getVariablePointersFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVariablePointersFeatures>(); }
+const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& getVertexAttributeDivisorFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(); }
+const VkPhysicalDeviceVulkanMemoryModelFeatures& getVulkanMemoryModelFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVulkanMemoryModelFeatures>(); }
+const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& getYcbcrImageArraysFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(); }
DestroyDescriptorUpdateTemplateFunc destroyDescriptorUpdateTemplate;
UpdateDescriptorSetWithTemplateFunc updateDescriptorSetWithTemplate;
GetDescriptorSetLayoutSupportFunc getDescriptorSetLayoutSupport;
+CmdDrawIndirectCountFunc cmdDrawIndirectCount;
+CmdDrawIndexedIndirectCountFunc cmdDrawIndexedIndirectCount;
+CreateRenderPass2Func createRenderPass2;
+CmdBeginRenderPass2Func cmdBeginRenderPass2;
+CmdNextSubpass2Func cmdNextSubpass2;
+CmdEndRenderPass2Func cmdEndRenderPass2;
+ResetQueryPoolFunc resetQueryPool;
+GetSemaphoreCounterValueFunc getSemaphoreCounterValue;
+WaitSemaphoresFunc waitSemaphores;
+SignalSemaphoreFunc signalSemaphore;
+GetBufferDeviceAddressFunc getBufferDeviceAddress;
+GetBufferOpaqueCaptureAddressFunc getBufferOpaqueCaptureAddress;
+GetDeviceMemoryOpaqueCaptureAddressFunc getDeviceMemoryOpaqueCaptureAddress;
CreateSwapchainKHRFunc createSwapchainKHR;
DestroySwapchainKHRFunc destroySwapchainKHR;
GetSwapchainImagesKHRFunc getSwapchainImagesKHR;
GetSemaphoreFdKHRFunc getSemaphoreFdKHR;
CmdPushDescriptorSetKHRFunc cmdPushDescriptorSetKHR;
CmdPushDescriptorSetWithTemplateKHRFunc cmdPushDescriptorSetWithTemplateKHR;
-CreateRenderPass2KHRFunc createRenderPass2KHR;
-CmdBeginRenderPass2KHRFunc cmdBeginRenderPass2KHR;
-CmdNextSubpass2KHRFunc cmdNextSubpass2KHR;
-CmdEndRenderPass2KHRFunc cmdEndRenderPass2KHR;
GetSwapchainStatusKHRFunc getSwapchainStatusKHR;
ImportFenceFdKHRFunc importFenceFdKHR;
GetFenceFdKHRFunc getFenceFdKHR;
AcquireProfilingLockKHRFunc acquireProfilingLockKHR;
ReleaseProfilingLockKHRFunc releaseProfilingLockKHR;
-CmdDrawIndirectCountKHRFunc cmdDrawIndirectCountKHR;
-CmdDrawIndexedIndirectCountKHRFunc cmdDrawIndexedIndirectCountKHR;
-GetSemaphoreCounterValueKHRFunc getSemaphoreCounterValueKHR;
-WaitSemaphoresKHRFunc waitSemaphoresKHR;
-SignalSemaphoreKHRFunc signalSemaphoreKHR;
GetPipelineExecutablePropertiesKHRFunc getPipelineExecutablePropertiesKHR;
GetPipelineExecutableStatisticsKHRFunc getPipelineExecutableStatisticsKHR;
GetPipelineExecutableInternalRepresentationsKHRFunc getPipelineExecutableInternalRepresentationsKHR;
SetLocalDimmingAMDFunc setLocalDimmingAMD;
GetBufferDeviceAddressEXTFunc getBufferDeviceAddressEXT;
CmdSetLineStippleEXTFunc cmdSetLineStippleEXT;
-ResetQueryPoolEXTFunc resetQueryPoolEXT;
GetAndroidHardwareBufferPropertiesANDROIDFunc getAndroidHardwareBufferPropertiesANDROID;
GetMemoryAndroidHardwareBufferANDROIDFunc getMemoryAndroidHardwareBufferANDROID;
GetMemoryWin32HandleKHRFunc getMemoryWin32HandleKHR;
--- /dev/null
+/*-------------------------------------------------------------------------
+* Vulkan CTS
+* ----------
+*
+* Copyright (c) 2019 The Khronos Group Inc.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#include "deSTLUtil.hpp"
+#include "deString.h"
+#include "vkQueryUtil.hpp"
+#include "vkDeviceProperties.inl"
+#include "vkDeviceProperties.hpp"
+
+namespace vk
+{
+
+DeviceProperties::DeviceProperties (const InstanceInterface& vki,
+ const deUint32 apiVersion,
+ const VkPhysicalDevice physicalDevice,
+ const std::vector<std::string>& instanceExtensions,
+ const std::vector<std::string>& deviceExtensions)
+{
+ m_coreProperties2 = initVulkanStructure();
+
+ if (isInstanceExtensionSupported(apiVersion, instanceExtensions, "VK_KHR_get_physical_device_properties2"))
+ {
+ const std::vector<VkExtensionProperties> deviceExtensionProperties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+ void** nextPtr = &m_coreProperties2.pNext;
+
+ for (size_t i = 0; i < DE_LENGTH_OF_ARRAY(propertyStructCreatorMap); ++i)
+ {
+ const char* propertyName = propertyStructCreatorMap[i].name;
+
+ if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), propertyName))
+ {
+ PropertyStruct* p = createPropertyStructWrapper(propertyName);
+
+ if (p)
+ {
+ *nextPtr = p->getPropertyTypeRaw();
+ nextPtr = p->getPropertyTypeNext();
+ m_properties.push_back(p);
+ }
+ }
+ }
+
+ vki.getPhysicalDeviceProperties2(physicalDevice, &m_coreProperties2);
+ }
+ else
+ m_coreProperties2.properties = getPhysicalDeviceProperties(vki, physicalDevice);
+}
+
+bool DeviceProperties::contains (const std::string& property, bool throwIfNotExists) const
+{
+ const size_t typesSize = m_properties.size();
+
+ for (size_t typeIdx = 0; typeIdx < typesSize; ++typeIdx)
+ {
+ if (deStringEqual(m_properties[typeIdx]->getPropertyDesc().name, property.c_str()))
+ {
+ return true;
+ }
+ }
+
+ if (throwIfNotExists)
+ {
+ std::string msg("Property " + property + " is not supported");
+
+ TCU_THROW(NotSupportedError, msg);
+ }
+
+ return false;
+}
+
+bool DeviceProperties::isDevicePropertyInitialized (VkStructureType sType) const
+{
+ return findStructureInChain(&m_coreProperties2, sType) != DE_NULL;
+}
+
+DeviceProperties::~DeviceProperties (void)
+{
+ for (size_t i = 0; i < m_properties.size(); ++i)
+ delete m_properties[i];
+
+ m_properties.clear();
+}
+
+PropertyStruct* DeviceProperties::createPropertyStructWrapper (const std::string& s)
+{
+ for (size_t i = 0; i < DE_LENGTH_OF_ARRAY(propertyStructCreatorMap); ++i)
+ {
+ if (deStringEqual(propertyStructCreatorMap[i].name, s.c_str()))
+ return (*propertyStructCreatorMap[i].creator)();
+ }
+
+ return DE_NULL;
+}
+
+} // vk
+
--- /dev/null
+#ifndef _VKDEVICEPROPERTIES_HPP
+#define _VKDEVICEPROPERTIES_HPP
+/*-------------------------------------------------------------------------
+ * Vulkan CTS Framework
+ * --------------------
+ *
+ * Copyright (c) 2019 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief Vulkan DeviceProperties class utility.
+ *//*--------------------------------------------------------------------*/
+
+#include <map>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "deMemory.h"
+#include "vkDefs.hpp"
+
+namespace vk
+{
+
+struct PropertyDesc
+{
+ PropertyDesc (VkStructureType sType_, const char* name_, deUint32 specVersion_, deUint32 typeId_)
+ : name (name_)
+ , sType (sType_)
+ , specVersion (specVersion_)
+ , typeId (typeId_)
+ {}
+
+ const char* name;
+ VkStructureType sType;
+ const deUint32 specVersion;
+ const deUint32 typeId;
+};
+
+struct PropertyStruct
+{
+ virtual deUint32 getPropertyTypeId (void) const = 0;
+ virtual PropertyDesc getPropertyDesc (void) const = 0;
+ virtual void** getPropertyTypeNext (void) = 0;
+ virtual void* getPropertyTypeRaw (void) = 0;
+ virtual ~PropertyStruct (void) {}
+};
+
+
+struct PropertyStructMapItem
+{
+ PropertyStruct* (*creator)(void);
+ const char* name;
+ deUint32 specVersion;
+};
+
+template<class PropertyType> struct PropertyStructWrapper;
+template<class PropertyType> PropertyDesc makePropertyDesc (void);
+
+template<class PropertyType>
+PropertyStruct* createPropertyStructWrapper (void)
+{
+ return new PropertyStructWrapper<PropertyType>(makePropertyDesc<PropertyType>());
+}
+
+class DeviceProperties
+{
+public:
+ DeviceProperties (const InstanceInterface& vki,
+ const deUint32 apiVersion,
+ const VkPhysicalDevice physicalDevice,
+ const std::vector<std::string>& instanceExtensions,
+ const std::vector<std::string>& deviceExtensions);
+
+ ~DeviceProperties (void);
+
+ template<class PropertyType>
+ bool getPropertyType (PropertyType& propertyType) const
+ {
+ typedef PropertyStructWrapper<PropertyType> *PropertyWrapperPtr;
+
+ const VkStructureType sType = makePropertyDesc<PropertyType>().sType;
+ const size_t propCount = m_properties.size();
+
+ for (size_t propIdx = 0; propIdx < propCount; ++propIdx)
+ {
+ if (sType == m_properties[propIdx]->getPropertyDesc().sType)
+ {
+ propertyType = static_cast<PropertyWrapperPtr>(m_properties[propIdx])->getPropertyTypeRef();
+ return true;
+ }
+ }
+ return false;
+ }
+
+ template<class PropertyType>
+ const PropertyType& getPropertyType (void) const
+ {
+ typedef PropertyStructWrapper<PropertyType> *PropertyWrapperPtr;
+
+ const PropertyDesc propDesc = makePropertyDesc<PropertyType>();
+ const VkStructureType sType = propDesc.sType;
+ const size_t propCount = m_properties.size();
+
+ for (size_t propIdx = 0; propIdx < propCount; ++propIdx)
+ {
+ if (sType == m_properties[propIdx]->getPropertyDesc().sType)
+ return static_cast<PropertyWrapperPtr>(m_properties[propIdx])->getPropertyTypeRef();
+ }
+
+ const deUint32 propertyId = propDesc.typeId;
+
+ for (size_t propIdx = 0; propIdx < propCount; ++propIdx)
+ {
+ if (propertyId == m_properties[propIdx]->getPropertyTypeId())
+ return static_cast<PropertyWrapperPtr>(m_properties[propIdx])->getPropertyTypeRef();
+ }
+
+ PropertyStruct* p = vk::createPropertyStructWrapper<PropertyType>();
+ m_properties.push_back(p);
+
+ return static_cast<PropertyWrapperPtr>(p)->getPropertyTypeRef();
+ }
+
+ const VkPhysicalDeviceProperties2& getCoreProperties2 (void) const { return m_coreProperties2; }
+
+ bool contains (const std::string& property, bool throwIfNotExists = false) const;
+
+ bool isDevicePropertyInitialized (VkStructureType sType) const;
+
+private:
+ static PropertyStruct* createPropertyStructWrapper (const std::string& s);
+
+ VkPhysicalDeviceProperties2 m_coreProperties2;
+ mutable std::vector<PropertyStruct*> m_properties;
+};
+
+template<class PropertyType>
+struct PropertyStructWrapper : PropertyStruct
+{
+ const PropertyDesc m_propertyDesc;
+ PropertyType m_propertyType;
+
+ PropertyStructWrapper (void)
+ : m_propertyDesc (VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, DE_NULL, ~0u, 0u)
+ {
+ deMemset(&m_propertyType, 0, sizeof(m_propertyType));
+ }
+
+ PropertyStructWrapper (const PropertyDesc& propertyDesc)
+ : m_propertyDesc (propertyDesc)
+ {
+ deMemset(&m_propertyType, 0, sizeof(m_propertyType));
+ m_propertyType.sType = propertyDesc.sType;
+ }
+
+ deUint32 getPropertyTypeId (void) const { return m_propertyDesc.typeId; }
+ PropertyDesc getPropertyDesc (void) const { return m_propertyDesc; }
+ void** getPropertyTypeNext (void) { return &m_propertyType.pNext; }
+ void* getPropertyTypeRaw (void) { return &m_propertyType; }
+ PropertyType& getPropertyTypeRef (void) { return m_propertyType; }
+};
+
+} // vk
+
+#endif // _VKDEVICEPROPERTIES_HPP
--- /dev/null
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+#include "vkDeviceProperties.hpp"
+
+namespace vk
+{
+#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
+#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
+#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix"
+#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
+#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
+#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
+#define DECL_DRIVER_EXTENSION_NAME "not_existent_property"
+#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
+#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
+#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map"
+#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group"
+#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block"
+#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
+#define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3"
+#define DECL_2_MEMORY_EXTENSION_NAME "not_existent_property"
+#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget"
+#define VK_NV_MESH_SHADER_EXTENSION_NAME "VK_NV_mesh_shader"
+#define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview"
+#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
+#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
+#define DECL_POINT_CLIPPING_EXTENSION_NAME "not_existent_property"
+#define DECL_PROTECTED_MEMORY_EXTENSION_NAME "not_existent_property"
+#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
+#define VK_NV_RAY_TRACING_EXTENSION_NAME "VK_NV_ray_tracing"
+#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
+#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
+#define DECL_AMD_SHADER_CORE_EXTENSION_NAME "not_existent_property"
+#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image"
+#define DECL_SUBGROUP_EXTENSION_NAME "not_existent_property"
+#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
+#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
+#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
+#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback"
+#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
+
+
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION, 34); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION, 33); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceCooperativeMatrixPropertiesNV>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION, 32); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDepthStencilResolveProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION, 31); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDescriptorIndexingProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION, 30); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDiscardRectanglePropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT, VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME, VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION, 29); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDriverProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, DECL_DRIVER_EXTENSION_NAME, 0, 28); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT, VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME, VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION, 27); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFloatControlsProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION, 26); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFragmentDensityMapPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, 25); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceGroupProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, VK_KHR_DEVICE_GROUP_EXTENSION_NAME, VK_KHR_DEVICE_GROUP_SPEC_VERSION, 24); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceInlineUniformBlockPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, 23); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceLineRasterizationPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION, 22); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMaintenance3Properties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, VK_KHR_MAINTENANCE3_EXTENSION_NAME, VK_KHR_MAINTENANCE3_SPEC_VERSION, 21); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMemoryProperties2>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, DECL_2_MEMORY_EXTENSION_NAME, 0, 20); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMemoryBudgetPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT, VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, VK_EXT_MEMORY_BUDGET_SPEC_VERSION, 19); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMeshShaderPropertiesNV>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION, 18); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMultiviewProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 17); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION, 16); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDevicePerformanceQueryPropertiesKHR>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION, 15); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDevicePointClippingProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, DECL_POINT_CLIPPING_EXTENSION_NAME, 0, 14); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceProtectedMemoryProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 13); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDevicePushDescriptorPropertiesKHR>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME, VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION, 12); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceRayTracingPropertiesNV>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV, VK_NV_RAY_TRACING_EXTENSION_NAME, VK_NV_RAY_TRACING_SPEC_VERSION, 11); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSamplerFilterMinmaxProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME, VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION, 10); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSampleLocationsPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT, VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION, 9); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceShaderCorePropertiesAMD>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, DECL_AMD_SHADER_CORE_EXTENSION_NAME, 0, 8); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceShadingRateImagePropertiesNV>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION, 7); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSubgroupProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES, DECL_SUBGROUP_EXTENSION_NAME, 0, 6); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION, 5); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION, 4); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceTimelineSemaphoreProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION, 3); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceTransformFeedbackPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION, 2); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION, 1); }
+
+
+static const PropertyStructMapItem propertyStructCreatorMap[] =
+{
+ { createPropertyStructWrapper<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>, VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceCooperativeMatrixPropertiesNV>, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceDepthStencilResolveProperties>, VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceDescriptorIndexingProperties>, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceDiscardRectanglePropertiesEXT>, VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME, VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceDriverProperties>, DECL_DRIVER_EXTENSION_NAME, 0 },
+ { createPropertyStructWrapper<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>, VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME, VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceFloatControlsProperties>, VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceFragmentDensityMapPropertiesEXT>, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceGroupProperties>, VK_KHR_DEVICE_GROUP_EXTENSION_NAME, VK_KHR_DEVICE_GROUP_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceInlineUniformBlockPropertiesEXT>, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceLineRasterizationPropertiesEXT>, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceMaintenance3Properties>, VK_KHR_MAINTENANCE3_EXTENSION_NAME, VK_KHR_MAINTENANCE3_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceMemoryProperties2>, DECL_2_MEMORY_EXTENSION_NAME, 0 },
+ { createPropertyStructWrapper<VkPhysicalDeviceMemoryBudgetPropertiesEXT>, VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, VK_EXT_MEMORY_BUDGET_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceMeshShaderPropertiesNV>, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceMultiviewProperties>, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDevicePerformanceQueryPropertiesKHR>, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDevicePointClippingProperties>, DECL_POINT_CLIPPING_EXTENSION_NAME, 0 },
+ { createPropertyStructWrapper<VkPhysicalDeviceProtectedMemoryProperties>, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0 },
+ { createPropertyStructWrapper<VkPhysicalDevicePushDescriptorPropertiesKHR>, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME, VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceRayTracingPropertiesNV>, VK_NV_RAY_TRACING_EXTENSION_NAME, VK_NV_RAY_TRACING_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceSamplerFilterMinmaxProperties>, VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME, VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceSampleLocationsPropertiesEXT>, VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceShaderCorePropertiesAMD>, DECL_AMD_SHADER_CORE_EXTENSION_NAME, 0 },
+ { createPropertyStructWrapper<VkPhysicalDeviceShadingRateImagePropertiesNV>, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceSubgroupProperties>, DECL_SUBGROUP_EXTENSION_NAME, 0 },
+ { createPropertyStructWrapper<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceTimelineSemaphoreProperties>, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceTransformFeedbackPropertiesEXT>, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION },
+ { createPropertyStructWrapper<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION },
+};
+} // vk
+
--- /dev/null
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+const vk::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& getBlendOperationAdvancedPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceConservativeRasterizationPropertiesEXT& getConservativeRasterizationPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceCooperativeMatrixPropertiesNV& getCooperativeMatrixProperties (void) const;
+const vk::VkPhysicalDeviceDepthStencilResolveProperties& getDepthStencilResolveProperties (void) const;
+const vk::VkPhysicalDeviceDescriptorIndexingProperties& getDescriptorIndexingProperties (void) const;
+const vk::VkPhysicalDeviceDiscardRectanglePropertiesEXT& getDiscardRectanglePropertiesEXT (void) const;
+const vk::VkPhysicalDeviceDriverProperties& getDriverProperties (void) const;
+const vk::VkPhysicalDeviceExternalMemoryHostPropertiesEXT& getExternalMemoryHostPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceFloatControlsProperties& getFloatControlsProperties (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMapPropertiesEXT& getFragmentDensityMapPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceGroupProperties& getGroupProperties (void) const;
+const vk::VkPhysicalDeviceInlineUniformBlockPropertiesEXT& getInlineUniformBlockPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceLineRasterizationPropertiesEXT& getLineRasterizationPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceMaintenance3Properties& getMaintenance3Properties (void) const;
+const vk::VkPhysicalDeviceMemoryProperties2& getMemoryProperties2 (void) const;
+const vk::VkPhysicalDeviceMemoryBudgetPropertiesEXT& getMemoryBudgetPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceMeshShaderPropertiesNV& getMeshShaderProperties (void) const;
+const vk::VkPhysicalDeviceMultiviewProperties& getMultiviewProperties (void) const;
+const vk::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& getMultiviewPerViewAttributesPropertiesX (void) const;
+const vk::VkPhysicalDevicePerformanceQueryPropertiesKHR& getPerformanceQueryProperties (void) const;
+const vk::VkPhysicalDevicePointClippingProperties& getPointClippingProperties (void) const;
+const vk::VkPhysicalDeviceProtectedMemoryProperties& getProtectedMemoryProperties (void) const;
+const vk::VkPhysicalDevicePushDescriptorPropertiesKHR& getPushDescriptorProperties (void) const;
+const vk::VkPhysicalDeviceRayTracingPropertiesNV& getRayTracingProperties (void) const;
+const vk::VkPhysicalDeviceSamplerFilterMinmaxProperties& getSamplerFilterMinmaxProperties (void) const;
+const vk::VkPhysicalDeviceSampleLocationsPropertiesEXT& getSampleLocationsPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceShaderCorePropertiesAMD& getShaderCorePropertiesAMD (void) const;
+const vk::VkPhysicalDeviceShadingRateImagePropertiesNV& getShadingRateImageProperties (void) const;
+const vk::VkPhysicalDeviceSubgroupProperties& getSubgroupProperties (void) const;
+const vk::VkPhysicalDeviceSubgroupSizeControlPropertiesEXT& getSubgroupSizeControlPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& getTexelBufferAlignmentPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceTimelineSemaphoreProperties& getTimelineSemaphoreProperties (void) const;
+const vk::VkPhysicalDeviceTransformFeedbackPropertiesEXT& getTransformFeedbackPropertiesEXT (void) const;
+const vk::VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& getVertexAttributeDivisorPropertiesEXT (void) const;
--- /dev/null
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+const vk::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& Context::getBlendOperationAdvancedPropertiesEXT (void) const { return m_device->getBlendOperationAdvancedPropertiesEXT(); }
+const vk::VkPhysicalDeviceConservativeRasterizationPropertiesEXT& Context::getConservativeRasterizationPropertiesEXT (void) const { return m_device->getConservativeRasterizationPropertiesEXT(); }
+const vk::VkPhysicalDeviceCooperativeMatrixPropertiesNV& Context::getCooperativeMatrixProperties (void) const { return m_device->getCooperativeMatrixProperties(); }
+const vk::VkPhysicalDeviceDepthStencilResolveProperties& Context::getDepthStencilResolveProperties (void) const { return m_device->getDepthStencilResolveProperties(); }
+const vk::VkPhysicalDeviceDescriptorIndexingProperties& Context::getDescriptorIndexingProperties (void) const { return m_device->getDescriptorIndexingProperties(); }
+const vk::VkPhysicalDeviceDiscardRectanglePropertiesEXT& Context::getDiscardRectanglePropertiesEXT (void) const { return m_device->getDiscardRectanglePropertiesEXT(); }
+const vk::VkPhysicalDeviceDriverProperties& Context::getDriverProperties (void) const { return m_device->getDriverProperties(); }
+const vk::VkPhysicalDeviceExternalMemoryHostPropertiesEXT& Context::getExternalMemoryHostPropertiesEXT (void) const { return m_device->getExternalMemoryHostPropertiesEXT(); }
+const vk::VkPhysicalDeviceFloatControlsProperties& Context::getFloatControlsProperties (void) const { return m_device->getFloatControlsProperties(); }
+const vk::VkPhysicalDeviceFragmentDensityMapPropertiesEXT& Context::getFragmentDensityMapPropertiesEXT (void) const { return m_device->getFragmentDensityMapPropertiesEXT(); }
+const vk::VkPhysicalDeviceGroupProperties& Context::getGroupProperties (void) const { return m_device->getGroupProperties(); }
+const vk::VkPhysicalDeviceInlineUniformBlockPropertiesEXT& Context::getInlineUniformBlockPropertiesEXT (void) const { return m_device->getInlineUniformBlockPropertiesEXT(); }
+const vk::VkPhysicalDeviceLineRasterizationPropertiesEXT& Context::getLineRasterizationPropertiesEXT (void) const { return m_device->getLineRasterizationPropertiesEXT(); }
+const vk::VkPhysicalDeviceMaintenance3Properties& Context::getMaintenance3Properties (void) const { return m_device->getMaintenance3Properties(); }
+const vk::VkPhysicalDeviceMemoryProperties2& Context::getMemoryProperties2 (void) const { return m_device->getMemoryProperties2(); }
+const vk::VkPhysicalDeviceMemoryBudgetPropertiesEXT& Context::getMemoryBudgetPropertiesEXT (void) const { return m_device->getMemoryBudgetPropertiesEXT(); }
+const vk::VkPhysicalDeviceMeshShaderPropertiesNV& Context::getMeshShaderProperties (void) const { return m_device->getMeshShaderProperties(); }
+const vk::VkPhysicalDeviceMultiviewProperties& Context::getMultiviewProperties (void) const { return m_device->getMultiviewProperties(); }
+const vk::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& Context::getMultiviewPerViewAttributesPropertiesX (void) const { return m_device->getMultiviewPerViewAttributesPropertiesX(); }
+const vk::VkPhysicalDevicePerformanceQueryPropertiesKHR& Context::getPerformanceQueryProperties (void) const { return m_device->getPerformanceQueryProperties(); }
+const vk::VkPhysicalDevicePointClippingProperties& Context::getPointClippingProperties (void) const { return m_device->getPointClippingProperties(); }
+const vk::VkPhysicalDeviceProtectedMemoryProperties& Context::getProtectedMemoryProperties (void) const { return m_device->getProtectedMemoryProperties(); }
+const vk::VkPhysicalDevicePushDescriptorPropertiesKHR& Context::getPushDescriptorProperties (void) const { return m_device->getPushDescriptorProperties(); }
+const vk::VkPhysicalDeviceRayTracingPropertiesNV& Context::getRayTracingProperties (void) const { return m_device->getRayTracingProperties(); }
+const vk::VkPhysicalDeviceSamplerFilterMinmaxProperties& Context::getSamplerFilterMinmaxProperties (void) const { return m_device->getSamplerFilterMinmaxProperties(); }
+const vk::VkPhysicalDeviceSampleLocationsPropertiesEXT& Context::getSampleLocationsPropertiesEXT (void) const { return m_device->getSampleLocationsPropertiesEXT(); }
+const vk::VkPhysicalDeviceShaderCorePropertiesAMD& Context::getShaderCorePropertiesAMD (void) const { return m_device->getShaderCorePropertiesAMD(); }
+const vk::VkPhysicalDeviceShadingRateImagePropertiesNV& Context::getShadingRateImageProperties (void) const { return m_device->getShadingRateImageProperties(); }
+const vk::VkPhysicalDeviceSubgroupProperties& Context::getSubgroupProperties (void) const { return m_device->getSubgroupProperties(); }
+const vk::VkPhysicalDeviceSubgroupSizeControlPropertiesEXT& Context::getSubgroupSizeControlPropertiesEXT (void) const { return m_device->getSubgroupSizeControlPropertiesEXT(); }
+const vk::VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& Context::getTexelBufferAlignmentPropertiesEXT (void) const { return m_device->getTexelBufferAlignmentPropertiesEXT(); }
+const vk::VkPhysicalDeviceTimelineSemaphoreProperties& Context::getTimelineSemaphoreProperties (void) const { return m_device->getTimelineSemaphoreProperties(); }
+const vk::VkPhysicalDeviceTransformFeedbackPropertiesEXT& Context::getTransformFeedbackPropertiesEXT (void) const { return m_device->getTransformFeedbackPropertiesEXT(); }
+const vk::VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& Context::getVertexAttributeDivisorPropertiesEXT (void) const { return m_device->getVertexAttributeDivisorPropertiesEXT(); }
--- /dev/null
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& getBlendOperationAdvancedPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>(); }
+const VkPhysicalDeviceConservativeRasterizationPropertiesEXT& getConservativeRasterizationPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>(); }
+const VkPhysicalDeviceCooperativeMatrixPropertiesNV& getCooperativeMatrixProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceCooperativeMatrixPropertiesNV>(); }
+const VkPhysicalDeviceDepthStencilResolveProperties& getDepthStencilResolveProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceDepthStencilResolveProperties>(); }
+const VkPhysicalDeviceDescriptorIndexingProperties& getDescriptorIndexingProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceDescriptorIndexingProperties>(); }
+const VkPhysicalDeviceDiscardRectanglePropertiesEXT& getDiscardRectanglePropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceDiscardRectanglePropertiesEXT>(); }
+const VkPhysicalDeviceDriverProperties& getDriverProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceDriverProperties>(); }
+const VkPhysicalDeviceExternalMemoryHostPropertiesEXT& getExternalMemoryHostPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>(); }
+const VkPhysicalDeviceFloatControlsProperties& getFloatControlsProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceFloatControlsProperties>(); }
+const VkPhysicalDeviceFragmentDensityMapPropertiesEXT& getFragmentDensityMapPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceFragmentDensityMapPropertiesEXT>(); }
+const VkPhysicalDeviceGroupProperties& getGroupProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceGroupProperties>(); }
+const VkPhysicalDeviceInlineUniformBlockPropertiesEXT& getInlineUniformBlockPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceInlineUniformBlockPropertiesEXT>(); }
+const VkPhysicalDeviceLineRasterizationPropertiesEXT& getLineRasterizationPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceLineRasterizationPropertiesEXT>(); }
+const VkPhysicalDeviceMaintenance3Properties& getMaintenance3Properties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMaintenance3Properties>(); }
+const VkPhysicalDeviceMemoryProperties2& getMemoryProperties2 (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMemoryProperties2>(); }
+const VkPhysicalDeviceMemoryBudgetPropertiesEXT& getMemoryBudgetPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMemoryBudgetPropertiesEXT>(); }
+const VkPhysicalDeviceMeshShaderPropertiesNV& getMeshShaderProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMeshShaderPropertiesNV>(); }
+const VkPhysicalDeviceMultiviewProperties& getMultiviewProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMultiviewProperties>(); }
+const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& getMultiviewPerViewAttributesPropertiesX (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>(); }
+const VkPhysicalDevicePerformanceQueryPropertiesKHR& getPerformanceQueryProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDevicePerformanceQueryPropertiesKHR>(); }
+const VkPhysicalDevicePointClippingProperties& getPointClippingProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDevicePointClippingProperties>(); }
+const VkPhysicalDeviceProtectedMemoryProperties& getProtectedMemoryProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceProtectedMemoryProperties>(); }
+const VkPhysicalDevicePushDescriptorPropertiesKHR& getPushDescriptorProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDevicePushDescriptorPropertiesKHR>(); }
+const VkPhysicalDeviceRayTracingPropertiesNV& getRayTracingProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceRayTracingPropertiesNV>(); }
+const VkPhysicalDeviceSamplerFilterMinmaxProperties& getSamplerFilterMinmaxProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceSamplerFilterMinmaxProperties>(); }
+const VkPhysicalDeviceSampleLocationsPropertiesEXT& getSampleLocationsPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceSampleLocationsPropertiesEXT>(); }
+const VkPhysicalDeviceShaderCorePropertiesAMD& getShaderCorePropertiesAMD (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceShaderCorePropertiesAMD>(); }
+const VkPhysicalDeviceShadingRateImagePropertiesNV& getShadingRateImageProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceShadingRateImagePropertiesNV>(); }
+const VkPhysicalDeviceSubgroupProperties& getSubgroupProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceSubgroupProperties>(); }
+const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT& getSubgroupSizeControlPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>(); }
+const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& getTexelBufferAlignmentPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>(); }
+const VkPhysicalDeviceTimelineSemaphoreProperties& getTimelineSemaphoreProperties (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceTimelineSemaphoreProperties>(); }
+const VkPhysicalDeviceTransformFeedbackPropertiesEXT& getTransformFeedbackPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceTransformFeedbackPropertiesEXT>(); }
+const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& getVertexAttributeDivisorPropertiesEXT (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>(); }
functions.push_back("vkWaitSemaphoresKHR");
functions.push_back("vkSignalSemaphoreKHR");
}
+ else if (extName == "VK_KHR_buffer_device_address")
+ {
+ functions.push_back("vkGetBufferDeviceAddressKHR");
+ functions.push_back("vkGetBufferOpaqueCaptureAddressKHR");
+ functions.push_back("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
+ }
else if (extName == "VK_KHR_pipeline_executable_properties")
{
functions.push_back("vkGetPipelineExecutablePropertiesKHR");
"VK_KHR_maintenance3",
"VK_KHR_draw_indirect_count",
"VK_KHR_timeline_semaphore",
+ "VK_KHR_buffer_device_address",
"VK_KHR_pipeline_executable_properties",
"VK_EXT_debug_marker",
"VK_EXT_transform_feedback",
typedef VKAPI_ATTR void (VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesFunc) (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
typedef VKAPI_ATTR void (VKAPI_CALL* GetPhysicalDeviceExternalSemaphorePropertiesFunc) (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
typedef VKAPI_ATTR void (VKAPI_CALL* GetDescriptorSetLayoutSupportFunc) (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawIndirectCountFunc) (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawIndexedIndirectCountFunc) (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR VkResult (VKAPI_CALL* CreateRenderPass2Func) (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdBeginRenderPass2Func) (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdNextSubpass2Func) (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdEndRenderPass2Func) (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef VKAPI_ATTR void (VKAPI_CALL* ResetQueryPoolFunc) (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
+typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetSemaphoreCounterValueFunc) (VkDevice device, VkSemaphore semaphore, deUint64* pValue);
+typedef VKAPI_ATTR VkResult (VKAPI_CALL* WaitSemaphoresFunc) (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VKAPI_ATTR VkResult (VKAPI_CALL* SignalSemaphoreFunc) (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+typedef VKAPI_ATTR VkDeviceAddress (VKAPI_CALL* GetBufferDeviceAddressFunc) (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR uint64_t (VKAPI_CALL* GetBufferOpaqueCaptureAddressFunc) (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR uint64_t (VKAPI_CALL* GetDeviceMemoryOpaqueCaptureAddressFunc) (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
typedef VKAPI_ATTR void (VKAPI_CALL* DestroySurfaceKHRFunc) (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPhysicalDeviceSurfaceSupportKHRFunc) (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilitiesKHRFunc) (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* CreateDescriptorUpdateTemplateKHRFunc) (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
typedef VKAPI_ATTR void (VKAPI_CALL* DestroyDescriptorUpdateTemplateKHRFunc) (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR void (VKAPI_CALL* UpdateDescriptorSetWithTemplateKHRFunc) (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
-typedef VKAPI_ATTR VkResult (VKAPI_CALL* CreateRenderPass2KHRFunc) (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef VKAPI_ATTR void (VKAPI_CALL* CmdBeginRenderPass2KHRFunc) (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
-typedef VKAPI_ATTR void (VKAPI_CALL* CmdNextSubpass2KHRFunc) (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo);
-typedef VKAPI_ATTR void (VKAPI_CALL* CmdEndRenderPass2KHRFunc) (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo);
+typedef VKAPI_ATTR VkResult (VKAPI_CALL* CreateRenderPass2KHRFunc) (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdBeginRenderPass2KHRFunc) (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdNextSubpass2KHRFunc) (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdEndRenderPass2KHRFunc) (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetSwapchainStatusKHRFunc) (VkDevice device, VkSwapchainKHR swapchain);
typedef VKAPI_ATTR void (VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesKHRFunc) (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* ImportFenceFdKHRFunc) (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawIndirectCountKHRFunc) (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawIndexedIndirectCountKHRFunc) (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetSemaphoreCounterValueKHRFunc) (VkDevice device, VkSemaphore semaphore, deUint64* pValue);
-typedef VKAPI_ATTR VkResult (VKAPI_CALL* WaitSemaphoresKHRFunc) (VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout);
-typedef VKAPI_ATTR VkResult (VKAPI_CALL* SignalSemaphoreKHRFunc) (VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo);
+typedef VKAPI_ATTR VkResult (VKAPI_CALL* WaitSemaphoresKHRFunc) (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VKAPI_ATTR VkResult (VKAPI_CALL* SignalSemaphoreKHRFunc) (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+typedef VKAPI_ATTR VkDeviceAddress (VKAPI_CALL* GetBufferDeviceAddressKHRFunc) (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR uint64_t (VKAPI_CALL* GetBufferOpaqueCaptureAddressKHRFunc) (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR uint64_t (VKAPI_CALL* GetDeviceMemoryOpaqueCaptureAddressKHRFunc) (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPipelineExecutablePropertiesKHRFunc) (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPipelineExecutableStatisticsKHRFunc) (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPipelineExecutableInternalRepresentationsKHRFunc) (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* QueueSetPerformanceConfigurationINTELFunc) (VkQueue queue, VkPerformanceConfigurationINTEL configuration);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPerformanceParameterINTELFunc) (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue);
typedef VKAPI_ATTR void (VKAPI_CALL* SetLocalDimmingAMDFunc) (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable);
-typedef VKAPI_ATTR VkDeviceAddress (VKAPI_CALL* GetBufferDeviceAddressEXTFunc) (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo);
+typedef VKAPI_ATTR VkDeviceAddress (VKAPI_CALL* GetBufferDeviceAddressEXTFunc) (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc) (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVFunc) (VkPhysicalDevice physicalDevice, deUint32* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* CreateHeadlessSurfaceEXTFunc) (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
}
-template<> VkStructureType getStructureType<VkSwapchainCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan11Features> (void)
{
- return VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
}
-template<> VkStructureType getStructureType<VkPresentInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan11Properties> (void)
{
- return VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;
}
-template<> VkStructureType getStructureType<VkImageSwapchainCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan12Features> (void)
{
- return VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
}
-template<> VkStructureType getStructureType<VkBindImageMemorySwapchainInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan12Properties> (void)
{
- return VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;
}
-template<> VkStructureType getStructureType<VkAcquireNextImageInfoKHR> (void)
+template<> VkStructureType getStructureType<VkImageFormatListCreateInfo> (void)
{
- return VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO;
}
-template<> VkStructureType getStructureType<VkDeviceGroupPresentCapabilitiesKHR> (void)
+template<> VkStructureType getStructureType<VkAttachmentDescription2> (void)
{
- return VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR;
+ return VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
}
-template<> VkStructureType getStructureType<VkDeviceGroupPresentInfoKHR> (void)
+template<> VkStructureType getStructureType<VkAttachmentReference2> (void)
{
- return VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR;
+ return VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2;
}
-template<> VkStructureType getStructureType<VkDeviceGroupSwapchainCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSubpassDescription2> (void)
{
- return VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2;
}
-template<> VkStructureType getStructureType<VkDisplayModeCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSubpassDependency2> (void)
{
- return VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2;
}
-template<> VkStructureType getStructureType<VkDisplaySurfaceCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkRenderPassCreateInfo2> (void)
{
- return VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2;
}
-template<> VkStructureType getStructureType<VkDisplayPresentInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSubpassBeginInfo> (void)
{
- return VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR;
+ return VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO;
}
-template<> VkStructureType getStructureType<VkImportMemoryFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSubpassEndInfo> (void)
{
- return VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR;
+ return VK_STRUCTURE_TYPE_SUBPASS_END_INFO;
}
-template<> VkStructureType getStructureType<VkMemoryFdPropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDevice8BitStorageFeatures> (void)
{
- return VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
}
-template<> VkStructureType getStructureType<VkMemoryGetFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceDriverProperties> (void)
{
- return VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;
}
-template<> VkStructureType getStructureType<VkImportSemaphoreFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderAtomicInt64Features> (void)
{
- return VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
}
-template<> VkStructureType getStructureType<VkSemaphoreGetFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderFloat16Int8Features> (void)
{
- return VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
}
-template<> VkStructureType getStructureType<VkPhysicalDevicePushDescriptorPropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceFloatControlsProperties> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceShaderFloat16Int8FeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkDescriptorSetLayoutBindingFlagsCreateInfo> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;
}
-template<> VkStructureType getStructureType<VkPresentRegionsKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceDescriptorIndexingFeatures> (void)
{
- return VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceImagelessFramebufferFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceDescriptorIndexingProperties> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
}
-template<> VkStructureType getStructureType<VkFramebufferAttachmentImageInfoKHR> (void)
+template<> VkStructureType getStructureType<VkDescriptorSetVariableDescriptorCountAllocateInfo> (void)
{
- return VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO;
}
-template<> VkStructureType getStructureType<VkFramebufferAttachmentsCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkDescriptorSetVariableDescriptorCountLayoutSupport> (void)
{
- return VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT;
}
-template<> VkStructureType getStructureType<VkRenderPassAttachmentBeginInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSubpassDescriptionDepthStencilResolve> (void)
{
- return VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR;
+ return VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;
}
-template<> VkStructureType getStructureType<VkAttachmentDescription2KHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceDepthStencilResolveProperties> (void)
{
- return VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
}
-template<> VkStructureType getStructureType<VkAttachmentReference2KHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceScalarBlockLayoutFeatures> (void)
{
- return VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
}
-template<> VkStructureType getStructureType<VkSubpassDescription2KHR> (void)
+template<> VkStructureType getStructureType<VkImageStencilUsageCreateInfo> (void)
{
- return VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR;
+ return VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO;
}
-template<> VkStructureType getStructureType<VkSubpassDependency2KHR> (void)
+template<> VkStructureType getStructureType<VkSamplerReductionModeCreateInfo> (void)
{
- return VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR;
+ return VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO;
}
-template<> VkStructureType getStructureType<VkRenderPassCreateInfo2KHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceSamplerFilterMinmaxProperties> (void)
{
- return VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
}
-template<> VkStructureType getStructureType<VkSubpassBeginInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceVulkanMemoryModelFeatures> (void)
{
- return VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES;
}
-template<> VkStructureType getStructureType<VkSubpassEndInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceImagelessFramebufferFeatures> (void)
{
- return VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;
}
-template<> VkStructureType getStructureType<VkSharedPresentSurfaceCapabilitiesKHR> (void)
+template<> VkStructureType getStructureType<VkFramebufferAttachmentImageInfo> (void)
{
- return VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;
+ return VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO;
}
-template<> VkStructureType getStructureType<VkImportFenceFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkFramebufferAttachmentsCreateInfo> (void)
{
- return VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR;
+ return VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO;
}
-template<> VkStructureType getStructureType<VkFenceGetFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkRenderPassAttachmentBeginInfo> (void)
{
- return VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR;
+ return VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO;
}
-template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;
}
-template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceQueryPropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
}
-template<> VkStructureType getStructureType<VkPerformanceCounterKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures> (void)
{
- return VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
}
-template<> VkStructureType getStructureType<VkPerformanceCounterDescriptionKHR> (void)
+template<> VkStructureType getStructureType<VkAttachmentReferenceStencilLayout> (void)
{
- return VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR;
+ return VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT;
}
-template<> VkStructureType getStructureType<VkQueryPoolPerformanceCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkAttachmentDescriptionStencilLayout> (void)
{
- return VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT;
}
-template<> VkStructureType getStructureType<VkAcquireProfilingLockInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceHostQueryResetFeatures> (void)
{
- return VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
}
-template<> VkStructureType getStructureType<VkPerformanceQuerySubmitInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceTimelineSemaphoreFeatures> (void)
{
- return VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceSurfaceInfo2KHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceTimelineSemaphoreProperties> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
}
-template<> VkStructureType getStructureType<VkSurfaceCapabilities2KHR> (void)
+template<> VkStructureType getStructureType<VkSemaphoreTypeCreateInfo> (void)
{
- return VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR;
+ return VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO;
}
-template<> VkStructureType getStructureType<VkSurfaceFormat2KHR> (void)
+template<> VkStructureType getStructureType<VkTimelineSemaphoreSubmitInfo> (void)
{
- return VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR;
+ return VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;
}
-template<> VkStructureType getStructureType<VkDisplayProperties2KHR> (void)
+template<> VkStructureType getStructureType<VkSemaphoreWaitInfo> (void)
{
- return VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR;
+ return VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO;
}
-template<> VkStructureType getStructureType<VkDisplayPlaneProperties2KHR> (void)
+template<> VkStructureType getStructureType<VkSemaphoreSignalInfo> (void)
{
- return VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR;
+ return VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO;
}
-template<> VkStructureType getStructureType<VkDisplayModeProperties2KHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceBufferDeviceAddressFeatures> (void)
{
- return VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
}
-template<> VkStructureType getStructureType<VkDisplayPlaneInfo2KHR> (void)
+template<> VkStructureType getStructureType<VkBufferDeviceAddressInfo> (void)
{
- return VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR;
+ return VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO;
}
-template<> VkStructureType getStructureType<VkDisplayPlaneCapabilities2KHR> (void)
+template<> VkStructureType getStructureType<VkBufferOpaqueCaptureAddressCreateInfo> (void)
{
- return VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR;
+ return VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO;
+}
+
+template<> VkStructureType getStructureType<VkMemoryOpaqueCaptureAddressAllocateInfo> (void)
+{
+ return VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO;
+}
+
+template<> VkStructureType getStructureType<VkDeviceMemoryOpaqueCaptureAddressInfo> (void)
+{
+ return VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO;
}
-template<> VkStructureType getStructureType<VkImageFormatListCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSwapchainCreateInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkPresentInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDevice8BitStorageFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkImageSwapchainCreateInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkBindImageMemorySwapchainInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkAcquireNextImageInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDeviceGroupPresentCapabilitiesKHR> (void)
+{
+ return VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceDriverPropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkDeviceGroupPresentInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR;
+ return VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceFloatControlsPropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkDeviceGroupSwapchainCreateInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR;
+ return VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkSubpassDescriptionDepthStencilResolveKHR> (void)
+template<> VkStructureType getStructureType<VkDisplayModeCreateInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR;
+ return VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceDepthStencilResolvePropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkDisplaySurfaceCreateInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR;
+ return VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkDisplayPresentInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceTimelineSemaphorePropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkImportMemoryFdInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR;
+ return VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkSemaphoreTypeCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkMemoryFdPropertiesKHR> (void)
{
- return VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR;
+ return VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR;
}
-template<> VkStructureType getStructureType<VkTimelineSemaphoreSubmitInfoKHR> (void)
+template<> VkStructureType getStructureType<VkMemoryGetFdInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR;
+ return VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkSemaphoreWaitInfoKHR> (void)
+template<> VkStructureType getStructureType<VkImportSemaphoreFdInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR;
+ return VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkSemaphoreSignalInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSemaphoreGetFdInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR;
+ return VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDevicePushDescriptorPropertiesKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR;
}
-template<> VkStructureType getStructureType<VkSurfaceProtectedCapabilitiesKHR> (void)
+template<> VkStructureType getStructureType<VkPresentRegionsKHR> (void)
{
- return VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR;
+ return VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkSharedPresentSurfaceCapabilitiesKHR> (void)
+{
+ return VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkImportFenceFdInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkAttachmentReferenceStencilLayoutKHR> (void)
+template<> VkStructureType getStructureType<VkFenceGetFdInfoKHR> (void)
{
- return VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR;
+ return VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR;
}
-template<> VkStructureType getStructureType<VkAttachmentDescriptionStencilLayoutKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR> (void)
{
- return VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceQueryPropertiesKHR> (void)
{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR;
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceCounterKHR> (void)
+{
+ return VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceCounterDescriptionKHR> (void)
+{
+ return VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR;
+}
+
+template<> VkStructureType getStructureType<VkQueryPoolPerformanceCreateInfoKHR> (void)
+{
+ return VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAcquireProfilingLockInfoKHR> (void)
+{
+ return VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceQuerySubmitInfoKHR> (void)
+{
+ return VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceSurfaceInfo2KHR> (void)
+{
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkSurfaceCapabilities2KHR> (void)
+{
+ return VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkSurfaceFormat2KHR> (void)
+{
+ return VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDisplayProperties2KHR> (void)
+{
+ return VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDisplayPlaneProperties2KHR> (void)
+{
+ return VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDisplayModeProperties2KHR> (void)
+{
+ return VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDisplayPlaneInfo2KHR> (void)
+{
+ return VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDisplayPlaneCapabilities2KHR> (void)
+{
+ return VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR> (void)
+{
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkSurfaceProtectedCapabilitiesKHR> (void)
+{
+ return VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR;
}
template<> VkStructureType getStructureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR> (void)
return VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
}
-template<> VkStructureType getStructureType<VkSamplerReductionModeCreateInfoEXT> (void)
-{
- return VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT;
-}
-
-template<> VkStructureType getStructureType<VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT> (void)
-{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT;
-}
-
template<> VkStructureType getStructureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT> (void)
{
return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT;
return VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT;
}
-template<> VkStructureType getStructureType<VkDescriptorSetLayoutBindingFlagsCreateInfoEXT> (void)
-{
- return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT;
-}
-
-template<> VkStructureType getStructureType<VkPhysicalDeviceDescriptorIndexingFeaturesEXT> (void)
-{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT;
-}
-
-template<> VkStructureType getStructureType<VkPhysicalDeviceDescriptorIndexingPropertiesEXT> (void)
-{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT;
-}
-
-template<> VkStructureType getStructureType<VkDescriptorSetVariableDescriptorCountAllocateInfoEXT> (void)
-{
- return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT;
-}
-
-template<> VkStructureType getStructureType<VkDescriptorSetVariableDescriptorCountLayoutSupportEXT> (void)
-{
- return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT;
-}
-
template<> VkStructureType getStructureType<VkPipelineViewportShadingRateImageStateCreateInfoNV> (void)
{
return VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV;
return VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT> (void)
-{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT;
-}
-
template<> VkStructureType getStructureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT> (void)
{
return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT;
return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
}
-template<> VkStructureType getStructureType<VkBufferDeviceAddressInfoEXT> (void)
-{
- return VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT;
-}
-
template<> VkStructureType getStructureType<VkBufferDeviceAddressCreateInfoEXT> (void)
{
return VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT;
}
-template<> VkStructureType getStructureType<VkImageStencilUsageCreateInfoEXT> (void)
-{
- return VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT;
-}
-
template<> VkStructureType getStructureType<VkValidationFeaturesEXT> (void)
{
return VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;
return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT;
}
-template<> VkStructureType getStructureType<VkPhysicalDeviceHostQueryResetFeaturesEXT> (void)
-{
- return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT;
-}
-
template<> VkStructureType getStructureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT> (void)
{
return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT;
{
case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT:
{
- const VkSamplerReductionModeCreateInfoEXT reductionModeCreateInfo = *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(pNext);
+ const VkSamplerReductionModeCreateInfo reductionModeCreateInfo = *reinterpret_cast<const VkSamplerReductionModeCreateInfo*>(pNext);
reductionMode = mapVkSamplerReductionMode(reductionModeCreateInfo.reductionMode);
- pNext = reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(pNext)->pNext;
+ pNext = reinterpret_cast<const VkSamplerReductionModeCreateInfo*>(pNext)->pNext;
break;
}
case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
return tcu::Sampler::WRAPMODE_LAST;
}
-tcu::Sampler::ReductionMode mapVkSamplerReductionMode (VkSamplerReductionModeEXT reductionMode)
+tcu::Sampler::ReductionMode mapVkSamplerReductionMode (VkSamplerReductionMode reductionMode)
{
switch (reductionMode)
{
- case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT: return tcu::Sampler::WEIGHTED_AVERAGE;
- case VK_SAMPLER_REDUCTION_MODE_MIN_EXT: return tcu::Sampler::MIN;
- case VK_SAMPLER_REDUCTION_MODE_MAX_EXT: return tcu::Sampler::MAX;
+ case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE: return tcu::Sampler::WEIGHTED_AVERAGE;
+ case VK_SAMPLER_REDUCTION_MODE_MIN: return tcu::Sampler::MIN;
+ case VK_SAMPLER_REDUCTION_MODE_MAX: return tcu::Sampler::MAX;
default:
break;
}
tcu::Sampler mapVkSampler (const VkSamplerCreateInfo& samplerCreateInfo);
tcu::Sampler::CompareMode mapVkSamplerCompareOp (VkCompareOp compareOp);
tcu::Sampler::WrapMode mapVkSamplerAddressMode (VkSamplerAddressMode addressMode);
-tcu::Sampler::ReductionMode mapVkSamplerReductionMode (VkSamplerReductionModeEXT reductionMode);
+tcu::Sampler::ReductionMode mapVkSamplerReductionMode (VkSamplerReductionMode reductionMode);
tcu::Sampler::FilterMode mapVkMinTexFilter (VkFilter filter, VkSamplerMipmapMode mipMode);
tcu::Sampler::FilterMode mapVkMagTexFilter (VkFilter filter);
m_vk.getDescriptorSetLayoutSupport = (GetDescriptorSetLayoutSupportFunc) GET_PROC_ADDR("vkGetDescriptorSetLayoutSupport");
if (!m_vk.getDescriptorSetLayoutSupport)
m_vk.getDescriptorSetLayoutSupport = (GetDescriptorSetLayoutSupportFunc) GET_PROC_ADDR("vkGetDescriptorSetLayoutSupportKHR");
+m_vk.cmdDrawIndirectCount = (CmdDrawIndirectCountFunc) GET_PROC_ADDR("vkCmdDrawIndirectCount");
+if (!m_vk.cmdDrawIndirectCount)
+ m_vk.cmdDrawIndirectCount = (CmdDrawIndirectCountFunc) GET_PROC_ADDR("vkCmdDrawIndirectCountKHR");
+m_vk.cmdDrawIndexedIndirectCount = (CmdDrawIndexedIndirectCountFunc) GET_PROC_ADDR("vkCmdDrawIndexedIndirectCount");
+if (!m_vk.cmdDrawIndexedIndirectCount)
+ m_vk.cmdDrawIndexedIndirectCount = (CmdDrawIndexedIndirectCountFunc) GET_PROC_ADDR("vkCmdDrawIndexedIndirectCountKHR");
+m_vk.createRenderPass2 = (CreateRenderPass2Func) GET_PROC_ADDR("vkCreateRenderPass2");
+if (!m_vk.createRenderPass2)
+ m_vk.createRenderPass2 = (CreateRenderPass2Func) GET_PROC_ADDR("vkCreateRenderPass2KHR");
+m_vk.cmdBeginRenderPass2 = (CmdBeginRenderPass2Func) GET_PROC_ADDR("vkCmdBeginRenderPass2");
+if (!m_vk.cmdBeginRenderPass2)
+ m_vk.cmdBeginRenderPass2 = (CmdBeginRenderPass2Func) GET_PROC_ADDR("vkCmdBeginRenderPass2KHR");
+m_vk.cmdNextSubpass2 = (CmdNextSubpass2Func) GET_PROC_ADDR("vkCmdNextSubpass2");
+if (!m_vk.cmdNextSubpass2)
+ m_vk.cmdNextSubpass2 = (CmdNextSubpass2Func) GET_PROC_ADDR("vkCmdNextSubpass2KHR");
+m_vk.cmdEndRenderPass2 = (CmdEndRenderPass2Func) GET_PROC_ADDR("vkCmdEndRenderPass2");
+if (!m_vk.cmdEndRenderPass2)
+ m_vk.cmdEndRenderPass2 = (CmdEndRenderPass2Func) GET_PROC_ADDR("vkCmdEndRenderPass2KHR");
+m_vk.resetQueryPool = (ResetQueryPoolFunc) GET_PROC_ADDR("vkResetQueryPool");
+if (!m_vk.resetQueryPool)
+ m_vk.resetQueryPool = (ResetQueryPoolFunc) GET_PROC_ADDR("vkResetQueryPoolEXT");
+m_vk.getSemaphoreCounterValue = (GetSemaphoreCounterValueFunc) GET_PROC_ADDR("vkGetSemaphoreCounterValue");
+if (!m_vk.getSemaphoreCounterValue)
+ m_vk.getSemaphoreCounterValue = (GetSemaphoreCounterValueFunc) GET_PROC_ADDR("vkGetSemaphoreCounterValueKHR");
+m_vk.waitSemaphores = (WaitSemaphoresFunc) GET_PROC_ADDR("vkWaitSemaphores");
+if (!m_vk.waitSemaphores)
+ m_vk.waitSemaphores = (WaitSemaphoresFunc) GET_PROC_ADDR("vkWaitSemaphoresKHR");
+m_vk.signalSemaphore = (SignalSemaphoreFunc) GET_PROC_ADDR("vkSignalSemaphore");
+if (!m_vk.signalSemaphore)
+ m_vk.signalSemaphore = (SignalSemaphoreFunc) GET_PROC_ADDR("vkSignalSemaphoreKHR");
+m_vk.getBufferDeviceAddress = (GetBufferDeviceAddressFunc) GET_PROC_ADDR("vkGetBufferDeviceAddress");
+if (!m_vk.getBufferDeviceAddress)
+ m_vk.getBufferDeviceAddress = (GetBufferDeviceAddressFunc) GET_PROC_ADDR("vkGetBufferDeviceAddressKHR");
+m_vk.getBufferOpaqueCaptureAddress = (GetBufferOpaqueCaptureAddressFunc) GET_PROC_ADDR("vkGetBufferOpaqueCaptureAddress");
+if (!m_vk.getBufferOpaqueCaptureAddress)
+ m_vk.getBufferOpaqueCaptureAddress = (GetBufferOpaqueCaptureAddressFunc) GET_PROC_ADDR("vkGetBufferOpaqueCaptureAddressKHR");
+m_vk.getDeviceMemoryOpaqueCaptureAddress = (GetDeviceMemoryOpaqueCaptureAddressFunc) GET_PROC_ADDR("vkGetDeviceMemoryOpaqueCaptureAddress");
+if (!m_vk.getDeviceMemoryOpaqueCaptureAddress)
+ m_vk.getDeviceMemoryOpaqueCaptureAddress = (GetDeviceMemoryOpaqueCaptureAddressFunc) GET_PROC_ADDR("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
m_vk.createSwapchainKHR = (CreateSwapchainKHRFunc) GET_PROC_ADDR("vkCreateSwapchainKHR");
m_vk.destroySwapchainKHR = (DestroySwapchainKHRFunc) GET_PROC_ADDR("vkDestroySwapchainKHR");
m_vk.getSwapchainImagesKHR = (GetSwapchainImagesKHRFunc) GET_PROC_ADDR("vkGetSwapchainImagesKHR");
m_vk.getSemaphoreFdKHR = (GetSemaphoreFdKHRFunc) GET_PROC_ADDR("vkGetSemaphoreFdKHR");
m_vk.cmdPushDescriptorSetKHR = (CmdPushDescriptorSetKHRFunc) GET_PROC_ADDR("vkCmdPushDescriptorSetKHR");
m_vk.cmdPushDescriptorSetWithTemplateKHR = (CmdPushDescriptorSetWithTemplateKHRFunc) GET_PROC_ADDR("vkCmdPushDescriptorSetWithTemplateKHR");
-m_vk.createRenderPass2KHR = (CreateRenderPass2KHRFunc) GET_PROC_ADDR("vkCreateRenderPass2KHR");
-m_vk.cmdBeginRenderPass2KHR = (CmdBeginRenderPass2KHRFunc) GET_PROC_ADDR("vkCmdBeginRenderPass2KHR");
-m_vk.cmdNextSubpass2KHR = (CmdNextSubpass2KHRFunc) GET_PROC_ADDR("vkCmdNextSubpass2KHR");
-m_vk.cmdEndRenderPass2KHR = (CmdEndRenderPass2KHRFunc) GET_PROC_ADDR("vkCmdEndRenderPass2KHR");
m_vk.getSwapchainStatusKHR = (GetSwapchainStatusKHRFunc) GET_PROC_ADDR("vkGetSwapchainStatusKHR");
m_vk.importFenceFdKHR = (ImportFenceFdKHRFunc) GET_PROC_ADDR("vkImportFenceFdKHR");
m_vk.getFenceFdKHR = (GetFenceFdKHRFunc) GET_PROC_ADDR("vkGetFenceFdKHR");
m_vk.acquireProfilingLockKHR = (AcquireProfilingLockKHRFunc) GET_PROC_ADDR("vkAcquireProfilingLockKHR");
m_vk.releaseProfilingLockKHR = (ReleaseProfilingLockKHRFunc) GET_PROC_ADDR("vkReleaseProfilingLockKHR");
-m_vk.cmdDrawIndirectCountKHR = (CmdDrawIndirectCountKHRFunc) GET_PROC_ADDR("vkCmdDrawIndirectCountKHR");
-m_vk.cmdDrawIndexedIndirectCountKHR = (CmdDrawIndexedIndirectCountKHRFunc) GET_PROC_ADDR("vkCmdDrawIndexedIndirectCountKHR");
-m_vk.getSemaphoreCounterValueKHR = (GetSemaphoreCounterValueKHRFunc) GET_PROC_ADDR("vkGetSemaphoreCounterValueKHR");
-m_vk.waitSemaphoresKHR = (WaitSemaphoresKHRFunc) GET_PROC_ADDR("vkWaitSemaphoresKHR");
-m_vk.signalSemaphoreKHR = (SignalSemaphoreKHRFunc) GET_PROC_ADDR("vkSignalSemaphoreKHR");
m_vk.getPipelineExecutablePropertiesKHR = (GetPipelineExecutablePropertiesKHRFunc) GET_PROC_ADDR("vkGetPipelineExecutablePropertiesKHR");
m_vk.getPipelineExecutableStatisticsKHR = (GetPipelineExecutableStatisticsKHRFunc) GET_PROC_ADDR("vkGetPipelineExecutableStatisticsKHR");
m_vk.getPipelineExecutableInternalRepresentationsKHR = (GetPipelineExecutableInternalRepresentationsKHRFunc) GET_PROC_ADDR("vkGetPipelineExecutableInternalRepresentationsKHR");
m_vk.setLocalDimmingAMD = (SetLocalDimmingAMDFunc) GET_PROC_ADDR("vkSetLocalDimmingAMD");
m_vk.getBufferDeviceAddressEXT = (GetBufferDeviceAddressEXTFunc) GET_PROC_ADDR("vkGetBufferDeviceAddressEXT");
m_vk.cmdSetLineStippleEXT = (CmdSetLineStippleEXTFunc) GET_PROC_ADDR("vkCmdSetLineStippleEXT");
-m_vk.resetQueryPoolEXT = (ResetQueryPoolEXTFunc) GET_PROC_ADDR("vkResetQueryPoolEXT");
m_vk.getAndroidHardwareBufferPropertiesANDROID = (GetAndroidHardwareBufferPropertiesANDROIDFunc) GET_PROC_ADDR("vkGetAndroidHardwareBufferPropertiesANDROID");
m_vk.getMemoryAndroidHardwareBufferANDROID = (GetMemoryAndroidHardwareBufferANDROIDFunc) GET_PROC_ADDR("vkGetMemoryAndroidHardwareBufferANDROID");
m_vk.getMemoryWin32HandleKHR = (GetMemoryWin32HandleKHRFunc) GET_PROC_ADDR("vkGetMemoryWin32HandleKHR");
*/
bool checkMandatoryFeatures(const vkt::Context& context)
{
- if ( !context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2") )
+ if (!context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2"))
TCU_THROW(NotSupportedError, "Extension VK_KHR_get_physical_device_properties2 is not present");
VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
nextPtr = &physicalDeviceScalarBlockLayoutFeaturesEXT.pNext;
}
+ vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT physicalDeviceSubgroupSizeControlFeaturesEXT;
+ deMemset(&physicalDeviceSubgroupSizeControlFeaturesEXT, 0, sizeof(physicalDeviceSubgroupSizeControlFeaturesEXT));
+
+ if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) )
+ {
+ physicalDeviceSubgroupSizeControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>();
+ *nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT;
+ nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT.pNext;
+ }
+
vk::VkPhysicalDeviceTimelineSemaphoreFeaturesKHR physicalDeviceTimelineSemaphoreFeaturesKHR;
deMemset(&physicalDeviceTimelineSemaphoreFeaturesKHR, 0, sizeof(physicalDeviceTimelineSemaphoreFeaturesKHR));
nextPtr = &physicalDeviceVariablePointersFeatures.pNext;
}
+ vk::VkPhysicalDeviceVulkan11Features physicalDeviceVulkan11Features;
+ deMemset(&physicalDeviceVulkan11Features, 0, sizeof(physicalDeviceVulkan11Features));
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+ {
+ physicalDeviceVulkan11Features.sType = getStructureType<VkPhysicalDeviceVulkan11Features>();
+ *nextPtr = &physicalDeviceVulkan11Features;
+ nextPtr = &physicalDeviceVulkan11Features.pNext;
+ }
+
+ vk::VkPhysicalDeviceVulkan12Features physicalDeviceVulkan12Features;
+ deMemset(&physicalDeviceVulkan12Features, 0, sizeof(physicalDeviceVulkan12Features));
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+ {
+ physicalDeviceVulkan12Features.sType = getStructureType<VkPhysicalDeviceVulkan12Features>();
+ *nextPtr = &physicalDeviceVulkan12Features;
+ nextPtr = &physicalDeviceVulkan12Features.pNext;
+ }
+
context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &coreFeatures);
bool result = true;
}
}
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+ {
+ if ( physicalDeviceVulkan11Features.multiview == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) )
{
if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE )
}
}
+ if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) )
+ {
+ if ( physicalDeviceSubgroupSizeControlFeaturesEXT.subgroupSizeControl == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) )
+ {
+ if ( physicalDeviceSubgroupSizeControlFeaturesEXT.computeFullSubgroups == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+ {
+ if ( physicalDeviceVulkan12Features.subgroupBroadcastDynamicId == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature subgroupBroadcastDynamicId not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+ {
+ if ( physicalDeviceVulkan12Features.imagelessFramebuffer == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+ {
+ if ( physicalDeviceVulkan12Features.uniformBufferStandardLayout == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+ {
+ if ( physicalDeviceVulkan12Features.separateDepthStencilLayouts == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+ {
+ if ( physicalDeviceVulkan12Features.hostQueryReset == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) )
{
if ( physicalDeviceTimelineSemaphoreFeaturesKHR.timelineSemaphore == VK_FALSE )
}
}
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+ {
+ if ( physicalDeviceVulkan12Features.timelineSemaphore == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
+ if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+ {
+ if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
return result;
}
const MemoryRequirement MemoryRequirement::Local = MemoryRequirement(MemoryRequirement::FLAG_LOCAL);
const MemoryRequirement MemoryRequirement::Cached = MemoryRequirement(MemoryRequirement::FLAG_CACHED);
const MemoryRequirement MemoryRequirement::NonLocal = MemoryRequirement(MemoryRequirement::FLAG_NON_LOCAL);
+const MemoryRequirement MemoryRequirement::DeviceAddress = MemoryRequirement(MemoryRequirement::FLAG_DEVICE_ADDRESS);
bool MemoryRequirement::matchesHeap (VkMemoryPropertyFlags heapFlags) const
{
MovePtr<Allocation> SimpleAllocator::allocate (const VkMemoryRequirements& memReqs, MemoryRequirement requirement)
{
const deUint32 memoryTypeNdx = selectMatchingMemoryType(m_memProps, memReqs.memoryTypeBits, requirement);
- const VkMemoryAllocateInfo allocInfo =
+ VkMemoryAllocateInfo allocInfo =
{
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
memoryTypeNdx, // deUint32 memoryTypeIndex;
};
+ VkMemoryAllocateFlagsInfo allocFlagsInfo =
+ {
+ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, // VkStructureType sType
+ DE_NULL, // const void* pNext
+ 0, // VkMemoryAllocateFlags flags
+ 0, // uint32_t deviceMask
+ };
+
+ if (requirement & MemoryRequirement::DeviceAddress)
+ {
+ allocFlagsInfo.flags |= VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR;
+ allocInfo.pNext = &allocFlagsInfo;
+ }
+
Move<VkDeviceMemory> mem = allocateMemory(m_vk, m_device, &allocInfo);
MovePtr<HostPtr> hostPtr;
return MovePtr<Allocation>(new SimpleAllocation(mem, hostPtr));
}
-static MovePtr<Allocation> allocateDedicated (const InstanceInterface& vki,
- const DeviceInterface& vkd,
- const VkPhysicalDevice& physDevice,
- const VkDevice device,
- const VkMemoryRequirements& memReqs,
- const MemoryRequirement requirement,
- const void* pNext)
+MovePtr<Allocation> allocateExtended (const InstanceInterface& vki,
+ const DeviceInterface& vkd,
+ const VkPhysicalDevice& physDevice,
+ const VkDevice device,
+ const VkMemoryRequirements& memReqs,
+ const MemoryRequirement requirement,
+ const void* pNext)
{
const VkPhysicalDeviceMemoryProperties memoryProperties = getPhysicalDeviceMemoryProperties(vki, physDevice);
const deUint32 memoryTypeNdx = selectMatchingMemoryType(memoryProperties, memReqs.memoryTypeBits, requirement);
buffer // VkBuffer buffer
};
- return allocateDedicated(vki, vkd, physDevice, device, memoryRequirements, requirement, &dedicatedAllocationInfo);
+ return allocateExtended(vki, vkd, physDevice, device, memoryRequirements, requirement, &dedicatedAllocationInfo);
}
de::MovePtr<Allocation> allocateDedicated (const InstanceInterface& vki,
DE_NULL // VkBuffer buffer
};
- return allocateDedicated(vki, vkd, physDevice, device, memoryRequirements, requirement, &dedicatedAllocationInfo);
+ return allocateExtended(vki, vkd, physDevice, device, memoryRequirements, requirement, &dedicatedAllocationInfo);
}
void* mapMemory (const DeviceInterface& vkd, VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags)
static const MemoryRequirement Local;
static const MemoryRequirement Cached;
static const MemoryRequirement NonLocal;
+ static const MemoryRequirement DeviceAddress;
inline MemoryRequirement operator| (MemoryRequirement requirement) const
{
FLAG_LOCAL = 1u << 4u,
FLAG_CACHED = 1u << 5u,
FLAG_NON_LOCAL = 1u << 6u,
+ FLAG_DEVICE_ADDRESS = 1u << 7u,
};
};
const VkPhysicalDeviceMemoryProperties m_memProps;
};
+de::MovePtr<Allocation> allocateExtended (const InstanceInterface& vki, const DeviceInterface& vkd, const VkPhysicalDevice& physDevice, const VkDevice device, const VkMemoryRequirements& memReqs, const MemoryRequirement requirement, const void* pNext);
de::MovePtr<Allocation> allocateDedicated (const InstanceInterface& vki, const DeviceInterface& vkd, const VkPhysicalDevice& physDevice, const VkDevice device, const VkBuffer buffer, MemoryRequirement requirement);
de::MovePtr<Allocation> allocateDedicated (const InstanceInterface& vki, const DeviceInterface& vkd, const VkPhysicalDevice& physDevice, const VkDevice device, const VkImage image, MemoryRequirement requirement);
{
public:
RenderPass (VkDevice, const VkRenderPassCreateInfo*) {}
- RenderPass (VkDevice, const VkRenderPassCreateInfo2KHR*) {}
+ RenderPass (VkDevice, const VkRenderPassCreateInfo2*) {}
};
class SwapchainKHR
VK_NULL_RETURN((*pDescriptorUpdateTemplate = allocateNonDispHandle<DescriptorUpdateTemplate, VkDescriptorUpdateTemplate>(device, pCreateInfo, pAllocator)));
}
-VKAPI_ATTR VkResult VKAPI_CALL createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain)
+VKAPI_ATTR VkResult VKAPI_CALL createRenderPass2 (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)
{
DE_UNREF(pAllocator);
- VK_NULL_RETURN((*pSwapchain = allocateNonDispHandle<SwapchainKHR, VkSwapchainKHR>(device, pCreateInfo, pAllocator)));
+ VK_NULL_RETURN((*pRenderPass = allocateNonDispHandle<RenderPass, VkRenderPass>(device, pCreateInfo, pAllocator)));
}
-VKAPI_ATTR VkResult VKAPI_CALL createDisplayPlaneSurfaceKHR (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+VKAPI_ATTR VkResult VKAPI_CALL createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain)
{
DE_UNREF(pAllocator);
- VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+ VK_NULL_RETURN((*pSwapchain = allocateNonDispHandle<SwapchainKHR, VkSwapchainKHR>(device, pCreateInfo, pAllocator)));
}
-VKAPI_ATTR VkResult VKAPI_CALL createRenderPass2KHR (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)
+VKAPI_ATTR VkResult VKAPI_CALL createDisplayPlaneSurfaceKHR (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
{
DE_UNREF(pAllocator);
- VK_NULL_RETURN((*pRenderPass = allocateNonDispHandle<RenderPass, VkRenderPass>(device, pCreateInfo, pAllocator)));
+ VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
}
VKAPI_ATTR VkResult VKAPI_CALL createDebugReportCallbackEXT (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback)
DE_UNREF(pSupport);
}
+VKAPI_ATTR void VKAPI_CALL cmdDrawIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride)
+{
+ DE_UNREF(commandBuffer);
+ DE_UNREF(buffer);
+ DE_UNREF(offset);
+ DE_UNREF(countBuffer);
+ DE_UNREF(countBufferOffset);
+ DE_UNREF(maxDrawCount);
+ DE_UNREF(stride);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDrawIndexedIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride)
+{
+ DE_UNREF(commandBuffer);
+ DE_UNREF(buffer);
+ DE_UNREF(offset);
+ DE_UNREF(countBuffer);
+ DE_UNREF(countBufferOffset);
+ DE_UNREF(maxDrawCount);
+ DE_UNREF(stride);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBeginRenderPass2 (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo)
+{
+ DE_UNREF(commandBuffer);
+ DE_UNREF(pRenderPassBegin);
+ DE_UNREF(pSubpassBeginInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdNextSubpass2 (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo)
+{
+ DE_UNREF(commandBuffer);
+ DE_UNREF(pSubpassBeginInfo);
+ DE_UNREF(pSubpassEndInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdEndRenderPass2 (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo)
+{
+ DE_UNREF(commandBuffer);
+ DE_UNREF(pSubpassEndInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL resetQueryPool (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount)
+{
+ DE_UNREF(device);
+ DE_UNREF(queryPool);
+ DE_UNREF(firstQuery);
+ DE_UNREF(queryCount);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getSemaphoreCounterValue (VkDevice device, VkSemaphore semaphore, deUint64* pValue)
+{
+ DE_UNREF(device);
+ DE_UNREF(semaphore);
+ DE_UNREF(pValue);
+ return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL waitSemaphores (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout)
+{
+ DE_UNREF(device);
+ DE_UNREF(pWaitInfo);
+ DE_UNREF(timeout);
+ return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL signalSemaphore (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
+{
+ DE_UNREF(device);
+ DE_UNREF(pSignalInfo);
+ return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL getBufferDeviceAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
+{
+ DE_UNREF(device);
+ DE_UNREF(pInfo);
+ return VK_SUCCESS;
+}
+
+VKAPI_ATTR uint64_t VKAPI_CALL getBufferOpaqueCaptureAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
+{
+ DE_UNREF(device);
+ DE_UNREF(pInfo);
+ return VK_SUCCESS;
+}
+
+VKAPI_ATTR uint64_t VKAPI_CALL getDeviceMemoryOpaqueCaptureAddress (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
+{
+ DE_UNREF(device);
+ DE_UNREF(pInfo);
+ return VK_SUCCESS;
+}
+
VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfaceSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported)
{
DE_UNREF(physicalDevice);
DE_UNREF(pData);
}
-VKAPI_ATTR void VKAPI_CALL cmdBeginRenderPass2KHR (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
-{
- DE_UNREF(commandBuffer);
- DE_UNREF(pRenderPassBegin);
- DE_UNREF(pSubpassBeginInfo);
-}
-
-VKAPI_ATTR void VKAPI_CALL cmdNextSubpass2KHR (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo)
-{
- DE_UNREF(commandBuffer);
- DE_UNREF(pSubpassBeginInfo);
- DE_UNREF(pSubpassEndInfo);
-}
-
-VKAPI_ATTR void VKAPI_CALL cmdEndRenderPass2KHR (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo)
-{
- DE_UNREF(commandBuffer);
- DE_UNREF(pSubpassEndInfo);
-}
-
VKAPI_ATTR VkResult VKAPI_CALL getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain)
{
DE_UNREF(device);
return VK_SUCCESS;
}
-VKAPI_ATTR void VKAPI_CALL cmdDrawIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride)
-{
- DE_UNREF(commandBuffer);
- DE_UNREF(buffer);
- DE_UNREF(offset);
- DE_UNREF(countBuffer);
- DE_UNREF(countBufferOffset);
- DE_UNREF(maxDrawCount);
- DE_UNREF(stride);
-}
-
-VKAPI_ATTR void VKAPI_CALL cmdDrawIndexedIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride)
-{
- DE_UNREF(commandBuffer);
- DE_UNREF(buffer);
- DE_UNREF(offset);
- DE_UNREF(countBuffer);
- DE_UNREF(countBufferOffset);
- DE_UNREF(maxDrawCount);
- DE_UNREF(stride);
-}
-
-VKAPI_ATTR VkResult VKAPI_CALL getSemaphoreCounterValueKHR (VkDevice device, VkSemaphore semaphore, deUint64* pValue)
-{
- DE_UNREF(device);
- DE_UNREF(semaphore);
- DE_UNREF(pValue);
- return VK_SUCCESS;
-}
-
-VKAPI_ATTR VkResult VKAPI_CALL waitSemaphoresKHR (VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout)
-{
- DE_UNREF(device);
- DE_UNREF(pWaitInfo);
- DE_UNREF(timeout);
- return VK_SUCCESS;
-}
-
-VKAPI_ATTR VkResult VKAPI_CALL signalSemaphoreKHR (VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo)
-{
- DE_UNREF(device);
- DE_UNREF(pSignalInfo);
- return VK_SUCCESS;
-}
-
VKAPI_ATTR VkResult VKAPI_CALL getPipelineExecutablePropertiesKHR (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties)
{
DE_UNREF(device);
DE_UNREF(localDimmingEnable);
}
-VKAPI_ATTR VkDeviceAddress VKAPI_CALL getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo)
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
{
DE_UNREF(device);
DE_UNREF(pInfo);
DE_UNREF(lineStipplePattern);
}
-VKAPI_ATTR void VKAPI_CALL resetQueryPoolEXT (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount)
-{
- DE_UNREF(device);
- DE_UNREF(queryPool);
- DE_UNREF(firstQuery);
- DE_UNREF(queryCount);
-}
-
VKAPI_ATTR VkResult VKAPI_CALL getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties)
{
DE_UNREF(device);
VK_NULL_FUNC_ENTRY(vkDestroyDescriptorUpdateTemplate, destroyDescriptorUpdateTemplate),
VK_NULL_FUNC_ENTRY(vkUpdateDescriptorSetWithTemplate, updateDescriptorSetWithTemplate),
VK_NULL_FUNC_ENTRY(vkGetDescriptorSetLayoutSupport, getDescriptorSetLayoutSupport),
+ VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCount, cmdDrawIndirectCount),
+ VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirectCount, cmdDrawIndexedIndirectCount),
+ VK_NULL_FUNC_ENTRY(vkCreateRenderPass2, createRenderPass2),
+ VK_NULL_FUNC_ENTRY(vkCmdBeginRenderPass2, cmdBeginRenderPass2),
+ VK_NULL_FUNC_ENTRY(vkCmdNextSubpass2, cmdNextSubpass2),
+ VK_NULL_FUNC_ENTRY(vkCmdEndRenderPass2, cmdEndRenderPass2),
+ VK_NULL_FUNC_ENTRY(vkResetQueryPool, resetQueryPool),
+ VK_NULL_FUNC_ENTRY(vkGetSemaphoreCounterValue, getSemaphoreCounterValue),
+ VK_NULL_FUNC_ENTRY(vkWaitSemaphores, waitSemaphores),
+ VK_NULL_FUNC_ENTRY(vkSignalSemaphore, signalSemaphore),
+ VK_NULL_FUNC_ENTRY(vkGetBufferDeviceAddress, getBufferDeviceAddress),
+ VK_NULL_FUNC_ENTRY(vkGetBufferOpaqueCaptureAddress, getBufferOpaqueCaptureAddress),
+ VK_NULL_FUNC_ENTRY(vkGetDeviceMemoryOpaqueCaptureAddress, getDeviceMemoryOpaqueCaptureAddress),
VK_NULL_FUNC_ENTRY(vkCreateSwapchainKHR, createSwapchainKHR),
VK_NULL_FUNC_ENTRY(vkDestroySwapchainKHR, destroySwapchainKHR),
VK_NULL_FUNC_ENTRY(vkGetSwapchainImagesKHR, getSwapchainImagesKHR),
VK_NULL_FUNC_ENTRY(vkCreateDescriptorUpdateTemplateKHR, createDescriptorUpdateTemplate),
VK_NULL_FUNC_ENTRY(vkDestroyDescriptorUpdateTemplateKHR, destroyDescriptorUpdateTemplate),
VK_NULL_FUNC_ENTRY(vkUpdateDescriptorSetWithTemplateKHR, updateDescriptorSetWithTemplate),
- VK_NULL_FUNC_ENTRY(vkCreateRenderPass2KHR, createRenderPass2KHR),
- VK_NULL_FUNC_ENTRY(vkCmdBeginRenderPass2KHR, cmdBeginRenderPass2KHR),
- VK_NULL_FUNC_ENTRY(vkCmdNextSubpass2KHR, cmdNextSubpass2KHR),
- VK_NULL_FUNC_ENTRY(vkCmdEndRenderPass2KHR, cmdEndRenderPass2KHR),
+ VK_NULL_FUNC_ENTRY(vkCreateRenderPass2KHR, createRenderPass2),
+ VK_NULL_FUNC_ENTRY(vkCmdBeginRenderPass2KHR, cmdBeginRenderPass2),
+ VK_NULL_FUNC_ENTRY(vkCmdNextSubpass2KHR, cmdNextSubpass2),
+ VK_NULL_FUNC_ENTRY(vkCmdEndRenderPass2KHR, cmdEndRenderPass2),
VK_NULL_FUNC_ENTRY(vkGetSwapchainStatusKHR, getSwapchainStatusKHR),
VK_NULL_FUNC_ENTRY(vkImportFenceFdKHR, importFenceFdKHR),
VK_NULL_FUNC_ENTRY(vkGetFenceFdKHR, getFenceFdKHR),
VK_NULL_FUNC_ENTRY(vkBindBufferMemory2KHR, bindBufferMemory2),
VK_NULL_FUNC_ENTRY(vkBindImageMemory2KHR, bindImageMemory2),
VK_NULL_FUNC_ENTRY(vkGetDescriptorSetLayoutSupportKHR, getDescriptorSetLayoutSupport),
- VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCountKHR, cmdDrawIndirectCountKHR),
- VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirectCountKHR, cmdDrawIndexedIndirectCountKHR),
- VK_NULL_FUNC_ENTRY(vkGetSemaphoreCounterValueKHR, getSemaphoreCounterValueKHR),
- VK_NULL_FUNC_ENTRY(vkWaitSemaphoresKHR, waitSemaphoresKHR),
- VK_NULL_FUNC_ENTRY(vkSignalSemaphoreKHR, signalSemaphoreKHR),
+ VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCountKHR, cmdDrawIndirectCount),
+ VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirectCountKHR, cmdDrawIndexedIndirectCount),
+ VK_NULL_FUNC_ENTRY(vkGetSemaphoreCounterValueKHR, getSemaphoreCounterValue),
+ VK_NULL_FUNC_ENTRY(vkWaitSemaphoresKHR, waitSemaphores),
+ VK_NULL_FUNC_ENTRY(vkSignalSemaphoreKHR, signalSemaphore),
+ VK_NULL_FUNC_ENTRY(vkGetBufferDeviceAddressKHR, getBufferDeviceAddress),
+ VK_NULL_FUNC_ENTRY(vkGetBufferOpaqueCaptureAddressKHR, getBufferOpaqueCaptureAddress),
+ VK_NULL_FUNC_ENTRY(vkGetDeviceMemoryOpaqueCaptureAddressKHR, getDeviceMemoryOpaqueCaptureAddress),
VK_NULL_FUNC_ENTRY(vkGetPipelineExecutablePropertiesKHR, getPipelineExecutablePropertiesKHR),
VK_NULL_FUNC_ENTRY(vkGetPipelineExecutableStatisticsKHR, getPipelineExecutableStatisticsKHR),
VK_NULL_FUNC_ENTRY(vkGetPipelineExecutableInternalRepresentationsKHR, getPipelineExecutableInternalRepresentationsKHR),
VK_NULL_FUNC_ENTRY(vkSetLocalDimmingAMD, setLocalDimmingAMD),
VK_NULL_FUNC_ENTRY(vkGetBufferDeviceAddressEXT, getBufferDeviceAddressEXT),
VK_NULL_FUNC_ENTRY(vkCmdSetLineStippleEXT, cmdSetLineStippleEXT),
- VK_NULL_FUNC_ENTRY(vkResetQueryPoolEXT, resetQueryPoolEXT),
+ VK_NULL_FUNC_ENTRY(vkResetQueryPoolEXT, resetQueryPool),
VK_NULL_FUNC_ENTRY(vkGetAndroidHardwareBufferPropertiesANDROID, getAndroidHardwareBufferPropertiesANDROID),
VK_NULL_FUNC_ENTRY(vkGetMemoryAndroidHardwareBufferANDROID, getMemoryAndroidHardwareBufferANDROID),
VK_NULL_FUNC_ENTRY(vkGetMemoryWin32HandleKHR, getMemoryWin32HandleKHR),
case SPIRV_VERSION_1_2:
case SPIRV_VERSION_1_3: targetEnv = SPV_ENV_VULKAN_1_1; break;
case SPIRV_VERSION_1_4: targetEnv = SPV_ENV_VULKAN_1_1_SPIRV_1_4; break;
+ case SPIRV_VERSION_1_5: targetEnv = SPV_ENV_VULKAN_1_2; break;
default:
TCU_THROW(InternalError, "Unexpected SPIR-V version requested");
}
deUint32 vulkanVersionMajorMinor = VK_MAKE_VERSION(VK_VERSION_MAJOR(vulkanVersion), VK_VERSION_MINOR(vulkanVersion), 0);
if (vulkanVersionMajorMinor == VK_API_VERSION_1_0)
result = vk::SPIRV_VERSION_1_0;
- else if (vulkanVersionMajorMinor >= VK_API_VERSION_1_1)
+ else if (vulkanVersionMajorMinor == VK_API_VERSION_1_1)
result = vk::SPIRV_VERSION_1_3;
+ else if (vulkanVersionMajorMinor >= VK_API_VERSION_1_2)
+ result = vk::SPIRV_VERSION_1_5;
DE_ASSERT(result < vk::SPIRV_VERSION_LAST);
SpirvVersion extractSpirvVersion (const ProgramBinary& binary)
{
- DE_STATIC_ASSERT(SPIRV_VERSION_1_4 + 1 == SPIRV_VERSION_LAST);
+ DE_STATIC_ASSERT(SPIRV_VERSION_1_5 + 1 == SPIRV_VERSION_LAST);
if (binary.getFormat() != PROGRAM_FORMAT_SPIRV)
TCU_THROW(InternalError, "Binary is not in SPIR-V format");
const deUint32 spirvBinaryVersion12 = 0x00010200;
const deUint32 spirvBinaryVersion13 = 0x00010300;
const deUint32 spirvBinaryVersion14 = 0x00010400;
+ const deUint32 spirvBinaryVersion15 = 0x00010500;
const SpirvBinaryHeader* header = reinterpret_cast<const SpirvBinaryHeader*>(binary.getBinary());
const deUint32 spirvVersion = isNativeSpirVBinaryEndianness()
? header->version
case spirvBinaryVersion12: result = SPIRV_VERSION_1_2; break; //!< SPIR-V 1.2
case spirvBinaryVersion13: result = SPIRV_VERSION_1_3; break; //!< SPIR-V 1.3
case spirvBinaryVersion14: result = SPIRV_VERSION_1_4; break; //!< SPIR-V 1.4
+ case spirvBinaryVersion15: result = SPIRV_VERSION_1_5; break; //!< SPIR-V 1.5
default: TCU_THROW(InternalError, "Unknown SPIR-V version detected in binary");
}
std::string getSpirvVersionName (const SpirvVersion spirvVersion)
{
- DE_STATIC_ASSERT(SPIRV_VERSION_1_4 + 1 == SPIRV_VERSION_LAST);
+ DE_STATIC_ASSERT(SPIRV_VERSION_1_5 + 1 == SPIRV_VERSION_LAST);
DE_ASSERT(spirvVersion < SPIRV_VERSION_LAST);
std::string result;
case SPIRV_VERSION_1_2: result = "1.2"; break; //!< SPIR-V 1.2
case SPIRV_VERSION_1_3: result = "1.3"; break; //!< SPIR-V 1.3
case SPIRV_VERSION_1_4: result = "1.4"; break; //!< SPIR-V 1.4
+ case SPIRV_VERSION_1_5: result = "1.5"; break; //!< SPIR-V 1.5
default: result = "Unknown";
}
return features;
}
+VkPhysicalDeviceVulkan12Features getPhysicalDeviceVulkan12Features (const InstanceInterface& vk, VkPhysicalDevice physicalDevice)
+{
+ VkPhysicalDeviceFeatures2 features;
+ VkPhysicalDeviceVulkan12Features vulkan_12_features;
+
+ deMemset(&features, 0, sizeof(features));
+ features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
+
+ deMemset(&vulkan_12_features, 0, sizeof(vulkan_12_features));
+ vulkan_12_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
+
+ features.pNext = &vulkan_12_features;
+
+ vk.getPhysicalDeviceFeatures2(physicalDevice, &features);
+ return vulkan_12_features;
+}
+
+VkPhysicalDeviceVulkan11Properties getPhysicalDeviceVulkan11Properties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice)
+{
+ VkPhysicalDeviceVulkan11Properties vulkan11properties = initVulkanStructure();
+ VkPhysicalDeviceProperties2 properties = initVulkanStructure(&vulkan11properties);
+
+ vk.getPhysicalDeviceProperties2(physicalDevice, &properties);
+
+ return vulkan11properties;
+}
+
+VkPhysicalDeviceVulkan12Properties getPhysicalDeviceVulkan12Properties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice)
+{
+ VkPhysicalDeviceVulkan12Properties vulkan12properties = initVulkanStructure();
+ VkPhysicalDeviceProperties2 properties = initVulkanStructure(&vulkan12properties);
+
+ vk.getPhysicalDeviceProperties2(physicalDevice, &properties);
+
+ return vulkan12properties;
+}
+
VkPhysicalDeviceProperties getPhysicalDeviceProperties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice)
{
VkPhysicalDeviceProperties properties;
std::vector<VkQueueFamilyProperties> getPhysicalDeviceQueueFamilyProperties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
VkPhysicalDeviceFeatures getPhysicalDeviceFeatures (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
VkPhysicalDeviceFeatures2 getPhysicalDeviceFeatures2 (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
+VkPhysicalDeviceVulkan12Features getPhysicalDeviceVulkan12Features (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
+VkPhysicalDeviceVulkan11Properties getPhysicalDeviceVulkan11Properties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
+VkPhysicalDeviceVulkan12Properties getPhysicalDeviceVulkan12Properties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
VkPhysicalDeviceProperties getPhysicalDeviceProperties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
VkPhysicalDeviceMemoryProperties getPhysicalDeviceMemoryProperties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
VkFormatProperties getPhysicalDeviceFormatProperties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice, VkFormat format);
return reinterpret_cast<StructType*>(findStructureInChain(first, getStructureType<StructType>()));
}
+struct initVulkanStructure
+{
+ initVulkanStructure (void* pNext = DE_NULL) : m_next(pNext) {};
+
+ template<class StructType>
+ operator StructType()
+ {
+ StructType result;
+
+ deMemset(&result, 0x00, sizeof(StructType));
+
+ result.sType = getStructureType<StructType>();
+ result.pNext = m_next;
+
+ return result;
+ }
+
+private:
+ void* m_next;
+};
+
+template<class StructType>
+void addToChainVulkanStructure (void*** chainPNextPtr, StructType& structType)
+{
+ DE_ASSERT(chainPNextPtr != DE_NULL);
+
+ (**chainPNextPtr) = &structType;
+
+ (*chainPNextPtr) = &structType.pNext;
+}
+
+struct initVulkanStructureConst
+{
+ initVulkanStructureConst (const void* pNext = DE_NULL) : m_next(pNext) {};
+
+ template<class StructType>
+ operator const StructType()
+ {
+ StructType result;
+
+ deMemset(&result, 0x00, sizeof(StructType));
+
+ result.sType = getStructureType<StructType>();
+ result.pNext = const_cast<void*>(m_next);
+
+ return result;
+ }
+
+private:
+ const void* m_next;
+};
+
namespace ValidateQueryBits
{
return true;
}
+template <typename Type>
+//!< Return variable initialization validation
+bool validateStructsWithGuard (const QueryMemberTableEntry* queryMemberTableEntry, Type* vec[2], const deUint8 guardValue, const deUint32 guardSize)
+{
+ const QueryMemberTableEntry *iterator;
+
+ for (iterator = queryMemberTableEntry; iterator->size != 0; iterator++)
+ {
+ if (deMemCmp(((deUint8*)(vec[0]))+iterator->offset, ((deUint8*)(vec[1]))+iterator->offset, iterator->size) != 0)
+ return false;
+ }
+
+ for (deUint32 vecNdx = 0; vecNdx < 2; ++vecNdx)
+ {
+ for (deUint32 ndx = 0; ndx < guardSize; ndx++)
+ {
+ if (((deUint8*)(vec[vecNdx]))[ndx + sizeof(Type)] != guardValue)
+ return false;
+ }
+ }
+
+ return true;
+}
+
template<typename IterT>
//! Overwrite a range of objects with an 8-bit pattern.
inline void fillBits (IterT beg, const IterT end, const deUint8 pattern = 0xdeu)
Move<VkSemaphore> createSemaphoreType (const DeviceInterface& vk,
VkDevice device,
- VkSemaphoreTypeKHR type,
+ VkSemaphoreType type,
VkSemaphoreCreateFlags flags,
const deUint64 initialValue,
const VkAllocationCallbacks* pAllocator)
{
- const VkSemaphoreTypeCreateInfoKHR createTypeInfo =
+ const VkSemaphoreTypeCreateInfo createTypeInfo =
{
- VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR,
+ VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
DE_NULL,
type,
Move<VkSemaphore> createSemaphoreType (const DeviceInterface& vk,
VkDevice device,
- VkSemaphoreTypeKHR type,
+ VkSemaphoreType type,
VkSemaphoreCreateFlags flags = (VkSemaphoreCreateFlags)0,
const deUint64 initialValue = 0,
const VkAllocationCallbacks* pAllocator = DE_NULL);
Move<VkCommandPool> createCommandPool (const DeviceInterface& vk, VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
Move<VkSamplerYcbcrConversion> createSamplerYcbcrConversion (const DeviceInterface& vk, VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
Move<VkDescriptorUpdateTemplate> createDescriptorUpdateTemplate (const DeviceInterface& vk, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkRenderPass> createRenderPass2 (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
Move<VkSwapchainKHR> createSwapchainKHR (const DeviceInterface& vk, VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
Move<VkSurfaceKHR> createDisplayPlaneSurfaceKHR (const InstanceInterface& vk, VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
Move<VkSwapchainKHR> createSharedSwapchainsKHR (const DeviceInterface& vk, VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator = DE_NULL);
-Move<VkRenderPass> createRenderPass2KHR (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
Move<VkDebugReportCallbackEXT> createDebugReportCallbackEXT (const InstanceInterface& vk, VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
Move<VkIndirectCommandsLayoutNVX> createIndirectCommandsLayoutNVX (const DeviceInterface& vk, VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
Move<VkObjectTableNVX> createObjectTableNVX (const DeviceInterface& vk, VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
return Move<VkDescriptorUpdateTemplate>(check<VkDescriptorUpdateTemplate>(object), Deleter<VkDescriptorUpdateTemplate>(vk, device, pAllocator));
}
+Move<VkRenderPass> createRenderPass2 (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+ VkRenderPass object = 0;
+ VK_CHECK(vk.createRenderPass2(device, pCreateInfo, pAllocator, &object));
+ return Move<VkRenderPass>(check<VkRenderPass>(object), Deleter<VkRenderPass>(vk, device, pAllocator));
+}
+
Move<VkSwapchainKHR> createSwapchainKHR (const DeviceInterface& vk, VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
{
VkSwapchainKHR object = 0;
return Move<VkSwapchainKHR>(check<VkSwapchainKHR>(object), Deleter<VkSwapchainKHR>(vk, device, pAllocator));
}
-Move<VkRenderPass> createRenderPass2KHR (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
-{
- VkRenderPass object = 0;
- VK_CHECK(vk.createRenderPass2KHR(device, pCreateInfo, pAllocator, &object));
- return Move<VkRenderPass>(check<VkRenderPass>(object), Deleter<VkRenderPass>(vk, device, pAllocator));
-}
-
Move<VkDebugReportCallbackEXT> createDebugReportCallbackEXT (const InstanceInterface& vk, VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator)
{
VkDebugReportCallbackEXT object = 0;
case SPIRV_VERSION_1_4:
shader.setEnvTarget(glslang::EshTargetSpv, (glslang::EShTargetLanguageVersion)0x10400);
break;
+ case SPIRV_VERSION_1_5:
+ shader.setEnvTarget(glslang::EshTargetSpv, (glslang::EShTargetLanguageVersion)0x10500);
+ break;
default:
TCU_THROW(InternalError, "Unsupported SPIR-V target version");
}
{
case VK_MAKE_VERSION(1, 0, 0): return SPV_ENV_VULKAN_1_0;
case VK_MAKE_VERSION(1, 1, 0): return allow_1_4 ? SPV_ENV_VULKAN_1_1_SPIRV_1_4 : SPV_ENV_VULKAN_1_1;
+ case VK_MAKE_VERSION(1, 2, 0): return SPV_ENV_VULKAN_1_2;
default:
break;
}
case SPIRV_VERSION_1_2: result = SPV_ENV_UNIVERSAL_1_2; break; //!< SPIR-V 1.2
case SPIRV_VERSION_1_3: result = SPV_ENV_UNIVERSAL_1_3; break; //!< SPIR-V 1.3
case SPIRV_VERSION_1_4: result = SPV_ENV_UNIVERSAL_1_4; break; //!< SPIR-V 1.4
+ case SPIRV_VERSION_1_5: result = SPV_ENV_UNIVERSAL_1_5; break; //!< SPIR-V 1.5
default: TCU_THROW(InternalError, "Unknown SPIR-V version");
}
const char* getSamplerYcbcrRangeName (VkSamplerYcbcrRange value);
const char* getChromaLocationName (VkChromaLocation value);
const char* getDescriptorUpdateTemplateTypeName (VkDescriptorUpdateTemplateType value);
+const char* getDriverIdName (VkDriverId value);
+const char* getShaderFloatControlsIndependenceName (VkShaderFloatControlsIndependence value);
+const char* getSamplerReductionModeName (VkSamplerReductionMode value);
+const char* getSemaphoreTypeName (VkSemaphoreType value);
const char* getColorSpaceKHRName (VkColorSpaceKHR value);
const char* getPresentModeKHRName (VkPresentModeKHR value);
const char* getPerformanceCounterUnitKHRName (VkPerformanceCounterUnitKHR value);
const char* getPerformanceCounterScopeKHRName (VkPerformanceCounterScopeKHR value);
const char* getPerformanceCounterStorageKHRName (VkPerformanceCounterStorageKHR value);
-const char* getDriverIdKHRName (VkDriverIdKHR value);
-const char* getShaderFloatControlsIndependenceKHRName (VkShaderFloatControlsIndependenceKHR value);
-const char* getSemaphoreTypeKHRName (VkSemaphoreTypeKHR value);
const char* getPipelineExecutableStatisticFormatKHRName (VkPipelineExecutableStatisticFormatKHR value);
const char* getDebugReportObjectTypeEXTName (VkDebugReportObjectTypeEXT value);
const char* getRasterizationOrderAMDName (VkRasterizationOrderAMD value);
const char* getViewportCoordinateSwizzleNVName (VkViewportCoordinateSwizzleNV value);
const char* getDiscardRectangleModeEXTName (VkDiscardRectangleModeEXT value);
const char* getConservativeRasterizationModeEXTName (VkConservativeRasterizationModeEXT value);
-const char* getSamplerReductionModeEXTName (VkSamplerReductionModeEXT value);
const char* getBlendOverlapEXTName (VkBlendOverlapEXT value);
const char* getCoverageModulationModeNVName (VkCoverageModulationModeNV value);
const char* getValidationCacheHeaderVersionEXTName (VkValidationCacheHeaderVersionEXT value);
inline tcu::Format::Enum<VkSamplerYcbcrRange> getSamplerYcbcrRangeStr (VkSamplerYcbcrRange value) { return tcu::Format::Enum<VkSamplerYcbcrRange>(getSamplerYcbcrRangeName, value); }
inline tcu::Format::Enum<VkChromaLocation> getChromaLocationStr (VkChromaLocation value) { return tcu::Format::Enum<VkChromaLocation>(getChromaLocationName, value); }
inline tcu::Format::Enum<VkDescriptorUpdateTemplateType> getDescriptorUpdateTemplateTypeStr (VkDescriptorUpdateTemplateType value) { return tcu::Format::Enum<VkDescriptorUpdateTemplateType>(getDescriptorUpdateTemplateTypeName, value); }
+inline tcu::Format::Enum<VkDriverId> getDriverIdStr (VkDriverId value) { return tcu::Format::Enum<VkDriverId>(getDriverIdName, value); }
+inline tcu::Format::Enum<VkShaderFloatControlsIndependence> getShaderFloatControlsIndependenceStr (VkShaderFloatControlsIndependence value) { return tcu::Format::Enum<VkShaderFloatControlsIndependence>(getShaderFloatControlsIndependenceName, value); }
+inline tcu::Format::Enum<VkSamplerReductionMode> getSamplerReductionModeStr (VkSamplerReductionMode value) { return tcu::Format::Enum<VkSamplerReductionMode>(getSamplerReductionModeName, value); }
+inline tcu::Format::Enum<VkSemaphoreType> getSemaphoreTypeStr (VkSemaphoreType value) { return tcu::Format::Enum<VkSemaphoreType>(getSemaphoreTypeName, value); }
inline tcu::Format::Enum<VkColorSpaceKHR> getColorSpaceKHRStr (VkColorSpaceKHR value) { return tcu::Format::Enum<VkColorSpaceKHR>(getColorSpaceKHRName, value); }
inline tcu::Format::Enum<VkPresentModeKHR> getPresentModeKHRStr (VkPresentModeKHR value) { return tcu::Format::Enum<VkPresentModeKHR>(getPresentModeKHRName, value); }
inline tcu::Format::Enum<VkPerformanceCounterUnitKHR> getPerformanceCounterUnitKHRStr (VkPerformanceCounterUnitKHR value) { return tcu::Format::Enum<VkPerformanceCounterUnitKHR>(getPerformanceCounterUnitKHRName, value); }
inline tcu::Format::Enum<VkPerformanceCounterScopeKHR> getPerformanceCounterScopeKHRStr (VkPerformanceCounterScopeKHR value) { return tcu::Format::Enum<VkPerformanceCounterScopeKHR>(getPerformanceCounterScopeKHRName, value); }
inline tcu::Format::Enum<VkPerformanceCounterStorageKHR> getPerformanceCounterStorageKHRStr (VkPerformanceCounterStorageKHR value) { return tcu::Format::Enum<VkPerformanceCounterStorageKHR>(getPerformanceCounterStorageKHRName, value); }
-inline tcu::Format::Enum<VkDriverIdKHR> getDriverIdKHRStr (VkDriverIdKHR value) { return tcu::Format::Enum<VkDriverIdKHR>(getDriverIdKHRName, value); }
-inline tcu::Format::Enum<VkShaderFloatControlsIndependenceKHR> getShaderFloatControlsIndependenceKHRStr (VkShaderFloatControlsIndependenceKHR value) { return tcu::Format::Enum<VkShaderFloatControlsIndependenceKHR>(getShaderFloatControlsIndependenceKHRName, value); }
-inline tcu::Format::Enum<VkSemaphoreTypeKHR> getSemaphoreTypeKHRStr (VkSemaphoreTypeKHR value) { return tcu::Format::Enum<VkSemaphoreTypeKHR>(getSemaphoreTypeKHRName, value); }
inline tcu::Format::Enum<VkPipelineExecutableStatisticFormatKHR> getPipelineExecutableStatisticFormatKHRStr (VkPipelineExecutableStatisticFormatKHR value) { return tcu::Format::Enum<VkPipelineExecutableStatisticFormatKHR>(getPipelineExecutableStatisticFormatKHRName, value); }
inline tcu::Format::Enum<VkDebugReportObjectTypeEXT> getDebugReportObjectTypeEXTStr (VkDebugReportObjectTypeEXT value) { return tcu::Format::Enum<VkDebugReportObjectTypeEXT>(getDebugReportObjectTypeEXTName, value); }
inline tcu::Format::Enum<VkRasterizationOrderAMD> getRasterizationOrderAMDStr (VkRasterizationOrderAMD value) { return tcu::Format::Enum<VkRasterizationOrderAMD>(getRasterizationOrderAMDName, value); }
inline tcu::Format::Enum<VkViewportCoordinateSwizzleNV> getViewportCoordinateSwizzleNVStr (VkViewportCoordinateSwizzleNV value) { return tcu::Format::Enum<VkViewportCoordinateSwizzleNV>(getViewportCoordinateSwizzleNVName, value); }
inline tcu::Format::Enum<VkDiscardRectangleModeEXT> getDiscardRectangleModeEXTStr (VkDiscardRectangleModeEXT value) { return tcu::Format::Enum<VkDiscardRectangleModeEXT>(getDiscardRectangleModeEXTName, value); }
inline tcu::Format::Enum<VkConservativeRasterizationModeEXT> getConservativeRasterizationModeEXTStr (VkConservativeRasterizationModeEXT value) { return tcu::Format::Enum<VkConservativeRasterizationModeEXT>(getConservativeRasterizationModeEXTName, value); }
-inline tcu::Format::Enum<VkSamplerReductionModeEXT> getSamplerReductionModeEXTStr (VkSamplerReductionModeEXT value) { return tcu::Format::Enum<VkSamplerReductionModeEXT>(getSamplerReductionModeEXTName, value); }
inline tcu::Format::Enum<VkBlendOverlapEXT> getBlendOverlapEXTStr (VkBlendOverlapEXT value) { return tcu::Format::Enum<VkBlendOverlapEXT>(getBlendOverlapEXTName, value); }
inline tcu::Format::Enum<VkCoverageModulationModeNV> getCoverageModulationModeNVStr (VkCoverageModulationModeNV value) { return tcu::Format::Enum<VkCoverageModulationModeNV>(getCoverageModulationModeNVName, value); }
inline tcu::Format::Enum<VkValidationCacheHeaderVersionEXT> getValidationCacheHeaderVersionEXTStr (VkValidationCacheHeaderVersionEXT value) { return tcu::Format::Enum<VkValidationCacheHeaderVersionEXT>(getValidationCacheHeaderVersionEXTName, value); }
inline std::ostream& operator<< (std::ostream& s, VkSamplerYcbcrRange value) { return s << getSamplerYcbcrRangeStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkChromaLocation value) { return s << getChromaLocationStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkDescriptorUpdateTemplateType value) { return s << getDescriptorUpdateTemplateTypeStr(value); }
+inline std::ostream& operator<< (std::ostream& s, VkDriverId value) { return s << getDriverIdStr(value); }
+inline std::ostream& operator<< (std::ostream& s, VkShaderFloatControlsIndependence value) { return s << getShaderFloatControlsIndependenceStr(value); }
+inline std::ostream& operator<< (std::ostream& s, VkSamplerReductionMode value) { return s << getSamplerReductionModeStr(value); }
+inline std::ostream& operator<< (std::ostream& s, VkSemaphoreType value) { return s << getSemaphoreTypeStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkColorSpaceKHR value) { return s << getColorSpaceKHRStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkPresentModeKHR value) { return s << getPresentModeKHRStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkPerformanceCounterUnitKHR value) { return s << getPerformanceCounterUnitKHRStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkPerformanceCounterScopeKHR value) { return s << getPerformanceCounterScopeKHRStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkPerformanceCounterStorageKHR value) { return s << getPerformanceCounterStorageKHRStr(value); }
-inline std::ostream& operator<< (std::ostream& s, VkDriverIdKHR value) { return s << getDriverIdKHRStr(value); }
-inline std::ostream& operator<< (std::ostream& s, VkShaderFloatControlsIndependenceKHR value) { return s << getShaderFloatControlsIndependenceKHRStr(value); }
-inline std::ostream& operator<< (std::ostream& s, VkSemaphoreTypeKHR value) { return s << getSemaphoreTypeKHRStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkPipelineExecutableStatisticFormatKHR value) { return s << getPipelineExecutableStatisticFormatKHRStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkDebugReportObjectTypeEXT value) { return s << getDebugReportObjectTypeEXTStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkRasterizationOrderAMD value) { return s << getRasterizationOrderAMDStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkViewportCoordinateSwizzleNV value) { return s << getViewportCoordinateSwizzleNVStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkDiscardRectangleModeEXT value) { return s << getDiscardRectangleModeEXTStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkConservativeRasterizationModeEXT value) { return s << getConservativeRasterizationModeEXTStr(value); }
-inline std::ostream& operator<< (std::ostream& s, VkSamplerReductionModeEXT value) { return s << getSamplerReductionModeEXTStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkBlendOverlapEXT value) { return s << getBlendOverlapEXTStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkCoverageModulationModeNV value) { return s << getCoverageModulationModeNVStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkValidationCacheHeaderVersionEXT value) { return s << getValidationCacheHeaderVersionEXTStr(value); }
tcu::Format::Bitfield<32> getSemaphoreImportFlagsStr (VkSemaphoreImportFlags value);
tcu::Format::Bitfield<32> getExternalSemaphoreHandleTypeFlagsStr (VkExternalSemaphoreHandleTypeFlags value);
tcu::Format::Bitfield<32> getExternalSemaphoreFeatureFlagsStr (VkExternalSemaphoreFeatureFlags value);
+tcu::Format::Bitfield<32> getResolveModeFlagsStr (VkResolveModeFlags value);
+tcu::Format::Bitfield<32> getDescriptorBindingFlagsStr (VkDescriptorBindingFlags value);
+tcu::Format::Bitfield<32> getSemaphoreWaitFlagsStr (VkSemaphoreWaitFlags value);
tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value);
tcu::Format::Bitfield<32> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value);
tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value);
tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value);
tcu::Format::Bitfield<32> getPerformanceCounterDescriptionFlagsKHRStr (VkPerformanceCounterDescriptionFlagsKHR value);
tcu::Format::Bitfield<32> getAcquireProfilingLockFlagsKHRStr (VkAcquireProfilingLockFlagsKHR value);
-tcu::Format::Bitfield<32> getResolveModeFlagsKHRStr (VkResolveModeFlagsKHR value);
-tcu::Format::Bitfield<32> getSemaphoreWaitFlagsKHRStr (VkSemaphoreWaitFlagsKHR value);
tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value);
tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsNVStr (VkExternalMemoryHandleTypeFlagsNV value);
tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsNVStr (VkExternalMemoryFeatureFlagsNV value);
tcu::Format::Bitfield<32> getSurfaceCounterFlagsEXTStr (VkSurfaceCounterFlagsEXT value);
tcu::Format::Bitfield<32> getDebugUtilsMessageSeverityFlagsEXTStr (VkDebugUtilsMessageSeverityFlagsEXT value);
tcu::Format::Bitfield<32> getDebugUtilsMessageTypeFlagsEXTStr (VkDebugUtilsMessageTypeFlagsEXT value);
-tcu::Format::Bitfield<32> getDescriptorBindingFlagsEXTStr (VkDescriptorBindingFlagsEXT value);
tcu::Format::Bitfield<32> getGeometryFlagsNVStr (VkGeometryFlagsNV value);
tcu::Format::Bitfield<32> getGeometryInstanceFlagsNVStr (VkGeometryInstanceFlagsNV value);
tcu::Format::Bitfield<32> getBuildAccelerationStructureFlagsNVStr (VkBuildAccelerationStructureFlagsNV value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMaintenance3Properties& value);
std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutSupport& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDrawParametersFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Features& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Properties& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Features& value);
+std::ostream& operator<< (std::ostream& s, const VkConformanceVersion& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Properties& value);
+std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2& value);
+std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2& value);
+std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2& value);
+std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2& value);
+std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2& value);
+std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverProperties& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64Features& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8Features& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsProperties& value);
+std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingProperties& value);
+std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupport& value);
+std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolve& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolveProperties& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkImageStencilUsageCreateInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxProperties& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentImageInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkAttachmentReferenceStencilLayout& value);
+std::ostream& operator<< (std::ostream& s, const VkAttachmentDescriptionStencilLayout& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreProperties& value);
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreTypeCreateInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreSignalInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeatures& value);
+std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkBufferOpaqueCaptureAddressCreateInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkMemoryOpaqueCaptureAddressAllocateInfo& value);
+std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOpaqueCaptureAddressInfo& value);
std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value);
std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value);
std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value);
std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value);
std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR& value);
std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value);
std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value);
std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeaturesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentImageInfoKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfoKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfoKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2KHR& value);
-std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2KHR& value);
-std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2KHR& value);
-std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2KHR& value);
-std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2KHR& value);
-std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfoKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfoKHR& value);
std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value);
std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value);
std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value);
std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value);
std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value);
std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value);
-std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfoKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeaturesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkConformanceVersionKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverPropertiesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsPropertiesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolveKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolvePropertiesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphorePropertiesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreTypeCreateInfoKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfoKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfoKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreSignalInfoKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& value);
std::ostream& operator<< (std::ostream& s, const VkSurfaceProtectedCapabilitiesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkAttachmentReferenceStencilLayoutKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkAttachmentDescriptionStencilLayoutKHR& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& value);
std::ostream& operator<< (std::ostream& s, const VkPipelineInfoKHR& value);
std::ostream& operator<< (std::ostream& s, const VkPipelineExecutablePropertiesKHR& value);
std::ostream& operator<< (std::ostream& s, const VkDebugUtilsLabelEXT& value);
std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCallbackDataEXT& value);
std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCreateInfoEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfoEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockPropertiesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetInlineUniformBlockEXT& value);
std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierPropertiesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkValidationCacheCreateInfoEXT& value);
std::ostream& operator<< (std::ostream& s, const VkShaderModuleValidationCacheCreateInfoEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT& value);
std::ostream& operator<< (std::ostream& s, const VkShadingRatePaletteNV& value);
std::ostream& operator<< (std::ostream& s, const VkPipelineViewportShadingRateImageStateCreateInfoNV& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShadingRateImageFeaturesNV& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapPropertiesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkRenderPassFragmentDensityMapCreateInfoEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT& value);
std::ostream& operator<< (std::ostream& s, const VkMemoryPriorityAllocateInfoEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressInfoEXT& value);
std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressCreateInfoEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkImageStencilUsageCreateInfoEXT& value);
std::ostream& operator<< (std::ostream& s, const VkValidationFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkCooperativeMatrixPropertiesNV& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixFeaturesNV& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationPropertiesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationLineStateCreateInfoEXT& value);
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& value);
case VK_ERROR_FRAGMENTED_POOL: return "VK_ERROR_FRAGMENTED_POOL";
case VK_ERROR_OUT_OF_POOL_MEMORY: return "VK_ERROR_OUT_OF_POOL_MEMORY";
case VK_ERROR_INVALID_EXTERNAL_HANDLE: return "VK_ERROR_INVALID_EXTERNAL_HANDLE";
+ case VK_ERROR_FRAGMENTATION: return "VK_ERROR_FRAGMENTATION";
+ case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS: return "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS";
case VK_ERROR_SURFACE_LOST_KHR: return "VK_ERROR_SURFACE_LOST_KHR";
case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
case VK_SUBOPTIMAL_KHR: return "VK_SUBOPTIMAL_KHR";
case VK_ERROR_VALIDATION_FAILED_EXT: return "VK_ERROR_VALIDATION_FAILED_EXT";
case VK_ERROR_INVALID_SHADER_NV: return "VK_ERROR_INVALID_SHADER_NV";
case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT: return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
- case VK_ERROR_FRAGMENTATION_EXT: return "VK_ERROR_FRAGMENTATION_EXT";
case VK_ERROR_NOT_PERMITTED_EXT: return "VK_ERROR_NOT_PERMITTED_EXT";
- case VK_ERROR_INVALID_DEVICE_ADDRESS_EXT: return "VK_ERROR_INVALID_DEVICE_ADDRESS_EXT";
case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT: return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT";
case VK_RESULT_MAX_ENUM: return "VK_RESULT_MAX_ENUM";
default: return DE_NULL;
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES";
case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT: return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES";
+ case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO";
+ case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2: return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2";
+ case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2: return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2";
+ case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2: return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2";
+ case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2: return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2";
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2";
+ case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO: return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO";
+ case VK_STRUCTURE_TYPE_SUBPASS_END_INFO: return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES";
+ case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES";
+ case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO";
+ case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES";
+ case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES";
+ case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: return "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES";
+ case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES";
+ case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO";
+ case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO: return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO";
+ case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: return "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES";
+ case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT";
+ case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES";
+ case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: return "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO";
+ case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: return "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO";
+ case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO: return "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO";
+ case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO: return "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES";
+ case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO: return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO";
+ case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: return "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO";
+ case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: return "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO";
+ case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO: return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO";
case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR: return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR: return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR";
case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT: return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT";
case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT: return "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR";
case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
case VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX: return "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX";
case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX: return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT";
case VK_STRUCTURE_TYPE_HDR_METADATA_EXT: return "VK_STRUCTURE_TYPE_HDR_METADATA_EXT";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR";
- case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR";
- case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR: return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR";
- case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR: return "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR";
- case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR: return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR";
- case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR: return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR";
- case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR: return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR";
- case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR: return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR";
- case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR: return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR";
- case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR: return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR";
- case VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR: return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR";
case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR: return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR";
case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR: return "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR";
case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR: return "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR";
case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: return "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: return "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID: return "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT";
- case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT: return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT";
case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT";
- case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT";
case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT";
case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT";
- case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT";
- case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT: return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT";
- case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT: return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT";
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT";
case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR";
case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT";
case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR";
case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD: return "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD";
case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT: return "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP: return "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP";
case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR";
- case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR: return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV";
case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV: return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV";
case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR";
- case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR: return "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR";
- case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR: return "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR";
- case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR: return "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR";
- case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR: return "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL";
case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL: return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL";
case VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL: return "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL";
case VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL: return "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL";
case VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL: return "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL";
case VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL: return "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD: return "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD";
case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD: return "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT";
case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT: return "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT";
case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR: return "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR";
- case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR: return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR";
- case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR: return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT";
- case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT: return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT";
case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT";
- case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT";
case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: return "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV";
case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV: return "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV";
case VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV: return "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR";
case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT: return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT";
case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT: return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT";
case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT: return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT";
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR";
case VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR: return "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR";
case VK_IMAGE_LAYOUT_PREINITIALIZED: return "VK_IMAGE_LAYOUT_PREINITIALIZED";
case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL: return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL";
case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL";
+ case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL: return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL";
+ case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL: return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL";
+ case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL: return "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL";
+ case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL: return "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL";
case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR: return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR: return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR";
case VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV: return "VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV";
case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT: return "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT";
- case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR: return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR";
- case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR: return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR";
- case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR: return "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR";
- case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR: return "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR";
case VK_IMAGE_LAYOUT_MAX_ENUM: return "VK_IMAGE_LAYOUT_MAX_ENUM";
default: return DE_NULL;
}
}
}
+const char* getDriverIdName (VkDriverId value)
+{
+ switch (value)
+ {
+ case VK_DRIVER_ID_AMD_PROPRIETARY: return "VK_DRIVER_ID_AMD_PROPRIETARY";
+ case VK_DRIVER_ID_AMD_OPEN_SOURCE: return "VK_DRIVER_ID_AMD_OPEN_SOURCE";
+ case VK_DRIVER_ID_MESA_RADV: return "VK_DRIVER_ID_MESA_RADV";
+ case VK_DRIVER_ID_NVIDIA_PROPRIETARY: return "VK_DRIVER_ID_NVIDIA_PROPRIETARY";
+ case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS: return "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS";
+ case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA: return "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA";
+ case VK_DRIVER_ID_IMAGINATION_PROPRIETARY: return "VK_DRIVER_ID_IMAGINATION_PROPRIETARY";
+ case VK_DRIVER_ID_QUALCOMM_PROPRIETARY: return "VK_DRIVER_ID_QUALCOMM_PROPRIETARY";
+ case VK_DRIVER_ID_ARM_PROPRIETARY: return "VK_DRIVER_ID_ARM_PROPRIETARY";
+ case VK_DRIVER_ID_GOOGLE_SWIFTSHADER: return "VK_DRIVER_ID_GOOGLE_SWIFTSHADER";
+ case VK_DRIVER_ID_GGP_PROPRIETARY: return "VK_DRIVER_ID_GGP_PROPRIETARY";
+ case VK_DRIVER_ID_BROADCOM_PROPRIETARY: return "VK_DRIVER_ID_BROADCOM_PROPRIETARY";
+ case VK_DRIVER_ID_MAX_ENUM: return "VK_DRIVER_ID_MAX_ENUM";
+ default: return DE_NULL;
+ }
+}
+
+const char* getShaderFloatControlsIndependenceName (VkShaderFloatControlsIndependence value)
+{
+ switch (value)
+ {
+ case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY: return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY";
+ case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL: return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL";
+ case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE: return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE";
+ case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM: return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM";
+ default: return DE_NULL;
+ }
+}
+
+const char* getSamplerReductionModeName (VkSamplerReductionMode value)
+{
+ switch (value)
+ {
+ case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE: return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE";
+ case VK_SAMPLER_REDUCTION_MODE_MIN: return "VK_SAMPLER_REDUCTION_MODE_MIN";
+ case VK_SAMPLER_REDUCTION_MODE_MAX: return "VK_SAMPLER_REDUCTION_MODE_MAX";
+ case VK_SAMPLER_REDUCTION_MODE_MAX_ENUM: return "VK_SAMPLER_REDUCTION_MODE_MAX_ENUM";
+ default: return DE_NULL;
+ }
+}
+
+const char* getSemaphoreTypeName (VkSemaphoreType value)
+{
+ switch (value)
+ {
+ case VK_SEMAPHORE_TYPE_BINARY: return "VK_SEMAPHORE_TYPE_BINARY";
+ case VK_SEMAPHORE_TYPE_TIMELINE: return "VK_SEMAPHORE_TYPE_TIMELINE";
+ case VK_SEMAPHORE_TYPE_MAX_ENUM: return "VK_SEMAPHORE_TYPE_MAX_ENUM";
+ default: return DE_NULL;
+ }
+}
+
const char* getColorSpaceKHRName (VkColorSpaceKHR value)
{
switch (value)
}
}
-const char* getDriverIdKHRName (VkDriverIdKHR value)
-{
- switch (value)
- {
- case VK_DRIVER_ID_AMD_PROPRIETARY_KHR: return "VK_DRIVER_ID_AMD_PROPRIETARY_KHR";
- case VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR: return "VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR";
- case VK_DRIVER_ID_MESA_RADV_KHR: return "VK_DRIVER_ID_MESA_RADV_KHR";
- case VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR: return "VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR";
- case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR: return "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR";
- case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR: return "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR";
- case VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR: return "VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR";
- case VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR: return "VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR";
- case VK_DRIVER_ID_ARM_PROPRIETARY_KHR: return "VK_DRIVER_ID_ARM_PROPRIETARY_KHR";
- case VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR: return "VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR";
- case VK_DRIVER_ID_GGP_PROPRIETARY_KHR: return "VK_DRIVER_ID_GGP_PROPRIETARY_KHR";
- case VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR: return "VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR";
- case VK_DRIVER_ID_MAX_ENUM_KHR: return "VK_DRIVER_ID_MAX_ENUM_KHR";
- default: return DE_NULL;
- }
-}
-
-const char* getShaderFloatControlsIndependenceKHRName (VkShaderFloatControlsIndependenceKHR value)
-{
- switch (value)
- {
- case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR: return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR";
- case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR: return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR";
- case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR: return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR";
- case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR: return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR";
- default: return DE_NULL;
- }
-}
-
-const char* getSemaphoreTypeKHRName (VkSemaphoreTypeKHR value)
-{
- switch (value)
- {
- case VK_SEMAPHORE_TYPE_BINARY_KHR: return "VK_SEMAPHORE_TYPE_BINARY_KHR";
- case VK_SEMAPHORE_TYPE_TIMELINE_KHR: return "VK_SEMAPHORE_TYPE_TIMELINE_KHR";
- case VK_SEMAPHORE_TYPE_MAX_ENUM_KHR: return "VK_SEMAPHORE_TYPE_MAX_ENUM_KHR";
- default: return DE_NULL;
- }
-}
-
const char* getPipelineExecutableStatisticFormatKHRName (VkPipelineExecutableStatisticFormatKHR value)
{
switch (value)
}
}
-const char* getSamplerReductionModeEXTName (VkSamplerReductionModeEXT value)
-{
- switch (value)
- {
- case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT: return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT";
- case VK_SAMPLER_REDUCTION_MODE_MIN_EXT: return "VK_SAMPLER_REDUCTION_MODE_MIN_EXT";
- case VK_SAMPLER_REDUCTION_MODE_MAX_EXT: return "VK_SAMPLER_REDUCTION_MODE_MAX_EXT";
- case VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT: return "VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT";
- default: return DE_NULL;
- }
-}
-
const char* getBlendOverlapEXTName (VkBlendOverlapEXT value)
{
switch (value)
tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT, "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"),
tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT, "VK_FORMAT_FEATURE_DISJOINT_BIT"),
tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"),
+ tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT, "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"),
tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG, "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
- tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT, "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
tcu::Format::BitDesc(VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT, "VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"),
tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR, "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR, "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
+ tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT, "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR, "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"),
tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR, "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"),
tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR, "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"),
tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
tcu::Format::BitDesc(VK_BUFFER_CREATE_PROTECTED_BIT, "VK_BUFFER_CREATE_PROTECTED_BIT"),
+ tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"),
tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT, "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"),
+ tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR, "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
tcu::Format::BitDesc(VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM, "VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
};
return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT, "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
+ tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"),
tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"),
tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"),
tcu::Format::BitDesc(VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT, "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"),
tcu::Format::BitDesc(VK_BUFFER_USAGE_RAY_TRACING_BIT_NV, "VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"),
tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT, "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT"),
+ tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR, "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR"),
tcu::Format::BitDesc(VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM, "VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
};
return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
{
static const tcu::Format::BitDesc s_desc[] =
{
+ tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"),
tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT, "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"),
tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM, "VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM"),
static const tcu::Format::BitDesc s_desc[] =
{
tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
+ tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"),
tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT, "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"),
tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM, "VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
};
{
static const tcu::Format::BitDesc s_desc[] =
{
+ tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"),
tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR"),
tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM, "VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
};
{
static const tcu::Format::BitDesc s_desc[] =
{
- tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
- tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR, "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"),
- tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM, "VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM"),
+ tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
+ tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT, "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"),
+ tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"),
+ tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR, "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"),
+ tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR, "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR"),
+ tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR, "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
+ tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM, "VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM"),
};
return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}
return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}
+tcu::Format::Bitfield<32> getResolveModeFlagsStr (VkResolveModeFlags value)
+{
+ static const tcu::Format::BitDesc s_desc[] =
+ {
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE, "VK_RESOLVE_MODE_NONE"),
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"),
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT, "VK_RESOLVE_MODE_AVERAGE_BIT"),
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT, "VK_RESOLVE_MODE_MIN_BIT"),
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT, "VK_RESOLVE_MODE_MAX_BIT"),
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE_KHR, "VK_RESOLVE_MODE_NONE_KHR"),
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR, "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR"),
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT_KHR, "VK_RESOLVE_MODE_AVERAGE_BIT_KHR"),
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT_KHR, "VK_RESOLVE_MODE_MIN_BIT_KHR"),
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT_KHR, "VK_RESOLVE_MODE_MAX_BIT_KHR"),
+ tcu::Format::BitDesc(VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM, "VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM"),
+ };
+ return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getDescriptorBindingFlagsStr (VkDescriptorBindingFlags value)
+{
+ static const tcu::Format::BitDesc s_desc[] =
+ {
+ tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"),
+ tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT, "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"),
+ tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT, "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"),
+ tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"),
+ tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT, "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
+ tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
+ tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT, "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
+ tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT, "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
+ tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM, "VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM"),
+ };
+ return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getSemaphoreWaitFlagsStr (VkSemaphoreWaitFlags value)
+{
+ static const tcu::Format::BitDesc s_desc[] =
+ {
+ tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT, "VK_SEMAPHORE_WAIT_ANY_BIT"),
+ tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT_KHR, "VK_SEMAPHORE_WAIT_ANY_BIT_KHR"),
+ tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM, "VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM"),
+ };
+ return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
{
static const tcu::Format::BitDesc s_desc[] =
return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}
-tcu::Format::Bitfield<32> getResolveModeFlagsKHRStr (VkResolveModeFlagsKHR value)
-{
- static const tcu::Format::BitDesc s_desc[] =
- {
- tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE_KHR, "VK_RESOLVE_MODE_NONE_KHR"),
- tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR, "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR"),
- tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT_KHR, "VK_RESOLVE_MODE_AVERAGE_BIT_KHR"),
- tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT_KHR, "VK_RESOLVE_MODE_MIN_BIT_KHR"),
- tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT_KHR, "VK_RESOLVE_MODE_MAX_BIT_KHR"),
- tcu::Format::BitDesc(VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR, "VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR"),
- };
- return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
-}
-
-tcu::Format::Bitfield<32> getSemaphoreWaitFlagsKHRStr (VkSemaphoreWaitFlagsKHR value)
-{
- static const tcu::Format::BitDesc s_desc[] =
- {
- tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT_KHR, "VK_SEMAPHORE_WAIT_ANY_BIT_KHR"),
- tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR, "VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR"),
- };
- return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
-}
-
tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
{
static const tcu::Format::BitDesc s_desc[] =
return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}
-tcu::Format::Bitfield<32> getDescriptorBindingFlagsEXTStr (VkDescriptorBindingFlagsEXT value)
-{
- static const tcu::Format::BitDesc s_desc[] =
- {
- tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT, "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
- tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
- tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT, "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
- tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT, "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
- tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT, "VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT"),
- };
- return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
-}
-
tcu::Format::Bitfield<32> getGeometryFlagsNVStr (VkGeometryFlagsNV value)
{
static const tcu::Format::BitDesc s_desc[] =
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
-{
- s << "VkSurfaceCapabilitiesKHR = {\n";
- s << "\tminImageCount = " << value.minImageCount << '\n';
- s << "\tmaxImageCount = " << value.maxImageCount << '\n';
- s << "\tcurrentExtent = " << value.currentExtent << '\n';
- s << "\tminImageExtent = " << value.minImageExtent << '\n';
- s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
- s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
- s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
- s << "\tcurrentTransform = " << value.currentTransform << '\n';
- s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
- s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
- s << '}';
- return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
-{
- s << "VkSurfaceFormatKHR = {\n";
- s << "\tformat = " << value.format << '\n';
- s << "\tcolorSpace = " << value.colorSpace << '\n';
- s << '}';
- return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
-{
- s << "VkSwapchainCreateInfoKHR = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
- s << "\tsurface = " << value.surface << '\n';
- s << "\tminImageCount = " << value.minImageCount << '\n';
- s << "\timageFormat = " << value.imageFormat << '\n';
- s << "\timageColorSpace = " << value.imageColorSpace << '\n';
- s << "\timageExtent = " << value.imageExtent << '\n';
- s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
- s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
- s << "\timageSharingMode = " << value.imageSharingMode << '\n';
- s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
- s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
- s << "\tpreTransform = " << value.preTransform << '\n';
- s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
- s << "\tpresentMode = " << value.presentMode << '\n';
- s << "\tclipped = " << value.clipped << '\n';
- s << "\toldSwapchain = " << value.oldSwapchain << '\n';
- s << '}';
- return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Features& value)
{
- s << "VkPresentInfoKHR = {\n";
+ s << "VkPhysicalDeviceVulkan11Features = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
- s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
- s << "\tswapchainCount = " << value.swapchainCount << '\n';
- s << "\tpSwapchains = " << value.pSwapchains << '\n';
- s << "\tpImageIndices = " << value.pImageIndices << '\n';
- s << "\tpResults = " << value.pResults << '\n';
+ s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
+ s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
+ s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
+ s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
+ s << "\tmultiview = " << value.multiview << '\n';
+ s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
+ s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
+ s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
+ s << "\tvariablePointers = " << value.variablePointers << '\n';
+ s << "\tprotectedMemory = " << value.protectedMemory << '\n';
+ s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
+ s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Properties& value)
{
- s << "VkImageSwapchainCreateInfoKHR = {\n";
+ s << "VkPhysicalDeviceVulkan11Properties = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tswapchain = " << value.swapchain << '\n';
+ s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceUUID))) << '\n';
+ s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.driverUUID))) << '\n';
+ s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceLUID))) << '\n';
+ s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
+ s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
+ s << "\tsubgroupSize = " << value.subgroupSize << '\n';
+ s << "\tsubgroupSupportedStages = " << getShaderStageFlagsStr(value.subgroupSupportedStages) << '\n';
+ s << "\tsubgroupSupportedOperations = " << getSubgroupFeatureFlagsStr(value.subgroupSupportedOperations) << '\n';
+ s << "\tsubgroupQuadOperationsInAllStages = " << value.subgroupQuadOperationsInAllStages << '\n';
+ s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
+ s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
+ s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
+ s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
+ s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
+ s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Features& value)
{
- s << "VkBindImageMemorySwapchainInfoKHR = {\n";
+ s << "VkPhysicalDeviceVulkan12Features = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tswapchain = " << value.swapchain << '\n';
- s << "\timageIndex = " << value.imageIndex << '\n';
+ s << "\tsamplerMirrorClampToEdge = " << value.samplerMirrorClampToEdge << '\n';
+ s << "\tdrawIndirectCount = " << value.drawIndirectCount << '\n';
+ s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
+ s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
+ s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
+ s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
+ s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
+ s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
+ s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
+ s << "\tdescriptorIndexing = " << value.descriptorIndexing << '\n';
+ s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
+ s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
+ s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
+ s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
+ s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
+ s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
+ s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
+ s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
+ s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
+ s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
+ s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
+ s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
+ s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
+ s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
+ s << "\tsamplerFilterMinmax = " << value.samplerFilterMinmax << '\n';
+ s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
+ s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
+ s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
+ s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
+ s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
+ s << "\thostQueryReset = " << value.hostQueryReset << '\n';
+ s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
+ s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
+ s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
+ s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
+ s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
+ s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
+ s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
+ s << "\tshaderOutputViewportIndex = " << value.shaderOutputViewportIndex << '\n';
+ s << "\tshaderOutputLayer = " << value.shaderOutputLayer << '\n';
+ s << "\tsubgroupBroadcastDynamicId = " << value.subgroupBroadcastDynamicId << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkAcquireNextImageInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkConformanceVersion& value)
{
- s << "VkAcquireNextImageInfoKHR = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tswapchain = " << value.swapchain << '\n';
- s << "\ttimeout = " << value.timeout << '\n';
- s << "\tsemaphore = " << value.semaphore << '\n';
- s << "\tfence = " << value.fence << '\n';
- s << "\tdeviceMask = " << value.deviceMask << '\n';
+ s << "VkConformanceVersion = {\n";
+ s << "\tmajor = " << value.major << '\n';
+ s << "\tminor = " << value.minor << '\n';
+ s << "\tsubminor = " << value.subminor << '\n';
+ s << "\tpatch = " << value.patch << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Properties& value)
{
- s << "VkDeviceGroupPresentCapabilitiesKHR = {\n";
+ s << "VkPhysicalDeviceVulkan12Properties = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tpresentMask = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.presentMask), DE_ARRAY_END(value.presentMask)) << '\n';
- s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
- s << '}';
+ s << "\tdriverID = " << value.driverID << '\n';
+ s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
+ s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
+ s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
+ s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
+ s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
+ s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
+ s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
+ s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
+ s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
+ s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
+ s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
+ s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
+ s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
+ s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
+ s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
+ s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
+ s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
+ s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
+ s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
+ s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
+ s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
+ s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
+ s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
+ s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
+ s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
+ s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
+ s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
+ s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
+ s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
+ s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsStr(value.supportedDepthResolveModes) << '\n';
+ s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsStr(value.supportedStencilResolveModes) << '\n';
+ s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
+ s << "\tindependentResolve = " << value.independentResolve << '\n';
+ s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
+ s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
+ s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
+ s << "\tframebufferIntegerColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferIntegerColorSampleCounts) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfo& value)
+{
+ s << "VkImageFormatListCreateInfo = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
+ s << "\tpViewFormats = " << value.pViewFormats << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2& value)
+{
+ s << "VkAttachmentDescription2 = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
+ s << "\tformat = " << value.format << '\n';
+ s << "\tsamples = " << value.samples << '\n';
+ s << "\tloadOp = " << value.loadOp << '\n';
+ s << "\tstoreOp = " << value.storeOp << '\n';
+ s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
+ s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
+ s << "\tinitialLayout = " << value.initialLayout << '\n';
+ s << "\tfinalLayout = " << value.finalLayout << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2& value)
+{
+ s << "VkAttachmentReference2 = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tattachment = " << value.attachment << '\n';
+ s << "\tlayout = " << value.layout << '\n';
+ s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2& value)
+{
+ s << "VkSubpassDescription2 = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
+ s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
+ s << "\tviewMask = " << value.viewMask << '\n';
+ s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
+ s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
+ s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
+ s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
+ s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
+ s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
+ s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
+ s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2& value)
+{
+ s << "VkSubpassDependency2 = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tsrcSubpass = " << value.srcSubpass << '\n';
+ s << "\tdstSubpass = " << value.dstSubpass << '\n';
+ s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
+ s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
+ s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
+ s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
+ s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
+ s << "\tviewOffset = " << value.viewOffset << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2& value)
+{
+ s << "VkRenderPassCreateInfo2 = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
+ s << "\tattachmentCount = " << value.attachmentCount << '\n';
+ s << "\tpAttachments = " << value.pAttachments << '\n';
+ s << "\tsubpassCount = " << value.subpassCount << '\n';
+ s << "\tpSubpasses = " << value.pSubpasses << '\n';
+ s << "\tdependencyCount = " << value.dependencyCount << '\n';
+ s << "\tpDependencies = " << value.pDependencies << '\n';
+ s << "\tcorrelatedViewMaskCount = " << value.correlatedViewMaskCount << '\n';
+ s << "\tpCorrelatedViewMasks = " << value.pCorrelatedViewMasks << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfo& value)
+{
+ s << "VkSubpassBeginInfo = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tcontents = " << value.contents << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfo& value)
+{
+ s << "VkSubpassEndInfo = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeatures& value)
+{
+ s << "VkPhysicalDevice8BitStorageFeatures = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
+ s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
+ s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverProperties& value)
+{
+ s << "VkPhysicalDeviceDriverProperties = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tdriverID = " << value.driverID << '\n';
+ s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
+ s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
+ s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64Features& value)
+{
+ s << "VkPhysicalDeviceShaderAtomicInt64Features = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
+ s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8Features& value)
+{
+ s << "VkPhysicalDeviceShaderFloat16Int8Features = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
+ s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsProperties& value)
+{
+ s << "VkPhysicalDeviceFloatControlsProperties = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
+ s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
+ s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
+ s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
+ s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
+ s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
+ s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
+ s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
+ s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
+ s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
+ s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
+ s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
+ s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
+ s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
+ s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
+ s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
+ s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfo& value)
+{
+ s << "VkDescriptorSetLayoutBindingFlagsCreateInfo = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tbindingCount = " << value.bindingCount << '\n';
+ s << "\tpBindingFlags = " << value.pBindingFlags << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeatures& value)
+{
+ s << "VkPhysicalDeviceDescriptorIndexingFeatures = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
+ s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
+ s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
+ s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
+ s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
+ s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
+ s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
+ s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
+ s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
+ s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
+ s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
+ s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
+ s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
+ s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
+ s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingProperties& value)
+{
+ s << "VkPhysicalDeviceDescriptorIndexingProperties = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
+ s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
+ s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
+ s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
+ s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
+ s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
+ s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
+ s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
+ s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
+ s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
+ s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfo& value)
+{
+ s << "VkDescriptorSetVariableDescriptorCountAllocateInfo = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
+ s << "\tpDescriptorCounts = " << value.pDescriptorCounts << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupport& value)
+{
+ s << "VkDescriptorSetVariableDescriptorCountLayoutSupport = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmaxVariableDescriptorCount = " << value.maxVariableDescriptorCount << '\n';
+ s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolve& value)
{
- s << "VkDeviceGroupPresentInfoKHR = {\n";
+ s << "VkSubpassDescriptionDepthStencilResolve = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tswapchainCount = " << value.swapchainCount << '\n';
- s << "\tpDeviceMasks = " << value.pDeviceMasks << '\n';
- s << "\tmode = " << value.mode << '\n';
+ s << "\tdepthResolveMode = " << value.depthResolveMode << '\n';
+ s << "\tstencilResolveMode = " << value.stencilResolveMode << '\n';
+ s << "\tpDepthStencilResolveAttachment = " << value.pDepthStencilResolveAttachment << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolveProperties& value)
{
- s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
+ s << "VkPhysicalDeviceDepthStencilResolveProperties = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
+ s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsStr(value.supportedDepthResolveModes) << '\n';
+ s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsStr(value.supportedStencilResolveModes) << '\n';
+ s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
+ s << "\tindependentResolve = " << value.independentResolve << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeatures& value)
{
- s << "VkDisplayPropertiesKHR = {\n";
- s << "\tdisplay = " << value.display << '\n';
- s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
- s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
- s << "\tphysicalResolution = " << value.physicalResolution << '\n';
- s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
- s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
- s << "\tpersistentContent = " << value.persistentContent << '\n';
+ s << "VkPhysicalDeviceScalarBlockLayoutFeatures = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkImageStencilUsageCreateInfo& value)
{
- s << "VkDisplayModeParametersKHR = {\n";
- s << "\tvisibleRegion = " << value.visibleRegion << '\n';
- s << "\trefreshRate = " << value.refreshRate << '\n';
+ s << "VkImageStencilUsageCreateInfo = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tstencilUsage = " << getImageUsageFlagsStr(value.stencilUsage) << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfo& value)
{
- s << "VkDisplayModePropertiesKHR = {\n";
- s << "\tdisplayMode = " << value.displayMode << '\n';
- s << "\tparameters = " << value.parameters << '\n';
+ s << "VkSamplerReductionModeCreateInfo = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\treductionMode = " << value.reductionMode << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxProperties& value)
{
- s << "VkDisplayModeCreateInfoKHR = {\n";
+ s << "VkPhysicalDeviceSamplerFilterMinmaxProperties = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
- s << "\tparameters = " << value.parameters << '\n';
+ s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
+ s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeatures& value)
{
- s << "VkDisplayPlaneCapabilitiesKHR = {\n";
- s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
- s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
- s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
- s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
- s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
- s << "\tminDstPosition = " << value.minDstPosition << '\n';
- s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
- s << "\tminDstExtent = " << value.minDstExtent << '\n';
- s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
+ s << "VkPhysicalDeviceVulkanMemoryModelFeatures = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
+ s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
+ s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeatures& value)
{
- s << "VkDisplayPlanePropertiesKHR = {\n";
- s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
- s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
+ s << "VkPhysicalDeviceImagelessFramebufferFeatures = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentImageInfo& value)
{
- s << "VkDisplaySurfaceCreateInfoKHR = {\n";
+ s << "VkFramebufferAttachmentImageInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
- s << "\tdisplayMode = " << value.displayMode << '\n';
- s << "\tplaneIndex = " << value.planeIndex << '\n';
- s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
- s << "\ttransform = " << value.transform << '\n';
- s << "\tglobalAlpha = " << value.globalAlpha << '\n';
- s << "\talphaMode = " << value.alphaMode << '\n';
- s << "\timageExtent = " << value.imageExtent << '\n';
+ s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
+ s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
+ s << "\twidth = " << value.width << '\n';
+ s << "\theight = " << value.height << '\n';
+ s << "\tlayerCount = " << value.layerCount << '\n';
+ s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
+ s << "\tpViewFormats = " << value.pViewFormats << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfo& value)
{
- s << "VkDisplayPresentInfoKHR = {\n";
+ s << "VkFramebufferAttachmentsCreateInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsrcRect = " << value.srcRect << '\n';
- s << "\tdstRect = " << value.dstRect << '\n';
- s << "\tpersistent = " << value.persistent << '\n';
+ s << "\tattachmentImageInfoCount = " << value.attachmentImageInfoCount << '\n';
+ s << "\tpAttachmentImageInfos = " << value.pAttachmentImageInfos << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfo& value)
{
- s << "VkImportMemoryFdInfoKHR = {\n";
+ s << "VkRenderPassAttachmentBeginInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\thandleType = " << value.handleType << '\n';
- s << "\tfd = " << value.fd << '\n';
+ s << "\tattachmentCount = " << value.attachmentCount << '\n';
+ s << "\tpAttachments = " << value.pAttachments << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& value)
{
- s << "VkMemoryFdPropertiesKHR = {\n";
+ s << "VkPhysicalDeviceUniformBufferStandardLayoutFeatures = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
+ s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& value)
{
- s << "VkMemoryGetFdInfoKHR = {\n";
+ s << "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tmemory = " << value.memory << '\n';
- s << "\thandleType = " << value.handleType << '\n';
+ s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& value)
{
- s << "VkImportSemaphoreFdInfoKHR = {\n";
+ s << "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsemaphore = " << value.semaphore << '\n';
- s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
- s << "\thandleType = " << value.handleType << '\n';
- s << "\tfd = " << value.fd << '\n';
+ s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkAttachmentReferenceStencilLayout& value)
{
- s << "VkSemaphoreGetFdInfoKHR = {\n";
+ s << "VkAttachmentReferenceStencilLayout = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsemaphore = " << value.semaphore << '\n';
- s << "\thandleType = " << value.handleType << '\n';
+ s << "\tstencilLayout = " << value.stencilLayout << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkAttachmentDescriptionStencilLayout& value)
{
- s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
+ s << "VkAttachmentDescriptionStencilLayout = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
+ s << "\tstencilInitialLayout = " << value.stencilInitialLayout << '\n';
+ s << "\tstencilFinalLayout = " << value.stencilFinalLayout << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeatures& value)
{
- s << "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = {\n";
+ s << "VkPhysicalDeviceHostQueryResetFeatures = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
- s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
+ s << "\thostQueryReset = " << value.hostQueryReset << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeatures& value)
{
- s << "VkRectLayerKHR = {\n";
- s << "\toffset = " << value.offset << '\n';
- s << "\textent = " << value.extent << '\n';
- s << "\tlayer = " << value.layer << '\n';
+ s << "VkPhysicalDeviceTimelineSemaphoreFeatures = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreProperties& value)
{
- s << "VkPresentRegionKHR = {\n";
- s << "\trectangleCount = " << value.rectangleCount << '\n';
- s << "\tpRectangles = " << value.pRectangles << '\n';
+ s << "VkPhysicalDeviceTimelineSemaphoreProperties = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreTypeCreateInfo& value)
{
- s << "VkPresentRegionsKHR = {\n";
+ s << "VkSemaphoreTypeCreateInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tswapchainCount = " << value.swapchainCount << '\n';
- s << "\tpRegions = " << value.pRegions << '\n';
+ s << "\tsemaphoreType = " << value.semaphoreType << '\n';
+ s << "\tinitialValue = " << value.initialValue << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfo& value)
{
- s << "VkPhysicalDeviceImagelessFramebufferFeaturesKHR = {\n";
+ s << "VkTimelineSemaphoreSubmitInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
+ s << "\twaitSemaphoreValueCount = " << value.waitSemaphoreValueCount << '\n';
+ s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
+ s << "\tsignalSemaphoreValueCount = " << value.signalSemaphoreValueCount << '\n';
+ s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentImageInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfo& value)
{
- s << "VkFramebufferAttachmentImageInfoKHR = {\n";
+ s << "VkSemaphoreWaitInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
- s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
- s << "\twidth = " << value.width << '\n';
- s << "\theight = " << value.height << '\n';
- s << "\tlayerCount = " << value.layerCount << '\n';
- s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
- s << "\tpViewFormats = " << value.pViewFormats << '\n';
+ s << "\tflags = " << getSemaphoreWaitFlagsStr(value.flags) << '\n';
+ s << "\tsemaphoreCount = " << value.semaphoreCount << '\n';
+ s << "\tpSemaphores = " << value.pSemaphores << '\n';
+ s << "\tpValues = " << value.pValues << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreSignalInfo& value)
{
- s << "VkFramebufferAttachmentsCreateInfoKHR = {\n";
+ s << "VkSemaphoreSignalInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tattachmentImageInfoCount = " << value.attachmentImageInfoCount << '\n';
- s << "\tpAttachmentImageInfos = " << value.pAttachmentImageInfos << '\n';
+ s << "\tsemaphore = " << value.semaphore << '\n';
+ s << "\tvalue = " << value.value << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeatures& value)
{
- s << "VkRenderPassAttachmentBeginInfoKHR = {\n";
+ s << "VkPhysicalDeviceBufferDeviceAddressFeatures = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tattachmentCount = " << value.attachmentCount << '\n';
- s << "\tpAttachments = " << value.pAttachments << '\n';
+ s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
+ s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
+ s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressInfo& value)
{
- s << "VkAttachmentDescription2KHR = {\n";
+ s << "VkBufferDeviceAddressInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
- s << "\tformat = " << value.format << '\n';
- s << "\tsamples = " << value.samples << '\n';
- s << "\tloadOp = " << value.loadOp << '\n';
- s << "\tstoreOp = " << value.storeOp << '\n';
- s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
- s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
- s << "\tinitialLayout = " << value.initialLayout << '\n';
- s << "\tfinalLayout = " << value.finalLayout << '\n';
+ s << "\tbuffer = " << value.buffer << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkBufferOpaqueCaptureAddressCreateInfo& value)
{
- s << "VkAttachmentReference2KHR = {\n";
+ s << "VkBufferOpaqueCaptureAddressCreateInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tattachment = " << value.attachment << '\n';
- s << "\tlayout = " << value.layout << '\n';
- s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
+ s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkMemoryOpaqueCaptureAddressAllocateInfo& value)
{
- s << "VkSubpassDescription2KHR = {\n";
+ s << "VkMemoryOpaqueCaptureAddressAllocateInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
- s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
- s << "\tviewMask = " << value.viewMask << '\n';
- s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
- s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
- s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
- s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
- s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
- s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
- s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
- s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
+ s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOpaqueCaptureAddressInfo& value)
{
- s << "VkSubpassDependency2KHR = {\n";
+ s << "VkDeviceMemoryOpaqueCaptureAddressInfo = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsrcSubpass = " << value.srcSubpass << '\n';
- s << "\tdstSubpass = " << value.dstSubpass << '\n';
- s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
- s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
- s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
- s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
- s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
- s << "\tviewOffset = " << value.viewOffset << '\n';
+ s << "\tmemory = " << value.memory << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
+{
+ s << "VkSurfaceCapabilitiesKHR = {\n";
+ s << "\tminImageCount = " << value.minImageCount << '\n';
+ s << "\tmaxImageCount = " << value.maxImageCount << '\n';
+ s << "\tcurrentExtent = " << value.currentExtent << '\n';
+ s << "\tminImageExtent = " << value.minImageExtent << '\n';
+ s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
+ s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
+ s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
+ s << "\tcurrentTransform = " << value.currentTransform << '\n';
+ s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
+ s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
+{
+ s << "VkSurfaceFormatKHR = {\n";
+ s << "\tformat = " << value.format << '\n';
+ s << "\tcolorSpace = " << value.colorSpace << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
+{
+ s << "VkSwapchainCreateInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
+ s << "\tsurface = " << value.surface << '\n';
+ s << "\tminImageCount = " << value.minImageCount << '\n';
+ s << "\timageFormat = " << value.imageFormat << '\n';
+ s << "\timageColorSpace = " << value.imageColorSpace << '\n';
+ s << "\timageExtent = " << value.imageExtent << '\n';
+ s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
+ s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
+ s << "\timageSharingMode = " << value.imageSharingMode << '\n';
+ s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
+ s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
+ s << "\tpreTransform = " << value.preTransform << '\n';
+ s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
+ s << "\tpresentMode = " << value.presentMode << '\n';
+ s << "\tclipped = " << value.clipped << '\n';
+ s << "\toldSwapchain = " << value.oldSwapchain << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
{
- s << "VkRenderPassCreateInfo2KHR = {\n";
+ s << "VkPresentInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
- s << "\tattachmentCount = " << value.attachmentCount << '\n';
- s << "\tpAttachments = " << value.pAttachments << '\n';
- s << "\tsubpassCount = " << value.subpassCount << '\n';
- s << "\tpSubpasses = " << value.pSubpasses << '\n';
- s << "\tdependencyCount = " << value.dependencyCount << '\n';
- s << "\tpDependencies = " << value.pDependencies << '\n';
- s << "\tcorrelatedViewMaskCount = " << value.correlatedViewMaskCount << '\n';
- s << "\tpCorrelatedViewMasks = " << value.pCorrelatedViewMasks << '\n';
+ s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
+ s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
+ s << "\tswapchainCount = " << value.swapchainCount << '\n';
+ s << "\tpSwapchains = " << value.pSwapchains << '\n';
+ s << "\tpImageIndices = " << value.pImageIndices << '\n';
+ s << "\tpResults = " << value.pResults << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
{
- s << "VkSubpassBeginInfoKHR = {\n";
+ s << "VkImageSwapchainCreateInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tcontents = " << value.contents << '\n';
+ s << "\tswapchain = " << value.swapchain << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
{
- s << "VkSubpassEndInfoKHR = {\n";
+ s << "VkBindImageMemorySwapchainInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
+ s << "\tswapchain = " << value.swapchain << '\n';
+ s << "\timageIndex = " << value.imageIndex << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkAcquireNextImageInfoKHR& value)
{
- s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
+ s << "VkAcquireNextImageInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
+ s << "\tswapchain = " << value.swapchain << '\n';
+ s << "\ttimeout = " << value.timeout << '\n';
+ s << "\tsemaphore = " << value.semaphore << '\n';
+ s << "\tfence = " << value.fence << '\n';
+ s << "\tdeviceMask = " << value.deviceMask << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
{
- s << "VkImportFenceFdInfoKHR = {\n";
+ s << "VkDeviceGroupPresentCapabilitiesKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tfence = " << value.fence << '\n';
- s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
- s << "\thandleType = " << value.handleType << '\n';
- s << "\tfd = " << value.fd << '\n';
+ s << "\tpresentMask = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.presentMask), DE_ARRAY_END(value.presentMask)) << '\n';
+ s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
{
- s << "VkFenceGetFdInfoKHR = {\n";
+ s << "VkDeviceGroupPresentInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tfence = " << value.fence << '\n';
- s << "\thandleType = " << value.handleType << '\n';
+ s << "\tswapchainCount = " << value.swapchainCount << '\n';
+ s << "\tpDeviceMasks = " << value.pDeviceMasks << '\n';
+ s << "\tmode = " << value.mode << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
{
- s << "VkPhysicalDevicePerformanceQueryFeaturesKHR = {\n";
+ s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tperformanceCounterQueryPools = " << value.performanceCounterQueryPools << '\n';
- s << "\tperformanceCounterMultipleQueryPools = " << value.performanceCounterMultipleQueryPools << '\n';
+ s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
{
- s << "VkPhysicalDevicePerformanceQueryPropertiesKHR = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tallowCommandBufferQueryCopies = " << value.allowCommandBufferQueryCopies << '\n';
+ s << "VkDisplayPropertiesKHR = {\n";
+ s << "\tdisplay = " << value.display << '\n';
+ s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
+ s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
+ s << "\tphysicalResolution = " << value.physicalResolution << '\n';
+ s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
+ s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
+ s << "\tpersistentContent = " << value.persistentContent << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
{
- s << "VkPerformanceCounterKHR = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tunit = " << value.unit << '\n';
- s << "\tscope = " << value.scope << '\n';
- s << "\tstorage = " << value.storage << '\n';
- s << "\tuuid = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.uuid)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.uuid))) << '\n';
+ s << "VkDisplayModeParametersKHR = {\n";
+ s << "\tvisibleRegion = " << value.visibleRegion << '\n';
+ s << "\trefreshRate = " << value.refreshRate << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterDescriptionKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
{
- s << "VkPerformanceCounterDescriptionKHR = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tflags = " << getPerformanceCounterDescriptionFlagsKHRStr(value.flags) << '\n';
- s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
- s << "\tcategory = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.category)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.category))) << '\n';
- s << "\tdescription = " << (const char*)value.description << '\n';
+ s << "VkDisplayModePropertiesKHR = {\n";
+ s << "\tdisplayMode = " << value.displayMode << '\n';
+ s << "\tparameters = " << value.parameters << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
{
- s << "VkQueryPoolPerformanceCreateInfoKHR = {\n";
+ s << "VkDisplayModeCreateInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
- s << "\tcounterIndexCount = " << value.counterIndexCount << '\n';
- s << "\tpCounterIndices = " << value.pCounterIndices << '\n';
+ s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
+ s << "\tparameters = " << value.parameters << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterResultKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
{
- s << "VkPerformanceCounterResultKHR = {\n";
- s << "\tint32 = " << value.int32 << '\n';
- s << "\tint64 = " << value.int64 << '\n';
- s << "\tuint32 = " << value.uint32 << '\n';
- s << "\tuint64 = " << value.uint64 << '\n';
- s << "\tfloat32 = " << value.float32 << '\n';
- s << "\tfloat64 = " << value.float64 << '\n';
+ s << "VkDisplayPlaneCapabilitiesKHR = {\n";
+ s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
+ s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
+ s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
+ s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
+ s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
+ s << "\tminDstPosition = " << value.minDstPosition << '\n';
+ s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
+ s << "\tminDstExtent = " << value.minDstExtent << '\n';
+ s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkAcquireProfilingLockInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
{
- s << "VkAcquireProfilingLockInfoKHR = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tflags = " << getAcquireProfilingLockFlagsKHRStr(value.flags) << '\n';
- s << "\ttimeout = " << value.timeout << '\n';
+ s << "VkDisplayPlanePropertiesKHR = {\n";
+ s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
+ s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
{
- s << "VkPerformanceQuerySubmitInfoKHR = {\n";
+ s << "VkDisplaySurfaceCreateInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tcounterPassIndex = " << value.counterPassIndex << '\n';
+ s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
+ s << "\tdisplayMode = " << value.displayMode << '\n';
+ s << "\tplaneIndex = " << value.planeIndex << '\n';
+ s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
+ s << "\ttransform = " << value.transform << '\n';
+ s << "\tglobalAlpha = " << value.globalAlpha << '\n';
+ s << "\talphaMode = " << value.alphaMode << '\n';
+ s << "\timageExtent = " << value.imageExtent << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
{
- s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
+ s << "VkDisplayPresentInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsurface = " << value.surface << '\n';
+ s << "\tsrcRect = " << value.srcRect << '\n';
+ s << "\tdstRect = " << value.dstRect << '\n';
+ s << "\tpersistent = " << value.persistent << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
{
- s << "VkSurfaceCapabilities2KHR = {\n";
+ s << "VkImportMemoryFdInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << "\tfd = " << value.fd << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
{
- s << "VkSurfaceFormat2KHR = {\n";
+ s << "VkMemoryFdPropertiesKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
+ s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
{
- s << "VkDisplayProperties2KHR = {\n";
+ s << "VkMemoryGetFdInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tdisplayProperties = " << value.displayProperties << '\n';
+ s << "\tmemory = " << value.memory << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
{
- s << "VkDisplayPlaneProperties2KHR = {\n";
+ s << "VkImportSemaphoreFdInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
+ s << "\tsemaphore = " << value.semaphore << '\n';
+ s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << "\tfd = " << value.fd << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
{
- s << "VkDisplayModeProperties2KHR = {\n";
+ s << "VkSemaphoreGetFdInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
+ s << "\tsemaphore = " << value.semaphore << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
{
- s << "VkDisplayPlaneInfo2KHR = {\n";
+ s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tmode = " << value.mode << '\n';
- s << "\tplaneIndex = " << value.planeIndex << '\n';
+ s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
{
- s << "VkDisplayPlaneCapabilities2KHR = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tcapabilities = " << value.capabilities << '\n';
+ s << "VkRectLayerKHR = {\n";
+ s << "\toffset = " << value.offset << '\n';
+ s << "\textent = " << value.extent << '\n';
+ s << "\tlayer = " << value.layer << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
{
- s << "VkImageFormatListCreateInfoKHR = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
- s << "\tpViewFormats = " << value.pViewFormats << '\n';
+ s << "VkPresentRegionKHR = {\n";
+ s << "\trectangleCount = " << value.rectangleCount << '\n';
+ s << "\tpRectangles = " << value.pRectangles << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
{
- s << "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = {\n";
+ s << "VkPresentRegionsKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
+ s << "\tswapchainCount = " << value.swapchainCount << '\n';
+ s << "\tpRegions = " << value.pRegions << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
{
- s << "VkPhysicalDevice8BitStorageFeaturesKHR = {\n";
+ s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
- s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
- s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
+ s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
{
- s << "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = {\n";
+ s << "VkImportFenceFdInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
- s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
+ s << "\tfence = " << value.fence << '\n';
+ s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << "\tfd = " << value.fd << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
{
- s << "VkPhysicalDeviceShaderClockFeaturesKHR = {\n";
+ s << "VkFenceGetFdInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tshaderSubgroupClock = " << value.shaderSubgroupClock << '\n';
- s << "\tshaderDeviceClock = " << value.shaderDeviceClock << '\n';
+ s << "\tfence = " << value.fence << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkConformanceVersionKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryFeaturesKHR& value)
{
- s << "VkConformanceVersionKHR = {\n";
- s << "\tmajor = " << value.major << '\n';
- s << "\tminor = " << value.minor << '\n';
- s << "\tsubminor = " << value.subminor << '\n';
- s << "\tpatch = " << value.patch << '\n';
+ s << "VkPhysicalDevicePerformanceQueryFeaturesKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tperformanceCounterQueryPools = " << value.performanceCounterQueryPools << '\n';
+ s << "\tperformanceCounterMultipleQueryPools = " << value.performanceCounterMultipleQueryPools << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryPropertiesKHR& value)
{
- s << "VkPhysicalDeviceDriverPropertiesKHR = {\n";
+ s << "VkPhysicalDevicePerformanceQueryPropertiesKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tdriverID = " << value.driverID << '\n';
- s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
- s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
- s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
+ s << "\tallowCommandBufferQueryCopies = " << value.allowCommandBufferQueryCopies << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterKHR& value)
{
- s << "VkPhysicalDeviceFloatControlsPropertiesKHR = {\n";
+ s << "VkPerformanceCounterKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
- s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
- s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
- s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
- s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
- s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
- s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
- s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
- s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
- s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
- s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
- s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
- s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
- s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
- s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
- s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
- s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
+ s << "\tunit = " << value.unit << '\n';
+ s << "\tscope = " << value.scope << '\n';
+ s << "\tstorage = " << value.storage << '\n';
+ s << "\tuuid = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.uuid)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.uuid))) << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolveKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterDescriptionKHR& value)
{
- s << "VkSubpassDescriptionDepthStencilResolveKHR = {\n";
+ s << "VkPerformanceCounterDescriptionKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tdepthResolveMode = " << value.depthResolveMode << '\n';
- s << "\tstencilResolveMode = " << value.stencilResolveMode << '\n';
- s << "\tpDepthStencilResolveAttachment = " << value.pDepthStencilResolveAttachment << '\n';
+ s << "\tflags = " << getPerformanceCounterDescriptionFlagsKHRStr(value.flags) << '\n';
+ s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
+ s << "\tcategory = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.category)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.category))) << '\n';
+ s << "\tdescription = " << (const char*)value.description << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolvePropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceCreateInfoKHR& value)
{
- s << "VkPhysicalDeviceDepthStencilResolvePropertiesKHR = {\n";
+ s << "VkQueryPoolPerformanceCreateInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsKHRStr(value.supportedDepthResolveModes) << '\n';
- s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsKHRStr(value.supportedStencilResolveModes) << '\n';
- s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
- s << "\tindependentResolve = " << value.independentResolve << '\n';
+ s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
+ s << "\tcounterIndexCount = " << value.counterIndexCount << '\n';
+ s << "\tpCounterIndices = " << value.pCounterIndices << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterResultKHR& value)
+{
+ s << "VkPerformanceCounterResultKHR = {\n";
+ s << "\tint32 = " << value.int32 << '\n';
+ s << "\tint64 = " << value.int64 << '\n';
+ s << "\tuint32 = " << value.uint32 << '\n';
+ s << "\tuint64 = " << value.uint64 << '\n';
+ s << "\tfloat32 = " << value.float32 << '\n';
+ s << "\tfloat64 = " << value.float64 << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAcquireProfilingLockInfoKHR& value)
{
- s << "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = {\n";
+ s << "VkAcquireProfilingLockInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
+ s << "\tflags = " << getAcquireProfilingLockFlagsKHRStr(value.flags) << '\n';
+ s << "\ttimeout = " << value.timeout << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphorePropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value)
{
- s << "VkPhysicalDeviceTimelineSemaphorePropertiesKHR = {\n";
+ s << "VkPerformanceQuerySubmitInfoKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
+ s << "\tcounterPassIndex = " << value.counterPassIndex << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreTypeCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
{
- s << "VkSemaphoreTypeCreateInfoKHR = {\n";
+ s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsemaphoreType = " << value.semaphoreType << '\n';
- s << "\tinitialValue = " << value.initialValue << '\n';
+ s << "\tsurface = " << value.surface << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
{
- s << "VkTimelineSemaphoreSubmitInfoKHR = {\n";
+ s << "VkSurfaceCapabilities2KHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\twaitSemaphoreValueCount = " << value.waitSemaphoreValueCount << '\n';
- s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
- s << "\tsignalSemaphoreValueCount = " << value.signalSemaphoreValueCount << '\n';
- s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
+ s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
{
- s << "VkSemaphoreWaitInfoKHR = {\n";
+ s << "VkSurfaceFormat2KHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tflags = " << getSemaphoreWaitFlagsKHRStr(value.flags) << '\n';
- s << "\tsemaphoreCount = " << value.semaphoreCount << '\n';
- s << "\tpSemaphores = " << value.pSemaphores << '\n';
- s << "\tpValues = " << value.pValues << '\n';
+ s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreSignalInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
{
- s << "VkSemaphoreSignalInfoKHR = {\n";
+ s << "VkDisplayProperties2KHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsemaphore = " << value.semaphore << '\n';
- s << "\tvalue = " << value.value << '\n';
+ s << "\tdisplayProperties = " << value.displayProperties << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
{
- s << "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = {\n";
+ s << "VkDisplayPlaneProperties2KHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
- s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
- s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
+ s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSurfaceProtectedCapabilitiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
{
- s << "VkSurfaceProtectedCapabilitiesKHR = {\n";
+ s << "VkDisplayModeProperties2KHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tsupportsProtected = " << value.supportsProtected << '\n';
+ s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
{
- s << "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = {\n";
+ s << "VkDisplayPlaneInfo2KHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
+ s << "\tmode = " << value.mode << '\n';
+ s << "\tplaneIndex = " << value.planeIndex << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkAttachmentReferenceStencilLayoutKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
{
- s << "VkAttachmentReferenceStencilLayoutKHR = {\n";
+ s << "VkDisplayPlaneCapabilities2KHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tstencilLayout = " << value.stencilLayout << '\n';
+ s << "\tcapabilities = " << value.capabilities << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkAttachmentDescriptionStencilLayoutKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value)
{
- s << "VkAttachmentDescriptionStencilLayoutKHR = {\n";
+ s << "VkPhysicalDeviceShaderClockFeaturesKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tstencilInitialLayout = " << value.stencilInitialLayout << '\n';
- s << "\tstencilFinalLayout = " << value.stencilFinalLayout << '\n';
+ s << "\tshaderSubgroupClock = " << value.shaderSubgroupClock << '\n';
+ s << "\tshaderDeviceClock = " << value.shaderDeviceClock << '\n';
s << '}';
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSurfaceProtectedCapabilitiesKHR& value)
{
- s << "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = {\n";
+ s << "VkSurfaceProtectedCapabilitiesKHR = {\n";
s << "\tsType = " << value.sType << '\n';
s << "\tpNext = " << value.pNext << '\n';
- s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
+ s << "\tsupportsProtected = " << value.supportsProtected << '\n';
s << '}';
return s;
}
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfoEXT& value)
-{
- s << "VkSamplerReductionModeCreateInfoEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\treductionMode = " << value.reductionMode << '\n';
- s << '}';
- return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT& value)
-{
- s << "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
- s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
- s << '}';
- return s;
-}
-
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockFeaturesEXT& value)
{
s << "VkPhysicalDeviceInlineUniformBlockFeaturesEXT = {\n";
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT& value)
-{
- s << "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tbindingCount = " << value.bindingCount << '\n';
- s << "\tpBindingFlags = " << value.pBindingFlags << '\n';
- s << '}';
- return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& value)
-{
- s << "VkPhysicalDeviceDescriptorIndexingFeaturesEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
- s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
- s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
- s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
- s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
- s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
- s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
- s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
- s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
- s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
- s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
- s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
- s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
- s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
- s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
- s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
- s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
- s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
- s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
- s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
- s << '}';
- return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& value)
-{
- s << "VkPhysicalDeviceDescriptorIndexingPropertiesEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
- s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
- s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
- s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
- s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
- s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
- s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
- s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
- s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
- s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
- s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
- s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
- s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
- s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
- s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
- s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
- s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
- s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
- s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
- s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
- s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
- s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
- s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
- s << '}';
- return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT& value)
-{
- s << "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
- s << "\tpDescriptorCounts = " << value.pDescriptorCounts << '\n';
- s << '}';
- return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT& value)
-{
- s << "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tmaxVariableDescriptorCount = " << value.maxVariableDescriptorCount << '\n';
- s << '}';
- return s;
-}
-
std::ostream& operator<< (std::ostream& s, const VkShadingRatePaletteNV& value)
{
s << "VkShadingRatePaletteNV = {\n";
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& value)
-{
- s << "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
- s << '}';
- return s;
-}
-
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& value)
{
s << "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = {\n";
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressInfoEXT& value)
-{
- s << "VkBufferDeviceAddressInfoEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tbuffer = " << value.buffer << '\n';
- s << '}';
- return s;
-}
-
std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressCreateInfoEXT& value)
{
s << "VkBufferDeviceAddressCreateInfoEXT = {\n";
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkImageStencilUsageCreateInfoEXT& value)
-{
- s << "VkImageStencilUsageCreateInfoEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\tstencilUsage = " << getImageUsageFlagsStr(value.stencilUsage) << '\n';
- s << '}';
- return s;
-}
-
std::ostream& operator<< (std::ostream& s, const VkValidationFeaturesEXT& value)
{
s << "VkValidationFeaturesEXT = {\n";
return s;
}
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeaturesEXT& value)
-{
- s << "VkPhysicalDeviceHostQueryResetFeaturesEXT = {\n";
- s << "\tsType = " << value.sType << '\n';
- s << "\tpNext = " << value.pNext << '\n';
- s << "\thostQueryReset = " << value.hostQueryReset << '\n';
- s << '}';
- return s;
-}
-
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& value)
{
s << "VkPhysicalDeviceIndexTypeUint8FeaturesEXT = {\n";
VkBool32 shaderDrawParameters;
};
+struct VkPhysicalDeviceVulkan11Features
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 storageBuffer16BitAccess;
+ VkBool32 uniformAndStorageBuffer16BitAccess;
+ VkBool32 storagePushConstant16;
+ VkBool32 storageInputOutput16;
+ VkBool32 multiview;
+ VkBool32 multiviewGeometryShader;
+ VkBool32 multiviewTessellationShader;
+ VkBool32 variablePointersStorageBuffer;
+ VkBool32 variablePointers;
+ VkBool32 protectedMemory;
+ VkBool32 samplerYcbcrConversion;
+ VkBool32 shaderDrawParameters;
+};
+
+struct VkPhysicalDeviceVulkan11Properties
+{
+ VkStructureType sType;
+ void* pNext;
+ deUint8 deviceUUID[VK_UUID_SIZE];
+ deUint8 driverUUID[VK_UUID_SIZE];
+ deUint8 deviceLUID[VK_LUID_SIZE];
+ deUint32 deviceNodeMask;
+ VkBool32 deviceLUIDValid;
+ deUint32 subgroupSize;
+ VkShaderStageFlags subgroupSupportedStages;
+ VkSubgroupFeatureFlags subgroupSupportedOperations;
+ VkBool32 subgroupQuadOperationsInAllStages;
+ VkPointClippingBehavior pointClippingBehavior;
+ deUint32 maxMultiviewViewCount;
+ deUint32 maxMultiviewInstanceIndex;
+ VkBool32 protectedNoFault;
+ deUint32 maxPerSetDescriptors;
+ VkDeviceSize maxMemoryAllocationSize;
+};
+
+struct VkPhysicalDeviceVulkan12Features
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 samplerMirrorClampToEdge;
+ VkBool32 drawIndirectCount;
+ VkBool32 storageBuffer8BitAccess;
+ VkBool32 uniformAndStorageBuffer8BitAccess;
+ VkBool32 storagePushConstant8;
+ VkBool32 shaderBufferInt64Atomics;
+ VkBool32 shaderSharedInt64Atomics;
+ VkBool32 shaderFloat16;
+ VkBool32 shaderInt8;
+ VkBool32 descriptorIndexing;
+ VkBool32 shaderInputAttachmentArrayDynamicIndexing;
+ VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexing;
+ VkBool32 shaderSampledImageArrayNonUniformIndexing;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageImageArrayNonUniformIndexing;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
+ VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
+ VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
+ VkBool32 descriptorBindingSampledImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUpdateUnusedWhilePending;
+ VkBool32 descriptorBindingPartiallyBound;
+ VkBool32 descriptorBindingVariableDescriptorCount;
+ VkBool32 runtimeDescriptorArray;
+ VkBool32 samplerFilterMinmax;
+ VkBool32 scalarBlockLayout;
+ VkBool32 imagelessFramebuffer;
+ VkBool32 uniformBufferStandardLayout;
+ VkBool32 shaderSubgroupExtendedTypes;
+ VkBool32 separateDepthStencilLayouts;
+ VkBool32 hostQueryReset;
+ VkBool32 timelineSemaphore;
+ VkBool32 bufferDeviceAddress;
+ VkBool32 bufferDeviceAddressCaptureReplay;
+ VkBool32 bufferDeviceAddressMultiDevice;
+ VkBool32 vulkanMemoryModel;
+ VkBool32 vulkanMemoryModelDeviceScope;
+ VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
+ VkBool32 shaderOutputViewportIndex;
+ VkBool32 shaderOutputLayer;
+ VkBool32 subgroupBroadcastDynamicId;
+};
+
+struct VkConformanceVersion
+{
+ deUint8 major;
+ deUint8 minor;
+ deUint8 subminor;
+ deUint8 patch;
+};
+
+struct VkPhysicalDeviceVulkan12Properties
+{
+ VkStructureType sType;
+ void* pNext;
+ VkDriverId driverID;
+ char driverName[VK_MAX_DRIVER_NAME_SIZE];
+ char driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+ VkConformanceVersion conformanceVersion;
+ VkShaderFloatControlsIndependence denormBehaviorIndependence;
+ VkShaderFloatControlsIndependence roundingModeIndependence;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat16;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat32;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat64;
+ VkBool32 shaderDenormPreserveFloat16;
+ VkBool32 shaderDenormPreserveFloat32;
+ VkBool32 shaderDenormPreserveFloat64;
+ VkBool32 shaderDenormFlushToZeroFloat16;
+ VkBool32 shaderDenormFlushToZeroFloat32;
+ VkBool32 shaderDenormFlushToZeroFloat64;
+ VkBool32 shaderRoundingModeRTEFloat16;
+ VkBool32 shaderRoundingModeRTEFloat32;
+ VkBool32 shaderRoundingModeRTEFloat64;
+ VkBool32 shaderRoundingModeRTZFloat16;
+ VkBool32 shaderRoundingModeRTZFloat32;
+ VkBool32 shaderRoundingModeRTZFloat64;
+ deUint32 maxUpdateAfterBindDescriptorsInAllPools;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
+ VkBool32 robustBufferAccessUpdateAfterBind;
+ VkBool32 quadDivergentImplicitLod;
+ deUint32 maxPerStageDescriptorUpdateAfterBindSamplers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindSampledImages;
+ deUint32 maxPerStageDescriptorUpdateAfterBindStorageImages;
+ deUint32 maxPerStageDescriptorUpdateAfterBindInputAttachments;
+ deUint32 maxPerStageUpdateAfterBindResources;
+ deUint32 maxDescriptorSetUpdateAfterBindSamplers;
+ deUint32 maxDescriptorSetUpdateAfterBindUniformBuffers;
+ deUint32 maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageBuffers;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+ deUint32 maxDescriptorSetUpdateAfterBindSampledImages;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageImages;
+ deUint32 maxDescriptorSetUpdateAfterBindInputAttachments;
+ VkResolveModeFlags supportedDepthResolveModes;
+ VkResolveModeFlags supportedStencilResolveModes;
+ VkBool32 independentResolveNone;
+ VkBool32 independentResolve;
+ VkBool32 filterMinmaxSingleComponentFormats;
+ VkBool32 filterMinmaxImageComponentMapping;
+ deUint64 maxTimelineSemaphoreValueDifference;
+ VkSampleCountFlags framebufferIntegerColorSampleCounts;
+};
+
+struct VkImageFormatListCreateInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 viewFormatCount;
+ const VkFormat* pViewFormats;
+};
+
+struct VkAttachmentDescription2
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkAttachmentDescriptionFlags flags;
+ VkFormat format;
+ VkSampleCountFlagBits samples;
+ VkAttachmentLoadOp loadOp;
+ VkAttachmentStoreOp storeOp;
+ VkAttachmentLoadOp stencilLoadOp;
+ VkAttachmentStoreOp stencilStoreOp;
+ VkImageLayout initialLayout;
+ VkImageLayout finalLayout;
+};
+
+struct VkAttachmentReference2
+{
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 attachment;
+ VkImageLayout layout;
+ VkImageAspectFlags aspectMask;
+};
+
+struct VkSubpassDescription2
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkSubpassDescriptionFlags flags;
+ VkPipelineBindPoint pipelineBindPoint;
+ deUint32 viewMask;
+ deUint32 inputAttachmentCount;
+ const VkAttachmentReference2* pInputAttachments;
+ deUint32 colorAttachmentCount;
+ const VkAttachmentReference2* pColorAttachments;
+ const VkAttachmentReference2* pResolveAttachments;
+ const VkAttachmentReference2* pDepthStencilAttachment;
+ deUint32 preserveAttachmentCount;
+ const deUint32* pPreserveAttachments;
+};
+
+struct VkSubpassDependency2
+{
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 srcSubpass;
+ deUint32 dstSubpass;
+ VkPipelineStageFlags srcStageMask;
+ VkPipelineStageFlags dstStageMask;
+ VkAccessFlags srcAccessMask;
+ VkAccessFlags dstAccessMask;
+ VkDependencyFlags dependencyFlags;
+ deInt32 viewOffset;
+};
+
+struct VkRenderPassCreateInfo2
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkRenderPassCreateFlags flags;
+ deUint32 attachmentCount;
+ const VkAttachmentDescription2* pAttachments;
+ deUint32 subpassCount;
+ const VkSubpassDescription2* pSubpasses;
+ deUint32 dependencyCount;
+ const VkSubpassDependency2* pDependencies;
+ deUint32 correlatedViewMaskCount;
+ const deUint32* pCorrelatedViewMasks;
+};
+
+struct VkSubpassBeginInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkSubpassContents contents;
+};
+
+struct VkSubpassEndInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+};
+
+struct VkPhysicalDevice8BitStorageFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 storageBuffer8BitAccess;
+ VkBool32 uniformAndStorageBuffer8BitAccess;
+ VkBool32 storagePushConstant8;
+};
+
+struct VkPhysicalDeviceDriverProperties
+{
+ VkStructureType sType;
+ void* pNext;
+ VkDriverId driverID;
+ char driverName[VK_MAX_DRIVER_NAME_SIZE];
+ char driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+ VkConformanceVersion conformanceVersion;
+};
+
+struct VkPhysicalDeviceShaderAtomicInt64Features
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderBufferInt64Atomics;
+ VkBool32 shaderSharedInt64Atomics;
+};
+
+struct VkPhysicalDeviceShaderFloat16Int8Features
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderFloat16;
+ VkBool32 shaderInt8;
+};
+
+struct VkPhysicalDeviceFloatControlsProperties
+{
+ VkStructureType sType;
+ void* pNext;
+ VkShaderFloatControlsIndependence denormBehaviorIndependence;
+ VkShaderFloatControlsIndependence roundingModeIndependence;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat16;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat32;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat64;
+ VkBool32 shaderDenormPreserveFloat16;
+ VkBool32 shaderDenormPreserveFloat32;
+ VkBool32 shaderDenormPreserveFloat64;
+ VkBool32 shaderDenormFlushToZeroFloat16;
+ VkBool32 shaderDenormFlushToZeroFloat32;
+ VkBool32 shaderDenormFlushToZeroFloat64;
+ VkBool32 shaderRoundingModeRTEFloat16;
+ VkBool32 shaderRoundingModeRTEFloat32;
+ VkBool32 shaderRoundingModeRTEFloat64;
+ VkBool32 shaderRoundingModeRTZFloat16;
+ VkBool32 shaderRoundingModeRTZFloat32;
+ VkBool32 shaderRoundingModeRTZFloat64;
+};
+
+struct VkDescriptorSetLayoutBindingFlagsCreateInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 bindingCount;
+ const VkDescriptorBindingFlags* pBindingFlags;
+};
+
+struct VkPhysicalDeviceDescriptorIndexingFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderInputAttachmentArrayDynamicIndexing;
+ VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexing;
+ VkBool32 shaderSampledImageArrayNonUniformIndexing;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageImageArrayNonUniformIndexing;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
+ VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
+ VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
+ VkBool32 descriptorBindingSampledImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUpdateUnusedWhilePending;
+ VkBool32 descriptorBindingPartiallyBound;
+ VkBool32 descriptorBindingVariableDescriptorCount;
+ VkBool32 runtimeDescriptorArray;
+};
+
+struct VkPhysicalDeviceDescriptorIndexingProperties
+{
+ VkStructureType sType;
+ void* pNext;
+ deUint32 maxUpdateAfterBindDescriptorsInAllPools;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
+ VkBool32 robustBufferAccessUpdateAfterBind;
+ VkBool32 quadDivergentImplicitLod;
+ deUint32 maxPerStageDescriptorUpdateAfterBindSamplers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindSampledImages;
+ deUint32 maxPerStageDescriptorUpdateAfterBindStorageImages;
+ deUint32 maxPerStageDescriptorUpdateAfterBindInputAttachments;
+ deUint32 maxPerStageUpdateAfterBindResources;
+ deUint32 maxDescriptorSetUpdateAfterBindSamplers;
+ deUint32 maxDescriptorSetUpdateAfterBindUniformBuffers;
+ deUint32 maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageBuffers;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+ deUint32 maxDescriptorSetUpdateAfterBindSampledImages;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageImages;
+ deUint32 maxDescriptorSetUpdateAfterBindInputAttachments;
+};
+
+struct VkDescriptorSetVariableDescriptorCountAllocateInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 descriptorSetCount;
+ const deUint32* pDescriptorCounts;
+};
+
+struct VkDescriptorSetVariableDescriptorCountLayoutSupport
+{
+ VkStructureType sType;
+ void* pNext;
+ deUint32 maxVariableDescriptorCount;
+};
+
+struct VkSubpassDescriptionDepthStencilResolve
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkResolveModeFlagBits depthResolveMode;
+ VkResolveModeFlagBits stencilResolveMode;
+ const VkAttachmentReference2* pDepthStencilResolveAttachment;
+};
+
+struct VkPhysicalDeviceDepthStencilResolveProperties
+{
+ VkStructureType sType;
+ void* pNext;
+ VkResolveModeFlags supportedDepthResolveModes;
+ VkResolveModeFlags supportedStencilResolveModes;
+ VkBool32 independentResolveNone;
+ VkBool32 independentResolve;
+};
+
+struct VkPhysicalDeviceScalarBlockLayoutFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 scalarBlockLayout;
+};
+
+struct VkImageStencilUsageCreateInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkImageUsageFlags stencilUsage;
+};
+
+struct VkSamplerReductionModeCreateInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkSamplerReductionMode reductionMode;
+};
+
+struct VkPhysicalDeviceSamplerFilterMinmaxProperties
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 filterMinmaxSingleComponentFormats;
+ VkBool32 filterMinmaxImageComponentMapping;
+};
+
+struct VkPhysicalDeviceVulkanMemoryModelFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 vulkanMemoryModel;
+ VkBool32 vulkanMemoryModelDeviceScope;
+ VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
+};
+
+struct VkPhysicalDeviceImagelessFramebufferFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 imagelessFramebuffer;
+};
+
+struct VkFramebufferAttachmentImageInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkImageCreateFlags flags;
+ VkImageUsageFlags usage;
+ deUint32 width;
+ deUint32 height;
+ deUint32 layerCount;
+ deUint32 viewFormatCount;
+ const VkFormat* pViewFormats;
+};
+
+struct VkFramebufferAttachmentsCreateInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 attachmentImageInfoCount;
+ const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos;
+};
+
+struct VkRenderPassAttachmentBeginInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 attachmentCount;
+ const VkImageView* pAttachments;
+};
+
+struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 uniformBufferStandardLayout;
+};
+
+struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderSubgroupExtendedTypes;
+};
+
+struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 separateDepthStencilLayouts;
+};
+
+struct VkAttachmentReferenceStencilLayout
+{
+ VkStructureType sType;
+ void* pNext;
+ VkImageLayout stencilLayout;
+};
+
+struct VkAttachmentDescriptionStencilLayout
+{
+ VkStructureType sType;
+ void* pNext;
+ VkImageLayout stencilInitialLayout;
+ VkImageLayout stencilFinalLayout;
+};
+
+struct VkPhysicalDeviceHostQueryResetFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 hostQueryReset;
+};
+
+struct VkPhysicalDeviceTimelineSemaphoreFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 timelineSemaphore;
+};
+
+struct VkPhysicalDeviceTimelineSemaphoreProperties
+{
+ VkStructureType sType;
+ void* pNext;
+ deUint64 maxTimelineSemaphoreValueDifference;
+};
+
+struct VkSemaphoreTypeCreateInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkSemaphoreType semaphoreType;
+ deUint64 initialValue;
+};
+
+struct VkTimelineSemaphoreSubmitInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 waitSemaphoreValueCount;
+ const deUint64* pWaitSemaphoreValues;
+ deUint32 signalSemaphoreValueCount;
+ const deUint64* pSignalSemaphoreValues;
+};
+
+struct VkSemaphoreWaitInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkSemaphoreWaitFlags flags;
+ deUint32 semaphoreCount;
+ const VkSemaphore* pSemaphores;
+ const deUint64* pValues;
+};
+
+struct VkSemaphoreSignalInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkSemaphore semaphore;
+ deUint64 value;
+};
+
+struct VkPhysicalDeviceBufferDeviceAddressFeatures
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 bufferDeviceAddress;
+ VkBool32 bufferDeviceAddressCaptureReplay;
+ VkBool32 bufferDeviceAddressMultiDevice;
+};
+
+struct VkBufferDeviceAddressInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkBuffer buffer;
+};
+
+struct VkBufferOpaqueCaptureAddressCreateInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ deUint64 opaqueCaptureAddress;
+};
+
+struct VkMemoryOpaqueCaptureAddressAllocateInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ deUint64 opaqueCaptureAddress;
+};
+
+struct VkDeviceMemoryOpaqueCaptureAddressInfo
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkDeviceMemory memory;
+};
+
struct VkSurfaceCapabilitiesKHR
{
deUint32 minImageCount;
deUint32 maxPushDescriptors;
};
-struct VkPhysicalDeviceShaderFloat16Int8FeaturesKHR
-{
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderFloat16;
- VkBool32 shaderInt8;
-};
-
struct VkRectLayerKHR
{
VkOffset2D offset;
const VkPresentRegionKHR* pRegions;
};
-struct VkPhysicalDeviceImagelessFramebufferFeaturesKHR
-{
- VkStructureType sType;
- void* pNext;
- VkBool32 imagelessFramebuffer;
-};
-
-struct VkFramebufferAttachmentImageInfoKHR
-{
- VkStructureType sType;
- const void* pNext;
- VkImageCreateFlags flags;
- VkImageUsageFlags usage;
- deUint32 width;
- deUint32 height;
- deUint32 layerCount;
- deUint32 viewFormatCount;
- const VkFormat* pViewFormats;
-};
-
-struct VkFramebufferAttachmentsCreateInfoKHR
-{
- VkStructureType sType;
- const void* pNext;
- deUint32 attachmentImageInfoCount;
- const VkFramebufferAttachmentImageInfoKHR* pAttachmentImageInfos;
-};
-
-struct VkRenderPassAttachmentBeginInfoKHR
-{
- VkStructureType sType;
- const void* pNext;
- deUint32 attachmentCount;
- const VkImageView* pAttachments;
-};
-
-struct VkAttachmentDescription2KHR
-{
- VkStructureType sType;
- const void* pNext;
- VkAttachmentDescriptionFlags flags;
- VkFormat format;
- VkSampleCountFlagBits samples;
- VkAttachmentLoadOp loadOp;
- VkAttachmentStoreOp storeOp;
- VkAttachmentLoadOp stencilLoadOp;
- VkAttachmentStoreOp stencilStoreOp;
- VkImageLayout initialLayout;
- VkImageLayout finalLayout;
-};
-
-struct VkAttachmentReference2KHR
-{
- VkStructureType sType;
- const void* pNext;
- deUint32 attachment;
- VkImageLayout layout;
- VkImageAspectFlags aspectMask;
-};
-
-struct VkSubpassDescription2KHR
-{
- VkStructureType sType;
- const void* pNext;
- VkSubpassDescriptionFlags flags;
- VkPipelineBindPoint pipelineBindPoint;
- deUint32 viewMask;
- deUint32 inputAttachmentCount;
- const VkAttachmentReference2KHR* pInputAttachments;
- deUint32 colorAttachmentCount;
- const VkAttachmentReference2KHR* pColorAttachments;
- const VkAttachmentReference2KHR* pResolveAttachments;
- const VkAttachmentReference2KHR* pDepthStencilAttachment;
- deUint32 preserveAttachmentCount;
- const deUint32* pPreserveAttachments;
-};
-
-struct VkSubpassDependency2KHR
-{
- VkStructureType sType;
- const void* pNext;
- deUint32 srcSubpass;
- deUint32 dstSubpass;
- VkPipelineStageFlags srcStageMask;
- VkPipelineStageFlags dstStageMask;
- VkAccessFlags srcAccessMask;
- VkAccessFlags dstAccessMask;
- VkDependencyFlags dependencyFlags;
- deInt32 viewOffset;
-};
-
-struct VkRenderPassCreateInfo2KHR
-{
- VkStructureType sType;
- const void* pNext;
- VkRenderPassCreateFlags flags;
- deUint32 attachmentCount;
- const VkAttachmentDescription2KHR* pAttachments;
- deUint32 subpassCount;
- const VkSubpassDescription2KHR* pSubpasses;
- deUint32 dependencyCount;
- const VkSubpassDependency2KHR* pDependencies;
- deUint32 correlatedViewMaskCount;
- const deUint32* pCorrelatedViewMasks;
-};
-
-struct VkSubpassBeginInfoKHR
-{
- VkStructureType sType;
- const void* pNext;
- VkSubpassContents contents;
-};
-
-struct VkSubpassEndInfoKHR
-{
- VkStructureType sType;
- const void* pNext;
-};
-
struct VkSharedPresentSurfaceCapabilitiesKHR
{
VkStructureType sType;
{
VkStructureType sType;
const void* pNext;
- deUint32 queueFamilyIndex;
- deUint32 counterIndexCount;
- const deUint32* pCounterIndices;
-};
-
-union VkPerformanceCounterResultKHR
-{
- deInt32 int32;
- deInt64 int64;
- deUint32 uint32;
- deUint64 uint64;
- float float32;
- double float64;
-};
-
-struct VkAcquireProfilingLockInfoKHR
-{
- VkStructureType sType;
- const void* pNext;
- VkAcquireProfilingLockFlagsKHR flags;
- deUint64 timeout;
-};
-
-struct VkPerformanceQuerySubmitInfoKHR
-{
- VkStructureType sType;
- const void* pNext;
- deUint32 counterPassIndex;
-};
-
-struct VkPhysicalDeviceSurfaceInfo2KHR
-{
- VkStructureType sType;
- const void* pNext;
- VkSurfaceKHR surface;
-};
-
-struct VkSurfaceCapabilities2KHR
-{
- VkStructureType sType;
- void* pNext;
- VkSurfaceCapabilitiesKHR surfaceCapabilities;
-};
-
-struct VkSurfaceFormat2KHR
-{
- VkStructureType sType;
- void* pNext;
- VkSurfaceFormatKHR surfaceFormat;
-};
-
-struct VkDisplayProperties2KHR
-{
- VkStructureType sType;
- void* pNext;
- VkDisplayPropertiesKHR displayProperties;
-};
-
-struct VkDisplayPlaneProperties2KHR
-{
- VkStructureType sType;
- void* pNext;
- VkDisplayPlanePropertiesKHR displayPlaneProperties;
-};
-
-struct VkDisplayModeProperties2KHR
-{
- VkStructureType sType;
- void* pNext;
- VkDisplayModePropertiesKHR displayModeProperties;
-};
-
-struct VkDisplayPlaneInfo2KHR
-{
- VkStructureType sType;
- const void* pNext;
- VkDisplayModeKHR mode;
- deUint32 planeIndex;
-};
-
-struct VkDisplayPlaneCapabilities2KHR
-{
- VkStructureType sType;
- void* pNext;
- VkDisplayPlaneCapabilitiesKHR capabilities;
-};
-
-struct VkImageFormatListCreateInfoKHR
-{
- VkStructureType sType;
- const void* pNext;
- deUint32 viewFormatCount;
- const VkFormat* pViewFormats;
-};
-
-struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR
-{
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderSubgroupExtendedTypes;
-};
-
-struct VkPhysicalDevice8BitStorageFeaturesKHR
-{
- VkStructureType sType;
- void* pNext;
- VkBool32 storageBuffer8BitAccess;
- VkBool32 uniformAndStorageBuffer8BitAccess;
- VkBool32 storagePushConstant8;
-};
-
-struct VkPhysicalDeviceShaderAtomicInt64FeaturesKHR
-{
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderBufferInt64Atomics;
- VkBool32 shaderSharedInt64Atomics;
-};
-
-struct VkPhysicalDeviceShaderClockFeaturesKHR
-{
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderSubgroupClock;
- VkBool32 shaderDeviceClock;
-};
-
-struct VkConformanceVersionKHR
-{
- deUint8 major;
- deUint8 minor;
- deUint8 subminor;
- deUint8 patch;
-};
-
-struct VkPhysicalDeviceDriverPropertiesKHR
-{
- VkStructureType sType;
- void* pNext;
- VkDriverIdKHR driverID;
- char driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
- char driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
- VkConformanceVersionKHR conformanceVersion;
+ deUint32 queueFamilyIndex;
+ deUint32 counterIndexCount;
+ const deUint32* pCounterIndices;
};
-struct VkPhysicalDeviceFloatControlsPropertiesKHR
-{
- VkStructureType sType;
- void* pNext;
- VkShaderFloatControlsIndependenceKHR denormBehaviorIndependence;
- VkShaderFloatControlsIndependenceKHR roundingModeIndependence;
- VkBool32 shaderSignedZeroInfNanPreserveFloat16;
- VkBool32 shaderSignedZeroInfNanPreserveFloat32;
- VkBool32 shaderSignedZeroInfNanPreserveFloat64;
- VkBool32 shaderDenormPreserveFloat16;
- VkBool32 shaderDenormPreserveFloat32;
- VkBool32 shaderDenormPreserveFloat64;
- VkBool32 shaderDenormFlushToZeroFloat16;
- VkBool32 shaderDenormFlushToZeroFloat32;
- VkBool32 shaderDenormFlushToZeroFloat64;
- VkBool32 shaderRoundingModeRTEFloat16;
- VkBool32 shaderRoundingModeRTEFloat32;
- VkBool32 shaderRoundingModeRTEFloat64;
- VkBool32 shaderRoundingModeRTZFloat16;
- VkBool32 shaderRoundingModeRTZFloat32;
- VkBool32 shaderRoundingModeRTZFloat64;
-};
-
-struct VkSubpassDescriptionDepthStencilResolveKHR
+union VkPerformanceCounterResultKHR
{
- VkStructureType sType;
- const void* pNext;
- VkResolveModeFlagBitsKHR depthResolveMode;
- VkResolveModeFlagBitsKHR stencilResolveMode;
- const VkAttachmentReference2KHR* pDepthStencilResolveAttachment;
+ deInt32 int32;
+ deInt64 int64;
+ deUint32 uint32;
+ deUint64 uint64;
+ float float32;
+ double float64;
};
-struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR
+struct VkAcquireProfilingLockInfoKHR
{
- VkStructureType sType;
- void* pNext;
- VkResolveModeFlagsKHR supportedDepthResolveModes;
- VkResolveModeFlagsKHR supportedStencilResolveModes;
- VkBool32 independentResolveNone;
- VkBool32 independentResolve;
+ VkStructureType sType;
+ const void* pNext;
+ VkAcquireProfilingLockFlagsKHR flags;
+ deUint64 timeout;
};
-struct VkPhysicalDeviceTimelineSemaphoreFeaturesKHR
+struct VkPerformanceQuerySubmitInfoKHR
{
VkStructureType sType;
- void* pNext;
- VkBool32 timelineSemaphore;
+ const void* pNext;
+ deUint32 counterPassIndex;
};
-struct VkPhysicalDeviceTimelineSemaphorePropertiesKHR
+struct VkPhysicalDeviceSurfaceInfo2KHR
{
VkStructureType sType;
- void* pNext;
- deUint64 maxTimelineSemaphoreValueDifference;
+ const void* pNext;
+ VkSurfaceKHR surface;
};
-struct VkSemaphoreTypeCreateInfoKHR
+struct VkSurfaceCapabilities2KHR
{
- VkStructureType sType;
- const void* pNext;
- VkSemaphoreTypeKHR semaphoreType;
- deUint64 initialValue;
+ VkStructureType sType;
+ void* pNext;
+ VkSurfaceCapabilitiesKHR surfaceCapabilities;
};
-struct VkTimelineSemaphoreSubmitInfoKHR
+struct VkSurfaceFormat2KHR
{
- VkStructureType sType;
- const void* pNext;
- deUint32 waitSemaphoreValueCount;
- const deUint64* pWaitSemaphoreValues;
- deUint32 signalSemaphoreValueCount;
- const deUint64* pSignalSemaphoreValues;
+ VkStructureType sType;
+ void* pNext;
+ VkSurfaceFormatKHR surfaceFormat;
};
-struct VkSemaphoreWaitInfoKHR
+struct VkDisplayProperties2KHR
{
VkStructureType sType;
- const void* pNext;
- VkSemaphoreWaitFlagsKHR flags;
- deUint32 semaphoreCount;
- const VkSemaphore* pSemaphores;
- const deUint64* pValues;
-};
-
-struct VkSemaphoreSignalInfoKHR
-{
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- deUint64 value;
+ void* pNext;
+ VkDisplayPropertiesKHR displayProperties;
};
-struct VkPhysicalDeviceVulkanMemoryModelFeaturesKHR
+struct VkDisplayPlaneProperties2KHR
{
- VkStructureType sType;
- void* pNext;
- VkBool32 vulkanMemoryModel;
- VkBool32 vulkanMemoryModelDeviceScope;
- VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
+ VkStructureType sType;
+ void* pNext;
+ VkDisplayPlanePropertiesKHR displayPlaneProperties;
};
-struct VkSurfaceProtectedCapabilitiesKHR
+struct VkDisplayModeProperties2KHR
{
- VkStructureType sType;
- const void* pNext;
- VkBool32 supportsProtected;
+ VkStructureType sType;
+ void* pNext;
+ VkDisplayModePropertiesKHR displayModeProperties;
};
-struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR
+struct VkDisplayPlaneInfo2KHR
{
- VkStructureType sType;
- void* pNext;
- VkBool32 separateDepthStencilLayouts;
+ VkStructureType sType;
+ const void* pNext;
+ VkDisplayModeKHR mode;
+ deUint32 planeIndex;
};
-struct VkAttachmentReferenceStencilLayoutKHR
+struct VkDisplayPlaneCapabilities2KHR
{
- VkStructureType sType;
- void* pNext;
- VkImageLayout stencilLayout;
+ VkStructureType sType;
+ void* pNext;
+ VkDisplayPlaneCapabilitiesKHR capabilities;
};
-struct VkAttachmentDescriptionStencilLayoutKHR
+struct VkPhysicalDeviceShaderClockFeaturesKHR
{
VkStructureType sType;
void* pNext;
- VkImageLayout stencilInitialLayout;
- VkImageLayout stencilFinalLayout;
+ VkBool32 shaderSubgroupClock;
+ VkBool32 shaderDeviceClock;
};
-struct VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR
+struct VkSurfaceProtectedCapabilitiesKHR
{
VkStructureType sType;
- void* pNext;
- VkBool32 uniformBufferStandardLayout;
+ const void* pNext;
+ VkBool32 supportsProtected;
};
struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
void* pUserData;
};
-struct VkSamplerReductionModeCreateInfoEXT
-{
- VkStructureType sType;
- const void* pNext;
- VkSamplerReductionModeEXT reductionMode;
-};
-
-struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-{
- VkStructureType sType;
- void* pNext;
- VkBool32 filterMinmaxSingleComponentFormats;
- VkBool32 filterMinmaxImageComponentMapping;
-};
-
struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT
{
VkStructureType sType;
VkValidationCacheEXT validationCache;
};
-struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-{
- VkStructureType sType;
- const void* pNext;
- deUint32 bindingCount;
- const VkDescriptorBindingFlagsEXT* pBindingFlags;
-};
-
-struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-{
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderInputAttachmentArrayDynamicIndexing;
- VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
- VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
- VkBool32 shaderUniformBufferArrayNonUniformIndexing;
- VkBool32 shaderSampledImageArrayNonUniformIndexing;
- VkBool32 shaderStorageBufferArrayNonUniformIndexing;
- VkBool32 shaderStorageImageArrayNonUniformIndexing;
- VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
- VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
- VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
- VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
- VkBool32 descriptorBindingSampledImageUpdateAfterBind;
- VkBool32 descriptorBindingStorageImageUpdateAfterBind;
- VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
- VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
- VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
- VkBool32 descriptorBindingUpdateUnusedWhilePending;
- VkBool32 descriptorBindingPartiallyBound;
- VkBool32 descriptorBindingVariableDescriptorCount;
- VkBool32 runtimeDescriptorArray;
-};
-
-struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-{
- VkStructureType sType;
- void* pNext;
- deUint32 maxUpdateAfterBindDescriptorsInAllPools;
- VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
- VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
- VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
- VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
- VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
- VkBool32 robustBufferAccessUpdateAfterBind;
- VkBool32 quadDivergentImplicitLod;
- deUint32 maxPerStageDescriptorUpdateAfterBindSamplers;
- deUint32 maxPerStageDescriptorUpdateAfterBindUniformBuffers;
- deUint32 maxPerStageDescriptorUpdateAfterBindStorageBuffers;
- deUint32 maxPerStageDescriptorUpdateAfterBindSampledImages;
- deUint32 maxPerStageDescriptorUpdateAfterBindStorageImages;
- deUint32 maxPerStageDescriptorUpdateAfterBindInputAttachments;
- deUint32 maxPerStageUpdateAfterBindResources;
- deUint32 maxDescriptorSetUpdateAfterBindSamplers;
- deUint32 maxDescriptorSetUpdateAfterBindUniformBuffers;
- deUint32 maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
- deUint32 maxDescriptorSetUpdateAfterBindStorageBuffers;
- deUint32 maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
- deUint32 maxDescriptorSetUpdateAfterBindSampledImages;
- deUint32 maxDescriptorSetUpdateAfterBindStorageImages;
- deUint32 maxDescriptorSetUpdateAfterBindInputAttachments;
-};
-
-struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-{
- VkStructureType sType;
- const void* pNext;
- deUint32 descriptorSetCount;
- const deUint32* pDescriptorCounts;
-};
-
-struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-{
- VkStructureType sType;
- void* pNext;
- deUint32 maxVariableDescriptorCount;
-};
-
struct VkShadingRatePaletteNV
{
deUint32 shadingRatePaletteEntryCount;
VkAttachmentReference fragmentDensityMapAttachment;
};
-struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT
-{
- VkStructureType sType;
- void* pNext;
- VkBool32 scalarBlockLayout;
-};
-
struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT
{
VkStructureType sType;
VkBool32 bufferDeviceAddressMultiDevice;
};
-struct VkBufferDeviceAddressInfoEXT
-{
- VkStructureType sType;
- const void* pNext;
- VkBuffer buffer;
-};
-
struct VkBufferDeviceAddressCreateInfoEXT
{
VkStructureType sType;
VkDeviceAddress deviceAddress;
};
-struct VkImageStencilUsageCreateInfoEXT
-{
- VkStructureType sType;
- const void* pNext;
- VkImageUsageFlags stencilUsage;
-};
-
struct VkValidationFeaturesEXT
{
VkStructureType sType;
deUint16 lineStipplePattern;
};
-struct VkPhysicalDeviceHostQueryResetFeaturesEXT
-{
- VkStructureType sType;
- void* pNext;
- VkBool32 hostQueryReset;
-};
-
struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT
{
VkStructureType sType;
typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
-typedef VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR;
+typedef VkConformanceVersion VkConformanceVersionKHR;
+
+typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;
+
+typedef VkAttachmentDescription2 VkAttachmentDescription2KHR;
+
+typedef VkAttachmentReference2 VkAttachmentReference2KHR;
+
+typedef VkSubpassDescription2 VkSubpassDescription2KHR;
+
+typedef VkSubpassDependency2 VkSubpassDependency2KHR;
+
+typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
+
+typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;
+
+typedef VkSubpassEndInfo VkSubpassEndInfoKHR;
+
+typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
+
+typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;
+
+typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
+
+typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
+
+typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
+
+typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
+
+typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
+
+typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;
+
+typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
+
+typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
+
+typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
+
+typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;
+
+typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+
+typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
+
+typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
+
+typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;
+
+typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;
+
+typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;
+
+typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+
+typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
+
+typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+
+typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;
+
+typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;
+
+typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
+
+typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
+
+typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
+
+typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;
+
+typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
+
+typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;
+
+typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;
+
+typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
+
+typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;
+
+typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;
+
+typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;
typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
void getCoreDeviceExtensionsImpl (deUint32 coreVersion, ::std::vector<const char*>& dst)
{
+ if (coreVersion >= VK_API_VERSION_1_2)
+ {
+ dst.push_back("VK_KHR_sampler_mirror_clamp_to_edge");
+ dst.push_back("VK_KHR_shader_float16_int8");
+ dst.push_back("VK_KHR_imageless_framebuffer");
+ dst.push_back("VK_KHR_create_renderpass2");
+ dst.push_back("VK_KHR_image_format_list");
+ dst.push_back("VK_KHR_draw_indirect_count");
+ dst.push_back("VK_KHR_shader_subgroup_extended_types");
+ dst.push_back("VK_KHR_8bit_storage");
+ dst.push_back("VK_KHR_shader_atomic_int64");
+ dst.push_back("VK_KHR_driver_properties");
+ dst.push_back("VK_KHR_shader_float_controls");
+ dst.push_back("VK_KHR_depth_stencil_resolve");
+ dst.push_back("VK_KHR_timeline_semaphore");
+ dst.push_back("VK_KHR_vulkan_memory_model");
+ dst.push_back("VK_KHR_spirv_1_4");
+ dst.push_back("VK_KHR_separate_depth_stencil_layouts");
+ dst.push_back("VK_KHR_uniform_buffer_standard_layout");
+ dst.push_back("VK_KHR_buffer_device_address");
+ dst.push_back("VK_EXT_sampler_filter_minmax");
+ dst.push_back("VK_EXT_descriptor_indexing");
+ dst.push_back("VK_EXT_shader_viewport_index_layer");
+ dst.push_back("VK_EXT_scalar_block_layout");
+ dst.push_back("VK_EXT_separate_stencil_usage");
+ dst.push_back("VK_EXT_host_query_reset");
+ }
if (coreVersion >= VK_API_VERSION_1_1)
{
dst.push_back("VK_KHR_multiview");
return res;
}
+inline VkConformanceVersion makeConformanceVersion (deUint8 major, deUint8 minor, deUint8 subminor, deUint8 patch)
+{
+ VkConformanceVersion res;
+ res.major = major;
+ res.minor = minor;
+ res.subminor = subminor;
+ res.patch = patch;
+ return res;
+}
+
inline VkSurfaceFormatKHR makeSurfaceFormatKHR (VkFormat format, VkColorSpaceKHR colorSpace)
{
VkSurfaceFormatKHR res;
return res;
}
-inline VkConformanceVersionKHR makeConformanceVersionKHR (deUint8 major, deUint8 minor, deUint8 subminor, deUint8 patch)
-{
- VkConformanceVersionKHR res;
- res.major = major;
- res.minor = minor;
- res.subminor = subminor;
- res.patch = patch;
- return res;
-}
-
inline VkShaderResourceUsageAMD makeShaderResourceUsageAMD (deUint32 numUsedVgprs, deUint32 numUsedSgprs, deUint32 ldsSizePerLocalWorkGroup, deUintptr ldsUsageSizeInBytes, deUintptr scratchMemUsageInBytes)
{
VkShaderResourceUsageAMD res;
virtual void destroyDescriptorUpdateTemplate (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const = 0;
virtual void updateDescriptorSetWithTemplate (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const = 0;
virtual void getDescriptorSetLayoutSupport (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const = 0;
+virtual void cmdDrawIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual void cmdDrawIndexedIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual VkResult createRenderPass2 (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const = 0;
+virtual void cmdBeginRenderPass2 (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo) const = 0;
+virtual void cmdNextSubpass2 (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo) const = 0;
+virtual void cmdEndRenderPass2 (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) const = 0;
+virtual void resetQueryPool (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const = 0;
+virtual VkResult getSemaphoreCounterValue (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const = 0;
+virtual VkResult waitSemaphores (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout) const = 0;
+virtual VkResult signalSemaphore (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) const = 0;
+virtual VkDeviceAddress getBufferDeviceAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const = 0;
+virtual uint64_t getBufferOpaqueCaptureAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const = 0;
+virtual uint64_t getDeviceMemoryOpaqueCaptureAddress (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) const = 0;
virtual VkResult createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const = 0;
virtual void destroySwapchainKHR (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const = 0;
virtual VkResult getSwapchainImagesKHR (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const = 0;
virtual VkResult getSemaphoreFdKHR (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
virtual void cmdPushDescriptorSetKHR (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const = 0;
virtual void cmdPushDescriptorSetWithTemplateKHR (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const = 0;
-virtual VkResult createRenderPass2KHR (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const = 0;
-virtual void cmdBeginRenderPass2KHR (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo) const = 0;
-virtual void cmdNextSubpass2KHR (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo) const = 0;
-virtual void cmdEndRenderPass2KHR (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo) const = 0;
virtual VkResult getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain) const = 0;
virtual VkResult importFenceFdKHR (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const = 0;
virtual VkResult getFenceFdKHR (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
virtual VkResult acquireProfilingLockKHR (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) const = 0;
virtual void releaseProfilingLockKHR (VkDevice device) const = 0;
-virtual void cmdDrawIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
-virtual void cmdDrawIndexedIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
-virtual VkResult getSemaphoreCounterValueKHR (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const = 0;
-virtual VkResult waitSemaphoresKHR (VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout) const = 0;
-virtual VkResult signalSemaphoreKHR (VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo) const = 0;
virtual VkResult getPipelineExecutablePropertiesKHR (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) const = 0;
virtual VkResult getPipelineExecutableStatisticsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) const = 0;
virtual VkResult getPipelineExecutableInternalRepresentationsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) const = 0;
virtual VkResult queueSetPerformanceConfigurationINTEL (VkQueue queue, VkPerformanceConfigurationINTEL configuration) const = 0;
virtual VkResult getPerformanceParameterINTEL (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) const = 0;
virtual void setLocalDimmingAMD (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) const = 0;
-virtual VkDeviceAddress getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo) const = 0;
+virtual VkDeviceAddress getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const = 0;
virtual void cmdSetLineStippleEXT (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern) const = 0;
-virtual void resetQueryPoolEXT (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const = 0;
virtual VkResult getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const = 0;
virtual VkResult getMemoryAndroidHardwareBufferANDROID (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const = 0;
virtual VkResult getMemoryWin32HandleKHR (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
VK_ERROR_FRAGMENTED_POOL = -12,
VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
+ VK_ERROR_FRAGMENTATION = -1000161000,
+ VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
VK_ERROR_SURFACE_LOST_KHR = -1000000000,
VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
VK_SUBOPTIMAL_KHR = 1000001003,
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
VK_ERROR_INVALID_SHADER_NV = -1000012000,
VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
- VK_ERROR_FRAGMENTATION_EXT = -1000161000,
VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
- VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000244000,
VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
+ VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
+ VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
+ VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
VK_RESULT_END_RANGE = VK_INCOMPLETE,
VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,
+ VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002,
+ VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004,
+ VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005,
+ VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,
+ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,
+ VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,
+ VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002,
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,
+ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004,
+ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001,
+ VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,
+ VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,
+ VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,
VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000,
VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002,
- VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000,
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002,
- VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003,
- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004,
- VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005,
- VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006,
VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
- VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001,
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002,
VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
- VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004,
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000,
VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,
VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000,
VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001,
- VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002,
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003,
- VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004,
- VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,
VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000,
VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,
VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003,
VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004,
VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000,
VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000,
VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002,
VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000,
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001,
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
- VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000,
VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,
VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000,
VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000,
VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,
VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000,
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,
VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
+ VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
+ VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
+ VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
+ VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
+ VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
+ VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
+ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
+ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+ VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
+ VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
+ VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
+ VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000,
+ VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001,
+ VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002,
+ VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003,
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003,
VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
- VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000,
- VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001,
- VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002,
- VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003,
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+ VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
+ VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
- VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000010,
+ VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010,
+ VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+ VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkBufferCreateFlagBits;
typedef VkFlags VkBufferCreateFlags;
VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000,
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 0x00000400,
- VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000,
+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkBufferUsageFlagBits;
typedef VkFlags VkBufferUsageFlags;
typedef VkFlags VkSamplerCreateFlags;
typedef enum VkDescriptorSetLayoutCreateFlagBits {
+ VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
- VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 0x00000002,
+ VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkDescriptorSetLayoutCreateFlagBits;
typedef VkFlags VkDescriptorSetLayoutCreateFlags;
typedef enum VkDescriptorPoolCreateFlagBits {
VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
- VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 0x00000002,
+ VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,
+ VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,
VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkDescriptorPoolCreateFlagBits;
typedef VkFlags VkDescriptorPoolCreateFlags;
typedef VkFlags VkDescriptorPoolResetFlags;
typedef enum VkFramebufferCreateFlagBits {
- VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 0x00000001,
+ VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
+ VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkFramebufferCreateFlagBits;
typedef VkFlags VkFramebufferCreateFlags;
typedef enum VkMemoryAllocateFlagBits {
VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004,
VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkMemoryAllocateFlagBits;
typedef VkFlags VkMemoryAllocateFlags;
#endif
+#define VK_VERSION_1_2 1
+// Vulkan 1.2 version number
+#define VK_API_VERSION_1_2 VK_MAKE_VERSION(1, 2, 0)// Patch version should always be set to 0
+
+typedef deUint64 VkDeviceAddress;
+#define VK_MAX_DRIVER_NAME_SIZE 256
+#define VK_MAX_DRIVER_INFO_SIZE 256
+
+typedef enum VkDriverId {
+ VK_DRIVER_ID_AMD_PROPRIETARY = 1,
+ VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,
+ VK_DRIVER_ID_MESA_RADV = 3,
+ VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,
+ VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,
+ VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,
+ VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,
+ VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,
+ VK_DRIVER_ID_ARM_PROPRIETARY = 9,
+ VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,
+ VK_DRIVER_ID_GGP_PROPRIETARY = 11,
+ VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,
+ VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY,
+ VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE,
+ VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV,
+ VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY,
+ VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
+ VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
+ VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
+ VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,
+ VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY,
+ VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
+ VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY,
+ VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+ VK_DRIVER_ID_BEGIN_RANGE = VK_DRIVER_ID_AMD_PROPRIETARY,
+ VK_DRIVER_ID_END_RANGE = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+ VK_DRIVER_ID_RANGE_SIZE = (VK_DRIVER_ID_BROADCOM_PROPRIETARY - VK_DRIVER_ID_AMD_PROPRIETARY + 1),
+ VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF
+} VkDriverId;
+
+typedef enum VkShaderFloatControlsIndependence {
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_BEGIN_RANGE = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_END_RANGE = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_RANGE_SIZE = (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY + 1),
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF
+} VkShaderFloatControlsIndependence;
+
+typedef enum VkSamplerReductionMode {
+ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,
+ VK_SAMPLER_REDUCTION_MODE_MIN = 1,
+ VK_SAMPLER_REDUCTION_MODE_MAX = 2,
+ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+ VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN,
+ VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX,
+ VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+ VK_SAMPLER_REDUCTION_MODE_END_RANGE = VK_SAMPLER_REDUCTION_MODE_MAX,
+ VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE = (VK_SAMPLER_REDUCTION_MODE_MAX - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE + 1),
+ VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF
+} VkSamplerReductionMode;
+
+typedef enum VkSemaphoreType {
+ VK_SEMAPHORE_TYPE_BINARY = 0,
+ VK_SEMAPHORE_TYPE_TIMELINE = 1,
+ VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY,
+ VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE,
+ VK_SEMAPHORE_TYPE_BEGIN_RANGE = VK_SEMAPHORE_TYPE_BINARY,
+ VK_SEMAPHORE_TYPE_END_RANGE = VK_SEMAPHORE_TYPE_TIMELINE,
+ VK_SEMAPHORE_TYPE_RANGE_SIZE = (VK_SEMAPHORE_TYPE_TIMELINE - VK_SEMAPHORE_TYPE_BINARY + 1),
+ VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreType;
+
+typedef enum VkResolveModeFlagBits {
+ VK_RESOLVE_MODE_NONE = 0,
+ VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,
+ VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,
+ VK_RESOLVE_MODE_MIN_BIT = 0x00000004,
+ VK_RESOLVE_MODE_MAX_BIT = 0x00000008,
+ VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE,
+ VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
+ VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT,
+ VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT,
+ VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT,
+ VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkResolveModeFlagBits;
+typedef VkFlags VkResolveModeFlags;
+
+typedef enum VkDescriptorBindingFlagBits {
+ VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001,
+ VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002,
+ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004,
+ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008,
+ VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
+ VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
+ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
+ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,
+ VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorBindingFlagBits;
+typedef VkFlags VkDescriptorBindingFlags;
+
+typedef enum VkSemaphoreWaitFlagBits {
+ VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
+ VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT,
+ VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreWaitFlagBits;
+typedef VkFlags VkSemaphoreWaitFlags;
+typedef struct VkPhysicalDeviceVulkan11Features {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 storageBuffer16BitAccess;
+ VkBool32 uniformAndStorageBuffer16BitAccess;
+ VkBool32 storagePushConstant16;
+ VkBool32 storageInputOutput16;
+ VkBool32 multiview;
+ VkBool32 multiviewGeometryShader;
+ VkBool32 multiviewTessellationShader;
+ VkBool32 variablePointersStorageBuffer;
+ VkBool32 variablePointers;
+ VkBool32 protectedMemory;
+ VkBool32 samplerYcbcrConversion;
+ VkBool32 shaderDrawParameters;
+} VkPhysicalDeviceVulkan11Features;
+
+typedef struct VkPhysicalDeviceVulkan11Properties {
+ VkStructureType sType;
+ void* pNext;
+ deUint8 deviceUUID[VK_UUID_SIZE];
+ deUint8 driverUUID[VK_UUID_SIZE];
+ deUint8 deviceLUID[VK_LUID_SIZE];
+ deUint32 deviceNodeMask;
+ VkBool32 deviceLUIDValid;
+ deUint32 subgroupSize;
+ VkShaderStageFlags subgroupSupportedStages;
+ VkSubgroupFeatureFlags subgroupSupportedOperations;
+ VkBool32 subgroupQuadOperationsInAllStages;
+ VkPointClippingBehavior pointClippingBehavior;
+ deUint32 maxMultiviewViewCount;
+ deUint32 maxMultiviewInstanceIndex;
+ VkBool32 protectedNoFault;
+ deUint32 maxPerSetDescriptors;
+ VkDeviceSize maxMemoryAllocationSize;
+} VkPhysicalDeviceVulkan11Properties;
+
+typedef struct VkPhysicalDeviceVulkan12Features {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 samplerMirrorClampToEdge;
+ VkBool32 drawIndirectCount;
+ VkBool32 storageBuffer8BitAccess;
+ VkBool32 uniformAndStorageBuffer8BitAccess;
+ VkBool32 storagePushConstant8;
+ VkBool32 shaderBufferInt64Atomics;
+ VkBool32 shaderSharedInt64Atomics;
+ VkBool32 shaderFloat16;
+ VkBool32 shaderInt8;
+ VkBool32 descriptorIndexing;
+ VkBool32 shaderInputAttachmentArrayDynamicIndexing;
+ VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexing;
+ VkBool32 shaderSampledImageArrayNonUniformIndexing;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageImageArrayNonUniformIndexing;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
+ VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
+ VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
+ VkBool32 descriptorBindingSampledImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUpdateUnusedWhilePending;
+ VkBool32 descriptorBindingPartiallyBound;
+ VkBool32 descriptorBindingVariableDescriptorCount;
+ VkBool32 runtimeDescriptorArray;
+ VkBool32 samplerFilterMinmax;
+ VkBool32 scalarBlockLayout;
+ VkBool32 imagelessFramebuffer;
+ VkBool32 uniformBufferStandardLayout;
+ VkBool32 shaderSubgroupExtendedTypes;
+ VkBool32 separateDepthStencilLayouts;
+ VkBool32 hostQueryReset;
+ VkBool32 timelineSemaphore;
+ VkBool32 bufferDeviceAddress;
+ VkBool32 bufferDeviceAddressCaptureReplay;
+ VkBool32 bufferDeviceAddressMultiDevice;
+ VkBool32 vulkanMemoryModel;
+ VkBool32 vulkanMemoryModelDeviceScope;
+ VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
+ VkBool32 shaderOutputViewportIndex;
+ VkBool32 shaderOutputLayer;
+ VkBool32 subgroupBroadcastDynamicId;
+} VkPhysicalDeviceVulkan12Features;
+
+typedef struct VkConformanceVersion {
+ deUint8 major;
+ deUint8 minor;
+ deUint8 subminor;
+ deUint8 patch;
+} VkConformanceVersion;
+
+typedef struct VkPhysicalDeviceVulkan12Properties {
+ VkStructureType sType;
+ void* pNext;
+ VkDriverId driverID;
+ char driverName[VK_MAX_DRIVER_NAME_SIZE];
+ char driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+ VkConformanceVersion conformanceVersion;
+ VkShaderFloatControlsIndependence denormBehaviorIndependence;
+ VkShaderFloatControlsIndependence roundingModeIndependence;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat16;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat32;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat64;
+ VkBool32 shaderDenormPreserveFloat16;
+ VkBool32 shaderDenormPreserveFloat32;
+ VkBool32 shaderDenormPreserveFloat64;
+ VkBool32 shaderDenormFlushToZeroFloat16;
+ VkBool32 shaderDenormFlushToZeroFloat32;
+ VkBool32 shaderDenormFlushToZeroFloat64;
+ VkBool32 shaderRoundingModeRTEFloat16;
+ VkBool32 shaderRoundingModeRTEFloat32;
+ VkBool32 shaderRoundingModeRTEFloat64;
+ VkBool32 shaderRoundingModeRTZFloat16;
+ VkBool32 shaderRoundingModeRTZFloat32;
+ VkBool32 shaderRoundingModeRTZFloat64;
+ deUint32 maxUpdateAfterBindDescriptorsInAllPools;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
+ VkBool32 robustBufferAccessUpdateAfterBind;
+ VkBool32 quadDivergentImplicitLod;
+ deUint32 maxPerStageDescriptorUpdateAfterBindSamplers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindSampledImages;
+ deUint32 maxPerStageDescriptorUpdateAfterBindStorageImages;
+ deUint32 maxPerStageDescriptorUpdateAfterBindInputAttachments;
+ deUint32 maxPerStageUpdateAfterBindResources;
+ deUint32 maxDescriptorSetUpdateAfterBindSamplers;
+ deUint32 maxDescriptorSetUpdateAfterBindUniformBuffers;
+ deUint32 maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageBuffers;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+ deUint32 maxDescriptorSetUpdateAfterBindSampledImages;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageImages;
+ deUint32 maxDescriptorSetUpdateAfterBindInputAttachments;
+ VkResolveModeFlags supportedDepthResolveModes;
+ VkResolveModeFlags supportedStencilResolveModes;
+ VkBool32 independentResolveNone;
+ VkBool32 independentResolve;
+ VkBool32 filterMinmaxSingleComponentFormats;
+ VkBool32 filterMinmaxImageComponentMapping;
+ deUint64 maxTimelineSemaphoreValueDifference;
+ VkSampleCountFlags framebufferIntegerColorSampleCounts;
+} VkPhysicalDeviceVulkan12Properties;
+
+typedef struct VkImageFormatListCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 viewFormatCount;
+ const VkFormat* pViewFormats;
+} VkImageFormatListCreateInfo;
+
+typedef struct VkAttachmentDescription2 {
+ VkStructureType sType;
+ const void* pNext;
+ VkAttachmentDescriptionFlags flags;
+ VkFormat format;
+ VkSampleCountFlagBits samples;
+ VkAttachmentLoadOp loadOp;
+ VkAttachmentStoreOp storeOp;
+ VkAttachmentLoadOp stencilLoadOp;
+ VkAttachmentStoreOp stencilStoreOp;
+ VkImageLayout initialLayout;
+ VkImageLayout finalLayout;
+} VkAttachmentDescription2;
+
+typedef struct VkAttachmentReference2 {
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 attachment;
+ VkImageLayout layout;
+ VkImageAspectFlags aspectMask;
+} VkAttachmentReference2;
+
+typedef struct VkSubpassDescription2 {
+ VkStructureType sType;
+ const void* pNext;
+ VkSubpassDescriptionFlags flags;
+ VkPipelineBindPoint pipelineBindPoint;
+ deUint32 viewMask;
+ deUint32 inputAttachmentCount;
+ const VkAttachmentReference2* pInputAttachments;
+ deUint32 colorAttachmentCount;
+ const VkAttachmentReference2* pColorAttachments;
+ const VkAttachmentReference2* pResolveAttachments;
+ const VkAttachmentReference2* pDepthStencilAttachment;
+ deUint32 preserveAttachmentCount;
+ const deUint32* pPreserveAttachments;
+} VkSubpassDescription2;
+
+typedef struct VkSubpassDependency2 {
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 srcSubpass;
+ deUint32 dstSubpass;
+ VkPipelineStageFlags srcStageMask;
+ VkPipelineStageFlags dstStageMask;
+ VkAccessFlags srcAccessMask;
+ VkAccessFlags dstAccessMask;
+ VkDependencyFlags dependencyFlags;
+ deInt32 viewOffset;
+} VkSubpassDependency2;
+
+typedef struct VkRenderPassCreateInfo2 {
+ VkStructureType sType;
+ const void* pNext;
+ VkRenderPassCreateFlags flags;
+ deUint32 attachmentCount;
+ const VkAttachmentDescription2* pAttachments;
+ deUint32 subpassCount;
+ const VkSubpassDescription2* pSubpasses;
+ deUint32 dependencyCount;
+ const VkSubpassDependency2* pDependencies;
+ deUint32 correlatedViewMaskCount;
+ const deUint32* pCorrelatedViewMasks;
+} VkRenderPassCreateInfo2;
+
+typedef struct VkSubpassBeginInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkSubpassContents contents;
+} VkSubpassBeginInfo;
+
+typedef struct VkSubpassEndInfo {
+ VkStructureType sType;
+ const void* pNext;
+} VkSubpassEndInfo;
+
+typedef struct VkPhysicalDevice8BitStorageFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 storageBuffer8BitAccess;
+ VkBool32 uniformAndStorageBuffer8BitAccess;
+ VkBool32 storagePushConstant8;
+} VkPhysicalDevice8BitStorageFeatures;
+
+typedef struct VkPhysicalDeviceDriverProperties {
+ VkStructureType sType;
+ void* pNext;
+ VkDriverId driverID;
+ char driverName[VK_MAX_DRIVER_NAME_SIZE];
+ char driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+ VkConformanceVersion conformanceVersion;
+} VkPhysicalDeviceDriverProperties;
+
+typedef struct VkPhysicalDeviceShaderAtomicInt64Features {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderBufferInt64Atomics;
+ VkBool32 shaderSharedInt64Atomics;
+} VkPhysicalDeviceShaderAtomicInt64Features;
+
+typedef struct VkPhysicalDeviceShaderFloat16Int8Features {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderFloat16;
+ VkBool32 shaderInt8;
+} VkPhysicalDeviceShaderFloat16Int8Features;
+
+typedef struct VkPhysicalDeviceFloatControlsProperties {
+ VkStructureType sType;
+ void* pNext;
+ VkShaderFloatControlsIndependence denormBehaviorIndependence;
+ VkShaderFloatControlsIndependence roundingModeIndependence;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat16;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat32;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat64;
+ VkBool32 shaderDenormPreserveFloat16;
+ VkBool32 shaderDenormPreserveFloat32;
+ VkBool32 shaderDenormPreserveFloat64;
+ VkBool32 shaderDenormFlushToZeroFloat16;
+ VkBool32 shaderDenormFlushToZeroFloat32;
+ VkBool32 shaderDenormFlushToZeroFloat64;
+ VkBool32 shaderRoundingModeRTEFloat16;
+ VkBool32 shaderRoundingModeRTEFloat32;
+ VkBool32 shaderRoundingModeRTEFloat64;
+ VkBool32 shaderRoundingModeRTZFloat16;
+ VkBool32 shaderRoundingModeRTZFloat32;
+ VkBool32 shaderRoundingModeRTZFloat64;
+} VkPhysicalDeviceFloatControlsProperties;
+
+typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 bindingCount;
+ const VkDescriptorBindingFlags* pBindingFlags;
+} VkDescriptorSetLayoutBindingFlagsCreateInfo;
+
+typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderInputAttachmentArrayDynamicIndexing;
+ VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexing;
+ VkBool32 shaderSampledImageArrayNonUniformIndexing;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageImageArrayNonUniformIndexing;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
+ VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
+ VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
+ VkBool32 descriptorBindingSampledImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUpdateUnusedWhilePending;
+ VkBool32 descriptorBindingPartiallyBound;
+ VkBool32 descriptorBindingVariableDescriptorCount;
+ VkBool32 runtimeDescriptorArray;
+} VkPhysicalDeviceDescriptorIndexingFeatures;
+
+typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
+ VkStructureType sType;
+ void* pNext;
+ deUint32 maxUpdateAfterBindDescriptorsInAllPools;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
+ VkBool32 robustBufferAccessUpdateAfterBind;
+ VkBool32 quadDivergentImplicitLod;
+ deUint32 maxPerStageDescriptorUpdateAfterBindSamplers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+ deUint32 maxPerStageDescriptorUpdateAfterBindSampledImages;
+ deUint32 maxPerStageDescriptorUpdateAfterBindStorageImages;
+ deUint32 maxPerStageDescriptorUpdateAfterBindInputAttachments;
+ deUint32 maxPerStageUpdateAfterBindResources;
+ deUint32 maxDescriptorSetUpdateAfterBindSamplers;
+ deUint32 maxDescriptorSetUpdateAfterBindUniformBuffers;
+ deUint32 maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageBuffers;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+ deUint32 maxDescriptorSetUpdateAfterBindSampledImages;
+ deUint32 maxDescriptorSetUpdateAfterBindStorageImages;
+ deUint32 maxDescriptorSetUpdateAfterBindInputAttachments;
+} VkPhysicalDeviceDescriptorIndexingProperties;
+
+typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 descriptorSetCount;
+ const deUint32* pDescriptorCounts;
+} VkDescriptorSetVariableDescriptorCountAllocateInfo;
+
+typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport {
+ VkStructureType sType;
+ void* pNext;
+ deUint32 maxVariableDescriptorCount;
+} VkDescriptorSetVariableDescriptorCountLayoutSupport;
+
+typedef struct VkSubpassDescriptionDepthStencilResolve {
+ VkStructureType sType;
+ const void* pNext;
+ VkResolveModeFlagBits depthResolveMode;
+ VkResolveModeFlagBits stencilResolveMode;
+ const VkAttachmentReference2* pDepthStencilResolveAttachment;
+} VkSubpassDescriptionDepthStencilResolve;
+
+typedef struct VkPhysicalDeviceDepthStencilResolveProperties {
+ VkStructureType sType;
+ void* pNext;
+ VkResolveModeFlags supportedDepthResolveModes;
+ VkResolveModeFlags supportedStencilResolveModes;
+ VkBool32 independentResolveNone;
+ VkBool32 independentResolve;
+} VkPhysicalDeviceDepthStencilResolveProperties;
+
+typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 scalarBlockLayout;
+} VkPhysicalDeviceScalarBlockLayoutFeatures;
+
+typedef struct VkImageStencilUsageCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkImageUsageFlags stencilUsage;
+} VkImageStencilUsageCreateInfo;
+
+typedef struct VkSamplerReductionModeCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkSamplerReductionMode reductionMode;
+} VkSamplerReductionModeCreateInfo;
+
+typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 filterMinmaxSingleComponentFormats;
+ VkBool32 filterMinmaxImageComponentMapping;
+} VkPhysicalDeviceSamplerFilterMinmaxProperties;
+
+typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 vulkanMemoryModel;
+ VkBool32 vulkanMemoryModelDeviceScope;
+ VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
+} VkPhysicalDeviceVulkanMemoryModelFeatures;
+
+typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 imagelessFramebuffer;
+} VkPhysicalDeviceImagelessFramebufferFeatures;
+
+typedef struct VkFramebufferAttachmentImageInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkImageCreateFlags flags;
+ VkImageUsageFlags usage;
+ deUint32 width;
+ deUint32 height;
+ deUint32 layerCount;
+ deUint32 viewFormatCount;
+ const VkFormat* pViewFormats;
+} VkFramebufferAttachmentImageInfo;
+
+typedef struct VkFramebufferAttachmentsCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 attachmentImageInfoCount;
+ const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos;
+} VkFramebufferAttachmentsCreateInfo;
+
+typedef struct VkRenderPassAttachmentBeginInfo {
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 attachmentCount;
+ const VkImageView* pAttachments;
+} VkRenderPassAttachmentBeginInfo;
+
+typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 uniformBufferStandardLayout;
+} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
+
+typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderSubgroupExtendedTypes;
+} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
+
+typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 separateDepthStencilLayouts;
+} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
+
+typedef struct VkAttachmentReferenceStencilLayout {
+ VkStructureType sType;
+ void* pNext;
+ VkImageLayout stencilLayout;
+} VkAttachmentReferenceStencilLayout;
+
+typedef struct VkAttachmentDescriptionStencilLayout {
+ VkStructureType sType;
+ void* pNext;
+ VkImageLayout stencilInitialLayout;
+ VkImageLayout stencilFinalLayout;
+} VkAttachmentDescriptionStencilLayout;
+
+typedef struct VkPhysicalDeviceHostQueryResetFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 hostQueryReset;
+} VkPhysicalDeviceHostQueryResetFeatures;
+
+typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 timelineSemaphore;
+} VkPhysicalDeviceTimelineSemaphoreFeatures;
+
+typedef struct VkPhysicalDeviceTimelineSemaphoreProperties {
+ VkStructureType sType;
+ void* pNext;
+ deUint64 maxTimelineSemaphoreValueDifference;
+} VkPhysicalDeviceTimelineSemaphoreProperties;
+
+typedef struct VkSemaphoreTypeCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkSemaphoreType semaphoreType;
+ deUint64 initialValue;
+} VkSemaphoreTypeCreateInfo;
+
+typedef struct VkTimelineSemaphoreSubmitInfo {
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 waitSemaphoreValueCount;
+ const deUint64* pWaitSemaphoreValues;
+ deUint32 signalSemaphoreValueCount;
+ const deUint64* pSignalSemaphoreValues;
+} VkTimelineSemaphoreSubmitInfo;
+
+typedef struct VkSemaphoreWaitInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkSemaphoreWaitFlags flags;
+ deUint32 semaphoreCount;
+ const VkSemaphore* pSemaphores;
+ const deUint64* pValues;
+} VkSemaphoreWaitInfo;
+
+typedef struct VkSemaphoreSignalInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkSemaphore semaphore;
+ deUint64 value;
+} VkSemaphoreSignalInfo;
+
+typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 bufferDeviceAddress;
+ VkBool32 bufferDeviceAddressCaptureReplay;
+ VkBool32 bufferDeviceAddressMultiDevice;
+} VkPhysicalDeviceBufferDeviceAddressFeatures;
+
+typedef struct VkBufferDeviceAddressInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkBuffer buffer;
+} VkBufferDeviceAddressInfo;
+
+typedef struct VkBufferOpaqueCaptureAddressCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ deUint64 opaqueCaptureAddress;
+} VkBufferOpaqueCaptureAddressCreateInfo;
+
+typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ deUint64 opaqueCaptureAddress;
+} VkMemoryOpaqueCaptureAddressAllocateInfo;
+
+typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkDeviceMemory memory;
+} VkDeviceMemoryOpaqueCaptureAddressInfo;
+
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
+typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, deUint64* pValue);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount(
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ deUint32 maxDrawCount,
+ deUint32 stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount(
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ deUint32 maxDrawCount,
+ deUint32 stride);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2(
+ VkDevice device,
+ const VkRenderPassCreateInfo2* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkRenderPass* pRenderPass);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2(
+ VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ const VkSubpassBeginInfo* pSubpassBeginInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2(
+ VkCommandBuffer commandBuffer,
+ const VkSubpassBeginInfo* pSubpassBeginInfo,
+ const VkSubpassEndInfo* pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2(
+ VkCommandBuffer commandBuffer,
+ const VkSubpassEndInfo* pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkResetQueryPool(
+ VkDevice device,
+ VkQueryPool queryPool,
+ deUint32 firstQuery,
+ deUint32 queryCount);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue(
+ VkDevice device,
+ VkSemaphore semaphore,
+ deUint64* pValue);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores(
+ VkDevice device,
+ const VkSemaphoreWaitInfo* pWaitInfo,
+ deUint64 timeout);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore(
+ VkDevice device,
+ const VkSemaphoreSignalInfo* pSignalInfo);
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress(
+ VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetBufferOpaqueCaptureAddress(
+ VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress(
+ VkDevice device,
+ const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+#endif
+
+
#define VK_KHR_surface 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
#define VK_KHR_SURFACE_SPEC_VERSION 25
#define VK_KHR_shader_float16_int8 1
#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
-typedef struct VkPhysicalDeviceShaderFloat16Int8FeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderFloat16;
- VkBool32 shaderInt8;
-} VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
+typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
-typedef VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR;
+typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR;
#define VK_KHR_imageless_framebuffer 1
#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1
#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer"
-typedef struct VkPhysicalDeviceImagelessFramebufferFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 imagelessFramebuffer;
-} VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
+typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
-typedef struct VkFramebufferAttachmentImageInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkImageCreateFlags flags;
- VkImageUsageFlags usage;
- deUint32 width;
- deUint32 height;
- deUint32 layerCount;
- deUint32 viewFormatCount;
- const VkFormat* pViewFormats;
-} VkFramebufferAttachmentImageInfoKHR;
+typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;
-typedef struct VkFramebufferAttachmentsCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- deUint32 attachmentImageInfoCount;
- const VkFramebufferAttachmentImageInfoKHR* pAttachmentImageInfos;
-} VkFramebufferAttachmentsCreateInfoKHR;
+typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;
-typedef struct VkRenderPassAttachmentBeginInfoKHR {
- VkStructureType sType;
- const void* pNext;
- deUint32 attachmentCount;
- const VkImageView* pAttachments;
-} VkRenderPassAttachmentBeginInfoKHR;
+typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;
#define VK_KHR_create_renderpass2 1
#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
-typedef struct VkAttachmentDescription2KHR {
- VkStructureType sType;
- const void* pNext;
- VkAttachmentDescriptionFlags flags;
- VkFormat format;
- VkSampleCountFlagBits samples;
- VkAttachmentLoadOp loadOp;
- VkAttachmentStoreOp storeOp;
- VkAttachmentLoadOp stencilLoadOp;
- VkAttachmentStoreOp stencilStoreOp;
- VkImageLayout initialLayout;
- VkImageLayout finalLayout;
-} VkAttachmentDescription2KHR;
+typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
-typedef struct VkAttachmentReference2KHR {
- VkStructureType sType;
- const void* pNext;
- deUint32 attachment;
- VkImageLayout layout;
- VkImageAspectFlags aspectMask;
-} VkAttachmentReference2KHR;
+typedef VkAttachmentDescription2 VkAttachmentDescription2KHR;
-typedef struct VkSubpassDescription2KHR {
- VkStructureType sType;
- const void* pNext;
- VkSubpassDescriptionFlags flags;
- VkPipelineBindPoint pipelineBindPoint;
- deUint32 viewMask;
- deUint32 inputAttachmentCount;
- const VkAttachmentReference2KHR* pInputAttachments;
- deUint32 colorAttachmentCount;
- const VkAttachmentReference2KHR* pColorAttachments;
- const VkAttachmentReference2KHR* pResolveAttachments;
- const VkAttachmentReference2KHR* pDepthStencilAttachment;
- deUint32 preserveAttachmentCount;
- const deUint32* pPreserveAttachments;
-} VkSubpassDescription2KHR;
-
-typedef struct VkSubpassDependency2KHR {
- VkStructureType sType;
- const void* pNext;
- deUint32 srcSubpass;
- deUint32 dstSubpass;
- VkPipelineStageFlags srcStageMask;
- VkPipelineStageFlags dstStageMask;
- VkAccessFlags srcAccessMask;
- VkAccessFlags dstAccessMask;
- VkDependencyFlags dependencyFlags;
- deInt32 viewOffset;
-} VkSubpassDependency2KHR;
+typedef VkAttachmentReference2 VkAttachmentReference2KHR;
-typedef struct VkRenderPassCreateInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkRenderPassCreateFlags flags;
- deUint32 attachmentCount;
- const VkAttachmentDescription2KHR* pAttachments;
- deUint32 subpassCount;
- const VkSubpassDescription2KHR* pSubpasses;
- deUint32 dependencyCount;
- const VkSubpassDependency2KHR* pDependencies;
- deUint32 correlatedViewMaskCount;
- const deUint32* pCorrelatedViewMasks;
-} VkRenderPassCreateInfo2KHR;
-
-typedef struct VkSubpassBeginInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSubpassContents contents;
-} VkSubpassBeginInfoKHR;
+typedef VkSubpassDescription2 VkSubpassDescription2KHR;
-typedef struct VkSubpassEndInfoKHR {
- VkStructureType sType;
- const void* pNext;
-} VkSubpassEndInfoKHR;
+typedef VkSubpassDependency2 VkSubpassDependency2KHR;
-typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo);
+typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;
+
+typedef VkSubpassEndInfo VkSubpassEndInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
VkDevice device,
- const VkRenderPassCreateInfo2KHR* pCreateInfo,
+ const VkRenderPassCreateInfo2* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkRenderPass* pRenderPass);
VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR(
VkCommandBuffer commandBuffer,
const VkRenderPassBeginInfo* pRenderPassBegin,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
+ const VkSubpassBeginInfo* pSubpassBeginInfo);
VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR(
VkCommandBuffer commandBuffer,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
- const VkSubpassEndInfoKHR* pSubpassEndInfo);
+ const VkSubpassBeginInfo* pSubpassBeginInfo,
+ const VkSubpassEndInfo* pSubpassEndInfo);
VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR(
VkCommandBuffer commandBuffer,
- const VkSubpassEndInfoKHR* pSubpassEndInfo);
+ const VkSubpassEndInfo* pSubpassEndInfo);
#endif
#define VK_KHR_image_format_list 1
#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
-typedef struct VkImageFormatListCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- deUint32 viewFormatCount;
- const VkFormat* pViewFormats;
-} VkImageFormatListCreateInfoKHR;
+typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;
#define VK_KHR_shader_subgroup_extended_types 1
#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1
#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types"
-typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderSubgroupExtendedTypes;
-} VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
+typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
#define VK_KHR_8bit_storage 1
#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1
#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
-typedef struct VkPhysicalDevice8BitStorageFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 storageBuffer8BitAccess;
- VkBool32 uniformAndStorageBuffer8BitAccess;
- VkBool32 storagePushConstant8;
-} VkPhysicalDevice8BitStorageFeaturesKHR;
+typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
#define VK_KHR_shader_atomic_int64 1
#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64"
-typedef struct VkPhysicalDeviceShaderAtomicInt64FeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderBufferInt64Atomics;
- VkBool32 shaderSharedInt64Atomics;
-} VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
+typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
#define VK_KHR_driver_properties 1
-#define VK_MAX_DRIVER_NAME_SIZE_KHR 256
-#define VK_MAX_DRIVER_INFO_SIZE_KHR 256
#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties"
+#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE
+#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE
+typedef VkDriverId VkDriverIdKHR;
-typedef enum VkDriverIdKHR {
- VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1,
- VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2,
- VK_DRIVER_ID_MESA_RADV_KHR = 3,
- VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4,
- VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5,
- VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6,
- VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7,
- VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8,
- VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9,
- VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10,
- VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11,
- VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12,
- VK_DRIVER_ID_BEGIN_RANGE_KHR = VK_DRIVER_ID_AMD_PROPRIETARY_KHR,
- VK_DRIVER_ID_END_RANGE_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR,
- VK_DRIVER_ID_RANGE_SIZE_KHR = (VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR - VK_DRIVER_ID_AMD_PROPRIETARY_KHR + 1),
- VK_DRIVER_ID_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkDriverIdKHR;
-typedef struct VkConformanceVersionKHR {
- deUint8 major;
- deUint8 minor;
- deUint8 subminor;
- deUint8 patch;
-} VkConformanceVersionKHR;
+typedef VkConformanceVersion VkConformanceVersionKHR;
-typedef struct VkPhysicalDeviceDriverPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkDriverIdKHR driverID;
- char driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
- char driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
- VkConformanceVersionKHR conformanceVersion;
-} VkPhysicalDeviceDriverPropertiesKHR;
+typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;
#define VK_KHR_shader_float_controls 1
#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
+typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR;
-typedef enum VkShaderFloatControlsIndependenceKHR {
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_BEGIN_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_END_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_RANGE_SIZE_KHR = (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR + 1),
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkShaderFloatControlsIndependenceKHR;
-typedef struct VkPhysicalDeviceFloatControlsPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkShaderFloatControlsIndependenceKHR denormBehaviorIndependence;
- VkShaderFloatControlsIndependenceKHR roundingModeIndependence;
- VkBool32 shaderSignedZeroInfNanPreserveFloat16;
- VkBool32 shaderSignedZeroInfNanPreserveFloat32;
- VkBool32 shaderSignedZeroInfNanPreserveFloat64;
- VkBool32 shaderDenormPreserveFloat16;
- VkBool32 shaderDenormPreserveFloat32;
- VkBool32 shaderDenormPreserveFloat64;
- VkBool32 shaderDenormFlushToZeroFloat16;
- VkBool32 shaderDenormFlushToZeroFloat32;
- VkBool32 shaderDenormFlushToZeroFloat64;
- VkBool32 shaderRoundingModeRTEFloat16;
- VkBool32 shaderRoundingModeRTEFloat32;
- VkBool32 shaderRoundingModeRTEFloat64;
- VkBool32 shaderRoundingModeRTZFloat16;
- VkBool32 shaderRoundingModeRTZFloat32;
- VkBool32 shaderRoundingModeRTZFloat64;
-} VkPhysicalDeviceFloatControlsPropertiesKHR;
+typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
#define VK_KHR_depth_stencil_resolve 1
#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
+typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR;
-typedef enum VkResolveModeFlagBitsKHR {
- VK_RESOLVE_MODE_NONE_KHR = 0,
- VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 0x00000001,
- VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 0x00000002,
- VK_RESOLVE_MODE_MIN_BIT_KHR = 0x00000004,
- VK_RESOLVE_MODE_MAX_BIT_KHR = 0x00000008,
- VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkResolveModeFlagBitsKHR;
-typedef VkFlags VkResolveModeFlagsKHR;
-typedef struct VkSubpassDescriptionDepthStencilResolveKHR {
- VkStructureType sType;
- const void* pNext;
- VkResolveModeFlagBitsKHR depthResolveMode;
- VkResolveModeFlagBitsKHR stencilResolveMode;
- const VkAttachmentReference2KHR* pDepthStencilResolveAttachment;
-} VkSubpassDescriptionDepthStencilResolveKHR;
+typedef VkResolveModeFlags VkResolveModeFlagsKHR;
-typedef struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkResolveModeFlagsKHR supportedDepthResolveModes;
- VkResolveModeFlagsKHR supportedStencilResolveModes;
- VkBool32 independentResolveNone;
- VkBool32 independentResolve;
-} VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
+typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;
+
+typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
#define VK_KHR_timeline_semaphore 1
#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2
#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
+typedef VkSemaphoreType VkSemaphoreTypeKHR;
-typedef enum VkSemaphoreTypeKHR {
- VK_SEMAPHORE_TYPE_BINARY_KHR = 0,
- VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1,
- VK_SEMAPHORE_TYPE_BEGIN_RANGE_KHR = VK_SEMAPHORE_TYPE_BINARY_KHR,
- VK_SEMAPHORE_TYPE_END_RANGE_KHR = VK_SEMAPHORE_TYPE_TIMELINE_KHR,
- VK_SEMAPHORE_TYPE_RANGE_SIZE_KHR = (VK_SEMAPHORE_TYPE_TIMELINE_KHR - VK_SEMAPHORE_TYPE_BINARY_KHR + 1),
- VK_SEMAPHORE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSemaphoreTypeKHR;
-
-typedef enum VkSemaphoreWaitFlagBitsKHR {
- VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 0x00000001,
- VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSemaphoreWaitFlagBitsKHR;
-typedef VkFlags VkSemaphoreWaitFlagsKHR;
-typedef struct VkPhysicalDeviceTimelineSemaphoreFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 timelineSemaphore;
-} VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
+typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR;
-typedef struct VkPhysicalDeviceTimelineSemaphorePropertiesKHR {
- VkStructureType sType;
- void* pNext;
- deUint64 maxTimelineSemaphoreValueDifference;
-} VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
+typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR;
-typedef struct VkSemaphoreTypeCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphoreTypeKHR semaphoreType;
- deUint64 initialValue;
-} VkSemaphoreTypeCreateInfoKHR;
+typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
-typedef struct VkTimelineSemaphoreSubmitInfoKHR {
- VkStructureType sType;
- const void* pNext;
- deUint32 waitSemaphoreValueCount;
- const deUint64* pWaitSemaphoreValues;
- deUint32 signalSemaphoreValueCount;
- const deUint64* pSignalSemaphoreValues;
-} VkTimelineSemaphoreSubmitInfoKHR;
+typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
-typedef struct VkSemaphoreWaitInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphoreWaitFlagsKHR flags;
- deUint32 semaphoreCount;
- const VkSemaphore* pSemaphores;
- const deUint64* pValues;
-} VkSemaphoreWaitInfoKHR;
+typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;
-typedef struct VkSemaphoreSignalInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- deUint64 value;
-} VkSemaphoreSignalInfoKHR;
+typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
+
+typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;
+
+typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, deUint64* pValue);
-typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout);
-typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(
VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR(
VkDevice device,
- const VkSemaphoreWaitInfoKHR* pWaitInfo,
+ const VkSemaphoreWaitInfo* pWaitInfo,
deUint64 timeout);
VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR(
VkDevice device,
- const VkSemaphoreSignalInfoKHR* pSignalInfo);
+ const VkSemaphoreSignalInfo* pSignalInfo);
#endif
#define VK_KHR_vulkan_memory_model 1
#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3
#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model"
-typedef struct VkPhysicalDeviceVulkanMemoryModelFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 vulkanMemoryModel;
- VkBool32 vulkanMemoryModelDeviceScope;
- VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
-} VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
+typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
#define VK_KHR_spirv_1_4 1
#define VK_KHR_separate_depth_stencil_layouts 1
#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts"
-typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 separateDepthStencilLayouts;
-} VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
-typedef struct VkAttachmentReferenceStencilLayoutKHR {
- VkStructureType sType;
- void* pNext;
- VkImageLayout stencilLayout;
-} VkAttachmentReferenceStencilLayoutKHR;
+typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;
-typedef struct VkAttachmentDescriptionStencilLayoutKHR {
- VkStructureType sType;
- void* pNext;
- VkImageLayout stencilInitialLayout;
- VkImageLayout stencilFinalLayout;
-} VkAttachmentDescriptionStencilLayoutKHR;
+typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;
#define VK_KHR_uniform_buffer_standard_layout 1
#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout"
-typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 uniformBufferStandardLayout;
-} VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+
+
+
+#define VK_KHR_buffer_device_address 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
+typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
+
+typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR;
+
+typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;
+
+typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;
+
+typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR(
+ VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR(
+ VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR(
+ VkDevice device,
+ const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+#endif
#define VK_KHR_pipeline_executable_properties 1
VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
#endif
-
#define VK_EXT_debug_report 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9
#define VK_EXT_sampler_filter_minmax 1
#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2
#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
+typedef VkSamplerReductionMode VkSamplerReductionModeEXT;
-typedef enum VkSamplerReductionModeEXT {
- VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
- VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
- VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
- VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
- VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT,
- VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (VK_SAMPLER_REDUCTION_MODE_MAX_EXT - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1),
- VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkSamplerReductionModeEXT;
-typedef struct VkSamplerReductionModeCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkSamplerReductionModeEXT reductionMode;
-} VkSamplerReductionModeCreateInfoEXT;
+typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;
-typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 filterMinmaxSingleComponentFormats;
- VkBool32 filterMinmaxImageComponentMapping;
-} VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
-
#define VK_NV_shader_sm_builtins 1
#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1
#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins"
VkBool32 shaderSMBuiltins;
} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
-
-
#define VK_EXT_post_depth_coverage 1
#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
#define VK_EXT_descriptor_indexing 1
#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
+typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT;
-typedef enum VkDescriptorBindingFlagBitsEXT {
- VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 0x00000001,
- VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 0x00000002,
- VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 0x00000004,
- VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 0x00000008,
- VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDescriptorBindingFlagBitsEXT;
-typedef VkFlags VkDescriptorBindingFlagsEXT;
-typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- deUint32 bindingCount;
- const VkDescriptorBindingFlagsEXT* pBindingFlags;
-} VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
+typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT;
-typedef struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderInputAttachmentArrayDynamicIndexing;
- VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
- VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
- VkBool32 shaderUniformBufferArrayNonUniformIndexing;
- VkBool32 shaderSampledImageArrayNonUniformIndexing;
- VkBool32 shaderStorageBufferArrayNonUniformIndexing;
- VkBool32 shaderStorageImageArrayNonUniformIndexing;
- VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
- VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
- VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
- VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
- VkBool32 descriptorBindingSampledImageUpdateAfterBind;
- VkBool32 descriptorBindingStorageImageUpdateAfterBind;
- VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
- VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
- VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
- VkBool32 descriptorBindingUpdateUnusedWhilePending;
- VkBool32 descriptorBindingPartiallyBound;
- VkBool32 descriptorBindingVariableDescriptorCount;
- VkBool32 runtimeDescriptorArray;
-} VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
+typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
-typedef struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- deUint32 maxUpdateAfterBindDescriptorsInAllPools;
- VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
- VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
- VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
- VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
- VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
- VkBool32 robustBufferAccessUpdateAfterBind;
- VkBool32 quadDivergentImplicitLod;
- deUint32 maxPerStageDescriptorUpdateAfterBindSamplers;
- deUint32 maxPerStageDescriptorUpdateAfterBindUniformBuffers;
- deUint32 maxPerStageDescriptorUpdateAfterBindStorageBuffers;
- deUint32 maxPerStageDescriptorUpdateAfterBindSampledImages;
- deUint32 maxPerStageDescriptorUpdateAfterBindStorageImages;
- deUint32 maxPerStageDescriptorUpdateAfterBindInputAttachments;
- deUint32 maxPerStageUpdateAfterBindResources;
- deUint32 maxDescriptorSetUpdateAfterBindSamplers;
- deUint32 maxDescriptorSetUpdateAfterBindUniformBuffers;
- deUint32 maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
- deUint32 maxDescriptorSetUpdateAfterBindStorageBuffers;
- deUint32 maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
- deUint32 maxDescriptorSetUpdateAfterBindSampledImages;
- deUint32 maxDescriptorSetUpdateAfterBindStorageImages;
- deUint32 maxDescriptorSetUpdateAfterBindInputAttachments;
-} VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
+typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
-typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- deUint32 descriptorSetCount;
- const deUint32* pDescriptorCounts;
-} VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
-typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT {
- VkStructureType sType;
- void* pNext;
- deUint32 maxVariableDescriptorCount;
-} VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
+typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
VkStructureType sType;
void* pNext;
VkBool32 filterCubic;
- VkBool32 filterCubicMinmax ;
+ VkBool32 filterCubicMinmax;
} VkFilterCubicImageViewImageFormatPropertiesEXT;
#define VK_EXT_scalar_block_layout 1
#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1
#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout"
-typedef struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 scalarBlockLayout;
-} VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
+typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
#define VK_EXT_buffer_device_address 1
-typedef deUint64 VkDeviceAddress;
#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2
#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT {
typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
-typedef struct VkBufferDeviceAddressInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkBuffer buffer;
-} VkBufferDeviceAddressInfoEXT;
+typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT;
typedef struct VkBufferDeviceAddressCreateInfoEXT {
VkStructureType sType;
VkDeviceAddress deviceAddress;
} VkBufferDeviceAddressCreateInfoEXT;
-typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo);
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
VkDevice device,
- const VkBufferDeviceAddressInfoEXT* pInfo);
+ const VkBufferDeviceAddressInfo* pInfo);
#endif
#define VK_EXT_separate_stencil_usage 1
#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
-typedef struct VkImageStencilUsageCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkImageUsageFlags stencilUsage;
-} VkImageStencilUsageCreateInfoEXT;
+typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
#define VK_EXT_host_query_reset 1
#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1
#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
-typedef struct VkPhysicalDeviceHostQueryResetFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 hostQueryReset;
-} VkPhysicalDeviceHostQueryResetFeaturesEXT;
+typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
add_subdirectory(transform_feedback)
add_subdirectory(util)
add_subdirectory(amber)
-add_subdirectory(descriptor_indexing)
add_subdirectory(imageless_framebuffer)
+add_subdirectory(descriptor_indexing)
add_subdirectory(fragment_shader_interlock)
include_directories(
transform_feedback
util
amber
- descriptor_indexing
imageless_framebuffer
+ descriptor_indexing
fragment_shader_interlock
)
deqp-vk-protected-memory
deqp-vk-memory-model
deqp-vk-amber
+ deqp-vk-imageless-framebuffer
deqp-vk-transform-feedback
deqp-vk-descriptor-indexing
- deqp-vk-imageless-framebuffer
deqp-vk-fragment-shader-interlock
)
// Check that the Vulkan implementation supports this test.
// We have the principle that client code in dEQP should independently
// determine if the test should be supported:
- // - If any of the extensions registered via
- // |addRequiredDeviceExtension| is not supported then throw a
- // NotSupported exception.
+ // - If any of the extensions registered via |addRequirement| is not
+ // supported then throw a NotSupported exception.
// - Otherwise, we do a secondary sanity check depending on code inside
// Amber itself: if the Amber test says it is not supported, then
// throw an internal error exception.
params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
params.allocationKind = allocationKind;
+ bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
+ bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
+
const VkImageSubresourceLayers defaultDepthSourceLayer = { VK_IMAGE_ASPECT_DEPTH_BIT, 0u, 0u, 1u };
const VkImageSubresourceLayers defaultStencilSourceLayer = { VK_IMAGE_ASPECT_STENCIL_BIT, 0u, 0u, 1u };
const VkOffset3D dstOffset = {i, 0, 0};
const VkExtent3D extent = {defaultFourthSize, 1, 1};
- if (tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order))
+ if (hasDepth)
{
const VkImageCopy testCopy =
{
copyRegion.imageCopy = testCopy;
params.regions.push_back(copyRegion);
}
- if (tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order))
+ if (hasStencil)
{
const VkImageCopy testCopy =
{
params.dst.image.tiling = VK_IMAGE_TILING_OPTIMAL;
params.allocationKind = allocationKind;
- const VkImageSubresourceLayers defaultDepthSourceLayer = { VK_IMAGE_ASPECT_DEPTH_BIT, 0u, 0u, 1u };
- const VkImageSubresourceLayers defaultStencilSourceLayer = { VK_IMAGE_ASPECT_STENCIL_BIT, 0u, 0u, 1u };
-
bool hasDepth = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
+ const VkImageSubresourceLayers defaultDepthSourceLayer = { VK_IMAGE_ASPECT_DEPTH_BIT, 0u, 0u, 1u };
+ const VkImageSubresourceLayers defaultStencilSourceLayer = { VK_IMAGE_ASPECT_STENCIL_BIT, 0u, 0u, 1u };
+
for (deInt32 i = 0; i < defaultFourthSize; i += defaultSixteenthSize)
{
CopyRegion copyRegion;
static const VkConformanceVersionKHR knownConformanceVersions[] =
{
- makeConformanceVersionKHR(1, 1, 6, 2),
- makeConformanceVersionKHR(1, 1, 6, 1),
- makeConformanceVersionKHR(1, 1, 6, 0),
- makeConformanceVersionKHR(1, 1, 5, 2),
- makeConformanceVersionKHR(1, 1, 5, 1),
- makeConformanceVersionKHR(1, 1, 5, 0),
- makeConformanceVersionKHR(1, 1, 4, 3),
- makeConformanceVersionKHR(1, 1, 4, 2),
- makeConformanceVersionKHR(1, 1, 4, 1),
- makeConformanceVersionKHR(1, 1, 4, 0),
- makeConformanceVersionKHR(1, 1, 3, 3),
- makeConformanceVersionKHR(1, 1, 3, 2),
- makeConformanceVersionKHR(1, 1, 3, 1),
- makeConformanceVersionKHR(1, 1, 3, 0),
- makeConformanceVersionKHR(1, 1, 2, 3),
- makeConformanceVersionKHR(1, 1, 2, 2),
- makeConformanceVersionKHR(1, 1, 2, 1),
- makeConformanceVersionKHR(1, 1, 2, 0),
+ makeConformanceVersion(1, 2, 0, 2),
+ makeConformanceVersion(1, 2, 0, 1),
+ makeConformanceVersion(1, 2, 0, 0),
+ makeConformanceVersion(1, 1, 6, 2),
+ makeConformanceVersion(1, 1, 6, 1),
+ makeConformanceVersion(1, 1, 6, 0),
+ makeConformanceVersion(1, 1, 5, 2),
+ makeConformanceVersion(1, 1, 5, 1),
+ makeConformanceVersion(1, 1, 5, 0),
+ makeConformanceVersion(1, 1, 4, 3),
+ makeConformanceVersion(1, 1, 4, 2),
+ makeConformanceVersion(1, 1, 4, 1),
+ makeConformanceVersion(1, 1, 4, 0),
+ makeConformanceVersion(1, 1, 3, 3),
+ makeConformanceVersion(1, 1, 3, 2),
+ makeConformanceVersion(1, 1, 3, 1),
+ makeConformanceVersion(1, 1, 3, 0),
+ makeConformanceVersion(1, 1, 2, 3),
+ makeConformanceVersion(1, 1, 2, 2),
+ makeConformanceVersion(1, 1, 2, 1),
+ makeConformanceVersion(1, 1, 2, 0),
+ makeConformanceVersion(1, 1, 1, 3),
+ makeConformanceVersion(1, 1, 1, 2),
+ makeConformanceVersion(1, 1, 1, 1),
+ makeConformanceVersion(1, 1, 1, 0),
};
DE_INLINE bool isNullTerminated(const char* str, const deUint32 maxSize)
return deStrnlen(str, maxSize) < maxSize;
}
-DE_INLINE bool operator==(const VkConformanceVersionKHR& a, const VkConformanceVersionKHR& b)
+DE_INLINE bool operator==(const VkConformanceVersion& a, const VkConformanceVersion& b)
{
return ((a.major == b.major) &&
(a.minor == b.minor) &&
const VkPhysicalDevice physDevice = context.getPhysicalDevice();
const int memsetPattern = 0xaa;
VkPhysicalDeviceProperties2 deviceProperties2;
- VkPhysicalDeviceDriverPropertiesKHR deviceDriverProperties;
+ VkPhysicalDeviceDriverProperties deviceDriverProperties;
deMemset(&deviceDriverProperties, memsetPattern, sizeof(deviceDriverProperties));
deviceDriverProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR;
return limitsOk;
}
+void validateLimitsCheckSupport (Context& context)
+{
+ if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+ TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+}
+
+typedef struct FeatureLimitTableItem_
+{
+ const void* cond;
+ const char* condName;
+ const void* ptr;
+ const char* name;
+ deUint32 uintVal; //!< Format is UNSIGNED_INT
+ deInt32 intVal; //!< Format is SIGNED_INT
+ deUint64 deviceSizeVal; //!< Format is DEVICE_SIZE
+ float floatVal; //!< Format is FLOAT
+ LimitFormat format;
+ LimitType type;
+} FeatureLimitTableItem;
+
+template<typename T>
+bool validateNumericLimit (const T limitToCheck, const T reportedValue, const LimitType limitType, const char* limitName, TestLog& log)
+{
+ if (limitType == LIMIT_TYPE_MIN)
+ {
+ if (reportedValue < limitToCheck)
+ {
+ log << TestLog::Message << "Limit validation failed " << limitName
+ << " reported value is " << reportedValue
+ << " expected MIN " << limitToCheck
+ << TestLog::EndMessage;
+
+ return false;
+ }
+
+ log << TestLog::Message << limitName
+ << "=" << reportedValue
+ << " (>=" << limitToCheck << ")"
+ << TestLog::EndMessage;
+ }
+ else if (limitType == LIMIT_TYPE_MAX)
+ {
+ if (reportedValue > limitToCheck)
+ {
+ log << TestLog::Message << "Limit validation failed " << limitName
+ << " reported value is " << reportedValue
+ << " expected MAX " << limitToCheck
+ << TestLog::EndMessage;
+
+ return false;
+ }
+
+ log << TestLog::Message << limitName
+ << "=" << reportedValue
+ << " (<=" << limitToCheck << ")"
+ << TestLog::EndMessage;
+ }
+
+ return true;
+}
+
+template<typename T>
+bool validateBitmaskLimit (const T limitToCheck, const T reportedValue, const LimitType limitType, const char* limitName, TestLog& log)
+{
+ if (limitType == LIMIT_TYPE_MIN)
+ {
+ if ((reportedValue & limitToCheck) != limitToCheck)
+ {
+ log << TestLog::Message << "Limit validation failed " << limitName
+ << " reported value is " << reportedValue
+ << " expected MIN " << limitToCheck
+ << TestLog::EndMessage;
+
+ return false;
+ }
+
+ log << TestLog::Message << limitName
+ << "=" << tcu::toHex(reportedValue)
+ << " (contains " << tcu::toHex(limitToCheck) << ")"
+ << TestLog::EndMessage;
+ }
+
+ return true;
+}
+
+bool validateLimit (FeatureLimitTableItem limit, TestLog& log)
+{
+ if (*((VkBool32*)limit.cond) == DE_FALSE)
+ {
+ log << TestLog::Message
+ << "Limit validation skipped '" << limit.name << "' due to "
+ << limit.condName << " == false'"
+ << TestLog::EndMessage;
+
+ return true;
+ }
+
+ switch (limit.format)
+ {
+ case LIMIT_FORMAT_UNSIGNED_INT:
+ {
+ const deUint32 limitToCheck = limit.uintVal;
+ const deUint32 reportedValue = *(deUint32*)limit.ptr;
+
+ return validateNumericLimit(limitToCheck, reportedValue, limit.type, limit.name, log);
+ }
+
+ case LIMIT_FORMAT_FLOAT:
+ {
+ const float limitToCheck = limit.floatVal;
+ const float reportedValue = *(float*)limit.ptr;
+
+ return validateNumericLimit(limitToCheck, reportedValue, limit.type, limit.name, log);
+ }
+
+ case LIMIT_FORMAT_SIGNED_INT:
+ {
+ const deInt32 limitToCheck = limit.intVal;
+ const deInt32 reportedValue = *(deInt32*)limit.ptr;
+
+ return validateNumericLimit(limitToCheck, reportedValue, limit.type, limit.name, log);
+ }
+
+ case LIMIT_FORMAT_DEVICE_SIZE:
+ {
+ const deUint64 limitToCheck = limit.deviceSizeVal;
+ const deUint64 reportedValue = *(deUint64*)limit.ptr;
+
+ return validateNumericLimit(limitToCheck, reportedValue, limit.type, limit.name, log);
+ }
+
+ case LIMIT_FORMAT_BITMASK:
+ {
+ const deUint32 limitToCheck = limit.uintVal;
+ const deUint32 reportedValue = *(deUint32*)limit.ptr;
+
+ return validateBitmaskLimit(limitToCheck, reportedValue, limit.type, limit.name, log);
+ }
+
+ default:
+ TCU_THROW(InternalError, "Unknown LimitFormat specified");
+ }
+}
+
+#ifdef PN
+#error PN defined
+#else
+#define PN(_X_) &(_X_), (const char*)(#_X_)
+#endif
+
+#define LIM_MIN_UINT32(X) deUint32(X), 0, 0, 0.0f, LIMIT_FORMAT_UNSIGNED_INT, LIMIT_TYPE_MIN
+#define LIM_MAX_UINT32(X) deUint32(X), 0, 0, 0.0f, LIMIT_FORMAT_UNSIGNED_INT, LIMIT_TYPE_MAX
+#define LIM_NONE_UINT32 0, 0, 0, 0.0f, LIMIT_FORMAT_UNSIGNED_INT, LIMIT_TYPE_NONE
+#define LIM_MIN_INT32(X) 0, deInt32(X), 0, 0.0f, LIMIT_FORMAT_SIGNED_INT, LIMIT_TYPE_MIN
+#define LIM_MAX_INT32(X) 0, deInt32(X), 0, 0.0f, LIMIT_FORMAT_SIGNED_INT, LIMIT_TYPE_MAX
+#define LIM_NONE_INT32 0, 0, 0, 0.0f, LIMIT_FORMAT_SIGNED_INT, LIMIT_TYPE_NONE
+#define LIM_MIN_DEVSIZE(X) 0, 0, VkDeviceSize(X), 0.0f, LIMIT_FORMAT_DEVICE_SIZE, LIMIT_TYPE_MIN
+#define LIM_MAX_DEVSIZE(X) 0, 0, VkDeviceSize(X), 0.0f, LIMIT_FORMAT_DEVICE_SIZE, LIMIT_TYPE_MAX
+#define LIM_NONE_DEVSIZE 0, 0, 0, 0.0f, LIMIT_FORMAT_DEVICE_SIZE, LIMIT_TYPE_NONE
+#define LIM_MIN_FLOAT(X) 0, 0, 0, float(X), LIMIT_FORMAT_FLOAT, LIMIT_TYPE_MIN
+#define LIM_MAX_FLOAT(X) 0, 0, 0, float(X), LIMIT_FORMAT_FLOAT, LIMIT_TYPE_MAX
+#define LIM_NONE_FLOAT 0, 0, 0, 0.0f, LIMIT_FORMAT_FLOAT, LIMIT_TYPE_NONE
+#define LIM_MIN_BITI32(X) deUint32(X), 0, 0, 0.0f, LIMIT_FORMAT_BITMASK, LIMIT_TYPE_MIN
+#define LIM_MAX_BITI32(X) deUint32(X), 0, 0, 0.0f, LIMIT_FORMAT_BITMASK, LIMIT_TYPE_MAX
+#define LIM_NONE_BITI32 0, 0, 0, 0.0f, LIMIT_FORMAT_BITMASK, LIMIT_TYPE_NONE
+
+tcu::TestStatus validateLimits12 (Context& context)
+{
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const InstanceInterface& vki = context.getInstanceInterface();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ const VkPhysicalDeviceFeatures2& features2 = context.getDeviceFeatures2();
+ const VkPhysicalDeviceFeatures& features = features2.features;
+ const VkPhysicalDeviceVulkan12Features features12 = getPhysicalDeviceVulkan12Features(vki, physicalDevice);
+
+ const VkPhysicalDeviceProperties2& properties2 = context.getDeviceProperties2();
+ const VkPhysicalDeviceVulkan12Properties vulkan12Properties = getPhysicalDeviceVulkan12Properties(vki, physicalDevice);
+ const VkPhysicalDeviceVulkan11Properties vulkan11Properties = getPhysicalDeviceVulkan11Properties(vki, physicalDevice);
+ const VkPhysicalDeviceLimits& limits = properties2.properties.limits;
+
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkBool32 checkVulkan12Limit = VK_TRUE;
+
+ deUint32 shaderStages = 3;
+ deUint32 maxPerStageResourcesMin = deMin32(128, limits.maxPerStageDescriptorUniformBuffers +
+ limits.maxPerStageDescriptorStorageBuffers +
+ limits.maxPerStageDescriptorSampledImages +
+ limits.maxPerStageDescriptorStorageImages +
+ limits.maxPerStageDescriptorInputAttachments +
+ limits.maxColorAttachments);
+
+ if (features.tessellationShader)
+ {
+ shaderStages += 2;
+ }
+
+ if (features.geometryShader)
+ {
+ shaderStages++;
+ }
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(limits.maxImageDimension1D), LIM_MIN_UINT32(4096) },
+ { PN(checkAlways), PN(limits.maxImageDimension2D), LIM_MIN_UINT32(4096) },
+ { PN(checkAlways), PN(limits.maxImageDimension3D), LIM_MIN_UINT32(256) },
+ { PN(checkAlways), PN(limits.maxImageDimensionCube), LIM_MIN_UINT32(4096) },
+ { PN(checkAlways), PN(limits.maxImageArrayLayers), LIM_MIN_UINT32(256) },
+ { PN(checkAlways), PN(limits.maxTexelBufferElements), LIM_MIN_UINT32(65536) },
+ { PN(checkAlways), PN(limits.maxUniformBufferRange), LIM_MIN_UINT32(16384) },
+ { PN(checkAlways), PN(limits.maxStorageBufferRange), LIM_MIN_UINT32((1<<27)) },
+ { PN(checkAlways), PN(limits.maxPushConstantsSize), LIM_MIN_UINT32(128) },
+ { PN(checkAlways), PN(limits.maxMemoryAllocationCount), LIM_MIN_UINT32(4096) },
+ { PN(checkAlways), PN(limits.maxSamplerAllocationCount), LIM_MIN_UINT32(4000) },
+ { PN(checkAlways), PN(limits.bufferImageGranularity), LIM_MIN_DEVSIZE(1) },
+ { PN(checkAlways), PN(limits.bufferImageGranularity), LIM_MAX_DEVSIZE(131072) },
+ { PN(features.sparseBinding), PN(limits.sparseAddressSpaceSize), LIM_MIN_DEVSIZE((1ull<<31)) },
+ { PN(checkAlways), PN(limits.maxBoundDescriptorSets), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.maxPerStageDescriptorSamplers), LIM_MIN_UINT32(16) },
+ { PN(checkAlways), PN(limits.maxPerStageDescriptorUniformBuffers), LIM_MIN_UINT32(12) },
+ { PN(checkAlways), PN(limits.maxPerStageDescriptorStorageBuffers), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.maxPerStageDescriptorSampledImages), LIM_MIN_UINT32(16) },
+ { PN(checkAlways), PN(limits.maxPerStageDescriptorStorageImages), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.maxPerStageDescriptorInputAttachments), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.maxPerStageResources), LIM_MIN_UINT32(maxPerStageResourcesMin) },
+ { PN(checkAlways), PN(limits.maxDescriptorSetSamplers), LIM_MIN_UINT32(shaderStages * 16) },
+ { PN(checkAlways), PN(limits.maxDescriptorSetUniformBuffers), LIM_MIN_UINT32(shaderStages * 12) },
+ { PN(checkAlways), PN(limits.maxDescriptorSetUniformBuffersDynamic), LIM_MIN_UINT32(8) },
+ { PN(checkAlways), PN(limits.maxDescriptorSetStorageBuffers), LIM_MIN_UINT32(shaderStages * 4) },
+ { PN(checkAlways), PN(limits.maxDescriptorSetStorageBuffersDynamic), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.maxDescriptorSetSampledImages), LIM_MIN_UINT32(shaderStages * 16) },
+ { PN(checkAlways), PN(limits.maxDescriptorSetStorageImages), LIM_MIN_UINT32(shaderStages * 4) },
+ { PN(checkAlways), PN(limits.maxDescriptorSetInputAttachments), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.maxVertexInputAttributes), LIM_MIN_UINT32(16) },
+ { PN(checkAlways), PN(limits.maxVertexInputBindings), LIM_MIN_UINT32(16) },
+ { PN(checkAlways), PN(limits.maxVertexInputAttributeOffset), LIM_MIN_UINT32(2047) },
+ { PN(checkAlways), PN(limits.maxVertexInputBindingStride), LIM_MIN_UINT32(2048) },
+ { PN(checkAlways), PN(limits.maxVertexOutputComponents), LIM_MIN_UINT32(64) },
+ { PN(features.tessellationShader), PN(limits.maxTessellationGenerationLevel), LIM_MIN_UINT32(64) },
+ { PN(features.tessellationShader), PN(limits.maxTessellationPatchSize), LIM_MIN_UINT32(32) },
+ { PN(features.tessellationShader), PN(limits.maxTessellationControlPerVertexInputComponents), LIM_MIN_UINT32(64) },
+ { PN(features.tessellationShader), PN(limits.maxTessellationControlPerVertexOutputComponents), LIM_MIN_UINT32(64) },
+ { PN(features.tessellationShader), PN(limits.maxTessellationControlPerPatchOutputComponents), LIM_MIN_UINT32(120) },
+ { PN(features.tessellationShader), PN(limits.maxTessellationControlTotalOutputComponents), LIM_MIN_UINT32(2048) },
+ { PN(features.tessellationShader), PN(limits.maxTessellationEvaluationInputComponents), LIM_MIN_UINT32(64) },
+ { PN(features.tessellationShader), PN(limits.maxTessellationEvaluationOutputComponents), LIM_MIN_UINT32(64) },
+ { PN(features.geometryShader), PN(limits.maxGeometryShaderInvocations), LIM_MIN_UINT32(32) },
+ { PN(features.geometryShader), PN(limits.maxGeometryInputComponents), LIM_MIN_UINT32(64) },
+ { PN(features.geometryShader), PN(limits.maxGeometryOutputComponents), LIM_MIN_UINT32(64) },
+ { PN(features.geometryShader), PN(limits.maxGeometryOutputVertices), LIM_MIN_UINT32(256) },
+ { PN(features.geometryShader), PN(limits.maxGeometryTotalOutputComponents), LIM_MIN_UINT32(1024) },
+ { PN(checkAlways), PN(limits.maxFragmentInputComponents), LIM_MIN_UINT32(64) },
+ { PN(checkAlways), PN(limits.maxFragmentOutputAttachments), LIM_MIN_UINT32(4) },
+ { PN(features.dualSrcBlend), PN(limits.maxFragmentDualSrcAttachments), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(limits.maxFragmentCombinedOutputResources), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.maxComputeSharedMemorySize), LIM_MIN_UINT32(16384) },
+ { PN(checkAlways), PN(limits.maxComputeWorkGroupCount[0]), LIM_MIN_UINT32(65535) },
+ { PN(checkAlways), PN(limits.maxComputeWorkGroupCount[1]), LIM_MIN_UINT32(65535) },
+ { PN(checkAlways), PN(limits.maxComputeWorkGroupCount[2]), LIM_MIN_UINT32(65535) },
+ { PN(checkAlways), PN(limits.maxComputeWorkGroupInvocations), LIM_MIN_UINT32(128) },
+ { PN(checkAlways), PN(limits.maxComputeWorkGroupSize[0]), LIM_MIN_UINT32(128) },
+ { PN(checkAlways), PN(limits.maxComputeWorkGroupSize[1]), LIM_MIN_UINT32(128) },
+ { PN(checkAlways), PN(limits.maxComputeWorkGroupSize[2]), LIM_MIN_UINT32(64) },
+ { PN(checkAlways), PN(limits.subPixelPrecisionBits), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.subTexelPrecisionBits), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.mipmapPrecisionBits), LIM_MIN_UINT32(4) },
+ { PN(features.fullDrawIndexUint32), PN(limits.maxDrawIndexedIndexValue), LIM_MIN_UINT32((deUint32)~0) },
+ { PN(features.multiDrawIndirect), PN(limits.maxDrawIndirectCount), LIM_MIN_UINT32(65535) },
+ { PN(checkAlways), PN(limits.maxSamplerLodBias), LIM_MIN_FLOAT(2.0f) },
+ { PN(features.samplerAnisotropy), PN(limits.maxSamplerAnisotropy), LIM_MIN_FLOAT(16.0f) },
+ { PN(features.multiViewport), PN(limits.maxViewports), LIM_MIN_UINT32(16) },
+ { PN(checkAlways), PN(limits.maxViewportDimensions[0]), LIM_MIN_UINT32(4096) },
+ { PN(checkAlways), PN(limits.maxViewportDimensions[1]), LIM_MIN_UINT32(4096) },
+ { PN(checkAlways), PN(limits.viewportBoundsRange[0]), LIM_MAX_FLOAT(-8192.0f) },
+ { PN(checkAlways), PN(limits.viewportBoundsRange[1]), LIM_MIN_FLOAT(8191.0f) },
+ { PN(checkAlways), PN(limits.viewportSubPixelBits), LIM_MIN_UINT32(0) },
+ { PN(checkAlways), PN(limits.minMemoryMapAlignment), LIM_MIN_UINT32(64) },
+ { PN(checkAlways), PN(limits.minTexelBufferOffsetAlignment), LIM_MIN_DEVSIZE(1) },
+ { PN(checkAlways), PN(limits.minTexelBufferOffsetAlignment), LIM_MAX_DEVSIZE(256) },
+ { PN(checkAlways), PN(limits.minUniformBufferOffsetAlignment), LIM_MIN_DEVSIZE(1) },
+ { PN(checkAlways), PN(limits.minUniformBufferOffsetAlignment), LIM_MAX_DEVSIZE(256) },
+ { PN(checkAlways), PN(limits.minStorageBufferOffsetAlignment), LIM_MIN_DEVSIZE(1) },
+ { PN(checkAlways), PN(limits.minStorageBufferOffsetAlignment), LIM_MAX_DEVSIZE(256) },
+ { PN(checkAlways), PN(limits.minTexelOffset), LIM_MAX_INT32(-8) },
+ { PN(checkAlways), PN(limits.maxTexelOffset), LIM_MIN_INT32(7) },
+ { PN(features.shaderImageGatherExtended), PN(limits.minTexelGatherOffset), LIM_MAX_INT32(-8) },
+ { PN(features.shaderImageGatherExtended), PN(limits.maxTexelGatherOffset), LIM_MIN_INT32(7) },
+ { PN(features.sampleRateShading), PN(limits.minInterpolationOffset), LIM_MAX_FLOAT(-0.5f) },
+ { PN(features.sampleRateShading), PN(limits.maxInterpolationOffset), LIM_MIN_FLOAT(0.5f - (1.0f/deFloatPow(2.0f, (float)limits.subPixelInterpolationOffsetBits))) },
+ { PN(features.sampleRateShading), PN(limits.subPixelInterpolationOffsetBits), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.maxFramebufferWidth), LIM_MIN_UINT32(4096) },
+ { PN(checkAlways), PN(limits.maxFramebufferHeight), LIM_MIN_UINT32(4096) },
+ { PN(checkAlways), PN(limits.maxFramebufferLayers), LIM_MIN_UINT32(256) },
+ { PN(checkAlways), PN(limits.framebufferColorSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+ { PN(checkVulkan12Limit), PN(vulkan12Properties.framebufferIntegerColorSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT) },
+ { PN(checkAlways), PN(limits.framebufferDepthSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+ { PN(checkAlways), PN(limits.framebufferStencilSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+ { PN(checkAlways), PN(limits.framebufferNoAttachmentsSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+ { PN(checkAlways), PN(limits.maxColorAttachments), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(limits.sampledImageColorSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+ { PN(checkAlways), PN(limits.sampledImageIntegerSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT) },
+ { PN(checkAlways), PN(limits.sampledImageDepthSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+ { PN(checkAlways), PN(limits.sampledImageStencilSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+ { PN(features.shaderStorageImageMultisample), PN(limits.storageImageSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+ { PN(checkAlways), PN(limits.maxSampleMaskWords), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(limits.timestampComputeAndGraphics), LIM_NONE_UINT32 },
+ { PN(checkAlways), PN(limits.timestampPeriod), LIM_NONE_UINT32 },
+ { PN(features.shaderClipDistance), PN(limits.maxClipDistances), LIM_MIN_UINT32(8) },
+ { PN(features.shaderClipDistance), PN(limits.maxCullDistances), LIM_MIN_UINT32(8) },
+ { PN(features.shaderClipDistance), PN(limits.maxCombinedClipAndCullDistances), LIM_MIN_UINT32(8) },
+ { PN(checkAlways), PN(limits.discreteQueuePriorities), LIM_MIN_UINT32(2) },
+ { PN(features.largePoints), PN(limits.pointSizeRange[0]), LIM_MIN_FLOAT(0.0f) },
+ { PN(features.largePoints), PN(limits.pointSizeRange[0]), LIM_MAX_FLOAT(1.0f) },
+ { PN(features.largePoints), PN(limits.pointSizeRange[1]), LIM_MIN_FLOAT(64.0f - limits.pointSizeGranularity) },
+ { PN(features.wideLines), PN(limits.lineWidthRange[0]), LIM_MIN_FLOAT(0.0f) },
+ { PN(features.wideLines), PN(limits.lineWidthRange[0]), LIM_MAX_FLOAT(1.0f) },
+ { PN(features.wideLines), PN(limits.lineWidthRange[1]), LIM_MIN_FLOAT(8.0f - limits.lineWidthGranularity) },
+ { PN(features.largePoints), PN(limits.pointSizeGranularity), LIM_MIN_FLOAT(0.0f) },
+ { PN(features.largePoints), PN(limits.pointSizeGranularity), LIM_MAX_FLOAT(1.0f) },
+ { PN(features.wideLines), PN(limits.lineWidthGranularity), LIM_MIN_FLOAT(0.0f) },
+ { PN(features.wideLines), PN(limits.lineWidthGranularity), LIM_MAX_FLOAT(1.0f) },
+ { PN(checkAlways), PN(limits.strictLines), LIM_NONE_UINT32 },
+ { PN(checkAlways), PN(limits.standardSampleLocations), LIM_NONE_UINT32 },
+ { PN(checkAlways), PN(limits.optimalBufferCopyOffsetAlignment), LIM_NONE_DEVSIZE },
+ { PN(checkAlways), PN(limits.optimalBufferCopyRowPitchAlignment), LIM_NONE_DEVSIZE },
+ { PN(checkAlways), PN(limits.nonCoherentAtomSize), LIM_MIN_DEVSIZE(1) },
+ { PN(checkAlways), PN(limits.nonCoherentAtomSize), LIM_MAX_DEVSIZE(256) },
+
+ // VK_KHR_multiview
+ { PN(checkVulkan12Limit), PN(vulkan11Properties.maxMultiviewViewCount), LIM_MIN_UINT32(6) },
+ { PN(checkVulkan12Limit), PN(vulkan11Properties.maxMultiviewInstanceIndex), LIM_MIN_UINT32((1<<27) - 1) },
+
+ // VK_KHR_maintenance3
+ { PN(checkVulkan12Limit), PN(vulkan11Properties.maxPerSetDescriptors), LIM_MIN_UINT32(1024) },
+ { PN(checkVulkan12Limit), PN(vulkan11Properties.maxMemoryAllocationSize), LIM_MIN_DEVSIZE(1<<30) },
+
+ // VK_EXT_descriptor_indexing
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxUpdateAfterBindDescriptorsInAllPools), LIM_MIN_UINT32(500000) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSamplers), LIM_MIN_UINT32(500000) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers), LIM_MIN_UINT32(12) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers), LIM_MIN_UINT32(500000) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSampledImages), LIM_MIN_UINT32(500000) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageImages), LIM_MIN_UINT32(500000) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments), LIM_MIN_UINT32(4) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageUpdateAfterBindResources), LIM_MIN_UINT32(500000) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindSamplers), LIM_MIN_UINT32(500000) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffers), LIM_MIN_UINT32(shaderStages * 12) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic), LIM_MIN_UINT32(8) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffers), LIM_MIN_UINT32(500000) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic), LIM_MIN_UINT32(4) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindSampledImages), LIM_MIN_UINT32(500000) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageImages), LIM_MIN_UINT32(500000) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindInputAttachments), LIM_MIN_UINT32(4) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSamplers), LIM_MIN_UINT32(limits.maxPerStageDescriptorSamplers) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers), LIM_MIN_UINT32(limits.maxPerStageDescriptorUniformBuffers) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers), LIM_MIN_UINT32(limits.maxPerStageDescriptorStorageBuffers) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSampledImages), LIM_MIN_UINT32(limits.maxPerStageDescriptorSampledImages) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageImages), LIM_MIN_UINT32(limits.maxPerStageDescriptorStorageImages) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments), LIM_MIN_UINT32(limits.maxPerStageDescriptorInputAttachments) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxPerStageUpdateAfterBindResources), LIM_MIN_UINT32(limits.maxPerStageResources) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindSamplers), LIM_MIN_UINT32(limits.maxDescriptorSetSamplers) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffers), LIM_MIN_UINT32(limits.maxDescriptorSetUniformBuffers) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic), LIM_MIN_UINT32(limits.maxDescriptorSetUniformBuffersDynamic) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffers), LIM_MIN_UINT32(limits.maxDescriptorSetStorageBuffers) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic), LIM_MIN_UINT32(limits.maxDescriptorSetStorageBuffersDynamic) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindSampledImages), LIM_MIN_UINT32(limits.maxDescriptorSetSampledImages) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageImages), LIM_MIN_UINT32(limits.maxDescriptorSetStorageImages) },
+ { PN(features12.descriptorIndexing), PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindInputAttachments), LIM_MIN_UINT32(limits.maxDescriptorSetInputAttachments) },
+
+ // timelineSemaphore
+ { PN(checkVulkan12Limit), PN(vulkan12Properties.maxTimelineSemaphoreValueDifference), LIM_MIN_DEVSIZE((1ull<<31) - 1) },
+ };
+
+ log << TestLog::Message << limits << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limits.maxFramebufferWidth > limits.maxViewportDimensions[0] ||
+ limits.maxFramebufferHeight > limits.maxViewportDimensions[1])
+ {
+ log << TestLog::Message << "limit validation failed, maxFramebufferDimension of "
+ << "[" << limits.maxFramebufferWidth << ", " << limits.maxFramebufferHeight << "] "
+ << "is larger than maxViewportDimension of "
+ << "[" << limits.maxViewportDimensions[0] << ", " << limits.maxViewportDimensions[1] << "]" << TestLog::EndMessage;
+ limitsOk = false;
+ }
+
+ if (limits.viewportBoundsRange[0] > float(-2 * limits.maxViewportDimensions[0]))
+ {
+ log << TestLog::Message << "limit validation failed, viewPortBoundsRange[0] of " << limits.viewportBoundsRange[0]
+ << "is larger than -2*maxViewportDimension[0] of " << -2*limits.maxViewportDimensions[0] << TestLog::EndMessage;
+ limitsOk = false;
+ }
+
+ if (limits.viewportBoundsRange[1] < float(2 * limits.maxViewportDimensions[1] - 1))
+ {
+ log << TestLog::Message << "limit validation failed, viewportBoundsRange[1] of " << limits.viewportBoundsRange[1]
+ << "is less than 2*maxViewportDimension[1] of " << 2*limits.maxViewportDimensions[1] << TestLog::EndMessage;
+ limitsOk = false;
+ }
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportKhrPushDescriptor (Context& context)
+{
+ context.requireDeviceFunctionality("VK_KHR_push_descriptor");
+}
+
+tcu::TestStatus validateLimitsKhrPushDescriptor (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDevicePushDescriptorPropertiesKHR& pushDescriptorPropertiesKHR = context.getPushDescriptorProperties();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(pushDescriptorPropertiesKHR.maxPushDescriptors), LIM_MIN_UINT32(32) },
+ };
+
+ log << TestLog::Message << pushDescriptorPropertiesKHR << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportKhrMultiview (Context& context)
+{
+ context.requireDeviceFunctionality("VK_KHR_multiview");
+}
+
+tcu::TestStatus validateLimitsKhrMultiview (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceMultiviewProperties& multiviewProperties = context.getMultiviewProperties();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ // VK_KHR_multiview
+ { PN(checkAlways), PN(multiviewProperties.maxMultiviewViewCount), LIM_MIN_UINT32(6) },
+ { PN(checkAlways), PN(multiviewProperties.maxMultiviewInstanceIndex), LIM_MIN_UINT32((1<<27) - 1) },
+ };
+
+ log << TestLog::Message << multiviewProperties << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtDiscardRectangles (Context& context)
+{
+ context.requireDeviceFunctionality("VK_EXT_discard_rectangles");
+}
+
+tcu::TestStatus validateLimitsExtDiscardRectangles (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT& discardRectanglePropertiesEXT = context.getDiscardRectanglePropertiesEXT();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(discardRectanglePropertiesEXT.maxDiscardRectangles), LIM_MIN_UINT32(4) },
+ };
+
+ log << TestLog::Message << discardRectanglePropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtSampleLocations (Context& context)
+{
+ context.requireDeviceFunctionality("VK_EXT_sample_locations");
+}
+
+tcu::TestStatus validateLimitsExtSampleLocations (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT& sampleLocationsPropertiesEXT = context.getSampleLocationsPropertiesEXT();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(sampleLocationsPropertiesEXT.sampleLocationSampleCounts), LIM_MIN_BITI32(VK_SAMPLE_COUNT_4_BIT) },
+ { PN(checkAlways), PN(sampleLocationsPropertiesEXT.maxSampleLocationGridSize.width), LIM_MIN_FLOAT(0.0f) },
+ { PN(checkAlways), PN(sampleLocationsPropertiesEXT.maxSampleLocationGridSize.height), LIM_MIN_FLOAT(0.0f) },
+ { PN(checkAlways), PN(sampleLocationsPropertiesEXT.sampleLocationCoordinateRange[0]), LIM_MAX_FLOAT(0.0f) },
+ { PN(checkAlways), PN(sampleLocationsPropertiesEXT.sampleLocationCoordinateRange[1]), LIM_MIN_FLOAT(0.9375f) },
+ { PN(checkAlways), PN(sampleLocationsPropertiesEXT.sampleLocationSubPixelBits), LIM_MIN_UINT32(4) },
+ };
+
+ log << TestLog::Message << sampleLocationsPropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtExternalMemoryHost (Context& context)
+{
+ context.requireDeviceFunctionality("VK_EXT_external_memory_host");
+}
+
+tcu::TestStatus validateLimitsExtExternalMemoryHost (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT& externalMemoryHostPropertiesEXT = context.getExternalMemoryHostPropertiesEXT();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(externalMemoryHostPropertiesEXT.minImportedHostPointerAlignment), LIM_MAX_DEVSIZE(65536) },
+ };
+
+ log << TestLog::Message << externalMemoryHostPropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtBlendOperationAdvanced (Context& context)
+{
+ context.requireDeviceFunctionality("VK_EXT_blend_operation_advanced");
+}
+
+tcu::TestStatus validateLimitsExtBlendOperationAdvanced (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& blendOperationAdvancedPropertiesEXT = context.getBlendOperationAdvancedPropertiesEXT();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(blendOperationAdvancedPropertiesEXT.advancedBlendMaxColorAttachments), LIM_MIN_UINT32(1) },
+ };
+
+ log << TestLog::Message << blendOperationAdvancedPropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportKhrMaintenance3 (Context& context)
+{
+ context.requireDeviceFunctionality("VK_KHR_maintenance3");
+}
+
+tcu::TestStatus validateLimitsKhrMaintenance3 (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceMaintenance3Properties& maintenance3Properties = context.getMaintenance3Properties();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(maintenance3Properties.maxPerSetDescriptors), LIM_MIN_UINT32(1024) },
+ { PN(checkAlways), PN(maintenance3Properties.maxMemoryAllocationSize), LIM_MIN_DEVSIZE(1<<30) },
+ };
+
+ log << TestLog::Message << maintenance3Properties << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtConservativeRasterization (Context& context)
+{
+ context.requireDeviceFunctionality("VK_EXT_conservative_rasterization");
+}
+
+tcu::TestStatus validateLimitsExtConservativeRasterization (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT& conservativeRasterizationPropertiesEXT = context.getConservativeRasterizationPropertiesEXT();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(conservativeRasterizationPropertiesEXT.primitiveOverestimationSize), LIM_MIN_FLOAT(0.0f) },
+ { PN(checkAlways), PN(conservativeRasterizationPropertiesEXT.maxExtraPrimitiveOverestimationSize), LIM_MIN_FLOAT(0.0f) },
+ { PN(checkAlways), PN(conservativeRasterizationPropertiesEXT.extraPrimitiveOverestimationSizeGranularity), LIM_MIN_FLOAT(0.0f) },
+ };
+
+ log << TestLog::Message << conservativeRasterizationPropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtDescriptorIndexing (Context& context)
+{
+ const std::string& requiredDeviceExtension = "VK_EXT_descriptor_indexing";
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const InstanceInterface& vki = context.getInstanceInterface();
+ const std::vector<VkExtensionProperties> deviceExtensionProperties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+
+ if (!isExtensionSupported(deviceExtensionProperties, RequiredExtension(requiredDeviceExtension)))
+ TCU_THROW(NotSupportedError, requiredDeviceExtension + " is not supported");
+
+ // Extension string is present, then extension is really supported and should have been added into chain in DefaultDevice properties and features
+}
+
+tcu::TestStatus validateLimitsExtDescriptorIndexing (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceProperties2& properties2 = context.getDeviceProperties2();
+ const VkPhysicalDeviceLimits& limits = properties2.properties.limits;
+ const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& descriptorIndexingPropertiesEXT = context.getDescriptorIndexingProperties();
+ const VkPhysicalDeviceFeatures& features = context.getDeviceFeatures();
+ const deUint32 tessellationShaderCount = (features.tessellationShader) ? 2 : 0;
+ const deUint32 geometryShaderCount = (features.geometryShader) ? 1 : 0;
+ const deUint32 shaderStages = 3 + tessellationShaderCount + geometryShaderCount;
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxUpdateAfterBindDescriptorsInAllPools), LIM_MIN_UINT32(500000) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindSamplers), LIM_MIN_UINT32(500000) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindUniformBuffers), LIM_MIN_UINT32(12) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindStorageBuffers), LIM_MIN_UINT32(500000) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindSampledImages), LIM_MIN_UINT32(500000) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindStorageImages), LIM_MIN_UINT32(500000) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindInputAttachments), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageUpdateAfterBindResources), LIM_MIN_UINT32(500000) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindSamplers), LIM_MIN_UINT32(500000) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindUniformBuffers), LIM_MIN_UINT32(shaderStages * 12) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic), LIM_MIN_UINT32(8) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageBuffers), LIM_MIN_UINT32(500000) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindSampledImages), LIM_MIN_UINT32(500000) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageImages), LIM_MIN_UINT32(500000) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindInputAttachments), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindSamplers), LIM_MIN_UINT32(limits.maxPerStageDescriptorSamplers) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindUniformBuffers), LIM_MIN_UINT32(limits.maxPerStageDescriptorUniformBuffers) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindStorageBuffers), LIM_MIN_UINT32(limits.maxPerStageDescriptorStorageBuffers) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindSampledImages), LIM_MIN_UINT32(limits.maxPerStageDescriptorSampledImages) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindStorageImages), LIM_MIN_UINT32(limits.maxPerStageDescriptorStorageImages) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindInputAttachments), LIM_MIN_UINT32(limits.maxPerStageDescriptorInputAttachments) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxPerStageUpdateAfterBindResources), LIM_MIN_UINT32(limits.maxPerStageResources) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindSamplers), LIM_MIN_UINT32(limits.maxDescriptorSetSamplers) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindUniformBuffers), LIM_MIN_UINT32(limits.maxDescriptorSetUniformBuffers) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic), LIM_MIN_UINT32(limits.maxDescriptorSetUniformBuffersDynamic) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageBuffers), LIM_MIN_UINT32(limits.maxDescriptorSetStorageBuffers) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic), LIM_MIN_UINT32(limits.maxDescriptorSetStorageBuffersDynamic) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindSampledImages), LIM_MIN_UINT32(limits.maxDescriptorSetSampledImages) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageImages), LIM_MIN_UINT32(limits.maxDescriptorSetStorageImages) },
+ { PN(checkAlways), PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindInputAttachments), LIM_MIN_UINT32(limits.maxDescriptorSetInputAttachments) },
+ };
+
+ log << TestLog::Message << descriptorIndexingPropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtInlineUniformBlock (Context& context)
+{
+ context.requireDeviceFunctionality("VK_EXT_inline_uniform_block");
+}
+
+tcu::TestStatus validateLimitsExtInlineUniformBlock (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceInlineUniformBlockPropertiesEXT& inlineUniformBlockPropertiesEXT = context.getInlineUniformBlockPropertiesEXT();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(inlineUniformBlockPropertiesEXT.maxInlineUniformBlockSize), LIM_MIN_UINT32(256) },
+ { PN(checkAlways), PN(inlineUniformBlockPropertiesEXT.maxPerStageDescriptorInlineUniformBlocks), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(inlineUniformBlockPropertiesEXT.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(inlineUniformBlockPropertiesEXT.maxDescriptorSetInlineUniformBlocks), LIM_MIN_UINT32(4) },
+ { PN(checkAlways), PN(inlineUniformBlockPropertiesEXT.maxDescriptorSetUpdateAfterBindInlineUniformBlocks), LIM_MIN_UINT32(4) },
+ };
+
+ log << TestLog::Message << inlineUniformBlockPropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtVertexAttributeDivisor (Context& context)
+{
+ context.requireDeviceFunctionality("VK_EXT_vertex_attribute_divisor");
+}
+
+tcu::TestStatus validateLimitsExtVertexAttributeDivisor (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& vertexAttributeDivisorPropertiesEXT = context.getVertexAttributeDivisorPropertiesEXT();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(vertexAttributeDivisorPropertiesEXT.maxVertexAttribDivisor), LIM_MIN_UINT32((1<<16) - 1) },
+ };
+
+ log << TestLog::Message << vertexAttributeDivisorPropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportNvMeshShader (Context& context)
+{
+ const std::string& requiredDeviceExtension = "VK_NV_mesh_shader";
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const InstanceInterface& vki = context.getInstanceInterface();
+ const std::vector<VkExtensionProperties> deviceExtensionProperties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+
+ if (!isExtensionSupported(deviceExtensionProperties, RequiredExtension(requiredDeviceExtension)))
+ TCU_THROW(NotSupportedError, requiredDeviceExtension + " is not supported");
+}
+
+tcu::TestStatus validateLimitsNvMeshShader (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const InstanceInterface& vki = context.getInstanceInterface();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+ VkPhysicalDeviceMeshShaderPropertiesNV meshShaderPropertiesNV = initVulkanStructure();
+ VkPhysicalDeviceProperties2 properties2 = initVulkanStructure(&meshShaderPropertiesNV);
+
+ vki.getPhysicalDeviceProperties2(physicalDevice, &properties2);
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxDrawMeshTasksCount), LIM_MIN_UINT32(deUint32((1ull<<16) - 1)) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxTaskWorkGroupInvocations), LIM_MIN_UINT32(32) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxTaskWorkGroupSize[0]), LIM_MIN_UINT32(32) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxTaskWorkGroupSize[1]), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxTaskWorkGroupSize[2]), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxTaskTotalMemorySize), LIM_MIN_UINT32(16384) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxTaskOutputCount), LIM_MIN_UINT32((1<<16) - 1) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxMeshWorkGroupInvocations), LIM_MIN_UINT32(32) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxMeshWorkGroupSize[0]), LIM_MIN_UINT32(32) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxMeshWorkGroupSize[1]), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxMeshWorkGroupSize[2]), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxMeshTotalMemorySize), LIM_MIN_UINT32(16384) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxMeshOutputVertices), LIM_MIN_UINT32(256) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxMeshOutputPrimitives), LIM_MIN_UINT32(256) },
+ { PN(checkAlways), PN(meshShaderPropertiesNV.maxMeshMultiviewViewCount), LIM_MIN_UINT32(1) },
+ };
+
+ log << TestLog::Message << meshShaderPropertiesNV << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtTransformFeedback (Context& context)
+{
+ context.requireDeviceFunctionality("VK_EXT_transform_feedback");
+}
+
+tcu::TestStatus validateLimitsExtTransformFeedback (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceTransformFeedbackPropertiesEXT& transformFeedbackPropertiesEXT = context.getTransformFeedbackPropertiesEXT();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(transformFeedbackPropertiesEXT.maxTransformFeedbackStreams), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(transformFeedbackPropertiesEXT.maxTransformFeedbackBuffers), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(transformFeedbackPropertiesEXT.maxTransformFeedbackBufferSize), LIM_MIN_DEVSIZE(1ull<<27) },
+ { PN(checkAlways), PN(transformFeedbackPropertiesEXT.maxTransformFeedbackStreamDataSize), LIM_MIN_UINT32(512) },
+ { PN(checkAlways), PN(transformFeedbackPropertiesEXT.maxTransformFeedbackBufferDataSize), LIM_MIN_UINT32(512) },
+ { PN(checkAlways), PN(transformFeedbackPropertiesEXT.maxTransformFeedbackBufferDataStride), LIM_MIN_UINT32(512) },
+ };
+
+ log << TestLog::Message << transformFeedbackPropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtFragmentDensityMap (Context& context)
+{
+ context.requireDeviceFunctionality("VK_EXT_fragment_density_map");
+}
+
+tcu::TestStatus validateLimitsExtFragmentDensityMap (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT& fragmentDensityMapPropertiesEXT = context.getFragmentDensityMapPropertiesEXT();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(fragmentDensityMapPropertiesEXT.minFragmentDensityTexelSize.width), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(fragmentDensityMapPropertiesEXT.minFragmentDensityTexelSize.height), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(fragmentDensityMapPropertiesEXT.maxFragmentDensityTexelSize.width), LIM_MIN_UINT32(1) },
+ { PN(checkAlways), PN(fragmentDensityMapPropertiesEXT.maxFragmentDensityTexelSize.height), LIM_MIN_UINT32(1) },
+ };
+
+ log << TestLog::Message << fragmentDensityMapPropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportNvRayTracing (Context& context)
+{
+ const std::string& requiredDeviceExtension = "VK_NV_ray_tracing";
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const InstanceInterface& vki = context.getInstanceInterface();
+ const std::vector<VkExtensionProperties> deviceExtensionProperties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+
+ if (!isExtensionSupported(deviceExtensionProperties, RequiredExtension(requiredDeviceExtension)))
+ TCU_THROW(NotSupportedError, requiredDeviceExtension + " is not supported");
+}
+
+tcu::TestStatus validateLimitsNvRayTracing (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const InstanceInterface& vki = context.getInstanceInterface();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+ VkPhysicalDeviceRayTracingPropertiesNV rayTracingPropertiesNV = initVulkanStructure();
+ VkPhysicalDeviceProperties2 properties2 = initVulkanStructure(&rayTracingPropertiesNV);
+
+ vki.getPhysicalDeviceProperties2(physicalDevice, &properties2);
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(rayTracingPropertiesNV.shaderGroupHandleSize), LIM_MIN_UINT32(16) },
+ { PN(checkAlways), PN(rayTracingPropertiesNV.maxRecursionDepth), LIM_MIN_UINT32(31) },
+ { PN(checkAlways), PN(rayTracingPropertiesNV.shaderGroupBaseAlignment), LIM_MIN_UINT32(64) },
+ { PN(checkAlways), PN(rayTracingPropertiesNV.maxGeometryCount), LIM_MIN_UINT32((1<<24) - 1) },
+ { PN(checkAlways), PN(rayTracingPropertiesNV.maxInstanceCount), LIM_MIN_UINT32((1<<24) - 1) },
+ { PN(checkAlways), PN(rayTracingPropertiesNV.maxTriangleCount), LIM_MIN_UINT32((1<<29) - 1) },
+ { PN(checkAlways), PN(rayTracingPropertiesNV.maxDescriptorSetAccelerationStructures), LIM_MIN_UINT32(16) },
+ };
+
+ log << TestLog::Message << rayTracingPropertiesNV << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportKhrTimelineSemaphore (Context& context)
+{
+ context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+}
+
+tcu::TestStatus validateLimitsKhrTimelineSemaphore (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceTimelineSemaphorePropertiesKHR& timelineSemaphorePropertiesKHR = context.getTimelineSemaphoreProperties();
+ bool limitsOk = true;
+ TestLog& log = context.getTestContext().getLog();
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(timelineSemaphorePropertiesKHR.maxTimelineSemaphoreValueDifference), LIM_MIN_DEVSIZE((1ull<<31) - 1) },
+ };
+
+ log << TestLog::Message << timelineSemaphorePropertiesKHR << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtLineRasterization (Context& context)
+{
+ context.requireDeviceFunctionality("VK_EXT_line_rasterization");
+}
+
+tcu::TestStatus validateLimitsExtLineRasterization (Context& context)
+{
+ const VkBool32 checkAlways = VK_TRUE;
+ const VkPhysicalDeviceLineRasterizationPropertiesEXT& lineRasterizationPropertiesEXT = context.getLineRasterizationPropertiesEXT();
+ TestLog& log = context.getTestContext().getLog();
+ bool limitsOk = true;
+
+ FeatureLimitTableItem featureLimitTable[] =
+ {
+ { PN(checkAlways), PN(lineRasterizationPropertiesEXT.lineSubPixelPrecisionBits), LIM_MIN_UINT32(4) },
+ };
+
+ log << TestLog::Message << lineRasterizationPropertiesEXT << TestLog::EndMessage;
+
+ for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+ limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+ if (limitsOk)
+ return tcu::TestStatus::pass("pass");
+ else
+ return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportFeatureBitInfluence (Context& context)
+{
+ if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+ TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+}
+
+void createDevice (Context& context, void* pNext, const char* const* ppEnabledExtensionNames, deUint32 enabledExtensionCount)
+{
+ const PlatformInterface& platformInterface = context.getPlatformInterface();
+ const Unique<VkInstance> instance (createDefaultInstance(platformInterface, context.getUsedApiVersion()));
+ const InstanceDriver instanceDriver (platformInterface, instance.get());
+ const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance.get(), context.getTestContext().getCommandLine());
+ const deUint32 queueFamilyIndex = 0;
+ const deUint32 queueCount = 1;
+ const deUint32 queueIndex = 0;
+ const float queuePriority = 1.0f;
+ const vector<VkQueueFamilyProperties> queueFamilyProperties = getPhysicalDeviceQueueFamilyProperties(instanceDriver, physicalDevice);
+ const VkDeviceQueueCreateInfo deviceQueueCreateInfo =
+ {
+ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ (VkDeviceQueueCreateFlags)0u, // VkDeviceQueueCreateFlags flags;
+ queueFamilyIndex, // deUint32 queueFamilyIndex;
+ queueCount, // deUint32 queueCount;
+ &queuePriority, // const float* pQueuePriorities;
+ };
+ const VkDeviceCreateInfo deviceCreateInfo =
+ {
+ VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, // VkStructureType sType;
+ pNext, // const void* pNext;
+ (VkDeviceCreateFlags)0u, // VkDeviceCreateFlags flags;
+ 1, // deUint32 queueCreateInfoCount;
+ &deviceQueueCreateInfo, // const VkDeviceQueueCreateInfo* pQueueCreateInfos;
+ 0, // deUint32 enabledLayerCount;
+ DE_NULL, // const char* const* ppEnabledLayerNames;
+ enabledExtensionCount, // deUint32 enabledExtensionCount;
+ ppEnabledExtensionNames, // const char* const* ppEnabledExtensionNames;
+ DE_NULL, // const VkPhysicalDeviceFeatures* pEnabledFeatures;
+ };
+ const Unique<VkDevice> device (createDevice(platformInterface, *instance, instanceDriver, physicalDevice, &deviceCreateInfo));
+ const DeviceDriver deviceDriver (platformInterface, instance.get(), device.get());
+ const VkQueue queue = getDeviceQueue(deviceDriver, *device, queueFamilyIndex, queueIndex);
+
+ VK_CHECK(deviceDriver.queueWaitIdle(queue));
+}
+
+void cleanVulkanStruct (void* structPtr, size_t structSize)
+{
+ struct StructureBase
+ {
+ VkStructureType sType;
+ void* pNext;
+ };
+
+ VkStructureType sType = ((StructureBase*)structPtr)->sType;
+
+ deMemset(structPtr, 0, structSize);
+
+ ((StructureBase*)structPtr)->sType = sType;
+}
+
+tcu::TestStatus featureBitInfluenceOnDeviceCreate (Context& context)
+{
+#define FEATURE_TABLE_ITEM(CORE, EXT, FIELD, STR) { &(CORE), sizeof(CORE), &(CORE.FIELD), #CORE "." #FIELD, &(EXT), sizeof(EXT), &(EXT.FIELD), #EXT "." #FIELD, STR }
+#define DEPENDENCY_DUAL_ITEM(CORE, EXT, FIELD, PARENT) { &(CORE.FIELD), &(CORE.PARENT) }, { &(EXT.FIELD), &(EXT.PARENT) }
+#define DEPENDENCY_SINGLE_ITEM(CORE, FIELD, PARENT) { &(CORE.FIELD), &(CORE.PARENT) }
+
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const InstanceInterface& vki = context.getInstanceInterface();
+ TestLog& log = context.getTestContext().getLog();
+ const std::vector<VkExtensionProperties> deviceExtensionProperties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+
+ VkPhysicalDeviceFeatures2 features2 = initVulkanStructure();
+ VkPhysicalDeviceVulkan11Features vulkan11Features = initVulkanStructure();
+ VkPhysicalDeviceVulkan12Features vulkan12Features = initVulkanStructure();
+ VkPhysicalDevice16BitStorageFeaturesKHR sixteenBitStorageFeatures = initVulkanStructure();
+ VkPhysicalDeviceMultiviewFeatures multiviewFeatures = initVulkanStructure();
+ VkPhysicalDeviceVariablePointersFeatures variablePointersFeatures = initVulkanStructure();
+ VkPhysicalDeviceProtectedMemoryFeatures protectedMemoryFeatures = initVulkanStructure();
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures samplerYcbcrConversionFeatures = initVulkanStructure();
+ VkPhysicalDeviceShaderDrawParametersFeatures shaderDrawParametersFeatures = initVulkanStructure();
+ VkPhysicalDevice8BitStorageFeatures eightBitStorageFeatures = initVulkanStructure();
+ VkPhysicalDeviceShaderAtomicInt64Features shaderAtomicInt64Features = initVulkanStructure();
+ VkPhysicalDeviceShaderFloat16Int8Features shaderFloat16Int8Features = initVulkanStructure();
+ VkPhysicalDeviceDescriptorIndexingFeatures descriptorIndexingFeatures = initVulkanStructure();
+ VkPhysicalDeviceScalarBlockLayoutFeatures scalarBlockLayoutFeatures = initVulkanStructure();
+ VkPhysicalDeviceImagelessFramebufferFeatures imagelessFramebufferFeatures = initVulkanStructure();
+ VkPhysicalDeviceUniformBufferStandardLayoutFeatures uniformBufferStandardLayoutFeatures = initVulkanStructure();
+ VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures shaderSubgroupExtendedTypesFeatures = initVulkanStructure();
+ VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures separateDepthStencilLayoutsFeatures = initVulkanStructure();
+ VkPhysicalDeviceHostQueryResetFeatures hostQueryResetFeatures = initVulkanStructure();
+ VkPhysicalDeviceTimelineSemaphoreFeatures timelineSemaphoreFeatures = initVulkanStructure();
+ VkPhysicalDeviceBufferDeviceAddressFeatures bufferDeviceAddressFeatures = initVulkanStructure();
+ VkPhysicalDeviceVulkanMemoryModelFeatures vulkanMemoryModelFeatures = initVulkanStructure();
+
+ struct DummyExtensionFeatures
+ {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 descriptorIndexing;
+ VkBool32 samplerFilterMinmax;
+ } dummyExtensionFeatures;
+
+ struct FeatureTable
+ {
+ void* coreStructPtr;
+ size_t coreStructSize;
+ VkBool32* coreFieldPtr;
+ const char* coreFieldName;
+ void* extStructPtr;
+ size_t extStructSize;
+ VkBool32* extFieldPtr;
+ const char* extFieldName;
+ const char* extString;
+ }
+ featureTable[] =
+ {
+ FEATURE_TABLE_ITEM(vulkan11Features, sixteenBitStorageFeatures, storageBuffer16BitAccess, "VK_KHR_16bit_storage"),
+ FEATURE_TABLE_ITEM(vulkan11Features, sixteenBitStorageFeatures, uniformAndStorageBuffer16BitAccess, "VK_KHR_16bit_storage"),
+ FEATURE_TABLE_ITEM(vulkan11Features, sixteenBitStorageFeatures, storagePushConstant16, "VK_KHR_16bit_storage"),
+ FEATURE_TABLE_ITEM(vulkan11Features, sixteenBitStorageFeatures, storageInputOutput16, "VK_KHR_16bit_storage"),
+ FEATURE_TABLE_ITEM(vulkan11Features, multiviewFeatures, multiview, "VK_KHR_multiview"),
+ FEATURE_TABLE_ITEM(vulkan11Features, multiviewFeatures, multiviewGeometryShader, "VK_KHR_multiview"),
+ FEATURE_TABLE_ITEM(vulkan11Features, multiviewFeatures, multiviewTessellationShader, "VK_KHR_multiview"),
+ FEATURE_TABLE_ITEM(vulkan11Features, variablePointersFeatures, variablePointersStorageBuffer, "VK_KHR_variable_pointers"),
+ FEATURE_TABLE_ITEM(vulkan11Features, variablePointersFeatures, variablePointers, "VK_KHR_variable_pointers"),
+ FEATURE_TABLE_ITEM(vulkan11Features, protectedMemoryFeatures, protectedMemory, DE_NULL),
+ FEATURE_TABLE_ITEM(vulkan11Features, samplerYcbcrConversionFeatures, samplerYcbcrConversion, "VK_KHR_sampler_ycbcr_conversion"),
+ FEATURE_TABLE_ITEM(vulkan11Features, shaderDrawParametersFeatures, shaderDrawParameters, DE_NULL),
+ FEATURE_TABLE_ITEM(vulkan12Features, eightBitStorageFeatures, storageBuffer8BitAccess, "VK_KHR_8bit_storage"),
+ FEATURE_TABLE_ITEM(vulkan12Features, eightBitStorageFeatures, uniformAndStorageBuffer8BitAccess, "VK_KHR_8bit_storage"),
+ FEATURE_TABLE_ITEM(vulkan12Features, eightBitStorageFeatures, storagePushConstant8, "VK_KHR_8bit_storage"),
+ FEATURE_TABLE_ITEM(vulkan12Features, shaderAtomicInt64Features, shaderBufferInt64Atomics, "VK_KHR_shader_atomic_int64"),
+ FEATURE_TABLE_ITEM(vulkan12Features, shaderAtomicInt64Features, shaderSharedInt64Atomics, "VK_KHR_shader_atomic_int64"),
+ FEATURE_TABLE_ITEM(vulkan12Features, shaderFloat16Int8Features, shaderFloat16, "VK_KHR_shader_float16_int8"),
+ FEATURE_TABLE_ITEM(vulkan12Features, shaderFloat16Int8Features, shaderInt8, "VK_KHR_shader_float16_int8"),
+ FEATURE_TABLE_ITEM(vulkan12Features, dummyExtensionFeatures, descriptorIndexing, DE_NULL),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, shaderInputAttachmentArrayDynamicIndexing, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, shaderUniformTexelBufferArrayDynamicIndexing, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, shaderStorageTexelBufferArrayDynamicIndexing, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, shaderUniformBufferArrayNonUniformIndexing, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, shaderSampledImageArrayNonUniformIndexing, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, shaderStorageBufferArrayNonUniformIndexing, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, shaderStorageImageArrayNonUniformIndexing, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, shaderInputAttachmentArrayNonUniformIndexing, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, shaderUniformTexelBufferArrayNonUniformIndexing, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, shaderStorageTexelBufferArrayNonUniformIndexing, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, descriptorBindingUniformBufferUpdateAfterBind, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, descriptorBindingSampledImageUpdateAfterBind, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, descriptorBindingStorageImageUpdateAfterBind, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, descriptorBindingStorageBufferUpdateAfterBind, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, descriptorBindingUniformTexelBufferUpdateAfterBind, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, descriptorBindingStorageTexelBufferUpdateAfterBind, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, descriptorBindingUpdateUnusedWhilePending, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, descriptorBindingPartiallyBound, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, descriptorBindingVariableDescriptorCount, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, descriptorIndexingFeatures, runtimeDescriptorArray, "VK_EXT_descriptor_indexing"),
+ FEATURE_TABLE_ITEM(vulkan12Features, dummyExtensionFeatures, samplerFilterMinmax, "VK_EXT_sampler_filter_minmax"),
+ FEATURE_TABLE_ITEM(vulkan12Features, scalarBlockLayoutFeatures, scalarBlockLayout, "VK_EXT_scalar_block_layout"),
+ FEATURE_TABLE_ITEM(vulkan12Features, imagelessFramebufferFeatures, imagelessFramebuffer, "VK_KHR_imageless_framebuffer"),
+ FEATURE_TABLE_ITEM(vulkan12Features, uniformBufferStandardLayoutFeatures, uniformBufferStandardLayout, "VK_KHR_uniform_buffer_standard_layout"),
+ FEATURE_TABLE_ITEM(vulkan12Features, shaderSubgroupExtendedTypesFeatures, shaderSubgroupExtendedTypes, "VK_KHR_shader_subgroup_extended_types"),
+ FEATURE_TABLE_ITEM(vulkan12Features, separateDepthStencilLayoutsFeatures, separateDepthStencilLayouts, "VK_KHR_separate_depth_stencil_layouts"),
+ FEATURE_TABLE_ITEM(vulkan12Features, hostQueryResetFeatures, hostQueryReset, "VK_EXT_host_query_reset"),
+ FEATURE_TABLE_ITEM(vulkan12Features, timelineSemaphoreFeatures, timelineSemaphore, "VK_KHR_timeline_semaphore"),
+ FEATURE_TABLE_ITEM(vulkan12Features, bufferDeviceAddressFeatures, bufferDeviceAddress, "VK_EXT_buffer_device_address"),
+ FEATURE_TABLE_ITEM(vulkan12Features, bufferDeviceAddressFeatures, bufferDeviceAddressCaptureReplay, "VK_EXT_buffer_device_address"),
+ FEATURE_TABLE_ITEM(vulkan12Features, bufferDeviceAddressFeatures, bufferDeviceAddressMultiDevice, "VK_EXT_buffer_device_address"),
+ FEATURE_TABLE_ITEM(vulkan12Features, vulkanMemoryModelFeatures, vulkanMemoryModel, "VK_KHR_vulkan_memory_model"),
+ FEATURE_TABLE_ITEM(vulkan12Features, vulkanMemoryModelFeatures, vulkanMemoryModelDeviceScope, "VK_KHR_vulkan_memory_model"),
+ FEATURE_TABLE_ITEM(vulkan12Features, vulkanMemoryModelFeatures, vulkanMemoryModelAvailabilityVisibilityChains, "VK_KHR_vulkan_memory_model"),
+ };
+ struct FeatureDependencyTable
+ {
+ VkBool32* featurePtr;
+ VkBool32* dependOnPtr;
+ }
+ featureDependencyTable[] =
+ {
+ DEPENDENCY_DUAL_ITEM (vulkan11Features, multiviewFeatures, multiviewGeometryShader, multiview),
+ DEPENDENCY_DUAL_ITEM (vulkan11Features, multiviewFeatures, multiviewTessellationShader, multiview),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, shaderInputAttachmentArrayDynamicIndexing, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, shaderUniformTexelBufferArrayDynamicIndexing, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, shaderStorageTexelBufferArrayDynamicIndexing, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, shaderUniformBufferArrayNonUniformIndexing, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, shaderSampledImageArrayNonUniformIndexing, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, shaderStorageBufferArrayNonUniformIndexing, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, shaderStorageImageArrayNonUniformIndexing, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, shaderInputAttachmentArrayNonUniformIndexing, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, shaderUniformTexelBufferArrayNonUniformIndexing, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, shaderStorageTexelBufferArrayNonUniformIndexing, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, descriptorBindingUniformBufferUpdateAfterBind, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, descriptorBindingSampledImageUpdateAfterBind, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, descriptorBindingStorageImageUpdateAfterBind, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, descriptorBindingStorageBufferUpdateAfterBind, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, descriptorBindingUniformTexelBufferUpdateAfterBind, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, descriptorBindingStorageTexelBufferUpdateAfterBind, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, descriptorBindingUpdateUnusedWhilePending, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, descriptorBindingPartiallyBound, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, descriptorBindingVariableDescriptorCount, descriptorIndexing),
+ DEPENDENCY_SINGLE_ITEM (vulkan12Features, runtimeDescriptorArray, descriptorIndexing),
+ DEPENDENCY_DUAL_ITEM (vulkan12Features, bufferDeviceAddressFeatures, bufferDeviceAddressCaptureReplay, bufferDeviceAddress),
+ DEPENDENCY_DUAL_ITEM (vulkan12Features, bufferDeviceAddressFeatures, bufferDeviceAddressMultiDevice, bufferDeviceAddress),
+ DEPENDENCY_DUAL_ITEM (vulkan12Features, vulkanMemoryModelFeatures, vulkanMemoryModelDeviceScope, vulkanMemoryModel),
+ DEPENDENCY_DUAL_ITEM (vulkan12Features, vulkanMemoryModelFeatures, vulkanMemoryModelAvailabilityVisibilityChains, vulkanMemoryModel),
+ };
+
+ deMemset(&dummyExtensionFeatures, 0, sizeof(dummyExtensionFeatures));
+
+ for (size_t featureTableNdx = 0; featureTableNdx < DE_LENGTH_OF_ARRAY(featureTable); ++featureTableNdx)
+ {
+ FeatureTable& testedFeature = featureTable[featureTableNdx];
+ VkBool32 coreFeatureState= DE_FALSE;
+ VkBool32 extFeatureState = DE_FALSE;
+
+ // Core test
+ {
+ void* structPtr = testedFeature.coreStructPtr;
+ size_t structSize = testedFeature.coreStructSize;
+ VkBool32* featurePtr = testedFeature.coreFieldPtr;
+
+ if (structPtr != &dummyExtensionFeatures)
+ features2.pNext = structPtr;
+
+ vki.getPhysicalDeviceFeatures2(physicalDevice, &features2);
+
+ coreFeatureState = featurePtr[0];
+
+ log << TestLog::Message
+ << "Feature status "
+ << testedFeature.coreFieldName << "=" << coreFeatureState
+ << TestLog::EndMessage;
+
+ if (coreFeatureState)
+ {
+ cleanVulkanStruct(structPtr, structSize);
+
+ featurePtr[0] = DE_TRUE;
+
+ for (size_t featureDependencyTableNdx = 0; featureDependencyTableNdx < DE_LENGTH_OF_ARRAY(featureDependencyTable); ++featureDependencyTableNdx)
+ if (featureDependencyTable[featureDependencyTableNdx].featurePtr == featurePtr)
+ featureDependencyTable[featureDependencyTableNdx].dependOnPtr[0] = DE_TRUE;
+
+ createDevice(context, &features2, DE_NULL, 0u);
+ }
+ }
+
+ // ext test
+ {
+ void* structPtr = testedFeature.extStructPtr;
+ size_t structSize = testedFeature.extStructSize;
+ VkBool32* featurePtr = testedFeature.extFieldPtr;
+ const char* extStringPtr = testedFeature.extString;
+
+ if (structPtr != &dummyExtensionFeatures)
+ features2.pNext = structPtr;
+
+ if (extStringPtr == DE_NULL || isExtensionSupported(deviceExtensionProperties, RequiredExtension(extStringPtr)))
+ {
+ vki.getPhysicalDeviceFeatures2(physicalDevice, &features2);
+
+ extFeatureState = *featurePtr;
+
+ log << TestLog::Message
+ << "Feature status "
+ << testedFeature.extFieldName << "=" << extFeatureState
+ << TestLog::EndMessage;
+
+ if (extFeatureState)
+ {
+ cleanVulkanStruct(structPtr, structSize);
+
+ featurePtr[0] = DE_TRUE;
+
+ for (size_t featureDependencyTableNdx = 0; featureDependencyTableNdx < DE_LENGTH_OF_ARRAY(featureDependencyTable); ++featureDependencyTableNdx)
+ if (featureDependencyTable[featureDependencyTableNdx].featurePtr == featurePtr)
+ featureDependencyTable[featureDependencyTableNdx].dependOnPtr[0] = DE_TRUE;
+
+ createDevice(context, &features2, &extStringPtr, (extStringPtr == DE_NULL) ? 0u : 1u );
+ }
+ }
+ }
+ }
+
+ return tcu::TestStatus::pass("pass");
+}
+
template<typename T>
class CheckIncompleteResult
{
{
const ApiVersion deviceVersion = unpackVersion(props->apiVersion);
- const ApiVersion deqpVersion = unpackVersion(VK_API_VERSION_1_1);
+ const ApiVersion deqpVersion = unpackVersion(VK_API_VERSION_1_2);
if (deviceVersion.majorNum != deqpVersion.majorNum)
{
{
if (de::contains(DE_ARRAY_BEGIN(s_requiredSampledImageFilterMinMaxFormats), DE_ARRAY_END(s_requiredSampledImageFilterMinMaxFormats), format))
{
- VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT physicalDeviceSamplerMinMaxProperties =
+ VkPhysicalDeviceSamplerFilterMinmaxProperties physicalDeviceSamplerMinMaxProperties =
{
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
DE_NULL,
{
for (size_t ndx = 0; ndx < properties.size(); ++ndx)
{
- if (strcmp(properties[ndx].extensionName, extension) == 0)
+ if (strncmp(properties[ndx].extensionName, extension, VK_MAX_EXTENSION_NAME_SIZE) == 0)
return true;
}
return false;
log << TestLog::Message << extFeatures << TestLog::EndMessage;
- vector<VkExtensionProperties> properties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
- const bool khr_8bit_storage = checkExtension(properties,"VK_KHR_8bit_storage");
- const bool ext_conditional_rendering = checkExtension(properties,"VK_EXT_conditional_rendering");
- const bool scalar_block_layout = checkExtension(properties,"VK_EXT_scalar_block_layout");
- const bool khr_performance_counter = checkExtension(properties,"VK_KHR_performance_query");
- bool khr_16bit_storage = true;
- bool khr_multiview = true;
- bool deviceProtectedMemory = true;
- bool sampler_ycbcr_conversion = true;
- bool variable_pointers = true;
- if (getPhysicalDeviceProperties(vki, physicalDevice).apiVersion < VK_API_VERSION_1_1)
- {
- khr_16bit_storage = checkExtension(properties,"VK_KHR_16bit_storage");
- khr_multiview = checkExtension(properties,"VK_KHR_multiview");
- deviceProtectedMemory = false;
- sampler_ycbcr_conversion = checkExtension(properties,"VK_KHR_sampler_ycbcr_conversion");
- variable_pointers = checkExtension(properties,"VK_KHR_variable_pointers");
- }
+ vector<VkExtensionProperties> properties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+ const bool ext_conditional_rendering = checkExtension(properties, "VK_EXT_conditional_rendering");
+ const bool ext_scalar_block_layout = checkExtension(properties, "VK_EXT_scalar_block_layout");
+ const bool khr_performance_counter = checkExtension(properties, "VK_KHR_performance_query");
+ const bool khr_16bit_storage = checkExtension(properties, "VK_KHR_16bit_storage") || context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_multiview = checkExtension(properties, "VK_KHR_multiview") || context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_device_protected_memory = context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_sampler_ycbcr_conversion = checkExtension(properties, "VK_KHR_sampler_ycbcr_conversion") || context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_variable_pointers = checkExtension(properties, "VK_KHR_variable_pointers") || context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_8bit_storage = checkExtension(properties, "VK_KHR_8bit_storage") || context.contextSupports(vk::ApiVersion(1, 2, 0));
+ const bool khr_shader_atomic_int64 = checkExtension(properties, "VK_KHR_shader_atomic_int64") || context.contextSupports(vk::ApiVersion(1, 2, 0));
+ const bool khr_shader_float16_int8 = checkExtension(properties, "VK_KHR_shader_float16_int8") || context.contextSupports(vk::ApiVersion(1, 2, 0));
+ const bool khr_buffer_device_address = checkExtension(properties, "VK_KHR_buffer_device_address") || context.contextSupports(vk::ApiVersion(1, 2, 0));
+ const bool ext_descriptor_indexing = checkExtension(properties, "VK_EXT_descriptor_indexing") || context.contextSupports(vk::ApiVersion(1, 2, 0));
+ const bool ext_buffer_device_address = checkExtension(properties, "VK_EXT_buffer_device_address");
const int count = 2u;
- VkPhysicalDevice8BitStorageFeaturesKHR device8BitStorageFeatures[count];
- VkPhysicalDeviceConditionalRenderingFeaturesEXT deviceConditionalRenderingFeatures[count];
- VkPhysicalDevice16BitStorageFeatures device16BitStorageFeatures[count];
- VkPhysicalDeviceMultiviewFeatures deviceMultiviewFeatures[count];
- VkPhysicalDeviceProtectedMemoryFeatures protectedMemoryFeatures[count];
- VkPhysicalDeviceSamplerYcbcrConversionFeatures samplerYcbcrConversionFeatures[count];
- VkPhysicalDeviceVariablePointersFeatures variablePointerFeatures[count];
- VkPhysicalDeviceScalarBlockLayoutFeaturesEXT scalarBlockLayoutFeatures[count];
- VkPhysicalDeviceTimelineSemaphoreFeaturesKHR timelineSemaphoreFeatures[count];
- VkPhysicalDevicePerformanceQueryFeaturesKHR performanceQueryFeatures[count];
+ VkPhysicalDeviceConditionalRenderingFeaturesEXT deviceConditionalRenderingFeatures[count];
+ VkPhysicalDeviceScalarBlockLayoutFeatures scalarBlockLayoutFeatures[count];
+ VkPhysicalDevicePerformanceQueryFeaturesKHR performanceQueryFeatures[count];
+ VkPhysicalDevice16BitStorageFeatures device16BitStorageFeatures[count];
+ VkPhysicalDeviceMultiviewFeatures deviceMultiviewFeatures[count];
+ VkPhysicalDeviceProtectedMemoryFeatures protectedMemoryFeatures[count];
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures samplerYcbcrConversionFeatures[count];
+ VkPhysicalDeviceVariablePointersFeatures variablePointerFeatures[count];
+ VkPhysicalDevice8BitStorageFeatures device8BitStorageFeatures[count];
+ VkPhysicalDeviceShaderAtomicInt64Features deviceShaderAtomicInt64Features[count];
+ VkPhysicalDeviceShaderFloat16Int8Features deviceShaderFloat16Int8Features[count];
+ VkPhysicalDeviceBufferDeviceAddressFeaturesEXT deviceBufferDeviceAddressFeaturesEXT[count];
+ VkPhysicalDeviceBufferDeviceAddressFeatures deviceBufferDeviceAddressFeatures[count];
+ VkPhysicalDeviceDescriptorIndexingFeatures deviceDescriptorIndexingFeatures[count];
+ VkPhysicalDeviceTimelineSemaphoreFeatures timelineSemaphoreFeatures[count];
for (int ndx = 0; ndx < count; ++ndx)
{
- deMemset(&device8BitStorageFeatures[ndx], 0xFF*ndx, sizeof(VkPhysicalDevice8BitStorageFeaturesKHR));
- deMemset(&deviceConditionalRenderingFeatures[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceConditionalRenderingFeaturesEXT));
- deMemset(&device16BitStorageFeatures[ndx], 0xFF*ndx, sizeof(VkPhysicalDevice16BitStorageFeatures));
- deMemset(&deviceMultiviewFeatures[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceMultiviewFeatures));
- deMemset(&protectedMemoryFeatures[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceProtectedMemoryFeatures));
- deMemset(&samplerYcbcrConversionFeatures[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
- deMemset(&variablePointerFeatures[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceVariablePointersFeatures));
- deMemset(&scalarBlockLayoutFeatures[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceScalarBlockLayoutFeaturesEXT));
- deMemset(&performanceQueryFeatures[ndx], 0xFF*ndx, sizeof(VkPhysicalDevicePerformanceQueryFeaturesKHR));
+ deMemset(&deviceConditionalRenderingFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceConditionalRenderingFeaturesEXT));
+ deMemset(&scalarBlockLayoutFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceScalarBlockLayoutFeatures));
+ deMemset(&performanceQueryFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDevicePerformanceQueryFeaturesKHR));
+ deMemset(&device16BitStorageFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDevice16BitStorageFeatures));
+ deMemset(&deviceMultiviewFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceMultiviewFeatures));
+ deMemset(&protectedMemoryFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceProtectedMemoryFeatures));
+ deMemset(&samplerYcbcrConversionFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
+ deMemset(&variablePointerFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceVariablePointersFeatures));
+ deMemset(&device8BitStorageFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDevice8BitStorageFeaturesKHR));
+ deMemset(&deviceShaderAtomicInt64Features[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceShaderAtomicInt64Features));
+ deMemset(&deviceShaderFloat16Int8Features[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceShaderFloat16Int8Features));
+ deMemset(&deviceBufferDeviceAddressFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeatures));
+ deMemset(&deviceBufferDeviceAddressFeaturesEXT[ndx],0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT));
+ deMemset(&deviceDescriptorIndexingFeatures[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceDescriptorIndexingFeatures));
+
+ deviceConditionalRenderingFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
+ deviceConditionalRenderingFeatures[ndx].pNext = &scalarBlockLayoutFeatures[ndx];
- device8BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR;
- device8BitStorageFeatures[ndx].pNext = &deviceConditionalRenderingFeatures[ndx];
+ scalarBlockLayoutFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT;
+ scalarBlockLayoutFeatures[ndx].pNext = &performanceQueryFeatures[ndx];
- deviceConditionalRenderingFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
- deviceConditionalRenderingFeatures[ndx].pNext = &device16BitStorageFeatures[ndx];
+ performanceQueryFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
+ performanceQueryFeatures[ndx].pNext = &device16BitStorageFeatures[ndx];
- device16BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
- device16BitStorageFeatures[ndx].pNext = &deviceMultiviewFeatures[ndx];
+ device16BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
+ device16BitStorageFeatures[ndx].pNext = &deviceMultiviewFeatures[ndx];
- deviceMultiviewFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
- deviceMultiviewFeatures[ndx].pNext = &protectedMemoryFeatures[ndx];
+ deviceMultiviewFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
+ deviceMultiviewFeatures[ndx].pNext = &protectedMemoryFeatures[ndx];
- protectedMemoryFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
- protectedMemoryFeatures[ndx].pNext = &samplerYcbcrConversionFeatures[ndx];
+ protectedMemoryFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
+ protectedMemoryFeatures[ndx].pNext = &samplerYcbcrConversionFeatures[ndx];
- samplerYcbcrConversionFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
- samplerYcbcrConversionFeatures[ndx].pNext = &variablePointerFeatures[ndx];
+ samplerYcbcrConversionFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
+ samplerYcbcrConversionFeatures[ndx].pNext = &variablePointerFeatures[ndx];
- variablePointerFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES;
- variablePointerFeatures[ndx].pNext = &scalarBlockLayoutFeatures[ndx];
+ variablePointerFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES;
+ variablePointerFeatures[ndx].pNext = &device8BitStorageFeatures[ndx];
- scalarBlockLayoutFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT;
- scalarBlockLayoutFeatures[ndx].pNext = &timelineSemaphoreFeatures[ndx];
+ device8BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR;
+ device8BitStorageFeatures[ndx].pNext = &deviceShaderAtomicInt64Features[ndx];
- timelineSemaphoreFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR;
- timelineSemaphoreFeatures[ndx].pNext = &performanceQueryFeatures[ndx];
+ deviceShaderAtomicInt64Features[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
+ deviceShaderAtomicInt64Features[ndx].pNext = &deviceShaderFloat16Int8Features[ndx];
- performanceQueryFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
- performanceQueryFeatures[ndx].pNext = DE_NULL;
+ deviceShaderFloat16Int8Features[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
+ deviceShaderFloat16Int8Features[ndx].pNext = &deviceBufferDeviceAddressFeatures[ndx];
+
+ deviceBufferDeviceAddressFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
+ deviceBufferDeviceAddressFeatures[ndx].pNext = &deviceBufferDeviceAddressFeaturesEXT[ndx];
+
+ deviceBufferDeviceAddressFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
+ deviceBufferDeviceAddressFeaturesEXT[ndx].pNext = &deviceDescriptorIndexingFeatures[ndx];
+
+ deviceDescriptorIndexingFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
+ deviceDescriptorIndexingFeatures[ndx].pNext = &timelineSemaphoreFeatures[ndx];
+
+ timelineSemaphoreFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
+ timelineSemaphoreFeatures[ndx].pNext = DE_NULL;
deMemset(&extFeatures.features, 0xcd, sizeof(extFeatures.features));
extFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
- extFeatures.pNext = &device8BitStorageFeatures[ndx];
+ extFeatures.pNext = &deviceConditionalRenderingFeatures[ndx];
vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
}
- if ( khr_8bit_storage &&
- (device8BitStorageFeatures[0].storageBuffer8BitAccess != device8BitStorageFeatures[1].storageBuffer8BitAccess ||
- device8BitStorageFeatures[0].uniformAndStorageBuffer8BitAccess != device8BitStorageFeatures[1].uniformAndStorageBuffer8BitAccess ||
- device8BitStorageFeatures[0].storagePushConstant8 != device8BitStorageFeatures[1].storagePushConstant8 )
- )
- {
- TCU_FAIL("Mismatch between VkPhysicalDevice8BitStorageFeatures");
- }
+ if (ext_conditional_rendering)
+ log << TestLog::Message << deviceConditionalRenderingFeatures[0] << TestLog::EndMessage;
+ if (ext_scalar_block_layout)
+ log << TestLog::Message << scalarBlockLayoutFeatures[0] << TestLog::EndMessage;
+ if (khr_performance_counter)
+ log << TestLog::Message << performanceQueryFeatures[0] << TestLog::EndMessage;
+ if (khr_16bit_storage)
+ log << TestLog::Message << device16BitStorageFeatures[0] << TestLog::EndMessage;
+ if (khr_multiview)
+ log << TestLog::Message << deviceMultiviewFeatures[0] << TestLog::EndMessage;
+ if (khr_device_protected_memory)
+ log << TestLog::Message << protectedMemoryFeatures[0] << TestLog::EndMessage;
+ if (khr_sampler_ycbcr_conversion)
+ log << TestLog::Message << samplerYcbcrConversionFeatures[0] << TestLog::EndMessage;
+ if (khr_variable_pointers)
+ log << TestLog::Message << variablePointerFeatures[0] << TestLog::EndMessage;
+ if (khr_8bit_storage)
+ log << TestLog::Message << device8BitStorageFeatures[0] << TestLog::EndMessage;
+ if (khr_shader_atomic_int64)
+ log << TestLog::Message << deviceShaderAtomicInt64Features[0] << TestLog::EndMessage;
+ if (khr_shader_float16_int8)
+ log << TestLog::Message << deviceShaderFloat16Int8Features[0] << TestLog::EndMessage;
+ if (khr_buffer_device_address)
+ log << TestLog::Message << deviceBufferDeviceAddressFeatures[0] << TestLog::EndMessage;
+ if (ext_buffer_device_address)
+ log << TestLog::Message << deviceBufferDeviceAddressFeaturesEXT[0] << TestLog::EndMessage;
+ if (ext_descriptor_indexing)
+ log << TestLog::Message << deviceDescriptorIndexingFeatures[0] << TestLog::EndMessage;
if ( ext_conditional_rendering &&
- (deviceConditionalRenderingFeatures[0].conditionalRendering != deviceConditionalRenderingFeatures[1].conditionalRendering ||
- deviceConditionalRenderingFeatures[0].inheritedConditionalRendering != deviceConditionalRenderingFeatures[1].inheritedConditionalRendering )
- )
+ ( deviceConditionalRenderingFeatures[0].conditionalRendering != deviceConditionalRenderingFeatures[1].conditionalRendering ||
+ deviceConditionalRenderingFeatures[0].inheritedConditionalRendering != deviceConditionalRenderingFeatures[1].inheritedConditionalRendering ))
{
TCU_FAIL("Mismatch between VkPhysicalDeviceConditionalRenderingFeaturesEXT");
}
TCU_FAIL("Mismatch between VkPhysicalDevicePerformancQueryFeaturesKHR");
}
+ if ( ext_scalar_block_layout &&
+ ( scalarBlockLayoutFeatures[0].scalarBlockLayout != scalarBlockLayoutFeatures[1].scalarBlockLayout ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceScalarBlockLayoutFeatures");
+ }
+
+ if ( khr_performance_counter &&
+ ( performanceQueryFeatures[0].performanceCounterQueryPools != performanceQueryFeatures[1].performanceCounterQueryPools ||
+ performanceQueryFeatures[0].performanceCounterMultipleQueryPools != performanceQueryFeatures[1].performanceCounterMultipleQueryPools ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDevicePerformancQueryFeaturesKHR");
+ }
+
if ( khr_16bit_storage &&
- (device16BitStorageFeatures[0].storageBuffer16BitAccess != device16BitStorageFeatures[1].storageBuffer16BitAccess ||
- device16BitStorageFeatures[0].uniformAndStorageBuffer16BitAccess != device16BitStorageFeatures[1].uniformAndStorageBuffer16BitAccess ||
- device16BitStorageFeatures[0].storagePushConstant16 != device16BitStorageFeatures[1].storagePushConstant16 ||
- device16BitStorageFeatures[0].storageInputOutput16 != device16BitStorageFeatures[1].storageInputOutput16)
- )
+ ( device16BitStorageFeatures[0].storageBuffer16BitAccess != device16BitStorageFeatures[1].storageBuffer16BitAccess ||
+ device16BitStorageFeatures[0].uniformAndStorageBuffer16BitAccess != device16BitStorageFeatures[1].uniformAndStorageBuffer16BitAccess ||
+ device16BitStorageFeatures[0].storagePushConstant16 != device16BitStorageFeatures[1].storagePushConstant16 ||
+ device16BitStorageFeatures[0].storageInputOutput16 != device16BitStorageFeatures[1].storageInputOutput16 ))
{
TCU_FAIL("Mismatch between VkPhysicalDevice16BitStorageFeatures");
}
- if (khr_multiview &&
- (deviceMultiviewFeatures[0].multiview != deviceMultiviewFeatures[1].multiview ||
- deviceMultiviewFeatures[0].multiviewGeometryShader != deviceMultiviewFeatures[1].multiviewGeometryShader ||
- deviceMultiviewFeatures[0].multiviewTessellationShader != deviceMultiviewFeatures[1].multiviewTessellationShader)
- )
+ if ( khr_multiview &&
+ ( deviceMultiviewFeatures[0].multiview != deviceMultiviewFeatures[1].multiview ||
+ deviceMultiviewFeatures[0].multiviewGeometryShader != deviceMultiviewFeatures[1].multiviewGeometryShader ||
+ deviceMultiviewFeatures[0].multiviewTessellationShader != deviceMultiviewFeatures[1].multiviewTessellationShader ))
{
TCU_FAIL("Mismatch between VkPhysicalDeviceMultiviewFeatures");
}
- if (deviceProtectedMemory && protectedMemoryFeatures[0].protectedMemory != protectedMemoryFeatures[1].protectedMemory)
+ if ( khr_device_protected_memory && protectedMemoryFeatures[0].protectedMemory != protectedMemoryFeatures[1].protectedMemory )
{
TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryFeatures");
}
- if (sampler_ycbcr_conversion && samplerYcbcrConversionFeatures[0].samplerYcbcrConversion != samplerYcbcrConversionFeatures[1].samplerYcbcrConversion)
+ if ( khr_sampler_ycbcr_conversion && samplerYcbcrConversionFeatures[0].samplerYcbcrConversion != samplerYcbcrConversionFeatures[1].samplerYcbcrConversion )
{
TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerYcbcrConversionFeatures");
}
- if (variable_pointers &&
- (variablePointerFeatures[0].variablePointersStorageBuffer != variablePointerFeatures[1].variablePointersStorageBuffer ||
- variablePointerFeatures[0].variablePointers != variablePointerFeatures[1].variablePointers)
- )
+ if ( khr_variable_pointers &&
+ ( variablePointerFeatures[0].variablePointersStorageBuffer != variablePointerFeatures[1].variablePointersStorageBuffer ||
+ variablePointerFeatures[0].variablePointers != variablePointerFeatures[1].variablePointers))
{
TCU_FAIL("Mismatch between VkPhysicalDeviceVariablePointersFeatures");
}
- if (scalar_block_layout &&
- (scalarBlockLayoutFeatures[0].scalarBlockLayout != scalarBlockLayoutFeatures[1].scalarBlockLayout))
+
+ if ( khr_8bit_storage &&
+ ( device8BitStorageFeatures[0].storageBuffer8BitAccess != device8BitStorageFeatures[1].storageBuffer8BitAccess ||
+ device8BitStorageFeatures[0].uniformAndStorageBuffer8BitAccess != device8BitStorageFeatures[1].uniformAndStorageBuffer8BitAccess ||
+ device8BitStorageFeatures[0].storagePushConstant8 != device8BitStorageFeatures[1].storagePushConstant8 ))
{
- TCU_FAIL("Mismatch between VkPhysicalDeviceScalarBlockLayoutFeaturesEXT");
+ TCU_FAIL("Mismatch between VkPhysicalDevice8BitStorageFeatures");
}
- if (khr_8bit_storage)
- log << TestLog::Message << device8BitStorageFeatures[0] << TestLog::EndMessage;
- if (ext_conditional_rendering)
- log << TestLog::Message << deviceConditionalRenderingFeatures[0] << TestLog::EndMessage;
- if (khr_16bit_storage)
- log << TestLog::Message << device16BitStorageFeatures[0] << TestLog::EndMessage;
- if (khr_multiview)
- log << TestLog::Message << deviceMultiviewFeatures[0] << TestLog::EndMessage;
- if (deviceProtectedMemory)
- log << TestLog::Message << protectedMemoryFeatures[0] << TestLog::EndMessage;
- if (sampler_ycbcr_conversion)
- log << TestLog::Message << samplerYcbcrConversionFeatures[0] << TestLog::EndMessage;
- if (variable_pointers)
- log << TestLog::Message << variablePointerFeatures[0] << TestLog::EndMessage;
- if (scalar_block_layout)
- log << TestLog::Message << scalarBlockLayoutFeatures[0] << TestLog::EndMessage;
- if (khr_performance_counter)
- log << TestLog::Message << performanceQueryFeatures[0] << TestLog::EndMessage;
+ if ( khr_shader_atomic_int64 &&
+ ( deviceShaderAtomicInt64Features[0].shaderBufferInt64Atomics != deviceShaderAtomicInt64Features[1].shaderBufferInt64Atomics ||
+ deviceShaderAtomicInt64Features[0].shaderSharedInt64Atomics != deviceShaderAtomicInt64Features[1].shaderSharedInt64Atomics ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceShaderAtomicInt64Features");
+ }
+
+ if ( khr_shader_float16_int8 &&
+ ( deviceShaderFloat16Int8Features[0].shaderFloat16 != deviceShaderFloat16Int8Features[1].shaderFloat16 ||
+ deviceShaderFloat16Int8Features[0].shaderInt8 != deviceShaderFloat16Int8Features[1].shaderInt8 ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceShaderFloat16Int8Features");
+ }
+
+ if ( khr_buffer_device_address &&
+ ( deviceBufferDeviceAddressFeatures[0].bufferDeviceAddress != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddress ||
+ deviceBufferDeviceAddressFeatures[0].bufferDeviceAddressCaptureReplay != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddressCaptureReplay ||
+ deviceBufferDeviceAddressFeatures[0].bufferDeviceAddressMultiDevice != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddressMultiDevice ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceBufferDeviceAddressFeatures");
+ }
+
+ if ( ext_buffer_device_address &&
+ ( deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddress != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddress ||
+ deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddressCaptureReplay != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddressCaptureReplay ||
+ deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddressMultiDevice != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddressMultiDevice ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceBufferDeviceAddressFeaturesEXT");
+ }
+
+ if ( ext_descriptor_indexing &&
+ ( deviceDescriptorIndexingFeatures[0].shaderInputAttachmentArrayDynamicIndexing != deviceDescriptorIndexingFeatures[1].shaderInputAttachmentArrayDynamicIndexing ||
+ deviceDescriptorIndexingFeatures[0].shaderUniformTexelBufferArrayDynamicIndexing != deviceDescriptorIndexingFeatures[1].shaderUniformTexelBufferArrayDynamicIndexing ||
+ deviceDescriptorIndexingFeatures[0].shaderStorageTexelBufferArrayDynamicIndexing != deviceDescriptorIndexingFeatures[1].shaderStorageTexelBufferArrayDynamicIndexing ||
+ deviceDescriptorIndexingFeatures[0].shaderUniformBufferArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderUniformBufferArrayNonUniformIndexing ||
+ deviceDescriptorIndexingFeatures[0].shaderSampledImageArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderSampledImageArrayNonUniformIndexing ||
+ deviceDescriptorIndexingFeatures[0].shaderStorageBufferArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderStorageBufferArrayNonUniformIndexing ||
+ deviceDescriptorIndexingFeatures[0].shaderStorageImageArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderStorageImageArrayNonUniformIndexing ||
+ deviceDescriptorIndexingFeatures[0].shaderInputAttachmentArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderInputAttachmentArrayNonUniformIndexing ||
+ deviceDescriptorIndexingFeatures[0].shaderUniformTexelBufferArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderUniformTexelBufferArrayNonUniformIndexing ||
+ deviceDescriptorIndexingFeatures[0].shaderStorageTexelBufferArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderStorageTexelBufferArrayNonUniformIndexing ||
+ deviceDescriptorIndexingFeatures[0].descriptorBindingUniformBufferUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingUniformBufferUpdateAfterBind ||
+ deviceDescriptorIndexingFeatures[0].descriptorBindingSampledImageUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingSampledImageUpdateAfterBind ||
+ deviceDescriptorIndexingFeatures[0].descriptorBindingStorageImageUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingStorageImageUpdateAfterBind ||
+ deviceDescriptorIndexingFeatures[0].descriptorBindingStorageBufferUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingStorageBufferUpdateAfterBind ||
+ deviceDescriptorIndexingFeatures[0].descriptorBindingUniformTexelBufferUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingUniformTexelBufferUpdateAfterBind ||
+ deviceDescriptorIndexingFeatures[0].descriptorBindingStorageTexelBufferUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingStorageTexelBufferUpdateAfterBind ||
+ deviceDescriptorIndexingFeatures[0].descriptorBindingUpdateUnusedWhilePending != deviceDescriptorIndexingFeatures[1].descriptorBindingUpdateUnusedWhilePending ||
+ deviceDescriptorIndexingFeatures[0].descriptorBindingPartiallyBound != deviceDescriptorIndexingFeatures[1].descriptorBindingPartiallyBound ||
+ deviceDescriptorIndexingFeatures[0].descriptorBindingVariableDescriptorCount != deviceDescriptorIndexingFeatures[1].descriptorBindingVariableDescriptorCount ||
+ deviceDescriptorIndexingFeatures[0].runtimeDescriptorArray != deviceDescriptorIndexingFeatures[1].runtimeDescriptorArray ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceDescriptorIndexingFeatures");
+ }
return tcu::TestStatus::pass("Querying device features succeeded");
}
const int count = 2u;
- bool khr_external_memory_capabilities = true;
- bool khr_multiview = true;
- bool khr_maintenance2 = true;
- bool khr_maintenance3 = true;
- bool apiVersionSmallerThen_1_1 = (getPhysicalDeviceProperties(vki, physicalDevice).apiVersion < VK_API_VERSION_1_1);
- if (apiVersionSmallerThen_1_1)
- {
- vector<VkExtensionProperties> properties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
- khr_external_memory_capabilities = checkExtension(properties,"VK_KHR_external_memory_capabilities");
- khr_multiview = checkExtension(properties,"VK_KHR_multiview");
- khr_maintenance2 = checkExtension(properties,"VK_KHR_maintenance2");
- khr_maintenance3 = checkExtension(properties,"VK_KHR_maintenance3");
- }
-
- VkPhysicalDeviceIDProperties IDProperties[count];
- VkPhysicalDeviceMaintenance3Properties maintenance3Properties[count];
- VkPhysicalDeviceMultiviewProperties multiviewProperties[count];
- VkPhysicalDevicePointClippingProperties pointClippingProperties[count];
- VkPhysicalDeviceProtectedMemoryProperties protectedMemoryPropertiesKHR[count];
- VkPhysicalDeviceSubgroupProperties subgroupProperties[count];
+ vector<VkExtensionProperties> properties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+ const bool khr_external_fence_capabilities = checkExtension(properties, "VK_KHR_external_fence_capabilities") || context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_external_memory_capabilities = checkExtension(properties, "VK_KHR_external_memory_capabilities") || context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_external_semaphore_capabilities = checkExtension(properties, "VK_KHR_external_semaphore_capabilities") || context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_multiview = checkExtension(properties, "VK_KHR_multiview") || context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_device_protected_memory = context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_device_subgroup = context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_maintenance2 = checkExtension(properties, "VK_KHR_maintenance2") || context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_maintenance3 = checkExtension(properties, "VK_KHR_maintenance3") || context.contextSupports(vk::ApiVersion(1, 1, 0));
+ const bool khr_depth_stencil_resolve = checkExtension(properties, "VK_KHR_depth_stencil_resolve") || context.contextSupports(vk::ApiVersion(1, 2, 0));
+ const bool khr_driver_properties = checkExtension(properties, "VK_KHR_driver_properties") || context.contextSupports(vk::ApiVersion(1, 2, 0));
+ const bool khr_shader_float_controls = checkExtension(properties, "VK_KHR_shader_float_controls") || context.contextSupports(vk::ApiVersion(1, 2, 0));
+ const bool khr_descriptor_indexing = checkExtension(properties, "VK_EXT_descriptor_indexing") || context.contextSupports(vk::ApiVersion(1, 2, 0));
+ const bool khr_sampler_filter_minmax = checkExtension(properties, "VK_EXT_sampler_filter_minmax") || context.contextSupports(vk::ApiVersion(1, 2, 0));
+
+ VkPhysicalDeviceIDProperties idProperties[count];
+ VkPhysicalDeviceMultiviewProperties multiviewProperties[count];
+ VkPhysicalDeviceProtectedMemoryProperties protectedMemoryPropertiesKHR[count];
+ VkPhysicalDeviceSubgroupProperties subgroupProperties[count];
+ VkPhysicalDevicePointClippingProperties pointClippingProperties[count];
+ VkPhysicalDeviceMaintenance3Properties maintenance3Properties[count];
+ VkPhysicalDeviceDepthStencilResolveProperties depthStencilResolveProperties[count];
+ VkPhysicalDeviceDriverProperties driverProperties[count];
+ VkPhysicalDeviceFloatControlsProperties floatControlsProperties[count];
+ VkPhysicalDeviceDescriptorIndexingProperties descriptorIndexingProperties[count];
+ VkPhysicalDeviceSamplerFilterMinmaxProperties samplerFilterMinmaxProperties[count];
for (int ndx = 0; ndx < count; ++ndx)
{
- deMemset(&IDProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceIDProperties ));
- deMemset(&maintenance3Properties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceMaintenance3Properties ));
- deMemset(&multiviewProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceMultiviewProperties ));
- deMemset(&pointClippingProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDevicePointClippingProperties ));
- deMemset(&protectedMemoryPropertiesKHR[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceProtectedMemoryProperties ));
- deMemset(&subgroupProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceSubgroupProperties ));
+ deMemset(&idProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceIDProperties ));
+ deMemset(&multiviewProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceMultiviewProperties ));
+ deMemset(&protectedMemoryPropertiesKHR[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceProtectedMemoryProperties ));
+ deMemset(&subgroupProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceSubgroupProperties ));
+ deMemset(&pointClippingProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDevicePointClippingProperties ));
+ deMemset(&maintenance3Properties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceMaintenance3Properties ));
+ deMemset(&depthStencilResolveProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceDepthStencilResolveProperties ));
+ deMemset(&driverProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceDriverProperties ));
+ deMemset(&floatControlsProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceFloatControlsProperties ));
+ deMemset(&descriptorIndexingProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceDescriptorIndexingProperties ));
+ deMemset(&samplerFilterMinmaxProperties[ndx], 0xFF*ndx, sizeof(VkPhysicalDeviceSamplerFilterMinmaxProperties ));
- IDProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES;
- IDProperties[ndx].pNext = &maintenance3Properties[ndx];
+ idProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES;
+ idProperties[ndx].pNext = &multiviewProperties[ndx];
- maintenance3Properties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
- maintenance3Properties[ndx].pNext = &multiviewProperties[ndx];
+ multiviewProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
+ multiviewProperties[ndx].pNext = &protectedMemoryPropertiesKHR[ndx];
- multiviewProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
- multiviewProperties[ndx].pNext = &pointClippingProperties[ndx];
+ protectedMemoryPropertiesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;
+ protectedMemoryPropertiesKHR[ndx].pNext = &subgroupProperties[ndx];
- pointClippingProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
- pointClippingProperties[ndx].pNext = &protectedMemoryPropertiesKHR[ndx];
+ subgroupProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
+ subgroupProperties[ndx].pNext = &pointClippingProperties[ndx];
- protectedMemoryPropertiesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;
- protectedMemoryPropertiesKHR[ndx].pNext = &subgroupProperties[ndx];
+ pointClippingProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
+ pointClippingProperties[ndx].pNext = &maintenance3Properties[ndx];
- subgroupProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
- subgroupProperties[ndx].pNext = DE_NULL;
+ maintenance3Properties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
+ maintenance3Properties[ndx].pNext = &depthStencilResolveProperties[ndx];
- extProperties.pNext = &IDProperties[ndx];
+ depthStencilResolveProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
+ depthStencilResolveProperties[ndx].pNext = &driverProperties[ndx];
- vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+ driverProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;
+ driverProperties[ndx].pNext = &floatControlsProperties[ndx];
+
+ floatControlsProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR;
+ floatControlsProperties[ndx].pNext = &descriptorIndexingProperties[ndx];
+
+ descriptorIndexingProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
+ descriptorIndexingProperties[ndx].pNext = &samplerFilterMinmaxProperties[ndx];
+
+ samplerFilterMinmaxProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
+ samplerFilterMinmaxProperties[ndx].pNext = DE_NULL;
- IDProperties[ndx].pNext = DE_NULL;
- maintenance3Properties[ndx].pNext = DE_NULL;
- multiviewProperties[ndx].pNext = DE_NULL;
- pointClippingProperties[ndx].pNext = DE_NULL;
- protectedMemoryPropertiesKHR[ndx].pNext = DE_NULL;
- subgroupProperties[ndx].pNext = DE_NULL;
+ extProperties.pNext = &idProperties[ndx];
+
+ vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
}
- if (khr_external_memory_capabilities)
- {
- if ((deMemCmp(IDProperties[0].deviceUUID, IDProperties[1].deviceUUID, VK_UUID_SIZE) != 0) ||
- (deMemCmp(IDProperties[0].driverUUID, IDProperties[1].driverUUID, VK_UUID_SIZE) != 0) ||
- (IDProperties[0].deviceLUIDValid != IDProperties[1].deviceLUIDValid))
+ if ( khr_external_fence_capabilities || khr_external_memory_capabilities || khr_external_semaphore_capabilities )
+ log << TestLog::Message << idProperties[0] << TestLog::EndMessage;
+ if (khr_multiview)
+ log << TestLog::Message << multiviewProperties[0] << TestLog::EndMessage;
+ if (khr_device_protected_memory)
+ log << TestLog::Message << protectedMemoryPropertiesKHR[0] << TestLog::EndMessage;
+ if (khr_device_subgroup)
+ log << TestLog::Message << subgroupProperties[0] << TestLog::EndMessage;
+ if (khr_maintenance2)
+ log << TestLog::Message << pointClippingProperties[0] << TestLog::EndMessage;
+ if (khr_maintenance3)
+ log << TestLog::Message << maintenance3Properties[0] << TestLog::EndMessage;
+ if (khr_depth_stencil_resolve)
+ log << TestLog::Message << depthStencilResolveProperties[0] << TestLog::EndMessage;
+ if (khr_driver_properties)
+ log << TestLog::Message << driverProperties[0] << TestLog::EndMessage;
+ if (khr_shader_float_controls)
+ log << TestLog::Message << floatControlsProperties[0] << TestLog::EndMessage;
+ if (khr_descriptor_indexing)
+ log << TestLog::Message << descriptorIndexingProperties[0] << TestLog::EndMessage;
+ if (khr_sampler_filter_minmax)
+ log << TestLog::Message << samplerFilterMinmaxProperties[0] << TestLog::EndMessage;
+
+ if ( khr_external_fence_capabilities || khr_external_memory_capabilities || khr_external_semaphore_capabilities )
+ {
+ if ((deMemCmp(idProperties[0].deviceUUID, idProperties[1].deviceUUID, VK_UUID_SIZE) != 0) ||
+ (deMemCmp(idProperties[0].driverUUID, idProperties[1].driverUUID, VK_UUID_SIZE) != 0) ||
+ (idProperties[0].deviceLUIDValid != idProperties[1].deviceLUIDValid))
{
TCU_FAIL("Mismatch between VkPhysicalDeviceIDProperties");
}
- else if (IDProperties[0].deviceLUIDValid)
+ else if (idProperties[0].deviceLUIDValid)
{
// If deviceLUIDValid is VK_FALSE, the contents of deviceLUID and deviceNodeMask are undefined
// so thay can only be compared when deviceLUIDValid is VK_TRUE.
- if ((deMemCmp(IDProperties[0].deviceLUID, IDProperties[1].deviceLUID, VK_UUID_SIZE) != 0) ||
- (IDProperties[0].deviceNodeMask != IDProperties[1].deviceNodeMask))
+ if ((deMemCmp(idProperties[0].deviceLUID, idProperties[1].deviceLUID, VK_UUID_SIZE) != 0) ||
+ (idProperties[0].deviceNodeMask != idProperties[1].deviceNodeMask))
{
TCU_FAIL("Mismatch between VkPhysicalDeviceIDProperties");
}
}
}
- if (khr_maintenance3 &&
- ((maintenance3Properties[0].maxPerSetDescriptors != maintenance3Properties[1].maxPerSetDescriptors) ||
- (maintenance3Properties[0].maxMemoryAllocationSize != maintenance3Properties[1].maxMemoryAllocationSize))
- )
- {
- TCU_FAIL("Mismatch between VkPhysicalDeviceMaintenance3Properties");
- }
if (khr_multiview &&
- ((multiviewProperties[0].maxMultiviewViewCount != multiviewProperties[1].maxMultiviewViewCount) ||
- (multiviewProperties[0].maxMultiviewInstanceIndex != multiviewProperties[1].maxMultiviewInstanceIndex))
- )
+ (multiviewProperties[0].maxMultiviewViewCount != multiviewProperties[1].maxMultiviewViewCount ||
+ multiviewProperties[0].maxMultiviewInstanceIndex != multiviewProperties[1].maxMultiviewInstanceIndex))
{
TCU_FAIL("Mismatch between VkPhysicalDeviceMultiviewProperties");
}
+ if (khr_device_protected_memory &&
+ (protectedMemoryPropertiesKHR[0].protectedNoFault != protectedMemoryPropertiesKHR[1].protectedNoFault))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryProperties");
+ }
+ if (khr_device_subgroup &&
+ (subgroupProperties[0].subgroupSize != subgroupProperties[1].subgroupSize ||
+ subgroupProperties[0].supportedStages != subgroupProperties[1].supportedStages ||
+ subgroupProperties[0].supportedOperations != subgroupProperties[1].supportedOperations ||
+ subgroupProperties[0].quadOperationsInAllStages != subgroupProperties[1].quadOperationsInAllStages ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceSubgroupProperties");
+ }
if (khr_maintenance2 &&
- (pointClippingProperties[0].pointClippingBehavior != pointClippingProperties[1].pointClippingBehavior))
+ (pointClippingProperties[0].pointClippingBehavior != pointClippingProperties[1].pointClippingBehavior))
{
TCU_FAIL("Mismatch between VkPhysicalDevicePointClippingProperties");
}
- if (!apiVersionSmallerThen_1_1)
+ if (khr_maintenance3 &&
+ (maintenance3Properties[0].maxPerSetDescriptors != maintenance3Properties[1].maxPerSetDescriptors ||
+ maintenance3Properties[0].maxMemoryAllocationSize != maintenance3Properties[1].maxMemoryAllocationSize))
{
- if(protectedMemoryPropertiesKHR[0].protectedNoFault != protectedMemoryPropertiesKHR[1].protectedNoFault)
- {
- TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryProperties");
- }
- if ((subgroupProperties[0].subgroupSize != subgroupProperties[1].subgroupSize) ||
- (subgroupProperties[0].supportedStages != subgroupProperties[1].supportedStages) ||
- (subgroupProperties[0].supportedOperations != subgroupProperties[1].supportedOperations) ||
- (subgroupProperties[0].quadOperationsInAllStages != subgroupProperties[1].quadOperationsInAllStages))
- {
- TCU_FAIL("Mismatch between VkPhysicalDeviceSubgroupProperties");
- }
+ TCU_FAIL("Mismatch between VkPhysicalDeviceMaintenance3Properties");
}
-
- if (khr_external_memory_capabilities)
- log << TestLog::Message << IDProperties[0] << TestLog::EndMessage;
- if (khr_maintenance3)
- log << TestLog::Message << maintenance3Properties[0] << TestLog::EndMessage;
- if (khr_multiview)
- log << TestLog::Message << multiviewProperties[0] << TestLog::EndMessage;
- if (khr_maintenance2)
- log << TestLog::Message << pointClippingProperties[0] << TestLog::EndMessage;
- if (!apiVersionSmallerThen_1_1)
+ if (khr_depth_stencil_resolve &&
+ (depthStencilResolveProperties[0].supportedDepthResolveModes != depthStencilResolveProperties[1].supportedDepthResolveModes ||
+ depthStencilResolveProperties[0].supportedStencilResolveModes != depthStencilResolveProperties[1].supportedStencilResolveModes ||
+ depthStencilResolveProperties[0].independentResolveNone != depthStencilResolveProperties[1].independentResolveNone ||
+ depthStencilResolveProperties[0].independentResolve != depthStencilResolveProperties[1].independentResolve))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceDepthStencilResolveProperties");
+ }
+ if (khr_driver_properties &&
+ (driverProperties[0].driverID != driverProperties[1].driverID ||
+ strncmp(driverProperties[0].driverName, driverProperties[1].driverName, VK_MAX_DRIVER_NAME_SIZE) != 0 ||
+ strncmp(driverProperties[0].driverInfo, driverProperties[1].driverInfo, VK_MAX_DRIVER_INFO_SIZE) != 0 ||
+ driverProperties[0].conformanceVersion.major != driverProperties[1].conformanceVersion.major ||
+ driverProperties[0].conformanceVersion.minor != driverProperties[1].conformanceVersion.minor ||
+ driverProperties[0].conformanceVersion.subminor != driverProperties[1].conformanceVersion.subminor ||
+ driverProperties[0].conformanceVersion.patch != driverProperties[1].conformanceVersion.patch))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceDriverProperties");
+ }
+ if (khr_shader_float_controls &&
+ (floatControlsProperties[0].denormBehaviorIndependence != floatControlsProperties[1].denormBehaviorIndependence ||
+ floatControlsProperties[0].roundingModeIndependence != floatControlsProperties[1].roundingModeIndependence ||
+ floatControlsProperties[0].shaderSignedZeroInfNanPreserveFloat16 != floatControlsProperties[1].shaderSignedZeroInfNanPreserveFloat16 ||
+ floatControlsProperties[0].shaderSignedZeroInfNanPreserveFloat32 != floatControlsProperties[1].shaderSignedZeroInfNanPreserveFloat32 ||
+ floatControlsProperties[0].shaderSignedZeroInfNanPreserveFloat64 != floatControlsProperties[1].shaderSignedZeroInfNanPreserveFloat64 ||
+ floatControlsProperties[0].shaderDenormPreserveFloat16 != floatControlsProperties[1].shaderDenormPreserveFloat16 ||
+ floatControlsProperties[0].shaderDenormPreserveFloat32 != floatControlsProperties[1].shaderDenormPreserveFloat32 ||
+ floatControlsProperties[0].shaderDenormPreserveFloat64 != floatControlsProperties[1].shaderDenormPreserveFloat64 ||
+ floatControlsProperties[0].shaderDenormFlushToZeroFloat16 != floatControlsProperties[1].shaderDenormFlushToZeroFloat16 ||
+ floatControlsProperties[0].shaderDenormFlushToZeroFloat32 != floatControlsProperties[1].shaderDenormFlushToZeroFloat32 ||
+ floatControlsProperties[0].shaderDenormFlushToZeroFloat64 != floatControlsProperties[1].shaderDenormFlushToZeroFloat64 ||
+ floatControlsProperties[0].shaderRoundingModeRTEFloat16 != floatControlsProperties[1].shaderRoundingModeRTEFloat16 ||
+ floatControlsProperties[0].shaderRoundingModeRTEFloat32 != floatControlsProperties[1].shaderRoundingModeRTEFloat32 ||
+ floatControlsProperties[0].shaderRoundingModeRTEFloat64 != floatControlsProperties[1].shaderRoundingModeRTEFloat64 ||
+ floatControlsProperties[0].shaderRoundingModeRTZFloat16 != floatControlsProperties[1].shaderRoundingModeRTZFloat16 ||
+ floatControlsProperties[0].shaderRoundingModeRTZFloat32 != floatControlsProperties[1].shaderRoundingModeRTZFloat32 ||
+ floatControlsProperties[0].shaderRoundingModeRTZFloat64 != floatControlsProperties[1].shaderRoundingModeRTZFloat64 ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceFloatControlsProperties");
+ }
+ if (khr_descriptor_indexing &&
+ (descriptorIndexingProperties[0].maxUpdateAfterBindDescriptorsInAllPools != descriptorIndexingProperties[1].maxUpdateAfterBindDescriptorsInAllPools ||
+ descriptorIndexingProperties[0].shaderUniformBufferArrayNonUniformIndexingNative != descriptorIndexingProperties[1].shaderUniformBufferArrayNonUniformIndexingNative ||
+ descriptorIndexingProperties[0].shaderSampledImageArrayNonUniformIndexingNative != descriptorIndexingProperties[1].shaderSampledImageArrayNonUniformIndexingNative ||
+ descriptorIndexingProperties[0].shaderStorageBufferArrayNonUniformIndexingNative != descriptorIndexingProperties[1].shaderStorageBufferArrayNonUniformIndexingNative ||
+ descriptorIndexingProperties[0].shaderStorageImageArrayNonUniformIndexingNative != descriptorIndexingProperties[1].shaderStorageImageArrayNonUniformIndexingNative ||
+ descriptorIndexingProperties[0].shaderInputAttachmentArrayNonUniformIndexingNative != descriptorIndexingProperties[1].shaderInputAttachmentArrayNonUniformIndexingNative ||
+ descriptorIndexingProperties[0].robustBufferAccessUpdateAfterBind != descriptorIndexingProperties[1].robustBufferAccessUpdateAfterBind ||
+ descriptorIndexingProperties[0].quadDivergentImplicitLod != descriptorIndexingProperties[1].quadDivergentImplicitLod ||
+ descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindSamplers != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindSamplers ||
+ descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindUniformBuffers != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindUniformBuffers ||
+ descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindStorageBuffers != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindStorageBuffers ||
+ descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindSampledImages != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindSampledImages ||
+ descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindStorageImages != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindStorageImages ||
+ descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindInputAttachments != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindInputAttachments ||
+ descriptorIndexingProperties[0].maxPerStageUpdateAfterBindResources != descriptorIndexingProperties[1].maxPerStageUpdateAfterBindResources ||
+ descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindSamplers != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindSamplers ||
+ descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindUniformBuffers != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindUniformBuffers ||
+ descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindUniformBuffersDynamic != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ||
+ descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindStorageBuffers != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindStorageBuffers ||
+ descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindStorageBuffersDynamic != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ||
+ descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindSampledImages != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindSampledImages ||
+ descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindStorageImages != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindStorageImages ||
+ descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindInputAttachments != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindInputAttachments ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceDescriptorIndexingProperties");
+ }
+ if (khr_sampler_filter_minmax &&
+ (samplerFilterMinmaxProperties[0].filterMinmaxSingleComponentFormats != samplerFilterMinmaxProperties[1].filterMinmaxSingleComponentFormats ||
+ samplerFilterMinmaxProperties[0].filterMinmaxImageComponentMapping != samplerFilterMinmaxProperties[1].filterMinmaxImageComponentMapping))
{
- log << TestLog::Message << protectedMemoryPropertiesKHR[0] << TestLog::EndMessage
- << TestLog::Message << subgroupProperties[0] << TestLog::EndMessage;
+ TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerFilterMinmaxProperties");
}
- const vector<VkExtensionProperties> extensions = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
-
- if (isExtensionSupported(extensions, RequiredExtension("VK_KHR_push_descriptor")))
+ if (isExtensionSupported(properties, RequiredExtension("VK_KHR_push_descriptor")))
{
VkPhysicalDevicePushDescriptorPropertiesKHR pushDescriptorProperties[count];
for (int ndx = 0; ndx < count; ++ndx)
{
- deMemset(&pushDescriptorProperties[ndx], 0, sizeof(VkPhysicalDevicePushDescriptorPropertiesKHR));
+ deMemset(&pushDescriptorProperties[ndx], 0xFF * ndx, sizeof(VkPhysicalDevicePushDescriptorPropertiesKHR));
pushDescriptorProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR;
pushDescriptorProperties[ndx].pNext = DE_NULL;
pushDescriptorProperties[ndx].pNext = DE_NULL;
}
- if (deMemCmp(&pushDescriptorProperties[0], &pushDescriptorProperties[1], sizeof(VkPhysicalDevicePushDescriptorPropertiesKHR)) != 0)
- {
- TCU_FAIL("Mismatch in vkGetPhysicalDeviceProperties2 in VkPhysicalDevicePushDescriptorPropertiesKHR ");
- }
-
log << TestLog::Message << pushDescriptorProperties[0] << TestLog::EndMessage;
- if (pushDescriptorProperties[0].maxPushDescriptors < 32)
- {
- TCU_FAIL("VkPhysicalDevicePushDescriptorPropertiesKHR.maxPushDescriptors must be at least 32");
- }
- }
- if (isExtensionSupported(extensions, RequiredExtension("VK_KHR_shader_float_controls")))
- {
- VkPhysicalDeviceFloatControlsPropertiesKHR floatControlsProperties[count];
-
- for (int ndx = 0; ndx < count; ++ndx)
+ if ( pushDescriptorProperties[0].maxPushDescriptors != pushDescriptorProperties[1].maxPushDescriptors )
{
- deMemset(&floatControlsProperties[ndx], 0xFF, sizeof(VkPhysicalDeviceFloatControlsPropertiesKHR));
- floatControlsProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR;
- floatControlsProperties[ndx].pNext = DE_NULL;
-
- extProperties.pNext = &floatControlsProperties[ndx];
-
- vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+ TCU_FAIL("Mismatch between VkPhysicalDevicePushDescriptorPropertiesKHR ");
}
-
- if (deMemCmp(&floatControlsProperties[0], &floatControlsProperties[1], sizeof(VkPhysicalDeviceFloatControlsPropertiesKHR)) != 0)
+ if (pushDescriptorProperties[0].maxPushDescriptors < 32)
{
- TCU_FAIL("Mismatch in VkPhysicalDeviceFloatControlsPropertiesKHR");
+ TCU_FAIL("VkPhysicalDevicePushDescriptorPropertiesKHR.maxPushDescriptors must be at least 32");
}
-
- log << TestLog::Message << floatControlsProperties[0] << TestLog::EndMessage;
}
- if (isExtensionSupported(extensions, RequiredExtension("VK_KHR_depth_stencil_resolve")))
+ if (isExtensionSupported(properties, RequiredExtension("VK_KHR_performance_query")))
{
- VkPhysicalDeviceDepthStencilResolvePropertiesKHR dsResolveProperties[count];
+ VkPhysicalDevicePerformanceQueryPropertiesKHR performanceQueryProperties[count];
for (int ndx = 0; ndx < count; ++ndx)
{
- deMemset(&dsResolveProperties[ndx], 0xFF, sizeof(VkPhysicalDeviceDepthStencilResolvePropertiesKHR));
- dsResolveProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR;
- dsResolveProperties[ndx].pNext = DE_NULL;
+ deMemset(&performanceQueryProperties[ndx], 0xFF * ndx, sizeof(VkPhysicalDevicePerformanceQueryPropertiesKHR));
+ performanceQueryProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
+ performanceQueryProperties[ndx].pNext = DE_NULL;
- extProperties.pNext = &dsResolveProperties[ndx];
+ extProperties.pNext = &performanceQueryProperties[ndx];
vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
}
- if (deMemCmp(&dsResolveProperties[0], &dsResolveProperties[1], sizeof(VkPhysicalDeviceDepthStencilResolvePropertiesKHR)) != 0)
+ log << TestLog::Message << performanceQueryProperties[0] << TestLog::EndMessage;
+
+ if (performanceQueryProperties[0].allowCommandBufferQueryCopies != performanceQueryProperties[0].allowCommandBufferQueryCopies)
{
- TCU_FAIL("Mismatch in VkPhysicalDeviceDepthStencilResolvePropertiesKHR");
+ TCU_FAIL("Mismatch between VkPhysicalDevicePerformanceQueryPropertiesKHR");
}
-
- log << TestLog::Message << dsResolveProperties[0] << TestLog::EndMessage;
}
- if (isExtensionSupported(extensions, RequiredExtension("VK_EXT_pci_bus_info", 2, 2)))
+ if (isExtensionSupported(properties, RequiredExtension("VK_EXT_pci_bus_info", 2, 2)))
{
VkPhysicalDevicePCIBusInfoPropertiesEXT pciBusInfoProperties[count];
//
// [1] https://en.wikipedia.org/wiki/PCI_configuration_space
// [2] PCI Express Base Specification Revision 3.0, section 2.2.4.2.
- deMemset(pciBusInfoProperties + ndx, 0, sizeof(pciBusInfoProperties[ndx]));
+ deMemset(pciBusInfoProperties + ndx, 0xFF * ndx, sizeof(pciBusInfoProperties[ndx]));
pciBusInfoProperties[ndx].pciDomain = DEUINT32_MAX;
pciBusInfoProperties[ndx].pciBus = DEUINT32_MAX;
pciBusInfoProperties[ndx].pciDevice = DEUINT32_MAX;
vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
}
- if (deMemCmp(pciBusInfoProperties + 0, pciBusInfoProperties + 1, sizeof(pciBusInfoProperties[0])) != 0)
- {
- TCU_FAIL("Mismatch in VkPhysicalDevicePCIBusInfoPropertiesEXT");
- }
-
log << TestLog::Message << toString(pciBusInfoProperties[0]) << TestLog::EndMessage;
+ if (pciBusInfoProperties[0].pciDomain != pciBusInfoProperties[1].pciDomain ||
+ pciBusInfoProperties[0].pciBus != pciBusInfoProperties[1].pciBus ||
+ pciBusInfoProperties[0].pciDevice != pciBusInfoProperties[1].pciDevice ||
+ pciBusInfoProperties[0].pciFunction != pciBusInfoProperties[1].pciFunction)
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDevicePCIBusInfoPropertiesEXT");
+ }
if (pciBusInfoProperties[0].pciDomain == DEUINT32_MAX ||
pciBusInfoProperties[0].pciBus == DEUINT32_MAX ||
pciBusInfoProperties[0].pciDevice == DEUINT32_MAX ||
TCU_FAIL("Invalid information in VkPhysicalDevicePCIBusInfoPropertiesEXT");
}
}
- if (isExtensionSupported(extensions, RequiredExtension("VK_KHR_performance_query")))
- {
- VkPhysicalDevicePerformanceQueryPropertiesKHR performanceQueryProperties[count];
-
- for (int ndx = 0; ndx < count; ++ndx)
- {
- deMemset(&performanceQueryProperties[ndx], 0xFF * ndx, sizeof(VkPhysicalDevicePerformanceQueryPropertiesKHR));
- performanceQueryProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
- performanceQueryProperties[ndx].pNext = DE_NULL;
-
- extProperties.pNext = &performanceQueryProperties[ndx];
-
- vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
- }
-
- log << TestLog::Message << performanceQueryProperties[0] << TestLog::EndMessage;
-
- if (performanceQueryProperties[0].allowCommandBufferQueryCopies != performanceQueryProperties[0].allowCommandBufferQueryCopies)
- {
- TCU_FAIL("Mismatch between VkPhysicalDevicePerformanceQueryPropertiesKHR");
- }
- }
return tcu::TestStatus::pass("Querying device properties succeeded");
}
return tcu::TestStatus::pass("Querying device memory properties succeeded");
}
+tcu::TestStatus deviceFeaturesVulkan12 (Context& context)
+{
+ using namespace ValidateQueryBits;
+
+ const QueryMemberTableEntry feature11OffsetTable[] =
+ {
+ // VkPhysicalDevice16BitStorageFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, storageBuffer16BitAccess),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, uniformAndStorageBuffer16BitAccess),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, storagePushConstant16),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, storageInputOutput16),
+
+ // VkPhysicalDeviceMultiviewFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, multiview),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, multiviewGeometryShader),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, multiviewTessellationShader),
+
+ // VkPhysicalDeviceVariablePointersFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, variablePointersStorageBuffer),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, variablePointers),
+
+ // VkPhysicalDeviceProtectedMemoryFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, protectedMemory),
+
+ // VkPhysicalDeviceSamplerYcbcrConversionFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, samplerYcbcrConversion),
+
+ // VkPhysicalDeviceShaderDrawParametersFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, shaderDrawParameters),
+ { 0, 0 }
+ };
+ const QueryMemberTableEntry feature12OffsetTable[] =
+ {
+ // None
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, samplerMirrorClampToEdge),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, drawIndirectCount),
+
+ // VkPhysicalDevice8BitStorageFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, storageBuffer8BitAccess),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, uniformAndStorageBuffer8BitAccess),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, storagePushConstant8),
+
+ // VkPhysicalDeviceShaderAtomicInt64Features
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderBufferInt64Atomics),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderSharedInt64Atomics),
+
+ // VkPhysicalDeviceShaderFloat16Int8Features
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderFloat16),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderInt8),
+
+ // VkPhysicalDeviceDescriptorIndexingFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderInputAttachmentArrayDynamicIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderUniformTexelBufferArrayDynamicIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderStorageTexelBufferArrayDynamicIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderUniformBufferArrayNonUniformIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderSampledImageArrayNonUniformIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderStorageBufferArrayNonUniformIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderStorageImageArrayNonUniformIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderInputAttachmentArrayNonUniformIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderUniformTexelBufferArrayNonUniformIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderStorageTexelBufferArrayNonUniformIndexing),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingUniformBufferUpdateAfterBind),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingSampledImageUpdateAfterBind),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingStorageImageUpdateAfterBind),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingStorageBufferUpdateAfterBind),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingUniformTexelBufferUpdateAfterBind),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingStorageTexelBufferUpdateAfterBind),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingUpdateUnusedWhilePending),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingPartiallyBound),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingVariableDescriptorCount),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, runtimeDescriptorArray),
+
+ // None
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, samplerFilterMinmax),
+
+ // VkPhysicalDeviceScalarBlockLayoutFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, scalarBlockLayout),
+
+ // VkPhysicalDeviceImagelessFramebufferFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, imagelessFramebuffer),
+
+ // VkPhysicalDeviceUniformBufferStandardLayoutFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, uniformBufferStandardLayout),
+
+ // VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderSubgroupExtendedTypes),
+
+ // VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, separateDepthStencilLayouts),
+
+ // VkPhysicalDeviceHostQueryResetFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, hostQueryReset),
+
+ // VkPhysicalDeviceTimelineSemaphoreFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, timelineSemaphore),
+
+ // VkPhysicalDeviceBufferDeviceAddressFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, bufferDeviceAddress),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, bufferDeviceAddressCaptureReplay),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, bufferDeviceAddressMultiDevice),
+
+ // VkPhysicalDeviceVulkanMemoryModelFeatures
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, vulkanMemoryModel),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, vulkanMemoryModelDeviceScope),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, vulkanMemoryModelAvailabilityVisibilityChains),
+
+ // None
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderOutputViewportIndex),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderOutputLayer),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, subgroupBroadcastDynamicId),
+ { 0, 0 }
+ };
+ TestLog& log = context.getTestContext().getLog();
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const CustomInstance instance (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
+ const InstanceDriver& vki = instance.getDriver();
+ const deUint32 vulkan11FeaturesBufferSize = sizeof(VkPhysicalDeviceVulkan11Features) + GUARD_SIZE;
+ const deUint32 vulkan12FeaturesBufferSize = sizeof(VkPhysicalDeviceVulkan12Features) + GUARD_SIZE;
+ VkPhysicalDeviceFeatures2 extFeatures;
+ deUint8 buffer11a[vulkan11FeaturesBufferSize];
+ deUint8 buffer11b[vulkan11FeaturesBufferSize];
+ deUint8 buffer12a[vulkan12FeaturesBufferSize];
+ deUint8 buffer12b[vulkan12FeaturesBufferSize];
+ const int count = 2u;
+ VkPhysicalDeviceVulkan11Features* vulkan11Features[count] = { (VkPhysicalDeviceVulkan11Features*)(buffer11a), (VkPhysicalDeviceVulkan11Features*)(buffer11b)};
+ VkPhysicalDeviceVulkan12Features* vulkan12Features[count] = { (VkPhysicalDeviceVulkan12Features*)(buffer12a), (VkPhysicalDeviceVulkan12Features*)(buffer12b)};
+
+ if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+ TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+
+ deMemset(buffer11b, GUARD_VALUE, sizeof(buffer11b));
+ deMemset(buffer12a, GUARD_VALUE, sizeof(buffer12a));
+ deMemset(buffer12b, GUARD_VALUE, sizeof(buffer12b));
+ deMemset(buffer11a, GUARD_VALUE, sizeof(buffer11a));
+
+ // Validate all fields initialized
+ for (int ndx = 0; ndx < count; ++ndx)
+ {
+ deMemset(&extFeatures.features, 0x00, sizeof(extFeatures.features));
+ extFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
+ extFeatures.pNext = vulkan11Features[ndx];
+
+ deMemset(vulkan11Features[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceVulkan11Features));
+ vulkan11Features[ndx]->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
+ vulkan11Features[ndx]->pNext = vulkan12Features[ndx];
+
+ deMemset(vulkan12Features[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceVulkan12Features));
+ vulkan12Features[ndx]->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
+ vulkan12Features[ndx]->pNext = DE_NULL;
+
+ vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
+ }
+
+ log << TestLog::Message << *vulkan11Features[0] << TestLog::EndMessage;
+ log << TestLog::Message << *vulkan12Features[0] << TestLog::EndMessage;
+
+ if (!validateStructsWithGuard(feature11OffsetTable, vulkan11Features, GUARD_VALUE, GUARD_SIZE))
+ {
+ log << TestLog::Message << "deviceFeatures - VkPhysicalDeviceVulkan11Features initialization failure" << TestLog::EndMessage;
+
+ return tcu::TestStatus::fail("VkPhysicalDeviceVulkan11Features initialization failure");
+ }
+
+ if (!validateStructsWithGuard(feature12OffsetTable, vulkan12Features, GUARD_VALUE, GUARD_SIZE))
+ {
+ log << TestLog::Message << "deviceFeatures - VkPhysicalDeviceVulkan12Features initialization failure" << TestLog::EndMessage;
+
+ return tcu::TestStatus::fail("VkPhysicalDeviceVulkan12Features initialization failure");
+ }
+
+ return tcu::TestStatus::pass("Querying Vulkan 1.2 device features succeeded");
+}
+
+tcu::TestStatus devicePropertiesVulkan12 (Context& context)
+{
+ using namespace ValidateQueryBits;
+
+ const QueryMemberTableEntry properties11OffsetTable[] =
+ {
+ // VkPhysicalDeviceIDProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, deviceUUID),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, driverUUID),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, deviceLUID),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, deviceNodeMask),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, deviceLUIDValid),
+
+ // VkPhysicalDeviceSubgroupProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, subgroupSize),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, subgroupSupportedStages),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, subgroupSupportedOperations),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, subgroupQuadOperationsInAllStages),
+
+ // VkPhysicalDevicePointClippingProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, pointClippingBehavior),
+
+ // VkPhysicalDeviceMultiviewProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, maxMultiviewViewCount),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, maxMultiviewInstanceIndex),
+
+ // VkPhysicalDeviceProtectedMemoryProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, protectedNoFault),
+
+ // VkPhysicalDeviceMaintenance3Properties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, maxPerSetDescriptors),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, maxMemoryAllocationSize),
+ { 0, 0 }
+ };
+ const QueryMemberTableEntry properties12OffsetTable[] =
+ {
+ // VkPhysicalDeviceDriverProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, driverID),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, conformanceVersion),
+
+ // VkPhysicalDeviceFloatControlsProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, denormBehaviorIndependence),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, roundingModeIndependence),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderSignedZeroInfNanPreserveFloat16),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderSignedZeroInfNanPreserveFloat32),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderSignedZeroInfNanPreserveFloat64),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormPreserveFloat16),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormPreserveFloat32),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormPreserveFloat64),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormFlushToZeroFloat16),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormFlushToZeroFloat32),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormFlushToZeroFloat64),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTEFloat16),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTEFloat32),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTEFloat64),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTZFloat16),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTZFloat32),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTZFloat64),
+
+ // VkPhysicalDeviceDescriptorIndexingProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxUpdateAfterBindDescriptorsInAllPools),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderUniformBufferArrayNonUniformIndexingNative),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderSampledImageArrayNonUniformIndexingNative),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderStorageBufferArrayNonUniformIndexingNative),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderStorageImageArrayNonUniformIndexingNative),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderInputAttachmentArrayNonUniformIndexingNative),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, robustBufferAccessUpdateAfterBind),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, quadDivergentImplicitLod),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindSamplers),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindUniformBuffers),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindStorageBuffers),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindSampledImages),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindStorageImages),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindInputAttachments),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageUpdateAfterBindResources),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindSamplers),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindUniformBuffers),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindStorageBuffers),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindSampledImages),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindStorageImages),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindInputAttachments),
+
+ // VkPhysicalDeviceDepthStencilResolveProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, supportedDepthResolveModes),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, supportedStencilResolveModes),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, independentResolveNone),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, independentResolve),
+
+ // VkPhysicalDeviceSamplerFilterMinmaxProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, filterMinmaxSingleComponentFormats),
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, filterMinmaxImageComponentMapping),
+
+ // VkPhysicalDeviceTimelineSemaphoreProperties
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxTimelineSemaphoreValueDifference),
+
+ // None
+ OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, framebufferIntegerColorSampleCounts),
+ { 0, 0 }
+ };
+ TestLog& log = context.getTestContext().getLog();
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const CustomInstance instance (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
+ const InstanceDriver& vki = instance.getDriver();
+ const deUint32 vulkan11PropertiesBufferSize = sizeof(VkPhysicalDeviceVulkan11Properties) + GUARD_SIZE;
+ const deUint32 vulkan12PropertiesBufferSize = sizeof(VkPhysicalDeviceVulkan12Properties) + GUARD_SIZE;
+ VkPhysicalDeviceProperties2 extProperties;
+ deUint8 buffer11a[vulkan11PropertiesBufferSize];
+ deUint8 buffer11b[vulkan11PropertiesBufferSize];
+ deUint8 buffer12a[vulkan12PropertiesBufferSize];
+ deUint8 buffer12b[vulkan12PropertiesBufferSize];
+ const int count = 2u;
+ VkPhysicalDeviceVulkan11Properties* vulkan11Properties[count] = { (VkPhysicalDeviceVulkan11Properties*)(buffer11a), (VkPhysicalDeviceVulkan11Properties*)(buffer11b)};
+ VkPhysicalDeviceVulkan12Properties* vulkan12Properties[count] = { (VkPhysicalDeviceVulkan12Properties*)(buffer12a), (VkPhysicalDeviceVulkan12Properties*)(buffer12b)};
+
+ if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+ TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+
+ deMemset(buffer11a, GUARD_VALUE, sizeof(buffer11a));
+ deMemset(buffer11b, GUARD_VALUE, sizeof(buffer11b));
+ deMemset(buffer12a, GUARD_VALUE, sizeof(buffer12a));
+ deMemset(buffer12b, GUARD_VALUE, sizeof(buffer12b));
+
+ for (int ndx = 0; ndx < count; ++ndx)
+ {
+ deMemset(&extProperties.properties, 0x00, sizeof(extProperties.properties));
+ extProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
+ extProperties.pNext = vulkan11Properties[ndx];
+
+ deMemset(vulkan11Properties[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceVulkan11Properties));
+ vulkan11Properties[ndx]->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;
+ vulkan11Properties[ndx]->pNext = vulkan12Properties[ndx];
+
+ deMemset(vulkan12Properties[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceVulkan12Properties));
+ vulkan12Properties[ndx]->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;
+ vulkan12Properties[ndx]->pNext = DE_NULL;
+
+ vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+ }
+
+ log << TestLog::Message << *vulkan11Properties[0] << TestLog::EndMessage;
+ log << TestLog::Message << *vulkan12Properties[0] << TestLog::EndMessage;
+
+ if (!validateStructsWithGuard(properties11OffsetTable, vulkan11Properties, GUARD_VALUE, GUARD_SIZE))
+ {
+ log << TestLog::Message << "deviceProperties - VkPhysicalDeviceVulkan11Properties initialization failure" << TestLog::EndMessage;
+
+ return tcu::TestStatus::fail("VkPhysicalDeviceVulkan11Properties initialization failure");
+ }
+
+ if (!validateStructsWithGuard(properties12OffsetTable, vulkan12Properties, GUARD_VALUE, GUARD_SIZE) ||
+ strncmp(vulkan12Properties[0]->driverName, vulkan12Properties[1]->driverName, VK_MAX_DRIVER_NAME_SIZE) != 0 ||
+ strncmp(vulkan12Properties[0]->driverInfo, vulkan12Properties[1]->driverInfo, VK_MAX_DRIVER_INFO_SIZE) != 0 )
+ {
+ log << TestLog::Message << "deviceProperties - VkPhysicalDeviceVulkan12Properties initialization failure" << TestLog::EndMessage;
+
+ return tcu::TestStatus::fail("VkPhysicalDeviceVulkan12Properties initialization failure");
+ }
+
+ return tcu::TestStatus::pass("Querying Vulkan 1.2 device properties succeeded");
+}
+
+tcu::TestStatus deviceFeatureExtensionsConsistencyVulkan12(Context& context)
+{
+ TestLog& log = context.getTestContext().getLog();
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const CustomInstance instance (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
+ const InstanceDriver& vki = instance.getDriver();
+
+ if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+ TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+
+ VkPhysicalDeviceVulkan12Features vulkan12Features = initVulkanStructure();
+ VkPhysicalDeviceVulkan11Features vulkan11Features = initVulkanStructure(&vulkan12Features);
+ VkPhysicalDeviceFeatures2 extFeatures = initVulkanStructure(&vulkan11Features);
+
+ vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
+
+ log << TestLog::Message << vulkan11Features << TestLog::EndMessage;
+ log << TestLog::Message << vulkan12Features << TestLog::EndMessage;
+
+ // Validate if proper VkPhysicalDeviceVulkanXXFeatures fields are set when corresponding extensions are present
+ std::pair<std::pair<const char*,const char*>, VkBool32> extensions2validate[] =
+ {
+ { { "VK_KHR_sampler_mirror_clamp_to_edge", "VkPhysicalDeviceVulkan12Features.samplerMirrorClampToEdge" }, vulkan12Features.samplerMirrorClampToEdge },
+ { { "VK_KHR_draw_indirect_count", "VkPhysicalDeviceVulkan12Features.drawIndirectCount" }, vulkan12Features.drawIndirectCount },
+ { { "VK_EXT_descriptor_indexing", "VkPhysicalDeviceVulkan12Features.descriptorIndexing" }, vulkan12Features.descriptorIndexing },
+ { { "VK_EXT_sampler_filter_minmax", "VkPhysicalDeviceVulkan12Features.samplerFilterMinmax" }, vulkan12Features.samplerFilterMinmax },
+ { { "VK_EXT_shader_viewport_index_layer", "VkPhysicalDeviceVulkan12Features.shaderOutputViewportIndex" }, vulkan12Features.shaderOutputViewportIndex },
+ { { "VK_EXT_shader_viewport_index_layer", "VkPhysicalDeviceVulkan12Features.shaderOutputLayer" }, vulkan12Features.shaderOutputLayer }
+ };
+ vector<VkExtensionProperties> extensionProperties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+ for (const auto& ext : extensions2validate)
+ if (checkExtension(extensionProperties, ext.first.first) && !ext.second)
+ TCU_FAIL(string("Mismatch between extension ") + ext.first.first + " and " + ext.first.second);
+
+ // collect all extension features
+ {
+ VkPhysicalDevice16BitStorageFeatures device16BitStorageFeatures = initVulkanStructure();
+ VkPhysicalDeviceMultiviewFeatures deviceMultiviewFeatures = initVulkanStructure(&device16BitStorageFeatures);
+ VkPhysicalDeviceProtectedMemoryFeatures protectedMemoryFeatures = initVulkanStructure(&deviceMultiviewFeatures);
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures samplerYcbcrConversionFeatures = initVulkanStructure(&protectedMemoryFeatures);
+ VkPhysicalDeviceShaderDrawParametersFeatures shaderDrawParametersFeatures = initVulkanStructure(&samplerYcbcrConversionFeatures);
+ VkPhysicalDeviceVariablePointersFeatures variablePointerFeatures = initVulkanStructure(&shaderDrawParametersFeatures);
+ VkPhysicalDevice8BitStorageFeatures device8BitStorageFeatures = initVulkanStructure(&variablePointerFeatures);
+ VkPhysicalDeviceShaderAtomicInt64Features shaderAtomicInt64Features = initVulkanStructure(&device8BitStorageFeatures);
+ VkPhysicalDeviceShaderFloat16Int8Features shaderFloat16Int8Features = initVulkanStructure(&shaderAtomicInt64Features);
+ VkPhysicalDeviceDescriptorIndexingFeatures descriptorIndexingFeatures = initVulkanStructure(&shaderFloat16Int8Features);
+ VkPhysicalDeviceScalarBlockLayoutFeatures scalarBlockLayoutFeatures = initVulkanStructure(&descriptorIndexingFeatures);
+ VkPhysicalDeviceImagelessFramebufferFeatures imagelessFramebufferFeatures = initVulkanStructure(&scalarBlockLayoutFeatures);
+ VkPhysicalDeviceUniformBufferStandardLayoutFeatures uniformBufferStandardLayoutFeatures = initVulkanStructure(&imagelessFramebufferFeatures);
+ VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures shaderSubgroupExtendedTypesFeatures = initVulkanStructure(&uniformBufferStandardLayoutFeatures);
+ VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures separateDepthStencilLayoutsFeatures = initVulkanStructure(&shaderSubgroupExtendedTypesFeatures);
+ VkPhysicalDeviceHostQueryResetFeatures hostQueryResetFeatures = initVulkanStructure(&separateDepthStencilLayoutsFeatures);
+ VkPhysicalDeviceTimelineSemaphoreFeatures timelineSemaphoreFeatures = initVulkanStructure(&hostQueryResetFeatures);
+ VkPhysicalDeviceBufferDeviceAddressFeatures bufferDeviceAddressFeatures = initVulkanStructure(&timelineSemaphoreFeatures);
+ VkPhysicalDeviceVulkanMemoryModelFeatures vulkanMemoryModelFeatures = initVulkanStructure(&bufferDeviceAddressFeatures);
+ extFeatures = initVulkanStructure(&vulkanMemoryModelFeatures);
+
+ vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
+
+ log << TestLog::Message << extFeatures << TestLog::EndMessage;
+ log << TestLog::Message << device16BitStorageFeatures << TestLog::EndMessage;
+ log << TestLog::Message << deviceMultiviewFeatures << TestLog::EndMessage;
+ log << TestLog::Message << protectedMemoryFeatures << TestLog::EndMessage;
+ log << TestLog::Message << samplerYcbcrConversionFeatures << TestLog::EndMessage;
+ log << TestLog::Message << shaderDrawParametersFeatures << TestLog::EndMessage;
+ log << TestLog::Message << variablePointerFeatures << TestLog::EndMessage;
+ log << TestLog::Message << device8BitStorageFeatures << TestLog::EndMessage;
+ log << TestLog::Message << shaderAtomicInt64Features << TestLog::EndMessage;
+ log << TestLog::Message << shaderFloat16Int8Features << TestLog::EndMessage;
+ log << TestLog::Message << descriptorIndexingFeatures << TestLog::EndMessage;
+ log << TestLog::Message << scalarBlockLayoutFeatures << TestLog::EndMessage;
+ log << TestLog::Message << imagelessFramebufferFeatures << TestLog::EndMessage;
+ log << TestLog::Message << uniformBufferStandardLayoutFeatures << TestLog::EndMessage;
+ log << TestLog::Message << shaderSubgroupExtendedTypesFeatures << TestLog::EndMessage;
+ log << TestLog::Message << separateDepthStencilLayoutsFeatures << TestLog::EndMessage;
+ log << TestLog::Message << hostQueryResetFeatures << TestLog::EndMessage;
+ log << TestLog::Message << timelineSemaphoreFeatures << TestLog::EndMessage;
+ log << TestLog::Message << bufferDeviceAddressFeatures << TestLog::EndMessage;
+ log << TestLog::Message << vulkanMemoryModelFeatures << TestLog::EndMessage;
+
+ if (( device16BitStorageFeatures.storageBuffer16BitAccess != vulkan11Features.storageBuffer16BitAccess ||
+ device16BitStorageFeatures.uniformAndStorageBuffer16BitAccess != vulkan11Features.uniformAndStorageBuffer16BitAccess ||
+ device16BitStorageFeatures.storagePushConstant16 != vulkan11Features.storagePushConstant16 ||
+ device16BitStorageFeatures.storageInputOutput16 != vulkan11Features.storageInputOutput16 ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDevice16BitStorageFeatures and VkPhysicalDeviceVulkan11Features");
+ }
+
+ if (( deviceMultiviewFeatures.multiview != vulkan11Features.multiview ||
+ deviceMultiviewFeatures.multiviewGeometryShader != vulkan11Features.multiviewGeometryShader ||
+ deviceMultiviewFeatures.multiviewTessellationShader != vulkan11Features.multiviewTessellationShader ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceMultiviewFeatures and VkPhysicalDeviceVulkan11Features");
+ }
+
+ if ( (protectedMemoryFeatures.protectedMemory != vulkan11Features.protectedMemory ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryFeatures and VkPhysicalDeviceVulkan11Features");
+ }
+
+ if ( (samplerYcbcrConversionFeatures.samplerYcbcrConversion != vulkan11Features.samplerYcbcrConversion ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerYcbcrConversionFeatures and VkPhysicalDeviceVulkan11Features");
+ }
+
+ if ( (shaderDrawParametersFeatures.shaderDrawParameters != vulkan11Features.shaderDrawParameters ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceShaderDrawParametersFeatures and VkPhysicalDeviceVulkan11Features");
+ }
+
+ if (( variablePointerFeatures.variablePointersStorageBuffer != vulkan11Features.variablePointersStorageBuffer ||
+ variablePointerFeatures.variablePointers != vulkan11Features.variablePointers))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceVariablePointersFeatures and VkPhysicalDeviceVulkan11Features");
+ }
+
+ if (( device8BitStorageFeatures.storageBuffer8BitAccess != vulkan12Features.storageBuffer8BitAccess ||
+ device8BitStorageFeatures.uniformAndStorageBuffer8BitAccess != vulkan12Features.uniformAndStorageBuffer8BitAccess ||
+ device8BitStorageFeatures.storagePushConstant8 != vulkan12Features.storagePushConstant8 ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDevice8BitStorageFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( shaderAtomicInt64Features.shaderBufferInt64Atomics != vulkan12Features.shaderBufferInt64Atomics ||
+ shaderAtomicInt64Features.shaderSharedInt64Atomics != vulkan12Features.shaderSharedInt64Atomics ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceShaderAtomicInt64Features and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( shaderFloat16Int8Features.shaderFloat16 != vulkan12Features.shaderFloat16 ||
+ shaderFloat16Int8Features.shaderInt8 != vulkan12Features.shaderInt8 ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceShaderFloat16Int8Features and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if ((vulkan12Features.descriptorIndexing) &&
+ ( descriptorIndexingFeatures.shaderInputAttachmentArrayDynamicIndexing != vulkan12Features.shaderInputAttachmentArrayDynamicIndexing ||
+ descriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing != vulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing ||
+ descriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing != vulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing ||
+ descriptorIndexingFeatures.shaderUniformBufferArrayNonUniformIndexing != vulkan12Features.shaderUniformBufferArrayNonUniformIndexing ||
+ descriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing != vulkan12Features.shaderSampledImageArrayNonUniformIndexing ||
+ descriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing != vulkan12Features.shaderStorageBufferArrayNonUniformIndexing ||
+ descriptorIndexingFeatures.shaderStorageImageArrayNonUniformIndexing != vulkan12Features.shaderStorageImageArrayNonUniformIndexing ||
+ descriptorIndexingFeatures.shaderInputAttachmentArrayNonUniformIndexing != vulkan12Features.shaderInputAttachmentArrayNonUniformIndexing ||
+ descriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing != vulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing ||
+ descriptorIndexingFeatures.shaderStorageTexelBufferArrayNonUniformIndexing != vulkan12Features.shaderStorageTexelBufferArrayNonUniformIndexing ||
+ descriptorIndexingFeatures.descriptorBindingUniformBufferUpdateAfterBind != vulkan12Features.descriptorBindingUniformBufferUpdateAfterBind ||
+ descriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind != vulkan12Features.descriptorBindingSampledImageUpdateAfterBind ||
+ descriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind != vulkan12Features.descriptorBindingStorageImageUpdateAfterBind ||
+ descriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind != vulkan12Features.descriptorBindingStorageBufferUpdateAfterBind ||
+ descriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind != vulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind ||
+ descriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind != vulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind ||
+ descriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending != vulkan12Features.descriptorBindingUpdateUnusedWhilePending ||
+ descriptorIndexingFeatures.descriptorBindingPartiallyBound != vulkan12Features.descriptorBindingPartiallyBound ||
+ descriptorIndexingFeatures.descriptorBindingVariableDescriptorCount != vulkan12Features.descriptorBindingVariableDescriptorCount ||
+ descriptorIndexingFeatures.runtimeDescriptorArray != vulkan12Features.runtimeDescriptorArray ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceDescriptorIndexingFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( scalarBlockLayoutFeatures.scalarBlockLayout != vulkan12Features.scalarBlockLayout ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceScalarBlockLayoutFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( imagelessFramebufferFeatures.imagelessFramebuffer != vulkan12Features.imagelessFramebuffer ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceImagelessFramebufferFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( uniformBufferStandardLayoutFeatures.uniformBufferStandardLayout != vulkan12Features.uniformBufferStandardLayout ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceUniformBufferStandardLayoutFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( shaderSubgroupExtendedTypesFeatures.shaderSubgroupExtendedTypes != vulkan12Features.shaderSubgroupExtendedTypes ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( separateDepthStencilLayoutsFeatures.separateDepthStencilLayouts != vulkan12Features.separateDepthStencilLayouts ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( hostQueryResetFeatures.hostQueryReset != vulkan12Features.hostQueryReset ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceHostQueryResetFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( timelineSemaphoreFeatures.timelineSemaphore != vulkan12Features.timelineSemaphore ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceTimelineSemaphoreFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( bufferDeviceAddressFeatures.bufferDeviceAddress != vulkan12Features.bufferDeviceAddress ||
+ bufferDeviceAddressFeatures.bufferDeviceAddressCaptureReplay != vulkan12Features.bufferDeviceAddressCaptureReplay ||
+ bufferDeviceAddressFeatures.bufferDeviceAddressMultiDevice != vulkan12Features.bufferDeviceAddressMultiDevice ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceBufferDeviceAddressFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+
+ if (( vulkanMemoryModelFeatures.vulkanMemoryModel != vulkan12Features.vulkanMemoryModel ||
+ vulkanMemoryModelFeatures.vulkanMemoryModelDeviceScope != vulkan12Features.vulkanMemoryModelDeviceScope ||
+ vulkanMemoryModelFeatures.vulkanMemoryModelAvailabilityVisibilityChains != vulkan12Features.vulkanMemoryModelAvailabilityVisibilityChains ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceVulkanMemoryModelFeatures and VkPhysicalDeviceVulkan12Features");
+ }
+ }
+
+ return tcu::TestStatus::pass("Vulkan 1.2 device features are consistent with extensions");
+}
+
+tcu::TestStatus devicePropertyExtensionsConsistencyVulkan12(Context& context)
+{
+ TestLog& log = context.getTestContext().getLog();
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ const CustomInstance instance (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
+ const InstanceDriver& vki = instance.getDriver();
+
+ if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+ TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+
+ VkPhysicalDeviceVulkan12Properties vulkan12Properties = initVulkanStructure();
+ VkPhysicalDeviceVulkan11Properties vulkan11Properties = initVulkanStructure(&vulkan12Properties);
+ VkPhysicalDeviceProperties2 extProperties = initVulkanStructure(&vulkan11Properties);
+
+ vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+
+ log << TestLog::Message << vulkan11Properties << TestLog::EndMessage;
+ log << TestLog::Message << vulkan12Properties << TestLog::EndMessage;
+
+ // Validate all fields initialized matching to extension structures
+ {
+ VkPhysicalDeviceIDProperties idProperties = initVulkanStructure();
+ VkPhysicalDeviceSubgroupProperties subgroupProperties = initVulkanStructure(&idProperties);
+ VkPhysicalDevicePointClippingProperties pointClippingProperties = initVulkanStructure(&subgroupProperties);
+ VkPhysicalDeviceMultiviewProperties multiviewProperties = initVulkanStructure(&pointClippingProperties);
+ VkPhysicalDeviceProtectedMemoryProperties protectedMemoryPropertiesKHR = initVulkanStructure(&multiviewProperties);
+ VkPhysicalDeviceMaintenance3Properties maintenance3Properties = initVulkanStructure(&protectedMemoryPropertiesKHR);
+ VkPhysicalDeviceDriverProperties driverProperties = initVulkanStructure(&maintenance3Properties);
+ VkPhysicalDeviceFloatControlsProperties floatControlsProperties = initVulkanStructure(&driverProperties);
+ VkPhysicalDeviceDescriptorIndexingProperties descriptorIndexingProperties = initVulkanStructure(&floatControlsProperties);
+ VkPhysicalDeviceDepthStencilResolveProperties depthStencilResolveProperties = initVulkanStructure(&descriptorIndexingProperties);
+ VkPhysicalDeviceSamplerFilterMinmaxProperties samplerFilterMinmaxProperties = initVulkanStructure(&depthStencilResolveProperties);
+ VkPhysicalDeviceTimelineSemaphoreProperties timelineSemaphoreProperties = initVulkanStructure(&samplerFilterMinmaxProperties);
+ extProperties = initVulkanStructure(&timelineSemaphoreProperties);
+
+ vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+
+ if ((deMemCmp(idProperties.deviceUUID, vulkan11Properties.deviceUUID, VK_UUID_SIZE) != 0) ||
+ (deMemCmp(idProperties.driverUUID, vulkan11Properties.driverUUID, VK_UUID_SIZE) != 0) ||
+ (idProperties.deviceLUIDValid != vulkan11Properties.deviceLUIDValid))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceIDProperties and VkPhysicalDeviceVulkan11Properties");
+ }
+ else if (idProperties.deviceLUIDValid)
+ {
+ // If deviceLUIDValid is VK_FALSE, the contents of deviceLUID and deviceNodeMask are undefined
+ // so thay can only be compared when deviceLUIDValid is VK_TRUE.
+ if ((deMemCmp(idProperties.deviceLUID, vulkan11Properties.deviceLUID, VK_UUID_SIZE) != 0) ||
+ (idProperties.deviceNodeMask != vulkan11Properties.deviceNodeMask))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceIDProperties and VkPhysicalDeviceVulkan11Properties");
+ }
+ }
+
+ if ((subgroupProperties.subgroupSize != vulkan11Properties.subgroupSize ||
+ subgroupProperties.supportedStages != vulkan11Properties.subgroupSupportedStages ||
+ subgroupProperties.supportedOperations != vulkan11Properties.subgroupSupportedOperations ||
+ subgroupProperties.quadOperationsInAllStages != vulkan11Properties.subgroupQuadOperationsInAllStages))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceSubgroupProperties and VkPhysicalDeviceVulkan11Properties");
+ }
+
+ if ((pointClippingProperties.pointClippingBehavior != vulkan11Properties.pointClippingBehavior))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDevicePointClippingProperties and VkPhysicalDeviceVulkan11Properties");
+ }
+
+ if ((multiviewProperties.maxMultiviewViewCount != vulkan11Properties.maxMultiviewViewCount ||
+ multiviewProperties.maxMultiviewInstanceIndex != vulkan11Properties.maxMultiviewInstanceIndex))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceMultiviewProperties and VkPhysicalDeviceVulkan11Properties");
+ }
+
+ if ((protectedMemoryPropertiesKHR.protectedNoFault != vulkan11Properties.protectedNoFault))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryProperties and VkPhysicalDeviceVulkan11Properties");
+ }
+
+ if ((maintenance3Properties.maxPerSetDescriptors != vulkan11Properties.maxPerSetDescriptors ||
+ maintenance3Properties.maxMemoryAllocationSize != vulkan11Properties.maxMemoryAllocationSize))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceMaintenance3Properties and VkPhysicalDeviceVulkan11Properties");
+ }
+
+ if ((driverProperties.driverID != vulkan12Properties.driverID ||
+ strncmp(driverProperties.driverName, vulkan12Properties.driverName, VK_MAX_DRIVER_NAME_SIZE) != 0 ||
+ strncmp(driverProperties.driverInfo, vulkan12Properties.driverInfo, VK_MAX_DRIVER_INFO_SIZE) != 0 ||
+ driverProperties.conformanceVersion.major != vulkan12Properties.conformanceVersion.major ||
+ driverProperties.conformanceVersion.minor != vulkan12Properties.conformanceVersion.minor ||
+ driverProperties.conformanceVersion.subminor != vulkan12Properties.conformanceVersion.subminor ||
+ driverProperties.conformanceVersion.patch != vulkan12Properties.conformanceVersion.patch))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceDriverProperties and VkPhysicalDeviceVulkan12Properties");
+ }
+
+ if ((floatControlsProperties.denormBehaviorIndependence != vulkan12Properties.denormBehaviorIndependence ||
+ floatControlsProperties.roundingModeIndependence != vulkan12Properties.roundingModeIndependence ||
+ floatControlsProperties.shaderSignedZeroInfNanPreserveFloat16 != vulkan12Properties.shaderSignedZeroInfNanPreserveFloat16 ||
+ floatControlsProperties.shaderSignedZeroInfNanPreserveFloat32 != vulkan12Properties.shaderSignedZeroInfNanPreserveFloat32 ||
+ floatControlsProperties.shaderSignedZeroInfNanPreserveFloat64 != vulkan12Properties.shaderSignedZeroInfNanPreserveFloat64 ||
+ floatControlsProperties.shaderDenormPreserveFloat16 != vulkan12Properties.shaderDenormPreserveFloat16 ||
+ floatControlsProperties.shaderDenormPreserveFloat32 != vulkan12Properties.shaderDenormPreserveFloat32 ||
+ floatControlsProperties.shaderDenormPreserveFloat64 != vulkan12Properties.shaderDenormPreserveFloat64 ||
+ floatControlsProperties.shaderDenormFlushToZeroFloat16 != vulkan12Properties.shaderDenormFlushToZeroFloat16 ||
+ floatControlsProperties.shaderDenormFlushToZeroFloat32 != vulkan12Properties.shaderDenormFlushToZeroFloat32 ||
+ floatControlsProperties.shaderDenormFlushToZeroFloat64 != vulkan12Properties.shaderDenormFlushToZeroFloat64 ||
+ floatControlsProperties.shaderRoundingModeRTEFloat16 != vulkan12Properties.shaderRoundingModeRTEFloat16 ||
+ floatControlsProperties.shaderRoundingModeRTEFloat32 != vulkan12Properties.shaderRoundingModeRTEFloat32 ||
+ floatControlsProperties.shaderRoundingModeRTEFloat64 != vulkan12Properties.shaderRoundingModeRTEFloat64 ||
+ floatControlsProperties.shaderRoundingModeRTZFloat16 != vulkan12Properties.shaderRoundingModeRTZFloat16 ||
+ floatControlsProperties.shaderRoundingModeRTZFloat32 != vulkan12Properties.shaderRoundingModeRTZFloat32 ||
+ floatControlsProperties.shaderRoundingModeRTZFloat64 != vulkan12Properties.shaderRoundingModeRTZFloat64 ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceFloatControlsProperties and VkPhysicalDeviceVulkan12Properties");
+ }
+
+ if ((descriptorIndexingProperties.maxUpdateAfterBindDescriptorsInAllPools != vulkan12Properties.maxUpdateAfterBindDescriptorsInAllPools ||
+ descriptorIndexingProperties.shaderUniformBufferArrayNonUniformIndexingNative != vulkan12Properties.shaderUniformBufferArrayNonUniformIndexingNative ||
+ descriptorIndexingProperties.shaderSampledImageArrayNonUniformIndexingNative != vulkan12Properties.shaderSampledImageArrayNonUniformIndexingNative ||
+ descriptorIndexingProperties.shaderStorageBufferArrayNonUniformIndexingNative != vulkan12Properties.shaderStorageBufferArrayNonUniformIndexingNative ||
+ descriptorIndexingProperties.shaderStorageImageArrayNonUniformIndexingNative != vulkan12Properties.shaderStorageImageArrayNonUniformIndexingNative ||
+ descriptorIndexingProperties.shaderInputAttachmentArrayNonUniformIndexingNative != vulkan12Properties.shaderInputAttachmentArrayNonUniformIndexingNative ||
+ descriptorIndexingProperties.robustBufferAccessUpdateAfterBind != vulkan12Properties.robustBufferAccessUpdateAfterBind ||
+ descriptorIndexingProperties.quadDivergentImplicitLod != vulkan12Properties.quadDivergentImplicitLod ||
+ descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindSamplers != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSamplers ||
+ descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindUniformBuffers != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers ||
+ descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindStorageBuffers != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers ||
+ descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindSampledImages != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSampledImages ||
+ descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindStorageImages != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageImages ||
+ descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindInputAttachments != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments ||
+ descriptorIndexingProperties.maxPerStageUpdateAfterBindResources != vulkan12Properties.maxPerStageUpdateAfterBindResources ||
+ descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindSamplers != vulkan12Properties.maxDescriptorSetUpdateAfterBindSamplers ||
+ descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindUniformBuffers != vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffers ||
+ descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic != vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ||
+ descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageBuffers != vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffers ||
+ descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic != vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ||
+ descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindSampledImages != vulkan12Properties.maxDescriptorSetUpdateAfterBindSampledImages ||
+ descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageImages != vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageImages ||
+ descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindInputAttachments != vulkan12Properties.maxDescriptorSetUpdateAfterBindInputAttachments ))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceDescriptorIndexingProperties and VkPhysicalDeviceVulkan12Properties");
+ }
+
+ if ((depthStencilResolveProperties.supportedDepthResolveModes != vulkan12Properties.supportedDepthResolveModes ||
+ depthStencilResolveProperties.supportedStencilResolveModes != vulkan12Properties.supportedStencilResolveModes ||
+ depthStencilResolveProperties.independentResolveNone != vulkan12Properties.independentResolveNone ||
+ depthStencilResolveProperties.independentResolve != vulkan12Properties.independentResolve))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceDepthStencilResolveProperties and VkPhysicalDeviceVulkan12Properties");
+ }
+
+ if ((samplerFilterMinmaxProperties.filterMinmaxSingleComponentFormats != vulkan12Properties.filterMinmaxSingleComponentFormats ||
+ samplerFilterMinmaxProperties.filterMinmaxImageComponentMapping != vulkan12Properties.filterMinmaxImageComponentMapping))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerFilterMinmaxProperties and VkPhysicalDeviceVulkan12Properties");
+ }
+
+ if ((timelineSemaphoreProperties.maxTimelineSemaphoreValueDifference != vulkan12Properties.maxTimelineSemaphoreValueDifference))
+ {
+ TCU_FAIL("Mismatch between VkPhysicalDeviceTimelineSemaphoreProperties and VkPhysicalDeviceVulkan12Properties");
+ }
+ }
+
+ return tcu::TestStatus::pass("Vulkan 1.2 device properties are consistent with extension properties");
+}
+
tcu::TestStatus imageFormatProperties2 (Context& context, const VkFormat format, const VkImageType imageType, const VkImageTiling tiling)
{
if (isYCbCrFormat(format))
// Instance extensions
{
- static const string mandatoryExtensions[] =
+ static const string mandatoryExtensions[] =
{
"VK_KHR_get_physical_device_properties2",
};
- const vector<VkExtensionProperties> extensions = enumerateInstanceExtensionProperties(context.getPlatformInterface(), DE_NULL);
for (const auto ext : mandatoryExtensions)
{
// Device extensions
{
- static const string mandatoryExtensions[] =
+ static const string mandatoryExtensions[] =
{
"VK_KHR_maintenance1",
};
- const vector<VkExtensionProperties> extensions = enumerateDeviceExtensionProperties(context.getInstanceInterface(), context.getPhysicalDevice(), DE_NULL);
for (const auto ext : mandatoryExtensions)
{
infoTests->addChild(extendedPropertiesTests.release());
}
+ {
+ de::MovePtr<tcu::TestCaseGroup> extendedPropertiesTests (new tcu::TestCaseGroup(testCtx, "vulkan1p2", "Vulkan 1.2 related tests"));
+
+ addFunctionCase(extendedPropertiesTests.get(), "features", "Extended Vulkan 1.2 Device Features", deviceFeaturesVulkan12);
+ addFunctionCase(extendedPropertiesTests.get(), "properties", "Extended Vulkan 1.2 Device Properties", devicePropertiesVulkan12);
+ addFunctionCase(extendedPropertiesTests.get(), "feature_extensions_consistency", "Vulkan 1.2 consistency between Features and Extensions", deviceFeatureExtensionsConsistencyVulkan12);
+ addFunctionCase(extendedPropertiesTests.get(), "property_extensions_consistency", "Vulkan 1.2 consistency between Properties and Extensions", devicePropertyExtensionsConsistencyVulkan12);
+ addFunctionCase(extendedPropertiesTests.get(), "feature_bits_influence", "Validate feature bits influence on feature activation", checkSupportFeatureBitInfluence, featureBitInfluenceOnDeviceCreate);
+
+ infoTests->addChild(extendedPropertiesTests.release());
+ }
+
+ {
+ de::MovePtr<tcu::TestCaseGroup> limitsValidationTests (new tcu::TestCaseGroup(testCtx, "vulkan1p2_limits_validation", "Vulkan 1.2 and core extensions limits validation"));
+
+ addFunctionCase(limitsValidationTests.get(), "general", "Vulkan 1.2 Limit validation", validateLimitsCheckSupport, validateLimits12);
+ addFunctionCase(limitsValidationTests.get(), "khr_push_descriptor", "VK_KHR_push_descriptor limit validation", checkSupportKhrPushDescriptor, validateLimitsKhrPushDescriptor);
+ addFunctionCase(limitsValidationTests.get(), "khr_multiview", "VK_KHR_multiview limit validation", checkSupportKhrMultiview, validateLimitsKhrMultiview);
+ addFunctionCase(limitsValidationTests.get(), "ext_discard_rectangles", "VK_EXT_discard_rectangles limit validation", checkSupportExtDiscardRectangles, validateLimitsExtDiscardRectangles);
+ addFunctionCase(limitsValidationTests.get(), "ext_sample_locations", "VK_EXT_sample_locations limit validation", checkSupportExtSampleLocations, validateLimitsExtSampleLocations);
+ addFunctionCase(limitsValidationTests.get(), "ext_external_memory_host", "VK_EXT_external_memory_host limit validation", checkSupportExtExternalMemoryHost, validateLimitsExtExternalMemoryHost);
+ addFunctionCase(limitsValidationTests.get(), "ext_blend_operation_advanced", "VK_EXT_blend_operation_advanced limit validation", checkSupportExtBlendOperationAdvanced, validateLimitsExtBlendOperationAdvanced);
+ addFunctionCase(limitsValidationTests.get(), "khr_maintenance_3", "VK_KHR_maintenance3 limit validation", checkSupportKhrMaintenance3, validateLimitsKhrMaintenance3);
+ addFunctionCase(limitsValidationTests.get(), "ext_conservative_rasterization", "VK_EXT_conservative_rasterization limit validation", checkSupportExtConservativeRasterization, validateLimitsExtConservativeRasterization);
+ addFunctionCase(limitsValidationTests.get(), "ext_descriptor_indexing", "VK_EXT_descriptor_indexing limit validation", checkSupportExtDescriptorIndexing, validateLimitsExtDescriptorIndexing);
+ addFunctionCase(limitsValidationTests.get(), "ext_inline_uniform_block", "VK_EXT_inline_uniform_block limit validation", checkSupportExtInlineUniformBlock, validateLimitsExtInlineUniformBlock);
+ addFunctionCase(limitsValidationTests.get(), "ext_vertex_attribute_divisor", "VK_EXT_vertex_attribute_divisor limit validation", checkSupportExtVertexAttributeDivisor, validateLimitsExtVertexAttributeDivisor);
+ addFunctionCase(limitsValidationTests.get(), "nv_mesh_shader", "VK_NV_mesh_shader limit validation", checkSupportNvMeshShader, validateLimitsNvMeshShader);
+ addFunctionCase(limitsValidationTests.get(), "ext_transform_feedback", "VK_EXT_transform_feedback limit validation", checkSupportExtTransformFeedback, validateLimitsExtTransformFeedback);
+ addFunctionCase(limitsValidationTests.get(), "fragment_density_map", "VK_EXT_fragment_density_map limit validation", checkSupportExtFragmentDensityMap, validateLimitsExtFragmentDensityMap);
+ addFunctionCase(limitsValidationTests.get(), "nv_ray_tracing", "VK_NV_ray_tracing limit validation", checkSupportNvRayTracing, validateLimitsNvRayTracing);
+ addFunctionCase(limitsValidationTests.get(), "timeline_semaphore", "VK_KHR_timeline_semaphore limit validation", checkSupportKhrTimelineSemaphore, validateLimitsKhrTimelineSemaphore);
+ addFunctionCase(limitsValidationTests.get(), "ext_line_rasterization", "VK_EXT_line_rasterization limit validation", checkSupportExtLineRasterization, validateLimitsExtLineRasterization);
+
+ infoTests->addChild(limitsValidationTests.release());
+ }
+
infoTests->addChild(createTestGroup(testCtx, "image_format_properties2", "VkGetPhysicalDeviceImageFormatProperties2() Tests", createImageFormatTests, imageFormatProperties2));
infoTests->addChild(createTestGroup(testCtx, "sparse_image_format_properties2", "VkGetPhysicalDeviceSparseImageFormatProperties2() Tests", createImageFormatTests, sparseImageFormatProperties2));
DE_NULL, // const deUint32* pCorrelatedViewMasks;
};
- return vk::createRenderPass2KHR(m_vkd, m_device, &renderPassCreateInfo, DE_NULL);
+ return vk::createRenderPass2(m_vkd, m_device, &renderPassCreateInfo, DE_NULL);
}
}
size_t refSizes[testCycles];
unsigned int order[testCycles];
bool success = true;
- const deBool isDedicatedAllocationSupported =
- m_context.isDeviceFunctionalitySupported("VK_KHR_dedicated_allocation");
- const deBool isYcbcrSupported =
- m_context.isDeviceFunctionalitySupported("VK_KHR_sampler_ycbcr_conversion");
+ const deBool isDedicatedAllocationSupported = m_context.isDeviceFunctionalitySupported("VK_KHR_dedicated_allocation");
+ const deBool isYcbcrSupported = m_context.isDeviceFunctionalitySupported("VK_KHR_sampler_ycbcr_conversion");
std::vector<int> optimalFormats;
std::vector<int> linearFormats;
std::vector<int> memoryTypes;
using namespace vk;
using namespace std;
+typedef de::MovePtr<Unique<VkBuffer> > VkBufferSp;
+typedef de::MovePtr<Allocation> AllocationSp;
+
static const deUint32 DIM = 8;
typedef enum
LAYOUT_SCALAR,
} Layout;
+typedef enum
+{
+ CONVERT_NONE = 0,
+ CONVERT_UTOPTR,
+ CONVERT_UVEC2,
+} Convert;
+
struct CaseDef
{
deUint32 set;
deUint32 depth;
Base base;
Stage stage;
- bool convertUToPtr;
+ Convert convertUToPtr;
bool storeInLocal;
BufType bufType;
Layout layout;
void BufferAddressTestCase::checkSupport (Context& context) const
{
- if (!context.getBufferDeviceAddressFeatures().bufferDeviceAddress)
+ if (!context.isBufferDeviceAddressSupported())
TCU_THROW(NotSupportedError, "Physical storage buffer pointers not supported");
if (m_data.stage == STAGE_VERTEX && !context.getDeviceFeatures().vertexPipelineStoresAndAtomics)
if (m_data.set >= context.getDeviceProperties().limits.maxBoundDescriptorSets)
TCU_THROW(NotSupportedError, "descriptor set number not supported");
- if (m_data.convertUToPtr == VK_TRUE && !context.getDeviceFeatures().shaderInt64)
- TCU_THROW(NotSupportedError, "64-bit integers in shader not supported");
-
- if (m_data.bufType == BT_REPLAY &&
- !context.getBufferDeviceAddressFeatures().bufferDeviceAddressCaptureReplay)
+ bool isBufferDeviceAddressWithCaptureReplaySupported =
+ (context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address") && context.getBufferDeviceAddressFeatures().bufferDeviceAddressCaptureReplay) ||
+ (context.isDeviceFunctionalitySupported("VK_EXT_buffer_device_address") && context.getBufferDeviceAddressFeaturesEXT().bufferDeviceAddressCaptureReplay);
+ if (m_data.bufType == BT_REPLAY && !isBufferDeviceAddressWithCaptureReplaySupported)
TCU_THROW(NotSupportedError, "Capture/replay of physical storage buffer pointers not supported");
if (m_data.layout == LAYOUT_SCALAR && !context.getScalarBlockLayoutFeatures().scalarBlockLayout)
TCU_THROW(NotSupportedError, "Ray tracing not supported");
}
#endif
+
+ if (m_data.convertUToPtr == CONVERT_UTOPTR && !context.getDeviceFeatures().shaderInt64)
+ TCU_THROW(NotSupportedError, "Int64 not supported");
+ if (m_data.convertUToPtr == CONVERT_UVEC2 && !context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address"))
+ TCU_THROW(NotSupportedError, "VK_KHR_buffer_device_address not supported");
}
void BufferAddressTestCase::checkBuffer (std::stringstream& checks, deUint32 bufNum, deUint32 curDepth, const std::string &prefix) const
{
string newPrefix = prefix;
- if (curDepth > 0 && m_data.convertUToPtr)
- newPrefix = "T1(uint64_t(T1(" + newPrefix + ")))";
+ if (curDepth > 0)
+ {
+ if (m_data.convertUToPtr == CONVERT_UTOPTR)
+ newPrefix = "T1(uint64_t(T1(" + newPrefix + ")))";
+ else if (m_data.convertUToPtr == CONVERT_UVEC2)
+ newPrefix = "T1(uvec2(T1(" + newPrefix + ")))";
+ }
if (m_data.storeInLocal && curDepth != 0)
{
decls << "layout(r32ui, set = " << m_data.set << ", binding = 0) uniform uimage2D image0_0;\n";
decls << "layout(buffer_reference) " << memberStorage << " T1;\n";
- std::string refType = m_data.convertUToPtr ? "uint64_t" : "T1";
+ std::string refType = m_data.convertUToPtr == CONVERT_UTOPTR ? "uint64_t" : m_data.convertUToPtr == CONVERT_UVEC2 ? "uvec2" : "T1";
std::string layout = m_data.layout == LAYOUT_SCALAR ? "scalar" : "std140";
decls <<
"layout(set = " << m_data.set << ", binding = 1, " << layout << ") " << baseStorage << " T2 {\n"
"#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
"#extension GL_EXT_buffer_reference : enable\n"
"#extension GL_EXT_scalar_block_layout : enable\n"
+ "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
<< pushdecl.str()
<< decls.str() <<
"layout(local_size_x = 1, local_size_y = 1) in;\n"
"#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
"#extension GL_EXT_buffer_reference : enable\n"
"#extension GL_EXT_scalar_block_layout : enable\n"
+ "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
"#extension GL_NV_ray_tracing : require\n"
<< pushdecl.str()
<< decls.str() <<
"#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
"#extension GL_EXT_buffer_reference : enable\n"
"#extension GL_EXT_scalar_block_layout : enable\n"
+ "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
<< pushdecl.str()
<< decls.str() <<
"void main()\n"
"#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
"#extension GL_EXT_buffer_reference : enable\n"
"#extension GL_EXT_scalar_block_layout : enable\n"
+ "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
<< pushdecl.str()
<< decls.str() <<
"void main()\n"
tcu::TestStatus BufferAddressTestInstance::iterate (void)
{
+ const InstanceInterface&vki = m_context.getInstanceInterface();
const DeviceInterface& vk = m_context.getDeviceInterface();
+ const VkPhysicalDevice& physDevice = m_context.getPhysicalDevice();
const VkDevice device = m_context.getDevice();
Allocator& allocator = m_context.getDefaultAllocator();
+ const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
VkFlags allShaderStages = VK_SHADER_STAGE_COMPUTE_BIT | VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT;
numBindings = numBindings*3+1;
}
- VkBufferDeviceAddressCreateInfoEXT addressCreateInfo =
+ VkBufferDeviceAddressCreateInfoEXT addressCreateInfoEXT =
{
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT, // VkStructureType sType;
DE_NULL, // const void* pNext;
- 0x000000000ULL, // VkDeviceSize deviceAddress
+ 0x000000000ULL, // VkDeviceSize deviceAddress
+ };
+
+ VkBufferOpaqueCaptureAddressCreateInfo bufferOpaqueCaptureAddressCreateInfo =
+ {
+ VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ 0x000000000ULL, // VkDeviceSize opaqueCaptureAddress
};
std::vector<deUint8 *> cpuAddrs(numBindings);
std::vector<VkDeviceAddress> gpuAddrs(numBindings);
+ std::vector<deUint64> opaqueBufferAddrs(numBindings);
+ std::vector<deUint64> opaqueMemoryAddrs(numBindings);
- VkBufferDeviceAddressInfoEXT info =
+ VkBufferDeviceAddressInfo bufferDeviceAddressInfo =
{
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT, // VkStructureType sType;
- DE_NULL, // const void* pNext;
- 0, // VkBuffer buffer
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ 0, // VkBuffer buffer
+ };
+
+ VkDeviceMemoryOpaqueCaptureAddressInfo deviceMemoryOpaqueCaptureAddressInfo =
+ {
+ VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ 0, // VkDeviceMemory memory;
};
bool multiBuffer = m_data.bufType != BT_SINGLE;
deUint32 numBuffers = multiBuffer ? numBindings : 1;
VkDeviceSize bufferSize = multiBuffer ? align : (align*numBindings);
- vector<de::SharedPtr<BufferWithMemory> > buffers(numBuffers);
- for (deUint32 i = 0; i < numBuffers; ++i)
- {
- buffers[i] = de::SharedPtr<BufferWithMemory>(new BufferWithMemory(
- vk, device, allocator, makeBufferCreateInfo(DE_NULL, bufferSize,
+ vector<VkBufferSp> buffers(numBuffers);
+ vector<AllocationSp> allocations(numBuffers);
+
+ VkBufferCreateInfo bufferCreateInfo = makeBufferCreateInfo(DE_NULL, bufferSize,
VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT |
- VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT,
- m_data.bufType == BT_REPLAY ? VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT : 0),
- MemoryRequirement::HostVisible));
+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+ m_data.bufType == BT_REPLAY ? VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT : 0);
+
+ // VkMemoryAllocateFlags to be filled out later
+ VkMemoryAllocateFlagsInfo allocFlagsInfo =
+ {
+ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, // VkStructureType sType
+ DE_NULL, // const void* pNext
+ 0, // VkMemoryAllocateFlags flags
+ 0, // uint32_t deviceMask
+ };
+
+ VkMemoryOpaqueCaptureAddressAllocateInfo memoryOpaqueCaptureAddressAllocateInfo =
+ {
+ VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ 0, // uint64_t opaqueCaptureAddress;
+ };
+
+ if (useKHR)
+ allocFlagsInfo.flags |= VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT;
+
+ if (useKHR && m_data.bufType == BT_REPLAY)
+ {
+ allocFlagsInfo.flags |= VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT;
+ allocFlagsInfo.pNext = &memoryOpaqueCaptureAddressAllocateInfo;
+ }
+
+ for (deUint32 i = 0; i < numBuffers; ++i)
+ {
+ buffers[i] = VkBufferSp(new Unique<VkBuffer>(createBuffer(vk, device, &bufferCreateInfo)));
+
+ // query opaque capture address before binding memory
+ if (useKHR) {
+ bufferDeviceAddressInfo.buffer = **buffers[i];
+ opaqueBufferAddrs[i] = vk.getBufferOpaqueCaptureAddress(device, &bufferDeviceAddressInfo);
+ }
+
+ allocations[i] = AllocationSp(allocateExtended(vki, vk, physDevice, device, getBufferMemoryRequirements(vk, device, **buffers[i]), MemoryRequirement::HostVisible, &allocFlagsInfo));
+
+ if (useKHR) {
+ deviceMemoryOpaqueCaptureAddressInfo.memory = allocations[i]->getMemory();
+ opaqueMemoryAddrs[i] = vk.getDeviceMemoryOpaqueCaptureAddress(device, &deviceMemoryOpaqueCaptureAddressInfo);
+ }
+
+ VK_CHECK(vk.bindBufferMemory(device, **buffers[i], allocations[i]->getMemory(), 0));
}
if (m_data.bufType == BT_REPLAY)
{
for (deUint32 i = 0; i < numBuffers; ++i)
{
- info.buffer = **buffers[i];
- gpuAddrs[i] = vk.getBufferDeviceAddressEXT(device, &info);
+ bufferDeviceAddressInfo.buffer = **buffers[i];
+ if (useKHR)
+ gpuAddrs[i] = vk.getBufferDeviceAddress(device, &bufferDeviceAddressInfo);
+ else
+ gpuAddrs[i] = vk.getBufferDeviceAddressEXT(device, &bufferDeviceAddressInfo);
}
buffers.clear();
buffers.resize(numBuffers);
+ allocations.clear();
+ allocations.resize(numBuffers);
+
+ bufferCreateInfo.pNext = useKHR ? (void *)&bufferOpaqueCaptureAddressCreateInfo : (void *)&addressCreateInfoEXT;
+
for (deInt32 i = numBuffers-1; i >= 0; --i)
{
- addressCreateInfo.deviceAddress = gpuAddrs[i];
- buffers[i] = de::SharedPtr<BufferWithMemory>(new BufferWithMemory(
- vk, device, allocator, makeBufferCreateInfo(&addressCreateInfo, bufferSize,
- VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
- VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT |
- VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT,
- m_data.bufType == BT_REPLAY ? VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT : 0),
- MemoryRequirement::HostVisible));
- info.buffer = **buffers[i];
- VkDeviceSize newAddr = vk.getBufferDeviceAddressEXT(device, &info);
+ addressCreateInfoEXT.deviceAddress = gpuAddrs[i];
+ bufferOpaqueCaptureAddressCreateInfo.opaqueCaptureAddress = opaqueBufferAddrs[i];
+ memoryOpaqueCaptureAddressAllocateInfo.opaqueCaptureAddress = opaqueMemoryAddrs[i];
+
+ buffers[i] = VkBufferSp(new Unique<VkBuffer>(createBuffer(vk, device, &bufferCreateInfo)));
+ allocations[i] = AllocationSp(allocateExtended(vki, vk, physDevice, device, getBufferMemoryRequirements(vk, device, **buffers[i]), MemoryRequirement::HostVisible, &allocFlagsInfo));
+ VK_CHECK(vk.bindBufferMemory(device, **buffers[i], allocations[i]->getMemory(), 0));
+
+ bufferDeviceAddressInfo.buffer = **buffers[i];
+ VkDeviceSize newAddr;
+ if (useKHR)
+ newAddr = vk.getBufferDeviceAddress(device, &bufferDeviceAddressInfo);
+ else
+ newAddr = vk.getBufferDeviceAddressEXT(device, &bufferDeviceAddressInfo);
if (newAddr != gpuAddrs[i])
return tcu::TestStatus(QP_TEST_RESULT_FAIL, "address mismatch");
}
// Create a buffer and compute the address for each "align" bytes.
for (deUint32 i = 0; i < numBindings; ++i)
{
- info.buffer = **buffers[multiBuffer ? i : 0];
+ bufferDeviceAddressInfo.buffer = **buffers[multiBuffer ? i : 0];
- gpuAddrs[i] = vk.getBufferDeviceAddressEXT(device, &info);
- cpuAddrs[i] = (deUint8 *)buffers[multiBuffer ? i : 0]->getAllocation().getHostPtr();
+ if (useKHR)
+ gpuAddrs[i] = vk.getBufferDeviceAddress(device, &bufferDeviceAddressInfo);
+ else
+ gpuAddrs[i] = vk.getBufferDeviceAddressEXT(device, &bufferDeviceAddressInfo);
+ cpuAddrs[i] = (deUint8 *)allocations[multiBuffer ? i : 0]->getHostPtr();
if (!multiBuffer)
{
cpuAddrs[i] = cpuAddrs[i] + align*i;
fillBuffer(cpuAddrs, gpuAddrs, 0, 0);
for (deUint32 i = 0; i < numBuffers; ++i)
- flushAlloc(vk, device, buffers[i]->getAllocation());
+ flushAlloc(vk, device, *allocations[i]);
const VkQueue queue = m_context.getUniversalQueue();
Move<VkCommandPool> cmdPool = createCommandPool(vk, device, 0, m_context.getUniversalQueueFamilyIndex());
TestGroupCase cvtCases[] =
{
- { 0, "load", "load reference" },
- { 1, "convert", "load and convert reference" },
+ { CONVERT_NONE, "load", "load reference" },
+ { CONVERT_UTOPTR, "convert", "load and convert reference" },
+ { CONVERT_UVEC2, "convertuvec2", "load and convert reference to uvec2" },
};
TestGroupCase storeCases[] =
depthCases[depthNdx].count, // deUint32 depth;
(Base)baseCases[baseNdx].count, // Base base;
(Stage)stageCases[stageNdx].count, // Stage stage;
- !!cvtCases[cvtNdx].count, // bool convertUToPtr;
+ (Convert)cvtCases[cvtNdx].count, // Convert convertUToPtr;
!!storeCases[storeNdx].count, // bool storeInLocal;
(BufType)btCases[btNdx].count, // BufType bufType;
(Layout)layoutCases[layoutNdx].count, // Layout layout;
static void getNeededFeatures(const Context& context,
VkPhysicalDeviceFeatures2& features,
VkPhysicalDeviceInlineUniformBlockFeaturesEXT& inlineUniformFeatures,
- VkPhysicalDeviceDescriptorIndexingFeaturesEXT& indexingFeatures)
+ VkPhysicalDeviceDescriptorIndexingFeatures& indexingFeatures)
{
- deMemset(&inlineUniformFeatures, 0, sizeof(inlineUniformFeatures));
- inlineUniformFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT;
+ inlineUniformFeatures = initVulkanStructure();
+ indexingFeatures = initVulkanStructure();
+ features = initVulkanStructure();
- deMemset(&indexingFeatures, 0, sizeof(indexingFeatures));
- indexingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT;
-
- deMemset(&features, 0, sizeof(features));
- features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
-
- bool descriptorIndexing = context.isDeviceFunctionalitySupported("VK_EXT_descriptor_indexing");
- bool uniformBlock = context.isDeviceFunctionalitySupported("VK_EXT_inline_uniform_block");
- if (descriptorIndexing && uniformBlock)
- {
- indexingFeatures.pNext = &inlineUniformFeatures;
- features.pNext = &indexingFeatures;
- }
- else if (descriptorIndexing)
- {
- features.pNext = &indexingFeatures;
- }
- else if (uniformBlock)
- {
- features.pNext = &inlineUniformFeatures;
- }
+ void** nextPtr = &features.pNext;
+ if (context.isDeviceFunctionalitySupported("VK_EXT_descriptor_indexing"))
+ addToChainVulkanStructure(&nextPtr, indexingFeatures);
+ if (context.isDeviceFunctionalitySupported("VK_EXT_inline_uniform_block"))
+ addToChainVulkanStructure(&nextPtr, inlineUniformFeatures);
context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &features);
}
// These three are indexed by [set][binding]
vector<vector<VkDescriptorSetLayoutBinding> > layoutBindings;
- vector<vector<VkDescriptorBindingFlagsEXT> > layoutBindingFlags;
+ vector<vector<VkDescriptorBindingFlags> > layoutBindingFlags;
vector<vector<deUint32> > arraySizes;
// size of the variable descriptor (last) binding in each set
vector<deUint32> variableDescriptorSizes;
for (deUint32 s = 0; s < caseDef.numDescriptorSets; ++s)
{
vector<VkDescriptorSetLayoutBinding> &bindings = randomLayout.layoutBindings[s];
- vector<VkDescriptorBindingFlagsEXT> &bindingsFlags = randomLayout.layoutBindingFlags[s];
+ vector<VkDescriptorBindingFlags> &bindingsFlags = randomLayout.layoutBindingFlags[s];
vector<deUint32> &arraySizes = randomLayout.arraySizes[s];
int numBindings = randRange(&rnd, minBindings, maxBindings);
}
bindings = vector<VkDescriptorSetLayoutBinding>(numBindings);
- bindingsFlags = vector<VkDescriptorBindingFlagsEXT>(numBindings);
+ bindingsFlags = vector<VkDescriptorBindingFlags>(numBindings);
arraySizes = vector<deUint32>(numBindings);
}
for (deUint32 s = 0; s < caseDef.numDescriptorSets; ++s)
{
vector<VkDescriptorSetLayoutBinding> &bindings = randomLayout.layoutBindings[s];
- vector<VkDescriptorBindingFlagsEXT> &bindingsFlags = randomLayout.layoutBindingFlags[s];
+ vector<VkDescriptorBindingFlags> &bindingsFlags = randomLayout.layoutBindingFlags[s];
vector<deUint32> &variableDescriptorSizes = randomLayout.variableDescriptorSizes;
// Choose a variable descriptor count size. If the feature is not supported, we'll just
randRange(&rnd, 1,4) == 1) // 1 in 4 chance
{
- bindingsFlags[bindings.size()-1] |= VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT;
+ bindingsFlags[bindings.size()-1] |= VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT;
variableDescriptorSizes[s] = randRange(&rnd, 0,bindings[bindings.size()-1].descriptorCount);
if (bindings[bindings.size()-1].descriptorType == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)
{
for (deUint32 s = 0; s < m_data.numDescriptorSets; ++s)
{
vector<VkDescriptorSetLayoutBinding> &bindings = randomLayout.layoutBindings[s];
- vector<VkDescriptorBindingFlagsEXT> bindingsFlags = randomLayout.layoutBindingFlags[s];
+ vector<VkDescriptorBindingFlags> bindingsFlags = randomLayout.layoutBindingFlags[s];
vector<deUint32> &arraySizes = randomLayout.arraySizes[s];
vector<deUint32> &variableDescriptorSizes = randomLayout.variableDescriptorSizes;
// Don't access descriptors past the end of the allocated range for
// variable descriptor count
if (b == bindings.size() - 1 &&
- (bindingsFlags[b] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT))
+ (bindingsFlags[b] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT))
{
if (binding.descriptorType == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)
{
RandomLayout randomLayout(m_data.numDescriptorSets);
generateRandomLayout(randomLayout, m_data);
-
VkPhysicalDeviceProperties2 properties;
deMemset(&properties, 0, sizeof(properties));
properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
VkPhysicalDeviceDescriptorIndexingFeaturesEXT indexingFeatures;
getNeededFeatures(m_context, features, inlineUniformFeatures, indexingFeatures);
- m_context.getInstanceInterface().getPhysicalDeviceFeatures2(m_context.getPhysicalDevice(), &features);
-
deRandom rnd;
deRandom_init(&rnd, m_data.seed);
for (deUint32 s = 0; s < m_data.numDescriptorSets; ++s)
{
vector<VkDescriptorSetLayoutBinding> &bindings = randomLayout.layoutBindings[s];
- vector<VkDescriptorBindingFlagsEXT> &bindingsFlags = randomLayout.layoutBindingFlags[s];
+ vector<VkDescriptorBindingFlags> &bindingsFlags = randomLayout.layoutBindingFlags[s];
vector<deUint32> &variableDescriptorSizes = randomLayout.variableDescriptorSizes;
VkDescriptorPoolCreateFlags poolCreateFlags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT;
(binding.descriptorType != VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC) &&
(binding.descriptorType != VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC))
{
- bindingsFlags[b] |= VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT;
+ bindingsFlags[b] |= VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT;
layoutCreateFlags |= VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT;
poolCreateFlags |= VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT;
}
if (!indexingFeatures.descriptorBindingVariableDescriptorCount)
{
- bindingsFlags[b] &= ~VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT;
+ bindingsFlags[b] &= ~VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT;
}
}
// Create a layout and allocate a descriptor set for it.
- const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT bindingFlagsInfo =
+ const VkDescriptorSetLayoutBindingFlagsCreateInfo bindingFlagsInfo =
{
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT, // VkStructureType sType;
DE_NULL, // const void* pNext;
(deUint32)bindings.size(), // uint32_t bindingCount;
- bindings.empty() ? DE_NULL : bindingsFlags.data(), // const VkDescriptorBindingFlagsEXT* pBindingFlags;
+ bindings.empty() ? DE_NULL : bindingsFlags.data(), // const VkDescriptorBindingFlags* pBindingFlags;
};
const VkDescriptorSetLayoutCreateInfo setLayoutCreateInfo =
descriptorPools[s] = poolBuilder.build(vk, device, poolCreateFlags, 1u,
m_data.maxInlineUniformBlocks ? &inlineUniformBlockPoolCreateInfo : DE_NULL);
- VkDescriptorSetVariableDescriptorCountAllocateInfoEXT variableCountInfo =
+ VkDescriptorSetVariableDescriptorCountAllocateInfo variableCountInfo =
{
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
0, // uint32_t descriptorSetCount;
DE_NULL, // const uint32_t* pDescriptorCounts;
const void *pNext = DE_NULL;
if (bindings.size() > 0 &&
- bindingsFlags[bindings.size()-1] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT)
+ bindingsFlags[bindings.size()-1] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT)
{
variableCountInfo.descriptorSetCount = 1;
variableCountInfo.pDescriptorCounts = &variableDescriptorSizes[s];
for (deUint32 s = 0; s < m_data.numDescriptorSets; ++s)
{
vector<VkDescriptorSetLayoutBinding> &bindings = randomLayout.layoutBindings[s];
- vector<VkDescriptorBindingFlagsEXT> &bindingsFlags = randomLayout.layoutBindingFlags[s];
+ vector<VkDescriptorBindingFlags> &bindingsFlags = randomLayout.layoutBindingFlags[s];
vector<deUint32> &arraySizes = randomLayout.arraySizes[s];
vector<deUint32> &variableDescriptorSizes = randomLayout.variableDescriptorSizes;
// Construct the declaration for the binding
if (binding.descriptorCount > 0)
{
- bool updateAfterBind = !!(bindingsFlags[b] & VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT);
+ bool updateAfterBind = !!(bindingsFlags[b] & VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT);
for (deUint32 ai = 0; ai < de::max(1u, arraySizes[b]); ++ai, descriptor += descriptorIncrement)
{
// Don't access descriptors past the end of the allocated range for
// variable descriptor count
if (b == bindings.size() - 1 &&
- (bindingsFlags[b] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT))
+ (bindingsFlags[b] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT))
{
if (binding.descriptorType == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)
{
if (binding.descriptorType == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)
{
- VkWriteDescriptorSetInlineUniformBlockEXT inlineUniformBlock =
+ VkWriteDescriptorSetInlineUniformBlockEXT iuBlock =
{
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT, // VkStructureType sType;
DE_NULL, // const void* pNext;
&descriptorNumber[descriptor], // const void* pData;
};
- inlineInfoVec[vecIndex] = inlineUniformBlock;
+ inlineInfoVec[vecIndex] = iuBlock;
w.dstArrayElement = ai*16 + 16; // add 16 to skip "ivec4 dummy"
w.pNext = &inlineInfoVec[vecIndex];
w.descriptorCount = sizeof(deUint32);
if (!hasViewOffset)
return 0u;
- if (!context.getTexelBufferAlignmentFeatures().texelBufferAlignment)
+ if (!context.getTexelBufferAlignmentFeaturesEXT().texelBufferAlignment)
return (deUint32)context.getDeviceProperties().limits.minTexelBufferOffsetAlignment;
vk::VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT alignmentProperties;
//! Primitives partially outside the clip volume, but depth clipped with explicit depth clip control
tcu::TestStatus testPrimitivesDepthClip (Context& context, const VkPrimitiveTopology topology)
{
- if (!context.getDepthClipEnableFeatures().depthClipEnable)
+ if (!context.getDepthClipEnableFeaturesEXT().depthClipEnable)
throw tcu::NotSupportedError("VK_EXT_depth_clip_enable not supported");
std::vector<VulkanShader> shaders;
TCU_THROW(NotSupportedError, "variable pointers not supported");
}
- if (m_data.storageClass == SC_PHYSICAL_STORAGE_BUFFER &&
- !context.getBufferDeviceAddressFeatures().bufferDeviceAddress)
+ if (m_data.storageClass == SC_PHYSICAL_STORAGE_BUFFER && !context.isBufferDeviceAddressSupported())
{
TCU_THROW(NotSupportedError, "buffer device address not supported");
}
const DeviceInterface& vk = m_context.getDeviceInterface();
const VkDevice device = m_context.getDevice();
Allocator& allocator = m_context.getDefaultAllocator();
+ MemoryRequirement memoryDeviceAddress = m_data.storageClass == SC_PHYSICAL_STORAGE_BUFFER &&
+ m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address") ? MemoryRequirement::DeviceAddress : MemoryRequirement::Any;
qpTestResult finalres = QP_TEST_RESULT_PASS;
tcu::TestLog& log = m_context.getTestContext().getLog();
{
buffers[i] = de::MovePtr<BufferWithMemory>(new BufferWithMemory(
vk, device, allocator, makeBufferCreateInfo(bufferSizes[i], VK_BUFFER_USAGE_STORAGE_BUFFER_BIT|VK_BUFFER_USAGE_TRANSFER_DST_BIT|VK_BUFFER_USAGE_TRANSFER_SRC_BIT|VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT),
- MemoryRequirement::HostVisible | MemoryRequirement::Cached | MemoryRequirement::Coherent));
+ MemoryRequirement::HostVisible | MemoryRequirement::Cached | MemoryRequirement::Coherent | memoryDeviceAddress));
}
catch (const tcu::NotSupportedError&)
{
buffers[i] = de::MovePtr<BufferWithMemory>(new BufferWithMemory(
vk, device, allocator, makeBufferCreateInfo(bufferSizes[i], VK_BUFFER_USAGE_STORAGE_BUFFER_BIT|VK_BUFFER_USAGE_TRANSFER_DST_BIT|VK_BUFFER_USAGE_TRANSFER_SRC_BIT|VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT),
- MemoryRequirement::HostVisible));
+ MemoryRequirement::HostVisible | memoryDeviceAddress));
}
bufferDescriptors[i] = makeDescriptorBufferInfo(**buffers[i], 0, bufferSizes[i]);
vk::DescriptorSetUpdateBuilder setUpdateBuilder;
if (m_data.storageClass == SC_PHYSICAL_STORAGE_BUFFER)
{
- VkBufferDeviceAddressInfoEXT info =
+ const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
+
+ VkBufferDeviceAddressInfo info =
{
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
0, // VkBuffer buffer
};
for (deUint32 i = 0; i < 4; ++i)
{
info.buffer = **buffers[i];
- VkDeviceAddress addr = vk.getBufferDeviceAddressEXT(device, &info);
+ VkDeviceAddress addr;
+ if (useKHR)
+ addr = vk.getBufferDeviceAddress(device, &info);
+ else
+ addr = vk.getBufferDeviceAddressEXT(device, &info);
addrsInMemory[i] = addr;
}
setUpdateBuilder.writeSingle(*descriptorSet, vk::DescriptorSetUpdateBuilder::Location::binding(4),
}
case DRAW_COMMAND_TYPE_DRAW_INDIRECT_COUNT:
{
- m_vk.cmdDrawIndirectCountKHR( cmdBuffer,
- m_indirectBuffer->object(), indirectOffset,
- m_indirectCountBuffer->object(), 0, 3,
- sizeof(vk::VkDrawIndirectCommand));
+ m_vk.cmdDrawIndirectCount( cmdBuffer,
+ m_indirectBuffer->object(), indirectOffset,
+ m_indirectCountBuffer->object(), 0, 3,
+ sizeof(vk::VkDrawIndirectCommand));
break;
}
case DRAW_COMMAND_TYPE_DRAW_INDEXED_INDIRECT_COUNT:
{
- m_vk.cmdDrawIndexedIndirectCountKHR(cmdBuffer,
- m_indirectBuffer->object(), indexedIndirectOffset,
- m_indirectCountBuffer->object(), 0, 3,
- sizeof(vk::VkDrawIndexedIndirectCommand));
+ m_vk.cmdDrawIndexedIndirectCount(cmdBuffer,
+ m_indirectBuffer->object(), indexedIndirectOffset,
+ m_indirectCountBuffer->object(), 0, 3,
+ sizeof(vk::VkDrawIndexedIndirectCommand));
break;
}
default: DE_ASSERT(false);
if (data.conditionInherited)
{
- const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& conditionalRenderingFeatures = context.getConditionalRenderingFeatures();
+ const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& conditionalRenderingFeatures = context.getConditionalRenderingFeaturesEXT();
if (!conditionalRenderingFeatures.inheritedConditionalRendering)
{
TCU_THROW(NotSupportedError, "Device does not support inherited conditional rendering");
}
};
- const VkDescriptorBindingFlagsEXT bindingFlagUpdateAfterBind =
- m_testParams.updateAfterBind ? VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT : 0;
+ const VkDescriptorBindingFlags bindingFlagUpdateAfterBind =
+ m_testParams.updateAfterBind ? VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT : 0;
- const VkDescriptorBindingFlagsEXT bindingFlagsExt[] =
+ const VkDescriptorBindingFlags bindingFlags[] =
{
- VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT | bindingFlagUpdateAfterBind,
- VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT | bindingFlagUpdateAfterBind
+ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT | bindingFlagUpdateAfterBind,
+ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT | bindingFlagUpdateAfterBind
};
- const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT bindingCreateInfoExt =
+ const VkDescriptorSetLayoutBindingFlagsCreateInfo bindingCreateInfo =
{
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
DE_NULL,
optional ? 2u : 1u, // bindingCount
- bindingFlagsExt, // pBindingFlags
+ bindingFlags, // pBindingFlags
};
const VkDescriptorSetLayoutCreateFlags layoutCreateFlags =
- m_testParams.updateAfterBind ? VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT : 0;
+ m_testParams.updateAfterBind ? VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT : 0;
const VkDescriptorSetLayoutCreateInfo layoutCreateInfo =
{
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
- &bindingCreateInfoExt, // pNext
+ &bindingCreateInfo, // pNext
layoutCreateFlags, // flags
optional ? 2u : 1u, // bindingCount
bindings, // pBindings
Move<VkDescriptorPool> CommonDescriptorInstance::createDescriptorPool (deUint32 descriptorCount) const
{
- const VkDescriptorPoolCreateFlags pcf = m_testParams.updateAfterBind ? VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT : 0;
+ const VkDescriptorPoolCreateFlags pcf = m_testParams.updateAfterBind ? VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT : 0;
DescriptorPoolBuilder builder;
class DeviceProperties
{
- VkPhysicalDeviceDescriptorIndexingFeaturesEXT m_descriptorIndexingFeatures;
+ VkPhysicalDeviceDescriptorIndexingFeatures m_descriptorIndexingFeatures;
VkPhysicalDeviceFeatures2 m_features2;
- VkPhysicalDeviceDescriptorIndexingPropertiesEXT m_descriptorIndexingProperties;
+ VkPhysicalDeviceDescriptorIndexingProperties m_descriptorIndexingProperties;
VkPhysicalDeviceProperties2 m_properties2;
public:
DeviceProperties (const DeviceProperties& src);
DeviceProperties (const vkt::Context& testContext);
- inline const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& descriptorIndexingFeatures (void) const;
+ inline const VkPhysicalDeviceDescriptorIndexingFeatures& descriptorIndexingFeatures (void) const;
inline const VkPhysicalDeviceProperties& physicalDeviceProperties (void) const;
- inline const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& descriptorIndexingProperties(void) const;
+ inline const VkPhysicalDeviceDescriptorIndexingProperties& descriptorIndexingProperties(void) const;
inline const VkPhysicalDeviceFeatures& physicalDeviceFeatures (void) const;
deUint32 computeMaxPerStageDescriptorCount (VkDescriptorType descriptorType,
bool enableUpdateAfterBind) const;
};
-inline const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& DeviceProperties::descriptorIndexingFeatures (void) const
+inline const VkPhysicalDeviceDescriptorIndexingFeatures& DeviceProperties::descriptorIndexingFeatures (void) const
{
return m_descriptorIndexingFeatures;
}
return m_properties2.properties;
}
-inline const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& DeviceProperties::descriptorIndexingProperties (void) const
+inline const VkPhysicalDeviceDescriptorIndexingProperties& DeviceProperties::descriptorIndexingProperties (void) const
{
return m_descriptorIndexingProperties;
}
const InstanceInterface& interface = testContext.getInstanceInterface();
deMemset(&m_descriptorIndexingFeatures, 0, sizeof(m_descriptorIndexingFeatures));
- m_descriptorIndexingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT;
+ m_descriptorIndexingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
m_descriptorIndexingFeatures.pNext = DE_NULL;
deMemset(&m_features2, 0, sizeof(m_features2));
interface.getPhysicalDeviceFeatures2(device, &m_features2);
deMemset(&m_descriptorIndexingProperties, 0, sizeof(m_descriptorIndexingProperties));
- m_descriptorIndexingProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT;
+ m_descriptorIndexingProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
m_descriptorIndexingProperties.pNext = DE_NULL;
deMemset(&m_properties2, 0, sizeof(m_properties2));
deUint32 DeviceProperties::computeMaxPerStageDescriptorCount (VkDescriptorType descriptorType,
bool enableUpdateAfterBind) const
{
- const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& descriptorProps = descriptorIndexingProperties();
- const VkPhysicalDeviceProperties& deviceProps = physicalDeviceProperties();
+ const VkPhysicalDeviceDescriptorIndexingProperties& descriptorProps = descriptorIndexingProperties();
+ const VkPhysicalDeviceProperties& deviceProps = physicalDeviceProperties();
deUint32 result = 0;
deUint32 samplers = 0;
case DRAW_TYPE_SEQUENTIAL:
{
if (m_testIndirectCountExt)
- m_vk.cmdDrawIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
- m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
- m_strideInBuffer);
+ m_vk.cmdDrawIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
+ m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+ m_strideInBuffer);
else
m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
break;
case DRAW_TYPE_INDEXED:
{
if (m_testIndirectCountExt)
- m_vk.cmdDrawIndexedIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
- m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
- m_strideInBuffer);
+ m_vk.cmdDrawIndexedIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
+ m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+ m_strideInBuffer);
else
m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
break;
case DRAW_TYPE_SEQUENTIAL:
{
if (m_testIndirectCountExt)
- m_vk.cmdDrawIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
- m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
- m_strideInBuffer);
+ m_vk.cmdDrawIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
+ m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+ m_strideInBuffer);
else
m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
break;
case DRAW_TYPE_INDEXED:
{
if (m_testIndirectCountExt)
- m_vk.cmdDrawIndexedIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
- m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
- m_strideInBuffer);
+ m_vk.cmdDrawIndexedIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
+ m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+ m_strideInBuffer);
else
m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
break;
case DRAW_TYPE_SEQUENTIAL:
{
if (m_testIndirectCountExt)
- m_vk.cmdDrawIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
- m_indirectCountBuffer->object(), m_offsetInCountBuffer,
- m_drawCount + m_indirectCountExtDrawPadding, m_strideInBuffer);
+ m_vk.cmdDrawIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
+ m_indirectCountBuffer->object(), m_offsetInCountBuffer,
+ m_drawCount + m_indirectCountExtDrawPadding, m_strideInBuffer);
else
m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
break;
case DRAW_TYPE_INDEXED:
{
if (m_testIndirectCountExt)
- m_vk.cmdDrawIndexedIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
- m_indirectCountBuffer->object(), m_offsetInCountBuffer,
- m_drawCount + m_indirectCountExtDrawPadding, m_strideInBuffer);
+ m_vk.cmdDrawIndexedIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
+ m_indirectCountBuffer->object(), m_offsetInCountBuffer,
+ m_drawCount + m_indirectCountExtDrawPadding, m_strideInBuffer);
else
m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
break;
case DRAW_TYPE_SEQUENTIAL:
{
if (m_testIndirectCountExt)
- m_vk.cmdDrawIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
- m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
- m_strideInBuffer);
+ m_vk.cmdDrawIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
+ m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+ m_strideInBuffer);
else
m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
break;
case DRAW_TYPE_INDEXED:
{
if (m_testIndirectCountExt)
- m_vk.cmdDrawIndexedIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
- m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
- m_strideInBuffer);
+ m_vk.cmdDrawIndexedIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
+ m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+ m_strideInBuffer);
else
m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
break;
{
context.requireDeviceFunctionality("VK_EXT_vertex_attribute_divisor");
- const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& vertexAttributeDivisorFeatures = context.getVertexAttributeDivisorFeatures();
+ const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& vertexAttributeDivisorFeatures = context.getVertexAttributeDivisorFeaturesEXT();
if (m_params.attribDivisor != 1 && !vertexAttributeDivisorFeatures.vertexAttributeInstanceRateDivisor)
TCU_THROW(NotSupportedError, "Implementation does not support vertexAttributeInstanceRateDivisor");
context.requireDeviceFunctionality("VK_EXT_fragment_shader_interlock");
if ((m_data.interlock == INT_SAMPLE_ORDERED || m_data.interlock == INT_SAMPLE_UNORDERED) &&
- !context.getFragmentShaderInterlockFeatures().fragmentShaderSampleInterlock)
+ !context.getFragmentShaderInterlockFeaturesEXT().fragmentShaderSampleInterlock)
{
TCU_THROW(NotSupportedError, "Fragment shader sample interlock not supported");
}
if ((m_data.interlock == INT_PIXEL_ORDERED || m_data.interlock == INT_PIXEL_UNORDERED) &&
- !context.getFragmentShaderInterlockFeatures().fragmentShaderPixelInterlock)
+ !context.getFragmentShaderInterlockFeaturesEXT().fragmentShaderPixelInterlock)
{
TCU_THROW(NotSupportedError, "Fragment shader pixel interlock not supported");
}
if ((m_data.interlock == INT_SHADING_RATE_ORDERED || m_data.interlock == INT_SHADING_RATE_UNORDERED) &&
- !context.getFragmentShaderInterlockFeatures().fragmentShaderShadingRateInterlock)
+ !context.getFragmentShaderInterlockFeaturesEXT().fragmentShaderShadingRateInterlock)
{
TCU_THROW(NotSupportedError, "Fragment shader shading rate interlock not supported");
}
{
if (m_minalign)
{
- if (!context.getTexelBufferAlignmentFeatures().texelBufferAlignment)
+ if (!context.getTexelBufferAlignmentFeaturesEXT().texelBufferAlignment)
return (deUint32)context.getDeviceProperties().limits.minTexelBufferOffsetAlignment;
VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT alignmentProperties;
viewFormat
};
- const VkImageFormatListCreateInfoKHR formatListInfo =
+ const VkImageFormatListCreateInfo formatListInfo =
{
VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, // VkStructureType sType;
DE_NULL, // const void* pNext;
viewFormat
};
- const VkImageFormatListCreateInfoKHR formatListInfo =
+ const VkImageFormatListCreateInfo formatListInfo =
{
VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, // VkStructureType sType;
DE_NULL, // const void* pNext;
// Check support for requested formats by swapchain surface
const vector<VkSurfaceFormatKHR>surfaceFormats = getPhysicalDeviceSurfaceFormats(vki,
- physDevice,
- *surface);
+ physDevice,
+ *surface);
const VkSurfaceFormatKHR* surfaceFormat = DE_NULL;
const VkFormat* viewFormat = DE_NULL;
}
}
-VkAttachmentReference2KHR convertAttachmentReference (const VkAttachmentReference& attachmentReference, const VkImageAspectFlags aspectMask)
+VkAttachmentReference2 convertAttachmentReference (const VkAttachmentReference& attachmentReference, const VkImageAspectFlags aspectMask)
{
- const VkAttachmentReference2KHR attachmentReference2 =
+ const VkAttachmentReference2 attachmentReference2 =
{
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, // VkStructureType sType;
DE_NULL, // const void* pNext;
attachmentReference.attachment, // deUint32 attachment;
attachmentReference.layout, // VkImageLayout layout;
return attachmentReference2;
}
-std::vector<VkAttachmentDescription2KHR> convertAttachmentDescriptions (const std::vector<VkAttachmentDescription>& attachmentDescriptions)
+std::vector<VkAttachmentDescription2> convertAttachmentDescriptions (const std::vector<VkAttachmentDescription>& attachmentDescriptions)
{
- std::vector<VkAttachmentDescription2KHR> attachmentDescriptions2;
+ std::vector<VkAttachmentDescription2> attachmentDescriptions2;
attachmentDescriptions2.reserve(attachmentDescriptions.size());
for (size_t adNdx = 0; adNdx < attachmentDescriptions.size(); ++adNdx)
{
const VkAttachmentDescription& attachmentDescription = attachmentDescriptions[adNdx];
- const VkAttachmentDescription2KHR attachmentDescription2 =
+ const VkAttachmentDescription2 attachmentDescription2 =
{
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, // VkStructureType sType;
DE_NULL, // const void* pNext;
attachmentDescription.flags, // VkAttachmentDescriptionFlags flags;
attachmentDescription.format, // VkFormat format;
{
const VkImageAspectFlags colorAspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
const VkImageAspectFlags depthStencilAspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
- const VkAttachmentReference2KHR colorAttachmentRef2 = convertAttachmentReference(colorAttachmentRef, colorAspectMask);
- const VkAttachmentReference2KHR depthStencilAttachmentRef2 = convertAttachmentReference(depthStencilAttachmentRef, depthStencilAspectMask);
- const VkAttachmentReference2KHR colorResolveAttachmentRef2 = convertAttachmentReference(colorResolveAttachmentRef, colorAspectMask);
- const VkAttachmentReference2KHR depthStencilResolveAttachmentRef2 =
+ const VkAttachmentReference2 colorAttachmentRef2 = convertAttachmentReference(colorAttachmentRef, colorAspectMask);
+ const VkAttachmentReference2 depthStencilAttachmentRef2 = convertAttachmentReference(depthStencilAttachmentRef, depthStencilAspectMask);
+ const VkAttachmentReference2 colorResolveAttachmentRef2 = convertAttachmentReference(colorResolveAttachmentRef, colorAspectMask);
+ const VkAttachmentReference2 depthStencilResolveAttachmentRef2 =
{
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, // VkStructureType sType;
DE_NULL, // const void* pNext;
hasDepthStencilResolve ? attachmentCounter++ : 0u, // deUint32 attachment;
subpassLayoutDepthStencil, // VkImageLayout layout;
depthStencilAspectMask // VkImageAspectFlags aspectMask;
};
- const VkSubpassDescriptionDepthStencilResolveKHR subpassDescriptionDepthStencilResolve =
+ const VkSubpassDescriptionDepthStencilResolve subpassDescriptionDepthStencilResolve =
{
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, // VkStructureType sType;
DE_NULL, // const void* pNext;
- VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR, // VkResolveModeFlagBitsKHR depthResolveMode;
- VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR, // VkResolveModeFlagBitsKHR stencilResolveMode;
+ VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, // VkResolveModeFlagBitsKHR depthResolveMode;
+ VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, // VkResolveModeFlagBitsKHR stencilResolveMode;
&depthStencilResolveAttachmentRef2 // const VkAttachmentReference2KHR* pDepthStencilResolveAttachment;
};
- const VkSubpassDescription2KHR subpassDescription2 =
+ const VkSubpassDescription2 subpassDescription2 =
{
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, // VkStructureType sType;
&subpassDescriptionDepthStencilResolve, // const void* pNext;
(VkSubpassDescriptionFlags)0, // VkSubpassDescriptionFlags flags;
VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint;
0u, // deUint32 viewMask;
0u, // deUint32 inputAttachmentCount;
- DE_NULL, // const VkAttachmentReference2KHR* pInputAttachments;
+ DE_NULL, // const VkAttachmentReference2* pInputAttachments;
hasColor ? 1u : 0u, // deUint32 colorAttachmentCount;
- hasColor ? &colorAttachmentRef2 : DE_NULL, // const VkAttachmentReference2KHR* pColorAttachments;
- hasColorResolve ? &colorResolveAttachmentRef2 : DE_NULL, // const VkAttachmentReference2KHR* pResolveAttachments;
- hasDepthStencil ? &depthStencilAttachmentRef2 : DE_NULL, // const VkAttachmentReference2KHR* pDepthStencilAttachment;
+ hasColor ? &colorAttachmentRef2 : DE_NULL, // const VkAttachmentReference2* pColorAttachments;
+ hasColorResolve ? &colorResolveAttachmentRef2 : DE_NULL, // const VkAttachmentReference2* pResolveAttachments;
+ hasDepthStencil ? &depthStencilAttachmentRef2 : DE_NULL, // const VkAttachmentReference2* pDepthStencilAttachment;
0u, // deUint32 preserveAttachmentCount;
DE_NULL // const deUint32* pPreserveAttachments;
};
- const std::vector<VkAttachmentDescription2KHR> attachmentDescriptions2 = convertAttachmentDescriptions(attachmentDescriptions);
- const VkRenderPassCreateInfo2KHR renderPassInfo =
+ const std::vector<VkAttachmentDescription2> attachmentDescriptions2 = convertAttachmentDescriptions(attachmentDescriptions);
+ const VkRenderPassCreateInfo2 renderPassInfo =
{
- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, // VkStructureType sType;
DE_NULL, // const void* pNext;
(VkRenderPassCreateFlags)0, // VkRenderPassCreateFlags flags;
(deUint32)attachmentDescriptions2.size(), // deUint32 attachmentCount;
- &attachmentDescriptions2[0], // const VkAttachmentDescription2KHR* pAttachments;
+ &attachmentDescriptions2[0], // const VkAttachmentDescription2* pAttachments;
1u, // deUint32 subpassCount;
- &subpassDescription2, // const VkSubpassDescription2KHR* pSubpasses;
+ &subpassDescription2, // const VkSubpassDescription2* pSubpasses;
0u, // deUint32 dependencyCount;
- DE_NULL, // const VkSubpassDependency2KHR* pDependencies;
+ DE_NULL, // const VkSubpassDependency2* pDependencies;
0u, // deUint32 correlatedViewMaskCount;
DE_NULL // const deUint32* pCorrelatedViewMasks;
};
- return createRenderPass2KHR(vk, device, &renderPassInfo, allocationCallbacks);
+ return createRenderPass2(vk, device, &renderPassInfo, allocationCallbacks);
}
else
{
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, // VkPipelineStageFlags dstStageMask;
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, // VkAccessFlags srcAccessMask;
VK_ACCESS_INPUT_ATTACHMENT_READ_BIT, // VkAccessFlags dstAccessMask;
- VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR, // VkDependencyFlags dependencyFlags;
+ VK_DEPENDENCY_VIEW_LOCAL_BIT, // VkDependencyFlags dependencyFlags;
};
const VkRenderPassCreateInfo renderPassInfo =
{
return imageParams;
}
-std::vector<VkFramebufferAttachmentImageInfoKHR> makeFramebufferAttachmentImageInfos (const VkExtent2D& renderSize,
- const VkFormat* colorFormat,
- const VkImageUsageFlags colorUsage,
- const VkFormat* dsFormat,
- const VkImageUsageFlags dsUsage,
- const AspectFlags resolveAspects,
- const deUint32 inputAttachmentCount)
+std::vector<VkFramebufferAttachmentImageInfo> makeFramebufferAttachmentImageInfos (const VkExtent2D& renderSize,
+ const VkFormat* colorFormat,
+ const VkImageUsageFlags colorUsage,
+ const VkFormat* dsFormat,
+ const VkImageUsageFlags dsUsage,
+ const AspectFlags resolveAspects,
+ const deUint32 inputAttachmentCount)
{
- const bool colorResolve = (resolveAspects & ASPECT_COLOR) != 0;
- const bool depthStencilResolve = (resolveAspects & ASPECT_DEPTH_STENCIL) != 0;
- std::vector<VkFramebufferAttachmentImageInfoKHR> framebufferAttachmentImageInfos;
+ const bool colorResolve = (resolveAspects & ASPECT_COLOR) != 0;
+ const bool depthStencilResolve = (resolveAspects & ASPECT_DEPTH_STENCIL) != 0;
+ std::vector<VkFramebufferAttachmentImageInfo> framebufferAttachmentImageInfos;
DE_ASSERT(colorFormat != DE_NULL);
DE_ASSERT(dsFormat != DE_NULL);
if (*colorFormat != VK_FORMAT_UNDEFINED)
{
- const VkFramebufferAttachmentImageInfoKHR framebufferAttachmentImageInfo =
+ const VkFramebufferAttachmentImageInfo framebufferAttachmentImageInfo =
{
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
(VkImageCreateFlags)0u, // VkImageCreateFlags flags;
colorUsage, // VkImageUsageFlags usage;
if (*dsFormat != VK_FORMAT_UNDEFINED)
{
- const VkFramebufferAttachmentImageInfoKHR framebufferAttachmentImageInfo =
+ const VkFramebufferAttachmentImageInfo framebufferAttachmentImageInfo =
{
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
(VkImageCreateFlags)0u, // VkImageCreateFlags flags;
dsUsage, // VkImageUsageFlags usage;
if (colorResolve)
{
- const VkFramebufferAttachmentImageInfoKHR framebufferAttachmentImageInfo =
+ const VkFramebufferAttachmentImageInfo framebufferAttachmentImageInfo =
{
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
(VkImageCreateFlags)0u, // VkImageCreateFlags flags;
colorUsage, // VkImageUsageFlags usage;
if (depthStencilResolve)
{
- const VkFramebufferAttachmentImageInfoKHR framebufferAttachmentImageInfo =
+ const VkFramebufferAttachmentImageInfo framebufferAttachmentImageInfo =
{
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
(VkImageCreateFlags)0u, // VkImageCreateFlags flags;
dsUsage, // VkImageUsageFlags usage;
for (deUint32 inputAttachmentNdx = 0; inputAttachmentNdx < inputAttachmentCount; ++inputAttachmentNdx)
{
- const VkFramebufferAttachmentImageInfoKHR framebufferAttachmentImageInfo =
+ const VkFramebufferAttachmentImageInfo framebufferAttachmentImageInfo =
{
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
(VkImageCreateFlags)0u, // VkImageCreateFlags flags;
colorUsage | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, // VkImageUsageFlags usage;
const AspectFlags resolveAspects = ASPECT_NONE,
const deUint32 inputAttachmentCount = 0)
{
- const std::vector<VkFramebufferAttachmentImageInfoKHR> framebufferAttachmentImageInfos = makeFramebufferAttachmentImageInfos(renderSize, colorFormat, colorUsage, dsFormat, dsUsage, resolveAspects, inputAttachmentCount);
+ const std::vector<VkFramebufferAttachmentImageInfo> framebufferAttachmentImageInfos = makeFramebufferAttachmentImageInfos(renderSize, colorFormat, colorUsage, dsFormat, dsUsage, resolveAspects, inputAttachmentCount);
const deUint32 attachmentCount = static_cast<deUint32>(framebufferAttachmentImageInfos.size());
- const VkFramebufferAttachmentsCreateInfoKHR framebufferAttachmentsCreateInfo =
+ const VkFramebufferAttachmentsCreateInfo framebufferAttachmentsCreateInfo =
{
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
attachmentCount, // deUint32 attachmentImageInfoCount;
- &framebufferAttachmentImageInfos[0] // const VkFramebufferAttachmentImageInfoKHR* pAttachmentImageInfos;
+ &framebufferAttachmentImageInfos[0] // const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos;
};
const VkFramebufferCreateInfo framebufferInfo =
{
VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, // VkStructureType sType;
&framebufferAttachmentsCreateInfo, // const void* pNext;
- VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, // VkFramebufferCreateFlags flags;
+ VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, // VkFramebufferCreateFlags flags;
renderPass, // VkRenderPass renderPass;
attachmentCount, // deUint32 attachmentCount;
DE_NULL, // const VkImageView* pAttachments;
{
const InstanceInterface& vki = m_context.getInstanceInterface();
const VkPhysicalDevice physDevice = m_context.getPhysicalDevice();
- const VkPhysicalDeviceImagelessFramebufferFeaturesKHR& imagelessFramebufferFeatures (context.getImagelessFramebufferFeatures());
+ const VkPhysicalDeviceImagelessFramebufferFeatures& imagelessFramebufferFeatures (context.getImagelessFramebufferFeatures());
if (imagelessFramebufferFeatures.imagelessFramebuffer == DE_FALSE)
TCU_THROW(NotSupportedError, "Imageless framebuffer is not supported");
beginCommandBuffer(vk, *cmdBuffer);
{
- const VkRenderPassAttachmentBeginInfoKHR renderPassAttachmentBeginInfo =
+ const VkRenderPassAttachmentBeginInfo renderPassAttachmentBeginInfo =
{
- VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
1u, // deUint32 attachmentCount;
&*colorAttachment // const VkImageView* pAttachments;
beginCommandBuffer(vk, *cmdBuffer);
{
const VkImageView attachments[] = { *colorAttachment, *dsAttachment };
- const VkRenderPassAttachmentBeginInfoKHR renderPassAttachmentBeginInfo =
+ const VkRenderPassAttachmentBeginInfo renderPassAttachmentBeginInfo =
{
- VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
DE_LENGTH_OF_ARRAY(attachments), // deUint32 attachmentCount;
attachments // const VkImageView* pAttachments;
beginCommandBuffer(vk, *cmdBuffer);
{
const VkImageView attachments[] = { *colorAttachment, *colorResolveAttachment };
- const VkRenderPassAttachmentBeginInfoKHR renderPassAttachmentBeginInfo =
+ const VkRenderPassAttachmentBeginInfo renderPassAttachmentBeginInfo =
{
- VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
DE_LENGTH_OF_ARRAY(attachments), // deUint32 attachmentCount;
attachments // const VkImageView* pAttachments;
const InstanceInterface& vki = m_context.getInstanceInterface();
const VkPhysicalDevice physDevice = m_context.getPhysicalDevice();
VkPhysicalDeviceProperties2 deviceProperties;
- VkPhysicalDeviceDepthStencilResolvePropertiesKHR dsResolveProperties;
+ VkPhysicalDeviceDepthStencilResolveProperties dsResolveProperties;
deMemset(&deviceProperties, 0, sizeof(deviceProperties));
deMemset(&dsResolveProperties, 0, sizeof(dsResolveProperties));
deviceProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
deviceProperties.pNext = &dsResolveProperties;
- dsResolveProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR;
+ dsResolveProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
dsResolveProperties.pNext = DE_NULL;
vki.getPhysicalDeviceProperties2(physDevice, &deviceProperties);
beginCommandBuffer(vk, *cmdBuffer);
{
const VkImageView attachments[] = { *colorAttachment, *dsAttachment, *colorResolveAttachment, *dsResolveAttachment };
- const VkRenderPassAttachmentBeginInfoKHR renderPassAttachmentBeginInfo =
+ const VkRenderPassAttachmentBeginInfo renderPassAttachmentBeginInfo =
{
- VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
DE_LENGTH_OF_ARRAY(attachments), // deUint32 attachmentCount;
attachments // const VkImageView* pAttachments;
beginCommandBuffer(vk, *cmdBuffer);
{
const VkImageView attachments[] = { *color0Attachment, *color1Attachment };
- const VkRenderPassAttachmentBeginInfoKHR renderPassAttachmentBeginInfo =
+ const VkRenderPassAttachmentBeginInfo renderPassAttachmentBeginInfo =
{
- VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
DE_LENGTH_OF_ARRAY(attachments), // deUint32 attachmentCount;
&attachments[0] // const VkImageView* pAttachments;
{
ctx.requireDeviceFunctionality("VK_KHR_bind_memory2");
- if (m_params.usePriority && !ctx.getMemoryPriorityFeatures().memoryPriority)
+ if (m_params.usePriority && !ctx.getMemoryPriorityFeaturesEXT().memoryPriority)
TCU_THROW(NotSupportedError, "VK_EXT_memory_priority Not supported");
}
!context.getVulkanMemoryModelFeatures().vulkanMemoryModelAvailabilityVisibilityChains)
TCU_THROW(NotSupportedError, "vulkanMemoryModelAvailabilityVisibilityChains not supported");
- if ((m_data.payloadSC == SC_PHYSBUFFER || m_data.guardSC == SC_PHYSBUFFER) &&
- !context.getBufferDeviceAddressFeatures().bufferDeviceAddress)
+ if ((m_data.payloadSC == SC_PHYSBUFFER || m_data.guardSC == SC_PHYSBUFFER) && !context.isBufferDeviceAddressSupported())
TCU_THROW(NotSupportedError, "Physical storage buffer pointers not supported");
if (m_data.stage == STAGE_VERTEX)
vk::VkFlags usageFlags = vk::VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
+ bool memoryDeviceAddress = false;
+
bool local;
switch (i)
{
continue;
local = m_data.payloadMemLocal;
if (m_data.payloadSC == SC_PHYSBUFFER)
- usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT;
+ {
+ usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
+ if (m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address"))
+ memoryDeviceAddress = true;
+ }
break;
case 1:
if (m_data.guardSC != SC_BUFFER && m_data.guardSC != SC_PHYSBUFFER)
continue;
local = m_data.guardMemLocal;
if (m_data.guardSC == SC_PHYSBUFFER)
- usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT;
+ {
+ usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
+ if (m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address"))
+ memoryDeviceAddress = true;
+ }
break;
case 2: local = true; break;
}
{
buffers[i] = de::MovePtr<BufferWithMemory>(new BufferWithMemory(
vk, device, allocator, makeBufferCreateInfo(bufferSizes[i], usageFlags),
- local ? MemoryRequirement::Local : MemoryRequirement::NonLocal));
+ (memoryDeviceAddress ? MemoryRequirement::DeviceAddress : MemoryRequirement::Any) |
+ (local ? MemoryRequirement::Local : MemoryRequirement::NonLocal)));
}
catch (const tcu::NotSupportedError&)
{
Move<VkCommandPool> cmdPool = createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, m_context.getUniversalQueueFamilyIndex());
Move<VkCommandBuffer> cmdBuffer = allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
- VkBufferDeviceAddressInfoEXT addrInfo =
+ VkBufferDeviceAddressInfo addrInfo =
{
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT, // VkStructureType sType;
- DE_NULL, // const void* pNext;
- 0, // VkBuffer buffer
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ 0, // VkBuffer buffer
};
VkImageSubresourceRange range = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u);
bufferSizes[2] // size
};
- deUint32 NUM_SUBMITS = 2;
+ deUint32 NUM_SUBMITS = 2;
for (deUint32 x = 0; x < NUM_SUBMITS; ++x)
{
if (m_data.payloadSC == SC_PHYSBUFFER)
{
+ const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
addrInfo.buffer = **buffers[0];
- VkDeviceAddress addr = vk.getBufferDeviceAddressEXT(device, &addrInfo);
+ VkDeviceAddress addr;
+ if (useKHR)
+ addr = vk.getBufferDeviceAddress(device, &addrInfo);
+ else
+ addr = vk.getBufferDeviceAddressEXT(device, &addrInfo);
vk.cmdPushConstants(*cmdBuffer, *pipelineLayout, allShaderStages,
0, sizeof(VkDeviceSize), &addr);
}
if (m_data.guardSC == SC_PHYSBUFFER)
{
+ const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
addrInfo.buffer = **buffers[1];
- VkDeviceAddress addr = vk.getBufferDeviceAddressEXT(device, &addrInfo);
+ VkDeviceAddress addr;
+ if (useKHR)
+ addr = vk.getBufferDeviceAddress(device, &addrInfo);
+ else
+ addr = vk.getBufferDeviceAddressEXT(device, &addrInfo);
vk.cmdPushConstants(*cmdBuffer, *pipelineLayout, allShaderStages,
8, sizeof(VkDeviceSize), &addr);
}
VkImageLayout initialLayout_,
VkImageLayout finalLayout_)
{
- sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR;
+ sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
pNext = pNext_;
flags = flags_;
format = format_;
VkImageLayout layout_,
VkImageAspectFlags aspectMask_)
{
- sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR;
+ sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2;
pNext = pNext_;
attachment = attachment_;
layout = layout_;
VkPipelineBindPoint pipelineBindPoint_,
deUint32 viewMask_,
deUint32 inputAttachmentCount_,
- const VkAttachmentReference2KHR* pInputAttachments_,
+ const VkAttachmentReference2* pInputAttachments_,
deUint32 colorAttachmentCount_,
- const VkAttachmentReference2KHR* pColorAttachments_,
- const VkAttachmentReference2KHR* pResolveAttachments_,
- const VkAttachmentReference2KHR* pDepthStencilAttachment_,
+ const VkAttachmentReference2* pColorAttachments_,
+ const VkAttachmentReference2* pResolveAttachments_,
+ const VkAttachmentReference2* pDepthStencilAttachment_,
deUint32 preserveAttachmentCount_,
const deUint32* pPreserveAttachments_)
{
- sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR;
+ sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2;
pNext = pNext_;
flags = flags_;
pipelineBindPoint = pipelineBindPoint_;
VkDependencyFlags dependencyFlags_,
deInt32 viewOffset_)
{
- sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR;
+ sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2;
pNext = pNext_;
srcSubpass = srcSubpass_;
dstSubpass = dstSubpass_;
RenderPassCreateInfo2::RenderPassCreateInfo2 (const void* pNext_,
VkRenderPassCreateFlags flags_,
deUint32 attachmentCount_,
- const VkAttachmentDescription2KHR* pAttachments_,
+ const VkAttachmentDescription2* pAttachments_,
deUint32 subpassCount_,
- const VkSubpassDescription2KHR* pSubpasses_,
+ const VkSubpassDescription2* pSubpasses_,
deUint32 dependencyCount_,
- const VkSubpassDependency2KHR* pDependencies_,
+ const VkSubpassDependency2* pDependencies_,
deUint32 correlatedViewMaskCount_,
const deUint32* pCorrelatedViewMasks_)
{
- sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR;
+ sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2;
pNext = pNext_;
flags = flags_;
attachmentCount = attachmentCount_;
Move<VkRenderPass> RenderPassCreateInfo2::createRenderPass (const DeviceInterface& vk, VkDevice device) const
{
- return vk::createRenderPass2KHR(vk, device, this);
+ return vk::createRenderPass2(vk, device, this);
}
SubpassBeginInfo1::SubpassBeginInfo1 (const void* pNext_,
SubpassBeginInfo2::SubpassBeginInfo2 (const void* pNext_,
VkSubpassContents contents_)
{
- sType = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR;
+ sType = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO;
pNext = pNext_;
contents = contents_;
}
SubpassEndInfo2::SubpassEndInfo2 (const void* pNext_)
{
- sType = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR;
+ sType = VK_STRUCTURE_TYPE_SUBPASS_END_INFO;
pNext = pNext_;
}
const VkRenderPassBeginInfo* pRenderPassBegin,
const SubpassBeginInfo* pSubpassBeginInfo)
{
- vk.cmdBeginRenderPass2KHR(cmdBuffer, pRenderPassBegin, pSubpassBeginInfo);
+ vk.cmdBeginRenderPass2(cmdBuffer, pRenderPassBegin, pSubpassBeginInfo);
}
void RenderpassSubpass2::cmdNextSubpass (const DeviceInterface& vk,
DE_ASSERT(pSubpassBeginInfo != DE_NULL);
DE_ASSERT(pSubpassEndInfo != DE_NULL);
- vk.cmdNextSubpass2KHR(cmdBuffer, pSubpassBeginInfo, pSubpassEndInfo);
+ vk.cmdNextSubpass2(cmdBuffer, pSubpassBeginInfo, pSubpassEndInfo);
}
void RenderpassSubpass2::cmdEndRenderPass (const DeviceInterface& vk,
{
DE_ASSERT(pSubpassEndInfo != DE_NULL);
- vk.cmdEndRenderPass2KHR(cmdBuffer, pSubpassEndInfo);
+ vk.cmdEndRenderPass2(cmdBuffer, pSubpassEndInfo);
}
} // renderpass
VkImageLayout finalLayout);
};
-class AttachmentDescription2 : public vk::VkAttachmentDescription2KHR
+class AttachmentDescription2 : public vk::VkAttachmentDescription2
{
public:
AttachmentDescription2 (const void* pNext,
VkImageAspectFlags aspectMask);
};
-class AttachmentReference2 : public vk::VkAttachmentReference2KHR
+class AttachmentReference2 : public vk::VkAttachmentReference2
{
public:
AttachmentReference2 (const void* pNext,
const deUint32* pPreserveAttachments);
};
-class SubpassDescription2 : public vk::VkSubpassDescription2KHR
+class SubpassDescription2 : public vk::VkSubpassDescription2
{
public:
SubpassDescription2 (const void* pNext,
VkPipelineBindPoint pipelineBindPoint,
deUint32 viewMask,
deUint32 inputAttachmentCount,
- const VkAttachmentReference2KHR* pInputAttachments,
+ const VkAttachmentReference2* pInputAttachments,
deUint32 colorAttachmentCount,
- const VkAttachmentReference2KHR* pColorAttachments,
- const VkAttachmentReference2KHR* pResolveAttachments,
- const VkAttachmentReference2KHR* pDepthStencilAttachment,
+ const VkAttachmentReference2* pColorAttachments,
+ const VkAttachmentReference2* pResolveAttachments,
+ const VkAttachmentReference2* pDepthStencilAttachment,
deUint32 preserveAttachmentCount,
const deUint32* pPreserveAttachments);
};
deInt32 viewOffset);
};
-class SubpassDependency2 : public vk::VkSubpassDependency2KHR
+class SubpassDependency2 : public vk::VkSubpassDependency2
{
public:
SubpassDependency2 (const void* pNext,
VkDevice device) const;
};
-class RenderPassCreateInfo2 : public VkRenderPassCreateInfo2KHR
+class RenderPassCreateInfo2 : public VkRenderPassCreateInfo2
{
public:
RenderPassCreateInfo2 (const void* pNext,
VkRenderPassCreateFlags flags,
deUint32 attachmentCount,
- const VkAttachmentDescription2KHR* pAttachments,
+ const VkAttachmentDescription2* pAttachments,
deUint32 subpassCount,
- const VkSubpassDescription2KHR* pSubpasses,
+ const VkSubpassDescription2* pSubpasses,
deUint32 dependencyCount,
- const VkSubpassDependency2KHR* pDependencies,
+ const VkSubpassDependency2* pDependencies,
deUint32 correlatedViewMaskCount,
const deUint32* pCorrelatedViewMasks);
VkSubpassContents contents;
};
-class SubpassBeginInfo2 : public VkSubpassBeginInfoKHR
+class SubpassBeginInfo2 : public VkSubpassBeginInfo
{
public:
SubpassBeginInfo2 (const void* pNext,
SubpassEndInfo1 (const void* pNext);
};
-class SubpassEndInfo2 : public VkSubpassEndInfoKHR
+class SubpassEndInfo2 : public VkSubpassEndInfo
{
public:
SubpassEndInfo2 (const void* pNext);
)
PCH(DEQP_VK_PIPELINE_SRCS ../pch.cpp)
+include_directories("../../../../amber/src/include")
+include_directories("../amber")
add_library(deqp-vk-pipeline STATIC ${DEQP_VK_PIPELINE_SRCS})
target_link_libraries(deqp-vk-pipeline ${DEQP_VK_PIPELINE_LIBS})
throw tcu::NotSupportedError("Unsupported non-premultiplied destination color");
}
- const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT blendFeatures = context.getBlendOperationAdvancedFeatures();
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT blendFeatures = context.getBlendOperationAdvancedFeaturesEXT();
if (m_param.coherentOperations && !blendFeatures.advancedBlendCoherentOperations)
{
throw tcu::NotSupportedError("Unsupported required coherent operations");
void checkSupportImageSamplingInstance (Context& context, ImageSamplingInstanceParams params)
{
+
if (de::abs(params.samplerParams.mipLodBias) > context.getDeviceProperties().limits.maxSamplerLodBias)
TCU_THROW(NotSupportedError, "Unsupported sampler Lod bias value");
context.requireDeviceFunctionality("VK_EXT_separate_stencil_usage");
context.requireInstanceFunctionality("VK_KHR_get_physical_device_properties2");
- const VkImageStencilUsageCreateInfoEXT stencilUsage =
+ const VkImageStencilUsageCreateInfo stencilUsage =
{
- VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT,
+ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
DE_NULL,
VK_IMAGE_USAGE_TRANSFER_DST_BIT
};
{
case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT:
{
- VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT physicalDeviceSamplerMinMaxProperties =
+ VkPhysicalDeviceSamplerFilterMinmaxProperties physicalDeviceSamplerMinMaxProperties =
{
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
DE_NULL,
VkImageViewType imageViewType,
VkFormat imageFormat,
VkComponentMapping componentMapping,
- VkSamplerReductionModeEXT reductionMode,
+ VkSamplerReductionMode reductionMode,
bool separateStencilUsage);
virtual ~SamplerMagReduceFilterTest (void) {}
virtual VkComponentMapping getComponentMapping (void) const;
private:
- const VkSamplerReductionModeCreateInfoEXT m_reductionCreaterInfo;
+ const VkSamplerReductionModeCreateInfo m_reductionCreaterInfo;
VkComponentMapping m_componentMapping;
};
VkImageViewType imageViewType,
VkFormat imageFormat,
VkComponentMapping componentMapping,
- VkSamplerReductionModeEXT reductionMode,
+ VkSamplerReductionMode reductionMode,
bool separateStencilUsage);
virtual ~SamplerMinReduceFilterTest (void) {}
virtual VkComponentMapping getComponentMapping (void) const;
private:
- const VkSamplerReductionModeCreateInfoEXT m_reductionCreaterInfo;
+ const VkSamplerReductionModeCreateInfo m_reductionCreaterInfo;
VkComponentMapping m_componentMapping;
};
namespace
{
-VkSamplerReductionModeCreateInfoEXT getSamplerReductionCreateInfo (VkSamplerReductionModeEXT reductionMode)
+VkSamplerReductionModeCreateInfo getSamplerReductionCreateInfo (VkSamplerReductionMode reductionMode)
{
- const VkSamplerReductionModeCreateInfoEXT ret =
+ const VkSamplerReductionModeCreateInfo ret =
{
- VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT, // VkStructureType sType
+ VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, // VkStructureType sType
DE_NULL, // const void* pNext
- reductionMode // VkSamplerReductionModeEXT reductionMode
+ reductionMode // VkSamplerReductionMode reductionMode
};
return ret;
}
VkImageViewType imageViewType,
VkFormat imageFormat,
VkComponentMapping componentMapping,
- VkSamplerReductionModeEXT reductionMode,
+ VkSamplerReductionMode reductionMode,
bool separateStencilUsage)
: SamplerMagFilterTest (testContext, name, description, imageViewType, imageFormat, VK_FILTER_LINEAR, separateStencilUsage)
, m_reductionCreaterInfo (getSamplerReductionCreateInfo(reductionMode))
VkImageViewType imageViewType,
VkFormat imageFormat,
VkComponentMapping componentMapping,
- VkSamplerReductionModeEXT reductionMode,
+ VkSamplerReductionMode reductionMode,
bool separateStencilUsage)
: SamplerMinFilterTest (testContext, name, description, imageViewType, imageFormat, VK_FILTER_LINEAR, separateStencilUsage)
, m_reductionCreaterInfo (getSamplerReductionCreateInfo(reductionMode))
configCommandBuffer();
if (m_hostQueryReset)
{
- vk.resetQueryPoolEXT(vkDevice, *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
+ vk.resetQueryPool(vkDevice, *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
}
submitCommandsAndWait(vk, vkDevice, queue, m_cmdBuffer.get());
}
// Host resets the query pool
- vk.resetQueryPoolEXT(vkDevice, *m_queryPool, 0u, stageSize);
+ vk.resetQueryPool(vkDevice, *m_queryPool, 0u, stageSize);
// Get timestamp value from query pool
vk::VkResult res = vk.getQueryPoolResults(vkDevice, *m_queryPool, 0u, stageSize, sizeof(deUint64) * stageSize * 2, (void*)m_timestampValuesHostQueryReset, sizeof(deUint64) * 2, VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT);
if (m_hostQueryReset)
{
// Only reset the pool for the primary command buffer, the secondary command buffer will reset the pool by itself.
- vk.resetQueryPoolEXT(m_context.getDevice(), *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
+ vk.resetQueryPool(m_context.getDevice(), *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
}
VK_CHECK(vk.queueSubmit(queue, 1u, &submitInfo, DE_NULL));
endCommandBuffer(vk, *cmdBuffer);
if (m_testVector.queryResultsMode == RESULTS_MODE_GET_RESET)
- vk.resetQueryPoolEXT(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
+ vk.resetQueryPool(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
submitCommandsAndWait(vk, device, queue, cmdBuffer.get());
};
if (!hasSeparateResetCmdBuf() && m_testVector.queryResultsMode == RESULTS_MODE_GET_RESET)
- vk.resetQueryPoolEXT(m_context.getDevice(), m_queryPool, 0, NUM_QUERIES_IN_POOL);
+ vk.resetQueryPool(m_context.getDevice(), m_queryPool, 0, NUM_QUERIES_IN_POOL);
vk.queueSubmit(queue, 1, &submitInfoRender, DE_NULL);
}
if (m_testVector.queryResultsMode == RESULTS_MODE_GET_RESET)
{
- vk.resetQueryPoolEXT(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
+ vk.resetQueryPool(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
vk::VkResult queryResult = vk.getQueryPoolResults(device, m_queryPool, 0, NUM_QUERIES_IN_POOL, resultsBuffer.size(), &resultsBuffer[0], m_testVector.queryResultsStride, m_queryResultFlags);
if (queryResult != vk::VK_NOT_READY)
if (m_testVector.queryResultsAvailability && *(srcPtrTyped + 1) != 0)
{
- TCU_FAIL("resetQueryPoolEXT did not disable availability bit");
+ TCU_FAIL("resetQueryPool did not disable availability bit");
}
}
else if (m_testVector.queryResultSize == RESULT_SIZE_64_BIT)
if (m_testVector.queryResultsAvailability && *(srcPtrTyped + 1) != 0)
{
- TCU_FAIL("resetQueryPoolEXT did not disable availability bit");
+ TCU_FAIL("resetQueryPool did not disable availability bit");
}
}
else
// enable every <enabledCounterStride> counter that has command or render pass scope
for (deUint32 i = 0; i < counterCount; i++)
{
- // skip counters with command buffer scope
- if (m_counters[i].scope == VK_QUERY_SCOPE_COMMAND_BUFFER_KHR)
- continue;
-
// handle offset
if (enabledCounterOffset)
{
m_context.getTestContext().getLog() << tcu::TestLog::Message << "Compute shader invocations: " << getComputeExecution(m_parameters[parametersNdx]) << tcu::TestLog::EndMessage;
if (m_parameters[0].resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, 1u);
+ vk.resetQueryPool(device, *queryPool, 0u, 1u);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *cmdBuffer);
deUint64 temp = data[0].first;
- vk.resetQueryPoolEXT(device, *queryPool, 0, 1u);
+ vk.resetQueryPool(device, *queryPool, 0, 1u);
vk::VkResult res = GetQueryPoolResultsVector(data, vk, device, *queryPool, 0u, 1u, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
/* From Vulkan spec:
*
// Secondary buffer is emitted only once, so it is safe to reset the query pool here.
if (m_parameters[0].resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, 1u);
+ vk.resetQueryPool(device, *queryPool, 0u, 1u);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
deUint64 temp = results[0].first;
- vk.resetQueryPoolEXT(device, queryPool, 0u, 1u);
+ vk.resetQueryPool(device, queryPool, 0u, 1u);
vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, 1u, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
/* From Vulkan spec:
*
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parameters[0].resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, 1u);
+ vk.resetQueryPool(device, *queryPool, 0u, 1u);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *cmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *cmdBuffer);
deUint64 temp = results[0].first;
- vk.resetQueryPoolEXT(device, queryPool, 0, queryCount);
+ vk.resetQueryPool(device, queryPool, 0, queryCount);
vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, queryCount, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
/* From Vulkan spec:
*
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *cmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *cmdBuffer);
deUint64 temp = results[0].first;
- vk.resetQueryPoolEXT(device, queryPool, 0, queryCount);
+ vk.resetQueryPool(device, queryPool, 0, queryCount);
vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, queryCount, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
/* From Vulkan spec:
*
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *cmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *cmdBuffer);
deUint64 temp = results[0].first;
- vk.resetQueryPoolEXT(device, queryPool, 0, queryCount);
+ vk.resetQueryPool(device, queryPool, 0, queryCount);
vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, queryCount, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
/* From Vulkan spec:
*
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
TCU_THROW(NotSupportedError, "Strict rasterization is not supported");
if (getLineStippleEnable() &&
- !context.getLineRasterizationFeatures().stippledRectangularLines)
+ !context.getLineRasterizationFeaturesEXT().stippledRectangularLines)
TCU_THROW(NotSupportedError, "Stippled rectangular lines not supported");
break;
case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT:
- if (!context.getLineRasterizationFeatures().rectangularLines)
+ if (!context.getLineRasterizationFeaturesEXT().rectangularLines)
TCU_THROW(NotSupportedError, "Rectangular lines not supported");
if (getLineStippleEnable() &&
- !context.getLineRasterizationFeatures().stippledRectangularLines)
+ !context.getLineRasterizationFeaturesEXT().stippledRectangularLines)
TCU_THROW(NotSupportedError, "Stippled rectangular lines not supported");
break;
case VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT:
- if (!context.getLineRasterizationFeatures().bresenhamLines)
+ if (!context.getLineRasterizationFeaturesEXT().bresenhamLines)
TCU_THROW(NotSupportedError, "Bresenham lines not supported");
if (getLineStippleEnable() &&
- !context.getLineRasterizationFeatures().stippledBresenhamLines)
+ !context.getLineRasterizationFeaturesEXT().stippledBresenhamLines)
TCU_THROW(NotSupportedError, "Stippled Bresenham lines not supported");
break;
case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT:
- if (!context.getLineRasterizationFeatures().smoothLines)
+ if (!context.getLineRasterizationFeaturesEXT().smoothLines)
TCU_THROW(NotSupportedError, "Smooth lines not supported");
if (getLineStippleEnable() &&
- !context.getLineRasterizationFeatures().stippledSmoothLines)
+ !context.getLineRasterizationFeaturesEXT().stippledSmoothLines)
TCU_THROW(NotSupportedError, "Stippled smooth lines not supported");
break;
}
VkRect2D renderArea;
VkImageAspectFlags aspectFlag;
deUint32 sampleCount;
- VkResolveModeFlagBitsKHR depthResolveMode;
- VkResolveModeFlagBitsKHR stencilResolveMode;
+ VkResolveModeFlagBits depthResolveMode;
+ VkResolveModeFlagBits stencilResolveMode;
VerifyBuffer verifyBuffer;
VkClearDepthStencilValue clearValue;
float depthExpectedValue;
if (m_config.separateDepthStencilLayouts)
m_context.requireDeviceFunctionality("VK_KHR_separate_depth_stencil_layouts");
- VkPhysicalDeviceDepthStencilResolvePropertiesKHR dsResolveProperties;
- deMemset(&dsResolveProperties, 0, sizeof(VkPhysicalDeviceDepthStencilResolvePropertiesKHR));
- dsResolveProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR;
+ VkPhysicalDeviceDepthStencilResolveProperties dsResolveProperties;
+ deMemset(&dsResolveProperties, 0, sizeof(VkPhysicalDeviceDepthStencilResolveProperties));
+ dsResolveProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
dsResolveProperties.pNext = DE_NULL;
VkPhysicalDeviceProperties2 deviceProperties;
instanceInterface.getPhysicalDeviceProperties2(physicalDevice, &deviceProperties);
// check if both modes are supported
- VkResolveModeFlagBitsKHR depthResolveMode = m_config.depthResolveMode;
- VkResolveModeFlagBitsKHR stencilResolveMode = m_config.stencilResolveMode;
- if ((depthResolveMode != VK_RESOLVE_MODE_NONE_KHR) &&
+ VkResolveModeFlagBits depthResolveMode = m_config.depthResolveMode;
+ VkResolveModeFlagBits stencilResolveMode = m_config.stencilResolveMode;
+ if ((depthResolveMode != VK_RESOLVE_MODE_NONE) &&
!(depthResolveMode & dsResolveProperties.supportedDepthResolveModes))
TCU_THROW(NotSupportedError, "Depth resolve mode not supported");
- if ((stencilResolveMode != VK_RESOLVE_MODE_NONE_KHR) &&
+ if ((stencilResolveMode != VK_RESOLVE_MODE_NONE) &&
!(stencilResolveMode & dsResolveProperties.supportedStencilResolveModes))
TCU_THROW(NotSupportedError, "Stencil resolve mode not supported");
// check if the implementation supports setting the depth and stencil resolve
- // modes to different values when one of those modes is VK_RESOLVE_MODE_NONE_KHR
+ // modes to different values when one of those modes is VK_RESOLVE_MODE_NONE
if (dsResolveProperties.independentResolveNone)
{
if ((!dsResolveProperties.independentResolve) &&
(depthResolveMode != stencilResolveMode) &&
- (depthResolveMode != VK_RESOLVE_MODE_NONE_KHR) &&
- (stencilResolveMode != VK_RESOLVE_MODE_NONE_KHR))
+ (depthResolveMode != VK_RESOLVE_MODE_NONE) &&
+ (stencilResolveMode != VK_RESOLVE_MODE_NONE))
TCU_THROW(NotSupportedError, "Implementation doesn't support diferent resolve modes");
}
else if (!dsResolveProperties.independentResolve && (depthResolveMode != stencilResolveMode))
attachmentDescriptionStencil = &stencilFinalLayout;
}
- const AttachmentDescription2 multisampleAttachment // VkAttachmentDescription2KHR
+ const AttachmentDescription2 multisampleAttachment // VkAttachmentDescription2
(
// VkStructureType sType;
attachmentDescriptionStencil, // const void* pNext;
VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout;
finalLayout // VkImageLayout finalLayout;
);
- const AttachmentReference2 multisampleAttachmentRef // VkAttachmentReference2KHR
+ const AttachmentReference2 multisampleAttachmentRef // VkAttachmentReference2
(
// VkStructureType sType;
attachmentRefStencil, // const void* pNext;
0u // VkImageAspectFlags aspectMask;
);
- const AttachmentDescription2 singlesampleAttachment // VkAttachmentDescription2KHR
+ const AttachmentDescription2 singlesampleAttachment // VkAttachmentDescription2
(
// VkStructureType sType;
attachmentDescriptionStencil, // const void* pNext;
VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout;
finalLayout // VkImageLayout finalLayout;
);
- AttachmentReference2 singlesampleAttachmentRef // VkAttachmentReference2KHR
+ AttachmentReference2 singlesampleAttachmentRef // VkAttachmentReference2
(
// VkStructureType sType;
DE_NULL, // const void* pNext;
attachments.push_back(multisampleAttachment);
attachments.push_back(singlesampleAttachment);
- VkSubpassDescriptionDepthStencilResolveKHR dsResolveDescription =
+ VkSubpassDescriptionDepthStencilResolve dsResolveDescription =
{
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
DE_NULL, // const void* pNext;
- m_config.depthResolveMode, // VkResolveModeFlagBitsKHR depthResolveMode;
- m_config.stencilResolveMode, // VkResolveModeFlagBitsKHR stencilResolveMode;
- &singlesampleAttachmentRef // VkAttachmentReference2KHR pDepthStencilResolveAttachment;
+ m_config.depthResolveMode, // VkResolveModeFlagBits depthResolveMode;
+ m_config.stencilResolveMode, // VkResolveModeFlagBits stencilResolveMode;
+ &singlesampleAttachmentRef // VkAttachmentReference2 pDepthStencilResolveAttachment;
};
- const SubpassDescription2 subpass // VkSubpassDescription2KHR
+ const SubpassDescription2 subpass // VkSubpassDescription2
(
// VkStructureType sType;
&dsResolveDescription, // const void* pNext;
VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint;
0u, // deUint32 viewMask;
0u, // deUint32 inputAttachmentCount;
- DE_NULL, // const VkAttachmentReference2KHR* pInputAttachments;
+ DE_NULL, // const VkAttachmentReference2* pInputAttachments;
0u, // deUint32 colorAttachmentCount;
- DE_NULL, // const VkAttachmentReference2KHR* pColorAttachments;
- DE_NULL, // const VkAttachmentReference2KHR* pResolveAttachments;
- &multisampleAttachmentRef, // const VkAttachmentReference2KHR* pDepthStencilAttachment;
+ DE_NULL, // const VkAttachmentReference2* pColorAttachments;
+ DE_NULL, // const VkAttachmentReference2* pResolveAttachments;
+ &multisampleAttachmentRef, // const VkAttachmentReference2* pDepthStencilAttachment;
0u, // deUint32 preserveAttachmentCount;
DE_NULL // const deUint32* pPreserveAttachments;
);
- const RenderPassCreateInfo2 renderPassCreator // VkRenderPassCreateInfo2KHR
+ const RenderPassCreateInfo2 renderPassCreator // VkRenderPassCreateInfo2
(
// VkStructureType sType;
DE_NULL, // const void* pNext;
(VkRenderPassCreateFlags)0u, // VkRenderPassCreateFlags flags;
(deUint32)attachments.size(), // deUint32 attachmentCount;
- &attachments[0], // const VkAttachmentDescription2KHR* pAttachments;
+ &attachments[0], // const VkAttachmentDescription2* pAttachments;
1u, // deUint32 subpassCount;
- &subpass, // const VkSubpassDescription2KHR* pSubpasses;
+ &subpass, // const VkSubpassDescription2* pSubpasses;
0u, // deUint32 dependencyCount;
- DE_NULL, // const VkSubpassDependency2KHR* pDependencies;
+ DE_NULL, // const VkSubpassDependency2* pDependencies;
0u, // deUint32 correlatedViewMaskCount;
DE_NULL // const deUint32* pCorrelatedViewMasks;
);
invalidateMappedMemoryRange(vkd, m_context.getDevice(), m_bufferMemory->getMemory(), m_bufferMemory->getOffset(), VK_WHOLE_SIZE);
float expectedValue = m_config.depthExpectedValue;
- if (m_config.depthResolveMode == VK_RESOLVE_MODE_NONE_KHR)
+ if (m_config.depthResolveMode == VK_RESOLVE_MODE_NONE)
expectedValue = m_config.clearValue.depth;
// depth data in buffer is tightly packed, ConstPixelBufferAccess
// because of that depth and stencil need to be tested separately
deUint8 expectedValue = m_config.stencilExpectedValue;
- if (m_config.stencilResolveMode == VK_RESOLVE_MODE_NONE_KHR)
+ if (m_config.stencilResolveMode == VK_RESOLVE_MODE_NONE)
expectedValue = static_cast<deUint8>(m_config.clearValue.stencil);
for (deUint32 valueIndex = 0; valueIndex < valuesCount; valueIndex++)
struct ResolveModeData
{
- VkResolveModeFlagBitsKHR flag;
- std::string name;
+ VkResolveModeFlagBits flag;
+ std::string name;
};
ResolveModeData resolveModes[] =
{
- { VK_RESOLVE_MODE_NONE_KHR, "none" },
- { VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR, "zero" },
- { VK_RESOLVE_MODE_AVERAGE_BIT_KHR, "average" },
- { VK_RESOLVE_MODE_MIN_BIT_KHR, "min" },
- { VK_RESOLVE_MODE_MAX_BIT_KHR, "max" },
+ { VK_RESOLVE_MODE_NONE, "none" },
+ { VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, "zero" },
+ { VK_RESOLVE_MODE_AVERAGE_BIT, "average" },
+ { VK_RESOLVE_MODE_MIN_BIT, "min" },
+ { VK_RESOLVE_MODE_MAX_BIT, "max" },
};
struct ImageTestData
{
// there is no average resolve mode for stencil - go to next iteration
ResolveModeData& sResolve = resolveModes[stencilResolveModeNdx];
- if (sResolve.flag == VK_RESOLVE_MODE_AVERAGE_BIT_KHR)
+ if (sResolve.flag == VK_RESOLVE_MODE_AVERAGE_BIT)
continue;
// if pDepthStencilResolveAttachment is not NULL and does not have the value VK_ATTACHMENT_UNUSED,
// depthResolveMode and stencilResolveMode must not both be VK_RESOLVE_MODE_NONE_KHR
ResolveModeData& dResolve = resolveModes[depthResolveModeNdx];
- if ((dResolve.flag == VK_RESOLVE_MODE_NONE_KHR) && (sResolve.flag == VK_RESOLVE_MODE_NONE_KHR))
+ if ((dResolve.flag == VK_RESOLVE_MODE_NONE) && (sResolve.flag == VK_RESOLVE_MODE_NONE))
continue;
// If there is no depth, the depth resolve mode should be NONE, or
// match the stencil resolve mode.
- if (!hasDepth && (dResolve.flag != VK_RESOLVE_MODE_NONE_KHR) &&
+ if (!hasDepth && (dResolve.flag != VK_RESOLVE_MODE_NONE) &&
(dResolve.flag != sResolve.flag))
continue;
// If there is no stencil, the stencil resmove mode should be NONE, or
// match the depth resolve mode.
- if (!hasStencil && (sResolve.flag != VK_RESOLVE_MODE_NONE_KHR) &&
+ if (!hasStencil && (sResolve.flag != VK_RESOLVE_MODE_NONE) &&
(dResolve.flag != sResolve.flag))
continue;
aspectFlags,
sampleCount,
mode.flag,
- VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,
+ VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
VB_DEPTH,
layeredTextureTestData.clearValue,
expectedValue,
}
// there is no average resolve mode for stencil - go to next iteration
- if (mode.flag == VK_RESOLVE_MODE_AVERAGE_BIT_KHR)
+ if (mode.flag == VK_RESOLVE_MODE_AVERAGE_BIT)
continue;
if (hasStencil)
layeredTextureTestData.renderArea,
aspectFlags,
sampleCount,
- VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,
+ VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
mode.flag,
VB_STENCIL,
layeredTextureTestData.clearValue,
VkImageUsageFlags depthUsage = (separateStencilUsage == TEST_DEPTH) ? usage : (VkImageUsageFlags)VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
VkImageUsageFlags stencilUsage = (separateStencilUsage == TEST_STENCIL) ? usage : (VkImageUsageFlags)VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
- const VkImageStencilUsageCreateInfoEXT stencilUsageInfo =
+ const VkImageStencilUsageCreateInfo stencilUsageInfo =
{
- VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT,
+ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
DE_NULL,
stencilUsage
};
if (separateStencilUsage)
{
- const VkImageStencilUsageCreateInfoEXT stencilUsageInfo =
+ const VkImageStencilUsageCreateInfo stencilUsageInfo =
{
- VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT, // VkStructureType sType
+ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, // VkStructureType sType
DE_NULL, // const void* pNext
stencilUsage // VkImageUsageFlags stencilUsage
};
VkImageLayout initialLayout_,
VkImageLayout finalLayout_)
{
- sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR;
+ sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
pNext = pNext_;
flags = flags_;
format = format_;
VkImageLayout layout_,
VkImageAspectFlags aspectMask_)
{
- sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR;
+ sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2;
pNext = pNext_;
attachment = attachment_;
layout = layout_;
VkPipelineBindPoint pipelineBindPoint_,
deUint32 viewMask_,
deUint32 inputAttachmentCount_,
- const VkAttachmentReference2KHR* pInputAttachments_,
+ const VkAttachmentReference2* pInputAttachments_,
deUint32 colorAttachmentCount_,
- const VkAttachmentReference2KHR* pColorAttachments_,
- const VkAttachmentReference2KHR* pResolveAttachments_,
- const VkAttachmentReference2KHR* pDepthStencilAttachment_,
+ const VkAttachmentReference2* pColorAttachments_,
+ const VkAttachmentReference2* pResolveAttachments_,
+ const VkAttachmentReference2* pDepthStencilAttachment_,
deUint32 preserveAttachmentCount_,
const deUint32* pPreserveAttachments_)
{
- sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR;
+ sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2;
pNext = pNext_;
flags = flags_;
pipelineBindPoint = pipelineBindPoint_;
VkDependencyFlags dependencyFlags_,
deInt32 viewOffset_)
{
- sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR;
+ sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2;
pNext = pNext_;
srcSubpass = srcSubpass_;
dstSubpass = dstSubpass_;
RenderPassCreateInfo2::RenderPassCreateInfo2 (const void* pNext_,
VkRenderPassCreateFlags flags_,
deUint32 attachmentCount_,
- const VkAttachmentDescription2KHR* pAttachments_,
+ const VkAttachmentDescription2* pAttachments_,
deUint32 subpassCount_,
- const VkSubpassDescription2KHR* pSubpasses_,
+ const VkSubpassDescription2* pSubpasses_,
deUint32 dependencyCount_,
- const VkSubpassDependency2KHR* pDependencies_,
+ const VkSubpassDependency2* pDependencies_,
deUint32 correlatedViewMaskCount_,
const deUint32* pCorrelatedViewMasks_)
{
- sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR;
+ sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2;
pNext = pNext_;
flags = flags_;
attachmentCount = attachmentCount_;
Move<VkRenderPass> RenderPassCreateInfo2::createRenderPass (const DeviceInterface& vk, VkDevice device) const
{
- return vk::createRenderPass2KHR(vk, device, this);
+ return vk::createRenderPass2(vk, device, this);
}
SubpassBeginInfo1::SubpassBeginInfo1 (const void* pNext_,
SubpassBeginInfo2::SubpassBeginInfo2 (const void* pNext_,
VkSubpassContents contents_)
{
- sType = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR;
+ sType = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO;
pNext = pNext_;
contents = contents_;
}
SubpassEndInfo2::SubpassEndInfo2 (const void* pNext_)
{
- sType = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR;
+ sType = VK_STRUCTURE_TYPE_SUBPASS_END_INFO;
pNext = pNext_;
}
const VkRenderPassBeginInfo* pRenderPassBegin,
const SubpassBeginInfo* pSubpassBeginInfo)
{
- vk.cmdBeginRenderPass2KHR(cmdBuffer, pRenderPassBegin, pSubpassBeginInfo);
+ vk.cmdBeginRenderPass2(cmdBuffer, pRenderPassBegin, pSubpassBeginInfo);
}
void RenderpassSubpass2::cmdNextSubpass (const DeviceInterface& vk,
DE_ASSERT(pSubpassBeginInfo != DE_NULL);
DE_ASSERT(pSubpassEndInfo != DE_NULL);
- vk.cmdNextSubpass2KHR(cmdBuffer, pSubpassBeginInfo, pSubpassEndInfo);
+ vk.cmdNextSubpass2(cmdBuffer, pSubpassBeginInfo, pSubpassEndInfo);
}
void RenderpassSubpass2::cmdEndRenderPass (const DeviceInterface& vk,
{
DE_ASSERT(pSubpassEndInfo != DE_NULL);
- vk.cmdEndRenderPass2KHR(cmdBuffer, pSubpassEndInfo);
+ vk.cmdEndRenderPass2(cmdBuffer, pSubpassEndInfo);
}
// For internal to RP/RP2 conversions
template <typename AttachmentDesc>
AttachmentDesc createAttachmentDescription (const Attachment& attachment)
{
- const AttachmentDesc attachmentDescription // VkAttachmentDescription || VkAttachmentDescription2KHR
+ const AttachmentDesc attachmentDescription // VkAttachmentDescription || VkAttachmentDescription2
(
// || VkStructureType sType;
DE_NULL, // || const void* pNext;
template <typename AttachmentRef>
AttachmentRef createAttachmentReference (const AttachmentReference& referenceInfo)
{
- const AttachmentRef reference // VkAttachmentReference || VkAttachmentReference2KHR
+ const AttachmentRef reference // VkAttachmentReference || VkAttachmentReference2
(
// || VkStructureType sType;
DE_NULL, // || const void* pNext;
DE_ASSERT(resolveAttachmentReferences.empty() || colorAttachmentReferences.size() == resolveAttachmentReferences.size());
{
- const SubpassDesc subpassDescription // VkSubpassDescription || VkSubpassDescription2KHR
+ const SubpassDesc subpassDescription // VkSubpassDescription || VkSubpassDescription2
(
// || VkStructureType sType;
DE_NULL, // || const void* pNext;
subpass.getPipelineBindPoint(), // VkPipelineBindPoint pipelineBindPoint; || VkPipelineBindPoint pipelineBindPoint;
0u, // || deUint32 viewMask;
(deUint32)inputAttachmentReferences.size(), // deUint32 inputAttachmentCount; || deUint32 inputAttachmentCount;
- inputAttachmentReferences.empty() ? DE_NULL : &inputAttachmentReferences[0], // const VkAttachmentReference* pInputAttachments; || const VkAttachmentReference2KHR* pInputAttachments;
+ inputAttachmentReferences.empty() ? DE_NULL : &inputAttachmentReferences[0], // const VkAttachmentReference* pInputAttachments; || const VkAttachmentReference2* pInputAttachments;
(deUint32)colorAttachmentReferences.size(), // deUint32 colorAttachmentCount; || deUint32 colorAttachmentCount;
- colorAttachmentReferences.empty() ? DE_NULL : &colorAttachmentReferences[0], // const VkAttachmentReference* pColorAttachments; || const VkAttachmentReference2KHR* pColorAttachments;
- resolveAttachmentReferences.empty() ? DE_NULL : &resolveAttachmentReferences[0], // const VkAttachmentReference* pResolveAttachments; || const VkAttachmentReference2KHR* pResolveAttachments;
- &depthStencilAttachmentReferences[0], // const VkAttachmentReference* pDepthStencilAttachment; || const VkAttachmentReference2KHR* pDepthStencilAttachment;
+ colorAttachmentReferences.empty() ? DE_NULL : &colorAttachmentReferences[0], // const VkAttachmentReference* pColorAttachments; || const VkAttachmentReference2* pColorAttachments;
+ resolveAttachmentReferences.empty() ? DE_NULL : &resolveAttachmentReferences[0], // const VkAttachmentReference* pResolveAttachments; || const VkAttachmentReference2* pResolveAttachments;
+ &depthStencilAttachmentReferences[0], // const VkAttachmentReference* pDepthStencilAttachment; || const VkAttachmentReference2* pDepthStencilAttachment;
(deUint32)preserveAttachmentReferences->size(), // deUint32 preserveAttachmentCount; || deUint32 preserveAttachmentCount;
preserveAttachmentReferences->empty() ? DE_NULL : &(*preserveAttachmentReferences)[0] // const deUint32* pPreserveAttachments; || const deUint32* pPreserveAttachments;
);
template <typename SubpassDep>
SubpassDep createSubpassDependency (const SubpassDependency& dependencyInfo)
{
- const SubpassDep dependency // VkSubpassDependency || VkSubpassDependency2KHR
+ const SubpassDep dependency // VkSubpassDependency || VkSubpassDependency2
(
// || VkStructureType sType
DE_NULL, // || const void* pNext
for (size_t depNdx = 0; depNdx < renderPassInfo.getDependencies().size(); depNdx++)
dependencies.push_back(createSubpassDependency<SubpassDep>(renderPassInfo.getDependencies()[depNdx]));
- const RenderPassCreateInfo renderPassCreator // VkRenderPassCreateInfo || VkRenderPassCreateInfo2KHR
+ const RenderPassCreateInfo renderPassCreator // VkRenderPassCreateInfo || VkRenderPassCreateInfo2
(
// VkStructureType sType; || VkStructureType sType;
inputAspectCreateInfo.get(), // const void* pNext; || const void* pNext;
(VkRenderPassCreateFlags)0u, // VkRenderPassCreateFlags flags; || VkRenderPassCreateFlags flags;
(deUint32)attachments.size(), // deUint32 attachmentCount; || deUint32 attachmentCount;
- (attachments.empty() ? DE_NULL : &attachments[0]), // const VkAttachmentDescription* pAttachments; || const VkAttachmentDescription2KHR* pAttachments;
+ (attachments.empty() ? DE_NULL : &attachments[0]), // const VkAttachmentDescription* pAttachments; || const VkAttachmentDescription2* pAttachments;
(deUint32)subpasses.size(), // deUint32 subpassCount; || deUint32 subpassCount;
- (subpasses.empty() ? DE_NULL : &subpasses[0]), // const VkSubpassDescription* pSubpasses; || const VkSubpassDescription2KHR* pSubpasses;
+ (subpasses.empty() ? DE_NULL : &subpasses[0]), // const VkSubpassDescription* pSubpasses; || const VkSubpassDescription2* pSubpasses;
(deUint32)dependencies.size(), // deUint32 dependencyCount; || deUint32 dependencyCount;
- (dependencies.empty() ? DE_NULL : &dependencies[0]), // const VkSubpassDependency* pDependencies; || const VkSubpassDependency2KHR* pDependencies;
+ (dependencies.empty() ? DE_NULL : &dependencies[0]), // const VkSubpassDependency* pDependencies; || const VkSubpassDependency2* pDependencies;
0u, // || deUint32 correlatedViewMaskCount;
DE_NULL // || const deUint32* pCorrelatedViewMasks;
);
VkImageLayout finalLayout);
};
-class AttachmentDescription2 : public vk::VkAttachmentDescription2KHR
+class AttachmentDescription2 : public vk::VkAttachmentDescription2
{
public:
AttachmentDescription2 (const void* pNext,
VkImageAspectFlags aspectMask);
};
-class AttachmentReference2 : public vk::VkAttachmentReference2KHR
+class AttachmentReference2 : public vk::VkAttachmentReference2
{
public:
AttachmentReference2 (const void* pNext,
const deUint32* pPreserveAttachments);
};
-class SubpassDescription2 : public vk::VkSubpassDescription2KHR
+class SubpassDescription2 : public vk::VkSubpassDescription2
{
public:
SubpassDescription2 (const void* pNext,
VkPipelineBindPoint pipelineBindPoint,
deUint32 viewMask,
deUint32 inputAttachmentCount,
- const VkAttachmentReference2KHR* pInputAttachments,
+ const VkAttachmentReference2* pInputAttachments,
deUint32 colorAttachmentCount,
- const VkAttachmentReference2KHR* pColorAttachments,
- const VkAttachmentReference2KHR* pResolveAttachments,
- const VkAttachmentReference2KHR* pDepthStencilAttachment,
+ const VkAttachmentReference2* pColorAttachments,
+ const VkAttachmentReference2* pResolveAttachments,
+ const VkAttachmentReference2* pDepthStencilAttachment,
deUint32 preserveAttachmentCount,
const deUint32* pPreserveAttachments);
};
deInt32 viewOffset);
};
-class SubpassDependency2 : public vk::VkSubpassDependency2KHR
+class SubpassDependency2 : public vk::VkSubpassDependency2
{
public:
SubpassDependency2 (const void* pNext,
VkDevice device) const;
};
-class RenderPassCreateInfo2 : public VkRenderPassCreateInfo2KHR
+class RenderPassCreateInfo2 : public VkRenderPassCreateInfo2
{
public:
RenderPassCreateInfo2 (const void* pNext,
VkRenderPassCreateFlags flags,
deUint32 attachmentCount,
- const VkAttachmentDescription2KHR* pAttachments,
+ const VkAttachmentDescription2* pAttachments,
deUint32 subpassCount,
- const VkSubpassDescription2KHR* pSubpasses,
+ const VkSubpassDescription2* pSubpasses,
deUint32 dependencyCount,
- const VkSubpassDependency2KHR* pDependencies,
+ const VkSubpassDependency2* pDependencies,
deUint32 correlatedViewMaskCount,
const deUint32* pCorrelatedViewMasks);
VkSubpassContents contents;
};
-class SubpassBeginInfo2 : public VkSubpassBeginInfoKHR
+class SubpassBeginInfo2 : public VkSubpassBeginInfo
{
public:
SubpassBeginInfo2 (const void* pNext,
SubpassEndInfo1 (const void* pNext);
};
-class SubpassEndInfo2 : public VkSubpassEndInfoKHR
+class SubpassEndInfo2 : public VkSubpassEndInfo
{
public:
SubpassEndInfo2 (const void* pNext);
if (!context.isDeviceFunctionalitySupported("VK_KHR_shader_atomic_int64"))
TCU_THROW(NotSupportedError, "Missing extension: VK_KHR_shader_atomic_int64");
- VkPhysicalDeviceShaderAtomicInt64FeaturesKHR shaderAtomicInt64Features;
- deMemset(&shaderAtomicInt64Features, 0x0, sizeof(VkPhysicalDeviceShaderAtomicInt64FeaturesKHR));
- shaderAtomicInt64Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR;
+ VkPhysicalDeviceShaderAtomicInt64Features shaderAtomicInt64Features;
+ deMemset(&shaderAtomicInt64Features, 0x0, sizeof(VkPhysicalDeviceShaderAtomicInt64Features));
+ shaderAtomicInt64Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
shaderAtomicInt64Features.pNext = DE_NULL;
VkPhysicalDeviceFeatures2 features;
void ShaderDiscardCase::checkSupport(Context& context) const
{
- if (m_demote && !context.getShaderDemoteToHelperInvocationFeatures().shaderDemoteToHelperInvocation)
+ if (m_demote && !context.getShaderDemoteToHelperInvocationFeaturesEXT().shaderDemoteToHelperInvocation)
TCU_THROW(NotSupportedError, "VK_EXT_shader_demote_to_helper_invocation not supported");
}
vktSpvAsmWorkgroupMemoryTests.hpp
vktSpvAsmPtrAccessChainTests.cpp
vktSpvAsmPtrAccessChainTests.hpp
+ vktSpvAsmFloatControlsExtensionlessTests.cpp
+ vktSpvAsmFloatControlsExtensionlessTests.hpp
)
set(DEQP_VK_SPIRV_ASSEMBLY_LIBS
* The memory is created as host visible and passed back as a vk::Allocation
* instance via outMemory.
*//*--------------------------------------------------------------------*/
-Move<VkBuffer> createBufferAndBindMemory (const DeviceInterface& vkdi,
+Move<VkBuffer> createBufferAndBindMemory (vkt::Context& context,
+ const DeviceInterface& vkdi,
const VkDevice& device,
VkDescriptorType dtype,
Allocator& allocator,
VkBufferUsageFlags usageFlags = (VkBufferUsageFlags)0u;
if (physStorageBuffer)
- usageFlags |= VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT;
+ usageFlags |= VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
switch (dtype)
{
Move<VkBuffer> buffer (createBuffer(vkdi, device, &bufferCreateInfo));
const VkMemoryRequirements requirements = getBufferMemoryRequirements(vkdi, device, *buffer);
- AllocationMp bufferMemory = allocator.allocate(requirements, coherent ? MemoryRequirement::Coherent | MemoryRequirement::HostVisible : MemoryRequirement::HostVisible);
+ AllocationMp bufferMemory = allocator.allocate(requirements,
+ (coherent ? MemoryRequirement::Coherent : MemoryRequirement::Any) |
+ (context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address") && physStorageBuffer ? MemoryRequirement::DeviceAddress : MemoryRequirement::Any) |
+ MemoryRequirement::HostVisible);
VK_CHECK(vkdi.bindBufferMemory(device, *buffer, bufferMemory->getMemory(), bufferMemory->getOffset()));
*outMemory = bufferMemory;
vector<VkDescriptorType> descriptorTypes;
// Check all required extensions are supported
- for (std::vector<std::string>::const_iterator i = m_shaderSpec.extensions.begin(); i != m_shaderSpec.extensions.end(); ++i)
- {
- if (!de::contains(m_context.getDeviceExtensions().begin(), m_context.getDeviceExtensions().end(), *i))
- TCU_THROW(NotSupportedError, (std::string("Extension not supported: ") + *i).c_str());
- }
+ for (const auto& ext : m_shaderSpec.extensions)
+ m_context.requireDeviceFunctionality(ext);
// Core features
{
if (!isFloatControlsFeaturesSupported(m_context, m_shaderSpec.requestedVulkanFeatures.floatControlsProperties))
TCU_THROW(NotSupportedError, "Requested Float Controls features not supported");
- if (m_shaderSpec.usesPhysStorageBuffer && !m_context.getBufferDeviceAddressFeatures().bufferDeviceAddress)
+ if (m_shaderSpec.usesPhysStorageBuffer && !m_context.isBufferDeviceAddressSupported())
TCU_THROW(NotSupportedError, "Request physical storage buffer feature not supported");
}
const size_t numBytes = inputBytes.size();
AllocationMp bufferAlloc;
- BufferHandleUp* buffer = new BufferHandleUp(createBufferAndBindMemory(vkdi, device, descType, allocator, numBytes, &bufferAlloc, m_shaderSpec.usesPhysStorageBuffer, m_shaderSpec.coherentMemory));
+ BufferHandleUp* buffer = new BufferHandleUp(createBufferAndBindMemory(m_context, vkdi, device, descType, allocator, numBytes, &bufferAlloc, m_shaderSpec.usesPhysStorageBuffer, m_shaderSpec.coherentMemory));
setMemory(vkdi, device, &*bufferAlloc, numBytes, &inputBytes.front(), m_shaderSpec.coherentMemory);
inputBuffers.push_back(BufferHandleSp(buffer));
const size_t numBytes = inputBytes.size();
AllocationMp bufferAlloc;
- BufferHandleUp* buffer = new BufferHandleUp(createBufferAndBindMemory(vkdi, device, descType, allocator, numBytes, &bufferAlloc, m_shaderSpec.usesPhysStorageBuffer));
+ BufferHandleUp* buffer = new BufferHandleUp(createBufferAndBindMemory(m_context, vkdi, device, descType, allocator, numBytes, &bufferAlloc, m_shaderSpec.usesPhysStorageBuffer));
AllocationMp imageAlloc;
ImageHandleUp* image = new ImageHandleUp(createImageAndBindMemory(vkdi, device, descType, allocator, queueFamilyIndex, &imageAlloc));
output->getBytes(outputBytes);
const size_t numBytes = outputBytes.size();
- BufferHandleUp* buffer = new BufferHandleUp(createBufferAndBindMemory(vkdi, device, descriptorTypes.back(), allocator, numBytes, &alloc, m_shaderSpec.usesPhysStorageBuffer, m_shaderSpec.coherentMemory));
+ BufferHandleUp* buffer = new BufferHandleUp(createBufferAndBindMemory(m_context, vkdi, device, descriptorTypes.back(), allocator, numBytes, &alloc, m_shaderSpec.usesPhysStorageBuffer, m_shaderSpec.coherentMemory));
fillMemoryWithValue(vkdi, device, &*alloc, numBytes, 0xff, m_shaderSpec.coherentMemory);
descriptorInfos.push_back(vk::makeDescriptorBufferInfo(**buffer, 0u, numBytes));
// all the descriptors with just a desciptor to this new buffer.
if (m_shaderSpec.usesPhysStorageBuffer)
{
- VkBufferDeviceAddressInfoEXT info =
+ const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
+
+ VkBufferDeviceAddressInfo info =
{
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
0, // VkBuffer buffer
};
for (deUint32 inputNdx = 0; inputNdx < m_shaderSpec.inputs.size(); ++inputNdx)
{
info.buffer = **inputBuffers[inputNdx];
- VkDeviceAddress addr = vkdi.getBufferDeviceAddressEXT(device, &info);
+ VkDeviceAddress addr;
+ if (useKHR)
+ addr = vkdi.getBufferDeviceAddress(device, &info);
+ else
+ addr = vkdi.getBufferDeviceAddressEXT(device, &info);
gpuAddrs.push_back(addr);
}
for (deUint32 outputNdx = 0; outputNdx < m_shaderSpec.outputs.size(); ++outputNdx)
{
info.buffer = **outputBuffers[outputNdx];
- VkDeviceAddress addr = vkdi.getBufferDeviceAddressEXT(device, &info);
+ VkDeviceAddress addr;
+ if (useKHR)
+ addr = vkdi.getBufferDeviceAddress(device, &info);
+ else
+ addr = vkdi.getBufferDeviceAddressEXT(device, &info);
gpuAddrs.push_back(addr);
}
const size_t numBytes = gpuAddrs.size() * sizeof(VkDeviceAddress);
AllocationMp bufferAlloc;
- BufferHandleUp* buffer = new BufferHandleUp(createBufferAndBindMemory(vkdi, device, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
+ BufferHandleUp* buffer = new BufferHandleUp(createBufferAndBindMemory(m_context, vkdi, device, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
allocator, numBytes, &bufferAlloc, false, m_shaderSpec.coherentMemory));
setMemory(vkdi, device, &*bufferAlloc, numBytes, &gpuAddrs.front(), m_shaderSpec.coherentMemory);
}
}
-std::string getComputeAsmShaderPreamble (const std::string& capabilities, const std::string& extensions, const std::string& exeModes, const std::string& extraEntryPoints)
+std::string getComputeAsmShaderPreamble (const std::string& capabilities,
+ const std::string& extensions,
+ const std::string& exeModes,
+ const std::string& extraEntryPoints,
+ const std::string& extraEntryPointsArguments)
{
return
std::string("OpCapability Shader\n") +
capabilities +
extensions +
"OpMemoryModel Logical GLSL450\n"
- "OpEntryPoint GLCompute %main \"main\" %id\n" +
+ "OpEntryPoint GLCompute %main \"main\" %id " + extraEntryPointsArguments + "\n" +
extraEntryPoints +
"OpExecutionMode %main LocalSize 1 1 1\n" +
exeModes;
"%i64arr = OpTypeRuntimeArray %i64\n";
}
-const char* getComputeAsmInputOutputBuffer (void)
-{
- return
+std::string getComputeAsmInputOutputBuffer (std::string blockStorageClass)
+{ // Uniform | StorageBuffer
+ return std::string() +
"%buf = OpTypeStruct %f32arr\n"
- "%bufptr = OpTypePointer Uniform %buf\n"
- "%indata = OpVariable %bufptr Uniform\n"
- "%outdata = OpVariable %bufptr Uniform\n";
+ "%bufptr = OpTypePointer " + blockStorageClass + " %buf\n"
+ "%indata = OpVariable %bufptr " + blockStorageClass + "\n"
+ "%outdata = OpVariable %bufptr " + blockStorageClass + "\n";
}
-const char* getComputeAsmInputOutputBufferTraits (void)
-{
- return
- "OpDecorate %buf BufferBlock\n"
+std::string getComputeAsmInputOutputBufferTraits (std::string blockStorageClass)
+{ // BufferBlock | Block
+ return std::string() +
+ "OpDecorate %buf " + blockStorageClass + "\n"
"OpDecorate %indata DescriptorSet 0\n"
"OpDecorate %indata Binding 0\n"
"OpDecorate %outdata DescriptorSet 0\n"
SpirvVersion spirvVersion;
bool coherentMemory;
bool usesPhysStorageBuffer;
+ bool spirvVersion14;
ComputeShaderSpec (void)
: entryPoint ("main")
, spirvVersion (SPIRV_VERSION_1_0)
, coherentMemory (false)
, usesPhysStorageBuffer (false)
+ , spirvVersion14 (false)
{}
};
* \brief Helper functions for SPIR-V assembly shared by various tests
*//*--------------------------------------------------------------------*/
-std::string getComputeAsmShaderPreamble (const std::string& capabilities = "", const std::string& extensions = "", const std::string& exeModes = "", const std::string& extraEntryPoints = "");
+std::string getComputeAsmShaderPreamble (const std::string& capabilities = "",
+ const std::string& extensions = "",
+ const std::string& exeModes = "",
+ const std::string& extraEntryPoints = "",
+ const std::string& extraEntryPointsArguments = "");
const char* getComputeAsmShaderPreambleWithoutLocalSize (void);
std::string getComputeAsmCommonTypes (std::string blockStorageClass = "Uniform");
const char* getComputeAsmCommonInt64Types (void);
* Declares two uniform variables (indata, outdata) of type
* "struct { float[] }". Depends on type "f32arr" (for "float[]").
*//*--------------------------------------------------------------------*/
-const char* getComputeAsmInputOutputBuffer (void);
+std::string getComputeAsmInputOutputBuffer (std::string blockStorageClass = "Uniform");
/*--------------------------------------------------------------------*//*!
* Declares buffer type and layout for uniform variables indata and
* outdata. Both of them are SSBO bounded to descriptor set 0.
* indata is at binding point 0, while outdata is at 1.
*//*--------------------------------------------------------------------*/
-const char* getComputeAsmInputOutputBufferTraits (void);
+std::string getComputeAsmInputOutputBufferTraits (std::string blockStorageClass = "BufferBlock");
bool verifyOutput (const std::vector<Resource>&,
const std::vector<AllocationSp>& outputAllocs,
--- /dev/null
+/*-------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2019 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief SPIR-V Float Control SPIR-V tokens test
+ *//*--------------------------------------------------------------------*/
+
+#include "vkApiVersion.hpp"
+
+#include "vktSpvAsmFloatControlsExtensionlessTests.hpp"
+#include "vktTestCase.hpp"
+#include "vktSpvAsmComputeShaderCase.hpp"
+
+#include "deRandom.hpp"
+#include "deStringUtil.hpp"
+#include "tcuCommandLine.hpp"
+#include "vkQueryUtil.hpp"
+
+namespace vkt
+{
+namespace SpirVAssembly
+{
+
+static const char* TEST_FEATURE_DENORM_PRESERVE = "DenormPreserve";
+static const char* TEST_FEATURE_DENORM_FLUSH_TO_ZERO = "DenormFlushToZero";
+static const char* TEST_FEATURE_SIGNED_ZERO_INF_NAN_PRESERVE = "SignedZeroInfNanPreserve";
+static const char* TEST_FEATURE_ROUNDING_MODE_RTE = "RoundingModeRTE";
+static const char* TEST_FEATURE_ROUNDING_MODE_RTZ = "RoundingModeRTZ";
+
+using namespace vk;
+using std::map;
+using std::string;
+using std::vector;
+
+static void getComputeSourceCode (std::string& computeSourceCode, const std::string& featureName, const int fpWideness)
+{
+ const std::string capability = "OpCapability " + featureName + "\n";
+ const std::string exeModes = "OpExecutionMode %main " + featureName + " " + de::toString(fpWideness) + "\n";
+
+ computeSourceCode =
+ string(getComputeAsmShaderPreamble(capability, "", exeModes, "", "%indata %outdata")) +
+
+ "OpSource GLSL 430\n"
+ "OpName %main \"main\"\n"
+ "OpName %id \"gl_GlobalInvocationID\"\n"
+
+ "OpDecorate %id BuiltIn GlobalInvocationId\n"
+
+ + getComputeAsmInputOutputBufferTraits("Block") + getComputeAsmCommonTypes("StorageBuffer") + getComputeAsmInputOutputBuffer("StorageBuffer") +
+
+ "%id = OpVariable %uvec3ptr Input\n"
+ "%zero = OpConstant %i32 0\n"
+
+ "%main = OpFunction %void None %voidf\n"
+ "%label = OpLabel\n"
+ "%idval = OpLoad %uvec3 %id\n"
+ "%x = OpCompositeExtract %u32 %idval 0\n"
+
+ " OpNop\n" // Inside a function body
+
+ "%inloc = OpAccessChain %f32ptr %indata %zero %x\n"
+ "%inval = OpLoad %f32 %inloc\n"
+ "%neg = OpFNegate %f32 %inval\n"
+ "%outloc = OpAccessChain %f32ptr %outdata %zero %x\n"
+ " OpStore %outloc %neg\n"
+ " OpReturn\n"
+ " OpFunctionEnd\n";
+}
+
+static ComputeShaderSpec getComputeShaderSpec (Context& ctx, const std::string& testCaseName)
+{
+ const deUint32 baseSeed = deStringHash(testCaseName.c_str()) + static_cast<deUint32>(ctx.getTestContext().getCommandLine().getBaseSeed());
+ de::Random rnd (baseSeed);
+ const int numElements = 64;
+ vector<float> inputFloats (numElements, 0);
+ vector<float> outputFloats (numElements, 0);
+ ComputeShaderSpec spec;
+
+ for (size_t ndx = 0; ndx < numElements; ++ndx)
+ inputFloats[ndx] = rnd.getFloat(1.0f, 100.0f);
+
+ for (size_t ndx = 0; ndx < numElements; ++ndx)
+ outputFloats[ndx] = -inputFloats[ndx];
+
+ // Shader source code can be retrieved to complete definition of ComputeShaderSpec, though it is not required at this stage
+ // getComputeSourceCode (spec.assembly);
+
+ spec.inputs.push_back(BufferSp(new Float32Buffer(inputFloats)));
+ spec.outputs.push_back(BufferSp(new Float32Buffer(outputFloats)));
+
+ spec.numWorkGroups = tcu::IVec3(numElements, 1, 1);
+ spec.verifyIO = &verifyOutput;
+
+ return spec;
+}
+
+VkBool32 getFloatControlsProperty(Context& context, const int fpWideness, const std::string& featureName)
+{
+ VkPhysicalDeviceFloatControlsProperties floatControlsProperties;
+ deMemset(&floatControlsProperties, 0, sizeof(floatControlsProperties));
+ floatControlsProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
+
+ VkPhysicalDeviceProperties2 properties;
+ deMemset(&properties, 0, sizeof(properties));
+ properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
+ properties.pNext = &floatControlsProperties;
+
+ context.getInstanceInterface().getPhysicalDeviceProperties2(context.getPhysicalDevice(), &properties);
+
+ if (fpWideness == 16)
+ {
+ if (featureName == TEST_FEATURE_DENORM_PRESERVE ) return floatControlsProperties.shaderDenormPreserveFloat16;
+ if (featureName == TEST_FEATURE_DENORM_FLUSH_TO_ZERO ) return floatControlsProperties.shaderDenormFlushToZeroFloat16;
+ if (featureName == TEST_FEATURE_SIGNED_ZERO_INF_NAN_PRESERVE) return floatControlsProperties.shaderSignedZeroInfNanPreserveFloat16;
+ if (featureName == TEST_FEATURE_ROUNDING_MODE_RTE ) return floatControlsProperties.shaderRoundingModeRTEFloat16;
+ if (featureName == TEST_FEATURE_ROUNDING_MODE_RTZ ) return floatControlsProperties.shaderRoundingModeRTZFloat16;
+ }
+
+ if (fpWideness == 32)
+ {
+ if (featureName == TEST_FEATURE_DENORM_PRESERVE ) return floatControlsProperties.shaderDenormPreserveFloat32;
+ if (featureName == TEST_FEATURE_DENORM_FLUSH_TO_ZERO ) return floatControlsProperties.shaderDenormFlushToZeroFloat32;
+ if (featureName == TEST_FEATURE_SIGNED_ZERO_INF_NAN_PRESERVE) return floatControlsProperties.shaderSignedZeroInfNanPreserveFloat32;
+ if (featureName == TEST_FEATURE_ROUNDING_MODE_RTE ) return floatControlsProperties.shaderRoundingModeRTEFloat32;
+ if (featureName == TEST_FEATURE_ROUNDING_MODE_RTZ ) return floatControlsProperties.shaderRoundingModeRTZFloat32;
+ }
+
+ if (fpWideness == 64)
+ {
+ if (featureName == TEST_FEATURE_DENORM_PRESERVE ) return floatControlsProperties.shaderDenormPreserveFloat64;
+ if (featureName == TEST_FEATURE_DENORM_FLUSH_TO_ZERO ) return floatControlsProperties.shaderDenormFlushToZeroFloat64;
+ if (featureName == TEST_FEATURE_SIGNED_ZERO_INF_NAN_PRESERVE) return floatControlsProperties.shaderSignedZeroInfNanPreserveFloat64;
+ if (featureName == TEST_FEATURE_ROUNDING_MODE_RTE ) return floatControlsProperties.shaderRoundingModeRTEFloat64;
+ if (featureName == TEST_FEATURE_ROUNDING_MODE_RTZ ) return floatControlsProperties.shaderRoundingModeRTZFloat64;
+ }
+
+ TCU_THROW(InternalError, "Unknown property requested");
+}
+
+class SpvAsmFloatControlsExtensionlessInstance : public ComputeShaderSpec, public SpvAsmComputeShaderInstance
+{
+public:
+ SpvAsmFloatControlsExtensionlessInstance (Context& ctx, const std::string& testCaseName);
+};
+
+SpvAsmFloatControlsExtensionlessInstance::SpvAsmFloatControlsExtensionlessInstance (Context& ctx, const std::string& testCaseName)
+ : ComputeShaderSpec(getComputeShaderSpec(ctx, testCaseName))
+ , SpvAsmComputeShaderInstance(ctx, *this)
+{
+}
+
+SpvAsmFloatControlsExtensionlessCase::SpvAsmFloatControlsExtensionlessCase (tcu::TestContext& testCtx, const char* name, const char* description, const char* featureName, const int fpWideness, const bool spirv14)
+ : TestCase (testCtx, name, description)
+ , m_featureName (featureName)
+ , m_fpWideness (fpWideness)
+ , m_spirv14 (spirv14)
+{
+}
+
+void SpvAsmFloatControlsExtensionlessCase::initPrograms (SourceCollections& programCollection) const
+{
+ const bool allowSpirv14 = true;
+ std::string comp;
+
+ getComputeSourceCode(comp, m_featureName, m_fpWideness);
+
+ programCollection.spirvAsmSources.add("compute") << SpirVAsmBuildOptions(programCollection.usedVulkanVersion, SPIRV_VERSION_1_4, allowSpirv14) << comp;
+}
+
+void SpvAsmFloatControlsExtensionlessCase::checkSupport (Context& context) const
+{
+ if (m_spirv14)
+ {
+ context.requireDeviceFunctionality("VK_KHR_spirv_1_4");
+ }
+ else
+ {
+ if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+ TCU_THROW(NotSupportedError, "Test requires Vulkan 1.2");
+ }
+
+ if (m_fpWideness == 16)
+ {
+ context.requireDeviceFunctionality("VK_KHR_shader_float16_int8");
+ if (!isFloat16Int8FeaturesSupported(context, EXTFLOAT16INT8FEATURES_FLOAT16))
+ TCU_THROW(NotSupportedError, "Floating point number of width 16 bit are not supported");
+ }
+
+ if (m_fpWideness == 64)
+ {
+ context.requireDeviceCoreFeature(DEVICE_CORE_FEATURE_SHADER_FLOAT64);
+ }
+
+ if (!getFloatControlsProperty(context, m_fpWideness, m_featureName))
+ TCU_THROW(NotSupportedError, "Property is not supported");
+}
+
+TestInstance* SpvAsmFloatControlsExtensionlessCase::createInstance (Context& context) const
+{
+ return new SpvAsmFloatControlsExtensionlessInstance(context, getName());
+}
+
+tcu::TestCaseGroup* createFloatControlsExtensionlessGroup (tcu::TestContext& testCtx)
+{
+ const char* spirVersions[] = { "spirv1p4", "vulkan1_2" };
+ const int floatingPointWideness[] = { 16, 32, 64 };
+ const struct FpFeatures
+ {
+ const char* testName;
+ const char* featureName;
+ }
+ fpFeatures[] =
+ {
+ { "denorm_preserve", TEST_FEATURE_DENORM_PRESERVE },
+ { "denorm_flush_to_zero", TEST_FEATURE_DENORM_FLUSH_TO_ZERO },
+ { "signed_zero_inf_nan_preserve", TEST_FEATURE_SIGNED_ZERO_INF_NAN_PRESERVE },
+ { "rounding_mode_rte", TEST_FEATURE_ROUNDING_MODE_RTE },
+ { "rounding_mode_rtz", TEST_FEATURE_ROUNDING_MODE_RTZ },
+ };
+ de::MovePtr<tcu::TestCaseGroup> group (new tcu::TestCaseGroup(testCtx, "float_controls_extensionless", "Tests float controls without extension"));
+
+ for (int spirVersionsNdx = 0; spirVersionsNdx < DE_LENGTH_OF_ARRAY(spirVersions); ++spirVersionsNdx)
+ {
+ const bool spirv14 = (spirVersionsNdx == 0);
+ de::MovePtr<tcu::TestCaseGroup> spirVersionGroup (new tcu::TestCaseGroup(testCtx, spirVersions[spirVersionsNdx], ""));
+
+ for (int fpWidenessNdx = 0; fpWidenessNdx < DE_LENGTH_OF_ARRAY(floatingPointWideness); ++fpWidenessNdx)
+ for (int execModeNdx = 0; execModeNdx < DE_LENGTH_OF_ARRAY(fpFeatures); ++execModeNdx)
+ {
+ const int fpWideness = floatingPointWideness[fpWidenessNdx];
+ const std::string testName = fpFeatures[execModeNdx].testName;
+ const char* featureName = fpFeatures[execModeNdx].featureName;
+ const std::string fullTestName = "fp" + de::toString(fpWideness) + "_" + testName;
+
+ spirVersionGroup->addChild(new SpvAsmFloatControlsExtensionlessCase(testCtx, fullTestName.c_str(), "", featureName, fpWideness, spirv14));
+ }
+
+ group->addChild(spirVersionGroup.release());
+ }
+
+ return group.release();
+}
+
+
+} // SpirVAssembly
+} // vkt
--- /dev/null
+#ifndef _VKTSPVASMFLOATCONTROLSEXTENSIONLESSTESTS_HPP
+#define _VKTSPVASMFLOATCONTROLSEXTENSIONLESSTESTS_HPP
+/*-------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2019 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief SPIR-V Float Control SPIR-V tokens test
+ *//*--------------------------------------------------------------------*/
+
+#include "vkPrograms.hpp"
+#include "vktTestCase.hpp"
+
+#include "vktSpvAsmComputeShaderTestUtil.hpp"
+
+namespace vkt
+{
+namespace SpirVAssembly
+{
+
+class SpvAsmFloatControlsExtensionlessCase : public TestCase
+{
+public:
+ SpvAsmFloatControlsExtensionlessCase (tcu::TestContext& testCtx, const char* name, const char* description, const char* featureName, const int fpWideness, const bool spirv14);
+ void initPrograms (vk::SourceCollections& programCollection) const;
+ TestInstance* createInstance (Context& context) const;
+ virtual void checkSupport (Context& context) const;
+
+protected:
+ const char* m_featureName;
+ const int m_fpWideness;
+ const bool m_spirv14;
+};
+
+tcu::TestCaseGroup* createFloatControlsExtensionlessGroup (tcu::TestContext& testCtx);
+
+} // SpirVAssembly
+} // vkt
+
+#endif // _VKTSPVASMFLOATCONTROLSEXTENSIONLESSTESTS_HPP
{
const char* name;
SettingsMode testedMode;
- VkShaderFloatControlsIndependenceKHR independenceSetting;
+ VkShaderFloatControlsIndependence independenceSetting;
SettingsOption fp16Option;
SettingsOption fp32Option;
TestCaseGroup* group = new TestCaseGroup(testCtx, "independence_settings", "");
parentGroup->addChild(group);
- using SFCI = VkShaderFloatControlsIndependenceKHR;
+ using SFCI = VkShaderFloatControlsIndependence;
const SFCI independence32 = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR;
const SFCI independenceAll = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR;
"${capability:opt}\n"
"${extension:opt}\n"
"OpMemoryModel Logical GLSL450\n"
- "OpEntryPoint Geometry %BP_main \"main\" %BP_out_gl_position %BP_gl_PrimitiveID %BP_gl_in %BP_out_color %BP_in_color ${IF_entrypoint:opt} \n"
+ "OpEntryPoint Geometry %BP_main \"main\" %BP_out_gl_position %BP_gl_PrimitiveID %BP_gl_in %BP_out_color %BP_in_color ${IF_entrypoint:opt} ${GL_entrypoint:opt} \n"
"OpExecutionMode %BP_main Triangles\n"
"OpExecutionMode %BP_main Invocations 1\n"
"OpExecutionMode %BP_main OutputTriangleStrip\n"
VerifyIOFunc verifyIO;
GraphicsVerifyBinaryFunc verifyBinary;
SpirvVersion spirvVersion;
+ bool spirvVersion14;
GraphicsResources()
- : inputFormat (VK_FORMAT_R32G32B32A32_SFLOAT)
- , verifyIO (DE_NULL)
- , verifyBinary (DE_NULL)
- , spirvVersion (SPIRV_VERSION_1_0)
+ : inputFormat (VK_FORMAT_R32G32B32A32_SFLOAT)
+ , verifyIO (DE_NULL)
+ , verifyBinary (DE_NULL)
+ , spirvVersion (SPIRV_VERSION_1_0)
+ , spirvVersion14 (false)
{}
};
#include "vktSpvAsmWorkgroupMemoryTests.hpp"
#include "vktSpvAsmSignedIntCompareTests.hpp"
#include "vktSpvAsmPtrAccessChainTests.hpp"
+#include "vktSpvAsmFloatControlsExtensionlessTests.hpp"
#include "vktSpvAsm64bitCompareTests.hpp"
#include <cmath>
computeTests->addChild(createOpNMinGroup(testCtx));
computeTests->addChild(createOpNMaxGroup(testCtx));
computeTests->addChild(createOpNClampGroup(testCtx));
+ computeTests->addChild(createFloatControlsExtensionlessGroup(testCtx));
{
de::MovePtr<tcu::TestCaseGroup> computeAndroidTests (new tcu::TestCaseGroup(testCtx, "android", "Android CTS Tests"));
#include "tcuDefs.hpp"
#include "vkDefs.hpp"
+#include "vktTestGroupUtil.hpp"
#include "vktAmberTestCase.hpp"
#include "vktSpvAsmSpirvVersion1p4Tests.hpp"
#include "vktTestGroupUtil.hpp"
"OpReturnValue %ret\n"
"OpFunctionEnd\n";
+ if (testParameters.spirvVersion > SPIRV_VERSION_1_3)
+ opSimpleTest["GL_entrypoint"] = "%BP_vertexIdInCurrentPatch";
+
switch (testParameters.operation)
{
case OPERATION_GRAPHICS_VERTEX: return createInstanceContext(vertFragPipelineStages, opSimpleTest);
}
}
-static void getComputeSourceCode (std::string& computeSourceCode)
+static void getComputeSourceCode (std::string& computeSourceCode, SpirvVersion spirvVersion)
{
- computeSourceCode =
- string(getComputeAsmShaderPreamble()) +
+ computeSourceCode = "";
+ if (spirvVersion > SPIRV_VERSION_1_3)
+ computeSourceCode += string(getComputeAsmShaderPreamble("", "", "", "", "%indata %outdata"));
+ else
+ computeSourceCode += string(getComputeAsmShaderPreamble());
+ computeSourceCode +=
"OpSource GLSL 430\n"
"OpName %main \"main\"\n"
"OpName %id \"gl_GlobalInvocationID\"\n"
"OpDecorate %id BuiltIn GlobalInvocationId\n" +
- string(getComputeAsmInputOutputBufferTraits()) +
- string(getComputeAsmCommonTypes()) +
- string(getComputeAsmInputOutputBuffer()) +
+ string(getComputeAsmInputOutputBufferTraits((spirvVersion > SPIRV_VERSION_1_3) ? "Block" : "BufferBlock")) +
+ string(getComputeAsmCommonTypes((spirvVersion > SPIRV_VERSION_1_3) ? "StorageBuffer" : "Uniform")) +
+ string(getComputeAsmInputOutputBuffer((spirvVersion > SPIRV_VERSION_1_3) ? "StorageBuffer" : "Uniform")) +
"%id = OpVariable %uvec3ptr Input\n"
"%zero = OpConstant %i32 0\n"
{
std::string comp;
- getComputeSourceCode(comp);
+ getComputeSourceCode(comp, m_testParameters.spirvVersion);
programCollection.spirvAsmSources.add("compute", &spirVAsmBuildOptions) << comp;
VkPhysicalDevice8BitStorageFeaturesKHR extensionFeatures = context.get8BitStorageFeatures();
if ((toCheck & EXT8BITSTORAGEFEATURES_STORAGE_BUFFER) != 0 && extensionFeatures.storageBuffer8BitAccess == VK_FALSE)
- TCU_FAIL("storageBuffer8BitAccess has to be supported");
+ return false;
if ((toCheck & EXT8BITSTORAGEFEATURES_UNIFORM_STORAGE_BUFFER) != 0 && extensionFeatures.uniformAndStorageBuffer8BitAccess == VK_FALSE)
return false;
bool isFloat16Int8FeaturesSupported (const Context& context, ExtensionFloat16Int8Features toCheck)
{
- const VkPhysicalDeviceFloat16Int8FeaturesKHR& extensionFeatures = context.getShaderFloat16Int8Features();
+ const VkPhysicalDeviceShaderFloat16Int8Features& extensionFeatures = context.getShaderFloat16Int8Features();
if ((toCheck & EXTFLOAT16INT8FEATURES_FLOAT16) != 0 && extensionFeatures.shaderFloat16 == VK_FALSE)
return false;
instanceInterface.getPhysicalDeviceProperties2(physicalDevice, &deviceProperties);
}
- using FCIndependence = VkShaderFloatControlsIndependenceKHR;
+ using FCIndependence = VkShaderFloatControlsIndependence;
FCIndependence fcInd32 = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR;
FCIndependence fcIndAll = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR;
FCIndependence fcIndNone = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR;
case SPIRV_VERSION_1_3:
case SPIRV_VERSION_1_4:
return VK_API_VERSION_1_1;
+ case SPIRV_VERSION_1_5:
+ return VK_API_VERSION_1_2;
default:
DE_ASSERT(0);
}
EXTFLOAT16INT8FEATURES_INT8 = (1u << 2),
};
typedef deUint32 ExtensionFloat16Int8Features;
-typedef vk::VkPhysicalDeviceFloatControlsPropertiesKHR ExtensionFloatControlsFeatures;
+typedef vk::VkPhysicalDeviceFloatControlsProperties ExtensionFloatControlsFeatures;
struct VulkanFeatures
{
const char** missingFeature);
// Returns true if the given 16bit storage extension features in `toCheck` are all supported.
-bool isCoreFeaturesSupported (const Context& context,
- const vk::VkPhysicalDeviceFeatures& toCheck,
- const char** missingFeature);
-
-// Returns true if the given 16bit storage extension features in `toCheck` are all supported.
bool is16BitStorageFeaturesSupported (const Context& context,
Extension16BitStorageFeatures toCheck);
incrAmuxBOutputFloats[i] = (inputSFloats[i] < 0) ? 1 + inputAFloats[i] : 1 + inputBFloats[i];
}
- const char *extensions = physPtrs ? "VK_EXT_buffer_device_address" : "VK_KHR_variable_pointers";
-
std::string stringTemplate =
"OpCapability Shader\n"
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
{ // Variable Pointer Reads (using OpFunctionCall)
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
{ // Variable Pointer Reads (using OpPhi)
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
{ // Variable Pointer Reads (using OpCopyObject)
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
{ // Test storing into Private variables.
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), description.c_str(), spec));
}
}
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
{ // Variable Pointer Writes
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedIncrOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
spec.inputs.push_back (Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back (Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
}
"%inputC_b = OpAccessChain %outer_struct_ptr %inputC %c_i32_1\n"
);
- const char *extensions = physPtrs ? "VK_EXT_buffer_device_address" : "VK_KHR_variable_pointers";
-
std::string stringTemplate =
"OpCapability Shader\n"
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
- spec.extensions.push_back(extensions);
+ if (!physPtrs)
+ spec.extensions.push_back("VK_KHR_variable_pointers");
group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
}
}
vector<BlockDataPtr> mappedBlockPtrs;
vk::VkFlags usageFlags = vk::VK_BUFFER_USAGE_STORAGE_BUFFER_BIT;
+ bool memoryDeviceAddress = false;
if (m_usePhysStorageBuffer)
- usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT;
+ {
+ usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
+ if (m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address"))
+ memoryDeviceAddress = true;
+ }
// Upload base buffers
const std::vector<int> bufferSizes = computeBufferSizes(m_interface, m_refLayout);
blockLocations[blockNdx] = BlockLocation(blockNdx, 0, bufferSize);
vk::Move<vk::VkBuffer> buffer = createBuffer(m_context, bufferSize, usageFlags);
- de::MovePtr<vk::Allocation> alloc = allocateAndBindMemory(m_context, *buffer, vk::MemoryRequirement::HostVisible);
+ de::MovePtr<vk::Allocation> alloc = allocateAndBindMemory(m_context, *buffer, vk::MemoryRequirement::HostVisible | (memoryDeviceAddress ? vk::MemoryRequirement::DeviceAddress : vk::MemoryRequirement::Any));
descriptors[blockNdx] = makeDescriptorBufferInfo(*buffer, 0ull, bufferSize);
const int totalBufferSize = curOffset;
vk::Move<vk::VkBuffer> buffer = createBuffer(m_context, totalBufferSize, usageFlags);
- de::MovePtr<vk::Allocation> alloc = allocateAndBindMemory(m_context, *buffer, vk::MemoryRequirement::HostVisible);
+ de::MovePtr<vk::Allocation> alloc = allocateAndBindMemory(m_context, *buffer, vk::MemoryRequirement::HostVisible | (memoryDeviceAddress ? vk::MemoryRequirement::DeviceAddress : vk::MemoryRequirement::Any));
mapPtrs.push_back(alloc->getHostPtr());
// Query the buffer device addresses and push them via push constants
if (m_usePhysStorageBuffer)
{
- vk::VkBufferDeviceAddressInfoEXT info =
+ const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
+
+ vk::VkBufferDeviceAddressInfo info =
{
- vk::VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT, // VkStructureType sType;
+ vk::VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
0, // VkBuffer buffer
};
for (deUint32 i = 0; i < descriptors.size(); ++i)
{
info.buffer = descriptors[i].buffer;
- vk::VkDeviceAddress addr = vk.getBufferDeviceAddressEXT(device, &info);
+ vk::VkDeviceAddress addr;
+ if (useKHR)
+ addr = vk.getBufferDeviceAddress(device, &info);
+ else
+ addr = vk.getBufferDeviceAddressEXT(device, &info);
addr += descriptors[i].offset;
gpuAddrs.push_back(addr);
}
(vk::VkPipelineLayoutCreateFlags)0,
1u, // deUint32 descriptorSetCount;
&*descriptorSetLayout, // const VkDescriptorSetLayout* pSetLayouts;
- m_usePhysStorageBuffer ? 1u : 0u, // deUint32 pushConstantRangeCount;
+ m_usePhysStorageBuffer ? 1u : 0u, // deUint32 pushConstantRangeCount;
&pushConstRange, // const VkPushConstantRange* pPushConstantRanges;
};
vk::Move<vk::VkPipelineLayout> pipelineLayout(createPipelineLayout(vk, device, &pipelineLayoutParams));
TCU_THROW(NotSupportedError, "storageBuffer8BitAccess not supported");
if (!context.getScalarBlockLayoutFeatures().scalarBlockLayout && usesScalarLayout(m_interface))
TCU_THROW(NotSupportedError, "scalarBlockLayout not supported");
- if (!context.getBufferDeviceAddressFeatures().bufferDeviceAddress && m_usePhysStorageBuffer)
+ if (m_usePhysStorageBuffer && !context.isBufferDeviceAddressSupported())
TCU_THROW(NotSupportedError, "Physical storage buffer pointers not supported");
return new SSBOLayoutCaseInstance(context, m_bufferMode, m_interface, m_refLayout, m_initialData, m_writeData, m_usePhysStorageBuffer);
}
enum OpType
{
OPTYPE_BROADCAST = 0,
+ OPTYPE_BROADCAST_NONCONST,
OPTYPE_BROADCAST_FIRST,
OPTYPE_LAST
};
return vkt::subgroups::checkCompute(datas, numWorkgroups, localSize, 3);
}
-std::string getOpTypeName(int opType)
+std::string getOpTypeCaseName(int opType)
{
switch (opType)
{
DE_FATAL("Unsupported op type");
return "";
case OPTYPE_BROADCAST:
- return "subgroupBroadcast";
+ return "subgroupbroadcast";
+ case OPTYPE_BROADCAST_NONCONST:
+ return "subgroupbroadcast_nonconst";
case OPTYPE_BROADCAST_FIRST:
- return "subgroupBroadcastFirst";
+ return "subgroupbroadcastfirst";
}
}
+
struct CaseDefinition
{
int opType;
<< " uint sgInvocation = gl_SubgroupInvocationID;\n";
}
- if (OPTYPE_BROADCAST == caseDef.opType)
+ const std::string fmt = subgroups::getFormatNameForGLSL(caseDef.format);
+
+ if (caseDef.opType == OPTYPE_BROADCAST)
{
bdy << " tempRes = 0x3;\n";
for (int i = 0; i < max; i++)
{
bdy << " {\n"
<< " const uint id = "<< i << ";\n"
- << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
- << broadcast << "(data[sgInvocation], id);\n"
+ << " " << fmt << " op = " << broadcast << "(data[sgInvocation], id);\n"
<< " if ((id < sgSize) && subgroupBallotBitExtract(mask, id))\n"
<< " {\n"
<< " if (op != data[id])\n"
<< " }\n";
}
}
+ else if (caseDef.opType == OPTYPE_BROADCAST_NONCONST)
+ {
+ const std::string validate = " if (subgroupBallotBitExtract(mask, id) && op != data[id])\n"
+ " tempResult = 0;\n";
+
+ bdy << " uint tempResult = 0x3;\n"
+ << " for (uint id = 0; id < sgSize; id++)\n"
+ << " {\n"
+ << " " << fmt << " op = " << broadcast << "(data[sgInvocation], id);\n"
+ << validate
+ << " }\n"
+ << " // Test lane id that is only uniform across active lanes\n"
+ << " if (sgInvocation >= sgSize / 2)\n"
+ << " {\n"
+ << " uint id = sgInvocation & ~((sgSize / 2) - 1);\n"
+ << " " << fmt << " op = " << broadcast << "(data[sgInvocation], id);\n"
+ << validate
+ << " }\n";
+ }
else
{
bdy << " tempRes = 0;\n"
void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
{
- const vk::ShaderBuildOptions buildOptions (programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_3, 0u);
+ const vk::SpirvVersion spirvVersion = (caseDef.opType == OPTYPE_BROADCAST_NONCONST) ? vk::SPIRV_VERSION_1_5 : vk::SPIRV_VERSION_1_3;
+ const vk::ShaderBuildOptions buildOptions (programCollection.usedVulkanVersion, spirvVersion, 0u);
std::string extHeader = getExtHeader(caseDef);
std::string testSrc = getTestSrc(caseDef);
void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
{
- const vk::ShaderBuildOptions buildOptions (programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_3, 0u);
+ const vk::SpirvVersion spirvVersion = (caseDef.opType == OPTYPE_BROADCAST_NONCONST) ? vk::SPIRV_VERSION_1_5 : vk::SPIRV_VERSION_1_3;
+ const vk::ShaderBuildOptions buildOptions (programCollection.usedVulkanVersion, spirvVersion, 0u);
std::string extHeader = getExtHeader(caseDef);
std::string testSrc = getTestSrc(caseDef);
if (caseDef.extShaderSubGroupBallotTests && !subgroups::isInt64SupportedForDevice(context))
TCU_THROW(NotSupportedError, "Device does not support int64 data types");
+ if ((caseDef.opType == OPTYPE_BROADCAST_NONCONST) && !subgroups::isSubgroupBroadcastDynamicIdSupported(context))
+ TCU_THROW(NotSupportedError, "Device does not support SubgroupBroadcastDynamicId");
+
*caseDef.geometryPointSizeSupported = subgroups::isTessellationAndGeometryPointSizeSupported(context);
}
for (int opTypeIndex = 0; opTypeIndex < OPTYPE_LAST; ++opTypeIndex)
{
- const std::string op = de::toLower(getOpTypeName(opTypeIndex));
- const std::string name = op + "_" + subgroups::getFormatNameForGLSL(format);
+ const std::string name = getOpTypeCaseName(opTypeIndex) + "_" + subgroups::getFormatNameForGLSL(format);
{
CaseDefinition caseDef = {opTypeIndex, VK_SHADER_STAGE_COMPUTE_BIT, format, de::SharedPtr<bool>(new bool), DE_FALSE};
bool vkt::subgroups::isFormatSupportedForDevice(Context& context, vk::VkFormat format)
{
- VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR subgroupExtendedTypesFeatures;
+ VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures subgroupExtendedTypesFeatures;
deMemset(&subgroupExtendedTypesFeatures, 0, sizeof(subgroupExtendedTypesFeatures));
- subgroupExtendedTypesFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR;
+ subgroupExtendedTypesFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
subgroupExtendedTypesFeatures.pNext = DE_NULL;
- VkPhysicalDeviceShaderFloat16Int8FeaturesKHR float16Int8Features;
+ VkPhysicalDeviceShaderFloat16Int8Features float16Int8Features;
deMemset(&float16Int8Features, 0, sizeof(float16Int8Features));
- float16Int8Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR;
+ float16Int8Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
float16Int8Features.pNext = DE_NULL;
VkPhysicalDeviceFeatures2 features2;
}
}
+bool vkt::subgroups::isSubgroupBroadcastDynamicIdSupported (Context& context)
+{
+ return context.contextSupports(vk::ApiVersion(1, 2, 0)) &&
+ vk::getPhysicalDeviceVulkan12Features(context.getInstanceInterface(), context.getPhysicalDevice()).subgroupBroadcastDynamicId;
+}
+
std::string vkt::subgroups::getFormatNameForGLSL (VkFormat format)
{
switch (format)
bool isTessellationAndGeometryPointSizeSupported(Context& context);
+bool isSubgroupBroadcastDynamicIdSupported(Context& context);
+
std::string getFormatNameForGLSL (vk::VkFormat format);
std::string getAdditionalExtensionForFormat (vk::VkFormat format);
struct TestConfig
{
- bool useTypeCreate;
- VkSemaphoreTypeKHR semaphoreType;
+ bool useTypeCreate;
+ VkSemaphoreType semaphoreType;
};
static const int basicChainLength = 32768;
};
const VkPipelineStageFlags stageBits[] = { VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT };
const deUint64 timelineValue = 1u;
- const VkTimelineSemaphoreSubmitInfoKHR timelineWaitInfo =
+ const VkTimelineSemaphoreSubmitInfo timelineWaitInfo =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
1u, // deUint32 waitSemaphoreValueCount
&timelineValue, // const deUint64* pWaitSemaphoreValues
0u, // deUint32 signalSemaphoreValueCount
DE_NULL, // const deUint64* pSignalSemaphoreValues
};
- const VkTimelineSemaphoreSubmitInfoKHR timelineSignalInfo =
+ const VkTimelineSemaphoreSubmitInfo timelineSignalInfo =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
0u, // deUint32 waitSemaphoreValueCount
DE_NULL, // const deUint64* pWaitSemaphoreValues
const VkDevice& device = context.getDevice();
const VkQueue queue = context.getUniversalQueue();
VkPipelineStageFlags flags = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
- VkSemaphoreTypeCreateInfoKHR scti = { VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR, DE_NULL, VK_SEMAPHORE_TYPE_TIMELINE_KHR, 0 };
+ VkSemaphoreTypeCreateInfo scti = { VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR, DE_NULL, VK_SEMAPHORE_TYPE_TIMELINE_KHR, 0 };
VkSemaphoreCreateInfo sci = { VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, &scti, 0 };
VkFenceCreateInfo fci = { VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, DE_NULL, 0 };
VkSemaphore semaphore;
for (int i = 0; err == VK_SUCCESS && i < basicChainLength; i++)
{
- deUint64 waitValue = i;
- deUint64 signalValue = i + 1;
- VkTimelineSemaphoreSubmitInfoKHR tsi =
+ deUint64 waitValue = i;
+ deUint64 signalValue = i + 1;
+ VkTimelineSemaphoreSubmitInfo tsi =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
i == 0 ? 0u : 1u, // deUint32 waitSemaphoreValueCount
&waitValue, // const deUint64* pWaitSemaphoreValues
VK_CHECK(vk.createFence(device, &fci, DE_NULL, &fence));
- deUint64 waitValue = basicChainLength;
- VkTimelineSemaphoreSubmitInfoKHR tsi =
+ deUint64 waitValue = basicChainLength;
+ VkTimelineSemaphoreSubmitInfo tsi =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
1u, // deUint32 waitSemaphoreValueCount
&waitValue, // const deUint64* pWaitSemaphoreValues
Move<VkCommandBuffer> cmdBuffer[COUNT];
const VkPipelineStageFlags stageBits[] = { VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT };
VkSubmitInfo submitInfo[COUNT];
- VkTimelineSemaphoreSubmitInfoKHR timelineSubmitInfo[COUNT];
+ VkTimelineSemaphoreSubmitInfo timelineSubmitInfo[COUNT];
deUint64 timelineValues[COUNT];
Move<VkFence> fence[COUNT];
timelineValues[FIRST] = 1ull;
- timelineSubmitInfo[FIRST].sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR;
+ timelineSubmitInfo[FIRST].sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;
timelineSubmitInfo[FIRST].pNext = DE_NULL;
timelineSubmitInfo[FIRST].waitSemaphoreValueCount = 0;
timelineSubmitInfo[FIRST].pWaitSemaphoreValues = DE_NULL;
timelineValues[SECOND] = 2ull;
- timelineSubmitInfo[SECOND].sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR;
+ timelineSubmitInfo[SECOND].sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;
timelineSubmitInfo[SECOND].pNext = DE_NULL;
timelineSubmitInfo[SECOND].waitSemaphoreValueCount = 1;
timelineSubmitInfo[SECOND].pWaitSemaphoreValues = &timelineValues[FIRST];
struct TestConfig
{
TestConfig (const ResourceDescription& resource_,
- vk::VkSemaphoreTypeKHR semaphoreType_,
+ vk::VkSemaphoreType semaphoreType_,
OperationName writeOp_,
OperationName readOp_,
vk::VkExternalMemoryHandleTypeFlagBits memoryHandleType_,
}
const ResourceDescription resource;
- const vk::VkSemaphoreTypeKHR semaphoreType;
+ const vk::VkSemaphoreType semaphoreType;
const OperationName writeOp;
const OperationName readOp;
const vk::VkExternalMemoryHandleTypeFlagBits memoryHandleType;
: m_context (context)
{
// Check instance support
- requireInstanceExtension("VK_KHR_get_physical_device_properties2");
+ m_context.requireInstanceFunctionality("VK_KHR_get_physical_device_properties2");
- requireInstanceExtension("VK_KHR_external_semaphore_capabilities");
- requireInstanceExtension("VK_KHR_external_memory_capabilities");
+ m_context.requireInstanceFunctionality("VK_KHR_external_semaphore_capabilities");
+ m_context.requireInstanceFunctionality("VK_KHR_external_memory_capabilities");
// Check device support
if (config.dedicated)
- requireDeviceExtension("VK_KHR_dedicated_allocation");
+ m_context.requireDeviceFunctionality("VK_KHR_dedicated_allocation");
- requireDeviceExtension("VK_KHR_external_semaphore");
- requireDeviceExtension("VK_KHR_external_memory");
+ m_context.requireDeviceFunctionality("VK_KHR_external_semaphore");
+ m_context.requireDeviceFunctionality("VK_KHR_external_memory");
if (config.semaphoreType == vk::VK_SEMAPHORE_TYPE_TIMELINE_KHR)
{
- requireDeviceExtension("VK_KHR_timeline_semaphore");
+ m_context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
}
if (config.memoryHandleType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR
|| config.semaphoreHandleType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
|| config.semaphoreHandleType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR)
{
- requireDeviceExtension("VK_KHR_external_semaphore_fd");
- requireDeviceExtension("VK_KHR_external_memory_fd");
+ m_context.requireDeviceFunctionality("VK_KHR_external_semaphore_fd");
+ m_context.requireDeviceFunctionality("VK_KHR_external_memory_fd");
}
if (config.memoryHandleType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
|| config.semaphoreHandleType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
|| config.semaphoreHandleType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR)
{
- requireDeviceExtension("VK_KHR_external_semaphore_win32");
- requireDeviceExtension("VK_KHR_external_memory_win32");
+ m_context.requireDeviceFunctionality("VK_KHR_external_semaphore_win32");
+ m_context.requireDeviceFunctionality("VK_KHR_external_memory_win32");
}
TestLog& log = context.getTestContext().getLog();
}
private:
- void requireDeviceExtension(const char* name) const
- {
- if (!de::contains(m_context.getDeviceExtensions().begin(), m_context.getDeviceExtensions().end(), name))
- TCU_THROW(NotSupportedError, (std::string(name) + " is not supported").c_str());
- }
-
- void requireInstanceExtension(const char* name) const
- {
- if (!de::contains(m_context.getInstanceExtensions().begin(), m_context.getInstanceExtensions().end(), name))
- TCU_THROW(NotSupportedError, (std::string(name) + " is not supported").c_str());
- }
const Context& m_context;
};
const vk::PlatformInterface& vkp,
vk::VkInstance instance,
const vk::InstanceInterface& vki,
- const vk::VkPhysicalDevice physicalDevice,
- bool timelineSemaphores)
+ const vk::VkPhysicalDevice physicalDevice)
{
const bool validationEnabled = context.getTestContext().getCommandLine().isValidationEnabled();
const float priority = 0.0f;
if (context.isDeviceFunctionalitySupported("VK_KHR_external_memory_win32"))
extensions.push_back("VK_KHR_external_memory_win32");
- if (timelineSemaphores)
+ if (context.isDeviceFunctionalitySupported("VK_KHR_timeline_semaphore"))
extensions.push_back("VK_KHR_timeline_semaphore");
try
// Class to wrap a singleton instance and device
class InstanceAndDevice
{
-public:
- InstanceAndDevice (Context& context,
- const TestConfig& config)
+ InstanceAndDevice (Context& context)
: m_instance (createTestInstance(context))
, m_vki (m_instance.getDriver())
, m_physicalDevice (vk::chooseDevice(m_vki, m_instance, context.getTestContext().getCommandLine()))
- , m_logicalDevice (createTestDevice(context, context.getPlatformInterface(), m_instance, m_vki, m_physicalDevice, config.semaphoreType == vk::VK_SEMAPHORE_TYPE_TIMELINE_KHR))
+ , m_logicalDevice (createTestDevice(context, context.getPlatformInterface(), m_instance, m_vki, m_physicalDevice))
{
}
- vk::VkInstance getInstance()
+public:
+
+ static vk::VkInstance getInstanceA(Context& context)
{
- return m_instance;
+ if (!m_instanceA)
+ m_instanceA = SharedPtr<InstanceAndDevice>(new InstanceAndDevice(context));
+
+ return m_instanceA->m_instance;
}
+ static vk::VkInstance getInstanceB(Context& context)
+ {
+ if (!m_instanceB)
+ m_instanceB = SharedPtr<InstanceAndDevice>(new InstanceAndDevice(context));
- const vk::InstanceDriver& getDriver()
+ return m_instanceB->m_instance;
+ }
+ static const vk::InstanceDriver& getDriverA()
{
- return m_vki;
+ DE_ASSERT(m_instanceA);
+ return m_instanceA->m_instance.getDriver();
}
-
- vk::VkPhysicalDevice getPhysicalDevice()
+ static const vk::InstanceDriver& getDriverB()
{
- return m_physicalDevice;
+ DE_ASSERT(m_instanceB);
+ return m_instanceB->m_instance.getDriver();
}
-
- const Unique<vk::VkDevice>& getDevice()
+ static vk::VkPhysicalDevice getPhysicalDeviceA()
+ {
+ DE_ASSERT(m_instanceA);
+ return m_instanceA->m_physicalDevice;
+ }
+ static vk::VkPhysicalDevice getPhysicalDeviceB()
+ {
+ DE_ASSERT(m_instanceB);
+ return m_instanceB->m_physicalDevice;
+ }
+ static const Unique<vk::VkDevice>& getDeviceA()
+ {
+ DE_ASSERT(m_instanceA);
+ return m_instanceA->m_logicalDevice;
+ }
+ static const Unique<vk::VkDevice>& getDeviceB()
+ {
+ DE_ASSERT(m_instanceB);
+ return m_instanceB->m_logicalDevice;
+ }
+ static void collectMessagesA()
{
- return m_logicalDevice;
+ DE_ASSERT(m_instanceA);
+ m_instanceA->m_instance.collectMessages();
+ }
+ static void collectMessagesB()
+ {
+ DE_ASSERT(m_instanceB);
+ m_instanceB->m_instance.collectMessages();
+ }
+ static void destroy()
+ {
+ m_instanceA.clear();
+ m_instanceB.clear();
}
private:
const vk::InstanceDriver& m_vki;
const vk::VkPhysicalDevice m_physicalDevice;
const Unique<vk::VkDevice> m_logicalDevice;
+
+ static SharedPtr<InstanceAndDevice> m_instanceA;
+ static SharedPtr<InstanceAndDevice> m_instanceB;
};
+SharedPtr<InstanceAndDevice> InstanceAndDevice::m_instanceA;
+SharedPtr<InstanceAndDevice> InstanceAndDevice::m_instanceB;
vk::VkQueue getQueue (const vk::DeviceInterface& vkd,
const bool m_getMemReq2Supported;
- InstanceAndDevice m_instanceAndDeviceA;
const vk::VkInstance m_instanceA;
const vk::InstanceDriver& m_vkiA;
const vk::VkPhysicalDevice m_physicalDeviceA;
const vk::Unique<vk::VkDevice>& m_deviceA;
const vk::DeviceDriver m_vkdA;
- InstanceAndDevice m_instanceAndDeviceB;
const vk::VkInstance m_instanceB;
const vk::InstanceDriver& m_vkiB;
const vk::VkPhysicalDevice m_physicalDeviceB;
, m_notSupportedChecker (context, m_config, *m_supportWriteOp, *m_supportReadOp)
, m_getMemReq2Supported (context.isDeviceFunctionalitySupported("VK_KHR_get_memory_requirements2"))
- , m_instanceAndDeviceA (context, config)
- , m_instanceA (m_instanceAndDeviceA.getInstance())
- , m_vkiA (m_instanceAndDeviceA.getDriver())
- , m_physicalDeviceA (m_instanceAndDeviceA.getPhysicalDevice())
+ , m_instanceA (InstanceAndDevice::getInstanceA(context))
+ , m_vkiA (InstanceAndDevice::getDriverA())
+ , m_physicalDeviceA (InstanceAndDevice::getPhysicalDeviceA())
, m_queueFamiliesA (vk::getPhysicalDeviceQueueFamilyProperties(m_vkiA, m_physicalDeviceA))
, m_queueFamilyIndicesA (getFamilyIndices(m_queueFamiliesA))
- , m_deviceA (m_instanceAndDeviceA.getDevice())
+ , m_deviceA (InstanceAndDevice::getDeviceA())
, m_vkdA (context.getPlatformInterface(), m_instanceA, *m_deviceA)
- , m_instanceAndDeviceB (context, config)
- , m_instanceB (m_instanceAndDeviceB.getInstance())
- , m_vkiB (m_instanceAndDeviceB.getDriver())
- , m_physicalDeviceB (m_instanceAndDeviceB.getPhysicalDevice())
+ , m_instanceB (InstanceAndDevice::getInstanceB(context))
+ , m_vkiB (InstanceAndDevice::getDriverB())
+ , m_physicalDeviceB (InstanceAndDevice::getPhysicalDeviceB())
, m_queueFamiliesB (vk::getPhysicalDeviceQueueFamilyProperties(m_vkiB, m_physicalDeviceB))
, m_queueFamilyIndicesB (getFamilyIndices(m_queueFamiliesB))
- , m_deviceB (m_instanceAndDeviceB.getDevice())
+ , m_deviceB (InstanceAndDevice::getDeviceB())
, m_vkdB (context.getPlatformInterface(), m_instanceB, *m_deviceB)
, m_semaphoreHandleType (m_config.semaphoreHandleType)
const deUint64 timelineValue = rng.getInt(1, deIntMaxValue32(32));
const vk::VkCommandBuffer commandBuffer = *commandBufferA;
const vk::VkSemaphore semaphore = *semaphoreA;
- const vk::VkTimelineSemaphoreSubmitInfoKHR semaphoreSubmitInfo =
+ const vk::VkTimelineSemaphoreSubmitInfo semaphoreSubmitInfo =
{
- vk::VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ vk::VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
0u, // deUint32 waitSemaphoreValueCount
DE_NULL, // const deUint64* pWaitSemaphoreValues
const vk::VkCommandBuffer commandBuffer = *commandBufferB;
const vk::VkSemaphore semaphore = *semaphoreB;
const vk::VkPipelineStageFlags dstStage = readSync.stageMask;
- const vk::VkTimelineSemaphoreSubmitInfoKHR semaphoreSubmitInfo =
+ const vk::VkTimelineSemaphoreSubmitInfo semaphoreSubmitInfo =
{
- vk::VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ vk::VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
1u, // deUint32 waitSemaphoreValueCount
&timelineValue, // const deUint64* pWaitSemaphoreValues
deUint64 valueA;
deUint64 valueB;
- VK_CHECK(m_vkdA.getSemaphoreCounterValueKHR(*m_deviceA, *semaphoreA, &valueA));
- VK_CHECK(m_vkdB.getSemaphoreCounterValueKHR(*m_deviceB, *semaphoreB, &valueB));
+ VK_CHECK(m_vkdA.getSemaphoreCounterValue(*m_deviceA, *semaphoreA, &valueA));
+ VK_CHECK(m_vkdB.getSemaphoreCounterValue(*m_deviceB, *semaphoreB, &valueB));
if (valueA != valueB)
return tcu::TestStatus::fail("Inconsistent values between shared semaphores");
m_resultCollector.fail(std::string("Exception: ") + error.getMessage());
}
+ // Collect possible validation errors.
+ InstanceAndDevice::collectMessagesA();
+ InstanceAndDevice::collectMessagesB();
+
// Move to next queue
{
m_queueBNdx++;
},
};
- const std::string semaphoreNames[vk::VK_SEMAPHORE_TYPE_KHR_LAST] =
+ const std::string semaphoreNames[vk::VK_SEMAPHORE_TYPE_LAST] =
{
"_binary_semaphore",
"_timeline_semaphore",
for (size_t caseNdx = 0; caseNdx < DE_LENGTH_OF_ARRAY(cases); caseNdx++)
{
- for (int semaphoreType = 0; semaphoreType < vk::VK_SEMAPHORE_TYPE_KHR_LAST; semaphoreType++)
+ for (int semaphoreType = 0; semaphoreType < vk::VK_SEMAPHORE_TYPE_LAST; semaphoreType++)
{
if (isResourceSupported(writeOp, resource) && isResourceSupported(readOp, resource))
{
- const TestConfig config (resource, (vk::VkSemaphoreTypeKHR)semaphoreType, writeOp, readOp, cases[caseNdx].memoryType, cases[caseNdx].semaphoreType, dedicated);
+ const TestConfig config (resource, (vk::VkSemaphoreType)semaphoreType, writeOp, readOp, cases[caseNdx].memoryType, cases[caseNdx].semaphoreType, dedicated);
std::string name = getResourceName(resource) + semaphoreNames[semaphoreType] + cases[caseNdx].nameSuffix;
opGroup->addChild(new InstanceFactory1<SharingTestInstance, TestConfig, Progs>(testCtx, tcu::NODETYPE_SELF_VALIDATE, name, "", Progs(), config));
{
DE_UNREF(group);
// Destroy singleton object
-
+ InstanceAndDevice::destroy();
}
tcu::TestCaseGroup* createCrossInstanceSharingTest (tcu::TestContext& testCtx)
const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
const std::vector<VkQueueFamilyProperties> queueFamilyProperties = getPhysicalDeviceQueueFamilyProperties(instance, physicalDevice);
+ if (timelineSemaphore)
+ context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+
for (deUint32 queuePropertiesNdx = 0; queuePropertiesNdx < queueFamilyProperties.size(); ++queuePropertiesNdx)
{
addQueueIndex(queuePropertiesNdx,
&context.getDeviceFeatures() //const VkPhysicalDeviceFeatures* pEnabledFeatures;
};
- if (timelineSemaphore && !context.getTimelineSemaphoreFeatures().timelineSemaphore)
- TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
-
m_logicalDevice = createCustomDevice(context.getTestContext().getCommandLine().isValidationEnabled(), context.getPlatformInterface(), context.getInstance(), instance, physicalDevice, &deviceInfo);
m_deviceDriver = MovePtr<DeviceDriver>(new DeviceDriver(context.getPlatformInterface(), context.getInstance(), *m_logicalDevice));
m_allocator = MovePtr<Allocator>(new SimpleAllocator(*m_deviceDriver, *m_logicalDevice, getPhysicalDeviceMemoryProperties(instance, physicalDevice)));
for (deUint32 opIdx = 0; opIdx < m_ops.size(); opIdx++)
{
const VkPipelineStageFlags stageBits[] = { VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT };
- const VkTimelineSemaphoreSubmitInfoKHR timelineSubmitInfo =
+ const VkTimelineSemaphoreSubmitInfo timelineSubmitInfo =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
opIdx == 0 ? 0u : 1u, // deUint32 waitSemaphoreValueCount
opIdx == 0 ? DE_NULL : &timelineValues[opIdx - 1], // const deUint64* pWaitSemaphoreValues
std::vector<VkCommandBuffer> cmdBuffers;
const VkPipelineStageFlags stageBits[] = { VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT };
std::vector<deUint64> timelineValues;
- std::vector<VkTimelineSemaphoreSubmitInfoKHR> timelineSubmitInfos;
+ std::vector<VkTimelineSemaphoreSubmitInfo> timelineSubmitInfos;
std::vector<VkSubmitInfo> submitInfos;
for (deUint32 opNdx = 0; opNdx < m_ops.size(); opNdx++)
for (deUint32 opNdx = 0; opNdx < m_ops.size(); opNdx++)
{
- const VkTimelineSemaphoreSubmitInfoKHR timelineSubmitInfo =
+ const VkTimelineSemaphoreSubmitInfo timelineSubmitInfo =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
opNdx == 0 ? 0u : 1u, // deUint32 waitSemaphoreValueCount
opNdx == 0 ? DE_NULL : &timelineValues[opNdx - 1], // const deUint64* pWaitSemaphoreValues
{
VkSemaphoreSignalInfoKHR ssi =
{
- VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR,// VkStructureType sType;
+ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
semaphore, // VkSemaphore semaphore;
timelineValue, // deUint64 value;
};
- VK_CHECK(vk.signalSemaphoreKHR(device, &ssi));
+ VK_CHECK(vk.signalSemaphore(device, &ssi));
}
-Move<VkDevice> createDevice (const deUint32 apiVersion,
- const VkPhysicalDeviceFeatures& deviceFeatures,
- const PlatformInterface& vkp,
- VkInstance instance,
- const vk::InstanceInterface& vki,
- VkPhysicalDevice physicalDevice,
- VkSemaphoreTypeKHR semaphoreType,
- VkExternalSemaphoreHandleTypeFlagBits semaphoreHandleType)
+Move<VkDevice> createDevice (const Context& context)
{
const float priority = 0.0f;
- const std::vector<VkQueueFamilyProperties> queueFamilyProperties = getPhysicalDeviceQueueFamilyProperties(vki, physicalDevice);
+ const std::vector<VkQueueFamilyProperties> queueFamilyProperties = getPhysicalDeviceQueueFamilyProperties(context.getInstanceInterface(), context.getPhysicalDevice());
std::vector<deUint32> queueFamilyIndices (queueFamilyProperties.size(), 0xFFFFFFFFu);
std::vector<const char*> extensions;
- if (semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR)
+ if (context.isDeviceFunctionalitySupported("VK_KHR_timeline_semaphore"))
extensions.push_back("VK_KHR_timeline_semaphore");
- if (!isCoreDeviceExtension(apiVersion, "VK_KHR_external_semaphore"))
+ if (!isCoreDeviceExtension(context.getUsedApiVersion(), "VK_KHR_external_semaphore"))
extensions.push_back("VK_KHR_external_semaphore");
- if (!isCoreDeviceExtension(apiVersion, "VK_KHR_external_memory"))
+ if (!isCoreDeviceExtension(context.getUsedApiVersion(), "VK_KHR_external_memory"))
extensions.push_back("VK_KHR_external_memory");
- if (semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT ||
- semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT)
+ if (context.isDeviceFunctionalitySupported("VK_KHR_external_semaphore_fd"))
extensions.push_back("VK_KHR_external_semaphore_fd");
- if (semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT ||
- semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)
+ if (context.isDeviceFunctionalitySupported("VK_KHR_external_semaphore_win32"))
extensions.push_back("VK_KHR_external_semaphore_win32");
try
{
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
DE_NULL,
- deviceFeatures,
+ context.getDeviceFeatures(),
};
const VkDeviceCreateInfo createInfo =
{
0u
};
- return createDevice(vkp, instance, vki, physicalDevice, &createInfo);
+ return createDevice(context.getPlatformInterface(), context.getInstance(), context.getInstanceInterface(), context.getPhysicalDevice(), &createInfo);
}
catch (const vk::Error& error)
{
}
}
+// Class to wrap a singleton instance and device
+class SingletonDevice
+{
+ SingletonDevice (const Context& context)
+ : m_logicalDevice (createDevice(context))
+ {
+ }
+
+public:
+
+ static const Unique<vk::VkDevice>& getDevice(const Context& context)
+ {
+ if (!m_singletonDevice)
+ m_singletonDevice = SharedPtr<SingletonDevice>(new SingletonDevice(context));
+
+ DE_ASSERT(m_singletonDevice);
+ return m_singletonDevice->m_logicalDevice;
+ }
+
+ static void destroy()
+ {
+ m_singletonDevice.clear();
+ }
+
+private:
+ const Unique<vk::VkDevice> m_logicalDevice;
+
+ static SharedPtr<SingletonDevice> m_singletonDevice;
+};
+SharedPtr<SingletonDevice> SingletonDevice::m_singletonDevice;
+
+static void cleanupGroup ()
+{
+ // Destroy singleton object
+ SingletonDevice::destroy();
+}
+
class SimpleAllocation : public Allocation
{
public:
const SharedPtr<OperationSupport> readOpSupport,
const ResourceDescription& resourceDesc,
VkExternalMemoryHandleTypeFlagBits memoryHandleType,
- VkSemaphoreTypeKHR semaphoreType,
+ VkSemaphoreType semaphoreType,
VkExternalSemaphoreHandleTypeFlagBits semaphoreHandleType,
PipelineCacheData& pipelineCacheData)
: TestInstance (context)
// We're using 2 devices to make sure we have 2 queues even on
// implementations that only have a single queue.
const VkDevice& deviceA = m_context.getDevice();
- const Unique<VkDevice> deviceB (createDevice(m_context.getUsedApiVersion(),
- m_context.getDeviceFeatures(),
- m_context.getPlatformInterface(),
- m_context.getInstance(),
- m_context.getInstanceInterface(),
- m_context.getPhysicalDevice(),
- m_semaphoreType,
- m_semaphoreHandleType));
+ const Unique<VkDevice>& deviceB (SingletonDevice::getDevice(m_context));
const DeviceInterface& vkA = m_context.getDeviceInterface();
const DeviceDriver vkB (m_context.getPlatformInterface(), m_context.getInstance(), *deviceB);
UniquePtr<SimpleAllocator> allocatorA (new SimpleAllocator(vkA, deviceA, vk::getPhysicalDeviceMemoryProperties(m_context.getInstanceInterface(),
if (m_semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR)
{
- const VkSemaphoreWaitInfoKHR waitInfo =
+ const VkSemaphoreWaitInfo waitInfo =
{
- VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR,// VkStructureType sType;
+ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
0u, // VkSemaphoreWaitFlagsKHR flags;
1u, // deUint32 semaphoreCount;
// Unblock the whole lot.
hostSignal(vkA, deviceA, semaphoreHandlesA.front(), 1);
- VK_CHECK(vkB.waitSemaphoresKHR(*deviceB, &waitInfo, ~0ull));
+ VK_CHECK(vkB.waitSemaphores(*deviceB, &waitInfo, ~0ull));
}
else
{
SharedPtr<OperationSupport> m_readOpSupport;
const ResourceDescription& m_resourceDesc;
VkExternalMemoryHandleTypeFlagBits m_memoryHandleType;
- VkSemaphoreTypeKHR m_semaphoreType;
+ VkSemaphoreType m_semaphoreType;
VkExternalSemaphoreHandleTypeFlagBits m_semaphoreHandleType;
PipelineCacheData& m_pipelineCacheData;
de::Random m_rng;
OperationName readOp,
const ResourceDescription& resourceDesc,
VkExternalMemoryHandleTypeFlagBits memoryHandleType,
- VkSemaphoreTypeKHR semaphoreType,
+ VkSemaphoreType semaphoreType,
VkExternalSemaphoreHandleTypeFlagBits semaphoreHandleType,
PipelineCacheData& pipelineCacheData)
: TestCase (testCtx, name.c_str(), "")
{
}
+ virtual void checkSupport(Context& context) const
+ {
+ if (m_semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR &&
+ !context.getTimelineSemaphoreFeatures().timelineSemaphore)
+ TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
+
+ if ((m_semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT ||
+ m_semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) &&
+ !context.isDeviceFunctionalitySupported("VK_KHR_external_semaphore_fd"))
+ TCU_THROW(NotSupportedError, "VK_KHR_external_semaphore_fd not supported");
+
+ if ((m_semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT ||
+ m_semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT) &&
+ !context.isDeviceFunctionalitySupported("VK_KHR_external_semaphore_win32"))
+ TCU_THROW(NotSupportedError, "VK_KHR_external_semaphore_win32 not supported");
+ }
+
TestInstance* createInstance (Context& context) const
{
return new QueueSubmitSignalOrderSharedTestInstance(context,
SharedPtr<OperationSupport> m_readOpSupport;
const ResourceDescription& m_resourceDesc;
VkExternalMemoryHandleTypeFlagBits m_memoryHandleType;
- VkSemaphoreTypeKHR m_semaphoreType;
+ VkSemaphoreType m_semaphoreType;
VkExternalSemaphoreHandleTypeFlagBits m_semaphoreHandleType;
PipelineCacheData& m_pipelineCacheData;
};
class QueueSubmitSignalOrderSharedTests : public tcu::TestCaseGroup
{
public:
- QueueSubmitSignalOrderSharedTests (tcu::TestContext& testCtx, VkSemaphoreTypeKHR semaphoreType, const char *name)
+ QueueSubmitSignalOrderSharedTests (tcu::TestContext& testCtx, VkSemaphoreType semaphoreType, const char *name)
: tcu::TestCaseGroup (testCtx, name, "Signal ordering of semaphores")
, m_semaphoreType (semaphoreType)
{
}
}
+ void deinit (void)
+ {
+ cleanupGroup();
+ }
+
private:
- VkSemaphoreTypeKHR m_semaphoreType;
+ VkSemaphoreType m_semaphoreType;
// synchronization.op tests share pipeline cache data to speed up test
// execution.
PipelineCacheData m_pipelineCacheData;
const SharedPtr<OperationSupport> writeOpSupport,
const SharedPtr<OperationSupport> readOpSupport,
const ResourceDescription& resourceDesc,
- VkSemaphoreTypeKHR semaphoreType,
+ VkSemaphoreType semaphoreType,
PipelineCacheData& pipelineCacheData)
: TestInstance (context)
, m_writeOpSupport (writeOpSupport)
, m_readOpSupport (readOpSupport)
, m_resourceDesc (resourceDesc)
, m_semaphoreType (semaphoreType)
- , m_device (createDevice(context.getUsedApiVersion(),
- context.getDeviceFeatures(),
- context.getPlatformInterface(),
- context.getInstance(),
- context.getInstanceInterface(),
- context.getPhysicalDevice(),
- semaphoreType,
- (VkExternalSemaphoreHandleTypeFlagBits)0))
+ , m_device (SingletonDevice::getDevice(context))
, m_deviceInterface (context.getPlatformInterface(), context.getInstance(), *m_device)
, m_allocator (new SimpleAllocator(m_deviceInterface,
*m_device,
if (m_semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR)
{
- const VkSemaphoreWaitInfoKHR waitInfo =
+ const VkSemaphoreWaitInfo waitInfo =
{
- VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR,// VkStructureType sType;
+ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
0u, // VkSemaphoreWaitFlagsKHR flags;
1u, // deUint32 semaphoreCount;
// Unblock the whole lot.
hostSignal(vk, device, semaphoreHandlesA.front(), 1);
- VK_CHECK(vk.waitSemaphoresKHR(device, &waitInfo, ~0ull));
+ VK_CHECK(vk.waitSemaphores(device, &waitInfo, ~0ull));
}
else
{
SharedPtr<OperationSupport> m_writeOpSupport;
SharedPtr<OperationSupport> m_readOpSupport;
const ResourceDescription& m_resourceDesc;
- VkSemaphoreTypeKHR m_semaphoreType;
- Unique<VkDevice> m_device;
+ VkSemaphoreType m_semaphoreType;
+ const Unique<VkDevice>& m_device;
const DeviceDriver m_deviceInterface;
UniquePtr<SimpleAllocator> m_allocator;
UniquePtr<OperationContext> m_operationContext;
OperationName writeOp,
OperationName readOp,
const ResourceDescription& resourceDesc,
- VkSemaphoreTypeKHR semaphoreType,
+ VkSemaphoreType semaphoreType,
PipelineCacheData& pipelineCacheData)
: TestCase (testCtx, name.c_str(), "")
, m_writeOpSupport (makeOperationSupport(writeOp, resourceDesc).release())
{
}
+ virtual void checkSupport(Context& context) const
+ {
+ if (m_semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR &&
+ !context.getTimelineSemaphoreFeatures().timelineSemaphore)
+ TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
+ }
+
TestInstance* createInstance (Context& context) const
{
return new QueueSubmitSignalOrderTestInstance(context,
SharedPtr<OperationSupport> m_writeOpSupport;
SharedPtr<OperationSupport> m_readOpSupport;
const ResourceDescription& m_resourceDesc;
- VkSemaphoreTypeKHR m_semaphoreType;
+ VkSemaphoreType m_semaphoreType;
PipelineCacheData& m_pipelineCacheData;
};
class QueueSubmitSignalOrderTests : public tcu::TestCaseGroup
{
public:
- QueueSubmitSignalOrderTests (tcu::TestContext& testCtx, VkSemaphoreTypeKHR semaphoreType, const char *name)
+ QueueSubmitSignalOrderTests (tcu::TestContext& testCtx, VkSemaphoreType semaphoreType, const char *name)
: tcu::TestCaseGroup (testCtx, name, "Signal ordering of semaphores")
, m_semaphoreType (semaphoreType)
{
}
}
+ void deinit (void)
+ {
+ cleanupGroup();
+ }
+
private:
- VkSemaphoreTypeKHR m_semaphoreType;
+ VkSemaphoreType m_semaphoreType;
// synchronization.op tests share pipeline cache data to speed up test
// execution.
PipelineCacheData m_pipelineCacheData;
}
}
-static void initTimelineSemaphoreSubmitInfo (VkTimelineSemaphoreSubmitInfoKHR* submitInfo, deUint32 submitInfoCount)
+static void initTimelineSemaphoreSubmitInfo (VkTimelineSemaphoreSubmitInfo* submitInfo, deUint32 submitInfoCount)
{
for (deUint32 ndx = 0; ndx < submitInfoCount; ndx++)
{
- submitInfo[ndx].sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR;
+ submitInfo[ndx].sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;
submitInfo[ndx].pNext = DE_NULL;
submitInfo[ndx].waitSemaphoreValueCount = 0;
submitInfo[ndx].pWaitSemaphoreValues = DE_NULL;
return TestStatus::pass("synchronization-fences passed");
}
-tcu::TestStatus testSemaphores (Context& context, VkSemaphoreTypeKHR semaphoreType)
+tcu::TestStatus testSemaphores (Context& context, VkSemaphoreType semaphoreType)
{
- TestLog& log = context.getTestContext().getLog();
- const PlatformInterface& platformInterface = context.getPlatformInterface();
- const InstanceInterface& instanceInterface = context.getInstanceInterface();
- const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
- deUint32 queueFamilyIdx;
- vk::Move<VkDevice> device = createTestDevice(platformInterface, context.getInstance(), instanceInterface, physicalDevice, context.getTestContext().getCommandLine().isValidationEnabled(), &queueFamilyIdx);
- const DeviceDriver deviceInterface (platformInterface, context.getInstance(), *device);
- SimpleAllocator allocator (deviceInterface,
- *device,
- getPhysicalDeviceMemoryProperties(instanceInterface, physicalDevice));
- const VkQueue queue[2] =
+ TestLog& log = context.getTestContext().getLog();
+ const PlatformInterface& platformInterface = context.getPlatformInterface();
+ const InstanceInterface& instanceInterface = context.getInstanceInterface();
+ const VkPhysicalDevice physicalDevice = context.getPhysicalDevice();
+ deUint32 queueFamilyIdx;
+ vk::Move<VkDevice> device = createTestDevice(platformInterface, context.getInstance(), instanceInterface, physicalDevice, context.getTestContext().getCommandLine().isValidationEnabled(), &queueFamilyIdx);
+ const DeviceDriver deviceInterface (platformInterface, context.getInstance(), *device);
+ SimpleAllocator allocator (deviceInterface,
+ *device,
+ getPhysicalDeviceMemoryProperties(instanceInterface, physicalDevice));
+ const VkQueue queue[2] =
{
getDeviceQueue(deviceInterface, *device, queueFamilyIdx, 0),
getDeviceQueue(deviceInterface, *device, queueFamilyIdx, 1)
TestContext testContext2 (deviceInterface, device.get(), queueFamilyIdx, context.getBinaryCollection(), allocator);
Unique<VkSemaphore> semaphore (createSemaphoreType(deviceInterface, *device, semaphoreType));
VkSubmitInfo submitInfo[2];
- VkTimelineSemaphoreSubmitInfoKHR timelineSubmitInfo[2];
+ VkTimelineSemaphoreSubmitInfo timelineSubmitInfo[2];
const deUint64 timelineValue = 1u;
void* resultImage;
submitInfo[0].pSignalSemaphores = &semaphore.get();
timelineSubmitInfo[0].pSignalSemaphoreValues = &timelineValue;
timelineSubmitInfo[0].signalSemaphoreValueCount = 1;
- submitInfo[0].pNext = (semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR ? &timelineSubmitInfo[0] : DE_NULL);
+ submitInfo[0].pNext = (semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE ? &timelineSubmitInfo[0] : DE_NULL);
submitInfo[1].waitSemaphoreCount = 1;
submitInfo[1].pWaitSemaphores = &semaphore.get();
timelineSubmitInfo[1].pWaitSemaphoreValues = &timelineValue;
timelineSubmitInfo[1].waitSemaphoreValueCount = 1;
- submitInfo[1].pNext = (semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR ? &timelineSubmitInfo[1] : DE_NULL);
+ submitInfo[1].pNext = (semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE ? &timelineSubmitInfo[1] : DE_NULL);
submitInfo[1].pWaitDstStageMask = &waitDstStageMask;
VK_CHECK(deviceInterface.queueSubmit(queue[0], 1, &submitInfo[0], testContext1.fences[0]));
deUint64 getMaxTimelineSemaphoreValueDifference(const InstanceInterface& vk,
const VkPhysicalDevice physicalDevice)
{
- VkPhysicalDeviceTimelineSemaphorePropertiesKHR timelineSemaphoreProperties;
+ VkPhysicalDeviceTimelineSemaphoreProperties timelineSemaphoreProperties;
VkPhysicalDeviceProperties2 properties;
deMemset(&timelineSemaphoreProperties, 0, sizeof(timelineSemaphoreProperties));
- timelineSemaphoreProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR;
+ timelineSemaphoreProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
deMemset(&properties, 0, sizeof(properties));
properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
const VkSemaphore semaphore,
const deUint64 timelineValue)
{
- VkTimelineSemaphoreSubmitInfoKHR tsi =
+ VkTimelineSemaphoreSubmitInfo tsi =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
0u, // deUint32 waitSemaphoreValueCount
DE_NULL, // const deUint64* pWaitSemaphoreValues
{
VkSemaphoreSignalInfoKHR ssi =
{
- VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR,// VkStructureType sType;
+ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
semaphore, // VkSemaphore semaphore;
timelineValue, // deUint64 value;
};
- VK_CHECK(vk.signalSemaphoreKHR(device, &ssi));
+ VK_CHECK(vk.signalSemaphore(device, &ssi));
}
class WaitTestInstance : public TestInstance
, m_waitAll (waitAll)
, m_signalFromDevice (signalFromDevice)
{
- if (!context.getTimelineSemaphoreFeatures().timelineSemaphore)
- TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
}
tcu::TestStatus iterate (void)
}
{
- const VkSemaphoreWaitInfoKHR waitInfo =
+ const VkSemaphoreWaitInfo waitInfo =
{
- VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR, // VkStructureType sType;
- DE_NULL, // const void* pNext;
- m_waitAll ? 0u : (VkSemaphoreWaitFlagsKHR) VK_SEMAPHORE_WAIT_ANY_BIT_KHR, // VkSemaphoreWaitFlagsKHR flags;
- (deUint32) semaphores.size(), // deUint32 semaphoreCount;
- &semaphores[0], // const VkSemaphore* pSemaphores;
- &timelineValues[0], // const deUint64* pValues;
+ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ m_waitAll ? 0u : (VkSemaphoreWaitFlags) VK_SEMAPHORE_WAIT_ANY_BIT_KHR, // VkSemaphoreWaitFlagsKHR flags;
+ (deUint32) semaphores.size(), // deUint32 semaphoreCount;
+ &semaphores[0], // const VkSemaphore* pSemaphores;
+ &timelineValues[0], // const deUint64* pValues;
};
VkResult result;
- result = vk.waitSemaphoresKHR(device, &waitInfo, 0ull);
+ result = vk.waitSemaphores(device, &waitInfo, 0ull);
if (result != VK_SUCCESS)
return tcu::TestStatus::fail("Wait failed");
{
}
+ virtual void checkSupport(Context& context) const
+ {
+ context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+ }
+
TestInstance* createInstance (Context& context) const
{
return new WaitTestInstance(context, m_waitAll, m_signalFromDevice);
HostWaitBeforeSignalTestInstance (Context& context)
: TestInstance (context)
{
- if (!context.getTimelineSemaphoreFeatures().timelineSemaphore)
- TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
}
tcu::TestStatus iterate (void)
for (deUint32 i = 0; i < 12; i++)
{
const deUint64 newTimelineValue = (timelineValues.back() + rng.getInt(1, 10000));
- const VkTimelineSemaphoreSubmitInfoKHR timelineSubmitInfo =
+ const VkTimelineSemaphoreSubmitInfo timelineSubmitInfo =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
1u, // deUint32 waitSemaphoreValueCount
&timelineValues.back(), // const deUint64* pWaitSemaphoreValues
};
VkResult result;
- result = vk.waitSemaphoresKHR(device, &waitInfo, 0ull);
+ result = vk.waitSemaphores(device, &waitInfo, 0ull);
if (result != VK_TIMEOUT)
return tcu::TestStatus::fail("Wait failed");
};
VkResult result;
- result = vk.waitSemaphoresKHR(device, &waitInfo, ~(0ull));
+ result = vk.waitSemaphores(device, &waitInfo, ~(0ull));
if (result != VK_SUCCESS)
return tcu::TestStatus::fail("Wait failed");
{
}
+ virtual void checkSupport(Context& context) const
+ {
+ context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+ }
+
TestInstance* createInstance (Context& context) const
{
return new HostWaitBeforeSignalTestInstance(context);
{
deUint64 value;
- VK_CHECK(m_vkd.getSemaphoreCounterValueKHR(m_device, m_semaphore, &value));
+ VK_CHECK(m_vkd.getSemaphoreCounterValue(m_device, m_semaphore, &value));
if (value < lastValue) {
m_status = tcu::TestStatus::fail("Value not monotically increasing");
deviceSignal(vk, device, queue, DE_NULL, *semaphore, ++timelineFrontValue);
deUint64 value;
- VK_CHECK(vk.getSemaphoreCounterValueKHR(device, *semaphore, &value));
+ VK_CHECK(vk.getSemaphoreCounterValue(device, *semaphore, &value));
VK_CHECK(vk.waitForFences(device, 1, &fence.get(), VK_TRUE, ~(0ull)));
VK_CHECK(vk.resetFences(device, 1, &fence.get()));
const Unique<VkSemaphore> semaphoreDefaultValue (createSemaphoreType(vk, device, VK_SEMAPHORE_TYPE_TIMELINE_KHR));
const Unique<VkSemaphore> semaphoreInitialValue (createSemaphoreType(vk, device, VK_SEMAPHORE_TYPE_TIMELINE_KHR, 0, nonZeroValue));
deUint64 initialValue;
- VkSemaphoreWaitInfoKHR waitInfo =
+ VkSemaphoreWaitInfo waitInfo =
{
- VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
0u, // VkSemaphoreWaitFlagsKHR flags;
1u, // deUint32 semaphoreCount;
waitInfo.pSemaphores = &semaphoreDefaultValue.get();
initialValue = 0;
- result = vk.waitSemaphoresKHR(device, &waitInfo, 0ull);
+ result = vk.waitSemaphores(device, &waitInfo, 0ull);
if (result != VK_SUCCESS)
return tcu::TestStatus::fail("Wait zero initial value failed");
- VK_CHECK(vk.getSemaphoreCounterValueKHR(device, *semaphoreDefaultValue, &value));
+ VK_CHECK(vk.getSemaphoreCounterValue(device, *semaphoreDefaultValue, &value));
if (value != initialValue)
return tcu::TestStatus::fail("Invalid zero initial value");
waitInfo.pSemaphores = &semaphoreInitialValue.get();
initialValue = nonZeroValue;
- result = vk.waitSemaphoresKHR(device, &waitInfo, 0ull);
+ result = vk.waitSemaphores(device, &waitInfo, 0ull);
if (result != VK_SUCCESS)
return tcu::TestStatus::fail("Wait non zero initial value failed");
- VK_CHECK(vk.getSemaphoreCounterValueKHR(device, *semaphoreInitialValue, &value));
+ VK_CHECK(vk.getSemaphoreCounterValue(device, *semaphoreInitialValue, &value));
if (value != nonZeroValue)
return tcu::TestStatus::fail("Invalid non zero initial value");
waitInfo.pSemaphores = &semaphoreMaxValue.get();
initialValue = nonZeroMaxValue;
- result = vk.waitSemaphoresKHR(device, &waitInfo, 0ull);
+ result = vk.waitSemaphores(device, &waitInfo, 0ull);
if (result != VK_SUCCESS)
return tcu::TestStatus::fail("Wait max value failed");
- VK_CHECK(vk.getSemaphoreCounterValueKHR(device, *semaphoreMaxValue, &value));
+ VK_CHECK(vk.getSemaphoreCounterValue(device, *semaphoreMaxValue, &value));
if (value != nonZeroMaxValue)
return tcu::TestStatus::fail("Invalid max value initial value");
}
};
VkResult result;
- result = m_vkd.waitSemaphoresKHR(m_device, &waitInfo, ~(deUint64)0u);
+ result = m_vkd.waitSemaphores(m_device, &waitInfo, ~(deUint64)0u);
if (result != VK_SUCCESS)
return;
}
};
VkResult result;
- result = m_vkd.signalSemaphoreKHR(m_device, &signalInfo);
+ result = m_vkd.signalSemaphore(m_device, &signalInfo);
if (result != VK_SUCCESS)
return;
}
{
de::Random rng (1234);
- if (!context.getTimelineSemaphoreFeatures().timelineSemaphore)
- TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
-
// Create a dozen couple of operations and their associated
// resource.
for (deUint32 i = 0; i < 12; i++)
HostCopyThread hostCopyThread (vk, device, *semaphore, m_iterations);
std::vector<SharedPtr<Move<VkCommandBuffer> > > ptrCmdBuffers;
std::vector<VkCommandBuffer> cmdBuffers;
- std::vector<VkTimelineSemaphoreSubmitInfoKHR> timelineSubmitInfos;
+ std::vector<VkTimelineSemaphoreSubmitInfo> timelineSubmitInfos;
std::vector<VkSubmitInfo> submitInfos;
hostCopyThread.start();
{
// Write operation
{
- const VkTimelineSemaphoreSubmitInfoKHR timelineSubmitInfo =
+ const VkTimelineSemaphoreSubmitInfo timelineSubmitInfo =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
iterIdx == 0 ? 0u : 1u, // deUint32 waitSemaphoreValueCount
iterIdx == 0 ? DE_NULL : &m_iterations[iterIdx - 1]->cpuValue, // const deUint64* pWaitSemaphoreValues
// Read operation
{
- const VkTimelineSemaphoreSubmitInfoKHR timelineSubmitInfo =
+ const VkTimelineSemaphoreSubmitInfo timelineSubmitInfo =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
1u, // deUint32 waitSemaphoreValueCount
&m_iterations[iterIdx]->writeValue, // const deUint64* pWaitSemaphoreValues
{
}
+ virtual void checkSupport(Context& context) const
+ {
+ context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+ }
+
void initPrograms (SourceCollections& programCollection) const
{
m_writeOp->initPrograms(programCollection);
return infos;
}
-Move<VkDevice> createDevice(Context& context)
+Move<VkDevice> createDevice(const Context& context)
{
const std::vector<VkQueueFamilyProperties> queueFamilyProperties = getPhysicalDeviceQueueFamilyProperties(context.getInstanceInterface(), context.getPhysicalDevice());
std::vector<VkDeviceQueueCreateInfo> queueCreateInfos = getQueueCreateInfo(queueFamilyProperties);
queueCreateInfo.pQueuePriorities = &(*queuePriorities.back().get())[0];
}
- if (!context.getTimelineSemaphoreFeatures().timelineSemaphore)
- TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
-
return createDevice(context.getPlatformInterface(), context.getInstance(),
context.getInstanceInterface(), context.getPhysicalDevice(), &deviceInfo);
}
+
+// Class to wrap a singleton instance and device
+class SingletonDevice
+{
+ SingletonDevice (const Context& context)
+ : m_logicalDevice (createDevice(context))
+ {
+ }
+
+public:
+
+ static const Unique<vk::VkDevice>& getDevice(const Context& context)
+ {
+ if (!m_singletonDevice)
+ m_singletonDevice = SharedPtr<SingletonDevice>(new SingletonDevice(context));
+
+ DE_ASSERT(m_singletonDevice);
+ return m_singletonDevice->m_logicalDevice;
+ }
+
+ static void destroy()
+ {
+ m_singletonDevice.clear();
+ }
+
+private:
+ const Unique<vk::VkDevice> m_logicalDevice;
+
+ static SharedPtr<SingletonDevice> m_singletonDevice;
+};
+SharedPtr<SingletonDevice> SingletonDevice::m_singletonDevice;
+
+static void cleanupGroup ()
+{
+ // Destroy singleton object
+ SingletonDevice::destroy();
+}
+
// Create a chain of operations with data copied across queues & host
// and submit the operations out of order to verify that the queues
// are properly unblocked as the work progresses.
PipelineCacheData& pipelineCacheData)
: TestInstance (context)
, m_resourceDesc (resourceDesc)
- , m_device (createDevice(context))
+ , m_device (SingletonDevice::getDevice(context))
, m_deviceDriver (MovePtr<DeviceDriver>(new DeviceDriver(context.getPlatformInterface(), context.getInstance(), *m_device)))
, m_allocator (new SimpleAllocator(*m_deviceDriver, *m_device,
getPhysicalDeviceMemoryProperties(context.getInstanceInterface(),
// exercise the wait-before-submit behavior.
deUint32 iterIdx = (deUint32)(m_iterations.size() - 2 - _iterIdx);
- const VkTimelineSemaphoreSubmitInfoKHR timelineSubmitInfo =
+ const VkTimelineSemaphoreSubmitInfo timelineSubmitInfo =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
1u, // deUint32 waitSemaphoreValueCount
iterIdx == 0 ? &m_hostTimelineValue : &m_iterations[iterIdx - 1]->timelineValue, // const deUint64* pWaitSemaphoreValues
// Submit the last read operation in order.
{
const deUint32 iterIdx = (deUint32) (m_iterations.size() - 1);
- const VkTimelineSemaphoreSubmitInfoKHR timelineSubmitInfo =
+ const VkTimelineSemaphoreSubmitInfo timelineSubmitInfo =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
1u, // deUint32 waitSemaphoreValueCount
&m_iterations[iterIdx - 1]->timelineValue, // const deUint64* pWaitSemaphoreValues
protected:
const ResourceDescription m_resourceDesc;
- Move<VkDevice> m_device;
+ const Unique<VkDevice>& m_device;
MovePtr<DeviceDriver> m_deviceDriver;
MovePtr<Allocator> m_allocator;
OperationContext m_opContext;
{
}
+ virtual void checkSupport(Context& context) const
+ {
+ context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+ }
+
void initPrograms (SourceCollections& programCollection) const
{
m_writeOp->initPrograms(programCollection);
}
}
+ void deinit (void)
+ {
+ cleanupGroup();
+ }
+
private:
// synchronization.op tests share pipeline cache data to speed up test
// execution.
PipelineCacheData& pipelineCacheData)
: TestInstance (context)
, m_resourceDesc (resourceDesc)
- , m_device (createDevice(context))
+ , m_device (SingletonDevice::getDevice(context))
, m_deviceDriver (MovePtr<DeviceDriver>(new DeviceDriver(context.getPlatformInterface(), context.getInstance(), *m_device)))
, m_allocator (new SimpleAllocator(*m_deviceDriver, *m_device,
getPhysicalDeviceMemoryProperties(context.getInstanceInterface(),
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
};
- const VkTimelineSemaphoreSubmitInfoKHR timelineSubmitInfo =
+ const VkTimelineSemaphoreSubmitInfo timelineSubmitInfo =
{
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, // VkStructureType sType;
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
waitValuesCount, // deUint32 waitSemaphoreValueCount
waitValues, // const deUint64* pWaitSemaphoreValues
protected:
ResourceDescription m_resourceDesc;
- Move<VkDevice> m_device;
+ const Unique<VkDevice>& m_device;
MovePtr<DeviceDriver> m_deviceDriver;
MovePtr<Allocator> m_allocator;
OperationContext m_opContext;
{
}
+ virtual void checkSupport(Context& context) const
+ {
+ context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+ }
+
void initPrograms (SourceCollections& programCollection) const
{
m_writeOp->initPrograms(programCollection);
}
}
+ void deinit (void)
+ {
+ cleanupGroup();
+ }
+
private:
// synchronization.op tests share pipeline cache data to speed up test
// execution.
if ((testParameters.wrapS == Sampler::MIRRORED_ONCE ||
testParameters.wrapT == Sampler::MIRRORED_ONCE) &&
- !de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_sampler_mirror_clamp_to_edge"))
+ !context.isDeviceFunctionalitySupported("VK_KHR_sampler_mirror_clamp_to_edge"))
TCU_THROW(NotSupportedError, "VK_KHR_sampler_mirror_clamp_to_edge not supported");
// Create 2 textures.
if ((testParameters.wrapS == Sampler::MIRRORED_ONCE ||
testParameters.wrapT == Sampler::MIRRORED_ONCE) &&
- !de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_sampler_mirror_clamp_to_edge"))
+ !context.isDeviceFunctionalitySupported("VK_KHR_sampler_mirror_clamp_to_edge"))
TCU_THROW(NotSupportedError, "VK_KHR_sampler_mirror_clamp_to_edge not supported");
m_textures.reserve(2);
if ((testParameters.wrapS == Sampler::MIRRORED_ONCE ||
testParameters.wrapT == Sampler::MIRRORED_ONCE) &&
- !de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_sampler_mirror_clamp_to_edge"))
+ !context.isDeviceFunctionalitySupported("VK_KHR_sampler_mirror_clamp_to_edge"))
TCU_THROW(NotSupportedError, "VK_KHR_sampler_mirror_clamp_to_edge not supported");
// Create textures.
if ((testParameters.wrapS == Sampler::MIRRORED_ONCE ||
testParameters.wrapT == Sampler::MIRRORED_ONCE ||
testParameters.wrapR == Sampler::MIRRORED_ONCE) &&
- !de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_sampler_mirror_clamp_to_edge"))
+ !context.isDeviceFunctionalitySupported("VK_KHR_sampler_mirror_clamp_to_edge"))
TCU_THROW(NotSupportedError, "VK_KHR_sampler_mirror_clamp_to_edge not supported");
// Create textures.
const deUint32 componentsRequired = m_locationsRequired * componentsPerLocation;
const InstanceInterface& vki = m_context.getInstanceInterface();
const VkPhysicalDevice physDevice = m_context.getPhysicalDevice();
- const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeatures();
+ const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeaturesEXT();
const VkPhysicalDeviceLimits limits = getPhysicalDeviceProperties(vki, physDevice).limits;
VkPhysicalDeviceTransformFeedbackPropertiesEXT transformFeedbackProperties;
VkPhysicalDeviceProperties2 deviceProperties2;
, m_parameters (parameters)
, m_rnd (0)
{
- const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeatures();
+ const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeaturesEXT();
VkPhysicalDeviceProperties2 deviceProperties2;
if (transformFeedbackFeatures.transformFeedback == DE_FALSE)
const InstanceInterface& vki = m_context.getInstanceInterface();
const VkPhysicalDevice physDevice = m_context.getPhysicalDevice();
const VkPhysicalDeviceFeatures features = getPhysicalDeviceFeatures(vki, physDevice);
- const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeatures();
+ const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeaturesEXT();
const deUint32 streamsSupported = m_transformFeedbackProperties.maxTransformFeedbackStreams;
const deUint32 streamsRequired = m_parameters.streamId + 1;
const deUint32 tfBuffersSupported = m_transformFeedbackProperties.maxTransformFeedbackBuffers;
const InstanceInterface& vki = m_context.getInstanceInterface();
const VkPhysicalDevice physDevice = m_context.getPhysicalDevice();
const VkPhysicalDeviceFeatures features = getPhysicalDeviceFeatures(vki, physDevice);
- const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeatures();
+ const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeaturesEXT();
const deUint32 streamsSupported = m_transformFeedbackProperties.maxTransformFeedbackStreams;
const deUint32 streamsRequired = m_parameters.streamId + 1;
const bool geomPointSizeRequired = m_parameters.testType == TEST_TYPE_STREAMS_POINTSIZE;
const InstanceInterface& vki = m_context.getInstanceInterface();
const VkPhysicalDevice physDevice = m_context.getPhysicalDevice();
const VkPhysicalDeviceFeatures features = getPhysicalDeviceFeatures(vki, physDevice);
- const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeatures();
+ const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeaturesEXT();
const deUint32 streamsSupported = m_transformFeedbackProperties.maxTransformFeedbackStreams;
const deUint32 streamsRequired = m_parameters.streamId + 1;
endCommandBuffer(vk, *cmdBuffer);
if (m_parameters.testType == TEST_TYPE_QUERY_RESET)
- vk.resetQueryPoolEXT(device, *queryPool, queryIndex, queryCountersNumber);
+ vk.resetQueryPool(device, *queryPool, queryIndex, queryCountersNumber);
submitCommandsAndWait(vk, device, queue, *cmdBuffer);
{
queryResults->elements32[2] = 1u; // Availability bit
}
- vk.resetQueryPoolEXT(device, *queryPool, queryIndex, queryCountersNumber);
+ vk.resetQueryPool(device, *queryPool, queryIndex, queryCountersNumber);
vk::VkResult res = vk.getQueryPoolResults(device, *queryPool, queryIndex, queryCountersNumber, queryDataAvailSize, queryData.data(), queryDataAvailSize, (vk::VK_QUERY_RESULT_WITH_AVAILABILITY_BIT | queryExtraFlags));
const deUint64 numPrimitivesWritten = (m_parameters.query64bits ? queryResults->elements64[0] : queryResults->elements32[0]);
vk::Move<vk::VkSemaphore> createExportableSemaphoreType (const vk::DeviceInterface& vkd,
vk::VkDevice device,
- vk::VkSemaphoreTypeKHR semaphoreType,
+ vk::VkSemaphoreType semaphoreType,
vk::VkExternalSemaphoreHandleTypeFlagBits externalType)
{
- const vk::VkSemaphoreTypeCreateInfoKHR semaphoreTypeCreateInfo =
+ const vk::VkSemaphoreTypeCreateInfo semaphoreTypeCreateInfo =
{
- vk::VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR,
+ vk::VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
DE_NULL,
semaphoreType,
0,
vk::Move<vk::VkSemaphore> createExportableSemaphoreType (const vk::DeviceInterface& vkd,
vk::VkDevice device,
- vk::VkSemaphoreTypeKHR semaphoreType,
+ vk::VkSemaphoreType semaphoreType,
vk::VkExternalSemaphoreHandleTypeFlagBits externalType);
int getSemaphoreFd (const vk::DeviceInterface& vkd,
{
{ "1.0", VK_MAKE_VERSION(1, 0, 0) },
{ "1.1", VK_MAKE_VERSION(1, 1, 0) },
+ { "1.2", VK_MAKE_VERSION(1, 2, 0) },
};
- DE_STATIC_ASSERT(vk::SPIRV_VERSION_1_4 + 1 == vk::SPIRV_VERSION_LAST);
+ DE_STATIC_ASSERT(vk::SPIRV_VERSION_1_5 + 1 == vk::SPIRV_VERSION_LAST);
parser << Option<opt::DstPath>("d", "dst-path", "Destination path", "out")
<< Option<opt::Cases>("n", "deqp-case", "Case path filter (works as in test binaries)")
<< Option<opt::Validate>("v", "validate-spv", "Validate generated SPIR-V binaries")
- << Option<opt::VulkanVersion>("t", "target-vulkan-version", "Target Vulkan version", s_vulkanVersion, "1.1")
+ << Option<opt::VulkanVersion>("t", "target-vulkan-version", "Target Vulkan version", s_vulkanVersion, "1.2")
<< Option<opt::ShaderCache>("s", "shadercache", "Enable or disable shader cache", s_enableNames, "enable")
<< Option<opt::ShaderCacheFilename>("r", "shadercache-filename", "Write shader cache to given file", "shadercache.bin")
<< Option<opt::ShaderCacheTruncate>("x", "shadercache-truncate", "Truncate shader cache before running", s_enableNames, "enable")
if (cmdLine.hasOption<opt::SpirvOptimize>())
{
- deqpArgv.push_back("--deqp-optimize-spirv");
+ deqpArgv.push_back("--deqp-optimize-spirv");
if (cmdLine.getOption<opt::SpirvOptimize>())
deqpArgv.push_back("enable");
else
const std::vector<vk::VkExtensionProperties> availableExtensions = vk::enumerateInstanceExtensionProperties(vkp, DE_NULL);
vector<string> extensionPtrs;
+ vector<string> availableExtensionNames;
+ for (const auto& ext : availableExtensions)
+ availableExtensionNames.push_back(ext.extensionName);
+
for (const auto& ext : extensions)
{
- if (!context.isInstanceFunctionalitySupported(ext))
+ if (!vk::isInstanceExtensionSupported(apiVersion, availableExtensionNames, ext))
TCU_THROW(NotSupportedError, ext + " is not supported");
if (!vk::isCoreInstanceExtension(apiVersion, ext))
#include "vkPlatform.hpp"
#include "vkDebugReportUtil.hpp"
#include "vkDeviceFeatures.hpp"
+#include "vkDeviceProperties.hpp"
#include "tcuCommandLine.hpp"
#include "tcuTestLog.hpp"
VkPhysicalDevice getPhysicalDevice (void) const { return m_physicalDevice; }
deUint32 getDeviceVersion (void) const { return m_deviceVersion; }
+
+ bool isDeviceFeatureInitialized (VkStructureType sType) const { return m_deviceFeatures.isDeviceFeatureInitialized(sType); }
const VkPhysicalDeviceFeatures& getDeviceFeatures (void) const { return m_deviceFeatures.getCoreFeatures2().features; }
const VkPhysicalDeviceFeatures2& getDeviceFeatures2 (void) const { return m_deviceFeatures.getCoreFeatures2(); }
+ const VkPhysicalDeviceVulkan11Features& getVulkan11Features (void) const { return m_deviceFeatures.getVulkan11Features(); }
+ const VkPhysicalDeviceVulkan12Features& getVulkan12Features (void) const { return m_deviceFeatures.getVulkan12Features(); }
#include "vkDeviceFeaturesForDefaultDeviceDefs.inl"
- VkDevice getDevice (void) const { return *m_device; }
- const DeviceInterface& getDeviceInterface (void) const { return m_deviceInterface; }
- const VkPhysicalDeviceProperties& getDeviceProperties (void) const { return m_deviceProperties; }
- const vector<string>& getDeviceExtensions (void) const { return m_deviceExtensions; }
+ bool isDevicePropertyInitialized (VkStructureType sType) const { return m_devicePropertiesFull.isDevicePropertyInitialized(sType); }
+ const VkPhysicalDeviceProperties& getDeviceProperties (void) const { return m_deviceProperties; }
+ const VkPhysicalDeviceProperties2& getDeviceProperties2 (void) const { return m_devicePropertiesFull.getCoreProperties2(); }
- deUint32 getUsedApiVersion (void) const { return m_usedApiVersion; }
+#include "vkDevicePropertiesForDefaultDeviceDefs.inl"
- deUint32 getUniversalQueueFamilyIndex (void) const { return m_universalQueueFamilyIndex; }
+ VkDevice getDevice (void) const { return *m_device; }
+ const DeviceInterface& getDeviceInterface (void) const { return m_deviceInterface; }
+ const vector<string>& getDeviceExtensions (void) const { return m_deviceExtensions; }
+ deUint32 getUsedApiVersion (void) const { return m_usedApiVersion; }
+ deUint32 getUniversalQueueFamilyIndex (void) const { return m_universalQueueFamilyIndex; }
VkQueue getUniversalQueue (void) const;
- deUint32 getSparseQueueFamilyIndex (void) const { return m_sparseQueueFamilyIndex; }
+ deUint32 getSparseQueueFamilyIndex (void) const { return m_sparseQueueFamilyIndex; }
VkQueue getSparseQueue (void) const;
private:
const deUint32 m_universalQueueFamilyIndex;
const deUint32 m_sparseQueueFamilyIndex;
const VkPhysicalDeviceProperties m_deviceProperties;
+ const DeviceProperties m_devicePropertiesFull;
const Unique<VkDevice> m_device;
const DeviceDriver m_deviceInterface;
-
};
static deUint32 sanitizeApiVersion(deUint32 v)
, m_universalQueueFamilyIndex (findQueueFamilyIndexWithCaps(m_instanceInterface, m_physicalDevice, VK_QUEUE_GRAPHICS_BIT|VK_QUEUE_COMPUTE_BIT))
, m_sparseQueueFamilyIndex (m_deviceFeatures.getCoreFeatures2().features.sparseBinding ? findQueueFamilyIndexWithCaps(m_instanceInterface, m_physicalDevice, VK_QUEUE_SPARSE_BINDING_BIT) : 0)
, m_deviceProperties (getPhysicalDeviceProperties(m_instanceInterface, m_physicalDevice))
+ , m_devicePropertiesFull (m_instanceInterface, m_usedApiVersion, m_physicalDevice, m_instanceExtensions, m_deviceExtensions)
, m_device (createDefaultDevice(vkPlatform, *m_instance, m_instanceInterface, m_physicalDevice, m_usedApiVersion, m_universalQueueFamilyIndex, m_sparseQueueFamilyIndex, m_deviceFeatures.getCoreFeatures2(), m_deviceExtensions, cmdLine))
, m_deviceInterface (vkPlatform, *m_instance, *m_device)
{
}
deUint32 Context::getMaximumFrameworkVulkanVersion (void) const { return m_device->getMaximumFrameworkVulkanVersion(); }
-deUint32 Context::getAvailableInstanceVersion (void) const { return m_device->getAvailableInstanceVersion(); }
-const vector<string>& Context::getInstanceExtensions (void) const { return m_device->getInstanceExtensions(); }
-vk::VkInstance Context::getInstance (void) const { return m_device->getInstance(); }
-const vk::InstanceInterface& Context::getInstanceInterface (void) const { return m_device->getInstanceInterface(); }
-vk::VkPhysicalDevice Context::getPhysicalDevice (void) const { return m_device->getPhysicalDevice(); }
-deUint32 Context::getDeviceVersion (void) const { return m_device->getDeviceVersion(); }
-const vk::VkPhysicalDeviceFeatures& Context::getDeviceFeatures (void) const { return m_device->getDeviceFeatures(); }
-const vk::VkPhysicalDeviceFeatures2& Context::getDeviceFeatures2 (void) const { return m_device->getDeviceFeatures2(); }
+deUint32 Context::getAvailableInstanceVersion (void) const { return m_device->getAvailableInstanceVersion(); }
+const vector<string>& Context::getInstanceExtensions (void) const { return m_device->getInstanceExtensions(); }
+vk::VkInstance Context::getInstance (void) const { return m_device->getInstance(); }
+const vk::InstanceInterface& Context::getInstanceInterface (void) const { return m_device->getInstanceInterface(); }
+vk::VkPhysicalDevice Context::getPhysicalDevice (void) const { return m_device->getPhysicalDevice(); }
+deUint32 Context::getDeviceVersion (void) const { return m_device->getDeviceVersion(); }
+const vk::VkPhysicalDeviceFeatures& Context::getDeviceFeatures (void) const { return m_device->getDeviceFeatures(); }
+const vk::VkPhysicalDeviceFeatures2& Context::getDeviceFeatures2 (void) const { return m_device->getDeviceFeatures2(); }
bool Context::isDeviceFunctionalitySupported (const std::string& extension) const
{
// check if extension was promoted to core
+ deUint32 apiVersion = getUsedApiVersion();
if (isCoreDeviceExtension(getUsedApiVersion(), extension))
+ {
+ // all folowing checks are for vk12 and can be skipped for previous versions
+ if (apiVersion < VK_MAKE_VERSION(1, 2, 0))
+ return true;
+
+ // handle promoted functionality that was provided under feature bit
+ const auto& vk11Features = m_device->getVulkan11Features();
+ if (extension == "VK_KHR_multiview")
+ return !!vk11Features.multiview;
+ if (extension == "VK_KHR_variable_pointers")
+ return !!vk11Features.variablePointersStorageBuffer;
+ if (extension == "VK_KHR_sampler_ycbcr_conversion")
+ return !!vk11Features.samplerYcbcrConversion;
+ if (extension == "VK_KHR_shader_draw_parameters")
+ return !!vk11Features.shaderDrawParameters;
+
+ const auto& vk12Features = m_device->getVulkan12Features();
+ if (extension == "VK_KHR_timeline_semaphore")
+ return !!vk12Features.timelineSemaphore;
+ if (extension == "VK_KHR_buffer_device_address")
+ return !!vk12Features.bufferDeviceAddress;
+ if (extension == "VK_EXT_descriptor_indexing")
+ return !!vk12Features.descriptorIndexing;
+ if (extension == "VK_KHR_draw_indirect_count")
+ return !!vk12Features.drawIndirectCount;
+ if (extension == "VK_KHR_sampler_mirror_clamp_to_edge")
+ return !!vk12Features.samplerMirrorClampToEdge;
+ if (extension == "VK_EXT_sampler_filter_minmax")
+ return !!vk12Features.samplerFilterMinmax;
+ if (extension == "VK_EXT_shader_viewport_index_layer")
+ return !!vk12Features.shaderOutputViewportIndex && !!vk12Features.shaderOutputLayer;
+
+ // no feature flags to check
return true;
+ }
// check if extension is on the lits of extensions for current device
const auto& extensions = getDeviceExtensions();
- return de::contains(extensions.begin(), extensions.end(), extension);
+ if (de::contains(extensions.begin(), extensions.end(), extension))
+ {
+ if (extension == "VK_KHR_timeline_semaphore")
+ return !!getTimelineSemaphoreFeatures().timelineSemaphore;
+
+ return true;
+ }
+
+ return false;
}
bool Context::isInstanceFunctionalitySupported(const std::string& extension) const
#include "vkDeviceFeaturesForContextDefs.inl"
-const vk::VkPhysicalDeviceProperties& Context::getDeviceProperties (void) const { return m_device->getDeviceProperties(); }
-const vector<string>& Context::getDeviceExtensions (void) const { return m_device->getDeviceExtensions(); }
-vk::VkDevice Context::getDevice (void) const { return m_device->getDevice(); }
-const vk::DeviceInterface& Context::getDeviceInterface (void) const { return m_device->getDeviceInterface(); }
-deUint32 Context::getUniversalQueueFamilyIndex (void) const { return m_device->getUniversalQueueFamilyIndex(); }
-vk::VkQueue Context::getUniversalQueue (void) const { return m_device->getUniversalQueue(); }
-deUint32 Context::getSparseQueueFamilyIndex (void) const { return m_device->getSparseQueueFamilyIndex(); }
-vk::VkQueue Context::getSparseQueue (void) const { return m_device->getSparseQueue(); }
-vk::Allocator& Context::getDefaultAllocator (void) const { return *m_allocator; }
-deUint32 Context::getUsedApiVersion (void) const { return m_device->getUsedApiVersion(); }
+const vk::VkPhysicalDeviceProperties& Context::getDeviceProperties (void) const { return m_device->getDeviceProperties(); }
+const vk::VkPhysicalDeviceProperties2& Context::getDeviceProperties2 (void) const { return m_device->getDeviceProperties2(); }
+
+#include "vkDevicePropertiesForContextDefs.inl"
+
+const vector<string>& Context::getDeviceExtensions (void) const { return m_device->getDeviceExtensions(); }
+vk::VkDevice Context::getDevice (void) const { return m_device->getDevice(); }
+const vk::DeviceInterface& Context::getDeviceInterface (void) const { return m_device->getDeviceInterface(); }
+deUint32 Context::getUniversalQueueFamilyIndex (void) const { return m_device->getUniversalQueueFamilyIndex(); }
+vk::VkQueue Context::getUniversalQueue (void) const { return m_device->getUniversalQueue(); }
+deUint32 Context::getSparseQueueFamilyIndex (void) const { return m_device->getSparseQueueFamilyIndex(); }
+vk::VkQueue Context::getSparseQueue (void) const { return m_device->getSparseQueue(); }
+vk::Allocator& Context::getDefaultAllocator (void) const { return *m_allocator; }
+deUint32 Context::getUsedApiVersion (void) const { return m_device->getUsedApiVersion(); }
bool Context::contextSupports (const deUint32 majorNum, const deUint32 minorNum, const deUint32 patchNum) const
- { return m_device->getUsedApiVersion() >= VK_MAKE_VERSION(majorNum, minorNum, patchNum); }
+ { return m_device->getUsedApiVersion() >= VK_MAKE_VERSION(majorNum, minorNum, patchNum); }
bool Context::contextSupports (const ApiVersion version) const
- { return m_device->getUsedApiVersion() >= pack(version); }
+ { return m_device->getUsedApiVersion() >= pack(version); }
bool Context::contextSupports (const deUint32 requiredApiVersionBits) const
- { return m_device->getUsedApiVersion() >= requiredApiVersionBits; }
+ { return m_device->getUsedApiVersion() >= requiredApiVersionBits; }
+bool Context::isDeviceFeatureInitialized (vk::VkStructureType sType) const
+ { return m_device->isDeviceFeatureInitialized(sType); }
+bool Context::isDevicePropertyInitialized (vk::VkStructureType sType) const
+ { return m_device->isDevicePropertyInitialized(sType); }
-bool Context::requireDeviceFunctionality (const std::string& required)
+bool Context::requireDeviceFunctionality (const std::string& required) const
{
if (!isDeviceFunctionalitySupported(required))
TCU_THROW(NotSupportedError, required + " is not supported");
return true;
}
-bool Context::requireInstanceFunctionality (const std::string& required)
+bool Context::requireInstanceFunctionality (const std::string& required) const
{
if (!isInstanceFunctionalitySupported(required))
TCU_THROW(NotSupportedError, required + " is not supported");
return (void*)m_platformInterface.getGetInstanceProcAddr();
}
+bool Context::isBufferDeviceAddressSupported(void) const
+{
+ return isDeviceFunctionalitySupported("VK_KHR_buffer_device_address") ||
+ isDeviceFunctionalitySupported("VK_EXT_buffer_device_address");
+}
+
// TestCase
void TestCase::initPrograms (SourceCollections&) const
const vk::InstanceInterface& getInstanceInterface (void) const;
vk::VkPhysicalDevice getPhysicalDevice (void) const;
deUint32 getDeviceVersion (void) const;
+ bool isDeviceFeatureInitialized (vk::VkStructureType sType) const;
const vk::VkPhysicalDeviceFeatures& getDeviceFeatures (void) const;
const vk::VkPhysicalDeviceFeatures2& getDeviceFeatures2 (void) const;
#include "vkDeviceFeaturesForContextDecl.inl"
+ bool isDevicePropertyInitialized (vk::VkStructureType sType) const;
const vk::VkPhysicalDeviceProperties& getDeviceProperties (void) const;
+ const vk::VkPhysicalDeviceProperties2& getDeviceProperties2 (void) const;
+
+#include "vkDevicePropertiesForContextDecl.inl"
+
const std::vector<std::string>& getDeviceExtensions (void) const;
vk::VkDevice getDevice (void) const;
const vk::DeviceInterface& getDeviceInterface (void) const;
bool contextSupports (const deUint32 majorNum, const deUint32 minorNum, const deUint32 patchNum) const;
bool contextSupports (const vk::ApiVersion version) const;
bool contextSupports (const deUint32 requiredApiVersionBits) const;
- bool requireDeviceFunctionality (const std::string& required);
- bool requireInstanceFunctionality (const std::string& required);
+ bool requireDeviceFunctionality (const std::string& required) const;
+ bool requireInstanceFunctionality (const std::string& required) const;
bool requireDeviceCoreFeature (const DeviceCoreFeature requiredDeviceCoreFeature);
void* getInstanceProcAddr ();
+ bool isBufferDeviceAddressSupported (void) const;
+
bool resultSetOnValidation () const { return m_resultSetOnValidation; }
void resultSetOnValidation (bool value) { m_resultSetOnValidation = value; }
#include "vktMemoryModelTests.hpp"
#include "vktAmberExampleTests.hpp"
#include "vktAmberGraphicsFuzzTests.hpp"
+#include "vktImagelessFramebufferTests.hpp"
#include "vktTransformFeedbackTests.hpp"
#include "vktDescriptorIndexingTests.hpp"
#include "vktImagelessFramebufferTests.hpp"
addChild(conditional::createTests (m_testCtx));
addChild(cts_amber::createExampleTests (m_testCtx));
addChild(cts_amber::createGraphicsFuzzTests (m_testCtx));
+ addChild(imageless::createTests (m_testCtx));
addChild(TransformFeedback::createTests (m_testCtx));
addChild(DescriptorIndexing::createTests (m_testCtx));
- addChild(imageless::createTests (m_testCtx));
addChild(FragmentShaderInterlock::createTests(m_testCtx));
}
(deUint32)rects.size(),
rects.empty() ? DE_NULL : &rects[0]
};
- const vk::VkPresentRegionsKHR regionInfo =
+ const vk::VkPresentRegionsKHR regionInfo =
{
vk::VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
DE_NULL,
extensions.push_back(getExtensionName(wsiType));
vector<string> instanceExtensions;
-
- for (vector<string>::const_iterator extensionName = extensions.begin();
- extensionName != extensions.end();
- ++extensionName)
+ for (const auto& ext : extensions)
{
- if (!context.isInstanceFunctionalitySupported(*extensionName))
- TCU_THROW(NotSupportedError, (*extensionName + " is not supported").c_str());
+ if (!context.isInstanceFunctionalitySupported(ext))
+ TCU_THROW(NotSupportedError, (ext + " is not supported").c_str());
- if (!isCoreInstanceExtension(version, *extensionName))
- instanceExtensions.push_back(*extensionName);
+ if (!isCoreInstanceExtension(version, ext))
+ instanceExtensions.push_back(ext);
}
return vkt::createCustomInstanceWithExtensions(context, instanceExtensions, pAllocator);
}
for (const string& ext : reqExts)
- {
- if (!context.isDeviceFunctionalitySupported(ext))
- TCU_THROW(NotSupportedError, (ext + " is not supported").c_str());
- }
+ context.requireDeviceFunctionality(ext);
if (features.samplerYcbcrConversion == VK_FALSE)
{
dEQP-VK.api.info.get_physical_device_properties2.format_properties
dEQP-VK.api.info.get_physical_device_properties2.queue_family_properties
dEQP-VK.api.info.get_physical_device_properties2.memory_properties
+dEQP-VK.api.info.vulkan1p2.features
+dEQP-VK.api.info.vulkan1p2.properties
+dEQP-VK.api.info.vulkan1p2.feature_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.property_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.feature_bits_influence
+dEQP-VK.api.info.vulkan1p2_limits_validation.general
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_push_descriptor
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_multiview
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_discard_rectangles
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_sample_locations
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_external_memory_host
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_blend_operation_advanced
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_maintenance_3
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_conservative_rasterization
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_descriptor_indexing
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_inline_uniform_block
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_vertex_attribute_divisor
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_mesh_shader
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_transform_feedback
+dEQP-VK.api.info.vulkan1p2_limits_validation.fragment_density_map
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_ray_tracing
+dEQP-VK.api.info.vulkan1p2_limits_validation.timeline_semaphore
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_line_rasterization
dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4_unorm_pack8
dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4b4a4_unorm_pack16
dEQP-VK.api.info.image_format_properties2.1d.optimal.b4g4r4a4_unorm_pack16
dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_3_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
+dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_5_compute
dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize
dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize
dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize
dEQP-VK.spirv_assembly.instruction.compute.opnmin.all
dEQP-VK.spirv_assembly.instruction.compute.opnmax.all
dEQP-VK.spirv_assembly.instruction.compute.opnclamp.all
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rtz
dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_scalar_sint
dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_scalar_uint
dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_vector_sint
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_control
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_geometry
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_fragment
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_vertex
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_evaluation
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_control
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_geometry
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_fragment
dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_vert
dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tessc
dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tesse
dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.geometry
dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.vertex
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_double
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_double
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bool
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bool
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_double
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_double
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bool
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bool
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec4
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublegeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublevertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublegeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublevertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4geometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intgeometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_intvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintgeometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uintvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatgeometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floatvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_control
dEQP-VK.graphicsfuzz.write-before-break
dEQP-VK.graphicsfuzz.write-red-in-loop-nest
dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if
+dEQP-VK.imageless_framebuffer.color
+dEQP-VK.imageless_framebuffer.depth_stencil
+dEQP-VK.imageless_framebuffer.color_resolve
+dEQP-VK.imageless_framebuffer.depth_stencil_resolve
+dEQP-VK.imageless_framebuffer.multisubpass
dEQP-VK.transform_feedback.simple.basic_1_256
dEQP-VK.transform_feedback.simple.basic_beginqueryindexed_streamid_0_1_256
dEQP-VK.transform_feedback.simple.basic_endqueryindexed_streamid_0_1_256
dEQP-VK.descriptor_indexing.storage_buffer_dynamic_in_loop
dEQP-VK.descriptor_indexing.uniform_buffer_dynamic_in_loop
dEQP-VK.descriptor_indexing.input_attachment_in_loop
-dEQP-VK.imageless_framebuffer.color
-dEQP-VK.imageless_framebuffer.depth_stencil
-dEQP-VK.imageless_framebuffer.color_resolve
-dEQP-VK.imageless_framebuffer.depth_stencil_resolve
-dEQP-VK.imageless_framebuffer.multisubpass
dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.8x8
dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.16x16
dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.32x32
dEQP-VK.api.info.get_physical_device_properties2.format_properties
dEQP-VK.api.info.get_physical_device_properties2.queue_family_properties
dEQP-VK.api.info.get_physical_device_properties2.memory_properties
+dEQP-VK.api.info.vulkan1p2.features
+dEQP-VK.api.info.vulkan1p2.properties
+dEQP-VK.api.info.vulkan1p2.feature_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.property_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.feature_bits_influence
+dEQP-VK.api.info.vulkan1p2_limits_validation.general
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_push_descriptor
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_multiview
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_discard_rectangles
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_sample_locations
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_external_memory_host
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_blend_operation_advanced
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_maintenance_3
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_conservative_rasterization
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_descriptor_indexing
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_inline_uniform_block
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_vertex_attribute_divisor
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_mesh_shader
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_transform_feedback
+dEQP-VK.api.info.vulkan1p2_limits_validation.fragment_density_map
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_ray_tracing
+dEQP-VK.api.info.vulkan1p2_limits_validation.timeline_semaphore
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_line_rasterization
dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4_unorm_pack8
dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4b4a4_unorm_pack16
dEQP-VK.api.info.image_format_properties2.1d.optimal.b4g4r4a4_unorm_pack16
dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.comp
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.frag
dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.vert
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.comp
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.frag
dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.vert
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_3_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
+dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_5_compute
dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize
dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize
dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize
dEQP-VK.spirv_assembly.instruction.compute.opnmin.all
dEQP-VK.spirv_assembly.instruction.compute.opnmax.all
dEQP-VK.spirv_assembly.instruction.compute.opnclamp.all
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rtz
dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_scalar_sint
dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_scalar_uint
dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_vector_sint
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_control
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_geometry
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_fragment
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_vertex
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_evaluation
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_control
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_geometry
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_fragment
dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_vert
dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tessc
dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tesse
dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.geometry
dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.vertex
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float16_t
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_double
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_double
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bool
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bool
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec2
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec3
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec4
dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint8_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint64_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float16_t
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_double
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_double
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bool
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bool
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec2
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec4
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec4
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_tvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublegeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublevertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublegeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublevertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolgeometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolvertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4geometry
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4vertex
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_eval
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_control
dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4geometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_int
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_uint
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_float
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intgeometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_intvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintgeometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uintvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_control
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatgeometry
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floatvertex
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_eval
dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_control
dEQP-VK.graphicsfuzz.write-before-break
dEQP-VK.graphicsfuzz.write-red-in-loop-nest
dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if
+dEQP-VK.imageless_framebuffer.color
+dEQP-VK.imageless_framebuffer.depth_stencil
+dEQP-VK.imageless_framebuffer.color_resolve
+dEQP-VK.imageless_framebuffer.depth_stencil_resolve
+dEQP-VK.imageless_framebuffer.multisubpass
dEQP-VK.transform_feedback.simple.basic_1_256
dEQP-VK.transform_feedback.simple.basic_beginqueryindexed_streamid_0_1_256
dEQP-VK.transform_feedback.simple.basic_endqueryindexed_streamid_0_1_256
dEQP-VK.descriptor_indexing.storage_buffer_dynamic_in_loop
dEQP-VK.descriptor_indexing.uniform_buffer_dynamic_in_loop
dEQP-VK.descriptor_indexing.input_attachment_in_loop
-dEQP-VK.imageless_framebuffer.color
-dEQP-VK.imageless_framebuffer.depth_stencil
-dEQP-VK.imageless_framebuffer.color_resolve
-dEQP-VK.imageless_framebuffer.depth_stencil_resolve
-dEQP-VK.imageless_framebuffer.multisubpass
dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.8x8
dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.16x16
dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.32x32
DEFAULT_BUILD_DIR = os.path.join(tempfile.gettempdir(), "spirv-binaries", "{targetName}-{buildType}")
DEFAULT_TARGET = "null"
DEFAULT_DST_DIR = os.path.join(DEQP_DIR, "external", "vulkancts", "data", "vulkan", "prebuilt")
-DEFAULT_VULKAN_VERSION = "1.1"
def getBuildConfig (buildPathPtrn, targetName, buildType):
buildPath = buildPathPtrn.format(
parser.add_argument("-u",
"--target-vulkan-version",
dest="vulkanVersion",
- default="1.1",
- choices=["1.0", "1.1"],
+ default="1.2",
+ choices=["1.0", "1.1", "1.2"],
help="Target Vulkan version")
return parser.parse_args()
"""
DEFINITIONS = [
- ("VK_API_VERSION_1_0", "deUint32"),
- ("VK_API_VERSION_1_1", "deUint32"),
("VK_MAX_PHYSICAL_DEVICE_NAME_SIZE", "size_t"),
("VK_MAX_EXTENSION_NAME_SIZE", "size_t"),
- ("VK_MAX_DRIVER_NAME_SIZE_KHR", "size_t"),
- ("VK_MAX_DRIVER_INFO_SIZE_KHR", "size_t"),
+ ("VK_MAX_DRIVER_NAME_SIZE", "size_t"),
+ ("VK_MAX_DRIVER_INFO_SIZE", "size_t"),
("VK_UUID_SIZE", "size_t"),
("VK_LUID_SIZE", "size_t"),
("VK_MAX_MEMORY_TYPES", "size_t"),
]
EXTENSION_POSTFIXES = ["KHR", "EXT", "NV", "NVX", "KHX", "NN", "MVK", "FUCHSIA", "GGP", "AMD"]
-EXTENSION_POSTFIXES_STANDARD = ["KHR"]
+EXTENSION_POSTFIXES_STANDARD = ["KHR", "EXT"]
def prefixName (prefix, name):
name = re.sub(r'([a-z0-9])([A-Z])', r'\1_\2', name[2:])
name = name.replace("SMBUILTINS", "SM_BUILTINS")
name = name.replace("ASTCHDRFEATURES", "ASTC_HDR_FEATURES")
name = name.replace("UINT_8", "UINT8")
+ name = name.replace("VULKAN_11_FEATURES", "VULKAN_1_1_FEATURES")
+ name = name.replace("VULKAN_11_PROPERTIES", "VULKAN_1_1_PROPERTIES")
+ name = name.replace("VULKAN_12_FEATURES", "VULKAN_1_2_FEATURES")
+ name = name.replace("VULKAN_12_PROPERTIES", "VULKAN_1_2_PROPERTIES")
name = name.replace("INT_8_", "INT8_")
name = name.replace("AABBNV", "AABB_NV")
self.patch = versionTuple[2]
def getInHex (self):
- if self.major == 1 and self.minor == 0 and self.patch == 0:
- return "VK_API_VERSION_1_0"
- elif self.major == 1 and self.minor == 1 and self.patch == 0:
- return "VK_API_VERSION_1_1"
- else:
- hex = (self.major << 22) | (self.minor << 12) | self.patch
- return '0x%Xu' % (hex)
+ if self.patch == 0:
+ return "VK_API_VERSION_%d_%d" % (self.major, self.minor)
+ return '0x%Xu' % (hash(self))
def isStandardVersion (self):
if self.patch != 0:
return False
if self.major != 1:
return False
- if self.minor != 1 and self.minor != 0:
- return False
return True
def getBestRepresentation (self):
return 'EXT:\n%s ->\nENUMS:\n%s\nCOMPOS:\n%s\nFUNCS:\n%s\nBITF:\n%s\nHAND:\n%s\nDEFS:\n%s\n' % (self.name, self.enums, self.compositeTypes, self.functions, self.bitfields, self.handles, self.definitions, self.versionInCore)
class API:
- def __init__ (self, definitions, handles, enums, bitfields, compositeTypes, functions, extensions):
+ def __init__ (self, versions, definitions, handles, enums, bitfields, compositeTypes, functions, extensions):
+ self.versions = versions
self.definitions = definitions
self.handles = handles
self.enums = enums
def parsePreprocDefinedValue (src, name):
value = parsePreprocDefinedValueOptional(src, name)
if value is None:
-
raise Exception("No such definition: %s" % name)
return value
types.append(parseCompositeType(typeMap[type], typename, contents))
return types
+def parseVersions (src):
+ # returns list of tuples each with four items:
+ # 1. string with version token (without ' 1' at the end)
+ # 2. starting point off version specific definitions in vulkan.h.in
+ # 3. major version number
+ # 4. minor version number
+ return [(m.group()[:-2], m.start(), int(m.group(1)), int(m.group(2))) for m in re.finditer('VK_VERSION_([1-9])_([0-9]) 1', src)]
+
def parseHandles (src):
matches = re.findall(r'VK_DEFINE(_NON_DISPATCHABLE|)_HANDLE\((' + IDENT_PTRN + r')\)[ \t]*[\n\r]', src)
handles = []
return name[0:-len(extPostfix)]
return None
-def populateAliases (objects):
- objectsByName = {}
- for object in objects:
- objectsByName[object.name] = object
- for object in objects:
+def populateExtensionAliases(allObjects, extensionObjects):
+ for object in extensionObjects:
withoutPostfix = removeTypeExtPostfix(object.name)
- if withoutPostfix != None and withoutPostfix in objectsByName:
- objectsByName[withoutPostfix].alias = object
+ if withoutPostfix != None and withoutPostfix in allObjects:
+ # max 1 alias is assumed by functions in this file
+ assert allObjects[withoutPostfix].alias == None
+ allObjects[withoutPostfix].alias = object
object.isAlias = True
- for object in objects:
+ for object in extensionObjects:
object.checkAliasValidity()
def populateAliasesWithTypedefs (objects, src):
functions.append(Function(name.strip(), returnType.strip(), parseArgList(argList)))
return functions
-def parseFunctionsByVersion (src):
- ptrnVer10 = 'VK_VERSION_1_0 1'
- ptrnVer11 = 'VK_VERSION_1_1 1'
- matchVer10 = re.search(ptrnVer10, src)
- matchVer11 = re.search(ptrnVer11, src)
+def parseFunctionsByVersion (src, versions):
+ # construct list of locations where version definitions start, and add the end of the file to it
+ sectionLocations = [versionDef[1] for versionDef in versions]
+ sectionLocations.append(len(src))
+
+ # construct function declaration pattern
ptrn = r'VKAPI_ATTR\s+(' + TYPE_PTRN + ')\s+VKAPI_CALL\s+(' + IDENT_PTRN + r')\s*\(([^)]*)\)\s*;'
regPtrn = re.compile(ptrn)
- matches = regPtrn.findall(src, matchVer10.start(), matchVer11.start())
functions = []
- for returnType, name, argList in matches:
- functions.append(Function(name.strip(), returnType.strip(), parseArgList(argList), 'VK_VERSION_1_0'))
- matches = regPtrn.findall(src, matchVer11.start())
- for returnType, name, argList in matches:
- functions.append(Function(name.strip(), returnType.strip(), parseArgList(argList), 'VK_VERSION_1_1'))
+
+ # iterate over all versions and find all function definitions
+ for index, v in enumerate(versions):
+ matches = regPtrn.findall(src, sectionLocations[index], sectionLocations[index+1])
+ for returnType, name, argList in matches:
+ functions.append(Function(name.strip(), returnType.strip(), parseArgList(argList), v[0]))
return functions
def splitByExtension (src):
ptrn = r'#define\s+[A-Z0-9_]+_EXTENSION_NAME\s+"([^"]+)"'
+ # Construct long pattern that will be used to split whole source by extensions
match = "#define\s+("
for part in re.finditer(ptrn, src):
match += part.group(1)+"|"
match = match[:-1] + ")\s+1"
parts = re.split(match, src)
- # First part is core
+
+ # First part is core, following tuples contain extension name and all its definitions
byExtension = [(None, parts[0])]
for ndx in range(1, len(parts), 2):
byExtension.append((parts[ndx], parts[ndx+1]))
return [Definition(None, match[0], match[1]) for match in matches if not skipDefinition(extensionName, match)]
-def parseExtensions (src, allFunctions, allCompositeTypes, allEnums, allBitfields, allHandles, allDefinitions):
+def parseExtensions (src, versions, allFunctions, allCompositeTypes, allEnums, allBitfields, allHandles, allDefinitions):
def getCoreVersion (extensionName, extensionsData):
+ # returns None when extension was not added to core for any Vulkan version
+ # returns array containing DEVICE or INSTANCE string followed by the vulkan version in which this extension is core
+ # note that this function is also called for vulkan 1.0 source for which extName is None
if not extensionName:
return None
ptrn = extensionName + r'\s+(DEVICE|INSTANCE)\s+([0-9_]+)'
definitionsByName = {definition.name: definition for definition in allDefinitions}
for extensionName, extensionSrc in splitSrc:
- definitions = [Definition(type, name, parsePreprocDefinedValueOptional(extensionSrc, name)) for name, type in DEFINITIONS]
+ definitions = [Definition("deUint32", v.getInHex(), parsePreprocDefinedValueOptional(extensionSrc, v.getInHex())) for v in versions]
+ definitions.extend([Definition(type, name, parsePreprocDefinedValueOptional(extensionSrc, name)) for name, type in DEFINITIONS])
definitions = [definition for definition in definitions if definition.value != None]
additionalDefinitions = parseDefinitions(extensionName, extensionSrc)
handles = parseHandles(extensionSrc)
extHandles = [handlesByName[handle.name] for handle in handles]
extDefinitions = [definitionsByName[definition.name] for definition in definitions]
+ if extCoreVersion != None:
+ populateExtensionAliases(functionsByName, extFunctions)
+ populateExtensionAliases(handlesByName, extHandles)
+ populateExtensionAliases(enumsByName, extEnums)
+ populateExtensionAliases(bitfieldsByName, extBitfields)
+ populateExtensionAliases(compositeTypesByName, extCompositeTypes)
+
+
extensions.append(Extension(extensionName, extHandles, extEnums, extBitfields, extCompositeTypes, extFunctions, extDefinitions, additionalDefinitions, extCoreVersion))
return extensions
return matches
def parseAPI (src):
- definitions = [Definition(type, name, parsePreprocDefinedValue(src, name)) for name, type in DEFINITIONS]
+ versionsData = parseVersions(src)
+ versions = [Version((v[2], v[3], 0)) for v in versionsData]
+ definitions = [Definition("deUint32", v.getInHex(), parsePreprocDefinedValue(src, v.getInHex())) for v in versions]
+ definitions.extend([Definition(type, name, parsePreprocDefinedValue(src, name)) for name, type in DEFINITIONS])
+
handles = parseHandles(src)
rawEnums = parseEnums(src)
bitfieldNames = parseBitfieldNames(src)
bitfields = []
bitfieldEnums = set([getBitEnumNameForBitfield(n) for n in bitfieldNames if getBitEnumNameForBitfield(n) in [enum.name for enum in rawEnums]])
compositeTypes = parseCompositeTypes(src)
- allFunctions = parseFunctionsByVersion(src)
+ allFunctions = parseFunctionsByVersion(src, versionsData)
for enum in rawEnums:
if enum.name in bitfieldEnums:
# Add empty bitfield
bitfields.append(Bitfield(bitfieldName, []))
+ extensions = parseExtensions(src, versions, allFunctions, compositeTypes, enums, bitfields, handles, definitions)
+
# Populate alias fields
populateAliasesWithTypedefs(compositeTypes, src)
populateAliasesWithTypedefs(enums, src)
populateAliasesWithTypedefs(bitfields, src)
- populateAliases(allFunctions)
- populateAliases(handles)
- populateAliases(enums)
- populateAliases(bitfields)
- populateAliases(compositeTypes)
-
for enum in enums:
removeAliasedValues(enum)
- extensions = parseExtensions(src, allFunctions, compositeTypes, enums, bitfields, handles, definitions)
-
return API(
+ versions = versions,
definitions = definitions,
handles = handles,
enums = enums,
writeInlFile(filename, INL_HEADER, lines)
def writeCoreFunctionalities(api, filename):
- functionOriginValues = ["FUNCTIONORIGIN_PLATFORM", "FUNCTIONORIGIN_INSTANCE", "FUNCTIONORIGIN_DEVICE"]
-
- lines = addVersionDefines([Version((1, 0, 0)), Version((1, 1, 0))]) + [
+ functionOriginValues = ["FUNCTIONORIGIN_PLATFORM", "FUNCTIONORIGIN_INSTANCE", "FUNCTIONORIGIN_DEVICE"]
+ lines = addVersionDefines(api.versions) + [
"",
'enum FunctionOrigin', '{'] + [line for line in indentLines([
'\t' + functionOriginValues[0] + '\t= 0,',
"",
"void initApisMap (ApisMap& apis)",
"{",
- " apis.clear();",
- " apis.insert(::std::pair<deUint32, FunctionInfosList>(" + str(Version((1, 0, 0))) + ", FunctionInfosList()));",
- " apis.insert(::std::pair<deUint32, FunctionInfosList>(" + str(Version((1, 1, 0))) + ", FunctionInfosList()));",
+ " apis.clear();"] + [
+ " apis.insert(::std::pair<deUint32, FunctionInfosList>(" + str(v) + ", FunctionInfosList()));" for v in api.versions] + [
""]
- def list10Funcs ():
- for fun in api.functions:
- if fun.apiVersion == 'VK_VERSION_1_0':
- insert = ' apis[' + str(Version((1, 0, 0))) + '].push_back(FunctionInfo("' + fun.name + '",\t' + functionOriginValues[fun.getType()] + '));'
- yield insert
-
- def listAllFuncs ():
+ apiVersions = []
+ for index, v in enumerate(api.versions):
+ funcs = []
+ apiVersions.append("VK_VERSION_{0}_{1}".format(v.major, v.minor))
+ # iterate over all functions that are core in latest vulkan version
+ # note that first item in api.extension array are actually all definitions that are in vulkan.h.in before section with extensions
for fun in api.extensions[0].functions:
- insert = ' apis[' + str(Version((1, 1, 0))) + '].push_back(FunctionInfo("' + fun.name + '",\t' + functionOriginValues[fun.getType()] + '));'
- yield insert
-
- lines = lines + [line for line in indentLines(list10Funcs())]
- lines.append("")
- lines = lines + [line for line in indentLines(listAllFuncs())]
-
- lines.append("}")
- lines.append("")
- lines = lines + removeVersionDefines([Version((1, 0, 0)), Version((1, 1, 0))])
+ if fun.apiVersion in apiVersions:
+ funcs.append(' apis[' + str(v) + '].push_back(FunctionInfo("' + fun.name + '",\t' + functionOriginValues[fun.getType()] + '));')
+ lines = lines + [line for line in indentLines(funcs)] + [""]
+ lines = lines + ["}", ""] + removeVersionDefines(api.versions)
writeInlFile(filename, INL_HEADER, lines)
def generateDeviceFeaturesDefs(src):
# handle special cases
if sType == "EXCLUSIVE_SCISSOR":
sType = "SCISSOR_EXCLUSIVE"
+ if sType in {'VULKAN_1_1', 'VULKAN_1_2'}:
+ continue
# end handling special cases
ptrnExtensionName = r'^\s*#define\s+(\w+' + sSuffix + '_' + sType + '_EXTENSION_NAME).+$'
matchExtensionName = re.search(ptrnExtensionName, src, re.M)
matchSpecVersion.group (1) if matchSpecVersion else '0') )
return defs
-def writeDeviceFeatures(dfDefs, filename):
+def generateDevicePropertiesDefs(src):
+ # look for definitions
+ ptrnSType = r'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_(\w+)_PROPERTIES(\w*)\s*='
+ matches = re.findall(ptrnSType, src, re.M)
+ matches = sorted(matches, key=lambda m: m[0])
+ # construct final list
+ defs = []
+ for sType, sSuffix in matches:
+ structName = re.sub("[_0-9][a-z]", lambda match: match.group(0).upper(), sType.capitalize()).replace('_', '')
+ ptrnStructName = r'\s*typedef\s+struct\s+(VkPhysicalDevice' + structName + 'Properties' + sSuffix[1:] + ')'
+ matchStructName = re.search(ptrnStructName, src, re.M)
+ if matchStructName:
+ if sType in {'VULKAN_1_1', 'VULKAN_1_2'}:
+ continue
+ extType = sType
+ if extType == "MAINTENANCE_3":
+ extType = "MAINTENANCE3"
+ elif extType == "DISCARD_RECTANGLE":
+ extType = "DISCARD_RECTANGLES"
+ # end handling special cases
+ ptrnExtensionName = r'^\s*#define\s+(\w+' + sSuffix + '_' + extType + '_EXTENSION_NAME).+$'
+ matchExtensionName = re.search(ptrnExtensionName, src, re.M)
+ ptrnSpecVersion = r'^\s*#define\s+(\w+' + sSuffix + '_' + extType + '_SPEC_VERSION).+$'
+ matchSpecVersion = re.search(ptrnSpecVersion, src, re.M)
+ defs.append( (sType, sSuffix, matchStructName.group(1), \
+ matchExtensionName.group(0) if matchExtensionName else None,
+ matchExtensionName.group(1) if matchExtensionName else None,
+ matchSpecVersion.group (1) if matchSpecVersion else '0') )
+ return defs
+
+def writeDeviceFeatures(api, dfDefs, filename):
+ # find VkPhysicalDeviceVulkan[1-9][0-9]Features blob structurs
+ # and construct dictionary with all of their attributes
+ blobMembers = {}
+ blobStructs = {}
+ blobPattern = re.compile("^VkPhysicalDeviceVulkan([1-9][0-9])Features$")
+ for structureType in api.compositeTypes:
+ match = blobPattern.match(structureType.name)
+ if match:
+ allMembers = [member.name for member in structureType.members]
+ vkVersion = match.group(1)
+ blobMembers[vkVersion] = allMembers[2:]
+ blobStructs[vkVersion] = set()
+ initFromBlobDefinitions = []
+ emptyInitDefinitions = []
+ # iterate over all feature structures
+ allFeaturesPattern = re.compile("^VkPhysicalDevice\w+Features")
+ nonExtFeaturesPattern = re.compile("^VkPhysicalDevice\w+Features$")
+ for structureType in api.compositeTypes:
+ # skip structures that are not feature structures
+ if not allFeaturesPattern.match(structureType.name):
+ continue
+ # skip structures that were previously identified as blobs
+ if blobPattern.match(structureType.name):
+ continue
+ if structureType.isAlias:
+ continue
+ # skip sType and pNext and just grab third and next attributes
+ structureMembers = structureType.members[2:]
+ notPartOfBlob = True
+ if nonExtFeaturesPattern.match(structureType.name):
+ # check if this member is part of any of the blobs
+ for blobName, blobMemberList in blobMembers.items():
+ # if just one member is not part of this blob go to the next blob
+ # (we asume that all members are part of blob - no need to check all)
+ if structureMembers[0].name not in blobMemberList:
+ continue
+ # add another feature structure name to this blob
+ blobStructs[blobName].add(structureType)
+ # add specialization for this feature structure
+ memberCopying = ""
+ for member in structureMembers:
+ memberCopying += "\tfeatureType.{0} = allBlobs.vk{1}.{0};\n".format(member.name, blobName)
+ wholeFunction = \
+ "template<> void initFromBlob<{0}>({0}& featureType, const AllBlobs& allBlobs)\n" \
+ "{{\n" \
+ "{1}" \
+ "}}".format(structureType.name, memberCopying)
+ initFromBlobDefinitions.append(wholeFunction)
+ notPartOfBlob = False
+ # assuming that all members are part of blob, goto next
+ break
+ # add empty template definition as on Fedora there are issue with
+ # linking using just generic template - all specializations are needed
+ if notPartOfBlob:
+ emptyFunction = "template<> void initFromBlob<{0}>({0}&, const AllBlobs&) {{}}"
+ emptyInitDefinitions.append(emptyFunction.format(structureType.name))
extensionDefines = []
makeFeatureDescDefinitions = []
featureStructWrappers = []
# construct makeFeatureDesc template function definitions
sTypeName = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_{0}_FEATURES{1}".format(sType, sSuffix)
makeFeatureDescDefinitions.append("template<> FeatureDesc makeFeatureDesc<{0}>(void) " \
- "{{ return FeatureDesc({1}, {2}, {3}, {4}); }}".format(extStruct, sTypeName, extensionNameDefinition, specVer, len(dfDefs)-idx))
+ "{{ return FeatureDesc{{{1}, {2}, {3}, {4}}}; }}".format(extStruct, sTypeName, extensionNameDefinition, specVer, len(dfDefs)-idx))
# construct CreateFeatureStruct wrapper block
featureStructWrappers.append("\t{{ createFeatureStructWrapper<{0}>, {1}, {2} }},".format(extStruct, extensionNameDefinition, specVer))
+ # construct method that will check if structure sType is part of blob
+ blobChecker = "bool isPartOfBlobFeatures (VkStructureType sType)\n{\n" \
+ "\tconst std::vector<VkStructureType> sTypeVect =" \
+ "\t{\n"
+ # iterate over blobs with list of structures
+ for blobName in sorted(blobStructs.keys()):
+ blobChecker += "\t\t// Vulkan{0}\n".format(blobName)
+ # iterate over all feature structures in current blob
+ structuresList = list(blobStructs[blobName])
+ structuresList = sorted(structuresList, key=lambda s: s.name)
+ for structType in structuresList:
+ # find definition of this structure in dfDefs
+ structName = structType.name
+ # handle special cases
+ if structName == 'VkPhysicalDeviceShaderDrawParameterFeatures':
+ structName = 'VkPhysicalDeviceShaderDrawParametersFeatures'
+ # end handling special cases
+ structDef = [s for s in dfDefs if s[2] == structName][0]
+ sType = structDef[0]
+ sSuffix = structDef[1]
+ # handle special cases
+ if sType == "SCISSOR_EXCLUSIVE":
+ sType = "EXCLUSIVE_SCISSOR"
+ # end handling special cases
+ sTypeName = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_{0}_FEATURES{1}".format(sType, sSuffix)
+ blobChecker += "\t\t{0},\n".format(sTypeName)
+ blobChecker += "\t};\n" \
+ "\treturn de::contains(sTypeVect.begin(), sTypeVect.end(), sType);\n" \
+ "}\n"
# combine all definition lists
stream = [
'#include "vkDeviceFeatures.hpp"\n',
'namespace vk\n{']
stream.extend(extensionDefines)
stream.append('\n')
+ stream.extend(initFromBlobDefinitions)
+ stream.append('\n// generic template is not enough for some compilers')
+ stream.extend(emptyInitDefinitions)
+ stream.append('\n')
stream.extend(makeFeatureDescDefinitions)
stream.append('\n')
- stream.append('static const FeatureStructMapItem featureStructCreatorMap[] =\n{')
+ stream.append('static const FeatureStructCreationData featureStructCreationArray[] =\n{')
stream.extend(featureStructWrappers)
+ stream.append('};\n')
+ stream.append(blobChecker)
+ stream.append('} // vk\n')
+ writeInlFile(filename, INL_HEADER, stream)
+
+def writeDeviceProperties(dfDefs, filename):
+ extensionDefines = []
+ makePropertyDescDefinitions = []
+ propertyStructWrappers = []
+ for idx, (sType, sSuffix, extStruct, extLine, extName, specVer) in enumerate(dfDefs):
+ extensionNameDefinition = extName
+ if not extensionNameDefinition:
+ extensionNameDefinition = 'DECL{0}_{1}_EXTENSION_NAME'.format((sSuffix if sSuffix else ''), sType)
+ # construct defines with names
+ if extLine:
+ extensionDefines.append(extLine)
+ else:
+ extensionDefines.append('#define {0} "not_existent_property"'.format(extensionNameDefinition))
+ # construct makePropertyDesc template function definitions
+ sTypeName = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_{0}_PROPERTIES{1}".format(sType, sSuffix)
+ makePropertyDescDefinitions.append("template<> PropertyDesc makePropertyDesc<{0}>(void) " \
+ "{{ return PropertyDesc({1}, {2}, {3}, {4}); }}".format(extStruct, sTypeName, extensionNameDefinition, specVer, len(dfDefs)-idx))
+ # construct CreateProperty struct wrapper block
+ propertyStructWrappers.append("\t{{ createPropertyStructWrapper<{0}>, {1}, {2} }},".format(extStruct, extensionNameDefinition, specVer))
+ # combine all definition lists
+ stream = [
+ '#include "vkDeviceProperties.hpp"\n',
+ 'namespace vk\n{']
+ stream.extend(extensionDefines)
+ stream.append('\n')
+ stream.extend(makePropertyDescDefinitions)
+ stream.append('\n')
+ stream.append('static const PropertyStructMapItem propertyStructCreatorMap[] =\n{')
+ stream.extend(propertyStructWrappers)
stream.append('};\n} // vk\n')
writeInlFile(filename, INL_HEADER, stream)
def genericDeviceFeaturesWriter(dfDefs, pattern, filename):
stream = []
- for _, _, extStruct, _, _, _ in dfDefs:
- nameSubStr = extStruct.replace("VkPhysicalDevice", "").replace("KHR", "").replace("EXT", "").replace("NV", "")
+ for sType, sSuffix, extStruct, _, _, _ in dfDefs:
+ nameSubStr = extStruct.replace("VkPhysicalDevice", "").replace("KHR", "").replace("NV", "")
stream.append(pattern.format(extStruct, nameSubStr))
writeInlFile(filename, INL_HEADER, indentLines(stream))
-def writeDefaultDeviceDefs(dfDefs, filename):
+def writeDeviceFeaturesDefaultDeviceDefs(dfDefs, filename):
pattern = "const {0}&\tget{1}\t(void) const {{ return m_deviceFeatures.getFeatureType<{0}>();\t}}"
genericDeviceFeaturesWriter(dfDefs, pattern, filename)
-def writeContextDecl(dfDefs, filename):
+def writeDeviceFeaturesContextDecl(dfDefs, filename):
pattern = "const vk::{0}&\tget{1}\t(void) const;"
genericDeviceFeaturesWriter(dfDefs, pattern, filename)
-def writeContextDefs(dfDefs, filename):
+def writeDeviceFeaturesContextDefs(dfDefs, filename):
pattern = "const vk::{0}&\tContext::get{1}\t(void) const {{ return m_device->get{1}();\t}}"
genericDeviceFeaturesWriter(dfDefs, pattern, filename)
+def genericDevicePropertiesWriter(dfDefs, pattern, filename):
+ stream = []
+ for _, _, extStruct, _, _, _ in dfDefs:
+ nameSubStr = extStruct.replace("VkPhysicalDevice", "").replace("KHR", "").replace("NV", "")
+ stream.append(pattern.format(extStruct, nameSubStr))
+ writeInlFile(filename, INL_HEADER, indentLines(stream))
+
+def writeDevicePropertiesDefaultDeviceDefs(dfDefs, filename):
+ pattern = "const {0}&\tget{1}\t(void) const {{ return m_devicePropertiesFull.getPropertyType<{0}>();\t}}"
+ genericDevicePropertiesWriter(dfDefs, pattern, filename)
+
+def writeDevicePropertiesContextDecl(dfDefs, filename):
+ pattern = "const vk::{0}&\tget{1}\t(void) const;"
+ genericDevicePropertiesWriter(dfDefs, pattern, filename)
+
+def writeDevicePropertiesContextDefs(dfDefs, filename):
+ pattern = "const vk::{0}&\tContext::get{1}\t(void) const {{ return m_device->get{1}();\t}}"
+ genericDevicePropertiesWriter(dfDefs, pattern, filename)
+
def splitWithQuotation(line):
result = []
splitted = re.findall(r'[^"\s]\S*|".+?"', line)
dictStructs[m[0]].append(allRequirements[0])
stream.extend(['bool checkMandatoryFeatures(const vkt::Context& context)\n{',
- '\tif ( !context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2") )',
+ '\tif (!context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2"))',
'\t\tTCU_THROW(NotSupportedError, "Extension VK_KHR_get_physical_device_properties2 is not present");',
'',
'\tVkPhysicalDevice\t\t\t\t\tphysicalDevice\t\t= context.getPhysicalDevice();',
listStruct = sorted(dictStructs.items(), key=lambda tup: tup[0]) # sort to have same results for py2 and py3
for k, v in listStruct:
+ if (v[1].startswith("ApiVersion")):
+ cond = '\tif (context.contextSupports(vk::' + v[1] + '))'
+ else:
+ cond = '\tif (vk::isDeviceExtensionSupported(context.getUsedApiVersion(), context.getDeviceExtensions(), "' + v[1] + '"))'
stream.extend(['\tvk::' + k + ' ' + v[0]+ ';',
'\tdeMemset(&' + v[0] + ', 0, sizeof(' + v[0] + '));',
''])
instanceFuncs = [Function.TYPE_INSTANCE]
deviceFuncs = [Function.TYPE_DEVICE]
- dfd = generateDeviceFeaturesDefs(src)
- writeDeviceFeatures (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeatures.inl"))
- writeDefaultDeviceDefs (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForDefaultDeviceDefs.inl"))
- writeContextDecl (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForContextDecl.inl"))
- writeContextDefs (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForContextDefs.inl"))
-
- writeHandleType (api, os.path.join(VULKAN_DIR, "vkHandleType.inl"))
- writeBasicTypes (api, os.path.join(VULKAN_DIR, "vkBasicTypes.inl"))
- writeCompositeTypes (api, os.path.join(VULKAN_DIR, "vkStructTypes.inl"))
- writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkVirtualPlatformInterface.inl"), platformFuncs, False)
- writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkVirtualInstanceInterface.inl"), instanceFuncs, False)
- writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkVirtualDeviceInterface.inl"), deviceFuncs, False)
- writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkConcretePlatformInterface.inl"), platformFuncs, True)
- writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkConcreteInstanceInterface.inl"), instanceFuncs, True)
- writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkConcreteDeviceInterface.inl"), deviceFuncs, True)
- writeFunctionPtrTypes (api, os.path.join(VULKAN_DIR, "vkFunctionPointerTypes.inl"))
- writeFunctionPointers (api, os.path.join(VULKAN_DIR, "vkPlatformFunctionPointers.inl"), platformFuncs)
- writeFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInstanceFunctionPointers.inl"), instanceFuncs)
- writeFunctionPointers (api, os.path.join(VULKAN_DIR, "vkDeviceFunctionPointers.inl"), deviceFuncs)
- writeInitFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInitPlatformFunctionPointers.inl"), platformFuncs, lambda f: f.name != "vkGetInstanceProcAddr")
- writeInitFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInitInstanceFunctionPointers.inl"), instanceFuncs)
- writeInitFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInitDeviceFunctionPointers.inl"), deviceFuncs)
- writeFuncPtrInterfaceImpl (api, os.path.join(VULKAN_DIR, "vkPlatformDriverImpl.inl"), platformFuncs, "PlatformDriver")
- writeFuncPtrInterfaceImpl (api, os.path.join(VULKAN_DIR, "vkInstanceDriverImpl.inl"), instanceFuncs, "InstanceDriver")
- writeFuncPtrInterfaceImpl (api, os.path.join(VULKAN_DIR, "vkDeviceDriverImpl.inl"), deviceFuncs, "DeviceDriver")
- writeStrUtilProto (api, os.path.join(VULKAN_DIR, "vkStrUtil.inl"))
- writeStrUtilImpl (api, os.path.join(VULKAN_DIR, "vkStrUtilImpl.inl"))
- writeRefUtilProto (api, os.path.join(VULKAN_DIR, "vkRefUtil.inl"))
- writeRefUtilImpl (api, os.path.join(VULKAN_DIR, "vkRefUtilImpl.inl"))
- writeStructTraitsImpl (api, os.path.join(VULKAN_DIR, "vkGetStructureTypeImpl.inl"))
- writeNullDriverImpl (api, os.path.join(VULKAN_DIR, "vkNullDriverImpl.inl"))
- writeTypeUtil (api, os.path.join(VULKAN_DIR, "vkTypeUtil.inl"))
- writeSupportedExtenions (api, os.path.join(VULKAN_DIR, "vkSupportedExtensions.inl"))
- writeCoreFunctionalities (api, os.path.join(VULKAN_DIR, "vkCoreFunctionalities.inl"))
- writeExtensionFunctions (api, os.path.join(VULKAN_DIR, "vkExtensionFunctions.inl"))
- writeMandatoryFeatures ( os.path.join(VULKAN_DIR, "vkMandatoryFeatures.inl"))
- writeExtensionList ( os.path.join(VULKAN_DIR, "vkInstanceExtensions.inl"), 'INSTANCE')
- writeExtensionList ( os.path.join(VULKAN_DIR, "vkDeviceExtensions.inl"), 'DEVICE')
+ dfd = generateDeviceFeaturesDefs(src)
+ writeDeviceFeatures (api, dfd, os.path.join(VULKAN_DIR, "vkDeviceFeatures.inl"))
+ writeDeviceFeaturesDefaultDeviceDefs (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForDefaultDeviceDefs.inl"))
+ writeDeviceFeaturesContextDecl (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForContextDecl.inl"))
+ writeDeviceFeaturesContextDefs (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForContextDefs.inl"))
+
+ dpd = generateDevicePropertiesDefs(src)
+ writeDeviceProperties (dpd, os.path.join(VULKAN_DIR, "vkDeviceProperties.inl"))
+ writeDevicePropertiesDefaultDeviceDefs (dpd, os.path.join(VULKAN_DIR, "vkDevicePropertiesForDefaultDeviceDefs.inl"))
+ writeDevicePropertiesContextDecl (dpd, os.path.join(VULKAN_DIR, "vkDevicePropertiesForContextDecl.inl"))
+ writeDevicePropertiesContextDefs (dpd, os.path.join(VULKAN_DIR, "vkDevicePropertiesForContextDefs.inl"))
+
+ writeHandleType (api, os.path.join(VULKAN_DIR, "vkHandleType.inl"))
+ writeBasicTypes (api, os.path.join(VULKAN_DIR, "vkBasicTypes.inl"))
+ writeCompositeTypes (api, os.path.join(VULKAN_DIR, "vkStructTypes.inl"))
+ writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkVirtualPlatformInterface.inl"), platformFuncs, False)
+ writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkVirtualInstanceInterface.inl"), instanceFuncs, False)
+ writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkVirtualDeviceInterface.inl"), deviceFuncs, False)
+ writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkConcretePlatformInterface.inl"), platformFuncs, True)
+ writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkConcreteInstanceInterface.inl"), instanceFuncs, True)
+ writeInterfaceDecl (api, os.path.join(VULKAN_DIR, "vkConcreteDeviceInterface.inl"), deviceFuncs, True)
+ writeFunctionPtrTypes (api, os.path.join(VULKAN_DIR, "vkFunctionPointerTypes.inl"))
+ writeFunctionPointers (api, os.path.join(VULKAN_DIR, "vkPlatformFunctionPointers.inl"), platformFuncs)
+ writeFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInstanceFunctionPointers.inl"), instanceFuncs)
+ writeFunctionPointers (api, os.path.join(VULKAN_DIR, "vkDeviceFunctionPointers.inl"), deviceFuncs)
+ writeInitFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInitPlatformFunctionPointers.inl"), platformFuncs, lambda f: f.name != "vkGetInstanceProcAddr")
+ writeInitFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInitInstanceFunctionPointers.inl"), instanceFuncs)
+ writeInitFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInitDeviceFunctionPointers.inl"), deviceFuncs)
+ writeFuncPtrInterfaceImpl (api, os.path.join(VULKAN_DIR, "vkPlatformDriverImpl.inl"), platformFuncs, "PlatformDriver")
+ writeFuncPtrInterfaceImpl (api, os.path.join(VULKAN_DIR, "vkInstanceDriverImpl.inl"), instanceFuncs, "InstanceDriver")
+ writeFuncPtrInterfaceImpl (api, os.path.join(VULKAN_DIR, "vkDeviceDriverImpl.inl"), deviceFuncs, "DeviceDriver")
+ writeStrUtilProto (api, os.path.join(VULKAN_DIR, "vkStrUtil.inl"))
+ writeStrUtilImpl (api, os.path.join(VULKAN_DIR, "vkStrUtilImpl.inl"))
+ writeRefUtilProto (api, os.path.join(VULKAN_DIR, "vkRefUtil.inl"))
+ writeRefUtilImpl (api, os.path.join(VULKAN_DIR, "vkRefUtilImpl.inl"))
+ writeStructTraitsImpl (api, os.path.join(VULKAN_DIR, "vkGetStructureTypeImpl.inl"))
+ writeNullDriverImpl (api, os.path.join(VULKAN_DIR, "vkNullDriverImpl.inl"))
+ writeTypeUtil (api, os.path.join(VULKAN_DIR, "vkTypeUtil.inl"))
+ writeSupportedExtenions (api, os.path.join(VULKAN_DIR, "vkSupportedExtensions.inl"))
+ writeCoreFunctionalities (api, os.path.join(VULKAN_DIR, "vkCoreFunctionalities.inl"))
+ writeExtensionFunctions (api, os.path.join(VULKAN_DIR, "vkExtensionFunctions.inl"))
+ writeMandatoryFeatures ( os.path.join(VULKAN_DIR, "vkMandatoryFeatures.inl"))
+ writeExtensionList ( os.path.join(VULKAN_DIR, "vkInstanceExtensions.inl"), 'INSTANCE')
+ writeExtensionList ( os.path.join(VULKAN_DIR, "vkDeviceExtensions.inl"), 'DEVICE')
// This is manually created file used by gen_framework.py.
// It contains additional data for extensions that are required to
// generate code for cts. Currently every line contains:
-// * extension name (at this point only KHR extensions are needed)
+// * extension name
// * information wheter this is device or instance extension
// * version number in which this extension is part of core
VK_KHR_swapchain DEVICE
VK_KHR_swapchain_mutable_format DEVICE
VK_KHR_display_swapchain DEVICE
-VK_KHR_sampler_mirror_clamp_to_edge DEVICE
+VK_KHR_sampler_mirror_clamp_to_edge DEVICE 1_2_0
VK_KHR_multiview DEVICE 1_1_0
VK_KHR_device_group DEVICE 1_1_0
VK_KHR_shader_draw_parameters DEVICE 1_1_0
VK_KHR_external_semaphore_win32 DEVICE
VK_KHR_external_semaphore_fd DEVICE
VK_KHR_push_descriptor DEVICE
-VK_KHR_shader_float16_int8 DEVICE
+VK_KHR_shader_float16_int8 DEVICE 1_2_0
VK_KHR_16bit_storage DEVICE 1_1_0
VK_KHR_incremental_present DEVICE
-VK_KHR_8bit_storage DEVICE
+VK_KHR_8bit_storage DEVICE 1_2_0
VK_KHR_descriptor_update_template DEVICE 1_1_0
-VK_KHR_create_renderpass2 DEVICE
+VK_KHR_create_renderpass2 DEVICE 1_2_0
VK_KHR_shared_presentable_image DEVICE
VK_KHR_external_fence DEVICE 1_1_0
VK_KHR_external_fence_win32 DEVICE
VK_KHR_storage_buffer_storage_class DEVICE 1_1_0
VK_KHR_relaxed_block_layout DEVICE 1_1_0
VK_KHR_get_memory_requirements2 DEVICE 1_1_0
-VK_KHR_image_format_list DEVICE
+VK_KHR_image_format_list DEVICE 1_2_0
VK_KHR_sampler_ycbcr_conversion DEVICE 1_1_0
VK_KHR_bind_memory2 DEVICE 1_1_0
VK_KHR_maintenance3 DEVICE 1_1_0
-VK_KHR_driver_properties DEVICE
-VK_KHR_shader_float_controls DEVICE
-VK_KHR_depth_stencil_resolve DEVICE
-VK_KHR_draw_indirect_count DEVICE
-VK_KHR_shader_atomic_int64 DEVICE
-VK_KHR_vulkan_memory_model DEVICE
-VK_KHR_uniform_buffer_standard_layout DEVICE
-VK_KHR_imageless_framebuffer DEVICE
+VK_KHR_driver_properties DEVICE 1_2_0
+VK_KHR_shader_float_controls DEVICE 1_2_0
+VK_KHR_depth_stencil_resolve DEVICE 1_2_0
+VK_KHR_draw_indirect_count DEVICE 1_2_0
+VK_KHR_shader_atomic_int64 DEVICE 1_2_0
+VK_KHR_vulkan_memory_model DEVICE 1_2_0
+VK_KHR_uniform_buffer_standard_layout DEVICE 1_2_0
+VK_KHR_imageless_framebuffer DEVICE 1_2_0
+VK_KHR_shader_subgroup_extended_types DEVICE 1_2_0
+VK_EXT_sampler_filter_minmax DEVICE 1_2_0
+VK_EXT_shader_viewport_index_layer DEVICE 1_2_0
+VK_EXT_descriptor_indexing DEVICE 1_2_0
+VK_EXT_scalar_block_layout DEVICE 1_2_0
+VK_KHR_buffer_device_address DEVICE 1_2_0
+VK_EXT_host_query_reset DEVICE 1_2_0
+VK_KHR_separate_depth_stencil_layouts DEVICE 1_2_0
+VK_KHR_timeline_semaphore DEVICE 1_2_0
+VK_KHR_spirv_1_4 DEVICE 1_2_0
+VK_EXT_separate_stencil_usage DEVICE 1_2_0
VK_KHR_pipeline_executable_properties DEVICE
-VK_KHR_timeline_semaphore DEVICE
VK_KHR_shader_clock DEVICE
-VK_KHR_spirv_1_4 DEVICE
-VK_KHR_shader_subgroup_extended_types DEVICE
-VK_KHR_separate_depth_stencil_layouts DEVICE
VK_KHR_performance_query DEVICE
\ No newline at end of file
VkPhysicalDeviceFeatures shaderSampledImageArrayDynamicIndexing REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceFeatures shaderStorageBufferArrayDynamicIndexing REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDevice8BitStorageFeaturesKHR storageBuffer8BitAccess REQUIREMENTS ( VK_KHR_8bit_storage )
+VkPhysicalDeviceVulkan11Features multiview REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
VkPhysicalDeviceMultiviewFeatures multiview REQUIREMENTS ( "ApiVersion(1, 1, 0)" )
VkPhysicalDeviceMultiviewFeatures multiview REQUIREMENTS ( VK_KHR_multiview )
VkPhysicalDeviceVariablePointersFeatures variablePointersStorageBuffer REQUIREMENTS ( VK_KHR_variable_pointers )
VkPhysicalDeviceScalarBlockLayoutFeaturesEXT scalarBlockLayout REQUIREMENTS ( VK_EXT_scalar_block_layout )
VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR uniformBufferStandardLayout REQUIREMENTS ( VK_KHR_uniform_buffer_standard_layout )
VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR pipelineExecutableInfo REQUIREMENTS ( VK_KHR_pipeline_executable_properties )
+VkPhysicalDeviceSubgroupSizeControlFeaturesEXT subgroupSizeControl REQUIREMENTS ( VK_EXT_subgroup_size_control )
+VkPhysicalDeviceSubgroupSizeControlFeaturesEXT computeFullSubgroups REQUIREMENTS ( VK_EXT_subgroup_size_control )
+VkPhysicalDeviceVulkan12Features subgroupBroadcastDynamicId REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+VkPhysicalDeviceVulkan12Features imagelessFramebuffer REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+VkPhysicalDeviceVulkan12Features uniformBufferStandardLayout REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+VkPhysicalDeviceVulkan12Features separateDepthStencilLayouts REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+VkPhysicalDeviceVulkan12Features hostQueryReset REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
VkPhysicalDeviceTimelineSemaphoreFeaturesKHR timelineSemaphore REQUIREMENTS ( VK_KHR_timeline_semaphore )
+VkPhysicalDeviceVulkan12Features timelineSemaphore REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+VkPhysicalDeviceVulkan12Features shaderUniformTexelBufferArrayDynamicIndexing REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features shaderStorageTexelBufferArrayDynamicIndexing REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features shaderSampledImageArrayNonUniformIndexing REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features shaderStorageBufferArrayNonUniformIndexing REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features shaderUniformTexelBufferArrayNonUniformIndexing REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features descriptorBindingSampledImageUpdateAfterBind REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features descriptorBindingStorageImageUpdateAfterBind REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features descriptorBindingStorageBufferUpdateAfterBind REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features descriptorBindingUniformTexelBufferUpdateAfterBind REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features descriptorBindingStorageTexelBufferUpdateAfterBind REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features descriptorBindingUpdateUnusedWhilePending REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features descriptorBindingPartiallyBound REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features runtimeDescriptorArray REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
VK_ERROR_FRAGMENTED_POOL = -12,
VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
+ VK_ERROR_FRAGMENTATION = -1000161000,
+ VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
VK_ERROR_SURFACE_LOST_KHR = -1000000000,
VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
VK_SUBOPTIMAL_KHR = 1000001003,
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
VK_ERROR_INVALID_SHADER_NV = -1000012000,
VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
- VK_ERROR_FRAGMENTATION_EXT = -1000161000,
VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
- VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000244000,
VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
+ VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
+ VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
+ VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
VK_RESULT_END_RANGE = VK_INCOMPLETE,
VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,
+ VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002,
+ VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004,
+ VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005,
+ VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,
+ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,
+ VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,
+ VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002,
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,
+ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004,
+ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001,
+ VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,
+ VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,
+ VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,
VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000,
VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002,
- VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000,
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002,
- VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003,
- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004,
- VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005,
- VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006,
VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
- VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001,
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002,
VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
- VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004,
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000,
VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,
VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000,
VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001,
- VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002,
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003,
- VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004,
- VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,
VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000,
VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,
VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003,
VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004,
VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000,
VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000,
VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002,
VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000,
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001,
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
- VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000,
VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,
VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000,
VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000,
VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,
VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000,
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,
VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
+ VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
+ VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
+ VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
+ VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
+ VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
+ VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
+ VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
+ VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
+ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
+ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
+ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+ VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
+ VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
+ VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
+ VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000,
+ VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001,
+ VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002,
+ VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003,
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003,
VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
- VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000,
- VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001,
- VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002,
- VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003,
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+ VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
+ VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
- VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000010,
+ VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010,
+ VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+ VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkBufferCreateFlagBits;
typedef VkFlags VkBufferCreateFlags;
VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000,
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 0x00000400,
- VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000,
+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkBufferUsageFlagBits;
typedef VkFlags VkBufferUsageFlags;
typedef VkFlags VkSamplerCreateFlags;
typedef enum VkDescriptorSetLayoutCreateFlagBits {
+ VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
- VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 0x00000002,
+ VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkDescriptorSetLayoutCreateFlagBits;
typedef VkFlags VkDescriptorSetLayoutCreateFlags;
typedef enum VkDescriptorPoolCreateFlagBits {
VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
- VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 0x00000002,
+ VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,
+ VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,
VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkDescriptorPoolCreateFlagBits;
typedef VkFlags VkDescriptorPoolCreateFlags;
typedef VkFlags VkDescriptorPoolResetFlags;
typedef enum VkFramebufferCreateFlagBits {
- VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 0x00000001,
+ VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
+ VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkFramebufferCreateFlagBits;
typedef VkFlags VkFramebufferCreateFlags;
typedef enum VkMemoryAllocateFlagBits {
VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004,
VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
+ VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkMemoryAllocateFlagBits;
typedef VkFlags VkMemoryAllocateFlags;
#endif
+#define VK_VERSION_1_2 1
+// Vulkan 1.2 version number
+#define VK_API_VERSION_1_2 VK_MAKE_VERSION(1, 2, 0)// Patch version should always be set to 0
+
+typedef uint64_t VkDeviceAddress;
+#define VK_MAX_DRIVER_NAME_SIZE 256
+#define VK_MAX_DRIVER_INFO_SIZE 256
+
+typedef enum VkDriverId {
+ VK_DRIVER_ID_AMD_PROPRIETARY = 1,
+ VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,
+ VK_DRIVER_ID_MESA_RADV = 3,
+ VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,
+ VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,
+ VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,
+ VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,
+ VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,
+ VK_DRIVER_ID_ARM_PROPRIETARY = 9,
+ VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,
+ VK_DRIVER_ID_GGP_PROPRIETARY = 11,
+ VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,
+ VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY,
+ VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE,
+ VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV,
+ VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY,
+ VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
+ VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
+ VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
+ VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,
+ VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY,
+ VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
+ VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY,
+ VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+ VK_DRIVER_ID_BEGIN_RANGE = VK_DRIVER_ID_AMD_PROPRIETARY,
+ VK_DRIVER_ID_END_RANGE = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+ VK_DRIVER_ID_RANGE_SIZE = (VK_DRIVER_ID_BROADCOM_PROPRIETARY - VK_DRIVER_ID_AMD_PROPRIETARY + 1),
+ VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF
+} VkDriverId;
+
+typedef enum VkShaderFloatControlsIndependence {
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_BEGIN_RANGE = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_END_RANGE = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_RANGE_SIZE = (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY + 1),
+ VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF
+} VkShaderFloatControlsIndependence;
+
+typedef enum VkSamplerReductionMode {
+ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,
+ VK_SAMPLER_REDUCTION_MODE_MIN = 1,
+ VK_SAMPLER_REDUCTION_MODE_MAX = 2,
+ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+ VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN,
+ VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX,
+ VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+ VK_SAMPLER_REDUCTION_MODE_END_RANGE = VK_SAMPLER_REDUCTION_MODE_MAX,
+ VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE = (VK_SAMPLER_REDUCTION_MODE_MAX - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE + 1),
+ VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF
+} VkSamplerReductionMode;
+
+typedef enum VkSemaphoreType {
+ VK_SEMAPHORE_TYPE_BINARY = 0,
+ VK_SEMAPHORE_TYPE_TIMELINE = 1,
+ VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY,
+ VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE,
+ VK_SEMAPHORE_TYPE_BEGIN_RANGE = VK_SEMAPHORE_TYPE_BINARY,
+ VK_SEMAPHORE_TYPE_END_RANGE = VK_SEMAPHORE_TYPE_TIMELINE,
+ VK_SEMAPHORE_TYPE_RANGE_SIZE = (VK_SEMAPHORE_TYPE_TIMELINE - VK_SEMAPHORE_TYPE_BINARY + 1),
+ VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreType;
+
+typedef enum VkResolveModeFlagBits {
+ VK_RESOLVE_MODE_NONE = 0,
+ VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,
+ VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,
+ VK_RESOLVE_MODE_MIN_BIT = 0x00000004,
+ VK_RESOLVE_MODE_MAX_BIT = 0x00000008,
+ VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE,
+ VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
+ VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT,
+ VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT,
+ VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT,
+ VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkResolveModeFlagBits;
+typedef VkFlags VkResolveModeFlags;
+
+typedef enum VkDescriptorBindingFlagBits {
+ VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001,
+ VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002,
+ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004,
+ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008,
+ VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
+ VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
+ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
+ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,
+ VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorBindingFlagBits;
+typedef VkFlags VkDescriptorBindingFlags;
+
+typedef enum VkSemaphoreWaitFlagBits {
+ VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
+ VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT,
+ VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreWaitFlagBits;
+typedef VkFlags VkSemaphoreWaitFlags;
+typedef struct VkPhysicalDeviceVulkan11Features {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 storageBuffer16BitAccess;
+ VkBool32 uniformAndStorageBuffer16BitAccess;
+ VkBool32 storagePushConstant16;
+ VkBool32 storageInputOutput16;
+ VkBool32 multiview;
+ VkBool32 multiviewGeometryShader;
+ VkBool32 multiviewTessellationShader;
+ VkBool32 variablePointersStorageBuffer;
+ VkBool32 variablePointers;
+ VkBool32 protectedMemory;
+ VkBool32 samplerYcbcrConversion;
+ VkBool32 shaderDrawParameters;
+} VkPhysicalDeviceVulkan11Features;
+
+typedef struct VkPhysicalDeviceVulkan11Properties {
+ VkStructureType sType;
+ void* pNext;
+ uint8_t deviceUUID[VK_UUID_SIZE];
+ uint8_t driverUUID[VK_UUID_SIZE];
+ uint8_t deviceLUID[VK_LUID_SIZE];
+ uint32_t deviceNodeMask;
+ VkBool32 deviceLUIDValid;
+ uint32_t subgroupSize;
+ VkShaderStageFlags subgroupSupportedStages;
+ VkSubgroupFeatureFlags subgroupSupportedOperations;
+ VkBool32 subgroupQuadOperationsInAllStages;
+ VkPointClippingBehavior pointClippingBehavior;
+ uint32_t maxMultiviewViewCount;
+ uint32_t maxMultiviewInstanceIndex;
+ VkBool32 protectedNoFault;
+ uint32_t maxPerSetDescriptors;
+ VkDeviceSize maxMemoryAllocationSize;
+} VkPhysicalDeviceVulkan11Properties;
+
+typedef struct VkPhysicalDeviceVulkan12Features {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 samplerMirrorClampToEdge;
+ VkBool32 drawIndirectCount;
+ VkBool32 storageBuffer8BitAccess;
+ VkBool32 uniformAndStorageBuffer8BitAccess;
+ VkBool32 storagePushConstant8;
+ VkBool32 shaderBufferInt64Atomics;
+ VkBool32 shaderSharedInt64Atomics;
+ VkBool32 shaderFloat16;
+ VkBool32 shaderInt8;
+ VkBool32 descriptorIndexing;
+ VkBool32 shaderInputAttachmentArrayDynamicIndexing;
+ VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexing;
+ VkBool32 shaderSampledImageArrayNonUniformIndexing;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageImageArrayNonUniformIndexing;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
+ VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
+ VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
+ VkBool32 descriptorBindingSampledImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUpdateUnusedWhilePending;
+ VkBool32 descriptorBindingPartiallyBound;
+ VkBool32 descriptorBindingVariableDescriptorCount;
+ VkBool32 runtimeDescriptorArray;
+ VkBool32 samplerFilterMinmax;
+ VkBool32 scalarBlockLayout;
+ VkBool32 imagelessFramebuffer;
+ VkBool32 uniformBufferStandardLayout;
+ VkBool32 shaderSubgroupExtendedTypes;
+ VkBool32 separateDepthStencilLayouts;
+ VkBool32 hostQueryReset;
+ VkBool32 timelineSemaphore;
+ VkBool32 bufferDeviceAddress;
+ VkBool32 bufferDeviceAddressCaptureReplay;
+ VkBool32 bufferDeviceAddressMultiDevice;
+ VkBool32 vulkanMemoryModel;
+ VkBool32 vulkanMemoryModelDeviceScope;
+ VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
+ VkBool32 shaderOutputViewportIndex;
+ VkBool32 shaderOutputLayer;
+ VkBool32 subgroupBroadcastDynamicId;
+} VkPhysicalDeviceVulkan12Features;
+
+typedef struct VkConformanceVersion {
+ uint8_t major;
+ uint8_t minor;
+ uint8_t subminor;
+ uint8_t patch;
+} VkConformanceVersion;
+
+typedef struct VkPhysicalDeviceVulkan12Properties {
+ VkStructureType sType;
+ void* pNext;
+ VkDriverId driverID;
+ char driverName[VK_MAX_DRIVER_NAME_SIZE];
+ char driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+ VkConformanceVersion conformanceVersion;
+ VkShaderFloatControlsIndependence denormBehaviorIndependence;
+ VkShaderFloatControlsIndependence roundingModeIndependence;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat16;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat32;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat64;
+ VkBool32 shaderDenormPreserveFloat16;
+ VkBool32 shaderDenormPreserveFloat32;
+ VkBool32 shaderDenormPreserveFloat64;
+ VkBool32 shaderDenormFlushToZeroFloat16;
+ VkBool32 shaderDenormFlushToZeroFloat32;
+ VkBool32 shaderDenormFlushToZeroFloat64;
+ VkBool32 shaderRoundingModeRTEFloat16;
+ VkBool32 shaderRoundingModeRTEFloat32;
+ VkBool32 shaderRoundingModeRTEFloat64;
+ VkBool32 shaderRoundingModeRTZFloat16;
+ VkBool32 shaderRoundingModeRTZFloat32;
+ VkBool32 shaderRoundingModeRTZFloat64;
+ uint32_t maxUpdateAfterBindDescriptorsInAllPools;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
+ VkBool32 robustBufferAccessUpdateAfterBind;
+ VkBool32 quadDivergentImplicitLod;
+ uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;
+ uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+ uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+ uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;
+ uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;
+ uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;
+ uint32_t maxPerStageUpdateAfterBindResources;
+ uint32_t maxDescriptorSetUpdateAfterBindSamplers;
+ uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;
+ uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+ uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;
+ uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+ uint32_t maxDescriptorSetUpdateAfterBindSampledImages;
+ uint32_t maxDescriptorSetUpdateAfterBindStorageImages;
+ uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;
+ VkResolveModeFlags supportedDepthResolveModes;
+ VkResolveModeFlags supportedStencilResolveModes;
+ VkBool32 independentResolveNone;
+ VkBool32 independentResolve;
+ VkBool32 filterMinmaxSingleComponentFormats;
+ VkBool32 filterMinmaxImageComponentMapping;
+ uint64_t maxTimelineSemaphoreValueDifference;
+ VkSampleCountFlags framebufferIntegerColorSampleCounts;
+} VkPhysicalDeviceVulkan12Properties;
+
+typedef struct VkImageFormatListCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t viewFormatCount;
+ const VkFormat* pViewFormats;
+} VkImageFormatListCreateInfo;
+
+typedef struct VkAttachmentDescription2 {
+ VkStructureType sType;
+ const void* pNext;
+ VkAttachmentDescriptionFlags flags;
+ VkFormat format;
+ VkSampleCountFlagBits samples;
+ VkAttachmentLoadOp loadOp;
+ VkAttachmentStoreOp storeOp;
+ VkAttachmentLoadOp stencilLoadOp;
+ VkAttachmentStoreOp stencilStoreOp;
+ VkImageLayout initialLayout;
+ VkImageLayout finalLayout;
+} VkAttachmentDescription2;
+
+typedef struct VkAttachmentReference2 {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t attachment;
+ VkImageLayout layout;
+ VkImageAspectFlags aspectMask;
+} VkAttachmentReference2;
+
+typedef struct VkSubpassDescription2 {
+ VkStructureType sType;
+ const void* pNext;
+ VkSubpassDescriptionFlags flags;
+ VkPipelineBindPoint pipelineBindPoint;
+ uint32_t viewMask;
+ uint32_t inputAttachmentCount;
+ const VkAttachmentReference2* pInputAttachments;
+ uint32_t colorAttachmentCount;
+ const VkAttachmentReference2* pColorAttachments;
+ const VkAttachmentReference2* pResolveAttachments;
+ const VkAttachmentReference2* pDepthStencilAttachment;
+ uint32_t preserveAttachmentCount;
+ const uint32_t* pPreserveAttachments;
+} VkSubpassDescription2;
+
+typedef struct VkSubpassDependency2 {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t srcSubpass;
+ uint32_t dstSubpass;
+ VkPipelineStageFlags srcStageMask;
+ VkPipelineStageFlags dstStageMask;
+ VkAccessFlags srcAccessMask;
+ VkAccessFlags dstAccessMask;
+ VkDependencyFlags dependencyFlags;
+ int32_t viewOffset;
+} VkSubpassDependency2;
+
+typedef struct VkRenderPassCreateInfo2 {
+ VkStructureType sType;
+ const void* pNext;
+ VkRenderPassCreateFlags flags;
+ uint32_t attachmentCount;
+ const VkAttachmentDescription2* pAttachments;
+ uint32_t subpassCount;
+ const VkSubpassDescription2* pSubpasses;
+ uint32_t dependencyCount;
+ const VkSubpassDependency2* pDependencies;
+ uint32_t correlatedViewMaskCount;
+ const uint32_t* pCorrelatedViewMasks;
+} VkRenderPassCreateInfo2;
+
+typedef struct VkSubpassBeginInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkSubpassContents contents;
+} VkSubpassBeginInfo;
+
+typedef struct VkSubpassEndInfo {
+ VkStructureType sType;
+ const void* pNext;
+} VkSubpassEndInfo;
+
+typedef struct VkPhysicalDevice8BitStorageFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 storageBuffer8BitAccess;
+ VkBool32 uniformAndStorageBuffer8BitAccess;
+ VkBool32 storagePushConstant8;
+} VkPhysicalDevice8BitStorageFeatures;
+
+typedef struct VkPhysicalDeviceDriverProperties {
+ VkStructureType sType;
+ void* pNext;
+ VkDriverId driverID;
+ char driverName[VK_MAX_DRIVER_NAME_SIZE];
+ char driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+ VkConformanceVersion conformanceVersion;
+} VkPhysicalDeviceDriverProperties;
+
+typedef struct VkPhysicalDeviceShaderAtomicInt64Features {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderBufferInt64Atomics;
+ VkBool32 shaderSharedInt64Atomics;
+} VkPhysicalDeviceShaderAtomicInt64Features;
+
+typedef struct VkPhysicalDeviceShaderFloat16Int8Features {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderFloat16;
+ VkBool32 shaderInt8;
+} VkPhysicalDeviceShaderFloat16Int8Features;
+
+typedef struct VkPhysicalDeviceFloatControlsProperties {
+ VkStructureType sType;
+ void* pNext;
+ VkShaderFloatControlsIndependence denormBehaviorIndependence;
+ VkShaderFloatControlsIndependence roundingModeIndependence;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat16;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat32;
+ VkBool32 shaderSignedZeroInfNanPreserveFloat64;
+ VkBool32 shaderDenormPreserveFloat16;
+ VkBool32 shaderDenormPreserveFloat32;
+ VkBool32 shaderDenormPreserveFloat64;
+ VkBool32 shaderDenormFlushToZeroFloat16;
+ VkBool32 shaderDenormFlushToZeroFloat32;
+ VkBool32 shaderDenormFlushToZeroFloat64;
+ VkBool32 shaderRoundingModeRTEFloat16;
+ VkBool32 shaderRoundingModeRTEFloat32;
+ VkBool32 shaderRoundingModeRTEFloat64;
+ VkBool32 shaderRoundingModeRTZFloat16;
+ VkBool32 shaderRoundingModeRTZFloat32;
+ VkBool32 shaderRoundingModeRTZFloat64;
+} VkPhysicalDeviceFloatControlsProperties;
+
+typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t bindingCount;
+ const VkDescriptorBindingFlags* pBindingFlags;
+} VkDescriptorSetLayoutBindingFlagsCreateInfo;
+
+typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderInputAttachmentArrayDynamicIndexing;
+ VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexing;
+ VkBool32 shaderSampledImageArrayNonUniformIndexing;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageImageArrayNonUniformIndexing;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
+ VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
+ VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
+ VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
+ VkBool32 descriptorBindingSampledImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageImageUpdateAfterBind;
+ VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
+ VkBool32 descriptorBindingUpdateUnusedWhilePending;
+ VkBool32 descriptorBindingPartiallyBound;
+ VkBool32 descriptorBindingVariableDescriptorCount;
+ VkBool32 runtimeDescriptorArray;
+} VkPhysicalDeviceDescriptorIndexingFeatures;
+
+typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
+ VkStructureType sType;
+ void* pNext;
+ uint32_t maxUpdateAfterBindDescriptorsInAllPools;
+ VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
+ VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
+ VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
+ VkBool32 robustBufferAccessUpdateAfterBind;
+ VkBool32 quadDivergentImplicitLod;
+ uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;
+ uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+ uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+ uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;
+ uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;
+ uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;
+ uint32_t maxPerStageUpdateAfterBindResources;
+ uint32_t maxDescriptorSetUpdateAfterBindSamplers;
+ uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;
+ uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+ uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;
+ uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+ uint32_t maxDescriptorSetUpdateAfterBindSampledImages;
+ uint32_t maxDescriptorSetUpdateAfterBindStorageImages;
+ uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;
+} VkPhysicalDeviceDescriptorIndexingProperties;
+
+typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t descriptorSetCount;
+ const uint32_t* pDescriptorCounts;
+} VkDescriptorSetVariableDescriptorCountAllocateInfo;
+
+typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport {
+ VkStructureType sType;
+ void* pNext;
+ uint32_t maxVariableDescriptorCount;
+} VkDescriptorSetVariableDescriptorCountLayoutSupport;
+
+typedef struct VkSubpassDescriptionDepthStencilResolve {
+ VkStructureType sType;
+ const void* pNext;
+ VkResolveModeFlagBits depthResolveMode;
+ VkResolveModeFlagBits stencilResolveMode;
+ const VkAttachmentReference2* pDepthStencilResolveAttachment;
+} VkSubpassDescriptionDepthStencilResolve;
+
+typedef struct VkPhysicalDeviceDepthStencilResolveProperties {
+ VkStructureType sType;
+ void* pNext;
+ VkResolveModeFlags supportedDepthResolveModes;
+ VkResolveModeFlags supportedStencilResolveModes;
+ VkBool32 independentResolveNone;
+ VkBool32 independentResolve;
+} VkPhysicalDeviceDepthStencilResolveProperties;
+
+typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 scalarBlockLayout;
+} VkPhysicalDeviceScalarBlockLayoutFeatures;
+
+typedef struct VkImageStencilUsageCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkImageUsageFlags stencilUsage;
+} VkImageStencilUsageCreateInfo;
+
+typedef struct VkSamplerReductionModeCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkSamplerReductionMode reductionMode;
+} VkSamplerReductionModeCreateInfo;
+
+typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 filterMinmaxSingleComponentFormats;
+ VkBool32 filterMinmaxImageComponentMapping;
+} VkPhysicalDeviceSamplerFilterMinmaxProperties;
+
+typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 vulkanMemoryModel;
+ VkBool32 vulkanMemoryModelDeviceScope;
+ VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
+} VkPhysicalDeviceVulkanMemoryModelFeatures;
+
+typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 imagelessFramebuffer;
+} VkPhysicalDeviceImagelessFramebufferFeatures;
+
+typedef struct VkFramebufferAttachmentImageInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkImageCreateFlags flags;
+ VkImageUsageFlags usage;
+ uint32_t width;
+ uint32_t height;
+ uint32_t layerCount;
+ uint32_t viewFormatCount;
+ const VkFormat* pViewFormats;
+} VkFramebufferAttachmentImageInfo;
+
+typedef struct VkFramebufferAttachmentsCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t attachmentImageInfoCount;
+ const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos;
+} VkFramebufferAttachmentsCreateInfo;
+
+typedef struct VkRenderPassAttachmentBeginInfo {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t attachmentCount;
+ const VkImageView* pAttachments;
+} VkRenderPassAttachmentBeginInfo;
+
+typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 uniformBufferStandardLayout;
+} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
+
+typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 shaderSubgroupExtendedTypes;
+} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
+
+typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 separateDepthStencilLayouts;
+} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
+
+typedef struct VkAttachmentReferenceStencilLayout {
+ VkStructureType sType;
+ void* pNext;
+ VkImageLayout stencilLayout;
+} VkAttachmentReferenceStencilLayout;
+
+typedef struct VkAttachmentDescriptionStencilLayout {
+ VkStructureType sType;
+ void* pNext;
+ VkImageLayout stencilInitialLayout;
+ VkImageLayout stencilFinalLayout;
+} VkAttachmentDescriptionStencilLayout;
+
+typedef struct VkPhysicalDeviceHostQueryResetFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 hostQueryReset;
+} VkPhysicalDeviceHostQueryResetFeatures;
+
+typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 timelineSemaphore;
+} VkPhysicalDeviceTimelineSemaphoreFeatures;
+
+typedef struct VkPhysicalDeviceTimelineSemaphoreProperties {
+ VkStructureType sType;
+ void* pNext;
+ uint64_t maxTimelineSemaphoreValueDifference;
+} VkPhysicalDeviceTimelineSemaphoreProperties;
+
+typedef struct VkSemaphoreTypeCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkSemaphoreType semaphoreType;
+ uint64_t initialValue;
+} VkSemaphoreTypeCreateInfo;
+
+typedef struct VkTimelineSemaphoreSubmitInfo {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t waitSemaphoreValueCount;
+ const uint64_t* pWaitSemaphoreValues;
+ uint32_t signalSemaphoreValueCount;
+ const uint64_t* pSignalSemaphoreValues;
+} VkTimelineSemaphoreSubmitInfo;
+
+typedef struct VkSemaphoreWaitInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkSemaphoreWaitFlags flags;
+ uint32_t semaphoreCount;
+ const VkSemaphore* pSemaphores;
+ const uint64_t* pValues;
+} VkSemaphoreWaitInfo;
+
+typedef struct VkSemaphoreSignalInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkSemaphore semaphore;
+ uint64_t value;
+} VkSemaphoreSignalInfo;
+
+typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 bufferDeviceAddress;
+ VkBool32 bufferDeviceAddressCaptureReplay;
+ VkBool32 bufferDeviceAddressMultiDevice;
+} VkPhysicalDeviceBufferDeviceAddressFeatures;
+
+typedef struct VkBufferDeviceAddressInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkBuffer buffer;
+} VkBufferDeviceAddressInfo;
+
+typedef struct VkBufferOpaqueCaptureAddressCreateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ uint64_t opaqueCaptureAddress;
+} VkBufferOpaqueCaptureAddressCreateInfo;
+
+typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo {
+ VkStructureType sType;
+ const void* pNext;
+ uint64_t opaqueCaptureAddress;
+} VkMemoryOpaqueCaptureAddressAllocateInfo;
+
+typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo {
+ VkStructureType sType;
+ const void* pNext;
+ VkDeviceMemory memory;
+} VkDeviceMemoryOpaqueCaptureAddressInfo;
+
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
+typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount(
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount(
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2(
+ VkDevice device,
+ const VkRenderPassCreateInfo2* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkRenderPass* pRenderPass);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2(
+ VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ const VkSubpassBeginInfo* pSubpassBeginInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2(
+ VkCommandBuffer commandBuffer,
+ const VkSubpassBeginInfo* pSubpassBeginInfo,
+ const VkSubpassEndInfo* pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2(
+ VkCommandBuffer commandBuffer,
+ const VkSubpassEndInfo* pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkResetQueryPool(
+ VkDevice device,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue(
+ VkDevice device,
+ VkSemaphore semaphore,
+ uint64_t* pValue);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores(
+ VkDevice device,
+ const VkSemaphoreWaitInfo* pWaitInfo,
+ uint64_t timeout);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore(
+ VkDevice device,
+ const VkSemaphoreSignalInfo* pSignalInfo);
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress(
+ VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo);
+
+VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress(
+ VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo);
+
+VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress(
+ VkDevice device,
+ const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+#endif
+
+
#define VK_KHR_surface 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
#define VK_KHR_SURFACE_SPEC_VERSION 25
#define VK_KHR_shader_float16_int8 1
#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
-typedef struct VkPhysicalDeviceShaderFloat16Int8FeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderFloat16;
- VkBool32 shaderInt8;
-} VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
+typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
-typedef VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR;
+typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR;
#define VK_KHR_imageless_framebuffer 1
#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1
#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer"
-typedef struct VkPhysicalDeviceImagelessFramebufferFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 imagelessFramebuffer;
-} VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
+typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
-typedef struct VkFramebufferAttachmentImageInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkImageCreateFlags flags;
- VkImageUsageFlags usage;
- uint32_t width;
- uint32_t height;
- uint32_t layerCount;
- uint32_t viewFormatCount;
- const VkFormat* pViewFormats;
-} VkFramebufferAttachmentImageInfoKHR;
+typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;
-typedef struct VkFramebufferAttachmentsCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t attachmentImageInfoCount;
- const VkFramebufferAttachmentImageInfoKHR* pAttachmentImageInfos;
-} VkFramebufferAttachmentsCreateInfoKHR;
+typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;
-typedef struct VkRenderPassAttachmentBeginInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t attachmentCount;
- const VkImageView* pAttachments;
-} VkRenderPassAttachmentBeginInfoKHR;
+typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;
#define VK_KHR_create_renderpass2 1
#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
-typedef struct VkAttachmentDescription2KHR {
- VkStructureType sType;
- const void* pNext;
- VkAttachmentDescriptionFlags flags;
- VkFormat format;
- VkSampleCountFlagBits samples;
- VkAttachmentLoadOp loadOp;
- VkAttachmentStoreOp storeOp;
- VkAttachmentLoadOp stencilLoadOp;
- VkAttachmentStoreOp stencilStoreOp;
- VkImageLayout initialLayout;
- VkImageLayout finalLayout;
-} VkAttachmentDescription2KHR;
+typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
-typedef struct VkAttachmentReference2KHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t attachment;
- VkImageLayout layout;
- VkImageAspectFlags aspectMask;
-} VkAttachmentReference2KHR;
+typedef VkAttachmentDescription2 VkAttachmentDescription2KHR;
-typedef struct VkSubpassDescription2KHR {
- VkStructureType sType;
- const void* pNext;
- VkSubpassDescriptionFlags flags;
- VkPipelineBindPoint pipelineBindPoint;
- uint32_t viewMask;
- uint32_t inputAttachmentCount;
- const VkAttachmentReference2KHR* pInputAttachments;
- uint32_t colorAttachmentCount;
- const VkAttachmentReference2KHR* pColorAttachments;
- const VkAttachmentReference2KHR* pResolveAttachments;
- const VkAttachmentReference2KHR* pDepthStencilAttachment;
- uint32_t preserveAttachmentCount;
- const uint32_t* pPreserveAttachments;
-} VkSubpassDescription2KHR;
-
-typedef struct VkSubpassDependency2KHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t srcSubpass;
- uint32_t dstSubpass;
- VkPipelineStageFlags srcStageMask;
- VkPipelineStageFlags dstStageMask;
- VkAccessFlags srcAccessMask;
- VkAccessFlags dstAccessMask;
- VkDependencyFlags dependencyFlags;
- int32_t viewOffset;
-} VkSubpassDependency2KHR;
+typedef VkAttachmentReference2 VkAttachmentReference2KHR;
-typedef struct VkRenderPassCreateInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkRenderPassCreateFlags flags;
- uint32_t attachmentCount;
- const VkAttachmentDescription2KHR* pAttachments;
- uint32_t subpassCount;
- const VkSubpassDescription2KHR* pSubpasses;
- uint32_t dependencyCount;
- const VkSubpassDependency2KHR* pDependencies;
- uint32_t correlatedViewMaskCount;
- const uint32_t* pCorrelatedViewMasks;
-} VkRenderPassCreateInfo2KHR;
-
-typedef struct VkSubpassBeginInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSubpassContents contents;
-} VkSubpassBeginInfoKHR;
+typedef VkSubpassDescription2 VkSubpassDescription2KHR;
-typedef struct VkSubpassEndInfoKHR {
- VkStructureType sType;
- const void* pNext;
-} VkSubpassEndInfoKHR;
+typedef VkSubpassDependency2 VkSubpassDependency2KHR;
-typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo);
+typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;
+
+typedef VkSubpassEndInfo VkSubpassEndInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
VkDevice device,
- const VkRenderPassCreateInfo2KHR* pCreateInfo,
+ const VkRenderPassCreateInfo2* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkRenderPass* pRenderPass);
VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR(
VkCommandBuffer commandBuffer,
const VkRenderPassBeginInfo* pRenderPassBegin,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
+ const VkSubpassBeginInfo* pSubpassBeginInfo);
VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR(
VkCommandBuffer commandBuffer,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
- const VkSubpassEndInfoKHR* pSubpassEndInfo);
+ const VkSubpassBeginInfo* pSubpassBeginInfo,
+ const VkSubpassEndInfo* pSubpassEndInfo);
VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR(
VkCommandBuffer commandBuffer,
- const VkSubpassEndInfoKHR* pSubpassEndInfo);
+ const VkSubpassEndInfo* pSubpassEndInfo);
#endif
#define VK_KHR_image_format_list 1
#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
-typedef struct VkImageFormatListCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t viewFormatCount;
- const VkFormat* pViewFormats;
-} VkImageFormatListCreateInfoKHR;
+typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;
#define VK_KHR_shader_subgroup_extended_types 1
#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1
#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types"
-typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderSubgroupExtendedTypes;
-} VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
+typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
#define VK_KHR_8bit_storage 1
#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1
#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
-typedef struct VkPhysicalDevice8BitStorageFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 storageBuffer8BitAccess;
- VkBool32 uniformAndStorageBuffer8BitAccess;
- VkBool32 storagePushConstant8;
-} VkPhysicalDevice8BitStorageFeaturesKHR;
+typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
#define VK_KHR_shader_atomic_int64 1
#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64"
-typedef struct VkPhysicalDeviceShaderAtomicInt64FeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderBufferInt64Atomics;
- VkBool32 shaderSharedInt64Atomics;
-} VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
+typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
#define VK_KHR_driver_properties 1
-#define VK_MAX_DRIVER_NAME_SIZE_KHR 256
-#define VK_MAX_DRIVER_INFO_SIZE_KHR 256
#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties"
+#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE
+#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE
+typedef VkDriverId VkDriverIdKHR;
-typedef enum VkDriverIdKHR {
- VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1,
- VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2,
- VK_DRIVER_ID_MESA_RADV_KHR = 3,
- VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4,
- VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5,
- VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6,
- VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7,
- VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8,
- VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9,
- VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10,
- VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11,
- VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12,
- VK_DRIVER_ID_BEGIN_RANGE_KHR = VK_DRIVER_ID_AMD_PROPRIETARY_KHR,
- VK_DRIVER_ID_END_RANGE_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR,
- VK_DRIVER_ID_RANGE_SIZE_KHR = (VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR - VK_DRIVER_ID_AMD_PROPRIETARY_KHR + 1),
- VK_DRIVER_ID_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkDriverIdKHR;
-typedef struct VkConformanceVersionKHR {
- uint8_t major;
- uint8_t minor;
- uint8_t subminor;
- uint8_t patch;
-} VkConformanceVersionKHR;
+typedef VkConformanceVersion VkConformanceVersionKHR;
-typedef struct VkPhysicalDeviceDriverPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkDriverIdKHR driverID;
- char driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
- char driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
- VkConformanceVersionKHR conformanceVersion;
-} VkPhysicalDeviceDriverPropertiesKHR;
+typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;
#define VK_KHR_shader_float_controls 1
#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
+typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR;
-typedef enum VkShaderFloatControlsIndependenceKHR {
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_BEGIN_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_END_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_RANGE_SIZE_KHR = (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR + 1),
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkShaderFloatControlsIndependenceKHR;
-typedef struct VkPhysicalDeviceFloatControlsPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkShaderFloatControlsIndependenceKHR denormBehaviorIndependence;
- VkShaderFloatControlsIndependenceKHR roundingModeIndependence;
- VkBool32 shaderSignedZeroInfNanPreserveFloat16;
- VkBool32 shaderSignedZeroInfNanPreserveFloat32;
- VkBool32 shaderSignedZeroInfNanPreserveFloat64;
- VkBool32 shaderDenormPreserveFloat16;
- VkBool32 shaderDenormPreserveFloat32;
- VkBool32 shaderDenormPreserveFloat64;
- VkBool32 shaderDenormFlushToZeroFloat16;
- VkBool32 shaderDenormFlushToZeroFloat32;
- VkBool32 shaderDenormFlushToZeroFloat64;
- VkBool32 shaderRoundingModeRTEFloat16;
- VkBool32 shaderRoundingModeRTEFloat32;
- VkBool32 shaderRoundingModeRTEFloat64;
- VkBool32 shaderRoundingModeRTZFloat16;
- VkBool32 shaderRoundingModeRTZFloat32;
- VkBool32 shaderRoundingModeRTZFloat64;
-} VkPhysicalDeviceFloatControlsPropertiesKHR;
+typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
#define VK_KHR_depth_stencil_resolve 1
#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
+typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR;
-typedef enum VkResolveModeFlagBitsKHR {
- VK_RESOLVE_MODE_NONE_KHR = 0,
- VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 0x00000001,
- VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 0x00000002,
- VK_RESOLVE_MODE_MIN_BIT_KHR = 0x00000004,
- VK_RESOLVE_MODE_MAX_BIT_KHR = 0x00000008,
- VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkResolveModeFlagBitsKHR;
-typedef VkFlags VkResolveModeFlagsKHR;
-typedef struct VkSubpassDescriptionDepthStencilResolveKHR {
- VkStructureType sType;
- const void* pNext;
- VkResolveModeFlagBitsKHR depthResolveMode;
- VkResolveModeFlagBitsKHR stencilResolveMode;
- const VkAttachmentReference2KHR* pDepthStencilResolveAttachment;
-} VkSubpassDescriptionDepthStencilResolveKHR;
+typedef VkResolveModeFlags VkResolveModeFlagsKHR;
-typedef struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkResolveModeFlagsKHR supportedDepthResolveModes;
- VkResolveModeFlagsKHR supportedStencilResolveModes;
- VkBool32 independentResolveNone;
- VkBool32 independentResolve;
-} VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
+typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;
+
+typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
#define VK_KHR_timeline_semaphore 1
#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2
#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
+typedef VkSemaphoreType VkSemaphoreTypeKHR;
-typedef enum VkSemaphoreTypeKHR {
- VK_SEMAPHORE_TYPE_BINARY_KHR = 0,
- VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1,
- VK_SEMAPHORE_TYPE_BEGIN_RANGE_KHR = VK_SEMAPHORE_TYPE_BINARY_KHR,
- VK_SEMAPHORE_TYPE_END_RANGE_KHR = VK_SEMAPHORE_TYPE_TIMELINE_KHR,
- VK_SEMAPHORE_TYPE_RANGE_SIZE_KHR = (VK_SEMAPHORE_TYPE_TIMELINE_KHR - VK_SEMAPHORE_TYPE_BINARY_KHR + 1),
- VK_SEMAPHORE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSemaphoreTypeKHR;
-
-typedef enum VkSemaphoreWaitFlagBitsKHR {
- VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 0x00000001,
- VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSemaphoreWaitFlagBitsKHR;
-typedef VkFlags VkSemaphoreWaitFlagsKHR;
-typedef struct VkPhysicalDeviceTimelineSemaphoreFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 timelineSemaphore;
-} VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
+typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR;
-typedef struct VkPhysicalDeviceTimelineSemaphorePropertiesKHR {
- VkStructureType sType;
- void* pNext;
- uint64_t maxTimelineSemaphoreValueDifference;
-} VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
+typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR;
-typedef struct VkSemaphoreTypeCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphoreTypeKHR semaphoreType;
- uint64_t initialValue;
-} VkSemaphoreTypeCreateInfoKHR;
+typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
-typedef struct VkTimelineSemaphoreSubmitInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t waitSemaphoreValueCount;
- const uint64_t* pWaitSemaphoreValues;
- uint32_t signalSemaphoreValueCount;
- const uint64_t* pSignalSemaphoreValues;
-} VkTimelineSemaphoreSubmitInfoKHR;
+typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
-typedef struct VkSemaphoreWaitInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphoreWaitFlagsKHR flags;
- uint32_t semaphoreCount;
- const VkSemaphore* pSemaphores;
- const uint64_t* pValues;
-} VkSemaphoreWaitInfoKHR;
+typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;
-typedef struct VkSemaphoreSignalInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- uint64_t value;
-} VkSemaphoreSignalInfoKHR;
+typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
+
+typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;
+
+typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);
-typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, uint64_t timeout);
-typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(
VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR(
VkDevice device,
- const VkSemaphoreWaitInfoKHR* pWaitInfo,
+ const VkSemaphoreWaitInfo* pWaitInfo,
uint64_t timeout);
VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR(
VkDevice device,
- const VkSemaphoreSignalInfoKHR* pSignalInfo);
+ const VkSemaphoreSignalInfo* pSignalInfo);
#endif
#define VK_KHR_vulkan_memory_model 1
#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3
#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model"
-typedef struct VkPhysicalDeviceVulkanMemoryModelFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 vulkanMemoryModel;
- VkBool32 vulkanMemoryModelDeviceScope;
- VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
-} VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
+typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
#define VK_KHR_spirv_1_4 1
#define VK_KHR_separate_depth_stencil_layouts 1
#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts"
-typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 separateDepthStencilLayouts;
-} VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
-typedef struct VkAttachmentReferenceStencilLayoutKHR {
- VkStructureType sType;
- void* pNext;
- VkImageLayout stencilLayout;
-} VkAttachmentReferenceStencilLayoutKHR;
+typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;
-typedef struct VkAttachmentDescriptionStencilLayoutKHR {
- VkStructureType sType;
- void* pNext;
- VkImageLayout stencilInitialLayout;
- VkImageLayout stencilFinalLayout;
-} VkAttachmentDescriptionStencilLayoutKHR;
+typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;
#define VK_KHR_uniform_buffer_standard_layout 1
#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout"
-typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 uniformBufferStandardLayout;
-} VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+
+
+
+#define VK_KHR_buffer_device_address 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
+typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
+
+typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR;
+
+typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;
+
+typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;
+
+typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR(
+ VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo);
+
+VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR(
+ VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo);
+
+VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR(
+ VkDevice device,
+ const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+#endif
#define VK_KHR_pipeline_executable_properties 1
VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
#endif
-
#define VK_EXT_debug_report 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9
#define VK_EXT_sampler_filter_minmax 1
#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2
#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
+typedef VkSamplerReductionMode VkSamplerReductionModeEXT;
-typedef enum VkSamplerReductionModeEXT {
- VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
- VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
- VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
- VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
- VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT,
- VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (VK_SAMPLER_REDUCTION_MODE_MAX_EXT - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1),
- VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkSamplerReductionModeEXT;
-typedef struct VkSamplerReductionModeCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkSamplerReductionModeEXT reductionMode;
-} VkSamplerReductionModeCreateInfoEXT;
+typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;
-typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 filterMinmaxSingleComponentFormats;
- VkBool32 filterMinmaxImageComponentMapping;
-} VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
-
#define VK_NV_shader_sm_builtins 1
#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1
#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins"
VkBool32 shaderSMBuiltins;
} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
-
-
#define VK_EXT_post_depth_coverage 1
#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
#define VK_EXT_descriptor_indexing 1
#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
+typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT;
-typedef enum VkDescriptorBindingFlagBitsEXT {
- VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 0x00000001,
- VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 0x00000002,
- VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 0x00000004,
- VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 0x00000008,
- VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDescriptorBindingFlagBitsEXT;
-typedef VkFlags VkDescriptorBindingFlagsEXT;
-typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t bindingCount;
- const VkDescriptorBindingFlagsEXT* pBindingFlags;
-} VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
+typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT;
-typedef struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderInputAttachmentArrayDynamicIndexing;
- VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
- VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
- VkBool32 shaderUniformBufferArrayNonUniformIndexing;
- VkBool32 shaderSampledImageArrayNonUniformIndexing;
- VkBool32 shaderStorageBufferArrayNonUniformIndexing;
- VkBool32 shaderStorageImageArrayNonUniformIndexing;
- VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
- VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
- VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
- VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
- VkBool32 descriptorBindingSampledImageUpdateAfterBind;
- VkBool32 descriptorBindingStorageImageUpdateAfterBind;
- VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
- VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
- VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
- VkBool32 descriptorBindingUpdateUnusedWhilePending;
- VkBool32 descriptorBindingPartiallyBound;
- VkBool32 descriptorBindingVariableDescriptorCount;
- VkBool32 runtimeDescriptorArray;
-} VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
+typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
-typedef struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t maxUpdateAfterBindDescriptorsInAllPools;
- VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
- VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
- VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
- VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
- VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
- VkBool32 robustBufferAccessUpdateAfterBind;
- VkBool32 quadDivergentImplicitLod;
- uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;
- uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;
- uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;
- uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;
- uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;
- uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;
- uint32_t maxPerStageUpdateAfterBindResources;
- uint32_t maxDescriptorSetUpdateAfterBindSamplers;
- uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;
- uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
- uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;
- uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
- uint32_t maxDescriptorSetUpdateAfterBindSampledImages;
- uint32_t maxDescriptorSetUpdateAfterBindStorageImages;
- uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;
-} VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
+typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
-typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t descriptorSetCount;
- const uint32_t* pDescriptorCounts;
-} VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
-typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t maxVariableDescriptorCount;
-} VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
+typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
VkStructureType sType;
void* pNext;
VkBool32 filterCubic;
- VkBool32 filterCubicMinmax ;
+ VkBool32 filterCubicMinmax;
} VkFilterCubicImageViewImageFormatPropertiesEXT;
#define VK_EXT_scalar_block_layout 1
#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1
#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout"
-typedef struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 scalarBlockLayout;
-} VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
+typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
#define VK_EXT_buffer_device_address 1
-typedef uint64_t VkDeviceAddress;
#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2
#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT {
typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
-typedef struct VkBufferDeviceAddressInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkBuffer buffer;
-} VkBufferDeviceAddressInfoEXT;
+typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT;
typedef struct VkBufferDeviceAddressCreateInfoEXT {
VkStructureType sType;
VkDeviceAddress deviceAddress;
} VkBufferDeviceAddressCreateInfoEXT;
-typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo);
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
VkDevice device,
- const VkBufferDeviceAddressInfoEXT* pInfo);
+ const VkBufferDeviceAddressInfo* pInfo);
#endif
#define VK_EXT_separate_stencil_usage 1
#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
-typedef struct VkImageStencilUsageCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkImageUsageFlags stencilUsage;
-} VkImageStencilUsageCreateInfoEXT;
+typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
#define VK_EXT_host_query_reset 1
#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1
#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
-typedef struct VkPhysicalDeviceHostQueryResetFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 hostQueryReset;
-} VkPhysicalDeviceHostQueryResetFeaturesEXT;
+typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);