[Mesa-dev] [PATCH 1/2] radv/formats: reverse how the image format properties KHR2 is handled
Edward O'Callaghan
funfunctor at folklore1984.net
Mon Mar 27 02:46:29 UTC 2017
Patches 1&2 are,
Reviewed-by: Edward O'Callaghan <funfunctor at folklore1984.net>
On 03/15/2017 11:25 AM, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> This just aligns with how anv does it.
>
> Signed-off-by: Dave Airlie <airlied at 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(
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170327/a2cfded3/attachment.sig>
More information about the mesa-dev
mailing list