The Importance of Memory Allocation and General Computer Architecture When Building a Desktop Engine
The age of science fiction is near and general purpose science fiction user interfaces are the dawn of the future. Growth in high performance 3D graphics hardware and next generation low-level 3D graphics APIs like Vulkan have put high quality user interfaces in the grasp of everyday users. However understanding that the multitude of buffers and CPU/GPU related operations can greatly diminish the performance of an individuals operating system. When building something like a desktop engine used in the creation of science fiction user interfaces one must understand that other applications must run efficiently inside of your custom desktop environment. To solve the problem of building custom desktop environments specifically for Linux, making it easier, more customizable, more efficient in terms of both virtual/physical memory and CPU/GPU data movement and execution is currently a library later a Desktop Engine called lucurious (https://github.com/EasyIP2023/lucurious). It stands for (L) Lowkey (U) Unsure and curious if this is even possible, but why stop now! It uses Vulkan’s 3D graphics compute API as its primary renderer and does operations using DRM, KMS, and the Wayland Display server protocol to assist in the progression of more general purpose science fiction user interfaces. The approach this thesis takes is not one of understanding the Linux graphics stack or how 3D rendering works, but more how virtual addresses that contain handles to data (i.e. images, buffers, etc ...) are converted into physical addresses to be later read, written, or executed by the CPU. To demonstrate the feasibility of this approach this thesis presents lucurious a novel Vulkan Wayland Compositing library which allows clients to create general purpose science fiction user interfaces the same traditional way of creating 2D user interfaces, without the need of having the necessary background knowledge about Vulkan, Wayland, memory allocation or hardware execution. This would mean that programmers could build immersive desktop environments that appear to be from science fiction without the need to know much about the underlying hardware and operating system.