Qualcomm 2d 3d graphics driver




















Have you been hamstrung by the limitations of vendor provided binary blobs for GPU drivers in your ARM-based embedded systems? How about having access to open-source embedded Linux graphics drivers to write your own graphics applications? If so, this downloadable new whitepaper from Inforce Computing might be helpful. As you may know, Qualcomm Snapdragon applications processors have a powerful and in-built high-performance Graphics Processing Unit GPU for accelerating 2D and 3D graphics-intensive applications.

In modern embedded system user interfaces, graphics is increasingly becoming important. Having access to an open source graphics driver enables generation of new widgets, new features, etc.

I'm writing this email because we think it is high time that we get off the bench, into the game and push support for the Qualcomm graphics cores to the mainline kernel. We are looking for advice and comment from the community on the approach we have taken and what steps we might need to take, if any, to modify the driver so it can be accepted.

I'm going to offer up a quick description of the hardware and describe our current approach as well as our current development plan for the summer.

Our goal is to start pushing this code upstream as quickly as possible, so comments and flames would be greatly appreciated. The GPU is, as expected, a platform device located on the same die as the processor. The registers are mapped into the physical address space of the processor. There device also shares memory with the main processor; there is no dedicated memory on board for the GPU. Some processor variants also have a separate 2D core attached. The 2D core is also a platform device with shared memory and a MM.

While the general interface is similar to the 3D core, the 2D GPU has its own separate pipeline and interrupt. PMEM is not ideal because the contiguous memory it uses needs to be carved out of bootmem at init time and is lost to the general system pool, so the driver was switched to use paged memory allocated via vmalloc and mapped into the GPU MMU.



0コメント

  • 1000 / 1000