### Godot version

4.1.1

### System information

Meta Quest 2 - GLES3

### Issue description

When writing VR applications on Godot 4 using gl_compatibility, skeleton-driven meshes like hands are often rendered corrupted, or sometimes update slowly.

### Steps to reproduce

The godot-xr-tools demo projects have these issues in the climbing/gliding and pointer-demo scenes if the project is switched to gl_compatibility mode and run on a mobile VR headset.

### Minimal reproduction project

The godot-xr-tools demo project has been the testing project for this issue.
s->bone_aabbs = p_surface.bone_aabbs; 
	if (p_surface.skin_data.size() || mesh->blend_shape_count > 0) {
		
		int size = p_surface.vertex_data.size();
		int vertex_size = 0;
		int stride = 0;
		int normal_offset = 0;
		int tangent_offset = 0;
		if ((p_surface.format & (1 << RS::ARRAY_VERTEX))) {
			if (p_surface.format & RS::ARRAY_FLAG_USE_2D_VERTICES) {
				vertex_size = 2;
			} else {
				vertex_size = 3;
			}
			stride = sizeof(float) * vertex_size;
		}
		if ((p_surface.format & (1 << RS::ARRAY_NORMAL))) {
			normal_offset = stride;
			stride += sizeof(uint16_t) * 2;
		}
		if ((p_surface.format & (1 << RS::ARRAY_TANGENT))) {
			tangent_offset = stride;
			stride += sizeof(uint16_t) * 2;
		}
		if (mesh->blend_shape_count > 0) {
			
			s->blend_shapes = memnew_arr(Mesh::Surface::BlendShape, mesh->blend_shape_count);
			for (uint32_t i = 0; i < mesh->blend_shape_count; i++) {
				glGenVertexArrays(1, &s->blend_shapes[i].vertex_array);
				glBindVertexArray(s->blend_shapes[i].vertex_array);