diff options
author | Marek Olšák <[email protected]> | 2019-01-04 19:39:01 -0500 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2019-04-04 09:53:24 -0400 |
commit | 1f21396431a03dc4e5a542628d7d8370973c967f (patch) | |
tree | 70cdc799793f64a8ee03987e9c93c1b099f30e8c /src/amd/common/ac_surface.h | |
parent | 2c09eb41221eb704e9e7a21654828173158d1a7d (diff) |
radeonsi: add support for displayable DCC for multi-RB chips
A compute shader is used to reorder DCC data from aligned to unaligned.
Diffstat (limited to 'src/amd/common/ac_surface.h')
-rw-r--r-- | src/amd/common/ac_surface.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/amd/common/ac_surface.h b/src/amd/common/ac_surface.h index eb50c37c3c2..10d25e23d32 100644 --- a/src/amd/common/ac_surface.h +++ b/src/amd/common/ac_surface.h @@ -27,6 +27,7 @@ #define AC_SURFACE_H #include <stdint.h> +#include <stdbool.h> #include "amd_family.h" @@ -149,9 +150,19 @@ struct gfx9_surf_layout { /* Mipmap level offset within the slice in bytes. Only valid for LINEAR. */ uint32_t offset[RADEON_SURF_MAX_LEVELS]; - uint16_t display_dcc_pitch_max; /* (mip chain pitch - 1) */ - uint64_t stencil_offset; /* separate stencil */ + + /* Displayable DCC. This is always rb_aligned=0 and pipe_aligned=0. + * The 3D engine doesn't support that layout except for chips with 1 RB. + * All other chips must set rb_aligned=1. + * A compute shader needs to convert from aligned DCC to unaligned. + */ + uint32_t display_dcc_size; + uint32_t display_dcc_alignment; + uint16_t display_dcc_pitch_max; /* (mip chain pitch - 1) */ + bool dcc_retile_use_uint16; /* if all values fit into uint16_t */ + uint32_t dcc_retile_num_elements; + uint32_t *dcc_retile_map; }; struct radeon_surf { |