kraxel at redhat.com
2019-Apr-09 07:12 UTC
[PATCH 00/15] Share TTM code among framebuffer drivers
Hi,> If not for TTM, what would be the alternative? One VMA manager per > memory region per device?Depends pretty much on the device. The cirrus is a display device with only 4 MB of vram. You can't fit much in there. A single 1024x768 @ 24bpp framebuffer needs more 50% of the video memory already. Which is why the cirrus driver (before the rewrite) had to migrate buffers from/to vram on every page flip[1]. Which is one[2] of the reasons why cirrus (after rewrite) doesn't ttm-manage the vram any more. gem objects are managed with the shmem helpers instead and the active framebuffer is blitted to vram. The qemu stdvga (bochs driver) has 16 MB vram by default and can be configured to have up to 256 MB. Plenty of room even for multiple 4k framebuffers if needed. So for the bochs driver all the ttm bo migration logic is not needed, it could just store everything in vram. A set of drm_gem_vram_* helpers would do the job for bochs. I'd expect the same applies to the vbox driver. Dunno about the other drm drivers and the fbdev drivers you plan to migrate over. cheers, Gerd [1] Note: The page-flip migration logic is present in some of the other drivers too, not sure whenever they actually need that due to being low on vram too or whenever they just copied the old cirrus code ... [2] The other reason is that this allow to convert formats at blit time, which helps to deal with some cirrus hardware limitations.
On Tue, 9 Apr 2019 at 17:12, kraxel at redhat.com <kraxel at redhat.com> wrote:> > Hi, > > > If not for TTM, what would be the alternative? One VMA manager per > > memory region per device? > > Depends pretty much on the device. > > The cirrus is a display device with only 4 MB of vram. You can't fit > much in there. A single 1024x768 @ 24bpp framebuffer needs more 50% > of the video memory already. Which is why the cirrus driver (before the > rewrite) had to migrate buffers from/to vram on every page flip[1]. Which > is one[2] of the reasons why cirrus (after rewrite) doesn't ttm-manage the > vram any more. gem objects are managed with the shmem helpers instead > and the active framebuffer is blitted to vram. > > The qemu stdvga (bochs driver) has 16 MB vram by default and can be > configured to have up to 256 MB. Plenty of room even for multiple 4k > framebuffers if needed. So for the bochs driver all the ttm bo > migration logic is not needed, it could just store everything in vram.To clarify I assume you mean it doesn't need the migrate each bo logic, but it still needs the when VRAM fills up migrate stuff logic. Dave.
kraxel at redhat.com
2019-Apr-09 08:29 UTC
[PATCH 00/15] Share TTM code among framebuffer drivers
Hi,> > The qemu stdvga (bochs driver) has 16 MB vram by default and can be > > configured to have up to 256 MB. Plenty of room even for multiple 4k > > framebuffers if needed. So for the bochs driver all the ttm bo > > migration logic is not needed, it could just store everything in vram. > > To clarify I assume you mean it doesn't need the migrate each bo > logic, but it still needs the when VRAM fills up migrate stuff logic.I think even the "when vram fills up" logic isn't that important. The driver has no acceleration so there is nothing to store beside dumb framebuffers, and the vram size can easily be increased if needed. cheers, Gerd
Possibly Parallel Threads
- [PATCH 00/15] Share TTM code among framebuffer drivers
- [PATCH 00/15] Share TTM code among framebuffer drivers
- [PATCH 00/15] Share TTM code among framebuffer drivers
- [PATCH 00/15] Share TTM code among framebuffer drivers
- [PATCH 00/15] Share TTM code among framebuffer drivers