[Development] New repository request for an accelerated 2D drawing module

Volker Hilsheimer volker.hilsheimer at qt.io
Wed Nov 5 09:58:39 CET 2025



> On 4 Nov 2025, at 11:41, Laszlo Agocs via Development <development at qt-project.org> wrote:
> 
> Hello,
>  I would like to request a new repository for a compact, QRhi-based 2D painter based on QNanoPainter (https://github.com/QUItCoding/qnanopainter) by Kaj.
>  This is not intended to replace QPainter, but rather to provide a compact API that is more suitable to be layered on top of QRhi.
>  The main goals are to
>  use this in Qt Graphs for a high-performance Charts implementation,
> to enable creating a better Canvas implementation for Qt Quick,
> to investigate building a paint engine on top of this for accelerating widgets,
> and to offer a QQuickPaintedItem variant that is always hardware accelerated, for integrating imperative 2D drawing into Qt Quick scenes.
>  Name of the repository: qt/qtcompactpainter
> Responsible person: Kaj Grönholm, kagro, kaj.gronholm at qt.io
> Description: Accelerated 2D painting solution for Qt Quick and QRhi-based render targets
>  Best regards,
> Laszlo and Kaj


I hope the hive mind here can find a better name for this than “Compact”, which I think is a rather subjective term that doesn’t say much. It’s faster - for certain use cases; it will have some API limitations compared to QPainter; it might or might not be smaller in terms of binary size and/or runtime footprint. It will grow over time, and then become less compact.

We don’t want to use QRhi* for this family of classes and types, because that’s a very low-level namespace.

One term that has been established for this kind of rendering is “Immediate”. While using that directly might be a bit too much of a nod towards ImGui (and generally the expectation that the framework doesn’t manage any state), a decent synonym for that is perhaps “Direct” (which is then again a bit close to Microsoft terminology…). Both indicate that the rendering bypasses (or doesn’t bother with) the scene graph data structures.

The module’s name could then perhaps be Qt DirectPainting, with a family of related classes, including a QDirectPainter?


Volker



More information about the Development mailing list