Write something...
Announcement
Collapse
No announcement yet.
How to get involved with open source Radeon driver development (Newbie Friendly)
Collapse
X
-
How to get involved with open source Radeon driver development (Newbie Friendly)
Last edited by siavashserver; 23 February 2017, 07:33 AM.Tags: None
-
-
Originally posted by siavashserver View PostI'm sure there is a lot of people out there whose inner hackers wants to someday get involved with open source Radeon driver or Mesa development, but lack of introductory and scattered material makes it to look like a black box to them. So I'm asking developers involved with Mesa and open source drivers development to take a part in this discussion and share their experience.
We are going to assume that target audience (newbie) does already have a solid knowledge of C programming language.
1) First things first. What is usual set of documents, tool chain and software required to develop, test and debug drivers by developers?
2) Where to access source code, fork and start developing?
3) What compiler switches and libraries should be used during development?
4) How is work flow of development and testing drivers happening? (Dual boot, virtual machines, etc)
5) Is it mandatory to have access to multiple generations of hardware to get started?
6) How is Mesa and open source drivers source code structured? (Related directories and files)
7) How do drivers work internally? (Important functions and their calling order)
8) Where are the usual hot spots and how to profile the code?
9) What is usual coding conventions and styles being used?
10) What kind of tasks should newbies start with? Is there any list?
11) Who and where to ask when in trouble?
Feel free to add your own if anything necessary is missed.
Have fun.
Comment
-
Originally posted by siavashserver View PostI'm sure there is a lot of people out there whose inner hackers wants to someday get involved with open source Radeon driver or Mesa development, but lack of introductory and scattered material makes it to look like a black box to them. So I'm asking developers involved with Mesa and open source drivers development to take a part in this discussion and share their experience.
We are going to assume that target audience (newbie) does already have a solid knowledge of C programming language.
1) First things first. What is usual set of documents, tool chain and software required to develop, test and debug drivers by developers?
The hardware documentation is here, but good knowledge of OpenGL and/or Direct3D is assumed if you want to understand the 3D docs:
Originally posted by siavashserver View Post2) Where to access source code, fork and start developing?
http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/ - X driver
http://cgit.freedesktop.org/mesa/drm/ - some shared code between the two above
http://cgit.freedesktop.org/~agd5f/linux/ - Alex's kernel tree with latest stuff for Radeon
http://llvm.org/docs/GettingStarted.html - The shader compiler backend for Southern Islands lives in LLVM, so you might need that too.
Originally posted by siavashserver View Post3) What compiler switches and libraries should be used during development?
Originally posted by siavashserver View Post4) How is work flow of development and testing drivers happening? (Dual boot, virtual machines, etc)
Originally posted by siavashserver View Post5) Is it mandatory to have access to multiple generations of hardware to get started?
Originally posted by siavashserver View Post6) How is Mesa and open source drivers source code structured? (Related directories and files)
mesa/src/mesa/state_tracker - the OpenGL middle-end
mesa/src/gallium/drivers/radeonsi - the hardware driver (API-independent back-end)
And there is also a lot of code in various directories of Mesa that the 3 parts above use.
Originally posted by siavashserver View Post7) How do drivers work internally? (Important functions and their calling order)
Originally posted by siavashserver View Post8) Where are the usual hot spots and how to profile the code?
Originally posted by siavashserver View Post9) What is usual coding conventions and styles being used?
Originally posted by siavashserver View Post10) What kind of tasks should newbies start with? Is there any list?
Originally posted by siavashserver View Post11) Who and where to ask when in trouble?
Comment
-
Originally posted by siavashserver View Post4) How is work flow of development and testing drivers happening? (Dual boot, virtual machines, etc)
Comment
-
Originally posted by siavashserverThat's interesting, I thought that involves complete system reboot.
1) If it's the kernel part of the driver, you need a complete reboot. The kernel mostly does low-level tasks like mode setting, memory management, and sending commands to the hardware. If you work on those, you'll reboot very often.
2) If it's the X driver, you need to restart X (just log out and log in)
3) If it's the Mesa OpenGL driver, you only need to restart the app that you test with, because the OpenGL driver is loaded when an OpenGL context is created. It's the same for VDPAU and OpenCL.
Originally posted by siavashserverFor code debugging and profiling process, debug symbols are required. Is it necessary to manually compile Linux kernel beside Mesa and Radeon drivers too?
Originally posted by siavashserverDuring which step of development do you guys test your code with open source games and other demanding applications? (or Phoronix test suit)
Comment
-
Ian Romanick posted a wiki with some project suggestions for people wanting to get into Mesa development. Hopefully, experienced people will avoid these projects.
See: http://wiki.freedesktop.org/dri/NewbieProjects/
The announcement: http://lists.freedesktop.org/archive...er/048905.html
Comment
-
Originally posted by siavashserverIt looks like all those tasks are new OpenGL 4 extensions. Is it possible for newbies owning OpenGL 3 capable and older graphics cards to pick up those?
Comment
-
Originally posted by siavashserverI had a look at supported extensions by FGLRX for my 4890, but none of them is supported. Is that a show stopper?
Here is the list of supported OpenGL extensions: http://pastebin.kde.org/pglnnibhx
Comment
-
Most things have been answered here already but just a couple of things to add:
Originally posted by siavashserver View Post6) How is Mesa and open source drivers source code structured? (Related directories and files)
docs/sourcetree.html - Has an overview of the directory structures
Originally posted by siavashserver View Post9) What is usual coding conventions and styles being used?
docs/devinfo.html - Provides some tips to new developers including coding styles information.
These files are also avaliable on the Mesa website but they not as up to date.
Comment
Comment