Насколько я знаю "программизьм" 10-летней давности, ИМХО, где это будет необходимо, просто стоит некая развилка в коде, анализирующая, функцию какого DX вызывать. Основной код вполне может быть написан для DX9, а в критичных местах, для тех видях, которые поддерживают функции DX10, а то и DX11, вызываются соответствующие функции. Ну или наоборот, вызывается функция DX11, а если она заканчивается ошибкой, то вызывается аналог из DX10 или полстраницы замещающего кода. Опять ошибка вылезла, значит вызываем DX9Но этот путь вроде как должен работать медленнее.
А сейчас технологии программирования настолько ушли вперед, что наверняка уже и еще что-нибудь придумано, как выкрутиться в такой ситуации.