Vulkan: Add support for legacy platforms #129062

Merged
Jeroen Bakker merged 30 commits from Jeroen-Bakker/blender:vulkan/support-legacy-platforms into main 2024-11-19 16:30:48 +01:00
Member

Dynamic rendering is a Vulkan 1.3 feature. Most platforms have support
for them, but there are several legacy platforms that don't support dynamic
rendering or have driver bugs that don't allow us to use it.

This change will make dynamic rendering optional allowing legacy
platforms to use Vulkan.

Limitations

GPU_LOADACTION_CLEAR is implemented as clear attachments.
Render passes do support load clear, but adding support to it would
add complexity as it required multiple pipeline variations to support
suspend/resume rendering. It isn't clear when which variation should
be used what lead to compiling to many pipelines and branches in the
codebase. Using clear attachments doesn't require the complexity
for what is expected to be only used by platforms not supported by
the GPU vendors.

Subpass inputs and dual source blending are not supported as
Subpass inputs can alter the exact binding location of attachments.
Fixing this would add code complexity that is not used.

Ref: #129063

Current state

image

Dynamic rendering is a Vulkan 1.3 feature. Most platforms have support for them, but there are several legacy platforms that don't support dynamic rendering or have driver bugs that don't allow us to use it. This change will make dynamic rendering optional allowing legacy platforms to use Vulkan. **Limitations** `GPU_LOADACTION_CLEAR` is implemented as clear attachments. Render passes do support load clear, but adding support to it would add complexity as it required multiple pipeline variations to support suspend/resume rendering. It isn't clear when which variation should be used what lead to compiling to many pipelines and branches in the codebase. Using clear attachments doesn't require the complexity for what is expected to be only used by platforms not supported by the GPU vendors. Subpass inputs and dual source blending are not supported as Subpass inputs can alter the exact binding location of attachments. Fixing this would add code complexity that is not used. Ref: #129063 **Current state** ![image](/attachments/9ce012e5-2d88-4775-a636-2b74de812826)
Jeroen Bakker added this to the 4.4 milestone 2024-10-15 15:24:20 +02:00
Jeroen Bakker added the
Interest
Vulkan
Module
Viewport & EEVEE
labels 2024-10-15 15:24:20 +02:00
Jeroen Bakker self-assigned this 2024-10-15 15:24:20 +02:00
Jeroen Bakker added this to the Module: Viewport & EEVEE project 2024-10-15 15:24:34 +02:00
Jeroen Bakker changed title from Vulkan: Add support for legacy platforms to WIP: Vulkan: Add support for legacy platforms 2024-10-15 15:25:02 +02:00
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from d3963a1ede to fe52179a5a 2024-10-17 07:56:12 +02:00 Compare
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from fe52179a5a to 06e98ad045 2024-10-17 13:40:56 +02:00 Compare
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from fd9ea25b31 to 87374c4a4e 2024-10-18 13:52:24 +02:00 Compare
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from 4ac463e086 to 85a5a94b7f 2024-10-21 14:44:19 +02:00 Compare
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from d4908ae3bd to b50f3385a4 2024-11-11 13:58:58 +01:00 Compare
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from e503af82a9 to 55127d6620 2024-11-14 13:15:54 +01:00 Compare
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from 55127d6620 to 145480e7d9 2024-11-14 14:11:55 +01:00 Compare
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from 72c5e49321 to 62655e12ec 2024-11-15 12:42:14 +01:00 Compare
Jeroen Bakker changed title from WIP: Vulkan: Add support for legacy platforms to Vulkan: Add support for legacy platforms 2024-11-15 14:40:09 +01:00
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from db05f10cb5 to 7c18c68d89 2024-11-18 08:42:27 +01:00 Compare
Jeroen Bakker reviewed 2024-11-18 10:57:19 +01:00
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from b1dcb8bbbd to 7fa24c5a13 2024-11-19 08:03:47 +01:00 Compare
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from d5dfd0fb8c to 1d891efc9b 2024-11-19 13:51:35 +01:00 Compare
Author
Member

@blender-bot build

@blender-bot build
Jeroen Bakker force-pushed vulkan/support-legacy-platforms from f6f10b71d7 to 87b565b097 2024-11-19 14:00:25 +01:00 Compare
Author
Member

@blender-bot build

@blender-bot build
Jeroen Bakker added 1 commit 2024-11-19 14:28:10 +01:00
Cleanup: make format
All checks were successful
buildbot/vexp-code-patch-lint Build done.
buildbot/vexp-code-patch-linux-x86_64 Build done.
buildbot/vexp-code-patch-darwin-x86_64 Build done.
buildbot/vexp-code-patch-darwin-arm64 Build done.
buildbot/vexp-code-patch-windows-amd64 Build done.
buildbot/vexp-code-patch-coordinator Build done.
385542ac03
Author
Member

@blender-bot build

@blender-bot build
Jeroen Bakker added 1 commit 2024-11-19 15:44:51 +01:00
Mark Intel 10th gen and earlier as known crashing driver.
All checks were successful
buildbot/vexp-code-patch-lint Build done.
buildbot/vexp-code-patch-linux-x86_64 Build done.
buildbot/vexp-code-patch-windows-amd64 Build done.
buildbot/vexp-code-patch-darwin-x86_64 Build done.
buildbot/vexp-code-patch-darwin-arm64 Build done.
buildbot/vexp-code-patch-coordinator Build done.
85dfe41fdb
Author
Member

@blender-bot build

@blender-bot build
Jeroen Bakker merged commit c2695e2dcc into main 2024-11-19 16:30:48 +01:00
Jeroen Bakker deleted branch vulkan/support-legacy-platforms 2024-11-19 16:30:51 +01:00
Sign in to join this conversation.
No reviewers
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Code Documentation
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
FBX
Interest
Freestyle
Interest
Geometry Nodes
Interest
glTF
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Asset System
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#129062
No description provided.