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 static inline bool tu_pipe_format_is_float16(enum pipe_format format)22tu_pipe_format_is_float16(enum pipe_format format) 23 { 24 const struct util_format_description *desc = 25 util_format_description(format); 26 const int c = util_format_get_first_non_void_channel(format); 27 if (c < 0) 28 return false; 29 30 return desc->channel[c].type == UTIL_FORMAT_TYPE_FLOAT && desc->channel[c].size == 16; 31 } 32 33 struct tu_native_format tu6_format_vtx(enum pipe_format format); 34 struct tu_native_format tu6_format_color(enum pipe_format format, enum a6xx_tile_mode tile_mode); 35 struct tu_native_format tu6_format_texture(enum pipe_format format, enum a6xx_tile_mode tile_mode); 36 37 bool tu6_mutable_format_list_ubwc_compatible(const struct fd_dev_info *info, 38 const VkImageFormatListCreateInfo *fmt_list); 39 40 #endif /* TU_FORMATS_H */ 41