| // *** THIS FILE IS GENERATED - DO NOT EDIT *** |
| // See device_features_generator.py for modifications |
| |
| /*************************************************************************** |
| * |
| * Copyright (c) 2023-2026 Google Inc. |
| * Copyright (c) 2023-2026 LunarG, 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. |
| ****************************************************************************/ |
| |
| // NOLINTBEGIN |
| |
| #include "generated/device_features.h" |
| #include "generated/vk_api_version.h" |
| #include "generated/vk_extension_helper.h" |
| #include <vulkan/utility/vk_struct_helper.hpp> |
| |
| void GetEnabledDeviceFeatures(const VkDeviceCreateInfo* pCreateInfo, DeviceFeatures* features, const APIVersion& api_version) { |
| // Initialize all to false |
| *features = {}; |
| |
| // handle VkPhysicalDeviceFeatures specially as it is not part of the pNext chain, |
| // and when it is (through VkPhysicalDeviceFeatures2), it requires an extra indirection. |
| const VkPhysicalDeviceFeatures* core_features = pCreateInfo->pEnabledFeatures; |
| if (core_features == nullptr) { |
| const VkPhysicalDeviceFeatures2* features2 = vku::FindStructInPNextChain<VkPhysicalDeviceFeatures2>(pCreateInfo->pNext); |
| if (features2 != nullptr) { |
| core_features = &features2->features; |
| } |
| } |
| if (core_features != nullptr) { |
| features->robustBufferAccess = core_features->robustBufferAccess == VK_TRUE; |
| features->fullDrawIndexUint32 = core_features->fullDrawIndexUint32 == VK_TRUE; |
| features->imageCubeArray = core_features->imageCubeArray == VK_TRUE; |
| features->independentBlend = core_features->independentBlend == VK_TRUE; |
| features->geometryShader = core_features->geometryShader == VK_TRUE; |
| features->tessellationShader = core_features->tessellationShader == VK_TRUE; |
| features->sampleRateShading = core_features->sampleRateShading == VK_TRUE; |
| features->dualSrcBlend = core_features->dualSrcBlend == VK_TRUE; |
| features->logicOp = core_features->logicOp == VK_TRUE; |
| features->multiDrawIndirect = core_features->multiDrawIndirect == VK_TRUE; |
| features->drawIndirectFirstInstance = core_features->drawIndirectFirstInstance == VK_TRUE; |
| features->depthClamp = core_features->depthClamp == VK_TRUE; |
| features->depthBiasClamp = core_features->depthBiasClamp == VK_TRUE; |
| features->fillModeNonSolid = core_features->fillModeNonSolid == VK_TRUE; |
| features->depthBounds = core_features->depthBounds == VK_TRUE; |
| features->wideLines = core_features->wideLines == VK_TRUE; |
| features->largePoints = core_features->largePoints == VK_TRUE; |
| features->alphaToOne = core_features->alphaToOne == VK_TRUE; |
| features->multiViewport = core_features->multiViewport == VK_TRUE; |
| features->samplerAnisotropy = core_features->samplerAnisotropy == VK_TRUE; |
| features->textureCompressionETC2 = core_features->textureCompressionETC2 == VK_TRUE; |
| features->textureCompressionASTC_LDR = core_features->textureCompressionASTC_LDR == VK_TRUE; |
| features->textureCompressionBC = core_features->textureCompressionBC == VK_TRUE; |
| features->occlusionQueryPrecise = core_features->occlusionQueryPrecise == VK_TRUE; |
| features->pipelineStatisticsQuery = core_features->pipelineStatisticsQuery == VK_TRUE; |
| features->vertexPipelineStoresAndAtomics = core_features->vertexPipelineStoresAndAtomics == VK_TRUE; |
| features->fragmentStoresAndAtomics = core_features->fragmentStoresAndAtomics == VK_TRUE; |
| features->shaderTessellationAndGeometryPointSize = core_features->shaderTessellationAndGeometryPointSize == VK_TRUE; |
| features->shaderImageGatherExtended = core_features->shaderImageGatherExtended == VK_TRUE; |
| features->shaderStorageImageExtendedFormats = core_features->shaderStorageImageExtendedFormats == VK_TRUE; |
| features->shaderStorageImageMultisample = core_features->shaderStorageImageMultisample == VK_TRUE; |
| features->shaderStorageImageReadWithoutFormat = core_features->shaderStorageImageReadWithoutFormat == VK_TRUE; |
| features->shaderStorageImageWriteWithoutFormat = core_features->shaderStorageImageWriteWithoutFormat == VK_TRUE; |
| features->shaderUniformBufferArrayDynamicIndexing = core_features->shaderUniformBufferArrayDynamicIndexing == VK_TRUE; |
| features->shaderSampledImageArrayDynamicIndexing = core_features->shaderSampledImageArrayDynamicIndexing == VK_TRUE; |
| features->shaderStorageBufferArrayDynamicIndexing = core_features->shaderStorageBufferArrayDynamicIndexing == VK_TRUE; |
| features->shaderStorageImageArrayDynamicIndexing = core_features->shaderStorageImageArrayDynamicIndexing == VK_TRUE; |
| features->shaderClipDistance = core_features->shaderClipDistance == VK_TRUE; |
| features->shaderCullDistance = core_features->shaderCullDistance == VK_TRUE; |
| features->shaderFloat64 = core_features->shaderFloat64 == VK_TRUE; |
| features->shaderInt64 = core_features->shaderInt64 == VK_TRUE; |
| features->shaderInt16 = core_features->shaderInt16 == VK_TRUE; |
| features->shaderResourceResidency = core_features->shaderResourceResidency == VK_TRUE; |
| features->shaderResourceMinLod = core_features->shaderResourceMinLod == VK_TRUE; |
| features->sparseBinding = core_features->sparseBinding == VK_TRUE; |
| features->sparseResidencyBuffer = core_features->sparseResidencyBuffer == VK_TRUE; |
| features->sparseResidencyImage2D = core_features->sparseResidencyImage2D == VK_TRUE; |
| features->sparseResidencyImage3D = core_features->sparseResidencyImage3D == VK_TRUE; |
| features->sparseResidency2Samples = core_features->sparseResidency2Samples == VK_TRUE; |
| features->sparseResidency4Samples = core_features->sparseResidency4Samples == VK_TRUE; |
| features->sparseResidency8Samples = core_features->sparseResidency8Samples == VK_TRUE; |
| features->sparseResidency16Samples = core_features->sparseResidency16Samples == VK_TRUE; |
| features->sparseResidencyAliased = core_features->sparseResidencyAliased == VK_TRUE; |
| features->variableMultisampleRate = core_features->variableMultisampleRate == VK_TRUE; |
| features->inheritedQueries = core_features->inheritedQueries == VK_TRUE; |
| } |
| |
| for (const VkBaseInStructure* pNext = reinterpret_cast<const VkBaseInStructure*>(pCreateInfo->pNext); pNext != nullptr; |
| pNext = pNext->pNext) { |
| switch (pNext->sType) { |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: { |
| const VkPhysicalDeviceProtectedMemoryFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures*>(pNext); |
| features->protectedMemory |= enabled->protectedMemory == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: { |
| const VkPhysicalDevice16BitStorageFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures*>(pNext); |
| features->storageBuffer16BitAccess |= enabled->storageBuffer16BitAccess == VK_TRUE; |
| features->uniformAndStorageBuffer16BitAccess |= enabled->uniformAndStorageBuffer16BitAccess == VK_TRUE; |
| features->storagePushConstant16 |= enabled->storagePushConstant16 == VK_TRUE; |
| features->storageInputOutput16 |= enabled->storageInputOutput16 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: { |
| const VkPhysicalDeviceVariablePointersFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures*>(pNext); |
| features->variablePointersStorageBuffer |= enabled->variablePointersStorageBuffer == VK_TRUE; |
| features->variablePointers |= enabled->variablePointers == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: { |
| const VkPhysicalDeviceSamplerYcbcrConversionFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(pNext); |
| features->samplerYcbcrConversion |= enabled->samplerYcbcrConversion == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: { |
| const VkPhysicalDeviceMultiviewFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures*>(pNext); |
| features->multiview |= enabled->multiview == VK_TRUE; |
| features->multiviewGeometryShader |= enabled->multiviewGeometryShader == VK_TRUE; |
| features->multiviewTessellationShader |= enabled->multiviewTessellationShader == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: { |
| const VkPhysicalDeviceShaderDrawParametersFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures*>(pNext); |
| features->shaderDrawParameters |= enabled->shaderDrawParameters == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: { |
| const VkPhysicalDeviceVulkan11Features* enabled = reinterpret_cast<const VkPhysicalDeviceVulkan11Features*>(pNext); |
| features->storageBuffer16BitAccess |= enabled->storageBuffer16BitAccess == VK_TRUE; |
| features->uniformAndStorageBuffer16BitAccess |= enabled->uniformAndStorageBuffer16BitAccess == VK_TRUE; |
| features->storagePushConstant16 |= enabled->storagePushConstant16 == VK_TRUE; |
| features->storageInputOutput16 |= enabled->storageInputOutput16 == VK_TRUE; |
| features->multiview |= enabled->multiview == VK_TRUE; |
| features->multiviewGeometryShader |= enabled->multiviewGeometryShader == VK_TRUE; |
| features->multiviewTessellationShader |= enabled->multiviewTessellationShader == VK_TRUE; |
| features->variablePointersStorageBuffer |= enabled->variablePointersStorageBuffer == VK_TRUE; |
| features->variablePointers |= enabled->variablePointers == VK_TRUE; |
| features->protectedMemory |= enabled->protectedMemory == VK_TRUE; |
| features->samplerYcbcrConversion |= enabled->samplerYcbcrConversion == VK_TRUE; |
| features->shaderDrawParameters |= enabled->shaderDrawParameters == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: { |
| const VkPhysicalDeviceVulkan12Features* enabled = reinterpret_cast<const VkPhysicalDeviceVulkan12Features*>(pNext); |
| features->samplerMirrorClampToEdge |= enabled->samplerMirrorClampToEdge == VK_TRUE; |
| features->drawIndirectCount |= enabled->drawIndirectCount == VK_TRUE; |
| features->storageBuffer8BitAccess |= enabled->storageBuffer8BitAccess == VK_TRUE; |
| features->uniformAndStorageBuffer8BitAccess |= enabled->uniformAndStorageBuffer8BitAccess == VK_TRUE; |
| features->storagePushConstant8 |= enabled->storagePushConstant8 == VK_TRUE; |
| features->shaderBufferInt64Atomics |= enabled->shaderBufferInt64Atomics == VK_TRUE; |
| features->shaderSharedInt64Atomics |= enabled->shaderSharedInt64Atomics == VK_TRUE; |
| features->shaderFloat16 |= enabled->shaderFloat16 == VK_TRUE; |
| features->shaderInt8 |= enabled->shaderInt8 == VK_TRUE; |
| features->descriptorIndexing |= enabled->descriptorIndexing == VK_TRUE; |
| features->shaderInputAttachmentArrayDynamicIndexing |= |
| enabled->shaderInputAttachmentArrayDynamicIndexing == VK_TRUE; |
| features->shaderUniformTexelBufferArrayDynamicIndexing |= |
| enabled->shaderUniformTexelBufferArrayDynamicIndexing == VK_TRUE; |
| features->shaderStorageTexelBufferArrayDynamicIndexing |= |
| enabled->shaderStorageTexelBufferArrayDynamicIndexing == VK_TRUE; |
| features->shaderUniformBufferArrayNonUniformIndexing |= |
| enabled->shaderUniformBufferArrayNonUniformIndexing == VK_TRUE; |
| features->shaderSampledImageArrayNonUniformIndexing |= |
| enabled->shaderSampledImageArrayNonUniformIndexing == VK_TRUE; |
| features->shaderStorageBufferArrayNonUniformIndexing |= |
| enabled->shaderStorageBufferArrayNonUniformIndexing == VK_TRUE; |
| features->shaderStorageImageArrayNonUniformIndexing |= |
| enabled->shaderStorageImageArrayNonUniformIndexing == VK_TRUE; |
| features->shaderInputAttachmentArrayNonUniformIndexing |= |
| enabled->shaderInputAttachmentArrayNonUniformIndexing == VK_TRUE; |
| features->shaderUniformTexelBufferArrayNonUniformIndexing |= |
| enabled->shaderUniformTexelBufferArrayNonUniformIndexing == VK_TRUE; |
| features->shaderStorageTexelBufferArrayNonUniformIndexing |= |
| enabled->shaderStorageTexelBufferArrayNonUniformIndexing == VK_TRUE; |
| features->descriptorBindingUniformBufferUpdateAfterBind |= |
| enabled->descriptorBindingUniformBufferUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingSampledImageUpdateAfterBind |= |
| enabled->descriptorBindingSampledImageUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingStorageImageUpdateAfterBind |= |
| enabled->descriptorBindingStorageImageUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingStorageBufferUpdateAfterBind |= |
| enabled->descriptorBindingStorageBufferUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingUniformTexelBufferUpdateAfterBind |= |
| enabled->descriptorBindingUniformTexelBufferUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingStorageTexelBufferUpdateAfterBind |= |
| enabled->descriptorBindingStorageTexelBufferUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingUpdateUnusedWhilePending |= |
| enabled->descriptorBindingUpdateUnusedWhilePending == VK_TRUE; |
| features->descriptorBindingPartiallyBound |= enabled->descriptorBindingPartiallyBound == VK_TRUE; |
| features->descriptorBindingVariableDescriptorCount |= enabled->descriptorBindingVariableDescriptorCount == VK_TRUE; |
| features->runtimeDescriptorArray |= enabled->runtimeDescriptorArray == VK_TRUE; |
| features->samplerFilterMinmax |= enabled->samplerFilterMinmax == VK_TRUE; |
| features->scalarBlockLayout |= enabled->scalarBlockLayout == VK_TRUE; |
| features->imagelessFramebuffer |= enabled->imagelessFramebuffer == VK_TRUE; |
| features->uniformBufferStandardLayout |= enabled->uniformBufferStandardLayout == VK_TRUE; |
| features->shaderSubgroupExtendedTypes |= enabled->shaderSubgroupExtendedTypes == VK_TRUE; |
| features->separateDepthStencilLayouts |= enabled->separateDepthStencilLayouts == VK_TRUE; |
| features->hostQueryReset |= enabled->hostQueryReset == VK_TRUE; |
| features->timelineSemaphore |= enabled->timelineSemaphore == VK_TRUE; |
| features->bufferDeviceAddress |= enabled->bufferDeviceAddress == VK_TRUE; |
| features->bufferDeviceAddressCaptureReplay |= enabled->bufferDeviceAddressCaptureReplay == VK_TRUE; |
| features->bufferDeviceAddressMultiDevice |= enabled->bufferDeviceAddressMultiDevice == VK_TRUE; |
| features->vulkanMemoryModel |= enabled->vulkanMemoryModel == VK_TRUE; |
| features->vulkanMemoryModelDeviceScope |= enabled->vulkanMemoryModelDeviceScope == VK_TRUE; |
| features->vulkanMemoryModelAvailabilityVisibilityChains |= |
| enabled->vulkanMemoryModelAvailabilityVisibilityChains == VK_TRUE; |
| features->shaderOutputViewportIndex |= enabled->shaderOutputViewportIndex == VK_TRUE; |
| features->shaderOutputLayer |= enabled->shaderOutputLayer == VK_TRUE; |
| features->subgroupBroadcastDynamicId |= enabled->subgroupBroadcastDynamicId == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: { |
| const VkPhysicalDeviceVulkanMemoryModelFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeatures*>(pNext); |
| features->vulkanMemoryModel |= enabled->vulkanMemoryModel == VK_TRUE; |
| features->vulkanMemoryModelDeviceScope |= enabled->vulkanMemoryModelDeviceScope == VK_TRUE; |
| features->vulkanMemoryModelAvailabilityVisibilityChains |= |
| enabled->vulkanMemoryModelAvailabilityVisibilityChains == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: { |
| const VkPhysicalDeviceHostQueryResetFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeatures*>(pNext); |
| features->hostQueryReset |= enabled->hostQueryReset == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: { |
| const VkPhysicalDeviceTimelineSemaphoreFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreFeatures*>(pNext); |
| features->timelineSemaphore |= enabled->timelineSemaphore == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: { |
| const VkPhysicalDeviceBufferDeviceAddressFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeatures*>(pNext); |
| features->bufferDeviceAddress |= enabled->bufferDeviceAddress == VK_TRUE; |
| features->bufferDeviceAddressCaptureReplay |= enabled->bufferDeviceAddressCaptureReplay == VK_TRUE; |
| features->bufferDeviceAddressMultiDevice |= enabled->bufferDeviceAddressMultiDevice == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: { |
| const VkPhysicalDevice8BitStorageFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDevice8BitStorageFeatures*>(pNext); |
| features->storageBuffer8BitAccess |= enabled->storageBuffer8BitAccess == VK_TRUE; |
| features->uniformAndStorageBuffer8BitAccess |= enabled->uniformAndStorageBuffer8BitAccess == VK_TRUE; |
| features->storagePushConstant8 |= enabled->storagePushConstant8 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: { |
| const VkPhysicalDeviceShaderAtomicInt64Features* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64Features*>(pNext); |
| features->shaderBufferInt64Atomics |= enabled->shaderBufferInt64Atomics == VK_TRUE; |
| features->shaderSharedInt64Atomics |= enabled->shaderSharedInt64Atomics == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: { |
| const VkPhysicalDeviceShaderFloat16Int8Features* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderFloat16Int8Features*>(pNext); |
| features->shaderFloat16 |= enabled->shaderFloat16 == VK_TRUE; |
| features->shaderInt8 |= enabled->shaderInt8 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: { |
| const VkPhysicalDeviceDescriptorIndexingFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeatures*>(pNext); |
| features->shaderInputAttachmentArrayDynamicIndexing |= |
| enabled->shaderInputAttachmentArrayDynamicIndexing == VK_TRUE; |
| features->shaderUniformTexelBufferArrayDynamicIndexing |= |
| enabled->shaderUniformTexelBufferArrayDynamicIndexing == VK_TRUE; |
| features->shaderStorageTexelBufferArrayDynamicIndexing |= |
| enabled->shaderStorageTexelBufferArrayDynamicIndexing == VK_TRUE; |
| features->shaderUniformBufferArrayNonUniformIndexing |= |
| enabled->shaderUniformBufferArrayNonUniformIndexing == VK_TRUE; |
| features->shaderSampledImageArrayNonUniformIndexing |= |
| enabled->shaderSampledImageArrayNonUniformIndexing == VK_TRUE; |
| features->shaderStorageBufferArrayNonUniformIndexing |= |
| enabled->shaderStorageBufferArrayNonUniformIndexing == VK_TRUE; |
| features->shaderStorageImageArrayNonUniformIndexing |= |
| enabled->shaderStorageImageArrayNonUniformIndexing == VK_TRUE; |
| features->shaderInputAttachmentArrayNonUniformIndexing |= |
| enabled->shaderInputAttachmentArrayNonUniformIndexing == VK_TRUE; |
| features->shaderUniformTexelBufferArrayNonUniformIndexing |= |
| enabled->shaderUniformTexelBufferArrayNonUniformIndexing == VK_TRUE; |
| features->shaderStorageTexelBufferArrayNonUniformIndexing |= |
| enabled->shaderStorageTexelBufferArrayNonUniformIndexing == VK_TRUE; |
| features->descriptorBindingUniformBufferUpdateAfterBind |= |
| enabled->descriptorBindingUniformBufferUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingSampledImageUpdateAfterBind |= |
| enabled->descriptorBindingSampledImageUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingStorageImageUpdateAfterBind |= |
| enabled->descriptorBindingStorageImageUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingStorageBufferUpdateAfterBind |= |
| enabled->descriptorBindingStorageBufferUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingUniformTexelBufferUpdateAfterBind |= |
| enabled->descriptorBindingUniformTexelBufferUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingStorageTexelBufferUpdateAfterBind |= |
| enabled->descriptorBindingStorageTexelBufferUpdateAfterBind == VK_TRUE; |
| features->descriptorBindingUpdateUnusedWhilePending |= |
| enabled->descriptorBindingUpdateUnusedWhilePending == VK_TRUE; |
| features->descriptorBindingPartiallyBound |= enabled->descriptorBindingPartiallyBound == VK_TRUE; |
| features->descriptorBindingVariableDescriptorCount |= enabled->descriptorBindingVariableDescriptorCount == VK_TRUE; |
| features->runtimeDescriptorArray |= enabled->runtimeDescriptorArray == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: { |
| const VkPhysicalDeviceScalarBlockLayoutFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeatures*>(pNext); |
| features->scalarBlockLayout |= enabled->scalarBlockLayout == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: { |
| const VkPhysicalDeviceUniformBufferStandardLayoutFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>(pNext); |
| features->uniformBufferStandardLayout |= enabled->uniformBufferStandardLayout == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: { |
| const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>(pNext); |
| features->shaderSubgroupExtendedTypes |= enabled->shaderSubgroupExtendedTypes == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: { |
| const VkPhysicalDeviceImagelessFramebufferFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeatures*>(pNext); |
| features->imagelessFramebuffer |= enabled->imagelessFramebuffer == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: { |
| const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>(pNext); |
| features->separateDepthStencilLayouts |= enabled->separateDepthStencilLayouts == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: { |
| const VkPhysicalDeviceVulkan13Features* enabled = reinterpret_cast<const VkPhysicalDeviceVulkan13Features*>(pNext); |
| features->robustImageAccess |= enabled->robustImageAccess == VK_TRUE; |
| features->inlineUniformBlock |= enabled->inlineUniformBlock == VK_TRUE; |
| features->descriptorBindingInlineUniformBlockUpdateAfterBind |= |
| enabled->descriptorBindingInlineUniformBlockUpdateAfterBind == VK_TRUE; |
| features->pipelineCreationCacheControl |= enabled->pipelineCreationCacheControl == VK_TRUE; |
| features->privateData |= enabled->privateData == VK_TRUE; |
| features->shaderDemoteToHelperInvocation |= enabled->shaderDemoteToHelperInvocation == VK_TRUE; |
| features->shaderTerminateInvocation |= enabled->shaderTerminateInvocation == VK_TRUE; |
| features->subgroupSizeControl |= enabled->subgroupSizeControl == VK_TRUE; |
| features->computeFullSubgroups |= enabled->computeFullSubgroups == VK_TRUE; |
| features->synchronization2 |= enabled->synchronization2 == VK_TRUE; |
| features->textureCompressionASTC_HDR |= enabled->textureCompressionASTC_HDR == VK_TRUE; |
| features->shaderZeroInitializeWorkgroupMemory |= enabled->shaderZeroInitializeWorkgroupMemory == VK_TRUE; |
| features->dynamicRendering |= enabled->dynamicRendering == VK_TRUE; |
| features->shaderIntegerDotProduct |= enabled->shaderIntegerDotProduct == VK_TRUE; |
| features->maintenance4 |= enabled->maintenance4 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: { |
| const VkPhysicalDevicePrivateDataFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDevicePrivateDataFeatures*>(pNext); |
| features->privateData |= enabled->privateData == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: { |
| const VkPhysicalDeviceSynchronization2Features* enabled = |
| reinterpret_cast<const VkPhysicalDeviceSynchronization2Features*>(pNext); |
| features->synchronization2 |= enabled->synchronization2 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: { |
| const VkPhysicalDeviceTextureCompressionASTCHDRFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTCHDRFeatures*>(pNext); |
| features->textureCompressionASTC_HDR |= enabled->textureCompressionASTC_HDR == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: { |
| const VkPhysicalDeviceMaintenance4Features* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMaintenance4Features*>(pNext); |
| features->maintenance4 |= enabled->maintenance4 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: { |
| const VkPhysicalDeviceShaderTerminateInvocationFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderTerminateInvocationFeatures*>(pNext); |
| features->shaderTerminateInvocation |= enabled->shaderTerminateInvocation == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: { |
| const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures*>(pNext); |
| features->shaderDemoteToHelperInvocation |= enabled->shaderDemoteToHelperInvocation == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: { |
| const VkPhysicalDevicePipelineCreationCacheControlFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDevicePipelineCreationCacheControlFeatures*>(pNext); |
| features->pipelineCreationCacheControl |= enabled->pipelineCreationCacheControl == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: { |
| const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures*>(pNext); |
| features->shaderZeroInitializeWorkgroupMemory |= enabled->shaderZeroInitializeWorkgroupMemory == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: { |
| const VkPhysicalDeviceImageRobustnessFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImageRobustnessFeatures*>(pNext); |
| features->robustImageAccess |= enabled->robustImageAccess == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: { |
| const VkPhysicalDeviceSubgroupSizeControlFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlFeatures*>(pNext); |
| features->subgroupSizeControl |= enabled->subgroupSizeControl == VK_TRUE; |
| features->computeFullSubgroups |= enabled->computeFullSubgroups == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: { |
| const VkPhysicalDeviceInlineUniformBlockFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeatures*>(pNext); |
| features->inlineUniformBlock |= enabled->inlineUniformBlock == VK_TRUE; |
| features->descriptorBindingInlineUniformBlockUpdateAfterBind |= |
| enabled->descriptorBindingInlineUniformBlockUpdateAfterBind == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: { |
| const VkPhysicalDeviceShaderIntegerDotProductFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductFeatures*>(pNext); |
| features->shaderIntegerDotProduct |= enabled->shaderIntegerDotProduct == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: { |
| const VkPhysicalDeviceDynamicRenderingFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDynamicRenderingFeatures*>(pNext); |
| features->dynamicRendering |= enabled->dynamicRendering == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES: { |
| const VkPhysicalDeviceVulkan14Features* enabled = reinterpret_cast<const VkPhysicalDeviceVulkan14Features*>(pNext); |
| features->globalPriorityQuery |= enabled->globalPriorityQuery == VK_TRUE; |
| features->shaderSubgroupRotate |= enabled->shaderSubgroupRotate == VK_TRUE; |
| features->shaderSubgroupRotateClustered |= enabled->shaderSubgroupRotateClustered == VK_TRUE; |
| features->shaderFloatControls2 |= enabled->shaderFloatControls2 == VK_TRUE; |
| features->shaderExpectAssume |= enabled->shaderExpectAssume == VK_TRUE; |
| features->rectangularLines |= enabled->rectangularLines == VK_TRUE; |
| features->bresenhamLines |= enabled->bresenhamLines == VK_TRUE; |
| features->smoothLines |= enabled->smoothLines == VK_TRUE; |
| features->stippledRectangularLines |= enabled->stippledRectangularLines == VK_TRUE; |
| features->stippledBresenhamLines |= enabled->stippledBresenhamLines == VK_TRUE; |
| features->stippledSmoothLines |= enabled->stippledSmoothLines == VK_TRUE; |
| features->vertexAttributeInstanceRateDivisor |= enabled->vertexAttributeInstanceRateDivisor == VK_TRUE; |
| features->vertexAttributeInstanceRateZeroDivisor |= enabled->vertexAttributeInstanceRateZeroDivisor == VK_TRUE; |
| features->indexTypeUint8 |= enabled->indexTypeUint8 == VK_TRUE; |
| features->dynamicRenderingLocalRead |= enabled->dynamicRenderingLocalRead == VK_TRUE; |
| features->maintenance5 |= enabled->maintenance5 == VK_TRUE; |
| features->maintenance6 |= enabled->maintenance6 == VK_TRUE; |
| features->pipelineProtectedAccess |= enabled->pipelineProtectedAccess == VK_TRUE; |
| features->pipelineRobustness |= enabled->pipelineRobustness == VK_TRUE; |
| features->hostImageCopy |= enabled->hostImageCopy == VK_TRUE; |
| features->pushDescriptor |= enabled->pushDescriptor == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES: { |
| const VkPhysicalDeviceGlobalPriorityQueryFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceGlobalPriorityQueryFeatures*>(pNext); |
| features->globalPriorityQuery |= enabled->globalPriorityQuery == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES: { |
| const VkPhysicalDeviceIndexTypeUint8Features* enabled = |
| reinterpret_cast<const VkPhysicalDeviceIndexTypeUint8Features*>(pNext); |
| features->indexTypeUint8 |= enabled->indexTypeUint8 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES: { |
| const VkPhysicalDeviceMaintenance5Features* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMaintenance5Features*>(pNext); |
| features->maintenance5 |= enabled->maintenance5 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES: { |
| const VkPhysicalDeviceMaintenance6Features* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMaintenance6Features*>(pNext); |
| features->maintenance6 |= enabled->maintenance6 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES: { |
| const VkPhysicalDeviceHostImageCopyFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceHostImageCopyFeatures*>(pNext); |
| features->hostImageCopy |= enabled->hostImageCopy == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES: { |
| const VkPhysicalDeviceShaderSubgroupRotateFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderSubgroupRotateFeatures*>(pNext); |
| features->shaderSubgroupRotate |= enabled->shaderSubgroupRotate == VK_TRUE; |
| features->shaderSubgroupRotateClustered |= enabled->shaderSubgroupRotateClustered == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES: { |
| const VkPhysicalDeviceShaderFloatControls2Features* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderFloatControls2Features*>(pNext); |
| features->shaderFloatControls2 |= enabled->shaderFloatControls2 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES: { |
| const VkPhysicalDeviceShaderExpectAssumeFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderExpectAssumeFeatures*>(pNext); |
| features->shaderExpectAssume |= enabled->shaderExpectAssume == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES: { |
| const VkPhysicalDevicePipelineProtectedAccessFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDevicePipelineProtectedAccessFeatures*>(pNext); |
| features->pipelineProtectedAccess |= enabled->pipelineProtectedAccess == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES: { |
| const VkPhysicalDevicePipelineRobustnessFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDevicePipelineRobustnessFeatures*>(pNext); |
| features->pipelineRobustness |= enabled->pipelineRobustness == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES: { |
| const VkPhysicalDeviceLineRasterizationFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceLineRasterizationFeatures*>(pNext); |
| features->rectangularLines |= enabled->rectangularLines == VK_TRUE; |
| features->bresenhamLines |= enabled->bresenhamLines == VK_TRUE; |
| features->smoothLines |= enabled->smoothLines == VK_TRUE; |
| features->stippledRectangularLines |= enabled->stippledRectangularLines == VK_TRUE; |
| features->stippledBresenhamLines |= enabled->stippledBresenhamLines == VK_TRUE; |
| features->stippledSmoothLines |= enabled->stippledSmoothLines == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES: { |
| const VkPhysicalDeviceVertexAttributeDivisorFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeatures*>(pNext); |
| features->vertexAttributeInstanceRateDivisor |= enabled->vertexAttributeInstanceRateDivisor == VK_TRUE; |
| features->vertexAttributeInstanceRateZeroDivisor |= enabled->vertexAttributeInstanceRateZeroDivisor == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES: { |
| const VkPhysicalDeviceDynamicRenderingLocalReadFeatures* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDynamicRenderingLocalReadFeatures*>(pNext); |
| features->dynamicRenderingLocalRead |= enabled->dynamicRenderingLocalRead == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: { |
| const VkPhysicalDevicePerformanceQueryFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDevicePerformanceQueryFeaturesKHR*>(pNext); |
| features->performanceCounterQueryPools |= enabled->performanceCounterQueryPools == VK_TRUE; |
| features->performanceCounterMultipleQueryPools |= enabled->performanceCounterMultipleQueryPools == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR: { |
| const VkPhysicalDeviceShaderBfloat16FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderBfloat16FeaturesKHR*>(pNext); |
| features->shaderBFloat16Type |= enabled->shaderBFloat16Type == VK_TRUE; |
| features->shaderBFloat16DotProduct |= enabled->shaderBFloat16DotProduct == VK_TRUE; |
| features->shaderBFloat16CooperativeMatrix |= enabled->shaderBFloat16CooperativeMatrix == VK_TRUE; |
| break; |
| } |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR: { |
| const VkPhysicalDevicePortabilitySubsetFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDevicePortabilitySubsetFeaturesKHR*>(pNext); |
| features->constantAlphaColorBlendFactors |= enabled->constantAlphaColorBlendFactors == VK_TRUE; |
| features->events |= enabled->events == VK_TRUE; |
| features->imageViewFormatReinterpretation |= enabled->imageViewFormatReinterpretation == VK_TRUE; |
| features->imageViewFormatSwizzle |= enabled->imageViewFormatSwizzle == VK_TRUE; |
| features->imageView2DOn3DImage |= enabled->imageView2DOn3DImage == VK_TRUE; |
| features->multisampleArrayImage |= enabled->multisampleArrayImage == VK_TRUE; |
| features->mutableComparisonSamplers |= enabled->mutableComparisonSamplers == VK_TRUE; |
| features->pointPolygons |= enabled->pointPolygons == VK_TRUE; |
| features->samplerMipLodBias |= enabled->samplerMipLodBias == VK_TRUE; |
| features->separateStencilMaskRef |= enabled->separateStencilMaskRef == VK_TRUE; |
| features->shaderSampleRateInterpolationFunctions |= enabled->shaderSampleRateInterpolationFunctions == VK_TRUE; |
| features->tessellationIsolines |= enabled->tessellationIsolines == VK_TRUE; |
| features->tessellationPointMode |= enabled->tessellationPointMode == VK_TRUE; |
| features->triangleFans |= enabled->triangleFans == VK_TRUE; |
| features->vertexAttributeAccessBeyondStride |= enabled->vertexAttributeAccessBeyondStride == VK_TRUE; |
| break; |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: { |
| const VkPhysicalDeviceShaderClockFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderClockFeaturesKHR*>(pNext); |
| features->shaderSubgroupClock |= enabled->shaderSubgroupClock == VK_TRUE; |
| features->shaderDeviceClock |= enabled->shaderDeviceClock == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR: { |
| const VkPhysicalDeviceFragmentShadingRateFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateFeaturesKHR*>(pNext); |
| features->pipelineFragmentShadingRate |= enabled->pipelineFragmentShadingRate == VK_TRUE; |
| features->primitiveFragmentShadingRate |= enabled->primitiveFragmentShadingRate == VK_TRUE; |
| features->attachmentFragmentShadingRate |= enabled->attachmentFragmentShadingRate == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR: { |
| const VkPhysicalDeviceShaderConstantDataFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderConstantDataFeaturesKHR*>(pNext); |
| features->shaderConstantData |= enabled->shaderConstantData == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR: { |
| const VkPhysicalDeviceShaderAbortFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderAbortFeaturesKHR*>(pNext); |
| features->shaderAbort |= enabled->shaderAbort == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR: { |
| const VkPhysicalDeviceShaderQuadControlFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderQuadControlFeaturesKHR*>(pNext); |
| features->shaderQuadControl |= enabled->shaderQuadControl == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR: { |
| const VkPhysicalDevicePresentWaitFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDevicePresentWaitFeaturesKHR*>(pNext); |
| features->presentWait |= enabled->presentWait == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: { |
| const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR*>(pNext); |
| features->pipelineExecutableInfo |= enabled->pipelineExecutableInfo == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR: { |
| const VkPhysicalDevicePresentIdFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDevicePresentIdFeaturesKHR*>(pNext); |
| features->presentId |= enabled->presentId == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR: { |
| const VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR*>(pNext); |
| features->deviceAddressCommands |= enabled->deviceAddressCommands == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR: { |
| const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR*>(pNext); |
| features->fragmentShaderBarycentric |= enabled->fragmentShaderBarycentric == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR: { |
| const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR*>(pNext); |
| features->shaderSubgroupUniformControlFlow |= enabled->shaderSubgroupUniformControlFlow == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: { |
| const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR*>(pNext); |
| features->workgroupMemoryExplicitLayout |= enabled->workgroupMemoryExplicitLayout == VK_TRUE; |
| features->workgroupMemoryExplicitLayoutScalarBlockLayout |= |
| enabled->workgroupMemoryExplicitLayoutScalarBlockLayout == VK_TRUE; |
| features->workgroupMemoryExplicitLayout8BitAccess |= enabled->workgroupMemoryExplicitLayout8BitAccess == VK_TRUE; |
| features->workgroupMemoryExplicitLayout16BitAccess |= enabled->workgroupMemoryExplicitLayout16BitAccess == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR: { |
| const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR*>(pNext); |
| features->rayTracingMaintenance1 |= enabled->rayTracingMaintenance1 == VK_TRUE; |
| features->rayTracingPipelineTraceRaysIndirect2 |= enabled->rayTracingPipelineTraceRaysIndirect2 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR: { |
| const VkPhysicalDeviceShaderUntypedPointersFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderUntypedPointersFeaturesKHR*>(pNext); |
| features->shaderUntypedPointers |= enabled->shaderUntypedPointers == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR: { |
| const VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR*>(pNext); |
| features->shaderMaximalReconvergence |= enabled->shaderMaximalReconvergence == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR: { |
| const VkPhysicalDevicePresentId2FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDevicePresentId2FeaturesKHR*>(pNext); |
| features->presentId2 |= enabled->presentId2 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR: { |
| const VkPhysicalDevicePresentWait2FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDevicePresentWait2FeaturesKHR*>(pNext); |
| features->presentWait2 |= enabled->presentWait2 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR: { |
| const VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR*>(pNext); |
| features->rayTracingPositionFetch |= enabled->rayTracingPositionFetch == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR: { |
| const VkPhysicalDevicePipelineBinaryFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDevicePipelineBinaryFeaturesKHR*>(pNext); |
| features->pipelineBinaries |= enabled->pipelineBinaries == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR: { |
| const VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR*>(pNext); |
| features->swapchainMaintenance1 |= enabled->swapchainMaintenance1 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR: { |
| const VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR*>(pNext); |
| features->internallySynchronizedQueues |= enabled->internallySynchronizedQueues == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR: { |
| const VkPhysicalDeviceCooperativeMatrixFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesKHR*>(pNext); |
| features->cooperativeMatrix |= enabled->cooperativeMatrix == VK_TRUE; |
| features->cooperativeMatrixRobustBufferAccess |= enabled->cooperativeMatrixRobustBufferAccess == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR: { |
| const VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR*>(pNext); |
| features->computeDerivativeGroupQuads |= enabled->computeDerivativeGroupQuads == VK_TRUE; |
| features->computeDerivativeGroupLinear |= enabled->computeDerivativeGroupLinear == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR: { |
| const VkPhysicalDeviceVideoEncodeAV1FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVideoEncodeAV1FeaturesKHR*>(pNext); |
| features->videoEncodeAV1 |= enabled->videoEncodeAV1 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR: { |
| const VkPhysicalDeviceVideoDecodeVP9FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVideoDecodeVP9FeaturesKHR*>(pNext); |
| features->videoDecodeVP9 |= enabled->videoDecodeVP9 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR: { |
| const VkPhysicalDeviceVideoMaintenance1FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVideoMaintenance1FeaturesKHR*>(pNext); |
| features->videoMaintenance1 |= enabled->videoMaintenance1 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR: { |
| const VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR*>(pNext); |
| features->unifiedImageLayouts |= enabled->unifiedImageLayouts == VK_TRUE; |
| features->unifiedImageLayoutsVideo |= enabled->unifiedImageLayoutsVideo == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR: { |
| const VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR*>(pNext); |
| features->indirectMemoryCopy |= enabled->indirectMemoryCopy == VK_TRUE; |
| features->indirectMemoryToImageCopy |= enabled->indirectMemoryToImageCopy == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR: { |
| const VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR*>(pNext); |
| features->videoEncodeIntraRefresh |= enabled->videoEncodeIntraRefresh == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR: { |
| const VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR*>(pNext); |
| features->videoEncodeQuantizationMap |= enabled->videoEncodeQuantizationMap == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR: { |
| const VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR*>(pNext); |
| features->shaderRelaxedExtendedInstruction |= enabled->shaderRelaxedExtendedInstruction == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR: { |
| const VkPhysicalDeviceMaintenance7FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMaintenance7FeaturesKHR*>(pNext); |
| features->maintenance7 |= enabled->maintenance7 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR: { |
| const VkPhysicalDeviceFaultFeaturesKHR* enabled = reinterpret_cast<const VkPhysicalDeviceFaultFeaturesKHR*>(pNext); |
| features->deviceFault |= enabled->deviceFault == VK_TRUE; |
| features->deviceFaultVendorBinary |= enabled->deviceFaultVendorBinary == VK_TRUE; |
| features->deviceFaultReportMasked |= enabled->deviceFaultReportMasked == VK_TRUE; |
| features->deviceFaultDeviceLostOnMasked |= enabled->deviceFaultDeviceLostOnMasked == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR: { |
| const VkPhysicalDeviceMaintenance8FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMaintenance8FeaturesKHR*>(pNext); |
| features->maintenance8 |= enabled->maintenance8 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR: { |
| const VkPhysicalDeviceShaderFmaFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderFmaFeaturesKHR*>(pNext); |
| features->shaderFmaFloat16 |= enabled->shaderFmaFloat16 == VK_TRUE; |
| features->shaderFmaFloat32 |= enabled->shaderFmaFloat32 == VK_TRUE; |
| features->shaderFmaFloat64 |= enabled->shaderFmaFloat64 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR: { |
| const VkPhysicalDeviceMaintenance9FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMaintenance9FeaturesKHR*>(pNext); |
| features->maintenance9 |= enabled->maintenance9 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR: { |
| const VkPhysicalDeviceVideoMaintenance2FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVideoMaintenance2FeaturesKHR*>(pNext); |
| features->videoMaintenance2 |= enabled->videoMaintenance2 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR: { |
| const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR*>(pNext); |
| features->depthClampZeroOne |= enabled->depthClampZeroOne == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR: { |
| const VkPhysicalDeviceRobustness2FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRobustness2FeaturesKHR*>(pNext); |
| features->robustBufferAccess2 |= enabled->robustBufferAccess2 == VK_TRUE; |
| features->robustImageAccess2 |= enabled->robustImageAccess2 == VK_TRUE; |
| features->nullDescriptor |= enabled->nullDescriptor == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR: { |
| const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR*>(pNext); |
| features->presentModeFifoLatestReady |= enabled->presentModeFifoLatestReady == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR: { |
| const VkPhysicalDeviceOpacityMicromapFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceOpacityMicromapFeaturesKHR*>(pNext); |
| features->micromap |= enabled->micromap == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR: { |
| const VkPhysicalDeviceMaintenance10FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMaintenance10FeaturesKHR*>(pNext); |
| features->maintenance10 |= enabled->maintenance10 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR: { |
| const VkPhysicalDeviceMaintenance11FeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMaintenance11FeaturesKHR*>(pNext); |
| features->maintenance11 |= enabled->maintenance11 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: { |
| const VkPhysicalDeviceTransformFeedbackFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(pNext); |
| features->transformFeedback |= enabled->transformFeedback == VK_TRUE; |
| features->geometryStreams |= enabled->geometryStreams == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: { |
| const VkPhysicalDeviceCornerSampledImageFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCornerSampledImageFeaturesNV*>(pNext); |
| features->cornerSampledImage |= enabled->cornerSampledImage == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: { |
| const VkPhysicalDeviceASTCDecodeFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT*>(pNext); |
| features->decodeModeSharedExponent |= enabled->decodeModeSharedExponent == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: { |
| const VkPhysicalDeviceConditionalRenderingFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(pNext); |
| features->conditionalRendering |= enabled->conditionalRendering == VK_TRUE; |
| features->inheritedConditionalRendering |= enabled->inheritedConditionalRendering == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: { |
| const VkPhysicalDeviceDepthClipEnableFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(pNext); |
| features->depthClipEnable |= enabled->depthClipEnable == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG: { |
| const VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG*>(pNext); |
| features->relaxedLineRasterization |= enabled->relaxedLineRasterization == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD: { |
| const VkPhysicalDeviceGpaFeaturesAMD* enabled = reinterpret_cast<const VkPhysicalDeviceGpaFeaturesAMD*>(pNext); |
| features->perfCounters |= enabled->perfCounters == VK_TRUE; |
| features->streamingPerfCounters |= enabled->streamingPerfCounters == VK_TRUE; |
| features->sqThreadTracing |= enabled->sqThreadTracing == VK_TRUE; |
| features->clockModes |= enabled->clockModes == VK_TRUE; |
| break; |
| } |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX: { |
| const VkPhysicalDeviceShaderEnqueueFeaturesAMDX* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderEnqueueFeaturesAMDX*>(pNext); |
| features->shaderEnqueue |= enabled->shaderEnqueue == VK_TRUE; |
| features->shaderMeshEnqueue |= enabled->shaderMeshEnqueue == VK_TRUE; |
| break; |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT: { |
| const VkPhysicalDeviceDescriptorHeapFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDescriptorHeapFeaturesEXT*>(pNext); |
| features->descriptorHeap |= enabled->descriptorHeap == VK_TRUE; |
| features->descriptorHeapCaptureReplay |= enabled->descriptorHeapCaptureReplay == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: { |
| const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(pNext); |
| features->advancedBlendCoherentOperations |= enabled->advancedBlendCoherentOperations == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: { |
| const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV*>(pNext); |
| features->shaderSMBuiltins |= enabled->shaderSMBuiltins == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: { |
| const VkPhysicalDeviceShadingRateImageFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShadingRateImageFeaturesNV*>(pNext); |
| features->shadingRateImage |= enabled->shadingRateImage == VK_TRUE; |
| features->shadingRateCoarseSampleOrder |= enabled->shadingRateCoarseSampleOrder == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: { |
| const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV*>(pNext); |
| features->representativeFragmentTest |= enabled->representativeFragmentTest == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM: { |
| const VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM*>(pNext); |
| features->cooperativeMatrixConversion |= enabled->cooperativeMatrixConversion == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM: { |
| const VkPhysicalDeviceElapsedTimerQueryFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceElapsedTimerQueryFeaturesQCOM*>(pNext); |
| features->elapsedTimerQuery |= enabled->elapsedTimerQuery == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: { |
| const VkPhysicalDeviceMeshShaderFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesNV*>(pNext); |
| features->taskShader |= enabled->taskShader == VK_TRUE; |
| features->meshShader |= enabled->meshShader == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: { |
| const VkPhysicalDeviceShaderImageFootprintFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderImageFootprintFeaturesNV*>(pNext); |
| features->imageFootprint |= enabled->imageFootprint == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: { |
| const VkPhysicalDeviceExclusiveScissorFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceExclusiveScissorFeaturesNV*>(pNext); |
| features->exclusiveScissor |= enabled->exclusiveScissor == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT: { |
| const VkPhysicalDevicePresentTimingFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDevicePresentTimingFeaturesEXT*>(pNext); |
| features->presentTiming |= enabled->presentTiming == VK_TRUE; |
| features->presentAtAbsoluteTime |= enabled->presentAtAbsoluteTime == VK_TRUE; |
| features->presentAtRelativeTime |= enabled->presentAtRelativeTime == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: { |
| const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL*>(pNext); |
| features->shaderIntegerFunctions2 |= enabled->shaderIntegerFunctions2 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: { |
| const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(pNext); |
| features->fragmentDensityMap |= enabled->fragmentDensityMap == VK_TRUE; |
| features->fragmentDensityMapDynamic |= enabled->fragmentDensityMapDynamic == VK_TRUE; |
| features->fragmentDensityMapNonSubsampledImages |= enabled->fragmentDensityMapNonSubsampledImages == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: { |
| const VkPhysicalDeviceCoherentMemoryFeaturesAMD* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCoherentMemoryFeaturesAMD*>(pNext); |
| features->deviceCoherentMemory |= enabled->deviceCoherentMemory == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT*>(pNext); |
| features->shaderImageInt64Atomics |= enabled->shaderImageInt64Atomics == VK_TRUE; |
| features->sparseImageInt64Atomics |= enabled->sparseImageInt64Atomics == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: { |
| const VkPhysicalDeviceMemoryPriorityFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMemoryPriorityFeaturesEXT*>(pNext); |
| features->memoryPriority |= enabled->memoryPriority == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: { |
| const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV*>(pNext); |
| features->dedicatedAllocationImageAliasing |= enabled->dedicatedAllocationImageAliasing == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: { |
| const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT*>(pNext); |
| features->bufferDeviceAddressEXT |= enabled->bufferDeviceAddress == VK_TRUE; |
| features->bufferDeviceAddressCaptureReplayEXT |= enabled->bufferDeviceAddressCaptureReplay == VK_TRUE; |
| features->bufferDeviceAddressMultiDeviceEXT |= enabled->bufferDeviceAddressMultiDevice == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: { |
| const VkPhysicalDeviceCooperativeMatrixFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesNV*>(pNext); |
| features->cooperativeMatrix |= enabled->cooperativeMatrix == VK_TRUE; |
| features->cooperativeMatrixRobustBufferAccess |= enabled->cooperativeMatrixRobustBufferAccess == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: { |
| const VkPhysicalDeviceCoverageReductionModeFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCoverageReductionModeFeaturesNV*>(pNext); |
| features->coverageReductionMode |= enabled->coverageReductionMode == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: { |
| const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>(pNext); |
| features->fragmentShaderSampleInterlock |= enabled->fragmentShaderSampleInterlock == VK_TRUE; |
| features->fragmentShaderPixelInterlock |= enabled->fragmentShaderPixelInterlock == VK_TRUE; |
| features->fragmentShaderShadingRateInterlock |= enabled->fragmentShaderShadingRateInterlock == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: { |
| const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>(pNext); |
| features->ycbcrImageArrays |= enabled->ycbcrImageArrays == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: { |
| const VkPhysicalDeviceProvokingVertexFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceProvokingVertexFeaturesEXT*>(pNext); |
| features->provokingVertexLast |= enabled->provokingVertexLast == VK_TRUE; |
| features->transformFeedbackPreservesProvokingVertex |= |
| enabled->transformFeedbackPreservesProvokingVertex == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*>(pNext); |
| features->shaderBufferFloat32Atomics |= enabled->shaderBufferFloat32Atomics == VK_TRUE; |
| features->shaderBufferFloat32AtomicAdd |= enabled->shaderBufferFloat32AtomicAdd == VK_TRUE; |
| features->shaderBufferFloat64Atomics |= enabled->shaderBufferFloat64Atomics == VK_TRUE; |
| features->shaderBufferFloat64AtomicAdd |= enabled->shaderBufferFloat64AtomicAdd == VK_TRUE; |
| features->shaderSharedFloat32Atomics |= enabled->shaderSharedFloat32Atomics == VK_TRUE; |
| features->shaderSharedFloat32AtomicAdd |= enabled->shaderSharedFloat32AtomicAdd == VK_TRUE; |
| features->shaderSharedFloat64Atomics |= enabled->shaderSharedFloat64Atomics == VK_TRUE; |
| features->shaderSharedFloat64AtomicAdd |= enabled->shaderSharedFloat64AtomicAdd == VK_TRUE; |
| features->shaderImageFloat32Atomics |= enabled->shaderImageFloat32Atomics == VK_TRUE; |
| features->shaderImageFloat32AtomicAdd |= enabled->shaderImageFloat32AtomicAdd == VK_TRUE; |
| features->sparseImageFloat32Atomics |= enabled->sparseImageFloat32Atomics == VK_TRUE; |
| features->sparseImageFloat32AtomicAdd |= enabled->sparseImageFloat32AtomicAdd == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: { |
| const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>(pNext); |
| features->extendedDynamicState |= enabled->extendedDynamicState == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT: { |
| const VkPhysicalDeviceMapMemoryPlacedFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMapMemoryPlacedFeaturesEXT*>(pNext); |
| features->memoryMapPlaced |= enabled->memoryMapPlaced == VK_TRUE; |
| features->memoryMapRangePlaced |= enabled->memoryMapRangePlaced == VK_TRUE; |
| features->memoryUnmapReserve |= enabled->memoryUnmapReserve == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT*>(pNext); |
| features->shaderBufferFloat16Atomics |= enabled->shaderBufferFloat16Atomics == VK_TRUE; |
| features->shaderBufferFloat16AtomicAdd |= enabled->shaderBufferFloat16AtomicAdd == VK_TRUE; |
| features->shaderBufferFloat16AtomicMinMax |= enabled->shaderBufferFloat16AtomicMinMax == VK_TRUE; |
| features->shaderBufferFloat32AtomicMinMax |= enabled->shaderBufferFloat32AtomicMinMax == VK_TRUE; |
| features->shaderBufferFloat64AtomicMinMax |= enabled->shaderBufferFloat64AtomicMinMax == VK_TRUE; |
| features->shaderSharedFloat16Atomics |= enabled->shaderSharedFloat16Atomics == VK_TRUE; |
| features->shaderSharedFloat16AtomicAdd |= enabled->shaderSharedFloat16AtomicAdd == VK_TRUE; |
| features->shaderSharedFloat16AtomicMinMax |= enabled->shaderSharedFloat16AtomicMinMax == VK_TRUE; |
| features->shaderSharedFloat32AtomicMinMax |= enabled->shaderSharedFloat32AtomicMinMax == VK_TRUE; |
| features->shaderSharedFloat64AtomicMinMax |= enabled->shaderSharedFloat64AtomicMinMax == VK_TRUE; |
| features->shaderImageFloat32AtomicMinMax |= enabled->shaderImageFloat32AtomicMinMax == VK_TRUE; |
| features->sparseImageFloat32AtomicMinMax |= enabled->sparseImageFloat32AtomicMinMax == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: { |
| const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV*>(pNext); |
| features->deviceGeneratedCommandsNV |= enabled->deviceGeneratedCommands == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV: { |
| const VkPhysicalDeviceInheritedViewportScissorFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceInheritedViewportScissorFeaturesNV*>(pNext); |
| features->inheritedViewportScissor2D |= enabled->inheritedViewportScissor2D == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: { |
| const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(pNext); |
| features->texelBufferAlignment |= enabled->texelBufferAlignment == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT: { |
| const VkPhysicalDeviceDepthBiasControlFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDepthBiasControlFeaturesEXT*>(pNext); |
| features->depthBiasControl |= enabled->depthBiasControl == VK_TRUE; |
| features->leastRepresentableValueForceUnormRepresentation |= |
| enabled->leastRepresentableValueForceUnormRepresentation == VK_TRUE; |
| features->floatRepresentation |= enabled->floatRepresentation == VK_TRUE; |
| features->depthBiasExact |= enabled->depthBiasExact == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: { |
| const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT*>(pNext); |
| features->deviceMemoryReport |= enabled->deviceMemoryReport == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: { |
| const VkPhysicalDeviceCustomBorderColorFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCustomBorderColorFeaturesEXT*>(pNext); |
| features->customBorderColors |= enabled->customBorderColors == VK_TRUE; |
| features->customBorderColorWithoutFormat |= enabled->customBorderColorWithoutFormat == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT: { |
| const VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT*>(pNext); |
| features->textureCompressionASTC_3D |= enabled->textureCompressionASTC_3D == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV: { |
| const VkPhysicalDevicePresentBarrierFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDevicePresentBarrierFeaturesNV*>(pNext); |
| features->presentBarrier |= enabled->presentBarrier == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV: { |
| const VkPhysicalDeviceDiagnosticsConfigFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDiagnosticsConfigFeaturesNV*>(pNext); |
| features->diagnosticsConfig |= enabled->diagnosticsConfig == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM: { |
| const VkPhysicalDeviceQueuePerfHintFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceQueuePerfHintFeaturesQCOM*>(pNext); |
| features->queuePerfHint |= enabled->queuePerfHint == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM: { |
| const VkPhysicalDeviceImageProcessing3FeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImageProcessing3FeaturesQCOM*>(pNext); |
| features->imageGatherLinear |= enabled->imageGatherLinear == VK_TRUE; |
| features->imageGatherExtendedModes |= enabled->imageGatherExtendedModes == VK_TRUE; |
| features->blockMatchExtendedClampToEdge |= enabled->blockMatchExtendedClampToEdge == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM: { |
| const VkPhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM*>(pNext); |
| features->shaderMultipleWaitQueues |= enabled->shaderMultipleWaitQueues == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderSplitBarrierFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderSplitBarrierFeaturesEXT*>(pNext); |
| features->shaderSplitBarrier |= enabled->shaderSplitBarrier == VK_TRUE; |
| break; |
| } |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV: { |
| const VkPhysicalDeviceCudaKernelLaunchFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCudaKernelLaunchFeaturesNV*>(pNext); |
| features->cudaKernelLaunchFeatures |= enabled->cudaKernelLaunchFeatures == VK_TRUE; |
| break; |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM: { |
| const VkPhysicalDeviceTileShadingFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceTileShadingFeaturesQCOM*>(pNext); |
| features->tileShading |= enabled->tileShading == VK_TRUE; |
| features->tileShadingFragmentStage |= enabled->tileShadingFragmentStage == VK_TRUE; |
| features->tileShadingColorAttachments |= enabled->tileShadingColorAttachments == VK_TRUE; |
| features->tileShadingDepthAttachments |= enabled->tileShadingDepthAttachments == VK_TRUE; |
| features->tileShadingStencilAttachments |= enabled->tileShadingStencilAttachments == VK_TRUE; |
| features->tileShadingInputAttachments |= enabled->tileShadingInputAttachments == VK_TRUE; |
| features->tileShadingSampledAttachments |= enabled->tileShadingSampledAttachments == VK_TRUE; |
| features->tileShadingPerTileDraw |= enabled->tileShadingPerTileDraw == VK_TRUE; |
| features->tileShadingPerTileDispatch |= enabled->tileShadingPerTileDispatch == VK_TRUE; |
| features->tileShadingDispatchTile |= enabled->tileShadingDispatchTile == VK_TRUE; |
| features->tileShadingApron |= enabled->tileShadingApron == VK_TRUE; |
| features->tileShadingAnisotropicApron |= enabled->tileShadingAnisotropicApron == VK_TRUE; |
| features->tileShadingAtomicOps |= enabled->tileShadingAtomicOps == VK_TRUE; |
| features->tileShadingImageProcessing |= enabled->tileShadingImageProcessing == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT: { |
| const VkPhysicalDeviceDescriptorBufferFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDescriptorBufferFeaturesEXT*>(pNext); |
| features->descriptorBuffer |= enabled->descriptorBuffer == VK_TRUE; |
| features->descriptorBufferCaptureReplay |= enabled->descriptorBufferCaptureReplay == VK_TRUE; |
| features->descriptorBufferImageLayoutIgnored |= enabled->descriptorBufferImageLayoutIgnored == VK_TRUE; |
| features->descriptorBufferPushDescriptors |= enabled->descriptorBufferPushDescriptors == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: { |
| const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT*>(pNext); |
| features->graphicsPipelineLibrary |= enabled->graphicsPipelineLibrary == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD: { |
| const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD*>(pNext); |
| features->shaderEarlyAndLateFragmentTests |= enabled->shaderEarlyAndLateFragmentTests == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV: { |
| const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV*>(pNext); |
| features->fragmentShadingRateEnums |= enabled->fragmentShadingRateEnums == VK_TRUE; |
| features->supersampleFragmentShadingRates |= enabled->supersampleFragmentShadingRates == VK_TRUE; |
| features->noInvocationFragmentShadingRates |= enabled->noInvocationFragmentShadingRates == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV: { |
| const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV*>(pNext); |
| features->rayTracingMotionBlur |= enabled->rayTracingMotionBlur == VK_TRUE; |
| features->rayTracingMotionBlurPipelineTraceRaysIndirect |= |
| enabled->rayTracingMotionBlurPipelineTraceRaysIndirect == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: { |
| const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*>(pNext); |
| features->ycbcr2plane444Formats |= enabled->ycbcr2plane444Formats == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT: { |
| const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT*>(pNext); |
| features->fragmentDensityMapDeferred |= enabled->fragmentDensityMapDeferred == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: { |
| const VkPhysicalDeviceImageCompressionControlFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImageCompressionControlFeaturesEXT*>(pNext); |
| features->imageCompressionControl |= enabled->imageCompressionControl == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT: { |
| const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT*>(pNext); |
| features->attachmentFeedbackLoopLayout |= enabled->attachmentFeedbackLoopLayout == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: { |
| const VkPhysicalDevice4444FormatsFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDevice4444FormatsFeaturesEXT*>(pNext); |
| features->formatA4R4G4B4 |= enabled->formatA4R4G4B4 == VK_TRUE; |
| features->formatA4B4G4R4 |= enabled->formatA4B4G4R4 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT: { |
| const VkPhysicalDeviceFaultFeaturesEXT* enabled = reinterpret_cast<const VkPhysicalDeviceFaultFeaturesEXT*>(pNext); |
| features->deviceFault |= enabled->deviceFault == VK_TRUE; |
| features->deviceFaultVendorBinary |= enabled->deviceFaultVendorBinary == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT: { |
| const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT*>(pNext); |
| features->rasterizationOrderColorAttachmentAccess |= enabled->rasterizationOrderColorAttachmentAccess == VK_TRUE; |
| features->rasterizationOrderDepthAttachmentAccess |= enabled->rasterizationOrderDepthAttachmentAccess == VK_TRUE; |
| features->rasterizationOrderStencilAttachmentAccess |= |
| enabled->rasterizationOrderStencilAttachmentAccess == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT: { |
| const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT*>(pNext); |
| features->formatRgba10x6WithoutYCbCrSampler |= enabled->formatRgba10x6WithoutYCbCrSampler == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT: { |
| const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT*>(pNext); |
| features->mutableDescriptorType |= enabled->mutableDescriptorType == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT: { |
| const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT*>(pNext); |
| features->vertexInputDynamicState |= enabled->vertexInputDynamicState == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT: { |
| const VkPhysicalDeviceAddressBindingReportFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceAddressBindingReportFeaturesEXT*>(pNext); |
| features->reportAddressBinding |= enabled->reportAddressBinding == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: { |
| const VkPhysicalDeviceDepthClipControlFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDepthClipControlFeaturesEXT*>(pNext); |
| features->depthClipControl |= enabled->depthClipControl == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: { |
| const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT*>(pNext); |
| features->primitiveTopologyListRestart |= enabled->primitiveTopologyListRestart == VK_TRUE; |
| features->primitiveTopologyPatchListRestart |= enabled->primitiveTopologyPatchListRestart == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI: { |
| const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI* enabled = |
| reinterpret_cast<const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI*>(pNext); |
| features->subpassShading |= enabled->subpassShading == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI: { |
| const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI* enabled = |
| reinterpret_cast<const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI*>(pNext); |
| features->invocationMask |= enabled->invocationMask == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV: { |
| const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV*>(pNext); |
| features->externalMemoryRDMA |= enabled->externalMemoryRDMA == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT: { |
| const VkPhysicalDevicePipelinePropertiesFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDevicePipelinePropertiesFeaturesEXT*>(pNext); |
| features->pipelinePropertiesIdentifier |= enabled->pipelinePropertiesIdentifier == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT: { |
| const VkPhysicalDeviceFrameBoundaryFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceFrameBoundaryFeaturesEXT*>(pNext); |
| features->frameBoundary |= enabled->frameBoundary == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT: { |
| const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT*>(pNext); |
| features->multisampledRenderToSingleSampled |= enabled->multisampledRenderToSingleSampled == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: { |
| const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*>(pNext); |
| features->extendedDynamicState2 |= enabled->extendedDynamicState2 == VK_TRUE; |
| features->extendedDynamicState2LogicOp |= enabled->extendedDynamicState2LogicOp == VK_TRUE; |
| features->extendedDynamicState2PatchControlPoints |= enabled->extendedDynamicState2PatchControlPoints == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: { |
| const VkPhysicalDeviceColorWriteEnableFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceColorWriteEnableFeaturesEXT*>(pNext); |
| features->colorWriteEnable |= enabled->colorWriteEnable == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: { |
| const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT*>(pNext); |
| features->primitivesGeneratedQuery |= enabled->primitivesGeneratedQuery == VK_TRUE; |
| features->primitivesGeneratedQueryWithRasterizerDiscard |= |
| enabled->primitivesGeneratedQueryWithRasterizerDiscard == VK_TRUE; |
| features->primitivesGeneratedQueryWithNonZeroStreams |= |
| enabled->primitivesGeneratedQueryWithNonZeroStreams == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE: { |
| const VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE*>(pNext); |
| features->videoEncodeRgbConversion |= enabled->videoEncodeRgbConversion == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT: { |
| const VkPhysicalDeviceImageViewMinLodFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImageViewMinLodFeaturesEXT*>(pNext); |
| features->minLod |= enabled->minLod == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT: { |
| const VkPhysicalDeviceMultiDrawFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMultiDrawFeaturesEXT*>(pNext); |
| features->multiDraw |= enabled->multiDraw == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT: { |
| const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT*>(pNext); |
| features->image2DViewOf3D |= enabled->image2DViewOf3D == VK_TRUE; |
| features->sampler2DViewOf3D |= enabled->sampler2DViewOf3D == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderTileImageFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderTileImageFeaturesEXT*>(pNext); |
| features->shaderTileImageColorReadAccess |= enabled->shaderTileImageColorReadAccess == VK_TRUE; |
| features->shaderTileImageDepthReadAccess |= enabled->shaderTileImageDepthReadAccess == VK_TRUE; |
| features->shaderTileImageStencilReadAccess |= enabled->shaderTileImageStencilReadAccess == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT: { |
| const VkPhysicalDeviceOpacityMicromapFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceOpacityMicromapFeaturesEXT*>(pNext); |
| features->micromap |= enabled->micromap == VK_TRUE; |
| features->micromapCaptureReplay |= enabled->micromapCaptureReplay == VK_TRUE; |
| features->micromapHostCommands |= enabled->micromapHostCommands == VK_TRUE; |
| break; |
| } |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV: { |
| const VkPhysicalDeviceDisplacementMicromapFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDisplacementMicromapFeaturesNV*>(pNext); |
| features->displacementMicromap |= enabled->displacementMicromap == VK_TRUE; |
| break; |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI: { |
| const VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI* enabled = |
| reinterpret_cast<const VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI*>(pNext); |
| features->clustercullingShader |= enabled->clustercullingShader == VK_TRUE; |
| features->multiviewClusterCullingShader |= enabled->multiviewClusterCullingShader == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI: { |
| const VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI* enabled = |
| reinterpret_cast<const VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI*>(pNext); |
| features->clusterShadingRate |= enabled->clusterShadingRate == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT: { |
| const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT*>(pNext); |
| features->borderColorSwizzle |= enabled->borderColorSwizzle == VK_TRUE; |
| features->borderColorSwizzleFromImage |= enabled->borderColorSwizzleFromImage == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT: { |
| const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT*>(pNext); |
| features->pageableDeviceLocalMemory |= enabled->pageableDeviceLocalMemory == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM: { |
| const VkPhysicalDeviceSchedulingControlsFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceSchedulingControlsFeaturesARM*>(pNext); |
| features->schedulingControls |= enabled->schedulingControls == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT: { |
| const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT*>(pNext); |
| features->imageSlicedViewOf3D |= enabled->imageSlicedViewOf3D == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE: { |
| const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE*>(pNext); |
| features->descriptorSetHostMapping |= enabled->descriptorSetHostMapping == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: { |
| const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT*>(pNext); |
| features->nonSeamlessCubeMap |= enabled->nonSeamlessCubeMap == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM: { |
| const VkPhysicalDeviceRenderPassStripedFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRenderPassStripedFeaturesARM*>(pNext); |
| features->renderPassStriped |= enabled->renderPassStriped == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT: { |
| const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT*>(pNext); |
| features->fragmentDensityMapOffset |= enabled->fragmentDensityMapOffset == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV: { |
| const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV*>(pNext); |
| features->indirectCopy |= enabled->indirectCopy == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT: { |
| const VkPhysicalDeviceMemoryDecompressionFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMemoryDecompressionFeaturesEXT*>(pNext); |
| features->memoryDecompression |= enabled->memoryDecompression == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV: { |
| const VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV*>(pNext); |
| features->deviceGeneratedCompute |= enabled->deviceGeneratedCompute == VK_TRUE; |
| features->deviceGeneratedComputePipelines |= enabled->deviceGeneratedComputePipelines == VK_TRUE; |
| features->deviceGeneratedComputeCaptureReplay |= enabled->deviceGeneratedComputeCaptureReplay == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV: { |
| const VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV*>(pNext); |
| features->spheres |= enabled->spheres == VK_TRUE; |
| features->linearSweptSpheres |= enabled->linearSweptSpheres == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV: { |
| const VkPhysicalDeviceLinearColorAttachmentFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceLinearColorAttachmentFeaturesNV*>(pNext); |
| features->linearColorAttachment |= enabled->linearColorAttachment == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: { |
| const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT*>(pNext); |
| features->imageCompressionControlSwapchain |= enabled->imageCompressionControlSwapchain == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM: { |
| const VkPhysicalDeviceImageProcessingFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImageProcessingFeaturesQCOM*>(pNext); |
| features->textureSampleWeighted |= enabled->textureSampleWeighted == VK_TRUE; |
| features->textureBoxFilter |= enabled->textureBoxFilter == VK_TRUE; |
| features->textureBlockMatch |= enabled->textureBlockMatch == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT: { |
| const VkPhysicalDeviceNestedCommandBufferFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceNestedCommandBufferFeaturesEXT*>(pNext); |
| features->nestedCommandBuffer |= enabled->nestedCommandBuffer == VK_TRUE; |
| features->nestedCommandBufferRendering |= enabled->nestedCommandBufferRendering == VK_TRUE; |
| features->nestedCommandBufferSimultaneousUse |= enabled->nestedCommandBufferSimultaneousUse == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT: { |
| const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT*>(pNext); |
| features->extendedDynamicState3TessellationDomainOrigin |= |
| enabled->extendedDynamicState3TessellationDomainOrigin == VK_TRUE; |
| features->extendedDynamicState3DepthClampEnable |= enabled->extendedDynamicState3DepthClampEnable == VK_TRUE; |
| features->extendedDynamicState3PolygonMode |= enabled->extendedDynamicState3PolygonMode == VK_TRUE; |
| features->extendedDynamicState3RasterizationSamples |= |
| enabled->extendedDynamicState3RasterizationSamples == VK_TRUE; |
| features->extendedDynamicState3SampleMask |= enabled->extendedDynamicState3SampleMask == VK_TRUE; |
| features->extendedDynamicState3AlphaToCoverageEnable |= |
| enabled->extendedDynamicState3AlphaToCoverageEnable == VK_TRUE; |
| features->extendedDynamicState3AlphaToOneEnable |= enabled->extendedDynamicState3AlphaToOneEnable == VK_TRUE; |
| features->extendedDynamicState3LogicOpEnable |= enabled->extendedDynamicState3LogicOpEnable == VK_TRUE; |
| features->extendedDynamicState3ColorBlendEnable |= enabled->extendedDynamicState3ColorBlendEnable == VK_TRUE; |
| features->extendedDynamicState3ColorBlendEquation |= enabled->extendedDynamicState3ColorBlendEquation == VK_TRUE; |
| features->extendedDynamicState3ColorWriteMask |= enabled->extendedDynamicState3ColorWriteMask == VK_TRUE; |
| features->extendedDynamicState3RasterizationStream |= enabled->extendedDynamicState3RasterizationStream == VK_TRUE; |
| features->extendedDynamicState3ConservativeRasterizationMode |= |
| enabled->extendedDynamicState3ConservativeRasterizationMode == VK_TRUE; |
| features->extendedDynamicState3ExtraPrimitiveOverestimationSize |= |
| enabled->extendedDynamicState3ExtraPrimitiveOverestimationSize == VK_TRUE; |
| features->extendedDynamicState3DepthClipEnable |= enabled->extendedDynamicState3DepthClipEnable == VK_TRUE; |
| features->extendedDynamicState3SampleLocationsEnable |= |
| enabled->extendedDynamicState3SampleLocationsEnable == VK_TRUE; |
| features->extendedDynamicState3ColorBlendAdvanced |= enabled->extendedDynamicState3ColorBlendAdvanced == VK_TRUE; |
| features->extendedDynamicState3ProvokingVertexMode |= enabled->extendedDynamicState3ProvokingVertexMode == VK_TRUE; |
| features->extendedDynamicState3LineRasterizationMode |= |
| enabled->extendedDynamicState3LineRasterizationMode == VK_TRUE; |
| features->extendedDynamicState3LineStippleEnable |= enabled->extendedDynamicState3LineStippleEnable == VK_TRUE; |
| features->extendedDynamicState3DepthClipNegativeOneToOne |= |
| enabled->extendedDynamicState3DepthClipNegativeOneToOne == VK_TRUE; |
| features->extendedDynamicState3ViewportWScalingEnable |= |
| enabled->extendedDynamicState3ViewportWScalingEnable == VK_TRUE; |
| features->extendedDynamicState3ViewportSwizzle |= enabled->extendedDynamicState3ViewportSwizzle == VK_TRUE; |
| features->extendedDynamicState3CoverageToColorEnable |= |
| enabled->extendedDynamicState3CoverageToColorEnable == VK_TRUE; |
| features->extendedDynamicState3CoverageToColorLocation |= |
| enabled->extendedDynamicState3CoverageToColorLocation == VK_TRUE; |
| features->extendedDynamicState3CoverageModulationMode |= |
| enabled->extendedDynamicState3CoverageModulationMode == VK_TRUE; |
| features->extendedDynamicState3CoverageModulationTableEnable |= |
| enabled->extendedDynamicState3CoverageModulationTableEnable == VK_TRUE; |
| features->extendedDynamicState3CoverageModulationTable |= |
| enabled->extendedDynamicState3CoverageModulationTable == VK_TRUE; |
| features->extendedDynamicState3CoverageReductionMode |= |
| enabled->extendedDynamicState3CoverageReductionMode == VK_TRUE; |
| features->extendedDynamicState3RepresentativeFragmentTestEnable |= |
| enabled->extendedDynamicState3RepresentativeFragmentTestEnable == VK_TRUE; |
| features->extendedDynamicState3ShadingRateImageEnable |= |
| enabled->extendedDynamicState3ShadingRateImageEnable == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT: { |
| const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT*>(pNext); |
| features->subpassMergeFeedback |= enabled->subpassMergeFeedback == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM: { |
| const VkPhysicalDeviceTensorFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceTensorFeaturesARM*>(pNext); |
| features->tensorNonPacked |= enabled->tensorNonPacked == VK_TRUE; |
| features->shaderTensorAccess |= enabled->shaderTensorAccess == VK_TRUE; |
| features->shaderStorageTensorArrayDynamicIndexing |= enabled->shaderStorageTensorArrayDynamicIndexing == VK_TRUE; |
| features->shaderStorageTensorArrayNonUniformIndexing |= |
| enabled->shaderStorageTensorArrayNonUniformIndexing == VK_TRUE; |
| features->descriptorBindingStorageTensorUpdateAfterBind |= |
| enabled->descriptorBindingStorageTensorUpdateAfterBind == VK_TRUE; |
| features->tensors |= enabled->tensors == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM: { |
| const VkPhysicalDeviceDescriptorBufferTensorFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDescriptorBufferTensorFeaturesARM*>(pNext); |
| features->descriptorBufferTensorDescriptors |= enabled->descriptorBufferTensorDescriptors == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT*>(pNext); |
| features->shaderModuleIdentifier |= enabled->shaderModuleIdentifier == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV: { |
| const VkPhysicalDeviceOpticalFlowFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceOpticalFlowFeaturesNV*>(pNext); |
| features->opticalFlow |= enabled->opticalFlow == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT: { |
| const VkPhysicalDeviceLegacyDitheringFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceLegacyDitheringFeaturesEXT*>(pNext); |
| features->legacyDithering |= enabled->legacyDithering == VK_TRUE; |
| break; |
| } |
| #ifdef VK_USE_PLATFORM_ANDROID_KHR |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID: { |
| const VkPhysicalDeviceExternalFormatResolveFeaturesANDROID* enabled = |
| reinterpret_cast<const VkPhysicalDeviceExternalFormatResolveFeaturesANDROID*>(pNext); |
| features->externalFormatResolve |= enabled->externalFormatResolve == VK_TRUE; |
| break; |
| } |
| #endif // VK_USE_PLATFORM_ANDROID_KHR |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD: { |
| const VkPhysicalDeviceAntiLagFeaturesAMD* enabled = |
| reinterpret_cast<const VkPhysicalDeviceAntiLagFeaturesAMD*>(pNext); |
| features->antiLag |= enabled->antiLag == VK_TRUE; |
| break; |
| } |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX: { |
| const VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX*>(pNext); |
| features->denseGeometryFormat |= enabled->denseGeometryFormat == VK_TRUE; |
| break; |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderObjectFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderObjectFeaturesEXT*>(pNext); |
| features->shaderObject |= enabled->shaderObject == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM: { |
| const VkPhysicalDeviceTilePropertiesFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceTilePropertiesFeaturesQCOM*>(pNext); |
| features->tileProperties |= enabled->tileProperties == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC: { |
| const VkPhysicalDeviceAmigoProfilingFeaturesSEC* enabled = |
| reinterpret_cast<const VkPhysicalDeviceAmigoProfilingFeaturesSEC*>(pNext); |
| features->amigoProfiling |= enabled->amigoProfiling == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM: { |
| const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM*>(pNext); |
| features->multiviewPerViewViewports |= enabled->multiviewPerViewViewports == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV: { |
| const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV*>(pNext); |
| features->rayTracingInvocationReorder |= enabled->rayTracingInvocationReorder == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV: { |
| const VkPhysicalDeviceCooperativeVectorFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCooperativeVectorFeaturesNV*>(pNext); |
| features->cooperativeVector |= enabled->cooperativeVector == VK_TRUE; |
| features->cooperativeVectorTraining |= enabled->cooperativeVectorTraining == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV: { |
| const VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV*>(pNext); |
| features->extendedSparseAddressSpace |= enabled->extendedSparseAddressSpace == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT: { |
| const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT*>(pNext); |
| features->legacyVertexAttributes |= enabled->legacyVertexAttributes == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM: { |
| const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM*>(pNext); |
| features->shaderCoreBuiltins |= enabled->shaderCoreBuiltins == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT: { |
| const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT*>(pNext); |
| features->pipelineLibraryGroupHandles |= enabled->pipelineLibraryGroupHandles == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT: { |
| const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT*>(pNext); |
| features->dynamicRenderingUnusedAttachments |= enabled->dynamicRenderingUnusedAttachments == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM: { |
| const VkPhysicalDeviceDataGraphFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDataGraphFeaturesARM*>(pNext); |
| features->dataGraph |= enabled->dataGraph == VK_TRUE; |
| features->dataGraphUpdateAfterBind |= enabled->dataGraphUpdateAfterBind == VK_TRUE; |
| features->dataGraphSpecializationConstants |= enabled->dataGraphSpecializationConstants == VK_TRUE; |
| features->dataGraphDescriptorBuffer |= enabled->dataGraphDescriptorBuffer == VK_TRUE; |
| features->dataGraphShaderModule |= enabled->dataGraphShaderModule == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM: { |
| const VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM*>(pNext); |
| features->multiviewPerViewRenderAreas |= enabled->multiviewPerViewRenderAreas == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV: { |
| const VkPhysicalDevicePerStageDescriptorSetFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDevicePerStageDescriptorSetFeaturesNV*>(pNext); |
| features->perStageDescriptorSet |= enabled->perStageDescriptorSet == VK_TRUE; |
| features->dynamicPipelineLayout |= enabled->dynamicPipelineLayout == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM: { |
| const VkPhysicalDeviceImageProcessing2FeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImageProcessing2FeaturesQCOM*>(pNext); |
| features->textureBlockMatch2 |= enabled->textureBlockMatch2 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM: { |
| const VkPhysicalDeviceCubicWeightsFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCubicWeightsFeaturesQCOM*>(pNext); |
| features->selectableCubicWeights |= enabled->selectableCubicWeights == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM: { |
| const VkPhysicalDeviceYcbcrDegammaFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceYcbcrDegammaFeaturesQCOM*>(pNext); |
| features->ycbcrDegamma |= enabled->ycbcrDegamma == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM: { |
| const VkPhysicalDeviceCubicClampFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCubicClampFeaturesQCOM*>(pNext); |
| features->cubicRangeClamp |= enabled->cubicRangeClamp == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT: { |
| const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT*>(pNext); |
| features->attachmentFeedbackLoopDynamicState |= enabled->attachmentFeedbackLoopDynamicState == VK_TRUE; |
| break; |
| } |
| #ifdef VK_USE_PLATFORM_SCREEN_QNX |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX: { |
| const VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX* enabled = |
| reinterpret_cast<const VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX*>(pNext); |
| features->screenBufferImport |= enabled->screenBufferImport == VK_TRUE; |
| break; |
| } |
| #endif // VK_USE_PLATFORM_SCREEN_QNX |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV: { |
| const VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV*>(pNext); |
| features->descriptorPoolOverallocation |= enabled->descriptorPoolOverallocation == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM: { |
| const VkPhysicalDeviceTileMemoryHeapFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceTileMemoryHeapFeaturesQCOM*>(pNext); |
| features->tileMemoryHeap |= enabled->tileMemoryHeap == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV: { |
| const VkPhysicalDeviceRawAccessChainsFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRawAccessChainsFeaturesNV*>(pNext); |
| features->shaderRawAccessChains |= enabled->shaderRawAccessChains == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV: { |
| const VkPhysicalDeviceCommandBufferInheritanceFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCommandBufferInheritanceFeaturesNV*>(pNext); |
| features->commandBufferInheritance |= enabled->commandBufferInheritance == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV: { |
| const VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV*>(pNext); |
| features->shaderFloat16VectorAtomics |= enabled->shaderFloat16VectorAtomics == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT*>(pNext); |
| features->shaderReplicatedComposites |= enabled->shaderReplicatedComposites == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderFloat8FeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderFloat8FeaturesEXT*>(pNext); |
| features->shaderFloat8 |= enabled->shaderFloat8 == VK_TRUE; |
| features->shaderFloat8CooperativeMatrix |= enabled->shaderFloat8CooperativeMatrix == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV: { |
| const VkPhysicalDeviceRayTracingValidationFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRayTracingValidationFeaturesNV*>(pNext); |
| features->rayTracingValidation |= enabled->rayTracingValidation == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV: { |
| const VkPhysicalDeviceClusterAccelerationStructureFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceClusterAccelerationStructureFeaturesNV*>(pNext); |
| features->clusterAccelerationStructure |= enabled->clusterAccelerationStructure == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV: { |
| const VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV*>(pNext); |
| features->partitionedAccelerationStructure |= enabled->partitionedAccelerationStructure == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT: { |
| const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT*>(pNext); |
| features->deviceGeneratedCommands |= enabled->deviceGeneratedCommands == VK_TRUE; |
| features->dynamicGeneratedPipelineLayout |= enabled->dynamicGeneratedPipelineLayout == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA: { |
| const VkPhysicalDeviceImageAlignmentControlFeaturesMESA* enabled = |
| reinterpret_cast<const VkPhysicalDeviceImageAlignmentControlFeaturesMESA*>(pNext); |
| features->imageAlignmentControl |= enabled->imageAlignmentControl == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV: { |
| const VkPhysicalDevicePushConstantBankFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDevicePushConstantBankFeaturesNV*>(pNext); |
| features->pushConstantBank |= enabled->pushConstantBank == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT: { |
| const VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT*>(pNext); |
| features->rayTracingInvocationReorder |= enabled->rayTracingInvocationReorder == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT: { |
| const VkPhysicalDeviceDepthClampControlFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDepthClampControlFeaturesEXT*>(pNext); |
| features->depthClampControl |= enabled->depthClampControl == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI: { |
| const VkPhysicalDeviceHdrVividFeaturesHUAWEI* enabled = |
| reinterpret_cast<const VkPhysicalDeviceHdrVividFeaturesHUAWEI*>(pNext); |
| features->hdrVivid |= enabled->hdrVivid == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV: { |
| const VkPhysicalDeviceCooperativeMatrix2FeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCooperativeMatrix2FeaturesNV*>(pNext); |
| features->cooperativeMatrixWorkgroupScope |= enabled->cooperativeMatrixWorkgroupScope == VK_TRUE; |
| features->cooperativeMatrixFlexibleDimensions |= enabled->cooperativeMatrixFlexibleDimensions == VK_TRUE; |
| features->cooperativeMatrixReductions |= enabled->cooperativeMatrixReductions == VK_TRUE; |
| features->cooperativeMatrixConversions |= enabled->cooperativeMatrixConversions == VK_TRUE; |
| features->cooperativeMatrixPerElementOperations |= enabled->cooperativeMatrixPerElementOperations == VK_TRUE; |
| features->cooperativeMatrixTensorAddressing |= enabled->cooperativeMatrixTensorAddressing == VK_TRUE; |
| features->cooperativeMatrixBlockLoads |= enabled->cooperativeMatrixBlockLoads == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM: { |
| const VkPhysicalDevicePipelineOpacityMicromapFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDevicePipelineOpacityMicromapFeaturesARM*>(pNext); |
| features->pipelineOpacityMicromap |= enabled->pipelineOpacityMicromap == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_FEATURES_ARM: { |
| const VkPhysicalDevicePerformanceCountersByRegionFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDevicePerformanceCountersByRegionFeaturesARM*>(pNext); |
| features->performanceCountersByRegion |= enabled->performanceCountersByRegion == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM: { |
| const VkPhysicalDeviceShaderInstrumentationFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderInstrumentationFeaturesARM*>(pNext); |
| features->shaderInstrumentation |= enabled->shaderInstrumentation == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT: { |
| const VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT*>(pNext); |
| features->vertexAttributeRobustness |= enabled->vertexAttributeRobustness == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM: { |
| const VkPhysicalDeviceFormatPackFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceFormatPackFeaturesARM*>(pNext); |
| features->formatPack |= enabled->formatPack == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE: { |
| const VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE* enabled = |
| reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE*>(pNext); |
| features->fragmentDensityMapLayered |= enabled->fragmentDensityMapLayered == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV: { |
| const VkPhysicalDevicePresentMeteringFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDevicePresentMeteringFeaturesNV*>(pNext); |
| features->presentMetering |= enabled->presentMetering == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT: { |
| const VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT*>(pNext); |
| features->zeroInitializeDeviceMemory |= enabled->zeroInitializeDeviceMemory == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT: { |
| const VkPhysicalDeviceShader64BitIndexingFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShader64BitIndexingFeaturesEXT*>(pNext); |
| features->shader64BitIndexing |= enabled->shader64BitIndexing == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT: { |
| const VkPhysicalDeviceCustomResolveFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCustomResolveFeaturesEXT*>(pNext); |
| features->customResolve |= enabled->customResolve == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM: { |
| const VkPhysicalDeviceDataGraphModelFeaturesQCOM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDataGraphModelFeaturesQCOM*>(pNext); |
| features->dataGraphModel |= enabled->dataGraphModel == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM: { |
| const VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM*>(pNext); |
| features->dataGraphOpticalFlow |= enabled->dataGraphOpticalFlow == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderLongVectorFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderLongVectorFeaturesEXT*>(pNext); |
| features->longVector |= enabled->longVector == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC: { |
| const VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC* enabled = |
| reinterpret_cast<const VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC*>(pNext); |
| features->pipelineCacheIncrementalMode |= enabled->pipelineCacheIncrementalMode == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT*>(pNext); |
| features->shaderUniformBufferUnsizedArray |= enabled->shaderUniformBufferUnsizedArray == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV: { |
| const VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV*>(pNext); |
| features->computeOccupancyPriority |= enabled->computeOccupancyPriority == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT: { |
| const VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT*>(pNext); |
| features->shaderSubgroupPartitioned |= enabled->shaderSubgroupPartitioned == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE: { |
| const VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE* enabled = |
| reinterpret_cast<const VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE*>(pNext); |
| features->shaderMixedFloatDotProductFloat16AccFloat32 |= |
| enabled->shaderMixedFloatDotProductFloat16AccFloat32 == VK_TRUE; |
| features->shaderMixedFloatDotProductFloat16AccFloat16 |= |
| enabled->shaderMixedFloatDotProductFloat16AccFloat16 == VK_TRUE; |
| features->shaderMixedFloatDotProductBFloat16Acc |= enabled->shaderMixedFloatDotProductBFloat16Acc == VK_TRUE; |
| features->shaderMixedFloatDotProductFloat8AccFloat32 |= |
| enabled->shaderMixedFloatDotProductFloat8AccFloat32 == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC: { |
| const VkPhysicalDeviceThrottleHintFeaturesSEC* enabled = |
| reinterpret_cast<const VkPhysicalDeviceThrottleHintFeaturesSEC*>(pNext); |
| features->throttleHint |= enabled->throttleHint == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM: { |
| const VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM* enabled = |
| reinterpret_cast<const VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM*>(pNext); |
| features->dataGraphNeuralAcceleratorStatistics |= enabled->dataGraphNeuralAcceleratorStatistics == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT: { |
| const VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT*>(pNext); |
| features->primitiveRestartIndex |= enabled->primitiveRestartIndex == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_DECODE_VECTOR_FEATURES_NV: { |
| const VkPhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV* enabled = |
| reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV*>(pNext); |
| features->cooperativeMatrixDecodeVector |= enabled->cooperativeMatrixDecodeVector == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: { |
| const VkPhysicalDeviceAccelerationStructureFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceAccelerationStructureFeaturesKHR*>(pNext); |
| features->accelerationStructure |= enabled->accelerationStructure == VK_TRUE; |
| features->accelerationStructureCaptureReplay |= enabled->accelerationStructureCaptureReplay == VK_TRUE; |
| features->accelerationStructureIndirectBuild |= enabled->accelerationStructureIndirectBuild == VK_TRUE; |
| features->accelerationStructureHostCommands |= enabled->accelerationStructureHostCommands == VK_TRUE; |
| features->descriptorBindingAccelerationStructureUpdateAfterBind |= |
| enabled->descriptorBindingAccelerationStructureUpdateAfterBind == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: { |
| const VkPhysicalDeviceRayTracingPipelineFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRayTracingPipelineFeaturesKHR*>(pNext); |
| features->rayTracingPipeline |= enabled->rayTracingPipeline == VK_TRUE; |
| features->rayTracingPipelineShaderGroupHandleCaptureReplay |= |
| enabled->rayTracingPipelineShaderGroupHandleCaptureReplay == VK_TRUE; |
| features->rayTracingPipelineShaderGroupHandleCaptureReplayMixed |= |
| enabled->rayTracingPipelineShaderGroupHandleCaptureReplayMixed == VK_TRUE; |
| features->rayTracingPipelineTraceRaysIndirect |= enabled->rayTracingPipelineTraceRaysIndirect == VK_TRUE; |
| features->rayTraversalPrimitiveCulling |= enabled->rayTraversalPrimitiveCulling == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR: { |
| const VkPhysicalDeviceRayQueryFeaturesKHR* enabled = |
| reinterpret_cast<const VkPhysicalDeviceRayQueryFeaturesKHR*>(pNext); |
| features->rayQuery |= enabled->rayQuery == VK_TRUE; |
| break; |
| } |
| case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: { |
| const VkPhysicalDeviceMeshShaderFeaturesEXT* enabled = |
| reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesEXT*>(pNext); |
| features->taskShader |= enabled->taskShader == VK_TRUE; |
| features->meshShader |= enabled->meshShader == VK_TRUE; |
| features->multiviewMeshShader |= enabled->multiviewMeshShader == VK_TRUE; |
| features->primitiveFragmentShadingRateMeshShader |= enabled->primitiveFragmentShadingRateMeshShader == VK_TRUE; |
| features->meshShaderQueries |= enabled->meshShaderQueries == VK_TRUE; |
| break; |
| } |
| |
| default: |
| break; |
| } |
| } |
| |
| // Some older extensions were made without features, but equivalent features were |
| // added to the core spec when they were promoted. When those extensions are |
| // enabled, treat validation rules as if the corresponding feature is enabled. |
| for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { |
| vvl::Extension extension = GetExtension(pCreateInfo->ppEnabledExtensionNames[i]); |
| if (extension == vvl::Extension::_VK_EXT_descriptor_indexing) { |
| features->descriptorIndexing = true; |
| } |
| if (extension == vvl::Extension::_VK_EXT_sampler_filter_minmax) { |
| features->samplerFilterMinmax = true; |
| } |
| if (extension == vvl::Extension::_VK_EXT_shader_viewport_index_layer) { |
| features->shaderOutputViewportIndex = true; |
| features->shaderOutputLayer = true; |
| } |
| if (extension == vvl::Extension::_VK_KHR_draw_indirect_count) { |
| features->drawIndirectCount = true; |
| } |
| if (extension == vvl::Extension::_VK_KHR_sampler_mirror_clamp_to_edge) { |
| features->samplerMirrorClampToEdge = true; |
| } |
| if (extension == vvl::Extension::_VK_KHR_shader_draw_parameters) { |
| features->shaderDrawParameters = true; |
| } |
| } |
| |
| // texelBufferAlignment was not promoted to VkPhysicalDeviceVulkan13Features |
| // but the feature is automatically enabled. |
| // Setting the feature explicitly to 'false' doesn't change that |
| if (api_version >= VK_API_VERSION_1_3) { |
| features->texelBufferAlignment = true; |
| } |
| } |
| |
| // NOLINTEND |