-
-
Notifications
You must be signed in to change notification settings - Fork 21.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix missing _THREAD_SAFE_METHOD_
missing from RenderingDeviceVulkan
submit
and sync
#79526
Conversation
_THREAD_SAFE_METHOD_
missing from RenderingDeviceVulkan submit and sync_THREAD_SAFE_METHOD_
missing from RenderingDeviceVulkan
submit
and sync
@Zylann In that graph it shows that your commit is based on your master branch, but your master branch is not in sync with the upstream master. Instead it has merge commits from the upstream master. Merge commits are new commits. So your master branch is now 17 commits ahead of the upstream master because it has 17 commits that the upstream master doesn't have. You need to rebase your master instead of merging upstream into it. Or just make (rebase) your feature branch from the upstream master directly. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The code looks fine to me. The commits will need to be cleaned up before merging though
This line has come up a few times. It looks really awkward, but it technically functions as intended. That being said, we do need to clean up the buffer_update function as it now mostly defaults to using the draw_command_buffer which is really bad for performance on mobile |
It is? (well, apparently not I guess, but it acts like it is) Everytime I do a PR I
This is where I'm very confused, because I intend this fork to be a "clean fork", it only exists to do PRs. I don't modify anything in my master branch, it is meant to reflect Godot's master branch (therefore there is never anything to "merge". I create a branches for each PR). Maybe I've used the wrong command this time, but I dont know which one I did wrong, and not 17 times^^" I don't know how I should rebase my master branch. |
@Zylann I'm not sure this is the correct syntax for Edit: There is also this |
316ac06
to
8722cbc
Compare
That seems to have done the trick, thanks! |
Thanks! |
I use
RenderingDeviceVulkan
from multiple threads. While one thread is dedicated to execute compute lists, submit and sync, other threads can create or update resources, and that caused crashes inside the Vulkan driver.Turns out
submit
andsync
did not have_THREAD_SAFE_METHOD_
. Adding them made the crashes go away.While working on this, I also found out this call to
_buffer_update
has a problem:godot/drivers/vulkan/rendering_device_vulkan.cpp
Line 5867 in a758388
The last sent argument is
p_post_barrier
, which is aBitField<BarrierMask>
, but then the signature of_buffer_update
is:godot/drivers/vulkan/rendering_device_vulkan.h
Line 227 in a758388
So
p_post_barrier
ends up being fed as thep_use_draw_command_buffer
parameter, which doesn't seem to be the same meaning.I don't know if there is a bug associated with this, but it doesn't seems right. I don't know what the code should be though.
cc @RandomShaper