On Fre, 2010-11-12 at 12:22 -0500, Alex Deucher wrote: > On Fri, Nov 12, 2010 at 11:46 AM, Marcus LORENTZON > <marcus.xm.lorent...@stericsson.com> wrote: > > Hi Alex, > > Do you have any idea of how we should use KMS without being a "real" drm 3D > > device? Do you mean that we should use the KMS ioctls on for display > > driver? Or do you mean that we should expose a /dev/drmX device only > > capable of KMS and no GEM? > > > > In this case I was only speaking of using the kms icotls and fbdev > emulation for modesetting as your device seems to have a fairly > complex display engine. As for 2D/3D/video accel, that's up to you. > Each drm driver does it differently depending on how they handle > command buffers. Intel and AMD have different sets of ioctls for > submitting 2D/3D/video commands from userspace acceleration drivers > and a different set of ioctls for memory management. > > > What if we were to add a drm driver for 3D later on. Is it possible to have > > a separate drm device for display and one for 3D, but still share "GEM" > > like buffers between these devices? It look like GEM handles are device > > relative. This is a vital use case for us. And we really don't like to > > entangle our MCDE display driver, memory manager and 3D driver without a > > good reason. Today they are maintained as independent drivers without code > > dependencies. Would this still be possible using drm? Or does drm require > > memory manager, 3D and display to be one driver? I can see the drm=graphics > > card on desktop machines. But embedded UMA systems doesn't really have this > > dependency. You can switch memory mamanger, 3D driver, display manager in > > menuconfig independently of the other drivers. Not that it's used like that > > on one particular HW, but for different HW you can use different parts. In > > drm it looks like all these pieces belong together. > > > > No one has done anything like that, but I don't think it would be an > issue, you'd just need some sort of way to get buffers in your display > driver or your 3D driver, so I'd assume they would depend on your > memory manager. Right now the userspace 2D/3D accel drivers all talk > to the drm independently depending on what they need to do. Whatever > your userspace stack looks like could do something similar, call into > one set of ioctls for memory, another set for modesetting, and another > for accel. As long as the kernel memory manager is common, you should > be able to pass buffer handles between all of them. If you wanted > separate memory managers for each, things get a bit trickier, but > that's up to you. > > > Do you think the driver should live in the "gpu/drm" folder, even though > > it's not a gpu driver? > > > > gpu is kind of a broad term. It encompasses, 3D, display, video, etc. > I don't think it really matters. > > > Do you know of any other driver that use DRM/KMS API but not being a > > PC-style graphics card that we could look at for inspiration? > > Jordan Crouse submitted some patches for Qualcomm snapdragon a while > back although it was mostly a shim for a userspace accel driver. He > did implement platform support in the drm however: > http://git.kernel.org/?p=linux/kernel/git/airlied/drm-2.6.git;a=commit;h=dcdb167402cbdca1d021bdfa5f63995ee0a79317 > > > > > And GEM, is that the only way of exposing graphics buffers to user space in > > drm? Or is it possible (is it ok) to expose another similar API? You > > mentioned that there are TTM and GEM, do both expose user space APIs for > > things like sharing buffers between processes, security, cache management, > > defragmentation? Or are these type of features defined by DRM and not > > TTM/GEM? > > GEM is not a requirement, it just happens that all the current drm > drivers use variants of it for their external memory management > interface. However, they are free to implement the memory manager > however they like.
Actually, to reinforce your point, the vmwgfx driver doesn't use GEM at all but a TTM based userspace API. > >> -----Original Message----- > >> From: Alex Deucher [mailto:alexdeuc...@gmail.com] > >> Sent: den 12 november 2010 16:53 > >> To: Jimmy RUBIN > >> Cc: linux-fb...@vger.kernel.org; linux-arm-ker...@lists.infradead.org; > >> linux-media@vger.kernel.org; Linus WALLEIJ; Dan JOHANSSON; Marcus > >> LORENTZON > >> Subject: Re: [PATCH 00/10] MCDE: Add frame buffer device driver > >> > >> On Fri, Nov 12, 2010 at 8:18 AM, Jimmy RUBIN > >> <jimmy.ru...@stericsson.com> wrote: > >> > Hi Alex, > >> > > >> > Good point, we are looking at this for possible future improvements > >> but for the moment we feel like > >> > the structure of drm does not add any simplifications for our driver. > >> We have the display manager (MCDE DSS = KMS) and the memory manager > >> (HWMEM = GEM) that could be migrated to drm framework. But we do not > >> have drm drivers for 3D hw and this also makes drm a less obvious > >> choice at the moment. > >> > > >> > >> You don't have to use the drm strictly for 3D hardware. historically > >> that's why it was written, but with kms, it also provides an interface > >> for complex display systems. fbdev doesn't really deal properly with > >> multiple display controllers or connectors that are dynamically > >> re-routeable at runtime. I've seen a lot of gross hacks to fbdev to > >> support this kind of stuff in the past, so it'd be nice to use the > >> interface we now have for it if you need that functionality. > >> Additionally, you can use the shared memory manager to both the > >> display side and v4l side. While the current drm drivers use GEM > >> externally, there's no requirement that a kms driver has to use GEM. > >> radeon and nouveau use ttm internally for example. Something to > >> consider. I just want to make sure people are aware of the interface > >> and what it's capable of. > >> > >> Alex > >> > >> > Jimmy > >> > > >> > -----Original Message----- > >> > From: Alex Deucher [mailto:alexdeuc...@gmail.com] > >> > Sent: den 10 november 2010 15:43 > >> > To: Jimmy RUBIN > >> > Cc: linux-fb...@vger.kernel.org; linux-arm- > >> ker...@lists.infradead.org; linux-media@vger.kernel.org; Linus WALLEIJ; > >> Dan JOHANSSON > >> > Subject: Re: [PATCH 00/10] MCDE: Add frame buffer device driver > >> > > >> > On Wed, Nov 10, 2010 at 7:04 AM, Jimmy Rubin > >> <jimmy.ru...@stericsson.com> wrote: > >> >> These set of patches contains a display sub system framework (DSS) > >> which is used to > >> >> implement the frame buffer device interface and a display device > >> >> framework that is used to add support for different type of displays > >> >> such as LCD, HDMI and so on. > >> > > >> > For complex display hardware, you may want to consider using the drm > >> > kms infrastructure rather than the kernel fb interface. It provides > >> > an API for complex display hardware (multiple encoders, display > >> > controllers, etc.) and also provides a legacy kernel fb interface for > >> > compatibility. See: > >> > Documentation/DocBook/drm.tmpl > >> > drivers/gpu/drm/ > >> > in the kernel tree. > >> > > >> > Alex > >> > > >> >> > >> >> The current implementation supports DSI command mode displays. > >> >> > >> >> Below is a short summary of the files in this patchset: > >> >> > >> >> mcde_fb.c > >> >> Implements the frame buffer device driver. > >> >> > >> >> mcde_dss.c > >> >> Contains the implementation of the display sub system framework > >> (DSS). > >> >> This API is used by the frame buffer device driver. > >> >> > >> >> mcde_display.c > >> >> Contains default implementations of the functions in the display > >> driver > >> >> API. A display driver may override the necessary functions to > >> function > >> >> properly. A simple display driver is implemented in display- > >> generic_dsi.c. > >> >> > >> >> display-generic_dsi.c > >> >> Sample driver for a DSI command mode display. > >> >> > >> >> mcde_bus.c > >> >> Implementation of the display bus. A display device is probed when > >> both > >> >> the display driver and display configuration have been registered > >> with > >> >> the display bus. > >> >> > >> >> mcde_hw.c > >> >> Hardware abstraction layer of MCDE. All code that communicates > >> directly > >> >> with the hardware resides in this file. > >> >> > >> >> board-mop500-mcde.c > >> >> The configuration of the display and the frame buffer device is > >> handled > >> >> in this file > >> >> > >> >> NOTE: These set of patches replaces the patches already sent out for > >> review. > >> >> > >> >> RFC:[PATCH 1/2] Video: Add support for MCDE frame buffer driver > >> >> RFC:[PATCH 2/2] Ux500: Add support for MCDE frame buffer driver > >> >> > >> >> The old patchset was to large to be handled by the mailing lists. > >> >> > >> >> Jimmy Rubin (10): > >> >> MCDE: Add hardware abstraction layer > >> >> MCDE: Add configuration registers > >> >> MCDE: Add pixel processing registers > >> >> MCDE: Add formatter registers > >> >> MCDE: Add dsi link registers > >> >> MCDE: Add generic display > >> >> MCDE: Add display subsystem framework > >> >> MCDE: Add frame buffer device driver > >> >> MCDE: Add build files and bus > >> >> ux500: MCDE: Add platform specific data > >> >> > >> >> arch/arm/mach-ux500/Kconfig | 8 + > >> >> arch/arm/mach-ux500/Makefile | 1 + > >> >> arch/arm/mach-ux500/board-mop500-mcde.c | 209 ++ > >> >> arch/arm/mach-ux500/board-mop500-regulators.c | 28 + > >> >> arch/arm/mach-ux500/board-mop500.c | 3 + > >> >> arch/arm/mach-ux500/devices-db8500.c | 68 + > >> >> arch/arm/mach-ux500/include/mach/db8500-regs.h | 7 + > >> >> arch/arm/mach-ux500/include/mach/devices.h | 1 + > >> >> arch/arm/mach-ux500/include/mach/prcmu-regs.h | 1 + > >> >> arch/arm/mach-ux500/include/mach/prcmu.h | 3 + > >> >> arch/arm/mach-ux500/prcmu.c | 129 ++ > >> >> drivers/video/Kconfig | 2 + > >> >> drivers/video/Makefile | 1 + > >> >> drivers/video/mcde/Kconfig | 39 + > >> >> drivers/video/mcde/Makefile | 12 + > >> >> drivers/video/mcde/display-generic_dsi.c | 152 ++ > >> >> drivers/video/mcde/dsi_link_config.h | 1486 > >> ++++++++++++++ > >> >> drivers/video/mcde/mcde_bus.c | 259 +++ > >> >> drivers/video/mcde/mcde_config.h | 2156 > >> ++++++++++++++++++++ > >> >> drivers/video/mcde/mcde_display.c | 427 ++++ > >> >> drivers/video/mcde/mcde_dss.c | 353 ++++ > >> >> drivers/video/mcde/mcde_fb.c | 697 +++++++ > >> >> drivers/video/mcde/mcde_formatter.h | 782 ++++++++ > >> >> drivers/video/mcde/mcde_hw.c | 2528 > >> ++++++++++++++++++++++++ > >> >> drivers/video/mcde/mcde_mod.c | 67 + > >> >> drivers/video/mcde/mcde_pixelprocess.h | 1137 +++++++++++ > >> >> include/video/mcde/mcde.h | 387 ++++ > >> >> include/video/mcde/mcde_display-generic_dsi.h | 34 + > >> >> include/video/mcde/mcde_display.h | 139 ++ > >> >> include/video/mcde/mcde_dss.h | 78 + > >> >> include/video/mcde/mcde_fb.h | 54 + > >> >> 31 files changed, 11248 insertions(+), 0 deletions(-) > >> >> create mode 100644 arch/arm/mach-ux500/board-mop500-mcde.c > >> >> create mode 100644 drivers/video/mcde/Kconfig > >> >> create mode 100644 drivers/video/mcde/Makefile > >> >> create mode 100644 drivers/video/mcde/display-generic_dsi.c > >> >> create mode 100644 drivers/video/mcde/dsi_link_config.h > >> >> create mode 100644 drivers/video/mcde/mcde_bus.c > >> >> create mode 100644 drivers/video/mcde/mcde_config.h > >> >> create mode 100644 drivers/video/mcde/mcde_display.c > >> >> create mode 100644 drivers/video/mcde/mcde_dss.c > >> >> create mode 100644 drivers/video/mcde/mcde_fb.c > >> >> create mode 100644 drivers/video/mcde/mcde_formatter.h > >> >> create mode 100644 drivers/video/mcde/mcde_hw.c > >> >> create mode 100644 drivers/video/mcde/mcde_mod.c > >> >> create mode 100644 drivers/video/mcde/mcde_pixelprocess.h > >> >> create mode 100644 include/video/mcde/mcde.h > >> >> create mode 100644 include/video/mcde/mcde_display-generic_dsi.h > >> >> create mode 100644 include/video/mcde/mcde_display.h > >> >> create mode 100644 include/video/mcde/mcde_dss.h > >> >> create mode 100644 include/video/mcde/mcde_fb.h > >> >> > >> >> -- > >> >> To unsubscribe from this list: send the line "unsubscribe linux- > >> media" in > >> >> the body of a message to majord...@vger.kernel.org > >> >> More majordomo info at http://vger.kernel.org/majordomo-info.html > >> >> > >> > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Earthling Michel Dänzer | http://www.vmware.com Libre software enthusiast | Debian, X and DRI developer -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html