### Godot version

4.0.1-stable

### System information

Android 12, Mobile Renderer

### Issue description

When retrieving Mesh data from a MeshInstance3D like so...
```GDScript
var mesh = self.get_mesh()
var mesh_array = mesh.surface_get_arrays(0)
var vertex_array = mesh_array[Mesh.ARRAY_VERTEX]
var index_array = mesh_array[Mesh.ARRAY_INDEX]
```
...the index_array contains vertex indices that are not within the vertex_array.

This issue does not occur in the Linux editor, but does occur on my Android build:
Android 12
arm64v8
sdk version 32.0.0
ndk version 23.2.8568313

### Steps to reproduce

Download the minimal reproduction project, which contains an example ArrayMesh and GDScript script which has the code shown above. Build to Android using the 4.0.1 build template and test.

### Minimal reproduction project

[Array_Mesh_Test.zip](https://github.com/godotengine/godot/files/11133179/Array_Mesh_Test.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) + ").");