Vulkan: Enable render graph #121787

Merged
Jeroen Bakker merged 34 commits from Jeroen-Bakker/blender:vulkan/first-frame into main 2024-06-14 08:46:45 +02:00
Member

This PR hooks up the vulkan backend with the render graph
for drawing. It can run Blender better than the previous
implementation so we also flipped it to be the default
implementation.

Some highlights

  • Adds support for framebuffer load/store operations
  • Adds support for framebuffer subpass transitions
  • Fixes workbench shadows
  • Performance is just below OpenGL performance when comparing
    fps. But the screen feels more fluent when using complex
    scenes.
  • Current performance is without doing any optimizations so
    will improve in the future.
  • EEVEE will not crash but has artifacts and many parts that
    require more work.

Related to

Known Limitation

  • Similar to previous implementation resources can be freed when
    still in use crashing Blender. This is typically the case when
    playing back an animation or updating a material icon.

Next steps

  • Remove old implementation
  • Get EEVEE to work
  • Fix double resource freeing
  • Improve performance by identifying hotspots and change them

State

image
image
image

This PR hooks up the vulkan backend with the render graph for drawing. It can run Blender better than the previous implementation so we also flipped it to be the default implementation. **Some highlights** - Adds support for framebuffer load/store operations - Adds support for framebuffer subpass transitions - Fixes workbench shadows - Performance is just below OpenGL performance when comparing fps. But the screen feels more fluent when using complex scenes. - Current performance is without doing any optimizations so will improve in the future. - EEVEE will not crash but has artifacts and many parts that require more work. **Related to** - #121648 - #118330 **Known Limitation** - Similar to previous implementation resources can be freed when still in use crashing Blender. This is typically the case when playing back an animation or updating a material icon. **Next steps** - Remove old implementation - Get EEVEE to work - Fix double resource freeing - Improve performance by identifying hotspots and change them **State** ![image](/attachments/52b05002-2dd9-4b38-a345-37e23459f498) ![image](/attachments/e1064fa3-9a5a-4d7b-b978-ef9bcc11b601) ![image](/attachments/2bed6fa4-14f2-45de-9e56-0f3f8a0975c2)
Jeroen Bakker added this to the 4.2 LTS milestone 2024-05-14 15:40:54 +02:00
Jeroen Bakker added the
Interest
Vulkan
label 2024-05-14 15:40:54 +02:00
Jeroen Bakker self-assigned this 2024-05-14 15:40:54 +02:00
Jeroen Bakker added this to the Viewport & EEVEE project 2024-05-14 15:41:10 +02:00
Jeroen Bakker force-pushed vulkan/first-frame from 34898dbb9d to a0c4600e9c 2024-05-16 16:16:22 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from af3c8a514d to bf65dbf576 2024-05-23 12:13:18 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from bf65dbf576 to b96275a839 2024-05-23 15:28:56 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from b96275a839 to 7e5f834144 2024-05-24 12:43:48 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from 7e5f834144 to 563d19043c 2024-05-24 13:42:49 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from fee8b20398 to 54f2a56757 2024-05-28 10:10:38 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from 45e6069aa9 to dccb88bf05 2024-05-30 11:48:38 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from 79f83e39ab to 4b429d0e8b 2024-05-31 08:20:27 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from 384dbd87f7 to 241aecc537 2024-06-03 09:51:15 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from 241aecc537 to befa95524e 2024-06-03 13:56:44 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from befa95524e to fbbdb8835b 2024-06-03 14:16:18 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from d746ef6af0 to b003ab1d5d 2024-06-04 08:30:23 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from 7ac0eec6f6 to 02eb04a22c 2024-06-10 08:56:04 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from 881badccd9 to 0cfcd71a00 2024-06-13 08:20:35 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from 0cfcd71a00 to 195d2fc921 2024-06-13 09:48:09 +02:00 Compare
Jeroen Bakker force-pushed vulkan/first-frame from 195d2fc921 to cc4ee430a2 2024-06-14 07:37:54 +02:00 Compare
Jeroen Bakker added 1 commit 2024-06-14 07:49:12 +02:00
Jeroen Bakker added 1 commit 2024-06-14 08:14:32 +02:00
Revert member visibility pipeline state manager
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.
f3d3ce7c72
Jeroen Bakker changed title from WIP: Vulkan: First frame to Vulkan: Enable render graph 2024-06-14 08:15:08 +02:00
Jeroen Bakker modified the milestone from 4.2 LTS to 4.3 2024-06-14 08:15:14 +02:00
Author
Member

@blender-bot build

@blender-bot build
Jeroen Bakker merged commit 07ea6a5c23 into main 2024-06-14 08:46:45 +02:00
Jeroen Bakker deleted branch vulkan/first-frame 2024-06-14 08:46:47 +02: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
Freestyle
Interest
Geometry Nodes
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, Assets & 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
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & 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#121787
No description provided.