mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 06:40:11 +01:00
v3dv: handle Vulkan 1.1 feature and property queries
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11316>
This commit is contained in:
parent
1a773c0009
commit
42b351370d
1 changed files with 97 additions and 19 deletions
|
|
@ -1010,6 +1010,22 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||
{
|
||||
v3dv_GetPhysicalDeviceFeatures(physicalDevice, &pFeatures->features);
|
||||
|
||||
VkPhysicalDeviceVulkan11Features vk11 = {
|
||||
.storageBuffer16BitAccess = false,
|
||||
.uniformAndStorageBuffer16BitAccess = false,
|
||||
.storagePushConstant16 = false,
|
||||
.storageInputOutput16 = false,
|
||||
.multiview = false,
|
||||
.multiviewGeometryShader = false,
|
||||
.multiviewTessellationShader = false,
|
||||
.variablePointersStorageBuffer = true,
|
||||
/* FIXME: this needs support for non-constant index on UBO/SSBO */
|
||||
.variablePointers = false,
|
||||
.protectedMemory = false,
|
||||
.samplerYcbcrConversion = false,
|
||||
.shaderDrawParameters = false,
|
||||
};
|
||||
|
||||
vk_foreach_struct(ext, pFeatures->pNext) {
|
||||
switch (ext->sType) {
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR: {
|
||||
|
|
@ -1025,15 +1041,53 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||
features->privateData = true;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
|
||||
VkPhysicalDeviceVariablePointersFeatures *features = (void *) ext;
|
||||
features->variablePointersStorageBuffer = true;
|
||||
/* FIXME: for this we need to support non-constant indexing on
|
||||
* UBO/SSBO.
|
||||
*/
|
||||
features->variablePointers = false;
|
||||
|
||||
/* Vulkan 1.1 */
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
|
||||
VkPhysicalDeviceVulkan11Features *features =
|
||||
(VkPhysicalDeviceVulkan11Features *)ext;
|
||||
memcpy(features, &vk11, sizeof(VkPhysicalDeviceVulkan11Features));
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
|
||||
VkPhysicalDevice16BitStorageFeatures *features = (void *) ext;
|
||||
features->storageBuffer16BitAccess = vk11.storageBuffer16BitAccess;
|
||||
features->uniformAndStorageBuffer16BitAccess =
|
||||
vk11.uniformAndStorageBuffer16BitAccess;
|
||||
features->storagePushConstant16 = vk11.storagePushConstant16;
|
||||
features->storageInputOutput16 = vk11.storageInputOutput16;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
|
||||
VkPhysicalDeviceMultiviewFeatures *features = (void *) ext;
|
||||
features->multiview = vk11.multiview;
|
||||
features->multiviewGeometryShader = vk11.multiviewGeometryShader;
|
||||
features->multiviewTessellationShader = vk11.multiviewTessellationShader;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
|
||||
VkPhysicalDeviceProtectedMemoryFeatures *features = (void *) ext;
|
||||
features->protectedMemory = vk11.protectedMemory;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
|
||||
VkPhysicalDeviceSamplerYcbcrConversionFeatures *features = (void *) ext;
|
||||
features->samplerYcbcrConversion = vk11.samplerYcbcrConversion;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
|
||||
VkPhysicalDeviceShaderDrawParametersFeatures *features = (void *) ext;
|
||||
features->shaderDrawParameters = vk11.shaderDrawParameters;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
|
||||
VkPhysicalDeviceVariablePointersFeatures *features = (void *) ext;
|
||||
features->variablePointersStorageBuffer =
|
||||
vk11.variablePointersStorageBuffer;
|
||||
features->variablePointers = vk11.variablePointers;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
v3dv_debug_ignored_stype(ext->sType);
|
||||
break;
|
||||
|
|
@ -1291,18 +1345,6 @@ v3dv_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
|
|||
id_props->deviceLUIDValid = false;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:
|
||||
/* Do nothing, not even logging. This is a non-PCI device, so we will
|
||||
* never provide this extension.
|
||||
*/
|
||||
break;
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
|
||||
VkPhysicalDevicePointClippingProperties *props =
|
||||
(VkPhysicalDevicePointClippingProperties *)ext;
|
||||
props->pointClippingBehavior =
|
||||
VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: {
|
||||
VkPhysicalDeviceMaintenance3Properties *props =
|
||||
(VkPhysicalDeviceMaintenance3Properties *)ext;
|
||||
|
|
@ -1326,6 +1368,42 @@ v3dv_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
|
|||
props->maxMemoryAllocationSize = MAX_MEMORY_ALLOCATION_SIZE;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: {
|
||||
VkPhysicalDeviceMultiviewProperties *props =
|
||||
(VkPhysicalDeviceMultiviewProperties *)ext;
|
||||
props->maxMultiviewViewCount = 1;
|
||||
/* This assumes that the multiview implementation uses instancing */
|
||||
props->maxMultiviewInstanceIndex =
|
||||
(UINT32_MAX / props->maxMultiviewViewCount) - 1;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:
|
||||
/* Do nothing, not even logging. This is a non-PCI device, so we will
|
||||
* never provide this extension.
|
||||
*/
|
||||
break;
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
|
||||
VkPhysicalDevicePointClippingProperties *props =
|
||||
(VkPhysicalDevicePointClippingProperties *)ext;
|
||||
props->pointClippingBehavior =
|
||||
VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: {
|
||||
VkPhysicalDeviceProtectedMemoryProperties *props =
|
||||
(VkPhysicalDeviceProtectedMemoryProperties *)ext;
|
||||
props->protectedNoFault = false;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: {
|
||||
VkPhysicalDeviceSubgroupProperties *props =
|
||||
(VkPhysicalDeviceSubgroupProperties *)ext;
|
||||
props->subgroupSize = 1;
|
||||
props->supportedStages = VK_SHADER_STAGE_COMPUTE_BIT;
|
||||
props->supportedOperations = VK_SUBGROUP_FEATURE_BASIC_BIT;
|
||||
props->quadOperationsInAllStages = false;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
v3dv_debug_ignored_stype(ext->sType);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue