drm/radeon/kms: fix scanout of 2D tiled buffers on EG/CM
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=43191 Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
6eebd6bb5f
commit
392e37229f
|
@ -1107,9 +1107,40 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (tiling_flags & RADEON_TILING_MACRO)
|
||||
if (tiling_flags & RADEON_TILING_MACRO) {
|
||||
if (rdev->family >= CHIP_CAYMAN)
|
||||
tmp = rdev->config.cayman.tile_config;
|
||||
else
|
||||
tmp = rdev->config.evergreen.tile_config;
|
||||
|
||||
switch ((tmp & 0xf0) >> 4) {
|
||||
case 0: /* 4 banks */
|
||||
fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_4_BANK);
|
||||
break;
|
||||
case 1: /* 8 banks */
|
||||
default:
|
||||
fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_8_BANK);
|
||||
break;
|
||||
case 2: /* 16 banks */
|
||||
fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_16_BANK);
|
||||
break;
|
||||
}
|
||||
|
||||
switch ((tmp & 0xf000) >> 12) {
|
||||
case 0: /* 1KB rows */
|
||||
default:
|
||||
fb_format |= EVERGREEN_GRPH_TILE_SPLIT(EVERGREEN_ADDR_SURF_TILE_SPLIT_1KB);
|
||||
break;
|
||||
case 1: /* 2KB rows */
|
||||
fb_format |= EVERGREEN_GRPH_TILE_SPLIT(EVERGREEN_ADDR_SURF_TILE_SPLIT_2KB);
|
||||
break;
|
||||
case 2: /* 4KB rows */
|
||||
fb_format |= EVERGREEN_GRPH_TILE_SPLIT(EVERGREEN_ADDR_SURF_TILE_SPLIT_4KB);
|
||||
break;
|
||||
}
|
||||
|
||||
fb_format |= EVERGREEN_GRPH_ARRAY_MODE(EVERGREEN_GRPH_ARRAY_2D_TILED_THIN1);
|
||||
else if (tiling_flags & RADEON_TILING_MICRO)
|
||||
} else if (tiling_flags & RADEON_TILING_MICRO)
|
||||
fb_format |= EVERGREEN_GRPH_ARRAY_MODE(EVERGREEN_GRPH_ARRAY_1D_TILED_THIN1);
|
||||
|
||||
switch (radeon_crtc->crtc_id) {
|
||||
|
|
|
@ -42,6 +42,17 @@
|
|||
# define EVERGREEN_GRPH_DEPTH_8BPP 0
|
||||
# define EVERGREEN_GRPH_DEPTH_16BPP 1
|
||||
# define EVERGREEN_GRPH_DEPTH_32BPP 2
|
||||
# define EVERGREEN_GRPH_NUM_BANKS(x) (((x) & 0x3) << 2)
|
||||
# define EVERGREEN_ADDR_SURF_2_BANK 0
|
||||
# define EVERGREEN_ADDR_SURF_4_BANK 1
|
||||
# define EVERGREEN_ADDR_SURF_8_BANK 2
|
||||
# define EVERGREEN_ADDR_SURF_16_BANK 3
|
||||
# define EVERGREEN_GRPH_Z(x) (((x) & 0x3) << 4)
|
||||
# define EVERGREEN_GRPH_BANK_WIDTH(x) (((x) & 0x3) << 6)
|
||||
# define EVERGREEN_ADDR_SURF_BANK_WIDTH_1 0
|
||||
# define EVERGREEN_ADDR_SURF_BANK_WIDTH_2 1
|
||||
# define EVERGREEN_ADDR_SURF_BANK_WIDTH_4 2
|
||||
# define EVERGREEN_ADDR_SURF_BANK_WIDTH_8 3
|
||||
# define EVERGREEN_GRPH_FORMAT(x) (((x) & 0x7) << 8)
|
||||
/* 8 BPP */
|
||||
# define EVERGREEN_GRPH_FORMAT_INDEXED 0
|
||||
|
@ -61,6 +72,24 @@
|
|||
# define EVERGREEN_GRPH_FORMAT_8B_BGRA1010102 5
|
||||
# define EVERGREEN_GRPH_FORMAT_RGB111110 6
|
||||
# define EVERGREEN_GRPH_FORMAT_BGR101111 7
|
||||
# define EVERGREEN_GRPH_BANK_HEIGHT(x) (((x) & 0x3) << 11)
|
||||
# define EVERGREEN_ADDR_SURF_BANK_HEIGHT_1 0
|
||||
# define EVERGREEN_ADDR_SURF_BANK_HEIGHT_2 1
|
||||
# define EVERGREEN_ADDR_SURF_BANK_HEIGHT_4 2
|
||||
# define EVERGREEN_ADDR_SURF_BANK_HEIGHT_8 3
|
||||
# define EVERGREEN_GRPH_TILE_SPLIT(x) (((x) & 0x7) << 13)
|
||||
# define EVERGREEN_ADDR_SURF_TILE_SPLIT_64B 0
|
||||
# define EVERGREEN_ADDR_SURF_TILE_SPLIT_128B 1
|
||||
# define EVERGREEN_ADDR_SURF_TILE_SPLIT_256B 2
|
||||
# define EVERGREEN_ADDR_SURF_TILE_SPLIT_512B 3
|
||||
# define EVERGREEN_ADDR_SURF_TILE_SPLIT_1KB 4
|
||||
# define EVERGREEN_ADDR_SURF_TILE_SPLIT_2KB 5
|
||||
# define EVERGREEN_ADDR_SURF_TILE_SPLIT_4KB 6
|
||||
# define EVERGREEN_GRPH_MACRO_TILE_ASPECT(x) (((x) & 0x3) << 18)
|
||||
# define EVERGREEN_ADDR_SURF_MACRO_TILE_ASPECT_1 0
|
||||
# define EVERGREEN_ADDR_SURF_MACRO_TILE_ASPECT_2 1
|
||||
# define EVERGREEN_ADDR_SURF_MACRO_TILE_ASPECT_4 2
|
||||
# define EVERGREEN_ADDR_SURF_MACRO_TILE_ASPECT_8 3
|
||||
# define EVERGREEN_GRPH_ARRAY_MODE(x) (((x) & 0x7) << 20)
|
||||
# define EVERGREEN_GRPH_ARRAY_LINEAR_GENERAL 0
|
||||
# define EVERGREEN_GRPH_ARRAY_LINEAR_ALIGNED 1
|
||||
|
|
Loading…
Reference in a new issue