Increase maximum screen resolution on Haiku on VMware Fusion for Mac

Yes, vmware_fs build is broken on x86_64, so you can ignore that.

As i said, the easiest way would be to build vmware_addons using haikuporter:

pkgman install haikuporter
haikuporter --get
haikuporter --get-dependencies vmware_addons

Also, have you tried this?

Yes, I did try editing the file, but saw no improvements in Haiku.

Those haiku porter commands will just build or build and also install vmware_addons?

It will grab the sources, build them and create a package. After that you can change ProposeDisplayMode.c and rebuild using

haikuporter --get-dependencies vmware_addons

I am now getting this error:

----- Package Info ----------------
header size:                     80
heap size:                     1005
TOC size:                        41
package attributes size:       1277
total size:                    1085
waiting for build package vmware_addons-1.2.0-3 to be activated
Building ...
make: Entering directory '/sources/VMwareAddons-e04e6f029fe5c80be011b9f8d1f0247578eac475/vmware_mouse'
make: Leaving directory '/sources/VMwareAddons-e04e6f029fe5c80be011b9f8d1f0247578eac475/vmware_mouse'
make: Entering directory '/sources/VMwareAddons-e04e6f029fe5c80be011b9f8d1f0247578eac475/vmware_tray'
make: Leaving directory '/sources/VMwareAddons-e04e6f029fe5c80be011b9f8d1f0247578eac475/vmware_tray'
make: Entering directory '/sources/VMwareAddons-e04e6f029fe5c80be011b9f8d1f0247578eac475/vmware_video/accelerant'
make: Leaving directory '/sources/VMwareAddons-e04e6f029fe5c80be011b9f8d1f0247578eac475/vmware_video/accelerant'
make: Entering directory '/sources/VMwareAddons-e04e6f029fe5c80be011b9f8d1f0247578eac475/vmware_video/kernel'
cc -c device.c -iquote./  -iquote./  -isystem../shared -D_KERNEL_MODE=1 -fno-pic -O1  -Wall -Wno-multichar -Wno-ctor-dtor-privacy  -fPIC -o "objects/device.o"
cc1: warning: command line option '-Wno-ctor-dtor-privacy' is valid for C++/ObjC++ but not for C
device.c: In function 'CheckCapabilities':
device.c:75:14: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  si->fbDma = (void *)ReadReg(SVGA_REG_FB_START);
device.c:78:16: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  si->fifoDma = (void *)ReadReg(SVGA_REG_MEM_START);
device.c: In function 'CreateShared':
device.c:159:46: error: 'B_USER_CLONEABLE_AREA' undeclared (first use in this function); did you mean 'B_CLONEABLE_AREA'?
device.c:159:46: note: each undeclared identifier is reported only once for each function it appears in
/boot/system/develop/etc/makefile-engine:295: recipe for target 'objects/device.o' failed
make: *** [objects/device.o] Error 1
make: Leaving directory '/sources/VMwareAddons-e04e6f029fe5c80be011b9f8d1f0247578eac475/vmware_video/kernel'
Warning: Command '['bash', '-c', '. /wrapper-script']' returned non-zero exit status 2
Error: Build has failed - stopping.

Thanks, I’ve just fixed it. Try again now:

haikuporter --get
haikuporter --get-dependencies vmware_addons

Now, that was fast! :slight_smile:

It’s not there yet for me, though:

$ haikuporter --get-dependencies vmware_addons
Checking if any dependency-infos need to be updated ...
Looking for stale dependency-infos ...
Skipping download of source for VMwareAddons-7a153f457cd4d8a099102a4b3a53f03dd5c5cbbb.tar.gz
Skipping checksum validation of VMwareAddons-7a153f457cd4d8a099102a4b3a53f03dd5c5cbbb.tar.gz
Skipping unpack of VMwareAddons-7a153f457cd4d8a099102a4b3a53f03dd5c5cbbb.tar.gz
[Errno -2147459069] No such file or directory: '/boot/home/haikuports/app-emulation/vmware-addons/work-1.2.0/sources/VMwareAddons-7a153f457cd4d8a099102a4b3a53f03dd5c5cbbb'

No sure it it makes any difference, but I should mention I am using the HaikuDepot version of haikuporter (1.2.2).

Ah, yes. That is a known issue with haikuporter. You need to clean a work dir if you tried to build a recipe and then it was updated. You can do that with:

haikuporter vmware_addons --clean

1 Like

Yeah. Now it builds and installs. Thanks! It was the first time I have ever used haikuporter.

Regarding the source file with the list of display modes, I don’t know what are all those numbers:

  { { 210640, 1920, 1952, 2752, 2784, 1440, 1470, 1482, 1513, 0 }, B_RGB32_LITTLE, 1920, 1440, 0, 0, MODE_FLAGS }, /* 1920x1440@50Hz */
  { { 245600, 2048, 2080, 3008, 3040, 1536, 1568, 1581, 1613, 0 }, B_RGB32_LITTLE, 2048, 1536, 0, 0, MODE_FLAGS }, /* 2048x1536@50Hz */
  { { 319750, 3440, 3488, 3520, 3600, 1440, 1443, 1453, 1481, 0 }, B_RGB32_LITTLE, 3440, 1440, 0, 0, MODE_FLAGS }, /* 3440x1440@60Hz */

I looked through other files and did not find where display_mode is defined. Is it part of some Haiku specific API?

I wanted to try 3072x1920@60GHz with 32bit color.

I only remember that I had copied display mode for my laptop from this file:

Not sure how to generate a new record. Hopefully, somebody can chime in.

1 Like

Maybe you can try one of those online modeline calculators? Like

You’d want to pull display modes from Parallel or some Mac screen display tool for custom resolutions.
The display mode info is modeline info for HSync/VSync. Apple and other OEMs usually stick that info
in the laptop manuals (or tech docs).

Example only (this is NOT accurate for the  new 2020 Mac Pro 13' or 16' laptops, not tested):
{ { 2XXXXX, 2560, 2752, 3024, 3488, 1440, 1443, 1448, 1493, 0 }, B_RGB32_LITTLE, 2560, 1440, 0, 0, MODE_FLAGS }, /* 2560x1440@60Hz */
{ { 2XXXXX, 2560, 2760, 3032, 3504, 1600, 1603, 1609, 1658, 0 }, B_RGB32_LITTLE, 2560, 1600, 0, 0, MODE_FLAGS }, /* 2560x1600@60Hz */
{ { 3XXXXX, 3072, 3312, 3648, 4224, 1920, 1923, 1929, 1989, 0 }, B_RGB32_LITTLE, 3072, 1920, 0, 0, MODE_FLAGS }, /* 3072x1920@60Hz */
{ { 3XXXXX, 3840, 4128, 4544, 5248, 1600, 1603, 1613, 1658, 0 }, B_RGB32_LITTLE, 3840, 1600, 0, 0, MODE_FLAGS }, /* 3840x1600@60Hz */
{ { 3XXXXX, 3840, 4160, 4576, 5312, 2160, 2163, 2168, 2237, 0 }, B_RGB32_LITTLE, 3840, 2160, 0, 0, MODE_FLAGS }, /* 3840x2160@60Hz */

No success until now, unfortunately. In Parallels I get a reasonable image quality by selecting a resolution (3584x2240) that is weirdly higher than the native one. It even allows for higher resolutions, but this one has worked fine for me, with nice crisp details.

In contrast, the best I am able to get in VMware Fusion is a somewhat blurry picture, which is sad because otherwise it is performing well enough (despite the fact that it also has no sound).

I think you can get those values by running screenmode -m in Haiku running in Parallels.

Well, I decided to quit on this one, after getting a discounted price for another year on Parallels. I was not able to make it work properly on VMware Fusion, but it would be great to have it one day.

Managed to get the native resolution on my laptop in VMWare Player by selecting “specify monitor settings” and entering the native resolution in there, dropped the environment to 16b color, enabled sound by editing the vmx file in Windows, works fine in full-screen now (both 32bit and 64bit). :slight_smile:

PS. @BiPolar those guys produce a LOT of noice! :stuck_out_tongue:


Currently, I have managed to get haiku to Work in full resolution in VMware but I am out of luck in Parallels.

1 Like

If your hears aren’t bleeding… it ain’t Metal enough!

\m/ :stuck_out_tongue_winking_eye: \m/

(for the more melodic-inclined… try Carcass’ “Heartwork” or “Swansong” albums)