radv: get rid of bunch of KHR suffixes
[mesa.git] / src / amd / vulkan / radv_formats.c
index ad06c9e996431ce3a82e2b19e255823daaa728eb..ee408b55334cc4e5e3a15658a7b37d5fe814dd87 100644 (file)
@@ -639,8 +639,8 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
                        tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT;
                        tiled |= VK_FORMAT_FEATURE_BLIT_SRC_BIT |
                                 VK_FORMAT_FEATURE_BLIT_DST_BIT;
-                       tiled |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR |
-                                VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR;
+                       tiled |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT |
+                                VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
 
                        if (radv_is_filter_minmax_format_supported(format))
                                 tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT;
@@ -667,6 +667,13 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
                                linear |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
                                tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
                        }
+
+                       /* Don't support blitting for R32G32B32 formats. */
+                       if (format == VK_FORMAT_R32G32B32_SFLOAT ||
+                           format == VK_FORMAT_R32G32B32_UINT ||
+                           format == VK_FORMAT_R32G32B32_SINT) {
+                               linear &= ~VK_FORMAT_FEATURE_BLIT_SRC_BIT;
+                       }
                }
                if (radv_is_colorbuffer_format_supported(format, &blendable)) {
                        linear |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT;
@@ -677,8 +684,8 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
                        }
                }
                if (tiled && !scaled) {
-                       tiled |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR |
-                                VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR;
+                       tiled |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT |
+                                VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
                }
 
                /* Tiled formatting does not support NPOT pixel sizes */
@@ -687,8 +694,8 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
        }
 
        if (linear && !scaled) {
-               linear |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR |
-                         VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR;
+               linear |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT |
+                         VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
        }
 
        if (format == VK_FORMAT_R32_UINT || format == VK_FORMAT_R32_SINT) {
@@ -1019,7 +1026,7 @@ void radv_GetPhysicalDeviceFormatProperties(
 void radv_GetPhysicalDeviceFormatProperties2(
        VkPhysicalDevice                            physicalDevice,
        VkFormat                                    format,
-       VkFormatProperties2KHR*                         pFormatProperties)
+       VkFormatProperties2*                        pFormatProperties)
 {
        RADV_FROM_HANDLE(radv_physical_device, physical_device, physicalDevice);
 
@@ -1029,7 +1036,7 @@ void radv_GetPhysicalDeviceFormatProperties2(
 }
 
 static VkResult radv_get_image_format_properties(struct radv_physical_device *physical_device,
-                                                const VkPhysicalDeviceImageFormatInfo2KHR *info,
+                                                const VkPhysicalDeviceImageFormatInfo2 *info,
                                                 VkImageFormatProperties *pImageFormatProperties)
 
 {
@@ -1086,11 +1093,36 @@ static VkResult radv_get_image_format_properties(struct radv_physical_device *ph
            info->type == VK_IMAGE_TYPE_2D &&
            (format_feature_flags & (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
                                     VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)) &&
-           !(info->flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) &&
-           !(info->usage & VK_IMAGE_USAGE_STORAGE_BIT)) {
+           !(info->flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT)) {
                sampleCounts |= VK_SAMPLE_COUNT_2_BIT | VK_SAMPLE_COUNT_4_BIT | VK_SAMPLE_COUNT_8_BIT;
        }
 
+       if (info->tiling == VK_IMAGE_TILING_LINEAR &&
+           (info->format == VK_FORMAT_R32G32B32_SFLOAT ||
+            info->format == VK_FORMAT_R32G32B32_SINT ||
+            info->format == VK_FORMAT_R32G32B32_UINT)) {
+               /* R32G32B32 is a weird format and the driver currently only
+                * supports the barely minimum.
+                * TODO: Implement more if we really need to.
+                */
+               if (info->type == VK_IMAGE_TYPE_3D)
+                       goto unsupported;
+               maxArraySize = 1;
+               maxMipLevels = 1;
+       }
+
+
+       /* We can't create 3d compressed 128bpp images that can be rendered to on GFX9 */
+       if (physical_device->rad_info.chip_class >= GFX9 &&
+           info->type == VK_IMAGE_TYPE_3D &&
+           vk_format_get_blocksizebits(info->format) == 128 &&
+           vk_format_is_compressed(info->format) &&
+           (info->flags & VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT) &&
+           ((info->flags & VK_IMAGE_CREATE_EXTENDED_USAGE_BIT) ||
+            (info->usage & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT))) {
+               goto unsupported;
+       }
+
        if (info->usage & VK_IMAGE_USAGE_SAMPLED_BIT) {
                if (!(format_feature_flags & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)) {
                        goto unsupported;
@@ -1170,8 +1202,8 @@ VkResult radv_GetPhysicalDeviceImageFormatProperties(
 {
        RADV_FROM_HANDLE(radv_physical_device, physical_device, physicalDevice);
 
-       const VkPhysicalDeviceImageFormatInfo2KHR info = {
-               .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
+       const VkPhysicalDeviceImageFormatInfo2 info = {
+               .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
                .pNext = NULL,
                .format = format,
                .type = type,
@@ -1185,20 +1217,20 @@ VkResult radv_GetPhysicalDeviceImageFormatProperties(
 }
 
 static void
-get_external_image_format_properties(const VkPhysicalDeviceImageFormatInfo2KHR *pImageFormatInfo,
-                                    VkExternalMemoryHandleTypeFlagBitsKHR handleType,
-                                    VkExternalMemoryPropertiesKHR *external_properties)
+get_external_image_format_properties(const VkPhysicalDeviceImageFormatInfo2 *pImageFormatInfo,
+                                    VkExternalMemoryHandleTypeFlagBits handleType,
+                                    VkExternalMemoryProperties *external_properties)
 {
-       VkExternalMemoryFeatureFlagBitsKHR flags = 0;
-       VkExternalMemoryHandleTypeFlagsKHR export_flags = 0;
-       VkExternalMemoryHandleTypeFlagsKHR compat_flags = 0;
+       VkExternalMemoryFeatureFlagBits flags = 0;
+       VkExternalMemoryHandleTypeFlags export_flags = 0;
+       VkExternalMemoryHandleTypeFlags compat_flags = 0;
        switch (handleType) {
-       case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR:
+       case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT:
        case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT:
                switch (pImageFormatInfo->type) {
                case VK_IMAGE_TYPE_2D:
-                       flags = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR|VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR|VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR;
-                       compat_flags = export_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR |
+                       flags = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT|VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT|VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT;
+                       compat_flags = export_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT |
                                                      VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT;
                        break;
                default:
@@ -1206,14 +1238,14 @@ get_external_image_format_properties(const VkPhysicalDeviceImageFormatInfo2KHR *
                }
                break;
        case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT:
-               flags = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR;
+               flags = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT;
                compat_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT;
                break;
        default:
                break;
        }
 
-       *external_properties = (VkExternalMemoryPropertiesKHR) {
+       *external_properties = (VkExternalMemoryProperties) {
                .externalMemoryFeatures = flags,
                .exportFromImportedHandleTypes = export_flags,
                .compatibleHandleTypes = compat_flags,
@@ -1222,12 +1254,12 @@ get_external_image_format_properties(const VkPhysicalDeviceImageFormatInfo2KHR *
 
 VkResult radv_GetPhysicalDeviceImageFormatProperties2(
        VkPhysicalDevice                            physicalDevice,
-       const VkPhysicalDeviceImageFormatInfo2KHR  *base_info,
-       VkImageFormatProperties2KHR                *base_props)
+       const VkPhysicalDeviceImageFormatInfo2     *base_info,
+       VkImageFormatProperties2                   *base_props)
 {
        RADV_FROM_HANDLE(radv_physical_device, physical_device, physicalDevice);
-       const VkPhysicalDeviceExternalImageFormatInfoKHR *external_info = NULL;
-       VkExternalImageFormatPropertiesKHR *external_props = NULL;
+       const VkPhysicalDeviceExternalImageFormatInfo *external_info = NULL;
+       VkExternalImageFormatProperties *external_props = NULL;
        VkResult result;
 
        result = radv_get_image_format_properties(physical_device, base_info,
@@ -1238,7 +1270,7 @@ VkResult radv_GetPhysicalDeviceImageFormatProperties2(
           /* Extract input structs */
        vk_foreach_struct_const(s, base_info->pNext) {
                switch (s->sType) {
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR:
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:
                        external_info = (const void *) s;
                        break;
                default:
@@ -1249,7 +1281,7 @@ VkResult radv_GetPhysicalDeviceImageFormatProperties2(
        /* Extract output structs */
        vk_foreach_struct(s, base_props->pNext) {
                switch (s->sType) {
-               case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR:
+               case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:
                        external_props = (void *) s;
                        break;
                default:
@@ -1265,7 +1297,7 @@ VkResult radv_GetPhysicalDeviceImageFormatProperties2(
         */
        if (external_info && external_info->handleType != 0) {
                switch (external_info->handleType) {
-               case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR:
+               case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT:
                case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT:
                case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT:
                        get_external_image_format_properties(base_info, external_info->handleType,
@@ -1319,9 +1351,9 @@ void radv_GetPhysicalDeviceSparseImageFormatProperties(
 
 void radv_GetPhysicalDeviceSparseImageFormatProperties2(
        VkPhysicalDevice                            physicalDevice,
-       const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
+       const VkPhysicalDeviceSparseImageFormatInfo2 *pFormatInfo,
        uint32_t                                   *pPropertyCount,
-       VkSparseImageFormatProperties2KHR*          pProperties)
+       VkSparseImageFormatProperties2             *pProperties)
 {
        /* Sparse images are not yet supported. */
        *pPropertyCount = 0;
@@ -1329,28 +1361,28 @@ void radv_GetPhysicalDeviceSparseImageFormatProperties2(
 
 void radv_GetPhysicalDeviceExternalBufferProperties(
        VkPhysicalDevice                            physicalDevice,
-       const VkPhysicalDeviceExternalBufferInfoKHR *pExternalBufferInfo,
-       VkExternalBufferPropertiesKHR               *pExternalBufferProperties)
+       const VkPhysicalDeviceExternalBufferInfo    *pExternalBufferInfo,
+       VkExternalBufferProperties                  *pExternalBufferProperties)
 {
-       VkExternalMemoryFeatureFlagBitsKHR flags = 0;
-       VkExternalMemoryHandleTypeFlagsKHR export_flags = 0;
-       VkExternalMemoryHandleTypeFlagsKHR compat_flags = 0;
+       VkExternalMemoryFeatureFlagBits flags = 0;
+       VkExternalMemoryHandleTypeFlags export_flags = 0;
+       VkExternalMemoryHandleTypeFlags compat_flags = 0;
        switch(pExternalBufferInfo->handleType) {
-       case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR:
+       case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT:
        case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT:
-               flags = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR |
-                       VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR;
-               compat_flags = export_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR |
+               flags = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT |
+                       VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT;
+               compat_flags = export_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT |
                                              VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT;
                break;
        case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT:
-               flags = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR;
+               flags = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT;
                compat_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT;
                break;
        default:
                break;
        }
-       pExternalBufferProperties->externalMemoryProperties = (VkExternalMemoryPropertiesKHR) {
+       pExternalBufferProperties->externalMemoryProperties = (VkExternalMemoryProperties) {
                .externalMemoryFeatures = flags,
                .exportFromImportedHandleTypes = export_flags,
                .compatibleHandleTypes = compat_flags,