• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)24 tu_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