make getContext async; calculate best visual for opengl context