Is the Angle vulkan backend stable on Windows?

394 views
Skip to first unread message

guodong chen

unread,
Sep 27, 2023, 1:31:58 AM9/27/23
to angleproject
Angle vulkan back-end on Windows, does it already support OpenglEs 3.1 including multi-threaded rendering, multiple contexts, sharing textures in multiple threads and other behaviors

Shahbaz Youssefi

unread,
Sep 27, 2023, 9:33:00 AM9/27/23
to angleproject
Yes *, yes, and yes on all platforms that support Vulkan, including windows.

* GLES3.1 support is subject to the underlying Vulkan driver having the necessary functionality. Unless you have 10+ year-old hardware though, that's generally not a problem.

guodong chen

unread,
Sep 28, 2023, 3:16:11 AM9/28/23
to angleproject
ok great, is there any plan for the Metal backend to support ES 3.1?

guodong chen

unread,
Sep 28, 2023, 5:30:04 AM9/28/23
to angleproject
I have read some of the source code for Angle, but it is a little vague, please ask.

Angle's eglContext is created by sharing a const State *shareContextState, and then sharing the context will complete the resource management and mapping under the same resource manager.

But the TextureManager* object, for example, is not thread-safe. I wonder why Vulkan does not have the problem of multi-threaded data reading and writing.

在2023年9月27日星期三 UTC+8 21:33:00<syou...@chromium.org> 写道:

guodong chen

unread,
Sep 28, 2023, 5:43:43 AM9/28/23
to angleproject

TextureManager and ***Manager  

Internally, the ResourceMap class is used for data management, but it is not thread-safe

Shahbaz Youssefi

unread,
Sep 28, 2023, 9:40:21 AM9/28/23
to angleproject
> is there any plan for the Metal backend to support ES 3.1?

I don't believe so. At least not in the short-term. The focus for the metal backend is WebGL2 support (i.e. GLES 3.0).

> But the TextureManager* object, for example, is not thread-safe. I wonder why Vulkan does not have the problem of multi-threaded data reading and writing.

Because we hold the necessary locks at the entry point. See GL_GenTextures in entry_points_gles_2_0_autogen.cpp for example, which includes SCOPED_SHARE_CONTEXT_LOCK(context); before the texture manager is accessed.

Ken Russell

unread,
Sep 28, 2023, 5:15:35 PM9/28/23
to syou...@chromium.org, angleproject
On Thu, Sep 28, 2023 at 6:40 AM Shahbaz Youssefi <syou...@chromium.org> wrote:
> is there any plan for the Metal backend to support ES 3.1?

I don't believe so. At least not in the short-term. The focus for the metal backend is WebGL2 support (i.e. GLES 3.0).

Our team doesn't plan to add compute shader support to ANGLE's Metal backend. If you need compute support on macOS, I encourage you to look at the WebGPU API and native Dawn implementation.

-Ken

 
--
You received this message because you are subscribed to the Google Groups "angleproject" group.
To unsubscribe from this group and stop receiving emails from it, send an email to angleproject...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/angleproject/60cf65a4-b7b6-41a8-bb2f-bc6b91a6eb8fn%40googlegroups.com.

guodong chen

unread,
Oct 9, 2023, 2:06:08 AM10/9/23
to angleproject
Well, that's a bit of a shame,

After all, many projects around me are using angle as a cross-platform abstraction layer, webgpu we feel is a bit expensive to migrate, and skia's WebGPu-based backend performance is poor (I'm sure they will make changes). But angle is a very good choice most of the time.

Therefore, if you can support computational shaders on the metal backend, you can greatly reduce the maintenance cost of many projects.

I've tried to add this functionality myself by extending angle, but the workload and testing complexity have stopped me.

guodong chen

unread,
Oct 9, 2023, 2:09:06 AM10/9/23
to angleproject

Many times, a stable hardware abstraction layer is the cornerstone of an image project. metal and opengl are very simple to use, but dx and vulkan can be very difficult and cumbersome for many people.

We often spend a lot of time and effort to achieve compatibility with hardware differences. This has little to do with the business itself, but it has to be done.

guodong chen

unread,
Oct 9, 2023, 2:15:04 AM10/9/23
to angleproject
So, I think there are two more ways to continue this. The first way we can build missing functionality on angle is through the community or in some way. Second, angle can provide information such as the Buffer BufferQueue Device for obtaining Metal and VK, so that external consumers can easily build extensions based on this context information.

I think in the future there should be less need to consider hardware interfaces other than Vulkan and Metal.

Both of these approaches I find to be more flexible than just dropping Angle and switching to WebGPU Dawn. Dawn, after all, had his own problems.
Reply all
Reply to author
Forward
0 new messages