Well given how apps are being written now, a lot of code I have seen assumes 
the existence of CoreGraphics in AppKit, so it won't hurt if GI directly 
depends on Opal.

And I am not considering CoreFoundation-based code plain old C.

-----邮件原件-----
发件人: Ivan Vučica <[email protected]> 
发送时间: 2019年11月28日 0:23
收件人: Max Chan <[email protected]>
抄送: Discuss-gnustep Discuss <[email protected]>
主题: Re: SwiftUI compatibility APIs in GNUstep's graphics stack (Was: Which 
ObjC2.0 features are missing in the latest GCC?)

On Wed, Nov 27, 2019 at 3:59 PM Max Chan <[email protected]> wrote:
>
> Well if we are using OpenGL, since almost all other OpenGL related code is in 
> CoreAnimation, and it is OpenGL that actually opens the window for us in a 
> system agnostic manner, we might as well.

We are not using OpenGL and it has not been a requirement for -gui.

In fact, even with CAAppKitBridge, unless you set wantsLayer to YES, you will 
not get an OpenGL context or window created.

CA depends on Opal, but the rest of -gui has no reason to depend on it
-- you can use CARenderer + NSOpenGLContext and create CALayers by hand 
*today*, no integration work necessary. You can keep using Cairo backend.

Even if we switch to Opal backend as the default or even only backend, there's 
*no* requirement for CA or OpenGL. Platforms where OpenGL is not available (but 
where Cairo works, e.g. on top of X11) would
*still* be well supported with Opal. (Problems would arise only on platforms 
where users use other backends.)

So... where do you see that we depend on Core Animation in a way where we 
*have* to *require* OpenGL, and where it would be appropriate to open a window 
inside CA (as of today)? If anything, this would still remain functionality in 
a separate library with platform-specific and window-server specific 
implementations. CA implementation itself is not the right place.

> (CoreAnimation may end up containing a complete set of Objective-C 
> binding of OpenGL API in it...)

Why? CA just uses C API anyway, with thin wrappers for shaders and
(IIRC) textures. Objective-C is still C.


Reply via email to