Hi,
I'm new here and I'm currently considering a new project in the realm of OS development. However since I'm new to the topic, I would like to ask you about how realistic it is, since you probably have a better understanding and your opinion therefore would be very valuable to me.
- My plan:
I'd like to have some fun while learning something new and maybe have a satisfying outcome. I have some ideas in my head I would like to realize to see how they would work out and see if there is any potential. I would like to keep the project as small as possible and therefore I would sacrifice a lot, like a great shell, linux compatibility (ELF, POSIX, etc.) and therefore an already developed user space... actually I wouldn't mind to have almost no user space at all as long as I have the possibility to build it myself (which I don't really consider in order to keep the project scope small)
- My problem:
Now I see with all your projects, that this is achieveable... but I would really, really want to have a proper graphics system going on. I would be contempt with a text mode during initial development for debug output and stuff, but part of my vision is to have a proper graphics system. And with that I do not mean VGA or VESA or anything, but really a 1920x1080 resolution. Even in this case I would be willing to sacrifice features like multi device support (I would limit myself to embedded Intel Graphic Cards if that would help) and I would sacrifice hardware acceleration, 3D rendering and media playback... as long as I could paint highres 2D pictures on my LCD (no need for CRTs)
- Your opinion?
Is this realistic? My understanding is that Intel drivers for Linux are open source so in theory it has to be possible, but is it practical to develop my own Intel drivers on that base or is that to much for a single person to handle? Just for comparision: Would you know what to do and how long would it take you to write such drivers? I spent several hours looking into the available documentation: https://01.org/linuxgraphics/documentation, however I wasn't really able to get how to do it. With VGA it seems easy... you have a mirrored memory space, which is your frame buffer. I couldn't really find anything like that in the docs. I couldn't even find instructions on how to change the display resolution. While the documentation contains a lot of infos, I have a hard time figuring out what of the info is relevant and how could I use it. It seems there is no tutorial or example and I couldn't find anything on the web. I also tried looking through the sources (https://01.org/linuxgraphics/downloads), but I again had a hard time figuring out where to start looking and what is relevant.
I would highly appreciate your thoughts on my situation!
(Just in case you wondering about my background:
I'm having several years of experience in programming and reading/analyzing/reviewing foreign code. Usually I have no problems to work myself into you topics or systems as long as there is an appropriate documentation, but I often also can get by by debugging/analyzing foreign source code. Having that said, I usually work with Java. My C is worse, but good enough to read most code without having to look up stuff. I grasp Assembler concepts and did some myself, but I'm not really proficient there. I used Linux for several years, but have basically 0 experience in driver programming. I programmed video games and used some basic OpenGL, but had a hard time reading the Intel docs referenced above)
How realistic is it to develop advanced graphic drivers?
Re: How realistic is it to develop advanced graphic drivers?
Getting Intel's integrated graphics hardware to set the video mode and blit 2D images shouldn't be too hard, compared to something like reverse engineering an Nvidia card- they do publish specs and implement open source drivers themselves. It would certainly still take a lot of work and persistence, especially if you haven't done a lot of low-level device driver-like work before.
- Combuster
- Member
- Posts: 9301
- Joined: Wed Oct 18, 2006 3:45 am
- Libera.chat IRC: [com]buster
- Location: On the balcony, where I can actually keep 1½m distance
- Contact:
Re: How realistic is it to develop advanced graphic drivers?
Getting just a framebuffer up and running is a good step for starters, and if you don't mind reading linux framebuffer/X.org drivers, you should be able to figure it out eventually.
But before you do that, you might want to consider practising the basics by learning yourself to set arbitrary resolutions on a VGA. You come across all the fundamentals that way, and the documentation is far better. Intel might be considered as having documentation, but it's considered insufficient on its own - even by the linux driver developers, but you'll at least be aware of what needs to be done on an abstract level by the time you get there.
But before you do that, you might want to consider practising the basics by learning yourself to set arbitrary resolutions on a VGA. You come across all the fundamentals that way, and the documentation is far better. Intel might be considered as having documentation, but it's considered insufficient on its own - even by the linux driver developers, but you'll at least be aware of what needs to be done on an abstract level by the time you get there.
- Bender
- Member
- Posts: 449
- Joined: Wed Aug 21, 2013 3:53 am
- Libera.chat IRC: bender|
- Location: Asia, Singapore
Re: How realistic is it to develop advanced graphic drivers?
I linked to this page a few weeks ago on another topic, I'll link to it again:
http://renderingpipeline.com/graphics-l ... mentation/
(A lot of links seem to be dead, but it at least has proper manuals for Intel Graphics chipsets)
And then there's x.org: http://www.x.org/docs/
http://renderingpipeline.com/graphics-l ... mentation/
(A lot of links seem to be dead, but it at least has proper manuals for Intel Graphics chipsets)
And then there's x.org: http://www.x.org/docs/
"In a time of universal deceit - telling the truth is a revolutionary act." -- George Orwell
(R3X Runtime VM)(CHIP8 Interpreter OS)
(R3X Runtime VM)(CHIP8 Interpreter OS)