### Godot version

v4.0.beta14.official [28a24639c]

### System information

Windows 10, OpenGL

### Issue description

Vulkan and Mobile:
![Godot_v4 0-beta14_win64_kEcRNiMfNJ](https://user-images.githubusercontent.com/7782218/213967627-8e8755d9-2fe2-43b3-b197-f9f2840b7580.gif)

OpenGL:
![Godot_v4 0-beta14_win64_MQ233TZuPq](https://user-images.githubusercontent.com/7782218/213967651-ae463a6f-c867-4312-bdf1-525e1d7def01.gif)

At first I thought it was related to `set_buffer()`, but it turned out that `set_instance_*` also work incorrectly.
Probably the custom information is also set incorrectly, but I haven't checked it yet.

### Steps to reproduce

* Open MRP
* In the editor, select `MeshInstance3D` node and change the `Count` property
* -- or --
* Start the project and move the slider

You can also switch the renderer to Vulkan and compare.

### Minimal reproduction project

[set_buffer().zip](https://github.com/godotengine/godot/files/10476834/set_buffer.zip)

MeshInstance *mi = mesh_instance_owner.get_or_null(p_mesh_instance);
	mi->canvas_item_transform_2d = p_transform;
}
void MeshStorage::_blend_shape_bind_mesh_instance_buffer(MeshInstance *p_mi, uint32_t p_surface) {
	glBindBuffer(GL_ARRAY_BUFFER, p_mi->surfaces[p_surface].vertex_buffers[0]);
	if ((p_mi->surfaces[p_surface].format_cache & (1 << RS::ARRAY_VERTEX))) {
		glEnableVertexAttribArray(RS::ARRAY_VERTEX);
		glVertexAttribPointer(RS::ARRAY_VERTEX, p_mi->surfaces[p_surface].vertex_size_cache, GL_FLOAT, GL_FALSE, p_mi->surfaces[p_surface].vertex_stride_cache, CAST_INT_TO_UCHAR_PTR(0));
	} else {
		glDisableVertexAttribArray(RS::ARRAY_VERTEX);
	}
	if ((p_mi->surfaces[p_surface].format_cache & (1 << RS::ARRAY_NORMAL))) {
		glEnableVertexAttribArray(RS::ARRAY_NORMAL);
		glVertexAttribIPointer(RS::ARRAY_NORMAL, 2, GL_UNSIGNED_INT, p_mi->surfaces[p_surface].vertex_stride_cache, CAST_INT_TO_UCHAR_PTR(p_mi->surfaces[p_surface].vertex_normal_offset_cache));
	} else {
		glDisableVertexAttribArray(RS::ARRAY_NORMAL);
	}
	if ((p_mi->surfaces[p_surface].format_cache & (1 << RS::ARRAY_TANGENT))) {
		glEnableVertexAttribArray(RS::ARRAY_TANGENT);
		glVertexAttribIPointer(RS::ARRAY_TANGENT, 2, GL_UNSIGNED_INT, p_mi->surfaces[p_surface].vertex_stride_cache, CAST_INT_TO_UCHAR_PTR(p_mi->surfaces[p_surface].vertex_tangent_offset_cache));
	} else {
		glDisableVertexAttribArray(RS::ARRAY_TANGENT);
	}
}
void MeshStorage::_compute_skeleton(MeshInstance *p_mi, Skeleton *p_sk, uint32_t p_surface) {