### Godot version

4.2 dev fe5b1c8d49313d63fbe91cb7cdf463e10fb86afa

### System information

Android

### Issue description

In Vulkan mobile we render using subpasses whenever possible to keep data within tile memory for as long as possible.
In its most optimal configuration there are 4 subpasses:
1 - opaque rendering
2 - background rendering
3 - transparent rendering
4 - tonemapping and output

Subpasses 3 and 4 will be replaced by normal passes if effects are used that require this.

Subpasses can only be used when the output buffers are of equal size (i.e. same resolution, same number of bits per pixel). When MSAA is enabled, subpasses 1 through 3 are using the MSAA buffers while subpass 3 resolves the MSAA buffer and subpass 4 uses a normal buffer. This causes an error situation. While most GPU drivers will auto correct this, it is wrong.

Note for instance renderdoc output on a MALI GPU:
![image](https://github.com/godotengine/godot/assets/1945449/53606682-a9d6-48ab-9137-cb1b339c0f18)

You can see how after the second call to vkCmdNextSubpass, which brings us to subpass 3, which in this test doesn't have any further draw commands and just resolves, a new render pass is introduced before tonemapping is performed. 

We need to make sure that when MSAA is enabled, tonemapping is executed as a normal pass.

### Steps to reproduce

1) Create a simple project that renders something in 3D
2) Make sure MSAA is enabled but things like glow are disabled
3) Run on android
4) Verify command execution with renderdoc

### Minimal reproduction project

[MSAAtest.zip](https://github.com/godotengine/godot/files/12705873/MSAAtest.zip)

}
	};
	struct RenderElementInfo {
		uint32_t uses_lightmap : 1;
		uint32_t lod_index : 8;
		uint32_t reserved : 23;
	};
	template <PassMode p_pass_mode>
	_FORCE_INLINE_ void _render_list_template(RenderingDevice::DrawListID p_draw_list, RenderingDevice::FramebufferFormatID p_framebuffer_Format, RenderListParameters *p_params, uint32_t p_from_element, uint32_t p_to_element);
	void _render_list(RenderingDevice::DrawListID p_draw_list, RenderingDevice::FramebufferFormatID p_framebuffer_Format, RenderListParameters *p_params, uint32_t p_from_element, uint32_t p_to_element);
	LocalVector<RD::DrawListID> thread_draw_lists;
	void _render_list_thread_function(uint32_t p_thread, RenderListParameters *p_params);
	void _render_list_with_threads(RenderListParameters *p_params, RID p_framebuffer, RD::InitialAction p_initial_color_action, RD::FinalAction p_final_color_action, RD::InitialAction p_initial_depth_action, RD::FinalAction p_final_depth_action, const Vector<Color> &p_clear_color_values = Vector<Color>(), float p_clear_depth = 1.0, uint32_t p_clear_stencil = 0, const Rect2 &p_region = Rect2(), const Vector<RID> &p_storage_textures = Vector<RID>());
	uint32_t render_list_thread_threshold = 500;
	RenderList render_list[RENDER_LIST_MAX];
protected:
	
	virtual void _update_shader_quality_settings() override;
	virtual float _render_buffers_get_luminance_multiplier() override;
	virtual RD::DataFormat _render_buffers_get_color_format() override;
	virtual bool _render_buffers_can_be_storage() override;
	virtual RID _render_buffers_get_normal_texture(Ref<RenderSceneBuffersRD> p_render_buffers) override;
	virtual RID _render_buffers_get_velocity_texture(Ref<RenderSceneBuffersRD> p_render_buffers) override;
	virtual void environment_set_ssao_quality(RS::EnvironmentSSAOQuality p_quality, bool p_half_size, float p_adaptive_target, int p_blur_passes, float p_fadeout_from, float p_fadeout_to) override{};
	virtual void environment_set_ssil_quality(RS::EnvironmentSSILQuality p_quality, bool p_half_size, float p_adaptive_target, int p_blur_passes, float p_fadeout_from, float p_fadeout_to) override{};
	virtual void environment_set_ssr_roughness_quality(RS::EnvironmentSSRRoughnessQuality p_quality) override{};
	virtual void sub_surface_scattering_set_quality(RS::SubSurfaceScatteringQuality p_quality) override{};
	virtual void sub_surface_scattering_set_scale(float p_scale, float p_depth_scale) override{};
	
	class GeometryInstanceForwardMobile;