struct drm_fb_helper_surface_size — describes fbdev size and scanout surface size
struct drm_fb_helper_surface_size { u32 fb_width; u32 fb_height; u32 surface_width; u32 surface_height; u32 surface_bpp; u32 surface_depth; };
fbdev width
fbdev height
scanout buffer width
scanout buffer height
scanout buffer bpp
scanout buffer depth
Note that the scanout surface width/height may be larger than the fbdev width/height. In case of multiple displays, the scanout surface is sized according to the largest width/height (so it is large enough for all CRTCs to scanout). But the fbdev width/height is sized to the minimum width/ height of all the displays. This ensures that fbcon fits on the smallest of the attached displays.
So what is passed to drm_fb_helper_fill_var
should be fb_width/fb_height,
rather than the surface size.