Conversation
6d920f9 to
064d323
Compare
064d323 to
2f40f5f
Compare
824ace9 to
43db662
Compare
43db662 to
70f32aa
Compare
…ub.com/JeanPhilippeKernel/RendererEngine into user/kernel/fix-command-buffer-manager
7e086ca to
61910cb
Compare
6d83344 to
2c7b70a
Compare
2c7b70a to
5a00110
Compare
5a00110 to
ea32b30
Compare
…ub.com/JeanPhilippeKernel/RendererEngine into user/kernel/fix-command-buffer-manager
c3e66fb to
13075f2
Compare
13075f2 to
f274291
Compare
15d4c12 to
46bd183
Compare
…ub.com/JeanPhilippeKernel/RendererEngine into user/kernel/fix-command-buffer-manager
a3ac903 to
a16de16
Compare
|
Thanks @MathewBensonCode and @jnyfah for testing - Actually, the issue wasn't related to the driver, but mostly how we allocate texture resources- On some drivers, like intel, it crashes immediately, while others will weird things like on @jnyfah screenshot - and some will simply silence the issue - macOS. In addition the issue above, there were some threading issues between the RenderThread and MainThread and ownership of vulkan resources - For better coordination, I had to introduce the use of Timeline semaphore and Binary semaphore for the rendering and presentation operation. While this new way of rendering is great and stable than the previous (again Intel driver is very strict about usage of timeline semaphore, a small mistake or omitted config, it crashes everything), it surfaces another threading issue around the Will address the fix for in a seperate PR because it involves solving a ABA problem #514 |
|
@JeanPhilippeKernel do you want to merge this before fixing the HandleManager / ABA issue?? |
|
@jnyfah , yes Will handle the ABA stuff separately for clarity |
In this PR, we reviewing the whole logic behind the Command Manager that helps to create and distribute Command Buffer across engine Main Thread, Render Thread and Worker threads.
This new approach give us more flexibilities and make things for explicit about which, how and how many CB run per thread given an InFlight frame.
In addition to the Command Buffer Manager fixes, we had to review the Device swapchain creation and how it reacts to the Window resizing request -
all the mentioned above open the road to introduce the multi-threading support to engine -
This PR introduces support of dedicated Render Thread which is focusing on processing RenderPayload data and execute GPU commands.