Возвращаем драйверам AMD поддержку DirectX12 старыми процессорами. Возвращаем драйверам AMD поддержку DirectX12 старыми процессорами Скачать программный эмулятор инструкций sse 4.2

💖 Нравится? Поделись с друзьями ссылкой

Скачать видео и вырезать мп3 - у нас это просто!

Наш сайт - это отличный инструмент для развлечений и отдыха! Вы всегда можете просмотреть и скачать онлайн-видео, видео приколы, видео скрытой камеры, художественные фильмы, документальные фильмы, любительское и домашнее видео, музыкальные клипы, видео про футбол, спорт, аварии и катастрофы, юмор, музыка, мультфильмы, аниме, сериалы и многие другие видео совершенно бесплатно и без регистрации. Конвертировать это видео в mp3 и другие форматы: mp3, aac, m4a, ogg, wma, mp4, 3gp, avi, flv, mpg и wmv. Онлайн Радио - это радиостанции на выбор по странам, стилям и качеству. Онлайн Анекдоты - это популярные анекдоты на выбор по стилям. Порезка mp3 на рингтоны онлайн. Конвертер видео в мп3 и другие форматы. Онлайн Телевидение - это популярные TV каналы на выбор. Вещание телеканалов производится абсолютно бесплатно в режиме реального времени - эфир онлайн.

Обновившись в конце апреля на новые драйвера AMD 16.4.2, я обнаружил, что все DirectX12-приложения перестали работать. Ничуть не удивившись, я решил подождать устранения проблемы и отложил DirectX12 в сторону. Но месяцы шли, а с новыми драйверами ситуация не менялась.

Гугл показал, что эта проблема носит массовый характер (раз , два , три , четыре), а AMD никак не реагирует. Пользователь форумов AMD tapek путем дебаггинга выяснил, что проблема заключается в использовании новыми версиями драйверов инструкции popcnt из набора SSE4.2.

Загрузив одну из проблемных библиотек (amdxc32.dll) в Hiew, поиском по опкоду инструкции popcnt - F3 0F B8 обнаруживаем, что она вызывается аж целых три раза! Это значит, что она не сильно там нужна и можно придумать ей замену. Эта инструкция возвращает первому аргументу количество единичных бит второго аргумента.

Для замены popcnt возьмем алгоритм Брайана Кернигана (Brian Kernigan/Kernighan).
На С++ он выглядит так:

Int kernigan(int value){ int count = 0; while(value != 0){ value &= (value-1); count++; } return count; }
На асме так:

Push ebx push ecx xor eax,eax mov ebx, value kernigan_start: cmp ebx, 0 jz kernigan_end add eax, 1 mov ecx, ebx sub ebx, 1 and ebx, ecx jmp kernigan_start kernigan_end: pop ecx pop ebx retn
Ищем в конце секции кода незанятое место, забитое нулями. Там мы и будем писать наш код:

Находим в библиотеке вызов команды popcnt:


И заменяем его на переход на наш код:


В ранее найденном месте пишем наш код и возвращаем управление туда, откуда взяли


После чего повторяем вышеописанное с оставшимися вызовами команды popcnt как в этой библиотеке, так и в amdxc64.dll, подменяем ими оригиналы и получаем снова работающий DirectX12 без SSE4.2.

Часто современный софт или игры требуют от процессора наличия инструкций SSE 4.1 — 4.2. В случае отсутствия таковых, запустить нужное приложение не получается, вылетает какая-либо ошибка или просто ничего не происходит.

FarCry 5 ругается на отсутствие SSE 4.2

При этом, мощности процессора может быть вполне достаточно для более-менее комфортной игры (к примеру, некоторый процессоры Xeon для 775 сокета до сих пор способны выдавать сносный фпс в новинках), а требование инструкций бывает необходимо даже не для самой игры, а для работы защиты от копирования. К примеру, защита Denuvo не давала владельцам старых процессоров поиграть в Assassin"s Creed Origins, хотя сама игра наличия последних инструкций не требовала.

Наличия SSE 4.1 или 4.2 требуют и другие популярные игры или их компоненты: No Man Sky, Far Cry 5, Dishonored 2, Mafia 3 и другие.

Тем не менее, решение есть, хоть и не 100% гарантирующее успех. Для запуска нужного приложения можно воспользоваться эмулятором sde external , скачать который можно по ссылке (выбирайте версию для windows) или внизу данной статьи.

Как пользоваться эмулятором SSE 4.1-4.2

  • Скачиваем архив с sde external и распаковываем так, чтобы sde.exe оказался в папке с нужной игрой или программой
  • Создаем ярлык для sde.exe. Затем открываем свойства ярлыка и в параметре объект дописываем — нужный файл.exe . Например: D:\Games\No Man"s Sky\Binaries\sde.exe" — NMS.exe. После последней кавычки должен стоять пробел, иначе система не даст сохранить ярлык.
  • Также в свойствах ярлыка на вкладке «Совместимость» стоит поставить опцию «запускать от имени администратора».
  • Сохраняем ярлык и запускаем его. Появляется черное окно, его можно закрыть. Через некоторое время нужное приложение должно запуститься.



Рассказать друзьям