a KDAB Customer Showcase
NVIDIA is world renowned as a leader in computer graphics, AI, and Data Centre solutions. It nurtures an ecosystem for developers and enables cutting edge 3D Graphics through its GeForce, Quadro, and Tegra lines of GPUs that provide powerful computing ability and cutting-edge features such as ray tracing. NVIDIA supports developers with performance optimization tools for gaming, work-stations, automotive and embedded systems.
In 2021, NVIDIA incorporated KDAB’s KDDockWidgets into their software toolkit, built with Qt, thus giving a number of related developer tools, including Nsight GraphicsTM and Nsight Deep Learning DesignerTM, a powerful set of window management capabilities and a consistent look and feel. This builds on NVIDIA’s aim to provide a common foundation across the toolset and for a wide variety of tool combinations to suit customer’s needs.
At KDAB, we were curious to know how it went so we talked to Daniel Price, Engineering Manager for the NVIDIA Nsight Graphics tool.
What led you to KDDockWidgets?
Several years ago we identified that our window management was limiting our user experience. We had a homegrown library that offered some basic window management features, but as we wanted to scale to more tools (and more complex tools) we found that our system could not gracefully accommodate the needs that we had. We began looking at packages that could deliver upon the needs that we had, and we discovered KDDockWidgets in our search.
What persuaded you that KDDockWidgets was worth investing in?
As we completed our evaluation of KDDockWidgets and other alternatives, there were a number of factors that put KDDockWidgets at the top of our list. Firstly, we found that the example application within the KDDockWidgets package provided a compelling hands-on look experience with the tool. Screenshots are very valuable, but being able to interact with the software and play with the modes and configurability of the tool offered an experience from which we could extrapolate what we get, were we to use the tool. Secondly, we found that the licensing structure was friendly to our organization – by being open source, we were able to see the high quality of the code itself as well as the pace in which the engineers at KDAB develop the tool, while having a commercial licensing option allowed us to fit the library into our products in a way that met our licensing needs. Lastly, the fact that the tool is actively developed and supported by KDAB is a huge boon to us – KDAB’s reputation is excellent and we could have confidence that we would both receive quality updates as well as excellent support when we needed it.
What was your experience integrating it into your software?
Our experience started with getting an understanding of the model and APIs that applications use to integrate KDDockWidgets, and from there most of the challenge was determining the way to translate our abstractions into that model. The KDDockWidgets model was clean, although in some cases our own abstractions were not, and so we did have some work on our side to translate and adapt. In some cases, we identified areas where additions to KDDockWidgets could offer us some help, and we reached out to KDAB for support, and received quick and excellent advice and guidance from the team.
What has been your experience working with KDAB engineers?
Over the years that we have been using the tool, we have had a few feature requests for KDAB. The engineers at KDAB (especially Sérgio) have been readily responsive, and in some cases implemented our requests within days! Not only has this turnaround time been great, but it is always excellent to see the test-driven philosophy with which KDDockWidgets is developed, as this offers us a confidence that the work we receive will be of high quality.
What have you gained as a result?
Once we integrated KDDockWidgets, we unlocked the potential of our tool windows in our software. We found that our management just worked better in general, and being able to dock in ways we weren’t able to previously made the experience easier for our users. Window management primitives like pinning offered us an opportunity to reassess how we organize our default layouts, as well. Improved window management was a long-standing feature request from our users and it was great to be able to deliver our users a capability that was so polished and stable.
What do you hope for in the future?
I have been very happy to see the steady pace of development and polish that KDDockWidgets has received, and I hope to see that maintained in the future.
Anything you’d like to add?
It’s been a pleasure working with KDAB, both in this KDDockWidgets integration as well as in some consulting work that KDAB completed for us on other products.
Nsight Graphics is a standalone application for the debugging, profiling, and analysis of graphics applications. Nsight Graphics supports applications built with DirectCompute, Direct3D (11, 12), OpenGL, Vulkan, Oculus SDK, and OpenVR. Nsight Graphics™ helps improve productivity, ease development time and aid in creating high-fidelity graphics with great frame rates. It is particularly helpful in the gaming and professional visualization industries where optimum performance is key.
Nsight DL Designer is an integrated development environment that helps developers efficiently design and develop deep neural networks for in-app inference.
KDDockWidgets is an advanced docking system for Qt – not just a useful library, but a framework for custom-tailored docking systems in Qt that offers many improvements and advantages over the existing QDockWidget. KDDockWidgets supports Wayland and is tested on both Qt 5.15 and Qt 6. Experimental support for QtQuick is already being successfully used by applications such as MuseScore and the included WASM support means KDDockWidgets works in applications that run in your browser.
Check out this video from NVidia at Qt World Summit 2021: How NVIDIA Nsight Graphics Utilizes Qt to Create Powerful Tools for 3D Graphics | Graphics