1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Патч Windows 7 для включения графического ускорения в классической теме

Тема в разделе "WASM.SOFTWARE", создана пользователем rk2019, 11 фев 2019.

  1. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
  2. 0xdeadbeef

    0xdeadbeef New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2019
    Сообщения:
    6
    Перечитай еще раз, ключевое слово - вкладка, это не тоже самое что окно приложения
    И таки WS_EX_COMPOSITED это не выход, при его применении на многих приложениях вылезают ошибки проектирования, в том же диспетчере задач перцы из MS сделали окна перекрывающими друг друга, а именно "Up Time" и рядом само значение. В обычном режиме скорее всего сначала выводится первое окно, потом второе, глюка мы не видим, так как надпись Up Time короткая и накладывающее второе окно недостаточно длинное чтобы что-то подпортить . При использовании WS_EX_COMPOSITED предположительно меняется порядок отображения окон, сначала второе коно, потом первое, в результате первое окно перекрывает соседнее. Эффект перекрытия ( без шаманства с WS_EX_COMPOSITED ) также можно увидеть если в winspy (или подобной тулзе) убрать у окон свойство WS_CHILD.

    Есть одна забавная прога "Core Temp", авторы вообще не заморачивались над положением и перекрытием окон, "и так сойдет", с WS_EX_COMPOSITED вылезают их огрехи
    [​IMG]
     
  3. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    0xdeadbeef,
    А я и не утверждал, что применение WS_EX_COMPOSITED это панацея. Более того, я выкладывал только исходник и нигде не выкладывал ехе-шник, чтобы только специалист мог это протестить, а не каждый школьник.... Более того в сыоем видео я показывал программы где видеовывод ускоряется, а где начинает глюкавить картинка.

    Самое главное что применение WS_EX_COMPOSITED убирает лаги в тех окнах, где их нельзя было убрать никакими другими способами, например при совместной работе 2D Test и foobar. Это показывает что в теории - при правильной отработке софтом, железо видеокарты способно отрисовать картинку. И проблема чисто софтовая.
     
  4. 0xdeadbeef

    0xdeadbeef New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2019
    Сообщения:
    6
    WS_EX_COMPOSITED к видеокарте не имеет отношения, меняется логика рисования содержимого квадрата, именуемого "окном". ускоряется за счет использования другого алгоритма, который не дергает видяху на каждое стирание+перерисовку.
    Лучше забей на выпрямление классической gdi, ms на нее забила и не стала делать "правильно",
    правильно она сделала новую desktop composition, когда визуально не видно тех извращений, которые посылают конечные программы.
    Но если упоротся с классической темой, нужен патчинг графической подсистемы, например чтобы fill области и растеризация нового содержимого были в памяти, а на видяху выходил только конечный вариант. ускорения особого не будет, но хоть пропадудут глюки с обновляемыми окнами
     
  5. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    0xdeadbeef,

    В моем представлении, после установки драйвера производительность должна или увеличиваться или оставаться на прежнем уровне.

    Но видеокарта без установленного драйвера (в 2Д режиме) работает быстрее. А после установки драйвера замедяется. Это не убедительный факт, что качество радеон драйвера сомнительное? Или это нормально?
     
  6. 0xdeadbeef

    0xdeadbeef New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2019
    Сообщения:
    6
    может как быстрее, так и медленее, зависит например от скорости процессора, при стандартном svga драйвере весь рендеринг на процессоре. известные адские тормоза со скролингом на этом драйвере говорят что некоторые графические операции принципиально с сырым framebuf-ером не работают, но работают через сторонний драйвер. видеодрайвер при запуске сообщает систем какие фичи он умеет, какие нет, ос на основании этого что-то пускает через драйвер, что-то сама на процессоре (очень условное описание, по памяти)
     
  7. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    0xdeadbeef,

    Я не спорю, что радеон драйвер что-то умеет делать. Но я акцентирую внимание на том, что он не умеет делать.
    А он не умеет качественно отрисовывать линии в большом количестве.

    1) без радеон драйвера (на стандартном VGA)

    2D Test + foobar
    никаких лагов
    2) с установленным радеон драйвером
    2D Test + foobar
    перемигивание картинки, слайдшоу, остановки отрисовки на полсекунды

    Точно такое-же поведение наблюдается в P-CAD. Что общее в этих программах? И в той и в другой программе рисуются множественные линии. По моей просьбе один программист разработал 2D Test, специально для отрисовки линий. И лаги теже самые. Поэтому с радеон драйвером приложение, где отрисовывается много линий и не использующее двойную буферизацию видеовывода - обречено лагать.
     
  8. 0xdeadbeef

    0xdeadbeef New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2019
    Сообщения:
    6
    rk2019, а этот чувак с якобы патченным dwm.exe делится не хочет файликом ?
    интересно тоже глянуть
     
  9. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    Я ему писал здесь.
    Можешь зарегистрироваться поддержать.
    https://forum.ixbt.com/topic.cgi?id=58:5149:410#410
    --- Сообщение объединено, 4 апр 2019 ---
    Подкинули ссылку, функция DwmEnableComposition нам как-то может помочь.
    https://docs.microsoft.com/en-us/windows/desktop/api/Dwmapi/nf-dwmapi-dwmenablecomposition
    Можно ли написать программу, которая использует эту функцию на окнах классической темы?
     
  10. M0rg0t

    M0rg0t Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    533
    Можно. Пишите.

    Там один вызов функции. Все. Никаких перечислений и прочего. Просто откройте вашу шестую студию, вставьте вызов, и скомпилируйте.

    Если вы этого не понимаете - вам надо в комерц.
     
  11. 0xdeadbeef

    0xdeadbeef New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2019
    Сообщения:
    6
    в ms не дураки сидят, от того что каждое приложение вдруг захочет включать или выключать композитинг не означает что результат появится на экране. в настройках композитинг тоже можно включить через галочку на классическом gdi, только windows это по барабану
     
  12. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    M0rg0t,

    Мне уже один специалист скинул проект (правда на Делфи) с включалкой/выключалкой DWM. Так вот в аэро теме можно только выключить ускорение, включить в классической не получается.
     
  13. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    В наших тестовых программах прибыло. Появилась программа, которая позволяет включать/выключать композицию (ускорение GPU) в аэро темах на лету.

    К сожалению, она не может включить ускорение в базовых темах (в том числе классической) - то есть решить нашу проблему, зато она наглядно демонстрирует сколь важно графическое ускорение.

    [​IMG]

    Программа "DWM Composition" в 2-х вариантах:
    DWMComp_Orig.exe - простая переключалка
    DWMComp_Mod.exe - добавлены элементы управления, чтобы сравнить вид в базовой и аэро-темах.
    Также сделаны надписи шрифтами Tahoma и Segoe, чтобы любители ClearType могли оценить 2 шрифта рядом.

    Разработчик - AzikAtom. Огромное спасибо. Исходник на Delphi прилагается.

    Скачать:
    http://rgho.st/6Cj4XkdZh
    https://www103.zippyshare.com/v/ehMKhXxo/file.html
     
  14. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    Доработана программа DWM Composition

    - добавлены неактивные элементы
    - вплывающие подсказки
    - полоса прогресса на 30%
    - включены исходники обеих версий

    [​IMG]

    Скачать
    http://ge.tt/4I6rTVv2
    https://www78.zippyshare.com/v/wbWctOhh/file.html
     
  15. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    <><><><><> Ускорение графического интерфейса на классической теме Windows 7 (мегапак решений) <><><><><>

    Полный комплект (мегапак) решений от 12 апреля 2019 года, состоящий из новой версии классической аэро темы "Classic AE mod 2019_5" и набора программ с исходным кодом (все наработки за 2 года) для диагностики, контроля и ускорения графического интерфейса

    Пролог:
    Посвящено всем, кто привык работать в системе с классическим оформлением, кто не смог приспособиться к планшетозаточенному, вырвиглазному, упрощенному до уровня домохозяйки интерфейсу Windows 8/10. Посвящено тем, кому простой, функциональный классический интерфейс удобнее всего.

    Описание проблемы:
    Графическое ускорение в Windows 7 используется только в аэро-темах и выключено в базовых темах, в том числе классической. Поэтому в все элементы интерфейса в аэро теме - прорисовываются с помощью видеокарты, а в классической теме - центральным процессором. При наличии нормальной видеокарты (новее 2010 года) аэро темы работают гораздо производительнее базовых тем (в том числе классической), что вызывает удивление, поскольку графически сложные темы отрисовываются быстрее примитивно простых. Классическая тема только в Windows 98/2000/XP работала быстро, но в Windows 7 - это угрюмый тормоз.

    Усугубляет проблему, что некоторые разработчики драйверов, например AMD, наплевательски относятся к реализации 2D GDI функций в Radeon драйверах новее 2014 года (от v15.7 до v19.4.1 все версии), что ещё более замедляет работу классической темы - http://forum.ixbt.com/topic.cgi?id=58:5149

    Примечание:
    Поймите правильно, в играх FPS больше не станет. Игры используют 3D-функции, а они всегда работают с графическим ускорением. Прирост следует ожидать в обычных 2D-приложениях + окошки винды - все элементы интерфейса будут отрисовываться/ масштабироваться/ передвигаться/ накладываться гораздо быстрее, без подтормаживания и перемигиваний текста силами видеокарты, разгружая центральный процессор для других задач.

    Варианты решения проблемы низкой производительности классической темы:
    1) Использовать классическую тему в аэро-исполнении "Classic AE mod 2019_5" - это аналог классической темы (по виду), но выполненный в виде аэро-темы (по свойствам) - она использует ресурсы видеокарты и работает в разы быстрее
    2) Пропатчить Windows 7 (файл dwm.exe) и принудительно включить графическое ускорение в не аэро темах
    3) Использовать фоновую программу, которая переводит работу ОС в режим, когда графика ускоряется
    4) Написать драйвер "двойной буферизации" видеовывода (этот пункт чисто теоретический, специалиста взявшегося за написание драйвера не найдено)

    Осуществлимо ли это?
    Я видел, много раз, как после запуска чего-то видеовывод в классической теме ускорялся. Я не смог понять причину этого феномена, но в реальности так происходит... Мне не важно, через какую баг/фичу это реализуется, я вижу факт - в определённых условиях классика становится более производительной и это нужно использовать.

    Реальные примеры решения:

    По пункту "1") В результате доработки темы "Classic AE v2.5.3", появилась тема "Classic AE mod 2019_5" где исправленные найденные баги, а также интерфейс ещё более приближен к оригинальной классике. Если не придираться по мелочам, то в большинстве программ тема "Classic AE mod 2019_5" на 95-98% сходна оригинальной классике. Тема существует в двух вариантах (с обычными и ClearType шрифтами) и на 12 апреля 2019 года является лучшим заменителем встроенной классики.
    Доработки:
    1) Добавлен градиент в заголовок окна
    2) Правильный цвет текста в заголовках активного и неактивного окон
    3) Обычный несглаженный Tahoma-шрифт (без принудительного ClearType)
    4) Правильный серый цвет во всех элементах интерфейса RGB (212, 208, 200).
    Это самое грандиозное изменение, отредактировано более сотни графических ресурсов.
    5) Правильный TrackBar
    6) Более классическое меню (исправлено цветовое оформление)
    7) Для лучшего восприятия - выделенный пункт на сером фоне более темный, чем на белом
    8) Отключена анимация на ProgressBar
    9) Используются обычные курсоры
    10) Исправлена ошибка в ScrollBar
    11) Испрален фон окна в брандмауэре Windows
    12) Исправлен слёт аэро-режима при использовании 125% масштаба шрифта
    13) Более темный заголовок активного окна в не аэро-режиме
    14) Корректный импорт ресурса IMAGE#1136
    15) Добавлен вариант темы с ClearType шрифтом
    16) Бонусом прилагаются TaskManager и Калькулятор с классическим оформлением,
    а также набор дополнительных программ рекомендуемых к использованию:
    - 7tt_setup (Taskbar Tweaker) - маленький, но нужный твикер панели задач
    - ClassicShellSetup_4_3_1-ru - делает классический вид меню "Пуск"
    - FONTS_140516 - приводит все диалоги к стандартному виду, заменяя шрифт Segoe 9 на Tahoma 8

    Варианты исполнения темы:
    Themes (c ClearType шрифтом)
    Themes (c обычным шрифтом)
    Пользователям, которым нужны жирные (сглаженные) шрифты - устанавливайте "Classic AE mod 2019_5 (ClearType)". Если вы предпочитаете узкие (классические, не сглаженные) шрифты - то устанавливайте обычный вариант "Classic AE mod 2019_5".

    [​IMG]

    Установка темы:
    1) Установить "UniversalThemePatcher" - рекомендуемый вариант. Установщик выбираем для своей разрядности Windows 7 (32- или 64-бит). Для установки необходимо запустить исполняемый файл, выбрать язык и пропатчить 3 файла, затем перезагрузить компьютер. Если патч был ранее применён - то этот шаг пропускаем. Патчер позволяет добавлять в систему темы от сторонних производителей, а не только использовать встроенные. Без установки UniversalThemePatcher (или UxStyle) тема будет работать в базовом режиме, без функций графического ускорения - точно также тормозно как и встроенная классическая. Поэтому наличие в системе "UniversalThemePatcher" или "UxStyle" или другого патчера тем - обязательно.
    2) Скопировать файлы темы "Classic AE mod 2019_5" по пути c:\WINDOWS\Resources\Themes\
    3) Зайти в "Персонализацию" и переключиться на тему "Classic AE mod 2019_5"
    4) Перезагрузить ПК. Всё готово. Наслаждаемся классическим оформлением Windows 7, но уже с работающим ускорением GPU.

    Подробное описание темы "Classic AE mod 2019_5", руководство по установке и проверке читаем в отдельном файле Classic_AE_Readme.txt

    Программы с исходниками находятся в каталоге:
    Soft for Boost 2D\2DTest
    Soft for Boost 2D\Classtm_dll
    Soft for Boost 2D\DWM Composition
    Soft for Boost 2D\Patch dwm.exe
    Soft for Boost 2D\WS_EX_COMPOSITED

    По пункту "2") Разработчик "Mr dUSHA" http://forum.oszone.net/post-2862277.html#post2862277 предложил вариант патча dwm.exe, но делиться результатами своей работы не стал. В компетентности данного специалиста нет сомнений, он автор нескольких программ, да и по виду скриншота видно, что это не фотошоп, а реально полученная картинка. Скриншот - http://s27.znimg.ru/1552156800/5kgi474haj.jpg
    Кроме картинки более ничего. Других специалистов, занимающихся ковырянием dwm.exe не было.

    По пункту "3") Среди фоновых программ есть несколько вариантов.
    Прежде всего программы для тестирования и демонстрации необходимости ускорения.

    Программа 2D Test - отрисовка сетки линий, программа разработана Mikhalich специально для демонстрации низкой производительности АМД драйверов. В результате, АМД ничего не исправили, а любая тема с названием "Low 2D performance Radeon driver v15.7 - v19.4.1 on Windows 7" моментально удаляется на их ресурсах. Исходный код прилагается.

    Программа DWM Composition разработки AzikAtom, позволяет включать/выключать композицию (ускорение GPU) в аэро темах на лету. К сожалению, она не может включить ускорение в базовых темах (в том числе классической) и решить нашу проблему, зато она наглядно демонстрирует сколь важно графическое ускорение. Во второй версии, можно сличать элементы интерфейса - наглядно убедиться в подобности "Classic AE" и оригинальной классики. Основной функционал - кнопки "Enable composition" и "Disable composition", включение и выключение графического ускорения на лету. Исходный код прилагается.
    Скриншот - https://i.ibb.co/1ZB273V/image.png

    Включатель стиля WS_EX_COMPOSITED разработки rmn. Две программы для включения и выключения стила WS_EX_COMPOSITED, который позволяет на базовых темах (в том числе и классической) принудительно включать двойную буферизацию, что приводит к ускорению 2D видеовывода (особенно на глючных Radeon драйверах). Без интерфейса, включение и выключение стиля просто при запуске. Программа пригодна только для демонстрации, вызывает множество глюков и для постоянной работы не пригодна. Исходный код прилагается.

    Библиотека classtm.dll (анонимный автор). Файл classtm.dll нужно положить в c:\Windows\System32 который подгрузится через ключ реестра Appinit_Dlls. Для х86 и х64 систем отдельный файл. Также есть демонстрация на своем окне TestLVS.exe, но для всех остальных приложений работает только через classtm.dll. Загрузка библиотеки через файл реестра classtm_dll_ON.reg, возврат к системным настройкам classtm_dll_OFF.reg. После импорта reg обязательна перезагрузка ПК.

    Выключалка - это пустой файл в корне диска C:\classtm (достаточно файл переименовывать, чтобы не удалять/перемещать). Не удивляйтесь, окна "Мой компьютер, Персонализация, Корзина" - перестанут работать, как и другие окна эксплорера. Остальные приложения будут запускаться с графическим ускорением в классичекой теме, правда с испорченным цветовым оформлением. Исходник dll-ки прилагается. Побочные эффекты - некоторые окна превращаются в классические, а некоторые остаются в стиле аэро. Например, в foobar часть интерфейса отображается в классическом виде (четко видно по инвертированию цвета на выделенных пунктах), но заголовок и рамка окна - в аэро.
    Скриншот - https://i.ibb.co/nRS1WcJ/image.png

    Скачать "Classic_AE_mod_2019_5_megapack.zip" (16 МБ):
    https://yadi.sk/d/YKNKrjGeV3g0sg
    https://my-files.ru/scwkq2
    http://rgho.st/7gGcjNKNV
    http://ge.tt/4Z9SgXv2
    https://www12.zippyshare.com/v/dTzjJHdE/file.html
     
  16. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    Один пользователь обнаружил баги темы "Classic_AE_mod_2019_5":


    Баги есть. Я тоже их наблюдаю, как исправить не знаю. (((
    Если кто-то с темоделов подскажет или исправит - буду рад.
     
  17. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    К сожалению в теме 2019_5, кроме улучшений, обнаружена и регрессия - глюк с градиентом в окошке по "Альт+Таб" и в "Гаджетах". В версии 2019_1 этой проблемы не было.

    Вот проблема на картинке.

    [​IMG]
     
  18. Indy_

    Indy_ Забанен

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    2.518
    rk2019,

    > Файл classtm.dll нужно положить в c:\Windows\System32 который подгрузится через ключ реестра Appinit_Dlls.

    И тем самым всю защиту поломает, да и никто это не даст сделать.
     
  19. rk2019

    rk2019 Member

    Публикаций:
    0
    Регистрация:
    11 фев 2019
    Сообщения:
    39
    О какой защите речь? Написанный рецепт по загрузке classtm.dll абсолютно рабочий. Я его проверял, никакая защита не ломается.