Привязать кадровый буфер к плоскости в рамках DRM в Linux - PullRequest
0 голосов
/ 18 марта 2020

Я использую Linux 4.14

CRT C и Framebuffer являются частью DRM Framework.

В общем случае драйвер должен создавать и инициализировать CRT C ( struct drm_crtc) и Framebuffer (struct drm_fbdev_cma в моем случае).

CRT C сохраняет указатель на плоскость:

struct drm_crtc {
    ...
    struct drm_plane *primary;
    ...
};

На плоскости хранится указатель на кадровый буфер:

struct drm_plane {
    ...
    struct drm_framebuffer *fb;
    ...
};
  1. Как кадровый буфер назначается плоскости? Как я вижу в коде, драйверы не присваивают crtc->primary->fb. Какие функции ядра я должен использовать для привязки fb к основной плоскости? Существует функция с именем drm_crtc_init, но в моем случае она покидает плоскость с NULL в поле .fb.

  2. Требуется ли для этого создание Framebuffer перед CRT C создан?

Пожалуйста, дайте мне знать, мое понимание этой части DRM неверно.

...