When your OS goes crazy - Screenshots

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
User avatar
zesterer
Member
Member
Posts: 59
Joined: Mon Feb 22, 2016 4:40 am
Libera.chat IRC: zesterer
Location: United Kingdom
Contact:

Re: When your OS goes crazy - Screenshots

Post by zesterer »

Korona wrote:
octacone wrote:That is actually impressive! Btw what do you mean by native graphics driver? Setting a bad pixel clock? What is your method, VESA or VGA?
I'm using neither VESA nor VGA. I manipulate the native registers of the graphics card (i.e. I set a pixel clock, display timings, program the framebuffer address and enable graphics output). The driver can set any mode (e.g. 1920x1080@32bpp) that is supported by the card and the monitor. I do not have to use the BIOS or any third party functionality. However keep in mind that the driver is tied to Intel G45 and similar chipsets.

It is easy to extend this to hardware double/triple/whatever buffering on VSYNC, hardware mouse cursors, hardware overlays (i.e. displaying a second framebuffer inside a window) and multiple monitors. My code does not support acceleration (BLTing or shaders) yet though.
Wow, that's incredible. Is your code open-source? I'd love to take a look at it in order to see what you're doing; Intel's documentation is a little overwhelming for someone without extensive experience of embedded systems like me. Given that it's the Intel G45, is this driver also compatible with most Intel HD integrated graphics chips?
Current developing Tupai, a monolithic x86 operating system
http://zesterer.homenet.org/projects.shtml
Korona
Member
Member
Posts: 1000
Joined: Thu May 17, 2007 1:27 pm
Contact:

Re: When your OS goes crazy - Screenshots

Post by Korona »

zesterer wrote:Wow, that's incredible. Is your code open-source? I'd love to take a look at it in order to see what you're doing; Intel's documentation is a little overwhelming for someone without extensive experience of embedded systems like me. Given that it's the Intel G45, is this driver also compatible with most Intel HD integrated graphics chips?
Yes, my code is available here on github (beware of C++ operator overloading). I did not push the DDC code for getting EDID information without the BIOS yet (which is required to discover the video modes that a connected monitor supports). I also did not spend much time on cleaning up the code yet. I plan to write a wiki page that explains how to do the mode set.

About portability to other graphics chips: The driver as-is should work for all (non-mobile) third generation Intel graphics chips from this list (i.e. all card produced in 2006-2009). There would be minor changes required for generation 3 chips. I don't think it is worthwhile to support anything below generation 3.

For later generations: Regarding the display registers there are two notable overhauls in Intel HD graphics chips: The first is the introduction of Ironlake and the second the introduction of Haswell. All chips in between do not need many changes in the driver. The greatest difference between Ironlake and G45 is that Ironlake shares clock sources between different display pipelines so you need a mechanism to allocate clock sources (which is trivial if you only use one display pipe). I did not yet look into the changes introduced with Haswell.

That being said I do think that it is possible to support those generations if you want to. I do not think that writing a mode setting driver for the newer generations is much more complicated than writing a mode setting driver for the G45. The hardware might be a bit more complex but it is also much better documented. I did not choose G45 because it is easy; I just chose it because that is the hardware that I had available :D.
managarm: Microkernel-based OS capable of running a Wayland desktop (Discord: https://discord.gg/7WB6Ur3). My OS-dev projects: [mlibc: Portable C library for managarm, qword, Linux, Sigma, ...] [LAI: AML interpreter] [xbstrap: Build system for OS distributions].
User avatar
zesterer
Member
Member
Posts: 59
Joined: Mon Feb 22, 2016 4:40 am
Libera.chat IRC: zesterer
Location: United Kingdom
Contact:

Re: When your OS goes crazy - Screenshots

Post by zesterer »

Korona wrote:
zesterer wrote:Wow, that's incredible. Is your code open-source? I'd love to take a look at it in order to see what you're doing; Intel's documentation is a little overwhelming for someone without extensive experience of embedded systems like me. Given that it's the Intel G45, is this driver also compatible with most Intel HD integrated graphics chips?
Yes, my code is available here on github (beware of C++ operator overloading). I did not push the DDC code for getting EDID information without the BIOS yet (which is required to discover the video modes that a connected monitor supports). I also did not spend much time on cleaning up the code yet. I plan to write a wiki page that explains how to do the mode set.

...
Thanks a lot for this info, that's really helpful. I'd love to see a wiki page that gives a high-level explanation of it all: modesetting as run-time would be great.
Current developing Tupai, a monolithic x86 operating system
http://zesterer.homenet.org/projects.shtml
User avatar
Sik
Member
Member
Posts: 251
Joined: Wed Aug 17, 2016 4:55 am

Re: When your OS goes crazy - Screenshots

Post by Sik »

My integer-to-text routine has a particular way to handle 0x80000000 (it was supposed to show -2147483648):

Image

It was fixed, the routine was going through 31 bits because I was stupid enough to assume the MSB would be clear after making the integer positive. Go figure. (no, division wouldn't do the job because I'm on a decades old CPU and that'd take ages, besides I only get 16-bit division which only makes it worse =P took a different approach by adding BCD numbers instead)

EDIT: if anybody is interested on the routine (without the bug, that is):
http://gendev.spritesmind.net/forum/vie ... f=2&t=2573
Last edited by Sik on Mon Feb 13, 2017 6:14 am, edited 1 time in total.
User avatar
MajickTek
Member
Member
Posts: 101
Joined: Sat Dec 17, 2016 6:58 am
Libera.chat IRC: MajickTek
Location: The Internet
Contact:

Re: When your OS goes crazy - Screenshots

Post by MajickTek »

Sik wrote:My integer-to-text routine has a particular way to handle 0x80000000 (it was supposed to show -2147483648):

Image

It was fixed, the routine was going through 31 bits because I was stupid enough to assume the MSB would be clear after making the integer positive. Go figure. (no, division wouldn't do the job because I'm on a decades old CPU and that'd take ages, besides I only get 16-bit division which only makes it worse =P took a different approach by adding BCD numbers instead)
Is your OS public/open source? I love it's ideas (and the OS itself) and would love to study your code.
EDIT: if the source isn't available I would still like to test it in a VM.
Last edited by MajickTek on Mon Feb 13, 2017 6:16 am, edited 1 time in total.
Everyone should know how to program a computer, because it teaches you how to think! -Steve Jobs

Code: Select all

while ( ! ( succeed = try() ) ); 
User avatar
Sik
Member
Member
Posts: 251
Joined: Wed Aug 17, 2016 4:55 am

Re: When your OS goes crazy - Screenshots

Post by Sik »

Not yet, I want to finish the calculator first =/ (I need to come up with an easy division algorithm, I've been slacking off on that) Though yes I do intend to release the source code.
User avatar
MajickTek
Member
Member
Posts: 101
Joined: Sat Dec 17, 2016 6:58 am
Libera.chat IRC: MajickTek
Location: The Internet
Contact:

Re: When your OS goes crazy - Screenshots

Post by MajickTek »

Sik wrote:Not yet, I want to finish the calculator first =/ (I need to come up with an easy division algorithm, I've been slacking off on that) Though yes I do intend to release the source code.
Thanks for telling me! :D
Everyone should know how to program a computer, because it teaches you how to think! -Steve Jobs

Code: Select all

while ( ! ( succeed = try() ) ); 
User avatar
Elttob
Member
Member
Posts: 28
Joined: Mon Sep 12, 2016 10:21 am
Location: London, UK
Contact:

Re: When your OS goes crazy - Screenshots

Post by Elttob »

Sik wrote:My integer-to-text routine has a particular way to handle 0x80000000 (it was supposed to show -2147483648):

Image

It was fixed, the routine was going through 31 bits because I was stupid enough to assume the MSB would be clear after making the integer positive. Go figure. (no, division wouldn't do the job because I'm on a decades old CPU and that'd take ages, besides I only get 16-bit division which only makes it worse =P took a different approach by adding BCD numbers instead)

EDIT: if anybody is interested on the routine (without the bug, that is):
http://gendev.spritesmind.net/forum/vie ... f=2&t=2573
Nice interface!
I'm bored.
ComputerFido
Member
Member
Posts: 44
Joined: Fri Sep 09, 2016 5:52 pm
Location: Australia
Contact:

Re: When your OS goes crazy - Screenshots

Post by ComputerFido »

Double Buffering fail :p The blue is meant to cover the screen (Still haven't fixed this problem)
Image
Ankeraout
Member
Member
Posts: 25
Joined: Tue Feb 28, 2017 10:22 am

Re: When your OS goes crazy - Screenshots

Post by Ankeraout »

"repz movsd" in a console screen clear function instead of "repz stosd"
Image
User avatar
Sik
Member
Member
Posts: 251
Joined: Wed Aug 17, 2016 4:55 am

Re: When your OS goes crazy - Screenshots

Post by Sik »

On the flipside, now you have a random number generator.
User avatar
Love4Boobies
Member
Member
Posts: 2111
Joined: Fri Mar 07, 2008 5:36 pm
Location: Bucharest, Romania

Re: When your OS goes crazy - Screenshots

Post by Love4Boobies »

With a period of 1, where the seed comes from another RNG, and the generated number is the seed itself. :)
"Computers in the future may weigh no more than 1.5 tons.", Popular Mechanics (1949)
[ Project UDI ]
User avatar
SpyderTL
Member
Member
Posts: 1074
Joined: Sun Sep 19, 2010 10:05 pm

Re: When your OS goes crazy - Screenshots

Post by SpyderTL »

Sik wrote:On the flipside, now you have a random number generator.
This was exactly my first thought...
Project: OZone
Source: GitHub
Current Task: LIB/OBJ file support
"The more they overthink the plumbing, the easier it is to stop up the drain." - Montgomery Scott
User avatar
Elttob
Member
Member
Posts: 28
Joined: Mon Sep 12, 2016 10:21 am
Location: London, UK
Contact:

Re: When your OS goes crazy - Screenshots

Post by Elttob »

I have just as many questions.
Image
I'm bored.
User avatar
Js2xxx
Member
Member
Posts: 48
Joined: Sat Dec 31, 2016 1:43 am
Libera.chat IRC: wrgq
Location: China

Re: When your OS goes crazy - Screenshots

Post by Js2xxx »

Crashed when troubled in mutex.
Attachments
With buzzer shouting.
With buzzer shouting.
捕获.PNG (11.34 KiB) Viewed 7402 times
Doing steadfastly, or doing nil.
Post Reply