VMWareFB display driver development

Started by andreas_g, December 09, 2009, 11:30:10 AM

Previous topic - Next topic

andreas_g

Dear NeXT community!

I just want to tell you that i am in contact with david from "atomic object". They have developed the VMWareFB display driver for NeXTStep, OPENSTEP and Rhapsody. As there are some issues with the driver, i asked about the actual state of development. Thanks to david for allowing me to share the mail with the NeXT community:


Q:

Dear Atomic Object team!

I want to thank you for writing the display driver for NeXTStep/OPENSTEP under VMWare! I am using NeXTStep 3.3 unter VMWare Fusion v2.0.6 on Mac OS X v10.6. It works great for a resolution of 1024 x 768 with millions of colours.

But i am having some trouble with the driver. Resolutions greater than 1024 x 768 do not work and crash the virtual machine. I think this is a common issue also for other versions of VMWare.

I know this driver might not be for great interest for you but anyway i want to ask if there is any chance to see an updated driver some time?

Also support for widescreen resolutions (as 1440 x 900 or 1680 x 1050) would be a great feature. As VMWare seems to have trouble with the gamma of the NeXT operating systems (too dark) it would be also great if gamma was adjustable.
... these are just some mad wishes!

sincerely

Andreas G.

Austria


A:

Hi Andreas,

We've heard complaints about resolutions higher than 1024 recently... you're not alone.
Unfortunately at the moment, there is no active development underway to address this problem, nor any near-term plans to release an update to the driver.  
The source code is freely available and we encourage anyone with an interest to modify, repair or extend it, and hopefully to submit a patch so the base code can be updated.

We are currently transitioning the source code for the driver into Github in order to make it much easier for others to contribute to the project.  This project will likely appear under the "atomicobject" on github.com.

Thank you for your interest in the the OpenStep display driver!
I will try to remember to notify you once the project has moved.

Regards,
/David



Maybe someone in here has got the knowledge and the time to look into the code and do some improvements.
I think VMWare users would greatly appreciate it!

sincerely

Andreas

Venture37

very cool, well done for getting in touch! :)

virtualbob

This is good news that the code will at least be available for people to look at (and maybe improve).

In the meantime, if you don't mind using "thousands of colors" instead of millions, I have found that if OS X is set to Thousands instead of before booting Fusion (and the VM) the VMWareFB driver will work up to 1280x1024.

Deek

Quote from: "andreas_g"Dear NeXT community!

I just want to tell you that i am in contact with david from "atomic object". They have developed the VMWareFB display driver for NeXTStep, OPENSTEP and Rhapsody. As there are some issues with the driver, i asked about the actual state of development. Thanks to david for allowing me to share the mail with the NeXT community:


I actually have a version locally that works with all kinds of different resolutions (5:4, 16:9, 16:10, etc), but what makes it work for sizes > 1024x768 (occasionally 1280x1024) is something that you can change in Configure already: changing the starting address of the frame buffer from 0x7EBC0000 to 0xD0000000.

The long and short of it is that 0xd0000000 gives you enough video memory to display the full range.

andreas_g

Thank you very much! It works just great! I have customized the driver to support my native resolution (1680 x 1050) and now i am able to use NeXTStep fullscreen without any scaling!

Awesome!

Deek

As for the gamma problem, there doesn't appear to be any reasonable way to make it work other than using a shadow framebuffer and copying it to the real one (which doubles the amount of memory needed, and slows down updates).

The emulated VMware hardware doesn't seem to provide any sort of gamma ramp. It has 768 color palette registers that could be used to implement a 24-bit gamma ramp, but according to the VMware documentation they only work in 8-bit mode.

The problem is that the driver maps the guest video memory as a 24-bit linear frame buffer, and at least on Linux what's drawn on the virtual FB goes almost directly to video memory when you're running full-screen.

As far as I can tell, there's no way to get NeXTStep/OPENSTEP to do software gamma correction on a 24-bit linear framebuffer. It'll do it for a 15-bit FB (using a 4-4-4->5-5-5 color lookup table built into the window server), but not 24-bit -- and switching to 15bpp on the host doesn't seem to help.

The only way I can think of to get proper gamma control is the hard, nasty way: doing it in the driver itself, by modifying the values we write to the display, and that usually means a shadow buffer.

Carl Erickson

Quote from: "andreas_g"Thank you very much! It works just great! I have customized the driver to support my native resolution (1680 x 1050) and now i am able to use NeXTStep fullscreen without any scaling!

Awesome!

It is indeed great to see someone having made progress on the resolution issue. It's by far the most asked for feature since we originally wrote this back in 2002.

Atomic Object plans to move the source code to a location more easily accessed. Hopefully this will encourage further development. It would be great to see a community take over what we started so long ago.

Carl (President, Atomic Object)

oneNeXT

Quote from: "andreas_g"...I have customized the driver to support my native resolution (1680 x 1050) and now i am able to use NeXTStep fullscreen without any scaling!

Do you know if it support 1440 x 900 in full screen ?

david_crosby

Hi guys,

VMWareFB 1.1.0 is released!
 http://spin.atomicobject.com/2009/12/23/openstep-display-driver-for-vmware-on-github

The updated code is thanks to andreas_g supplying a patch that he built up from the advice on this thread.  

For nicely increased list of video modes, see the project page at http://github.com/atomicobject/VMWareFB_OpenStep.

Not ready to run ProjectBuilder yourself?  An updated compressed config is available in the download section.

The move to Github is an effort to put this driver project in the hands of the community.  It is our hope to that anyone with inclination to hack this driver any further will be inspired to fork the code and push changes back in for all to share.

Thanks for you interest and advice, all!
/Dave

andreas_g

Thank you for hosting the updated driver. Now i hope it helps some people in here!

@oneNeXT:
Try the updated driver (1.1.0). It should work well at 1440 x 900. Please give us some feedback about your experiences with the updated driver.

Deek

Quote from: "david_crosby"Hi guys,

VMWareFB 1.1.0 is released!
 http://spin.atomicobject.com/2009/12/23/openstep-display-driver-for-vmware-on-github

The updated code is thanks to andreas_g supplying a patch that he built up from the advice on this thread.  

Changing SVGA_FB_LEGACY_START to 0xD000000 is wrong, it can't be moved from 0x7EFC0000 (the legacy 0710 device can't move its framebuffer like the 0405 one can).

andreas_g

What effect will my mistake have on the functionality/performance of the driver?
For now it seems to work perfectly, at least for me.

Deek

The driver will crash on old versions of VMware.

andreas_g

Thanks! I corrected the problem! Version 1.1.1 was compiled from the fixed source code.

pl212

Just a quick question -- has the version number been rev'ed in Default.table? This could help people keep them straight...

Many thanks for this great driver! Now running at 1152x864 :)