====== Engineer a Feature Complete Port of Intel's igt-gpu-tools for FreeBSD ====== * Student: [[/JakeFreeland|JakeFreeland]] * Mentors: [[/EmmanuelVadot|EmmanuelVadot]] and [[/JosephMingrone|JosephMingrone]] ===== Project description ===== Intel’s igt-gpu-tools serves as a generic testing suite for drm drivers on Linux. The igt-gpu-tools suite is seperated into tests and tools where tests are the primary focus of the project. These tests target the kernel API: specifically kms, memory management, and command submission. This low-level reporting allows for transparent tracking of kernel changes and efficient debugging. Development of igt-gpu-tools shifted in 2019 to focus on generic kms-driven tests. The vendor-agnostic foundation of kms allows for igt-gpu-tools to function on a wide range of hardware. This versatility makes igt-gpu-tools extremely helpful when developing and debugging new drm drivers. Porting the project to %%FreeBSD%% could introduce greater stability in future releases of %%FreeBSD%%’s %%LinuxKPI%%-driven drm drivers. ===== Approach to solving the problem ===== Before porting igt-gpu-tools, the CONFIG_DEBUG_FS flag must be properly implemented in drm-kmod. The debugfs filesystem permits file sharing between the kernel and user space for debugging purposes.Emmanuel Vadot put some debugfs patches together, but has not upstreamed them to src yet. I will analyze the existing patches, ensure proper functionality, and implement a clean solution before proceeding with the igt-gpu-tools port. Once the CONFIG_DEBUG_FS implementation is complete, I will take a look at Emmanuel Vadot and Mark Johnston’s incomplete igt-gpu-tools ports and carry over any functional code to my new port. After all existing code has been merged, I will start my own porting process. A high quality port will require extensive testing and debugging which will likely occupy the remainder of this Google Summer of Code project. ===== Deliverables ===== A feature complete port of Intel's igt-gpu-tools for %%FreeBSD%%. ===== Milestones ===== June 13: Get igt-gpu-tools to compile on %%FreeBSD%% (Project Start) June 22: Start debugfs, libprocps, libkmod implementations June 29: Finish debugfs implementation with others on the way July 29: Produce working KMS tests (Phase 1 Evaluation) August 29: Produce working non-KMS tests September 06: Ensure port is feature complete and functional (Final Submission) November 21: Extended development and testing (Extended Final Submission) ===== Test Plan ===== With this lineup, I should be able to get a good idea of the port’s stability using the igt-gpu-tools tests and tools: * Sandy Bridge (2011) Intel Integrated HD Graphics * Radeon RDNA 2 (2020) Graphics * Alder Lake (2021) Intel Integrated UHD Graphics I will walk through the igt-gpu-tools tests for each graphics processor listed above and compare results to the native Linux build. If results are significantly different, I will revisit my implementation. ===== The Code ===== [[https://github.com/jakesfreeland/igt-gpu-tools-freebsd|igt-gpu-tools Git]] [[https://github.com/jakesfreeland/debugfs-freebsd|debugfs Git]] ===== Useful links ===== [[https://cdaemon.com/tags/gsoc2022|cdaemon: development process]]