### Godot version

v4.2.beta4.official [93cdacbb0], 4.1.2.stable

### System information

Godot v4.2.beta4 - Android 10 - Vulkan (Mobile)

### Issue description

This happens only when trying to run it on Android 10 using the mobile renderer.

It fails on Samsung Galaxy S9+ (Android 10).
It works on Nokia 5.4 (Android 12).

The surface tool doesn't seem generate mesh at least not visible one. It also fails to generate collision mesh as a character will fall through it.

I included an example code. 

### Steps to reproduce

Export the attached reproduction project (remember to set the renderer to mobile) and install it on an Android phone. The phone I tested is Samsung Galaxy S9+ with Android 10.


### Minimal reproduction project

[SurfaceToolBug.zip](https://github.com/godotengine/godot/files/13237789/SurfaceToolBug.zip)

} else {
			return;
		}
	}
	if (p_closing) {
		_save_pipeline_cache(this);
	} else {
		pipelines_cache_save_task = WorkerThreadPool::get_singleton()->add_native_task(&_save_pipeline_cache, this, false, "PipelineCacheSave");
	}
}
void RenderingDeviceVulkan::_save_pipeline_cache(void *p_data) {
	RenderingDeviceVulkan *self = static_cast<RenderingDeviceVulkan *>(p_data);
	self->pipelines_cache.buffer.resize(self->pipelines_cache.current_size);
	self->_thread_safe_.lock();
	VkResult vr = vkGetPipelineCacheData(self->device, self->pipelines_cache.cache_object, &self->pipelines_cache.current_size, self->pipelines_cache.buffer.ptr());
	self->_thread_safe_.unlock();
	ERR_FAIL_COND(vr != VK_SUCCESS && vr != VK_INCOMPLETE); 
	print_verbose(vformat("Updated PSO cache (%.1f MiB)", self->pipelines_cache.current_size / (1024.0f * 1024.0f)));
	
	
	self->pipelines_cache.header.data_size = self->pipelines_cache.current_size;
	self->pipelines_cache.header.data_hash = hash_murmur3_buffer(self->pipelines_cache.buffer.ptr(), self->pipelines_cache.current_size);
	Ref<FileAccess> f = FileAccess::open(self->pipelines_cache.file_path, FileAccess::WRITE, nullptr);
	if (f.is_valid()) {
		f->store_buffer((const uint8_t *)&self->pipelines_cache.header, sizeof(PipelineCacheHeader));
		f->store_buffer(self->pipelines_cache.buffer.ptr(), self->pipelines_cache.current_size);
	}
}
template <class T>
void RenderingDeviceVulkan::_free_rids(T &p_owner, const char *p_type) {