The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Открытый драйвер AMD поддерживает Freesync на HDMI"
Отправлено n00by, 04-Мрт-24 14:18 
Как пришлось решить схожую проблему с Freesync https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux...

Открытый драйвер AMD поддерживает Freesync на DP и HDMI дисплеях:

/**
* amdgpu_dm_update_freesync_caps - Update Freesync capabilities
*
* @connector: Connector to query.
* @edid: EDID from monitor
*
* Amdgpu supports Freesync in DP and HDMI displays, and it is required to keep
* track of some of the display information in the internal data struct used by
* amdgpu_dm. This function checks which type of connector we need to set the
* FreeSync parameters.
*/

Вот код для HDMI https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux...


    } else if (edid && sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A) {
        i = parse_hdmi_amd_vsdb(amdgpu_dm_connector, edid, &vsdb_info);
        if (i >= 0 && vsdb_info.freesync_supported) {
            timing  = &edid->detailed_timings[i];
            data    = &timing->data.other_data;

            amdgpu_dm_connector->min_vfreq = vsdb_info.min_refresh_rate_hz;
            amdgpu_dm_connector->max_vfreq = vsdb_info.max_refresh_rate_hz;
            if (amdgpu_dm_connector->max_vfreq - amdgpu_dm_connector->min_vfreq > 10)
                freesync_capable = true;

            connector->display_info.monitor_range.min_vfreq = vsdb_info.min_refresh_rate_hz;
            connector->display_info.monitor_range.max_vfreq = vsdb_info.max_refresh_rate_hz;
        }
    }


Если копнуть глубже, то parse_hdmi_amd_vsdb() вызывает

static bool parse_edid_cea_dmub(struct amdgpu_display_manager *dm,
        u8 *edid_ext, int len,
        struct amdgpu_hdmi_vsdb_info *vsdb_info)
{
    int i;

    /* send extension block to DMCU for parsing */
    for (i = 0; i < len; i += 8) {
        /* send 8 bytes a time */
        if (!dm_edid_parser_send_cea(dm, i, len, &edid_ext[i], 8, vsdb_info))
            return false;
    }

    return vsdb_info->freesync_supported;
}


То есть код для определения параметров исполняет Display Management Control Unit (DMCU) - сопроцессор видеоконтроллера, этот код закрыт и находится в фирмвари. Таким образом требования HDMI консорциума выполняются и поддержка Freesync обеспечивается в открытом драйвере.

Проблема касается старых карт серии Polaris https://www.reddit.com/r/linux_gaming/comments/upc1lx/psa_hd.../
где у AMD нет возможности закрыть код в фирмвари, потому пользователям приходится самостоятельно патчить драйвер.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру