[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] WCOWORK implementation : conclusions.




Ok I handerstand this, I would like too, have this sort
"windows-bitmaps" this will be easier for AES do some operations on


IMO, the only good reasons to do this kind of thing is if you draw very complicated things in your windows, or you want to do things like transparent or dynamically resizable windows. For normal work it's generally not a good idea, which is probably why it's not the default mode on any window system I'm aware of (X has always been able to do it, but it's seldom used, and I can't say I've seen a Windows program do it) that doesn't make transparency and dynamic resizing a priority (MacOS X, and other "next generatio" graphics systems).

windows like moving it. Praticaly the application should have a VDI ID
v_opnbm() for each windows (it's suppose have a lot of memory (>128Mo)),


Using up a lot of memory for this may be OK if you have some kind of accelerated Atari machine with lots of RAM and no graphics card. The graphics cards we have, though, with the possible exception of that RagePro based PCI thing that was sold for the Milan, don't have enough memory to do useful backing storage in useful resolutions. And you _definitely_ don't want to do backing storage in normal RAM if you have a graphics card (no hardware accelerated drawing and it will usually be slower to blit things to the screen than to just redraw them from scratch).

Also while things look faster and you do fewer redraws in many cases, there is also a worst-case with this method. You draw to the off-screen bitmap, and then blit to the screen, so there are two operations instead of just one. This


Doing this kind of drawing in off-screen bitmap and then blitting to the screen is, IMO, only reasonable if you want that transparency etc. Otherwise you'd be better off drawing the things on screen directly that can be and drawing the rest in the off-screen bitmaps. Updating by blitting can work relatively well in many cases, but in others it's just awful (witness the ARAnyM SDL driver).

Another bad case is when the application in question is drawing in its off-screen bitmap but nothing (or only parts of it) gets displayed at all because it's covered by other windows.

is especially true of scrolling - you might want to have a design with a very tall memory bitmap and let the AES handle the scrolling completely by itself.


You really wouldn't want to do that.

the VDI is drawing off-screen. And if the VDI is drawing direct, it can add
the window position to coordinates itself.


Having VDI coordinates that are relative to some arbitrary point is indeed something that could be useful. I've always planned to add that to fVDI.

application should send to AES that AES should draw it (probably with a
clipping value). Now you want have a network display solution, so you


I believe most other window systems have the clipping handling bundled with the drawing so that an application doesn't have to deal with that by walking a rectangle list like with the VDI/AES. It obviously also makes it impossible to draw outside your own windows.

but when AES should draw it? I suppose when application finish to draw

You could do automatic display. If the AES and VDI are tied together, then the
AES can know when the application has made VDI calls and needs an update.


There is already that screen lock thing in the AES that could indeed be used for this kind of thing.
But, as I've mentioned before, blit updates isn't such a good idea, IMO.

have send bitmap throw network, this will be slow unfortunatly, it's

It doesn't have to be slow. Even if the VDI is drawing to offscreen bitmaps, all you have to send across the network is VDI opcodes and parameters, not the


Yes, since the drawing part itself could be at the other end of the network.
But this can work equally well without blit updating.

bitmaps. If you attach to an already running session, and don't want to save all VDI calls that have been made (aka a "canvas" widget), then you send the bitmap across the network once (slow to connect to an existing session), but
updates can be done by just sending the VDI calls.


Yes.

Anyway, doing VDI drawing via a network shouldn't be bad at all. Just consider what the graphics cards on the Falcon are capable of with a few (4-6 perhaps) Mbyte/s of bandwidth. And with VDI extensions to allow remote caching of bitmaps and fonts (to some degree already possible, like what fVDI does on the Eclipse/RageII, but that has limitations) it could be really nice.

compress them). X11 also supports OpenGL over the network, throgh the GLX
protocol.  However, if someone were to add OpenGL to the VDI, or at least
through some sort of standard API, it should be possible to send the calls over
the network instead of the result of those calls.


Well, there is already an OpenGL based VDI (fVDI on ARAnyM with the new native driver). It might be interesting to see if that could be convinced to run over a network.

The problem isn't the network or WCOWORK, its the lack of an API for hardware
accelerated OpenGL.


No, the problem is hardware accelerated OpenGL in the first place.
In the only place where we have it, ARAnyM, it can be used, both directly and by the VDI.

Virtual desktop is easy to do, I not see why you  need WCOWORK, the AES


They have been done before.

--
| Why are these | johan@klockars.net
|  .signatures  |
| so hard to do | http://www.klockars.net
|     well?     | (fVDI, MGIFv5, QLem)