godot: Vulkan: GPUParticles3D crash when duplicating 128 at once
Godot version
4.0 Beta 10
System information
Linux Mint 21, Vulkan, Intel Iris Xe (Intel i5-1135G7)
Issue description
Godot throws this pair of errors two times when “Z-Billboard” or “View Depth” flags are checked in GPUParticle3D properties, and when you switch to a scene that contains them:
E 0:03:11:0898 compute_list_bind_uniform_set: Condition "!uniform_set" is true.
<C++ Source> drivers/vulkan/rendering_device_vulkan.cpp:7807 @ compute_list_bind_uniform_set()
E 0:03:11:0898 compute_list_dispatch: Uniforms were never supplied for set (2) at the time of drawing, which are required by the pipeline
<C++ Error> Method/function failed.
<C++ Source> drivers/vulkan/rendering_device_vulkan.cpp:8006 @ compute_list_dispatch()
Also, whenever there’s a big enough amount of such particle system nodes in the scene (in reproduction project it’s between 128 and 256), Godot freezes, console showing errors:
ERROR: Only one draw/compute list can be active at the same time.
at: compute_list_begin (drivers/vulkan/rendering_device_vulkan.cpp:7715)
ERROR: Only one draw/compute list can be active at the same time.
at: compute_list_begin (drivers/vulkan/rendering_device_vulkan.cpp:7715)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_bind_compute_pipeline (drivers/vulkan/rendering_device_vulkan.cpp:7728)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_bind_compute_pipeline (drivers/vulkan/rendering_device_vulkan.cpp:7728)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_bind_uniform_set (drivers/vulkan/rendering_device_vulkan.cpp:7792)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_bind_uniform_set (drivers/vulkan/rendering_device_vulkan.cpp:7792)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_bind_uniform_set (drivers/vulkan/rendering_device_vulkan.cpp:7792)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_bind_uniform_set (drivers/vulkan/rendering_device_vulkan.cpp:7792)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_set_push_constant (drivers/vulkan/rendering_device_vulkan.cpp:7946)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_dispatch_threads (drivers/vulkan/rendering_device_vulkan.cpp:8026)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_bind_uniform_set (drivers/vulkan/rendering_device_vulkan.cpp:7792)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_bind_uniform_set (drivers/vulkan/rendering_device_vulkan.cpp:7792)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_set_push_constant (drivers/vulkan/rendering_device_vulkan.cpp:7946)
ERROR: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
at: compute_list_dispatch_threads (drivers/vulkan/rendering_device_vulkan.cpp:8026)
ERROR: Condition "!compute_list" is true.
at: compute_list_end (drivers/vulkan/rendering_device_vulkan.cpp:8117)
Could be related to #63315 as I’m also using Linux on an integrated Intel GPU.
Steps to reproduce
- Make any working particle system
- Check “View Depth” flag in draw order OR “Z-Billboard” flag in transform align
- Switch to scene with the particle system from any other scene to get “Uniforms were never supplied” error message
- Duplicate particled systems (whether instances or local) until there is ~128-256 of them to get the freeze
Minimal reproduction project
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 7
- Comments: 20 (5 by maintainers)
@IvanIG3 @zicman666 If you aren’t duplicating a lot of nodes, these are likely unrelated issues. Please open a separate issue with a minimal reproduction project attached, and describe what you were trying to achieve there.
I had this issue when running one big GPUParticles3D emitting 1000 particles alongside 100 smaller GPUParticles3D each emitting 3 particles. I had Billboard enabled in the ParticleProcess Material, and crashed with the “compute_list” errors. I then disabled Billboard in the ParticleProcess material and instead enabled it in my Draw Pass 1 Mesh’s material, and I haven’t crashed since. - Godot 4.0.3-mono
I also found this bug. At a random time, Godot freezes and throws a bunch of errors. I’m using Godot 4.0.3.