mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-05-09 10:58:06 +02:00
radeon: fall back to 1D tiling only with broken kernels
Certain cards report the the wrong bank setup which causes surface init to fail in the ddx and leads to no accel. If we hit an invalid tiling parameter, just set a default value and disable 2D tiling. Should fix: https://bugs.freedesktop.org/show_bug.cgi?id=43448 Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
ba6130c2d6
commit
c2b77a02d4
1 changed files with 21 additions and 7 deletions
|
|
@ -206,7 +206,9 @@ static int r6_init_hw_info(struct radeon_surface_manager *surf_man)
|
|||
surf_man->hw_info.num_pipes = 8;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
surf_man->hw_info.num_pipes = 8;
|
||||
surf_man->hw_info.allow_2d = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
switch ((tiling_config & 0x30) >> 4) {
|
||||
|
|
@ -217,7 +219,9 @@ static int r6_init_hw_info(struct radeon_surface_manager *surf_man)
|
|||
surf_man->hw_info.num_banks = 8;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
surf_man->hw_info.num_banks = 8;
|
||||
surf_man->hw_info.allow_2d = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
switch ((tiling_config & 0xc0) >> 6) {
|
||||
|
|
@ -228,7 +232,9 @@ static int r6_init_hw_info(struct radeon_surface_manager *surf_man)
|
|||
surf_man->hw_info.group_bytes = 512;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
surf_man->hw_info.group_bytes = 256;
|
||||
surf_man->hw_info.allow_2d = 0;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -458,7 +464,9 @@ static int eg_init_hw_info(struct radeon_surface_manager *surf_man)
|
|||
surf_man->hw_info.num_pipes = 8;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
surf_man->hw_info.num_pipes = 8;
|
||||
surf_man->hw_info.allow_2d = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
switch ((tiling_config & 0xf0) >> 4) {
|
||||
|
|
@ -472,7 +480,9 @@ static int eg_init_hw_info(struct radeon_surface_manager *surf_man)
|
|||
surf_man->hw_info.num_banks = 16;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
surf_man->hw_info.num_banks = 8;
|
||||
surf_man->hw_info.allow_2d = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
switch ((tiling_config & 0xf00) >> 8) {
|
||||
|
|
@ -483,7 +493,9 @@ static int eg_init_hw_info(struct radeon_surface_manager *surf_man)
|
|||
surf_man->hw_info.group_bytes = 512;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
surf_man->hw_info.group_bytes = 256;
|
||||
surf_man->hw_info.allow_2d = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
switch ((tiling_config & 0xf000) >> 12) {
|
||||
|
|
@ -497,7 +509,9 @@ static int eg_init_hw_info(struct radeon_surface_manager *surf_man)
|
|||
surf_man->hw_info.row_size = 4096;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
surf_man->hw_info.row_size = 4096;
|
||||
surf_man->hw_info.allow_2d = 0;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue