Patches 1&2 are, Reviewed-by: Edward O'Callaghan <funfunc...@folklore1984.net>
On 03/15/2017 11:25 AM, Dave Airlie wrote: > From: Dave Airlie <airl...@redhat.com> > > This just aligns with how anv does it. > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/amd/vulkan/radv_formats.c | 76 > ++++++++++++++++++++++++++----------------- > 1 file changed, 46 insertions(+), 30 deletions(-) > > diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c > index 9b21e04..e4cc4ba 100644 > --- a/src/amd/vulkan/radv_formats.c > +++ b/src/amd/vulkan/radv_formats.c > @@ -1006,16 +1006,11 @@ void radv_GetPhysicalDeviceFormatProperties2KHR( > > &pFormatProperties->formatProperties); > } > > -VkResult radv_GetPhysicalDeviceImageFormatProperties( > - VkPhysicalDevice physicalDevice, > - VkFormat format, > - VkImageType type, > - VkImageTiling tiling, > - VkImageUsageFlags usage, > - VkImageCreateFlags createFlags, > - VkImageFormatProperties* pImageFormatProperties) > +static VkResult radv_get_image_format_properties(struct radv_physical_device > *physical_device, > + const > VkPhysicalDeviceImageFormatInfo2KHR *info, > + VkImageFormatProperties > *pImageFormatProperties) > + > { > - RADV_FROM_HANDLE(radv_physical_device, physical_device, physicalDevice); > VkFormatProperties format_props; > VkFormatFeatureFlags format_feature_flags; > VkExtent3D maxExtent; > @@ -1023,11 +1018,11 @@ VkResult radv_GetPhysicalDeviceImageFormatProperties( > uint32_t maxArraySize; > VkSampleCountFlags sampleCounts = VK_SAMPLE_COUNT_1_BIT; > > - radv_physical_device_get_format_properties(physical_device, format, > + radv_physical_device_get_format_properties(physical_device, > info->format, > &format_props); > - if (tiling == VK_IMAGE_TILING_LINEAR) { > + if (info->tiling == VK_IMAGE_TILING_LINEAR) { > format_feature_flags = format_props.linearTilingFeatures; > - } else if (tiling == VK_IMAGE_TILING_OPTIMAL) { > + } else if (info->tiling == VK_IMAGE_TILING_OPTIMAL) { > format_feature_flags = format_props.optimalTilingFeatures; > } else { > unreachable("bad VkImageTiling"); > @@ -1036,7 +1031,7 @@ VkResult radv_GetPhysicalDeviceImageFormatProperties( > if (format_feature_flags == 0) > goto unsupported; > > - switch (type) { > + switch (info->type) { > default: > unreachable("bad vkimage type\n"); > case VK_IMAGE_TYPE_1D: > @@ -1062,34 +1057,34 @@ VkResult radv_GetPhysicalDeviceImageFormatProperties( > break; > } > > - if (tiling == VK_IMAGE_TILING_OPTIMAL && > - type == VK_IMAGE_TYPE_2D && > + if (info->tiling == VK_IMAGE_TILING_OPTIMAL && > + info->type == VK_IMAGE_TYPE_2D && > (format_feature_flags & (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | > > VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)) && > - !(createFlags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) && > - !(usage & VK_IMAGE_USAGE_STORAGE_BIT)) { > + !(info->flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) && > + !(info->usage & VK_IMAGE_USAGE_STORAGE_BIT)) { > sampleCounts |= VK_SAMPLE_COUNT_2_BIT | VK_SAMPLE_COUNT_4_BIT | > VK_SAMPLE_COUNT_8_BIT; > } > > - if (usage & VK_IMAGE_USAGE_SAMPLED_BIT) { > + if (info->usage & VK_IMAGE_USAGE_SAMPLED_BIT) { > if (!(format_feature_flags & > VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)) { > goto unsupported; > } > } > > - if (usage & VK_IMAGE_USAGE_STORAGE_BIT) { > + if (info->usage & VK_IMAGE_USAGE_STORAGE_BIT) { > if (!(format_feature_flags & > VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT)) { > goto unsupported; > } > } > > - if (usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) { > + if (info->usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) { > if (!(format_feature_flags & > VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)) { > goto unsupported; > } > } > > - if (usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) { > + if (info->usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) { > if (!(format_feature_flags & > VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)) { > goto unsupported; > } > @@ -1120,18 +1115,39 @@ unsupported: > return VK_ERROR_FORMAT_NOT_SUPPORTED; > } > > +VkResult radv_GetPhysicalDeviceImageFormatProperties( > + VkPhysicalDevice physicalDevice, > + VkFormat format, > + VkImageType type, > + VkImageTiling tiling, > + VkImageUsageFlags usage, > + VkImageCreateFlags createFlags, > + VkImageFormatProperties* pImageFormatProperties) > +{ > + RADV_FROM_HANDLE(radv_physical_device, physical_device, physicalDevice); > + > + const VkPhysicalDeviceImageFormatInfo2KHR info = { > + .sType = > VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR, > + .pNext = NULL, > + .format = format, > + .type = type, > + .tiling = tiling, > + .usage = usage, > + .flags = createFlags, > + }; > + > + return radv_get_image_format_properties(physical_device, &info, > + pImageFormatProperties); > +} > + > VkResult radv_GetPhysicalDeviceImageFormatProperties2KHR( > VkPhysicalDevice physicalDevice, > - const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, > - VkImageFormatProperties2KHR *pImageFormatProperties) > + const VkPhysicalDeviceImageFormatInfo2KHR *base_info, > + VkImageFormatProperties2KHR *base_props) > { > - return radv_GetPhysicalDeviceImageFormatProperties(physicalDevice, > - > pImageFormatInfo->format, > - > pImageFormatInfo->type, > - > pImageFormatInfo->tiling, > - > pImageFormatInfo->usage, > - > pImageFormatInfo->flags, > - > &pImageFormatProperties->imageFormatProperties); > + RADV_FROM_HANDLE(radv_physical_device, physical_device, physicalDevice); > + return radv_get_image_format_properties(physical_device, base_info, > + > &base_props->imageFormatProperties); > } > > void radv_GetPhysicalDeviceSparseImageFormatProperties( >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev