2025-03-03 Viewport & EEVEE Module Meeting

Practical Info

This is a weekly video chat meeting for planning and discussion of Blender Viewport & EEVEE module development. Any contributor (developer, UI/UX designer, writer, …) working on Viewport & EEVEE in Blender is welcome to join.

For users and other interested parties, we ask to read the meeting notes instead so that the meeting can remain focused.

  • Google Meet
  • Next Meeting: 10 March 2025, 11:30 AM to 12:00 PM Amsterdam Time (Your local time: 2025-03-10T10:30:00Z2025-03-10T11:00:00Z)

Attendees

  • Clement
  • Jeroen
  • Miguel

DST Global lock

Many merges happened to remove DST global locking. API cleanups needs to land next. It is still being considered to have a DST per viewport so multiple viewport can draw at the same time (eventually), but this requires more discussion as sharing GPU resources would be harder to do.

Per “engine” shader modules are now wrapped so shading compilation can be thread safe.

Next limitation is that shaders can only be used by a thread at the same time. This is because the shader also carries state (like uniforms/push constants/specialization constants) and can be modified before or after binding.

  • New proposal will be made to tackle the shader API. The main idea is to separate the state from the shader and when using a shader the calling code isn’t modifying the shader. Only when used (or first used) it will. A proposal will be created how this will look like on data structures and usage.

Metal

[#135099 - WIP: Metal: Fix framebuffers being cleared during subpasses. - blender - Blender Projects] We have a fix for the Black cube on Apple/Intel/AMD. We still need feedback on testing or other hardware configurations.

OpenSubdiv

[#133716 - OpenSubDiv: Metal + Vulkan - blender - Blender Projects] All opensubdiv based shaders are able to compile on OpenGL, Metal & Vulkan. For now, the shaders can only be used by OpenGL due to direct GL-calls around the shaders. In the upcoming weeks(s) multiple cleanups are planned to minimize the last step of enabling opensubdiv for Metal/Vulkan.

  • The complexity originates from the era where CPP couldn’t be used directly in Blender code-base. Most interface code is wrapped the buffers using GLINT handles. A callback API uses these handles to be wrapped in GPU vertex buffers. Even when the buffers are never used as vertex buffers. Current solution would be to use GPU objects and keep storage buffers/vertex buffers in their expected object types.
  • Noteworthy is that Blender already uses the opensubdiv API that can support Metal and Vulkan as well. This reduces the impact of the project as no new API needs to be learned/integrated.
5 Likes