• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2022 Alyssa Rosenzweig
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #pragma once
7 
8 #include <stdbool.h>
9 #include "util/format/u_formats.h"
10 
11 /* Define aliases for the subset formats that are accessible in the ISA. These
12  * subsets disregard component mapping and number of components. This
13  * constitutes ABI with the compiler.
14  */
15 enum agx_internal_formats {
16    AGX_INTERNAL_FORMAT_I8 = PIPE_FORMAT_R8_UINT,
17    AGX_INTERNAL_FORMAT_I16 = PIPE_FORMAT_R16_UINT,
18    AGX_INTERNAL_FORMAT_I32 = PIPE_FORMAT_R32_UINT,
19    AGX_INTERNAL_FORMAT_F16 = PIPE_FORMAT_R16_FLOAT,
20    AGX_INTERNAL_FORMAT_U8NORM = PIPE_FORMAT_R8_UNORM,
21    AGX_INTERNAL_FORMAT_S8NORM = PIPE_FORMAT_R8_SNORM,
22    AGX_INTERNAL_FORMAT_U16NORM = PIPE_FORMAT_R16_UNORM,
23    AGX_INTERNAL_FORMAT_S16NORM = PIPE_FORMAT_R16_SNORM,
24    AGX_INTERNAL_FORMAT_RGB10A2 = PIPE_FORMAT_R10G10B10A2_UNORM,
25    AGX_INTERNAL_FORMAT_SRGBA8 = PIPE_FORMAT_R8G8B8A8_SRGB,
26    AGX_INTERNAL_FORMAT_RG11B10F = PIPE_FORMAT_R11G11B10_FLOAT,
27    AGX_INTERNAL_FORMAT_RGB9E5 = PIPE_FORMAT_R9G9B9E5_FLOAT
28 };
29 
30 /*
31  * The architecture load/store instructions support masking, but packed formats
32  * are not compatible with masking. Check if a format is packed.
33  */
34 static inline bool
agx_internal_format_supports_mask(enum agx_internal_formats format)35 agx_internal_format_supports_mask(enum agx_internal_formats format)
36 {
37    switch (format) {
38    case AGX_INTERNAL_FORMAT_RGB10A2:
39    case AGX_INTERNAL_FORMAT_RG11B10F:
40    case AGX_INTERNAL_FORMAT_RGB9E5:
41       return false;
42    default:
43       return true;
44    }
45 }
46