1 /* 2 * Copyright © 2016 Red Hat. 3 * Copyright © 2016 Bas Nieuwenhuizen 4 * SPDX-License-Identifier: MIT 5 * 6 * based in part on anv driver which is: 7 * Copyright © 2015 Intel Corporation 8 */ 9 10 #ifndef TU_FORMATS_H 11 #define TU_FORMATS_H 12 13 #include "tu_common.h" 14 15 struct tu_native_format 16 { 17 enum a6xx_format fmt : 8; 18 enum a3xx_color_swap swap : 8; 19 }; 20 21 enum pipe_format tu_vk_format_to_pipe_format(VkFormat vk_format); 22 23 static inline bool tu_pipe_format_is_float16(enum pipe_format format)24tu_pipe_format_is_float16(enum pipe_format format) 25 { 26 const struct util_format_description *desc = 27 util_format_description(format); 28 const int c = util_format_get_first_non_void_channel(format); 29 if (c < 0) 30 return false; 31 32 return desc->channel[c].type == UTIL_FORMAT_TYPE_FLOAT && desc->channel[c].size == 16; 33 } 34 35 struct tu_native_format tu6_format_vtx(enum pipe_format format); 36 struct tu_native_format tu6_format_color(enum pipe_format format, enum a6xx_tile_mode tile_mode); 37 struct tu_native_format tu6_format_texture(enum pipe_format format, enum a6xx_tile_mode tile_mode); 38 39 bool tu6_mutable_format_list_ubwc_compatible(const struct fd_dev_info *info, 40 const VkImageFormatListCreateInfo *fmt_list); 41 42 #endif /* TU_FORMATS_H */ 43