+static void
+radv_get_physical_device_features_1_1(struct radv_physical_device *pdevice,
+ VkPhysicalDeviceVulkan11Features *f)
+{
+ assert(f->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES);
+
+ f->storageBuffer16BitAccess = true;
+ f->uniformAndStorageBuffer16BitAccess = true;
+ f->storagePushConstant16 = true;
+ f->storageInputOutput16 = pdevice->rad_info.has_packed_math_16bit && (LLVM_VERSION_MAJOR >= 9 || !pdevice->use_llvm);
+ f->multiview = true;
+ f->multiviewGeometryShader = true;
+ f->multiviewTessellationShader = true;
+ f->variablePointersStorageBuffer = true;
+ f->variablePointers = true;
+ f->protectedMemory = false;
+ f->samplerYcbcrConversion = true;
+ f->shaderDrawParameters = true;
+}
+
+static void
+radv_get_physical_device_features_1_2(struct radv_physical_device *pdevice,
+ VkPhysicalDeviceVulkan12Features *f)
+{
+ assert(f->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES);
+
+ f->samplerMirrorClampToEdge = true;
+ f->drawIndirectCount = true;
+ f->storageBuffer8BitAccess = true;
+ f->uniformAndStorageBuffer8BitAccess = true;
+ f->storagePushConstant8 = true;
+ f->shaderBufferInt64Atomics = LLVM_VERSION_MAJOR >= 9 || !pdevice->use_llvm;
+ f->shaderSharedInt64Atomics = LLVM_VERSION_MAJOR >= 9 || !pdevice->use_llvm;
+ f->shaderFloat16 = pdevice->rad_info.has_packed_math_16bit;
+ f->shaderInt8 = true;
+
+ f->descriptorIndexing = true;
+ f->shaderInputAttachmentArrayDynamicIndexing = true;
+ f->shaderUniformTexelBufferArrayDynamicIndexing = true;
+ f->shaderStorageTexelBufferArrayDynamicIndexing = true;
+ f->shaderUniformBufferArrayNonUniformIndexing = true;
+ f->shaderSampledImageArrayNonUniformIndexing = true;
+ f->shaderStorageBufferArrayNonUniformIndexing = true;
+ f->shaderStorageImageArrayNonUniformIndexing = true;
+ f->shaderInputAttachmentArrayNonUniformIndexing = true;
+ f->shaderUniformTexelBufferArrayNonUniformIndexing = true;
+ f->shaderStorageTexelBufferArrayNonUniformIndexing = true;
+ f->descriptorBindingUniformBufferUpdateAfterBind = true;
+ f->descriptorBindingSampledImageUpdateAfterBind = true;
+ f->descriptorBindingStorageImageUpdateAfterBind = true;
+ f->descriptorBindingStorageBufferUpdateAfterBind = true;
+ f->descriptorBindingUniformTexelBufferUpdateAfterBind = true;
+ f->descriptorBindingStorageTexelBufferUpdateAfterBind = true;
+ f->descriptorBindingUpdateUnusedWhilePending = true;
+ f->descriptorBindingPartiallyBound = true;
+ f->descriptorBindingVariableDescriptorCount = true;
+ f->runtimeDescriptorArray = true;
+
+ f->samplerFilterMinmax = true;
+ f->scalarBlockLayout = pdevice->rad_info.chip_class >= GFX7;
+ f->imagelessFramebuffer = true;
+ f->uniformBufferStandardLayout = true;
+ f->shaderSubgroupExtendedTypes = true;
+ f->separateDepthStencilLayouts = true;
+ f->hostQueryReset = true;
+ f->timelineSemaphore = pdevice->rad_info.has_syncobj_wait_for_submit;
+ f->bufferDeviceAddress = true;
+ f->bufferDeviceAddressCaptureReplay = false;
+ f->bufferDeviceAddressMultiDevice = false;
+ f->vulkanMemoryModel = false;
+ f->vulkanMemoryModelDeviceScope = false;
+ f->vulkanMemoryModelAvailabilityVisibilityChains = false;
+ f->shaderOutputViewportIndex = true;
+ f->shaderOutputLayer = true;
+ f->subgroupBroadcastDynamicId = true;
+}
+