Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
98 user(s) are online (63 user(s) are browsing Forums)

Members: 1
Guests: 97

emeck, more...

Support us!

Headlines

 
  Register To Post  

compositing engine technical talks
Home away from home
Home away from home


See User information
@All
Can sort some things for myself from technical point of view so, plz, someone who know this thing well, can sort a bit it for me:

So far, what i understand is that "Compositing Engine" we have on AmigaOS4, is just set of API which use some hardware features of Radeon cards (and only of Radeon). So, this set of API is AmigaOS4 only, and for Windows/Linux, it just used by the driver which functionality utilized by the Win/Linux itself, without creating a special "API" like we do.

Also, as far as i understand, it was created for OS4, so any 3d party programmer can use some hardware features of Radeon cards, without digging into the driver-coding all the time.

That's correct ?

Then question arise why it didn't done for example on MorphOS, or they simply do use when need it necessary Radeon's hardware features without praising it like "engine" , and not provide 3d party users with such easy APIs ? I.e. difference with us only in the fact that we do have this special APIs allowing us to use Radeon features without dig in into drivers details ?

How then the same done on Windows for Radeon cards ? Or they not bother to provide such API, and developers had to use always hardcore way to work with drivers ?


Now, what the main point of the Compositing Engine ? I mean, technically i understand it gives ability to use some of Radeon hardware features, but what the main point ? Ability to render vertex arrays of 2D triangles ? Ability to scale things via hardware ? Transparent window and drop-shadow effects ?:)

I mean, what the main "big" point, of the compositing engine ? And is "scaling" we do use in EUAE for example, coming just as "bonus" , but it wasn't main point of compositing's API ?

Also, as far as i see in the docs, the only one method is used for the scaling : linear filtering, other ones didn't implement. That also correct ?

Thanks for answers :)

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top
Re: compositing engine technical talks
Quite a regular
Quite a regular


See User information
@kas1e

https://en.m.wikipedia.org/wiki/Compositing_window_manager

I our case, the P96 API was extended with additional functions to allow for example hardware accelerated transparency and shadow effects in workbench.

Go to top
Re: compositing engine technical talks
Home away from home
Home away from home


See User information
@geennaam
Oh, thanks, that's exactly what i was looking for.

Noticed through section about AmigaOS4/MorphOS kind of wrong on this link, but who care of course, it usual that things about OS4/Mos are wrong in public fora for outsiders, because info on which authors of such articles based, are too dated most of time.

Strange, why it called on os4 "compositing engine", and not just "os4 do have compositing window managment". I think because there were needs to praise it like "TEHCNOLOGY!!! ONLY AMIIIIIGGAAAA!" , like it was with Cairo library which were shown like something uber cool and hardcore, while in end it just simple graphics library among many others, with (dunno if it is) amiga specific parts.
Probabaly "compositing engine" name were chosen by some logic: to be uniq, while feature itself is not. But at least "compositing" word present :)

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top
Re: compositing engine technical talks
Quite a regular
Quite a regular


See User information
@kas1e

I think that the name "compositing engine" is just emphasis on the fact that it's a specific piece of software that can be enabled/disabled to provide hardware accelerated effects to workbench.

But apparently there's more to it as explained by Hans on this page:

http://hdrlab.org.nz/projects/amiga-os-4-projects/c3d/

Go to top
Re: compositing engine technical talks
Home away from home
Home away from home


See User information
@kas1e

The compositing API is basically one function: CompositeTags()/CompositeTagList(). It wasn't created for Radeon cards specifically.

The composited window effects (e.g., the transparency and drop-shadows) are done using CompositeTags() on AmigaOS 4. I have no idea how it's implemented on MorphOS. AFAIK, Windows uses Direct-X to do the hardware-accelerated compositing effects.

I assume that CompositeTags() was created with implementing a composited window manager in mind. What's great, is that it's easily accessible for any developer to use. It's also designed to do a lot more than basic window transparency and shadow effects.

Quote:
Also, as far as i see in the docs, the only one method is used for the scaling : linear filtering, other ones didn't implement. That also correct ?

BitMapScale() is a very old (pre-OS4) scaling function that may not even be hardware accelerated. Use CompositeTags() instead.

Hans

Join Kea Campus' Amiga Corner and support Amiga content creation
https://keasigmadelta.com/ - see more of my work
Go to top
Re: compositing engine technical talks
Home away from home
Home away from home


See User information
@geennaam

Quote:
I think that the name "compositing engine" is just emphasis on the fact that it's a specific piece of software that can be enabled/disabled to provide hardware accelerated effects to workbench.

There is a lot going on behind the scenes. The "compositing engine" needs to detect when a partially transparent window changes (either in size, position, or contents), and then redraw that part of the screen. It tries to do this during the vblank interval so you don't get ugly partial redraw artifacts.

Hans

Join Kea Campus' Amiga Corner and support Amiga content creation
https://keasigmadelta.com/ - see more of my work
Go to top
Re: compositing engine technical talks
Home away from home
Home away from home


See User information
@Hans
Quote:

The compositing API is basically one function: CompositeTags()/CompositeTagList(). It wasn't created for Radeon cards specifically.


So its "compositing window manager" is not the feature of only Radeon cards, but also of Nvidia ones too ? Or even old S3Trio and Voodoo cards, has it ? (i assume it's only about Radeon and NVidia). And , of course, if it can't work in hardware , it will fall back to software (like it happens on OS4). But on OS4 i assume only Radeons can use real-hardware compositing manager, because i find in the old docs, that when OS4 was released for Clasisc amigas, it being told that compositing in hardware works only on Radeons (so for voodoo, AGA, or whatever, it falls back to software way).

Quote:

Windows uses Direct-X to do the hardware-accelerated compositing effects.


So, theoretically, all this "compositing window manager", should be just done in the Warp3D, and be used by the system. That probably why one of Frieden brothers (Hans, if i remember right), wrote that they wish to use Gallium3D for compositing engine. So to be kind of the same on other OSes, and so be able to use it more easily maybe and not bother with CompositeTags or whatever..

Quote:

I assume that CompositeTags() was created with implementing a composited window manager in mind. What's great, is that it's easily accessible for any developer to use. It's also designed to do a lot more than basic window transparency and shadow effects.


I think it was created to be just the same Compositing window manager as on other OSes, just where to make a feeling like something OS4 specific only :)

I mean, what it do, what all other compositing window managers can't do ? Or, what it can't do, what others can do ?

Quote:

BitMapScale() is a very old (pre-OS4) scaling function that may not even be hardware accelerated. Use CompositeTags() instead.


No no, what i mean is that CompositeTags have a tags, for have a scaling, and in the includes fo compistetags,i find that only "lenear" kind of scaling is implemented (in hardware).

I.e. in E-UAE, LiveForIt made a 640x256 low-res resolution looks scalled in fullscreen on 1920x1080 : but scaling can be of different algos, linear, bilenear, with some effects on top like x2 and so on. With CompositeTags, we seems to be forced to one, plain kind of scaling called linear (i.e. basic).

The fact that we can do scaling with CompositeTags, it is probabaly comes as bonus, not as the main feature of it, right ?


Quote:

There is a lot going on behind the scenes. The "compositing engine" needs to detect when a partially transparent window changes (either in size, position, or contents), and then redraw that part of the screen. It tries to do this during the vblank interval so you don't get ugly partial redraw artifacts.


But then, it is the same for any OS, right ?

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top
Re: compositing engine technical talks
Home away from home
Home away from home


See User information
@kas1e

Quote:
So its "compositing window manager" is not the feature of only Radeon cards, but also of Nvidia ones too ?

It isn't a graphics card feature at all. The compositing window manager literally uses the 3D GPU for compositing.

On AmigaOS 4 it only works on Radeon cards, because nobody went back and updated the drivers for older graphics cards (assuming thy have a capable enough GPU).

Quote:
So, theoretically, all this "compositing window manager", should be just done in the Warp3D, and be used by the system. That probably why one of Frieden brothers (Hans, if i remember right), wrote that they wish to use Gallium3D for compositing engine. So to be kind of the same on other OSes, and so be able to use it more easily maybe and not bother with CompositeTags or whatever..

You should be able to do compositing effects with Warp3D. They decided that the best option for OS 4 was to add a new function to the graphics.library. I don't think they'd drop CompositeTags() for Gallium3D. Rather, all graphics acceleration would go through Gallium3D.

Quote:
I think it was created to be just the same Compositing window manager as on other OSes, just where to make a feeling like something OS4 specific only :)

I mean, what it do, what all other compositing window managers can't do ? Or, what it can't do, what others can do ?

I doubt it was created to "make a feeling like something OS4 specific." They needed a way to make it work, and AmigaOS didn't have a modern 3D graphics system ready yet.

Quote:
No no, what i mean is that CompositeTags have a tags, for have a scaling, and in the includes fo compistetags,i find that only "lenear" kind of scaling is implemented (in hardware).

I.e. in E-UAE, LiveForIt made a 640x256 low-res resolution looks scalled in fullscreen on 1920x1080 : but scaling can be of different algos, linear, bilenear, with some effects on top like x2 and so on. With CompositeTags, we seems to be forced to one, plain kind of scaling called linear (i.e. basic).

The fact that we can do scaling with CompositeTags, it is probabaly comes as bonus, not as the main feature of it, right ?

Ah, ok. CompositeTags() can do (bi)linear and "nearest" filtering. I don't think cubic, sinc, & lanczos could be hardware accelerated at the time.

Quote:
But then, it is the same for any OS, right ?

Yes.

Hans


Edited by Hans on 2023/7/31 11:28:23
Join Kea Campus' Amiga Corner and support Amiga content creation
https://keasigmadelta.com/ - see more of my work
Go to top
Re: compositing engine technical talks
Just popping in
Just popping in


See User information
deleted

Go to top
Re: compositing engine technical talks
Home away from home
Home away from home


See User information
@Hans
Thanks for answer

@Petrol
Right, that it what i find too

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top
Re: compositing engine technical talks
Just can't stay away
Just can't stay away


See User information
@kas1e
Quote:
Strange, why it called on os4 "compositing engine", and not just "os4 do have compositing window managment".
It's not just an internal feature of the window manager (intuition), any software can use it.
Of course the same, and much more, can be done using a 3D system like Warp3D, OpenGL, DirectX, etc. as well, but if you use Warp3D/OpenGL on AmigaOS you can't have an AmigaOS GUI (gadgets, etc.) in the 3D surface.
With CompositeTags() you can use some HW accelerated 3D features in 2D windows with BOOPSI GUI.

Go to top
Re: compositing engine technical talks
Not too shy to talk
Not too shy to talk


See User information
@kas1eQuote:
Then question arise why it didn't done for example on MorphOS, or they simply do use when need it necessary Radeon's hardware features without praising it like "engine" , and not provide 3d party users with such easy APIs ?

MorphOS has included it's own compositing engine called layers3D since 2.0, which was released a few months before OS4.1.

Go to top
Re: compositing engine technical talks
Not too shy to talk
Not too shy to talk


See User information
CompositeTags() can use Amiga's "bitmap" as output and also as input (=textures) that give it more flexibility than Warp3D/OpenGL

Also it is more simple to draw with this single function than to setup Gallium3D/Nova thant need (say) 50 functions before even draw something

CompositeTags works in hardware on all my NG machines : Sam440,Sam460,X5000

IMHO The main point of CompositeTags is to draw blits with scale/rotation/transparency/filtering = same as SDL2 or Cairo but in a single/simple function

http://aminet.net/package/dev/src/CompositePOC

Go to top
Re: compositing engine technical talks
Home away from home
Home away from home


See User information
@geennaam
Reading the article you pointed out, funny how they still mention that first CompoisintWindow managers was created on Amiga in 1985, with all those Blitters and Bitmaps, and only in 2001 other systems start to introduce something of that sort (16 years later). And now with CompositeEngine() we kind of back to the roots :)

@all
Quote:

Compositing managers may perform additional processing on buffered windows, applying 2D and 3D animated effects such as blending, fading, scaling, rotation, duplication, bending and contortion, shuffling, blurring, redirecting applications, and translating windows into one of a number of displays and virtual desktops. Computer graphics technology allows for visual effects to be rendered in real time such as drop shadows, live previews, and complex animation.[3][4] Since the screen is double buffered, it does not flicker during updates.


What of those CompositeEngine can't do ? Blending, fading, scaling, rotation and duplication for sure can, and all the other stuff too ?

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top
Re: compositing engine technical talks
Just can't stay away
Just can't stay away


See User information
@kas1e
Quote:
Reading the article you pointed out, funny how they still mention that first CompoisintWindow managers was created on Amiga in 1985, with all those Blitters and Bitmaps, and only in 2001 other systems start to introduce something of that sort (16 years later). And now with CompositeEngine() we kind of back to the roots :)
Amiga wasn't only one of the first systems with a compositing windowing engine (but only when using GZZ SuperBitmap windows in AmigaOS 0.x-3.x, which next to nobody used, but there was at least one example source in the RKRM which did), but one of the first systems supporting virtual/multiple desktops as well. On AmigaOS they are called "screens"

Go to top
Re: compositing engine technical talks
Home away from home
Home away from home


See User information
@kas1e

Quote:
What of those CompositeEngine can't do ? Blending, fading, scaling, rotation and duplication for sure can, and all the other stuff too ?

As written, the compositing engine doesn't do stuff like contortion, blurring, etc. It's theoretically possible to write code to do all those things using CompositeTags(), though.

Hans

Join Kea Campus' Amiga Corner and support Amiga content creation
https://keasigmadelta.com/ - see more of my work
Go to top

  Register To Post

 




Currently Active Users Viewing This Thread: 1 ( 0 members and 1 Anonymous Users )




Powered by XOOPS 2.0 © 2001-2024 The XOOPS Project