radeon_hd: Move to using the first found monitor's EDID
* This has positive and negitive effects. Using the first monitor's EDID vs the VESA EDID means DisplayPort monitors and adaptors function. I think the benefits outweigh the risks at this point. * Haiku will use the native display mode of the first monitor and set it across all attached displays. * Please open bug reports if you notice and regressions.
This commit is contained in:
@@ -44,13 +44,13 @@ status_t
|
|||||||
create_mode_list(void)
|
create_mode_list(void)
|
||||||
{
|
{
|
||||||
// TODO: multi-monitor? for now we use VESA and not gDisplay edid
|
// TODO: multi-monitor? for now we use VESA and not gDisplay edid
|
||||||
|
uint8 crtcID = 0;
|
||||||
|
|
||||||
const color_space kRadeonHDSpaces[] = {B_RGB32_LITTLE, B_RGB24_LITTLE,
|
const color_space kRadeonHDSpaces[] = {B_RGB32_LITTLE, B_RGB24_LITTLE,
|
||||||
B_RGB16_LITTLE, B_RGB15_LITTLE, B_CMAP8};
|
B_RGB16_LITTLE, B_RGB15_LITTLE, B_CMAP8};
|
||||||
|
|
||||||
gInfo->mode_list_area = create_display_modes("radeon HD modes",
|
gInfo->mode_list_area = create_display_modes("radeon HD modes",
|
||||||
gInfo->shared_info->has_edid ? &gInfo->shared_info->edid_info : NULL,
|
&gDisplay[crtcID]->edidData, NULL, 0, kRadeonHDSpaces,
|
||||||
NULL, 0, kRadeonHDSpaces,
|
|
||||||
sizeof(kRadeonHDSpaces) / sizeof(kRadeonHDSpaces[0]),
|
sizeof(kRadeonHDSpaces) / sizeof(kRadeonHDSpaces[0]),
|
||||||
is_mode_supported, &gInfo->mode_list, &gInfo->shared_info->mode_count);
|
is_mode_supported, &gInfo->mode_list, &gInfo->shared_info->mode_count);
|
||||||
if (gInfo->mode_list_area < B_OK)
|
if (gInfo->mode_list_area < B_OK)
|
||||||
@@ -111,6 +111,7 @@ status_t
|
|||||||
radeon_get_edid_info(void* info, size_t size, uint32* edid_version)
|
radeon_get_edid_info(void* info, size_t size, uint32* edid_version)
|
||||||
{
|
{
|
||||||
// TODO: multi-monitor? for now we use VESA edid
|
// TODO: multi-monitor? for now we use VESA edid
|
||||||
|
uint8 crtcID = 0;
|
||||||
|
|
||||||
TRACE("%s\n", __func__);
|
TRACE("%s\n", __func__);
|
||||||
if (!gInfo->shared_info->has_edid)
|
if (!gInfo->shared_info->has_edid)
|
||||||
@@ -118,9 +119,9 @@ radeon_get_edid_info(void* info, size_t size, uint32* edid_version)
|
|||||||
if (size < sizeof(struct edid1_info))
|
if (size < sizeof(struct edid1_info))
|
||||||
return B_BUFFER_OVERFLOW;
|
return B_BUFFER_OVERFLOW;
|
||||||
|
|
||||||
memcpy(info, &gInfo->shared_info->edid_info, sizeof(struct edid1_info));
|
//memcpy(info, &gInfo->shared_info->edid_info, sizeof(struct edid1_info));
|
||||||
// VESA
|
// VESA
|
||||||
//memcpy(info, &gDisplay[0]->edidData, sizeof(struct edid1_info));
|
memcpy(info, &gDisplay[crtcID]->edidData, sizeof(struct edid1_info));
|
||||||
// Display 0
|
// Display 0
|
||||||
|
|
||||||
*edid_version = EDID_VERSION_1;
|
*edid_version = EDID_VERSION_1;
|
||||||
|
|||||||
Reference in New Issue
Block a user