radv: Handle UNDEFINED format in image format list.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sat, 8 Jun 2019 21:51:16 +0000 (23:51 +0200)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Mon, 10 Jun 2019 22:21:16 +0000 (22:21 +0000)
Was watching a presentation on YT where this was used and it turns
out it is not invalid.

The only case it is actually valid as format in the creation of an
image or image view is with Android Hardware Buffers which have
their format specified externally.

So we can just ignore all entries with VK_FORMAT_UNDEFINED.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/amd/vulkan/radv_image.c

index 777af25445cfd5b603ade82a568df38deef7d4b4..131b6356c197f32589a147a55fc296d0e3355ca1 100644 (file)
@@ -109,6 +109,9 @@ radv_use_tc_compat_htile_for_image(struct radv_device *device,
                         * one format with everything else.
                         */
                        for (unsigned i = 0; i < format_list->viewFormatCount; ++i) {
+                               if (format_list->pViewFormats[i] == VK_FORMAT_UNDEFINED)
+                                       continue;
+
                                if (pCreateInfo->format != format_list->pViewFormats[i])
                                        return false;
                        }
@@ -200,6 +203,9 @@ radv_use_dcc_for_image(struct radv_device *device,
                        /* compatibility is transitive, so we only need to check
                         * one format with everything else. */
                        for (unsigned i = 0; i < format_list->viewFormatCount; ++i) {
+                               if (format_list->pViewFormats[i] == VK_FORMAT_UNDEFINED)
+                                       continue;
+
                                if (!radv_dcc_formats_compatible(pCreateInfo->format,
                                                                 format_list->pViewFormats[i]))
                                        dcc_compatible_formats = false;