Укажите виртуальный размер с помощью DRM с эмуляцией Frambuffer

Я пытаюсь использовать двойную буферизацию на процессоре AM335x. У нас есть пример работы с демонстрационным изображением, которое не было создано нами. Я работаю над составлением собственного образа с использованием основных источников.

Эта система использует драйвер tilcdc. Мы используем эмуляцию fbdev, предоставляемую этим драйвером. Когда мы настраиваем параметры, этот вызов вызывает ошибки:

unsigned int Yold = variable_info.yres_virtual; variable_info.yres_virtual = variable_info.yres * 2; if (ioctl(fdfb, FBIOPUT_VSCREENINFO, &variable_info)) 

Мы отозвали 0xf в / sys / module / drm / parameters / debug, чтобы включить расширенные отладочные отпечатки для драйвера drm. Мы получили следующее сообщение об ошибке:

fb userpace запрашиваемая ширина / высота / bpp больше текущей 1024×768-32 (виртуальный 1024×1536)> 1024×768-32

Я видел ссылки, указывающие, что по умолчанию для drm выделяется достаточно памяти для присоединенного разрешения. Я изо всех сил пытаюсь выяснить, где это происходит, и как я могу увеличить объем выделенной памяти.

Что касается образца изображения, это было предоставлено нам для целей тестирования. Мы обнаружили, что причина, по которой приложение работает на этом изображении, заключается в том, что выделенная память по умолчанию является правильным размером для тройной буферизации на высоте 768.

Спасибо за помощь.

* редактировать дополнения

Я смотрю на источник для драйвера и еще не могу завершить работу, чтобы изменить размер буфера при загрузке драйвера. Я хотел бы избегать жесткого кодирования ценности любой ценой.

Я знаю, что под эмуляцией framebuffer, предоставляемой непосредственно tilcdc, есть вызовы для создания смежного выделения памяти с использованием информации для crtcs, но, похоже, используется только что-то, называемое fb-> height и width.

Linux и Unix - лучшая ОС в мире.