### Godot version

v4.0.3.stable.official [5222a99f5]

### System information

Godot v4.0.3 - EndeavourOS #1 SMP PREEMPT_DYNAMIC Wed, 14 Jun 2023 20:10:31 +0000 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 2070 SUPER (nvidia; 530.41.03) - Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz (8 Threads)

### Issue description

Game crashes with the following errors:

```
E 0:00:03:0788   compute_list_begin: Only one draw/compute list can be active at the same time.
  <C++ Error>    Condition "compute_list != nullptr" is true. Returning: INVALID_ID
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7716 @ compute_list_begin()
E 0:00:03:0788   compute_list_bind_compute_pipeline: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7729 @ compute_list_bind_compute_pipeline()
E 0:00:03:0788   compute_list_bind_uniform_set: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7793 @ compute_list_bind_uniform_set()
E 0:00:03:0788   compute_list_bind_uniform_set: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7793 @ compute_list_bind_uniform_set()
E 0:00:03:0788   compute_list_set_push_constant: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7947 @ compute_list_set_push_constant()
E 0:00:03:0788   compute_list_dispatch_threads: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:8027 @ compute_list_dispatch_threads()
E 0:00:03:0788   compute_list_end: Condition "!compute_list" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:8175 @ compute_list_end()
```
The total number of errors is a multiple of 7 as the whole set repeats itself some random number of times.

I was able to reproduce the issue with Forward+, Mobile and Compatibility renderer. With Compatibility the game also crashes but without errors.
I was unable to reproduce the issue on machines with Intel iGPUs:
- Godot v4.0.3 - NixOS 22.11 (Raccoon) - Vulkan (Forward+) - integrated Intel(R) HD Graphics 620 (KBL GT2) () - Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz (4 Threads)
- Godot v4.0.3 - macOS 11.7.7 - Vulkan (Forward+) - integrated Intel Iris Graphics - Intel(R) Core(TM) i5-4308U CPU @ 2.80GHz (4 Threads)

Maybe related to #70607.

### Steps to reproduce

I am creating a new instance of Node3D every frame with two GPUParticles3D children: **Emitting** and **NotEmitting**. Only the first one has `emitting` set to `true`.

When the number of Node3D instances reaches 500 or a bit more (can be 500, 503, 505, 514, etc.), the game either freezes or crashes with and sometimes without errors in the Errors tab.

I have also observed that the crashes/freezes **don't** occur in the reproduction project when any of the following is true:
- **NotEmitting**'s `visibility` is set to `false`
- **Emitting**'s `lifetime` is below 0.17. Above 0.19 it crashes. Around 0.18 it sometimes crashes and sometimes doesn't.
- **Emitting**'s `transform_align` is not set to "Z-Billboard" nor "Z-Billboard + Y to Velocity"

Also when **Emitting**'s `one_shot` is set to `false` the game only crashes/freezes and there are no errors in the Errors tab.

In my other project (which I extracted the minimal reproduction project from), the issue occurs regardless of **NotEmitting**'s `visibility` and **Emitting**'s `lifetime` values. The only workaround there seems to be setting **Emitting**'s `transform_align` to a value without "Z-Billboard" in it.


### Minimal reproduction project

[gpuparticles3d_crash.zip](https://github.com/godotengine/godot/files/11810916/gpuparticles3d_crash.zip)

}
	if (p_format.usage_bits & TEXTURE_USAGE_VRS_ATTACHMENT_BIT) {
		image_create_info.usage |= VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR;
	}
	if (p_format.usage_bits & TEXTURE_USAGE_CAN_UPDATE_BIT) {
		image_create_info.usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
	}
	if (p_format.usage_bits & TEXTURE_USAGE_CAN_COPY_FROM_BIT) {
		image_create_info.usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
	}
	if (p_format.usage_bits & TEXTURE_USAGE_CAN_COPY_TO_BIT) {
		image_create_info.usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
	}
	image_create_info.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
	image_create_info.queueFamilyIndexCount = 0;
	image_create_info.pQueueFamilyIndices = nullptr;
	image_create_info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
	uint32_t required_mipmaps = get_image_required_mipmaps(image_create_info.extent.width, image_create_info.extent.height, image_create_info.extent.depth);
	ERR_FAIL_COND_V_MSG(required_mipmaps < image_create_info.mipLevels, RID(),
			"Too many mipmaps requested for texture format and dimensions (" + itos(image_create_info.mipLevels) + "), maximum allowed: (" + itos(required_mipmaps) + ").");
	if (p_data.size()) {
		ERR_FAIL_COND_V_MSG(!(p_format.usage_bits & TEXTURE_USAGE_CAN_UPDATE_BIT), RID(),
				"Texture needs the TEXTURE_USAGE_CAN_UPDATE_BIT usage flag in order to be updated at initialization or later");
		int expected_images = image_create_info.arrayLayers;
		ERR_FAIL_COND_V_MSG(p_data.size() != expected_images, RID(),
				"Default supplied data for image format is of invalid length (" + itos(p_data.size()) + "), should be (" + itos(expected_images) + ").");
		for (uint32_t i = 0; i < image_create_info.arrayLayers; i++) {
			uint32_t required_size = get_image_format_required_size(p_format.format, image_create_info.extent.width, image_create_info.extent.height, image_create_info.extent.depth, image_create_info.mipLevels);
			ERR_FAIL_COND_V_MSG((uint32_t)p_data[i].size() != required_size, RID(),
					"Data for slice index " + itos(i) + " (mapped to layer " + itos(i) + ") differs in size (supplied: " + itos(p_data[i].size()) + ") than what is required by the format (" + itos(required_size) + ").");