cheesestraws / aux-minivnc

A kernel VNC server for A/UX, Apple's old UNIX.
GNU General Public License v3.0
19 stars 0 forks source link

Performance with RealVNC is sluggish #16

Open tmcintos opened 1 year ago

tmcintos commented 1 year ago

Not sure if it's an issue with my network/configuration or if there is room for performance improvement.

I'm using:

In any case, this is awesome! Thanks for spending the time on it!

cheesestraws commented 1 year ago

Always glad to hear that people are enjoying this!

As far as sluggishness goes, I'm not sure how sluggish you mean by sluggish. To a certain extent, this is probably an issue with expectations management: there's a limit to how fast this is going to go on a 25MHz 040. To a certain extent as well, yes, it could probably be made faster, there are missed opportunities for optimisation, but I currently don't have a huge amount of time to spend in doing those optimisations, I'm afraid.

That said - the fastest results you'll get will be at the lowest resolution (I tend to stick to 640x480) and, unintuitively, 24 bit colour. The reason for 24 bit colour is that in order to allow for on the fly colour depth changes, the VNC server's virtual framebuffer is always 24 bits. So the fastest operation is copying a 24-bit framebuffer directly, more and more work needs to be done to "decompress" the image, if that makes sense.

If I had the virtual framebuffer the same colour depth as the physical one, it would be faster for lower colour depths: but the connection would have to be re-established whenever the colour depth changed (at least, as I understand the VNC spec - I'm not a VNC expert!) and that would mean that the connection would drop whenever you logged in or out if you still had default colour settings in your login system folder. This is a trade-off I made for, I'm afraid, my own use case: that would have annoyed me too much!

cheesestraws commented 1 year ago

(I think actually I misremembered some points in the above, let me go and reread and try again...)

tmcintos commented 1 year ago

Thanks for the quick response!

By sluggish, I meant that, for example, when dragging a window, you have to wait for what feels like a long time (but is maybe only a second or so) for the display to catch up. It doesn’t feel usable.

I think the Apple 16” Hi-res display is at 832x624 and at a glance I didn’t see how to select any other resolution in the Monitors control panel. Also, 16-bit color is the highest option shown with this system/configuration, so there no way to use 24-bit color that I know of.

As noted elsewhere, 16-bit depth doesn’t work (from the project description I understood that higher than 8-bit depth was not supported). I tried all color settings from 256 colors down to black and white but didn’t notice any significant difference in performance.

cheesestraws commented 1 year ago

Sorry, now I've got rid of my headache, let me give you some accurate information. It's been a long day :).

The internal framebuffer is 8 bit, not 24 bit. Everything else I said above is correct, except that apparently I can't tell the difference between 8 and 24.

At 832x624 I wouldn't be surprised if it's a bit slow. I think the 16" hi res display is a fixed resolution display, so you're probably stuck with that resolution with that monitor. I actually use mine mostly headless with a VGA adapter stuck in the back with the dip switches set to pretend I have a multisync monitor installed, which ... doesn't help you, I appreciate.

tmcintos commented 1 year ago

I think the 16" hi res display is a fixed resolution display, so you're probably stuck with that resolution with that monitor.

Actually, I misspoke. I guess it is a 15” multiple scan display (https://en.m.wikipedia.org/wiki/Apple_Multiple_Scan_15_Display). I have driven it at 1024x768p60 using and iPad with a USB-C to VGA to DB15 adapter chain, so I expect it’s capable of 640x480 as well, but I don’t see a way to select that in the A/UX UI.

I actually use mine mostly headless with a VGA adapter stuck in the back with the dip switches set to pretend I have a multisync monitor installed, which ... doesn't help you, I appreciate.

Got it. I have one of those somewhere, but currently have the system set up with the display through a DB15/ADB switch. Maybe that switch is masking the ID sense codes of the monitor, but I thought it passed those signals through. I could try direct connection to see if it makes any difference.

cheesestraws commented 1 year ago

FWIW, when I have the multisync adaptor installed, I can change resolution from the 'Options...' button in the Monitors control panel (but this does require a reboot).

tmcintos commented 1 year ago

Thanks. I believe I checked there and only saw the option to change the color depth. Will need to check again with direct connection.

cheesestraws commented 1 year ago

The colour depth is in the monitors control panel itself: there's an Options... button next to the list of colours. See screenshots here (this is from ordinary system 7, but it's there in A/UX too):

https://imgur.com/a/A0QDb0E

tmcintos commented 1 year ago

Oh, right. I had mis-remembered. In my case it's not showing any options; though I notice I have an earlier version of the control panel (v7.0) than yours (v7.5.5). Perhaps I don't have the latest SW installed? uname -a gives A/UX bespin 3.1.1 SVR2 mc68040 and the Mac environment is System Software 7.0.1.

Screenshot 2023-03-18 at 4 54 11 PM Screenshot 2023-03-18 at 4 54 58 PM

I also confirmed that I see the same with the monitor directly connected.

cheesestraws commented 1 year ago

No, the version difference is expected: I'm away from home and only have emulators so that's vanilla System 7 not A/UX the screenshots were from That's fine.

Yeah, I'm not sure why you don't have options there if it's a multi-resolution display: might be worth trying with directly connected.