### Godot version

v4.1.stable.official.970459615

### System information

Windows 10 OpenGL API 3.3.0

### Issue description

Calling force_draw from a thread crashes compatibility renderer. Not sure if bug or this is not something that we should be doing, but it seems to not cause any issue with mobile/desktop forward+ renderer. Reason why i do this because it lets the engine run at a higher frame rate than the renderer.

### Steps to reproduce

🧵

### Minimal reproduction project

[forcedraw.zip](https://github.com/godotengine/godot/files/11988748/forcedraw.zip)

frame_drawn_callbacks.push_back(p_callable);
}
void RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) {
	
	RS::get_singleton()->emit_signal(SNAME("frame_pre_draw"));
	changes = 0;
	RSG::rasterizer->begin_frame(frame_step);
	TIMESTAMP_BEGIN()
	uint64_t time_usec = OS::get_singleton()->get_ticks_usec();
	RSG::scene->update(); 
	frame_setup_time = double(OS::get_singleton()->get_ticks_usec() - time_usec) / 1000.0;
	RSG::particles_storage->update_particles(); 
	RSG::scene->render_probes();
	RSG::viewport->draw_viewports(p_swap_buffers);
	RSG::canvas_render->update();
	if (!OS::get_singleton()->get_current_rendering_driver_name().begins_with("opengl3")) {
		
		RSG::rasterizer->end_frame(p_swap_buffers);
	}
	XRServer *xr_server = XRServer::get_singleton();
	if (xr_server != nullptr) {
		
		xr_server->end_frame();
	}
	RSG::canvas->update_visibility_notifiers();
	RSG::scene->update_visibility_notifiers();
	while (frame_drawn_callbacks.front()) {