DRM's hard limit to the number of CRTCs is 32. ATI DDX unnecessarily clips this limit to 6 by hard coding initial assumption for output->possible_crtcs mask to 0x7f (before it gets trimmed down to what's really possible for a given output) and by allocating only 6 entries for for cursor_bo[] array in RADEONInfoRec.
Fix this and thus allow the ATI DDX to deal with as many CRTCs as the DRM allows (32), so it is ready if anything with >6 CRTCs comes out. Signed-off-by: Ilija Hadzic <[email protected]> --- src/drmmode_display.c | 2 +- src/radeon.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index f49aa3d..f9f9812 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -1011,7 +1011,7 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int num, int *num_dv output->doubleScanAllowed = TRUE; output->driver_private = drmmode_output; - output->possible_crtcs = 0x7f; + output->possible_crtcs = 0xffffffff; for (i = 0; i < koutput->count_encoders; i++) { output->possible_crtcs &= kencoders[i]->possible_crtcs; } diff --git a/src/radeon.h b/src/radeon.h index f66ffd0..71a00ed 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -1066,7 +1066,7 @@ typedef struct { struct radeon_cs_manager *csm; struct radeon_cs *cs; - struct radeon_bo *cursor_bo[6]; + struct radeon_bo *cursor_bo[32]; uint64_t vram_size; uint64_t gart_size; drmmode_rec drmmode; -- 1.7.7 _______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
