Module: Mesa
Branch: master
Commit: 4fb6c051c9edd3d4c4f0f2ce497e0b051df6c676
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4fb6c051c9edd3d4c4f0f2ce497e0b051df6c676

Author: Jason Ekstrand <[email protected]>
Date:   Thu Feb  4 00:58:26 2021 -0600

anv: Move vk_format helpers to common code

The Android ones we put in anv_android.c.  Maybe one day we'll want a
vk_android.h to put some common Android stuff but, for now, let's keep
it contained to ANV's android code.

Reviewed-by: Eric Anholt <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8857>

---

 src/amd/vulkan/radv_cmd_buffer.c     |  10 +-
 src/amd/vulkan/radv_formats.c        |   4 +-
 src/amd/vulkan/radv_pipeline.c       |  16 ++--
 src/amd/vulkan/radv_private.h        |   4 +-
 src/amd/vulkan/vk_format.h           |  71 --------------
 src/broadcom/vulkan/vk_format_info.h |  79 ----------------
 src/freedreno/vulkan/vk_format.h     |   8 --
 src/intel/Makefile.sources           |   3 +-
 src/intel/vulkan/anv_android.c       |  63 +++++++++++++
 src/intel/vulkan/anv_cmd_buffer.c    |   1 -
 src/intel/vulkan/anv_formats.c       |   1 -
 src/intel/vulkan/anv_image.c         |   2 +-
 src/intel/vulkan/anv_pass.c          |   2 +-
 src/intel/vulkan/anv_wsi.c           |   1 -
 src/intel/vulkan/anv_wsi_display.c   |   1 -
 src/intel/vulkan/gen7_cmd_buffer.c   |   2 +-
 src/intel/vulkan/genX_cmd_buffer.c   |   2 +-
 src/intel/vulkan/genX_pipeline.c     |   2 +-
 src/intel/vulkan/meson.build         |   1 -
 src/intel/vulkan/vk_format_info.h    | 174 -----------------------------------
 src/vulkan/util/vk_format.c          |  53 +++++++++++
 src/vulkan/util/vk_format.h          |  31 +++++++
 22 files changed, 170 insertions(+), 361 deletions(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 774732f8274..5f811cb3e20 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -3281,7 +3281,7 @@ radv_image_is_pipe_misaligned(const struct radv_device 
*device,
                if (rad_info->chip_class >= GFX10_3) {
                        log2_bpp_and_samples = log2_bpp + log2_samples;
                } else {
-                       if (vk_format_is_depth(image->vk_format) &&
+                       if (vk_format_has_depth(image->vk_format) &&
                            image->info.array_size >= 8) {
                                log2_bpp = 2;
                        }
@@ -3292,7 +3292,7 @@ radv_image_is_pipe_misaligned(const struct radv_device 
*device,
                unsigned num_pipes = 
G_0098F8_NUM_PIPES(rad_info->gb_addr_config);
                int overlap = MAX2(0, log2_bpp_and_samples + num_pipes - 8);
 
-               if (vk_format_is_depth(image->vk_format)) {
+               if (vk_format_has_depth(image->vk_format)) {
                        if (radv_image_is_tc_compat_htile(image) && overlap) {
                                return true;
                        }
@@ -3325,7 +3325,7 @@ radv_image_is_l2_coherent(const struct radv_device 
*device, const struct radv_im
                if (image->info.samples == 1 &&
                    (image->usage & (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
                                     
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)) &&
-                   !vk_format_is_stencil(image->vk_format)) {
+                   !vk_format_has_stencil(image->vk_format)) {
                        /* Single-sample color and single-sample depth
                         * (not stencil) are coherent with shaders on
                         * GFX9.
@@ -6128,7 +6128,7 @@ static void radv_initialize_htile(struct radv_cmd_buffer 
*cmd_buffer,
 
        state->flush_bits |= radv_clear_htile(cmd_buffer, image, range, 
htile_value);
 
-       if (vk_format_is_stencil(image->vk_format))
+       if (vk_format_has_stencil(image->vk_format))
                aspects |= VK_IMAGE_ASPECT_STENCIL_BIT;
 
        radv_set_ds_clear_metadata(cmd_buffer, image, range, value, aspects);
@@ -6444,7 +6444,7 @@ static void radv_handle_image_transition(struct 
radv_cmd_buffer *cmd_buffer,
                radv_image_queue_family_mask(image, dst_family,
                                             cmd_buffer->queue_family_index);
 
-       if (vk_format_is_depth(image->vk_format)) {
+       if (vk_format_has_depth(image->vk_format)) {
                radv_handle_depth_image_transition(cmd_buffer, image,
                                                   src_layout, src_render_loop,
                                                   dst_layout, dst_render_loop,
diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c
index 4161c6bad96..050b9e4995a 100644
--- a/src/amd/vulkan/radv_formats.c
+++ b/src/amd/vulkan/radv_formats.c
@@ -718,11 +718,11 @@ radv_physical_device_get_format_properties(struct 
radv_physical_device *physical
                        if (radv_is_filter_minmax_format_supported(format))
                                 tiled |= 
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT;
 
-                       if (vk_format_is_depth(format))
+                       if (vk_format_has_depth(format))
                                tiled |= 
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
 
                        /* Don't support blitting surfaces with depth/stencil. 
*/
-                       if (vk_format_is_depth(format) && 
vk_format_is_stencil(format))
+                       if (vk_format_has_depth(format) && 
vk_format_has_stencil(format))
                                tiled &= ~VK_FORMAT_FEATURE_BLIT_DST_BIT;
 
                        /* Don't support linear depth surfaces */
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 364f8cd7eba..f01c36c5e84 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -1008,7 +1008,7 @@ radv_pipeline_out_of_order_rast(struct radv_pipeline 
*pipeline,
        if (vkds) {
                struct radv_render_pass_attachment *attachment =
                        pass->attachments + 
subpass->depth_stencil_attachment->attachment;
-               bool has_stencil = vk_format_is_stencil(attachment->format);
+               bool has_stencil = vk_format_has_stencil(attachment->format);
                struct radv_dsa_order_invariance order_invariance[2];
                struct radv_shader_variant *ps =
                        pipeline->shaders[MESA_SHADER_FRAGMENT];
@@ -1825,8 +1825,8 @@ radv_pipeline_init_depth_stencil_state(struct 
radv_pipeline *pipeline,
        if (subpass->depth_stencil_attachment)
                attachment = pass->attachments + 
subpass->depth_stencil_attachment->attachment;
 
-       bool has_depth_attachment = attachment && 
vk_format_is_depth(attachment->format);
-       bool has_stencil_attachment = attachment && 
vk_format_is_stencil(attachment->format);
+       bool has_depth_attachment = attachment && 
vk_format_has_depth(attachment->format);
+       bool has_stencil_attachment = attachment && 
vk_format_has_stencil(attachment->format);
 
        if (ds_info) {
                if (has_depth_attachment) {
@@ -3914,8 +3914,8 @@ radv_gfx9_compute_bin_size(const struct radv_pipeline 
*pipeline, const VkGraphic
                struct radv_render_pass_attachment *attachment = 
pass->attachments + subpass->depth_stencil_attachment->attachment;
 
                /* Coefficients taken from AMDVLK */
-               unsigned depth_coeff = vk_format_is_depth(attachment->format) ? 
5 : 0;
-               unsigned stencil_coeff = 
vk_format_is_stencil(attachment->format) ? 1 : 0;
+               unsigned depth_coeff = vk_format_has_depth(attachment->format) 
? 5 : 0;
+               unsigned stencil_coeff = 
vk_format_has_stencil(attachment->format) ? 1 : 0;
                unsigned ds_bytes_per_pixel = 4 * (depth_coeff + stencil_coeff) 
* total_samples;
 
                const struct radv_bin_size_entry *ds_entry = 
ds_size_table[log_num_rb_per_se][log_num_se];
@@ -4000,8 +4000,8 @@ radv_gfx10_compute_bin_size(const struct radv_pipeline 
*pipeline, const VkGraphi
                struct radv_render_pass_attachment *attachment = 
pass->attachments + subpass->depth_stencil_attachment->attachment;
 
                /* Coefficients taken from AMDVLK */
-               unsigned depth_coeff = vk_format_is_depth(attachment->format) ? 
5 : 0;
-               unsigned stencil_coeff = 
vk_format_is_stencil(attachment->format) ? 1 : 0;
+               unsigned depth_coeff = vk_format_has_depth(attachment->format) 
? 5 : 0;
+               unsigned stencil_coeff = 
vk_format_has_stencil(attachment->format) ? 1 : 0;
                unsigned db_bytes_per_pixel = (depth_coeff + stencil_coeff) * 
total_samples;
 
                const unsigned db_pixel_count_log = util_logbase2(db_tag_part / 
db_bytes_per_pixel);
@@ -4161,7 +4161,7 @@ radv_pipeline_generate_depth_stencil_state(struct 
radeon_cmdbuf *ctx_cs,
        if (subpass->depth_stencil_attachment)
                attachment = pass->attachments + 
subpass->depth_stencil_attachment->attachment;
 
-       bool has_depth_attachment = attachment && 
vk_format_is_depth(attachment->format);
+       bool has_depth_attachment = attachment && 
vk_format_has_depth(attachment->format);
 
        if (vkds && has_depth_attachment) {
                /* from amdvlk: For 4xAA and 8xAA need to decompress on flush 
for better performance */
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 8c9d66167d5..d04bf8b3198 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -2015,12 +2015,12 @@ radv_image_tile_stencil_disabled(const struct 
radv_device *device,
                                 const struct radv_image *image)
 {
        if (device->physical_device->rad_info.chip_class >= GFX9) {
-               return !vk_format_is_stencil(image->vk_format);
+               return !vk_format_has_stencil(image->vk_format);
        } else {
                /* Due to a hw bug, TILE_STENCIL_DISABLE must be set to 0 for
                 * the TC-compat ZRANGE issue even if no stencil is used.
                 */
-               return !vk_format_is_stencil(image->vk_format) &&
+               return !vk_format_has_stencil(image->vk_format) &&
                       !radv_image_is_tc_compat_htile(image);
        }
 }
diff --git a/src/amd/vulkan/vk_format.h b/src/amd/vulkan/vk_format.h
index 54fa790e6f0..d6132a5b96b 100644
--- a/src/amd/vulkan/vk_format.h
+++ b/src/amd/vulkan/vk_format.h
@@ -77,31 +77,6 @@ vk_format_get_first_non_void_channel(VkFormat format)
        return 
util_format_get_first_non_void_channel(vk_format_to_pipe_format(format));
 }
 
-static inline VkImageAspectFlags
-vk_format_aspects(VkFormat format)
-{
-       switch (format) {
-       case VK_FORMAT_UNDEFINED:
-               return 0;
-
-       case VK_FORMAT_S8_UINT:
-               return VK_IMAGE_ASPECT_STENCIL_BIT;
-
-       case VK_FORMAT_D16_UNORM_S8_UINT:
-       case VK_FORMAT_D24_UNORM_S8_UINT:
-       case VK_FORMAT_D32_SFLOAT_S8_UINT:
-               return VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
-
-       case VK_FORMAT_D16_UNORM:
-       case VK_FORMAT_X8_D24_UNORM_PACK32:
-       case VK_FORMAT_D32_SFLOAT:
-               return VK_IMAGE_ASPECT_DEPTH_BIT;
-
-       default:
-               return VK_IMAGE_ASPECT_COLOR_BIT;
-       }
-}
-
 static inline enum pipe_swizzle
 radv_swizzle_conv(VkComponentSwizzle component, const unsigned char chan[4], 
VkComponentSwizzle vk_swiz)
 {
@@ -144,52 +119,6 @@ vk_format_is_subsampled(VkFormat format)
        return util_format_is_subsampled_422(vk_format_to_pipe_format(format));
 }
 
-static inline bool
-vk_format_is_depth_or_stencil(VkFormat format)
-{
-       const struct util_format_description *desc = 
util_format_description(vk_format_to_pipe_format(format));
-
-       assert(desc);
-       if (!desc) {
-               return false;
-       }
-
-       return util_format_has_depth(desc) ||
-              util_format_has_stencil(desc);
-}
-
-static inline bool
-vk_format_is_depth(VkFormat format)
-{
-       const struct util_format_description *desc = 
util_format_description(vk_format_to_pipe_format(format));
-
-       assert(desc);
-       if (!desc) {
-               return false;
-       }
-
-       return util_format_has_depth(desc);
-}
-
-static inline bool
-vk_format_is_stencil(VkFormat format)
-{
-       const struct util_format_description *desc = 
util_format_description(vk_format_to_pipe_format(format));
-
-       assert(desc);
-       if (!desc) {
-               return false;
-       }
-
-       return util_format_has_stencil(desc);
-}
-
-static inline bool
-vk_format_is_color(VkFormat format)
-{
-       return !vk_format_is_depth_or_stencil(format);
-}
-
 static inline VkFormat
 vk_format_depth_only(VkFormat format)
 {
diff --git a/src/broadcom/vulkan/vk_format_info.h 
b/src/broadcom/vulkan/vk_format_info.h
index 309e9190db1..3490ededf57 100644
--- a/src/broadcom/vulkan/vk_format_info.h
+++ b/src/broadcom/vulkan/vk_format_info.h
@@ -30,64 +30,6 @@
 #include "util/format/u_format.h"
 #include "vulkan/util/vk_format.h"
 
-static inline VkImageAspectFlags
-vk_format_aspects(VkFormat format)
-{
-   switch (format) {
-   case VK_FORMAT_UNDEFINED:
-      return 0;
-
-   case VK_FORMAT_S8_UINT:
-      return VK_IMAGE_ASPECT_STENCIL_BIT;
-
-   case VK_FORMAT_D16_UNORM_S8_UINT:
-   case VK_FORMAT_D24_UNORM_S8_UINT:
-   case VK_FORMAT_D32_SFLOAT_S8_UINT:
-      return VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
-
-   case VK_FORMAT_D16_UNORM:
-   case VK_FORMAT_X8_D24_UNORM_PACK32:
-   case VK_FORMAT_D32_SFLOAT:
-      return VK_IMAGE_ASPECT_DEPTH_BIT;
-
-   case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
-   case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:
-   case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:
-   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:
-   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:
-   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:
-   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:
-   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:
-   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:
-   case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:
-   case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:
-   case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:
-      return (VK_IMAGE_ASPECT_PLANE_0_BIT |
-              VK_IMAGE_ASPECT_PLANE_1_BIT |
-              VK_IMAGE_ASPECT_PLANE_2_BIT);
-
-   case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
-   case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:
-   case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
-   case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:
-   case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:
-   case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:
-   case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:
-   case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:
-      return (VK_IMAGE_ASPECT_PLANE_0_BIT |
-              VK_IMAGE_ASPECT_PLANE_1_BIT);
-
-   default:
-      return VK_IMAGE_ASPECT_COLOR_BIT;
-   }
-}
-
-static inline bool
-vk_format_is_color(VkFormat format)
-{
-   return vk_format_aspects(format) == VK_IMAGE_ASPECT_COLOR_BIT;
-}
-
 /* FIXME: from freedreno vk_format.h, common place?*/
 static inline bool
 vk_format_is_int(VkFormat format)
@@ -113,27 +55,6 @@ vk_format_is_srgb(VkFormat format)
    return util_format_is_srgb(vk_format_to_pipe_format(format));
 }
 
-static inline bool
-vk_format_is_depth_or_stencil(VkFormat format)
-{
-   const VkImageAspectFlags aspects = vk_format_aspects(format);
-   return aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT);
-}
-
-static inline bool
-vk_format_has_depth(VkFormat format)
-{
-   const VkImageAspectFlags aspects = vk_format_aspects(format);
-   return aspects & VK_IMAGE_ASPECT_DEPTH_BIT;
-}
-
-static inline bool
-vk_format_has_stencil(VkFormat format)
-{
-   const VkImageAspectFlags aspects = vk_format_aspects(format);
-   return aspects & VK_IMAGE_ASPECT_STENCIL_BIT;
-}
-
 static inline unsigned
 vk_format_get_blocksize(VkFormat format)
 {
diff --git a/src/freedreno/vulkan/vk_format.h b/src/freedreno/vulkan/vk_format.h
index caad04e970c..1a895fa264a 100644
--- a/src/freedreno/vulkan/vk_format.h
+++ b/src/freedreno/vulkan/vk_format.h
@@ -68,14 +68,6 @@ vk_format_is_compressed(VkFormat format)
    return vk_format_get_blockwidth(format) > 1;
 }
 
-static inline bool
-vk_format_is_depth_or_stencil(VkFormat format)
-{
-   const struct util_format_description *desc = vk_format_description(format);
-
-   return util_format_has_depth(desc) || util_format_has_stencil(desc);
-}
-
 static inline bool
 vk_format_has_alpha(VkFormat format)
 {
diff --git a/src/intel/Makefile.sources b/src/intel/Makefile.sources
index 23ed930eef3..4af8231227c 100644
--- a/src/intel/Makefile.sources
+++ b/src/intel/Makefile.sources
@@ -285,8 +285,7 @@ VULKAN_FILES := \
        vulkan/anv_private.h \
        vulkan/anv_queue.c \
        vulkan/anv_util.c \
-       vulkan/anv_wsi.c \
-       vulkan/vk_format_info.h
+       vulkan/anv_wsi.c
 
 VULKAN_NON_ANDROID_FILES := \
        vulkan/anv_android_stubs.c
diff --git a/src/intel/vulkan/anv_android.c b/src/intel/vulkan/anv_android.c
index 797c7bd77e5..e96345c33a4 100644
--- a/src/intel/vulkan/anv_android.c
+++ b/src/intel/vulkan/anv_android.c
@@ -104,6 +104,69 @@ anv_hal_close(struct hw_device_t *dev)
 }
 
 #if ANDROID_API_LEVEL >= 26
+#include <vndk/hardware_buffer.h>
+/* See i915_private_android_types.h in minigbm. */
+#define HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL 0x100
+
+enum {
+   /* Usage bit equal to GRALLOC_USAGE_HW_CAMERA_MASK */
+   AHARDWAREBUFFER_USAGE_CAMERA_MASK = 0x00060000U,
+};
+
+static inline VkFormat
+vk_format_from_android(unsigned android_format, unsigned android_usage)
+{
+   switch (android_format) {
+   case AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM:
+      return VK_FORMAT_R8G8B8A8_UNORM;
+   case AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM:
+   case AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM:
+      return VK_FORMAT_R8G8B8_UNORM;
+   case AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM:
+      return VK_FORMAT_R5G6B5_UNORM_PACK16;
+   case AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT:
+      return VK_FORMAT_R16G16B16A16_SFLOAT;
+   case AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM:
+      return VK_FORMAT_A2B10G10R10_UNORM_PACK32;
+   case AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420:
+   case HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL:
+      return VK_FORMAT_G8_B8R8_2PLANE_420_UNORM;
+   case AHARDWAREBUFFER_FORMAT_IMPLEMENTATION_DEFINED:
+      if (android_usage & AHARDWAREBUFFER_USAGE_CAMERA_MASK)
+         return VK_FORMAT_G8_B8R8_2PLANE_420_UNORM;
+      else
+         return VK_FORMAT_R8G8B8_UNORM;
+   case AHARDWAREBUFFER_FORMAT_BLOB:
+   default:
+      return VK_FORMAT_UNDEFINED;
+   }
+}
+
+static inline unsigned
+android_format_from_vk(unsigned vk_format)
+{
+   switch (vk_format) {
+   case VK_FORMAT_R8G8B8A8_UNORM:
+      return AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM;
+   case VK_FORMAT_R8G8B8_UNORM:
+      return AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM;
+   case VK_FORMAT_R5G6B5_UNORM_PACK16:
+      return AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM;
+   case VK_FORMAT_R16G16B16A16_SFLOAT:
+      return AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT;
+   case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+      return AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM;
+   case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+#ifdef HAVE_CROS_GRALLOC
+      return AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420;
+#else
+      return HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL;
+#endif
+   default:
+      return AHARDWAREBUFFER_FORMAT_BLOB;
+   }
+}
+
 static VkResult
 get_ahw_buffer_format_properties(
    VkDevice device_h,
diff --git a/src/intel/vulkan/anv_cmd_buffer.c 
b/src/intel/vulkan/anv_cmd_buffer.c
index f7e6bae27e8..bfb5b26bb03 100644
--- a/src/intel/vulkan/anv_cmd_buffer.c
+++ b/src/intel/vulkan/anv_cmd_buffer.c
@@ -30,7 +30,6 @@
 #include "anv_private.h"
 #include "anv_measure.h"
 
-#include "vk_format_info.h"
 #include "vk_util.h"
 
 /** \file anv_cmd_buffer.c
diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c
index ebe71a5525d..6576690e3ac 100644
--- a/src/intel/vulkan/anv_formats.c
+++ b/src/intel/vulkan/anv_formats.c
@@ -25,7 +25,6 @@
 #include "drm-uapi/drm_fourcc.h"
 #include "vk_enum_to_str.h"
 #include "vk_format.h"
-#include "vk_format_info.h"
 #include "vk_util.h"
 
 /*
diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index 4491a55a6d6..c3065f3f622 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -34,7 +34,7 @@
 #include "vk_util.h"
 #include "util/u_math.h"
 
-#include "vk_format_info.h"
+#include "vk_format.h"
 
 static const enum isl_surf_dim
 vk_to_isl_surf_dim[] = {
diff --git a/src/intel/vulkan/anv_pass.c b/src/intel/vulkan/anv_pass.c
index f02ac154ff7..69b1e38b843 100644
--- a/src/intel/vulkan/anv_pass.c
+++ b/src/intel/vulkan/anv_pass.c
@@ -23,7 +23,7 @@
 
 #include "anv_private.h"
 
-#include "vk_format_info.h"
+#include "vk_format.h"
 #include "vk_util.h"
 
 static void
diff --git a/src/intel/vulkan/anv_wsi.c b/src/intel/vulkan/anv_wsi.c
index 4dfafe7bfa6..9c12cdc6277 100644
--- a/src/intel/vulkan/anv_wsi.c
+++ b/src/intel/vulkan/anv_wsi.c
@@ -24,7 +24,6 @@
 #include "anv_private.h"
 #include "anv_measure.h"
 #include "wsi_common.h"
-#include "vk_format_info.h"
 #include "vk_util.h"
 
 static PFN_vkVoidFunction
diff --git a/src/intel/vulkan/anv_wsi_display.c 
b/src/intel/vulkan/anv_wsi_display.c
index 0d8e9299497..8a3194a65d9 100644
--- a/src/intel/vulkan/anv_wsi_display.c
+++ b/src/intel/vulkan/anv_wsi_display.c
@@ -22,7 +22,6 @@
 
 #include "anv_private.h"
 #include "wsi_common.h"
-#include "vk_format_info.h"
 #include "vk_util.h"
 #include "wsi_common_display.h"
 
diff --git a/src/intel/vulkan/gen7_cmd_buffer.c 
b/src/intel/vulkan/gen7_cmd_buffer.c
index 6b4a33d7a8f..e1c134f93da 100644
--- a/src/intel/vulkan/gen7_cmd_buffer.c
+++ b/src/intel/vulkan/gen7_cmd_buffer.c
@@ -28,7 +28,7 @@
 #include <fcntl.h>
 
 #include "anv_private.h"
-#include "vk_format_info.h"
+#include "vk_format.h"
 
 #include "genxml/gen_macros.h"
 #include "genxml/genX_pack.h"
diff --git a/src/intel/vulkan/genX_cmd_buffer.c 
b/src/intel/vulkan/genX_cmd_buffer.c
index e7411bf4568..f292cb9a28b 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -26,7 +26,7 @@
 
 #include "anv_private.h"
 #include "anv_measure.h"
-#include "vk_format_info.h"
+#include "vk_format.h"
 #include "vk_util.h"
 #include "util/fast_idiv_by_const.h"
 
diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c
index 3e44c385e79..40b21c17610 100644
--- a/src/intel/vulkan/genX_pipeline.c
+++ b/src/intel/vulkan/genX_pipeline.c
@@ -30,7 +30,7 @@
 #include "common/gen_sample_positions.h"
 #include "nir/nir_xfb_info.h"
 #include "vk_util.h"
-#include "vk_format_info.h"
+#include "vk_format.h"
 
 static uint32_t
 vertex_element_comp_control(enum isl_format format, unsigned comp)
diff --git a/src/intel/vulkan/meson.build b/src/intel/vulkan/meson.build
index 0116c6c1030..9a5b85592c3 100644
--- a/src/intel/vulkan/meson.build
+++ b/src/intel/vulkan/meson.build
@@ -107,7 +107,6 @@ libanv_files = files(
   'anv_queue.c',
   'anv_util.c',
   'anv_wsi.c',
-  'vk_format_info.h',
 )
 
 anv_deps = [
diff --git a/src/intel/vulkan/vk_format_info.h 
b/src/intel/vulkan/vk_format_info.h
deleted file mode 100644
index 4e72c244742..00000000000
--- a/src/intel/vulkan/vk_format_info.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright © 2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-#ifndef VK_FORMAT_INFO_H
-#define VK_FORMAT_INFO_H
-
-#include <stdbool.h>
-#include <vulkan/vulkan.h>
-
-#if defined(ANDROID) && ANDROID_API_LEVEL >= 26
-#include <vndk/hardware_buffer.h>
-/* See i915_private_android_types.h in minigbm. */
-#define HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL 0x100
-
-enum {
-   /* Usage bit equal to GRALLOC_USAGE_HW_CAMERA_MASK */
-   AHARDWAREBUFFER_USAGE_CAMERA_MASK = 0x00060000U,
-};
-
-static inline VkFormat
-vk_format_from_android(unsigned android_format, unsigned android_usage)
-{
-   switch (android_format) {
-   case AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM:
-      return VK_FORMAT_R8G8B8A8_UNORM;
-   case AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM:
-   case AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM:
-      return VK_FORMAT_R8G8B8_UNORM;
-   case AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM:
-      return VK_FORMAT_R5G6B5_UNORM_PACK16;
-   case AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT:
-      return VK_FORMAT_R16G16B16A16_SFLOAT;
-   case AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM:
-      return VK_FORMAT_A2B10G10R10_UNORM_PACK32;
-   case AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420:
-   case HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL:
-      return VK_FORMAT_G8_B8R8_2PLANE_420_UNORM;
-   case AHARDWAREBUFFER_FORMAT_IMPLEMENTATION_DEFINED:
-      if (android_usage & AHARDWAREBUFFER_USAGE_CAMERA_MASK)
-         return VK_FORMAT_G8_B8R8_2PLANE_420_UNORM;
-      else
-         return VK_FORMAT_R8G8B8_UNORM;
-   case AHARDWAREBUFFER_FORMAT_BLOB:
-   default:
-      return VK_FORMAT_UNDEFINED;
-   }
-}
-
-static inline unsigned
-android_format_from_vk(unsigned vk_format)
-{
-   switch (vk_format) {
-   case VK_FORMAT_R8G8B8A8_UNORM:
-      return AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM;
-   case VK_FORMAT_R8G8B8_UNORM:
-      return AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM;
-   case VK_FORMAT_R5G6B5_UNORM_PACK16:
-      return AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM;
-   case VK_FORMAT_R16G16B16A16_SFLOAT:
-      return AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT;
-   case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
-      return AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM;
-   case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
-#ifdef HAVE_CROS_GRALLOC
-      return AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420;
-#else
-      return HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL;
-#endif
-   default:
-      return AHARDWAREBUFFER_FORMAT_BLOB;
-   }
-}
-#endif
-
-static inline VkImageAspectFlags
-vk_format_aspects(VkFormat format)
-{
-   switch (format) {
-   case VK_FORMAT_UNDEFINED:
-      return 0;
-
-   case VK_FORMAT_S8_UINT:
-      return VK_IMAGE_ASPECT_STENCIL_BIT;
-
-   case VK_FORMAT_D16_UNORM_S8_UINT:
-   case VK_FORMAT_D24_UNORM_S8_UINT:
-   case VK_FORMAT_D32_SFLOAT_S8_UINT:
-      return VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
-
-   case VK_FORMAT_D16_UNORM:
-   case VK_FORMAT_X8_D24_UNORM_PACK32:
-   case VK_FORMAT_D32_SFLOAT:
-      return VK_IMAGE_ASPECT_DEPTH_BIT;
-
-   case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
-   case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:
-   case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:
-   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:
-   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:
-   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:
-   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:
-   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:
-   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:
-   case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:
-   case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:
-   case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:
-      return (VK_IMAGE_ASPECT_PLANE_0_BIT |
-              VK_IMAGE_ASPECT_PLANE_1_BIT |
-              VK_IMAGE_ASPECT_PLANE_2_BIT);
-
-   case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
-   case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:
-   case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
-   case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:
-   case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:
-   case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:
-   case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:
-   case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:
-      return (VK_IMAGE_ASPECT_PLANE_0_BIT |
-              VK_IMAGE_ASPECT_PLANE_1_BIT);
-
-   default:
-      return VK_IMAGE_ASPECT_COLOR_BIT;
-   }
-}
-
-static inline bool
-vk_format_is_color(VkFormat format)
-{
-   return vk_format_aspects(format) == VK_IMAGE_ASPECT_COLOR_BIT;
-}
-
-static inline bool
-vk_format_is_depth_or_stencil(VkFormat format)
-{
-   const VkImageAspectFlags aspects = vk_format_aspects(format);
-   return aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT);
-}
-
-static inline bool
-vk_format_has_depth(VkFormat format)
-{
-   const VkImageAspectFlags aspects = vk_format_aspects(format);
-   return aspects & VK_IMAGE_ASPECT_DEPTH_BIT;
-}
-
-static inline bool
-vk_format_has_stencil(VkFormat format)
-{
-   const VkImageAspectFlags aspects = vk_format_aspects(format);
-   return aspects & VK_IMAGE_ASPECT_STENCIL_BIT;
-}
-
-#endif /* VK_FORMAT_INFO_H */
diff --git a/src/vulkan/util/vk_format.c b/src/vulkan/util/vk_format.c
index 8e03410f67e..f6e6bcec7cf 100644
--- a/src/vulkan/util/vk_format.c
+++ b/src/vulkan/util/vk_format.c
@@ -1,4 +1,5 @@
 /*
+ * Copyright © 2016 Intel Corporation
  * Copyright © 2019 Google LLC
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -286,3 +287,55 @@ vk_format_to_pipe_format(enum VkFormat vkformat)
 
    return vk_format_map[vkformat];
 }
+
+VkImageAspectFlags
+vk_format_aspects(VkFormat format)
+{
+   switch (format) {
+   case VK_FORMAT_UNDEFINED:
+      return 0;
+
+   case VK_FORMAT_S8_UINT:
+      return VK_IMAGE_ASPECT_STENCIL_BIT;
+
+   case VK_FORMAT_D16_UNORM_S8_UINT:
+   case VK_FORMAT_D24_UNORM_S8_UINT:
+   case VK_FORMAT_D32_SFLOAT_S8_UINT:
+      return VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
+
+   case VK_FORMAT_D16_UNORM:
+   case VK_FORMAT_X8_D24_UNORM_PACK32:
+   case VK_FORMAT_D32_SFLOAT:
+      return VK_IMAGE_ASPECT_DEPTH_BIT;
+
+   case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
+   case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:
+   case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:
+   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:
+   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:
+   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:
+   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:
+   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:
+   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:
+   case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:
+   case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:
+   case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:
+      return (VK_IMAGE_ASPECT_PLANE_0_BIT |
+              VK_IMAGE_ASPECT_PLANE_1_BIT |
+              VK_IMAGE_ASPECT_PLANE_2_BIT);
+
+   case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
+   case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:
+   case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
+   case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:
+   case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:
+   case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:
+   case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:
+   case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:
+      return (VK_IMAGE_ASPECT_PLANE_0_BIT |
+              VK_IMAGE_ASPECT_PLANE_1_BIT);
+
+   default:
+      return VK_IMAGE_ASPECT_COLOR_BIT;
+   }
+}
diff --git a/src/vulkan/util/vk_format.h b/src/vulkan/util/vk_format.h
index ecc79f7f73e..813ec4c367c 100644
--- a/src/vulkan/util/vk_format.h
+++ b/src/vulkan/util/vk_format.h
@@ -1,4 +1,5 @@
 /*
+ * Copyright © 2016 Intel Corporation
  * Copyright © 2019 Google LLC
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,4 +31,34 @@
 enum pipe_format
 vk_format_to_pipe_format(enum VkFormat vkformat);
 
+VkImageAspectFlags
+vk_format_aspects(VkFormat format);
+
+static inline bool
+vk_format_is_color(VkFormat format)
+{
+   return vk_format_aspects(format) == VK_IMAGE_ASPECT_COLOR_BIT;
+}
+
+static inline bool
+vk_format_is_depth_or_stencil(VkFormat format)
+{
+   const VkImageAspectFlags aspects = vk_format_aspects(format);
+   return aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT);
+}
+
+static inline bool
+vk_format_has_depth(VkFormat format)
+{
+   const VkImageAspectFlags aspects = vk_format_aspects(format);
+   return aspects & VK_IMAGE_ASPECT_DEPTH_BIT;
+}
+
+static inline bool
+vk_format_has_stencil(VkFormat format)
+{
+   const VkImageAspectFlags aspects = vk_format_aspects(format);
+   return aspects & VK_IMAGE_ASPECT_STENCIL_BIT;
+}
+
 #endif

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to